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 1QBvz1-0003HG-4O for garchives@archives.gentoo.org; Mon, 18 Apr 2011 21:27:54 +0000 Received: from pigeon.gentoo.org (localhost [127.0.0.1]) by pigeon.gentoo.org (Postfix) with SMTP id 4C7731C050; Mon, 18 Apr 2011 21:27:23 +0000 (UTC) Received: from smtp.gentoo.org (smtp.gentoo.org [140.211.166.183]) by pigeon.gentoo.org (Postfix) with ESMTP id D5E901C038 for ; Mon, 18 Apr 2011 21:26:26 +0000 (UTC) Received: from [192.168.1.68] (bl8-216-102.dsl.telepac.pt [85.241.216.102]) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: jmbsvicetto) by smtp.gentoo.org (Postfix) with ESMTPSA id A84F01B401A for ; Mon, 18 Apr 2011 21:26:23 +0000 (UTC) Message-ID: <4DACAC72.5070406@gentoo.org> Date: Mon, 18 Apr 2011 21:26:10 +0000 From: "Jorge Manuel B. S. Vicetto" User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.15) Gecko/20110329 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-dev Subject: [gentoo-dev] New mysql eclasses review X-Enigmail-Version: 1.1.2 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="------------enig68E3BFF2F43FC943031B5EAA" X-Archives-Salt: X-Archives-Hash: 77e3d8efc1bddebf2a2b23f82d58b2c1 This is an OpenPGP/MIME signed message (RFC 2440 and 3156) --------------enig68E3BFF2F43FC943031B5EAA Content-Type: multipart/mixed; boundary="------------040003010409070701090409" This is a multi-part message in MIME format. --------------040003010409070701090409 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Hi. While working to support the new cmake based mysql releases, the mysql team opted to create new eclasses, so that we could clean up some old code from the existing eclass and to get leaner and cleaner eclasses. As we keep working in the overlay[1] to complete the code for the mysql-5.5 series, we would like to get a review of the current status of the eclasses, so that we may get the ebuilds for the latest versions of mysql and mariadb in the tree soon. The mysql team now uses 3 eclasses: mysql-v2.eclass[2] (base eclass), mysql-autotools.eclass[3] (for autotools based releases) and mysql-cmake.eclass[4] (for cmake based releases). The first 2 eclasses are complete, pending any updates from the review. The mysql-cmake eclass is still under development, but can also benefit from a review. [1] - http://git.overlays.gentoo.org/gitweb/?p=3Dproj/mysql.git [2] - http://git.overlays.gentoo.org/gitweb/?p=3Dproj/mysql.git;a=3Dblob;f=3Dec= lass/mysql-v2.eclass [3] - http://git.overlays.gentoo.org/gitweb/?p=3Dproj/mysql.git;a=3Dblob;f=3Dec= lass/mysql-autotools.eclass [4] - http://git.overlays.gentoo.org/gitweb/?p=3Dproj/mysql.git;a=3Dblob;f=3Dec= lass/mysql-cmake.eclass I'm attaching the 3 eclasses to this email as well for those that prefer to read them inline and don't want to check the gitweb interface of the overlay. Please let us know of any issues or suggestions for improving / fixing the eclasses. --=20 Regards, Jorge Vicetto (jmbsvicetto) - jmbsvicetto at gentoo dot org Gentoo- forums / Userrel / Devrel / KDE / Elections / RelEng --------------040003010409070701090409 Content-Type: text/plain; name="mysql-v2.eclass" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="mysql-v2.eclass" IyBDb3B5cmlnaHQgMTk5OS0yMDExIEdlbnRvbyBGb3VuZGF0aW9uCiMgRGlzdHJpYnV0ZWQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2Mgoj ICRIZWFkZXI6ICQKCiMgQEVDTEFTUzogbXlzcWwuZWNsYXNzCiMgQE1BSU5UQUlORVI6CiMg TWFpbnRhaW5lcnM6CiMJLSBNeVNRTCBUZWFtIDxteXNxbC1idWdzQGdlbnRvby5vcmc+CiMJ LSBSb2JpbiBILiBKb2huc29uIDxyb2JiYXQyQGdlbnRvby5vcmc+CiMJLSBKb3JnZSBNYW51 ZWwgQi4gUy4gVmljZXR0byA8am1ic3ZpY2V0dG9AZ2VudG9vLm9yZz4KIyBAQkxVUkI6IFRo aXMgZWNsYXNzIHByb3ZpZGVzIG1vc3Qgb2YgdGhlIGZ1bmN0aW9ucyBmb3IgbXlzcWwgZWJ1 aWxkcwojIEBERVNDUklQVElPTjoKIyBUaGUgbXlzcWwuZWNsYXNzIHByb3ZpZGVzIGFsbW9z dCBhbGwgdGhlIGNvZGUgdG8gYnVpbGQgdGhlIG15c3FsIGVidWlsZHMKIyBpbmNsdWRpbmcg dGhlIHNyY191bnBhY2ssIHNyY19wcmVwYXJlLCBzcmNfY29uZmlndXJlLCBzcmNfY29tcGls ZSwKIyBzY3JfaW5zdGFsbCwgcGtnX3ByZWluc3QsIHBrZ19wb3N0aW5zdCwgcGtnX2NvbmZp ZyBhbmQgcGtnX3Bvc3RybQojIHBoYXNlIGhvb2tzLgoKIyBARUNMQVNTLVZBUklBQkxFOiBC VUlMRAojIEBERVNDUklQVElPTjogQnVpbGQgdHlwZSBvZiB0aGUgbXlzcWwgdmVyc2lvbgoj IFRoZSBkZWZhdWx0IHZhbHVlIGlzIGF1dG90b29scwo6ICR7QlVJTEQ6PWF1dG90b29sc30K CmNhc2UgJHtCVUlMRH0gaW4KCSJjbWFrZSIpCgkJQlVJTERfSU5IRVJJVD0ibXlzcWwtY21h a2UiCgkJOzsKCSJhdXRvdG9vbHMiKQoJCUJVSUxEX0lOSEVSSVQ9Im15c3FsLWF1dG90b29s cyIKCgkJV0FOVF9BVVRPQ09ORj0ibGF0ZXN0IgoJCVdBTlRfQVVUT01BS0U9ImxhdGVzdCIK CQk7OwoJKikKCQlkaWUgIiR7QlVJTER9IGlzIG5vdCBhIHZhbGlkIGJ1aWxkIHN5c3RlbSBm b3IgbXlzcWwiCgkJOzsKZXNhYwoKTVlTUUxfRVhUUkFTPSIiCltbICIke01ZX0VYVFJBU19W RVJ9IiA9PSAibGl2ZSIgXV0gJiYgTVlTUUxfRVhUUkFTPSJnaXQiCgppbmhlcml0IGV1dGls cyBmbGFnLW8tbWF0aWMgZ251Y29uZmlnICR7TVlTUUxfRVhUUkFTfSAke0JVSUxEX0lOSEVS SVR9IG15c3FsX2Z4IHZlcnNpb25hdG9yIHRvb2xjaGFpbi1mdW5jcwoKIwojIFN1cHBvcnRl ZCBFQVBJIHZlcnNpb25zIGFuZCBleHBvcnQgZnVuY3Rpb25zCiMKCk1ZU1FMX0VYUEY9InNy Y191bnBhY2sgc3JjX2NvbXBpbGUgc3JjX2luc3RhbGwiCmNhc2UgIiR7RUFQSTotMH0iIGlu CgkyfDN8NCkgTVlTUUxfRVhQRis9IiBzcmNfcHJlcGFyZSBzcmNfY29uZmlndXJlIiA7OwoJ KikgZGllICJVbnN1cHBvcnRlZCBFQVBJOiAke0VBUEl9IiA7Owplc2FjCgpFWFBPUlRfRlVO Q1RJT05TICR7TVlTUUxfRVhQRn0KCiMKIyBWQVJJQUJMRVM6CiMKCiMgU2hvcnRlbiB0aGUg cGF0aCBiZWNhdXNlIHRoZSBzb2NrZXQgcGF0aCBsZW5ndGggbXVzdCBiZSBzaG9ydGVyIHRo YW4gMTA3IGNoYXJzCiMgYW5kIHdlIHdpbGwgcnVuIGEgbXlzcWwgc2VydmVyIGR1cmluZyB0 ZXN0IHBoYXNlClM9IiR7V09SS0RJUn0vbXlzcWwiCgpbWyAiJHtNWV9FWFRSQVNfVkVSfSIg PT0gImxhdGVzdCIgXV0gJiYgTVlfRVhUUkFTX1ZFUj0iMjAwOTAyMjgtMDcxNFoiCmlmIFtb ICIke01ZX0VYVFJBU19WRVJ9IiA9PSAibGl2ZSIgXV07IHRoZW4KCUVHSVRfUFJPSkVDVD1t eXNxbC1leHRyYXMKCUVHSVRfUkVQT19VUkk9ImdpdDovL2dpdC5vdmVybGF5cy5nZW50b28u b3JnL3Byb2ovbXlzcWwtZXh0cmFzLmdpdCIKZmkKCiMgQEVDTEFTUy1WQVJJQUJMRTogTVlT UUxfUFZfTUFKT1IKIyBAREVTQ1JJUFRJT046CiMgVXBzdHJlYW0gTXlTUUwgY29uc2lkZXJz IHRoZSBmaXJzdCB0d28gcGFydHMgb2YgdGhlIHZlcnNpb24gbnVtYmVyIHRvIGJlIHRoZQoj IG1ham9yIHZlcnNpb24uIFVwZ3JhZGVzIHRoYXQgY2hhbmdlIG1ham9yIHZlcnNpb24gc2hv dWxkIGFsd2F5cyBydW4KIyBteXNxbF91cGdyYWRlLgpNWVNRTF9QVl9NQUpPUj0iJChnZXRf dmVyc2lvbl9jb21wb25lbnRfcmFuZ2UgMS0yICR7UFZ9KSIKCiMgQ2x1c3RlciBpcyBhIHNw ZWNpYWwgY2FzZS4uLgppZiBbWyAiJHtQTn0iID09ICJteXNxbC1jbHVzdGVyIiBdXTsgdGhl bgoJY2FzZSAkUFYgaW4KCQk2LjEqfDcuMCp8Ny4xKikgTVlTUUxfUFZfTUFKT1I9NS4xIDs7 Cgllc2FjCmZpCgoKIyBARUNMQVNTLVZBUklBQkxFOiBNWVNRTF9WRVJTSU9OX0lECiMgQERF U0NSSVBUSU9OOgojIE1ZU1FMX1ZFUlNJT05fSUQgd2lsbCBiZToKIyBtYWpvciAqIDEwZTYg KyBtaW5vciAqIDEwZTQgKyBtaWNybyAqIDEwZTIgKyBnZW50b28gcmV2aXNpb24gbnVtYmVy LCBhbGwgWzAuLjk5XQojIFRoaXMgaXMgYW4gaW1wb3J0YW50IHBhcnQsIGJlY2F1c2UgbWFu eSBvZiB0aGUgY2hvaWNlcyB0aGUgTXlTUUwgZWJ1aWxkIHdpbGwgZG8KIyBkZXBlbmQgb24g dGhpcyB2YXJpYWJsZS4KIyBJbiBwYXJ0aWN1bGFyLCB0aGUgY29kZSBiZWxvdyB0cmFuc2Zv cm1zIGEgJFBWUiBsaWtlICI1LjAuMTgtcjMiIGluICI1MDAxODAzIgojIFdlIGFsc28gc3Ry aXAgb2ZmIHVwc3RyZWFtJ3MgdHJhaWxpbmcgbGV0dGVyIHRoYXQgdGhleSB1c2UgdG8gcmVz cGluIHRhcmJhbGxzCgpNWVNRTF9WRVJTSU9OX0lEPSIiCnRwdj0iJHtQViVbYS16XX0iCnRw dj0oICR7dHB2Ly9bLS5fXS8gfSApIDsgdHB2WzNdPSIke1BWUjokeyNQVn19IiA7IHRwdlsz XT0iJHt0cHZbM10jIyotcn0iCmZvciB2YXRvbSBpbiAwIDEgMiAzIDsgZG8KCSMgcGFkIHRv IGxlbmd0aCAyCgl0cHZbJHt2YXRvbX1dPSIwMCR7dHB2WyR7dmF0b219XX0iCglNWVNRTF9W RVJTSU9OX0lEPSIke01ZU1FMX1ZFUlNJT05fSUR9JHt0cHZbJHt2YXRvbX1dOjAtMn0iCmRv bmUKIyBzdHJpcCBsZWFkaW5nICIwIiAob3RoZXJ3aXNlIGl0J3MgY29uc2lkZXJlZCBhbiBv Y3RhbCBudW1iZXIgYnkgQkFTSCkKTVlTUUxfVkVSU0lPTl9JRD0ke01ZU1FMX1ZFUlNJT05f SUQjIyIwIn0KCgojIEBFQ0xBU1MtVkFSSUFCTEU6IE1ZU1FMX0NPTU1VTklUWV9GRUFUVVJF UwojIEBERVNDUklQVElPTjoKIyBTcGVjaWZpeSBpZiBjb21tdW5pdHkgZmVhdHVyZXMgYXJl IGF2YWlsYWJsZS4gUG9zc2libGUgdmFsdWVzIGFyZSAxICh5ZXMpCiMgYW5kIDAgKG5vKS4K IyBDb21tdW5pdHkgZmVhdHVyZXMgYXJlIGF2YWlsYWJsZSBpbiBteXNxbC1jb21tdW5pdHkK IyBBTkQgaW4gdGhlIHJlLW1lcmdlZCBteXNxbC01LjAuODIgYW5kIG5ld2VyCmlmIFsgIiR7 UE59IiA9PSAibXlzcWwtY29tbXVuaXR5IiAtbyAiJHtQTn0iID09ICJtYXJpYWRiIiBdOyB0 aGVuCglNWVNRTF9DT01NVU5JVFlfRkVBVFVSRVM9MQplbGlmIFsgIiR7TVlTUUxfUFZfTUFK T1J9IiA9PSAiNS4wIiBdICYmIG15c3FsX3ZlcnNpb25faXNfYXRfbGVhc3QgIjUuMC44MiI7 IHRoZW4KCU1ZU1FMX0NPTU1VTklUWV9GRUFUVVJFUz0xCmVsaWYgWyAiJHtNWVNRTF9QVl9N QUpPUn0iID09ICI1LjEiIF0gJiYgbXlzcWxfdmVyc2lvbl9pc19hdF9sZWFzdCAiNS4xLjI4 IjsgdGhlbgoJTVlTUUxfQ09NTVVOSVRZX0ZFQVRVUkVTPTEKZWxpZiBteXNxbF92ZXJzaW9u X2lzX2F0X2xlYXN0ICI1LjQuMCI7IHRoZW4KCU1ZU1FMX0NPTU1VTklUWV9GRUFUVVJFUz0x CmVsc2UKCU1ZU1FMX0NPTU1VTklUWV9GRUFUVVJFUz0wCmZpCgoKIyBARUNMQVNTLVZBUklB QkxFOiBYVFJBREJfVkVSCiMgQERFU0NSSVBUSU9OOgojIFZlcnNpb24gb2YgdGhlIFhUUkFE QiBzdG9yYWdlIGVuZ2luZQpYVFJBREJfVkVSPSIke1hUUkFEQl9WRVJ9IgoKCiMgQEVDTEFT Uy1WQVJJQUJMRTogUEVSQ09OQV9WRVIKIyBAREVTQ1JJUFRJT046CiMgRGVzaWduYXRpb24g YnkgUEVSQ09OQSBmb3IgYSBNeVNRTCB2ZXJzaW9uIHRvIGFwcGx5IGFuIFhUUkFEQiByZWxl YXNlClBFUkNPTkFfVkVSPSIke1BFUkNPTkFfVkVSfSIKCgojIFdvcmsgb3V0IHRoZSBkZWZh dWx0IFNFUlZFUl9VUkkgY29ycmVjdGx5CmlmIFsgLXogIiR7U0VSVkVSX1VSSX0iIF07IHRo ZW4KCVsgLXogIiR7TVlfUFZ9IiBdICYmIE1ZX1BWPSIke1BWLy9fLy19IgoJaWYgWyAiJHtQ Tn0iID09ICJtYXJpYWRiIiBdOyB0aGVuCgkJTUFSSUFfRlVMTF9QVj0iJChyZXBsYWNlX3Zl cnNpb25fc2VwYXJhdG9yIDMgJy0nICR7UFZ9KSIKCQlNQVJJQV9GVUxMX1A9IiR7UE59LSR7 TUFSSUFfRlVMTF9QVn0iCgkJU0VSVkVSX1VSST0iCgkJaHR0cDovL2Z0cC5vc3Vvc2wub3Jn L3B1Yi9tYXJpYWRiLyR7TUFSSUFfRlVMTF9QfS9rdm0tdGFyYmFrZS1qYXVudHkteDg2LyR7 TUFSSUFfRlVMTF9QfS50YXIuZ3oKCQlodHRwOi8vZnRwLnJlZGlyaXMuZXMvbWlycm9yL01h cmlhREIvJHtNQVJJQV9GVUxMX1B9L2t2bS10YXJiYWtlLWphdW50eS14ODYvJHtNQVJJQV9G VUxMX1B9LnRhci5negoJCWh0dHA6Ly9tYXJpYS5sbGFyaWFuLm5ldC9kb3dubG9hZC8ke01B UklBX0ZVTExfUH0va3ZtLXRhcmJha2UtamF1bnR5LXg4Ni8ke01BUklBX0ZVTExfUH0udGFy Lmd6CgkJaHR0cDovL2xhdW5jaHBhZC5uZXQvbWFyaWEvJHtNWVNRTF9QVl9NQUpPUn0vb25n b2luZy8rZG93bmxvYWQvJHtNQVJJQV9GVUxMX1B9LnRhci5negoJCWh0dHA6Ly9taXJyb3Jz LmZlLnVwLnB0L3B1Yi8ke1BOfS8ke01BUklBX0ZVTExfUH0va3ZtLXRhcmJha2UtamF1bnR5 LXg4Ni8ke01BUklBX0ZVTExfUH0udGFyLmd6CgkJaHR0cDovL2Z0cC1zdHVkLmhzLWVzc2xp bmdlbi5kZS9wdWIvTWlycm9ycy8ke1BOfS8ke01BUklBX0ZVTExfUH0va3ZtLXRhcmJha2Ut amF1bnR5LXg4Ni8ke01BUklBX0ZVTExfUH0udGFyLmd6CgkJIgoJIyBUaGUgY29tbXVuaXR5 IGFuZCBjbHVzdGVyIGJ1aWxkcyBhcmUgb24gdGhlIG1pcnJvcnMKCWVsaWYgW1sgIiR7TVlT UUxfQ09NTVVOSVRZX0ZFQVRVUkVTfSIgPT0gIjEiIHx8ICR7UE59ID09ICJteXNxbC1jbHVz dGVyIiBdXSA7IHRoZW4KCQlpZiBbWyAiJHtQTn0iID09ICJteXNxbC1jbHVzdGVyIiBdXSA7 IHRoZW4KCQkJVVJJX0RJUj0iTXlTUUwtQ2x1c3RlciIKCQkJVVJJX0ZJTEU9Im15c3FsLWNs dXN0ZXItZ3BsIgoJCWVsc2UKCQkJVVJJX0RJUj0iTXlTUUwiCgkJCVVSSV9GSUxFPSJteXNx bCIKCQlmaQoJCVVSSV9BPSIke1VSSV9GSUxFfS0ke01ZX1BWfS50YXIuZ3oiCgkJTUlSUk9S X1BWPSQoZ2V0X3ZlcnNpb25fY29tcG9uZW50X3JhbmdlIDEtMiAke1BWfSkKCQkjIFJlY2Vu dGx5IHVwc3RyZWFtIHN3aXRjaGVkIHRvIGFuIGFyY2hpdmUgc2l0ZSwgYW5kIG5vdCBvbiBt aXJyb3JzCgkJU0VSVkVSX1VSST0iaHR0cDovL2Rvd25sb2Fkcy5teXNxbC5jb20vYXJjaGl2 ZXMvJHtVUklfRklMRX0tJHtNSVJST1JfUFZ9LyR7VVJJX0F9CgkJCQkJbWlycm9yOi8vbXlz cWwvRG93bmxvYWRzLyR7VVJJX0RJUn0tJHtQViUuKn0vJHtVUklfQX0iCgkjIFRoZSAob2xk KSBlbnRlcnByaXNlIHNvdXJjZSBpcyBvbiB0aGUgcHJpbWFyeSBzaXRlIG9ubHkKCWVsaWYg WyAiJHtQTn0iID09ICJteXNxbCIgXTsgdGhlbgoJCVNFUlZFUl9VUkk9ImZ0cDovL2Z0cC5t eXNxbC5jb20vcHViL215c3FsL3NyYy9teXNxbC0ke01ZX1BWfS50YXIuZ3oiCglmaQpmaQoK IyBEZWZpbmUgY29ycmVjdCBTUkNfVVJJcwpTUkNfVVJJPSIke1NFUlZFUl9VUkl9IgoKIyBH ZW50b28gcGF0Y2hlcyB0byBNeVNRTApbWyAke01ZX0VYVFJBU19WRVJ9ICE9IGxpdmUgXV0g XAomJiBTUkNfVVJJPSIke1NSQ19VUkl9CgkJbWlycm9yOi8vZ2VudG9vL215c3FsLWV4dHJh cy0ke01ZX0VYVFJBU19WRVJ9LnRhci5iejIKCQlodHRwOi8vZzNudDgub3JnL3BhdGNoZXMv bXlzcWwtZXh0cmFzLSR7TVlfRVhUUkFTX1ZFUn0udGFyLmJ6MgoJCWh0dHA6Ly9kZXYuZ2Vu dG9vLm9yZy9+cm9iYmF0Mi9kaXN0ZmlsZXMvbXlzcWwtZXh0cmFzLSR7TVlfRVhUUkFTX1ZF Un0udGFyLmJ6MiIKCkRFU0NSSVBUSU9OPSJBIGZhc3QsIG11bHRpLXRocmVhZGVkLCBtdWx0 aS11c2VyIFNRTCBkYXRhYmFzZSBzZXJ2ZXIuIgpIT01FUEFHRT0iaHR0cDovL3d3dy5teXNx bC5jb20vIgppZiBbWyAiJHtQTn0iID09ICJtYXJpYWRiIiBdXTsgdGhlbgoJSE9NRVBBR0U9 Imh0dHA6Ly9tYXJpYWRiLm9yZy8iCglERVNDUklQVElPTj0iTWFyaWFEQiBpcyBhIE15U1FM IGZvcmsgd2l0aCAzcmQtcGFydHkgcGF0Y2hlcyBhbmQgYWRkaXRpb25hbCBzdG9yYWdlIGVu Z2luZXMgbWVyZ2VkLiIKZmkKaWYgW1sgIiR7UE59IiA9PSAibXlzcWwtY29tbXVuaXR5IiBd XTsgdGhlbgoJREVTQ1JJUFRJT049IiR7REVTQ1JJUFRJT059IChvYnNvbGV0ZSwgbW92ZSB0 byBkZXYtZGIvbXlzcWwpIgpmaQpMSUNFTlNFPSJHUEwtMiIKU0xPVD0iMCIKCmNhc2UgIiR7 QlVJTER9IiBpbgoJImF1dG90b29scyIpCgkJSVVTRT0iYmlnLXRhYmxlcyBkZWJ1ZyBlbWJl ZGRlZCBtaW5pbWFsICtwZXJsIHNlbGludXggc3NsIHN0YXRpYyB0ZXN0IgoJCTs7CgkiY21h a2UiKQoJCUlVU0U9ImRlYnVnIGVtYmVkZGVkIG1pbmltYWwgK3Blcmwgc2VsaW51eCBzc2wg c3RhdGljIHRlc3QiCgkJOzsKZXNhYwoKSVVTRT0iJHtJVVNFfSBsYXRpbjEiCgpJVVNFPSIk e0lVU0V9IGV4dHJhZW5naW5lIgppZiBbWyAiJHtQTn0iICE9ICJteXNxbC1jbHVzdGVyIiBd XSA7IHRoZW4KCUlVU0U9IiR7SVVTRX0gY2x1c3RlciIKZmkKCm15c3FsX3ZlcnNpb25faXNf YXRfbGVhc3QgIjUuMC4xOCIgXAomJiBJVVNFPSIke0lVU0V9IG1heC1pZHgtMTI4IgoKSVVT RT0iJHtJVVNFfSBiZXJrZGIiCgpbICIke01ZU1FMX0NPTU1VTklUWV9GRUFUVVJFU30iID09 ICIxIiBdIFwKJiYgSVVTRT0iJHtJVVNFfSArY29tbXVuaXR5IHByb2ZpbGluZyIKCltbICIk e1BOfSIgPT0gIm1hcmlhZGIiIF1dIFwKJiYgSVVTRT0iJHtJVVNFfSBsaWJldmVudCIKCltb ICIke1BOfSIgPT0gIm1hcmlhZGIiIF1dIFwKJiYgbXlzcWxfdmVyc2lvbl9pc19hdF9sZWFz dCAiNS4yIiBcCiYmIElVU0U9IiR7SVVTRX0gb3FncmFwaCIKCltbICIke1BOfSIgPT0gIm1h cmlhZGIiIF1dIFwKJiYgbXlzcWxfdmVyc2lvbl9pc19hdF9sZWFzdCAiNS4yLjUiIFwKJiYg SVVTRT0iJHtJVVNFfSBzcGhpbngiCgoKIwojIERFUEVOREVOQ0lFUzoKIwoKIyBCZSB3YXJu ZWQsICpERVBFTkQgYXJlIHZlcnNpb24tZGVwZW5kYW50CiMgVGhlc2UgYXJlIHVzZWQgZm9y IGJvdGggcnVudGltZSBhbmQgY29tcGlsZXRpbWUKREVQRU5EPSIKCXNzbD8gKCA+PWRldi1s aWJzL29wZW5zc2wtMC45LjZkICkKCXVzZXJsYW5kX0dOVT8gKCBzeXMtcHJvY2Vzcy9wcm9j cHMgKQoJPj1zeXMtYXBwcy9zZWQtNAoJPj1zeXMtYXBwcy90ZXhpbmZvLTQuNy1yMQoJPj1z eXMtbGlicy9yZWFkbGluZS00LjEKCT49c3lzLWxpYnMvemxpYi0xLjIuMwoiCgpbWyAiJHtQ Tn0iID09ICJtYXJpYWRiIiBdXSBcCiYmIERFUEVORD0iJHtERVBFTkR9IGxpYmV2ZW50PyAo ID49ZGV2LWxpYnMvbGliZXZlbnQtMS40ICkiCgojIEhhdmluZyBkaWZmZXJlbnQgZmxhdm91 cnMgYXQgdGhlIHNhbWUgdGltZSBpcyBub3QgYSBnb29kIGlkZWEKZm9yIGkgaW4gIm15c3Fs IiAibXlzcWwtY29tbXVuaXR5IiAibXlzcWwtY2x1c3RlciIgIm1hcmlhZGIiIDsgZG8KCVtb ICIke2l9IiA9PSAke1BOfSBdXSB8fAoJREVQRU5EPSIke0RFUEVORH0gIWRldi1kYi8ke2l9 Igpkb25lCgpSREVQRU5EPSIke0RFUEVORH0KCSFtaW5pbWFsPyAoIGRldi1kYi9teXNxbC1p bml0LXNjcmlwdHMgKQoJc2VsaW51eD8gKCBzZWMtcG9saWN5L3NlbGludXgtbXlzcWwgKQoi CgpERVBFTkQ9IiR7REVQRU5EfSBzdGF0aWM/ICggfHwgKCBzeXMtbGlicy9uY3Vyc2VzW3N0 YXRpYy1saWJzXSA8PXN5cy1saWJzL25jdXJzZXMtNS43LXIzICkgKSIKCiMgY29tcGlsZS10 aW1lLW9ubHkKbXlzcWxfdmVyc2lvbl9pc19hdF9sZWFzdCAiNS4xLjEyIiBcCiYmIERFUEVO RD0iJHtERVBFTkR9ID49ZGV2LXV0aWwvY21ha2UtMi40LjMiCgojIGNvbXBpbGUtdGltZS1v bmx5Cm15c3FsX3ZlcnNpb25faXNfYXRfbGVhc3QgIjUuNS44IiBcCiYmIERFUEVORD0iJHtE RVBFTkR9ID49ZGV2LXV0aWwvY21ha2UtMi42LjMiCgpbWyAiJHtQTn0iID09ICJtYXJpYWRi IiBdXSBcCiYmIG15c3FsX3ZlcnNpb25faXNfYXRfbGVhc3QgIjUuMiIgXAomJiBERVBFTkQ9 IiR7REVQRU5EfSBvcWdyYXBoPyAoID49ZGV2LWxpYnMvYm9vc3QtMS40MC4wICkiCgpbWyAi JHtQTn0iID09ICJtYXJpYWRiIiBdXSBcCiYmIG15c3FsX3ZlcnNpb25faXNfYXRfbGVhc3Qg IjUuMi41IiBcCiYmIERFUEVORD0iJHtERVBFTkR9IHNwaGlueD8gKCBhcHAtbWlzYy9zcGhp bnggKSIKCiMgZGV2LXBlcmwvREJELW15c3FsIGlzIG5lZWRlZCBieSBzb21lIHNjcmlwdHMg aW5zdGFsbGVkIGJ5IE15U1FMClBERVBFTkQ9InBlcmw/ICggPj1kZXYtcGVybC9EQkQtbXlz cWwtMi45MDA0ICkiCgojIEZvciBvdGhlciBzdHVmZiB0byBicmluZyB1cyBpbgpQREVQRU5E PSIke1BERVBFTkR9ID12aXJ0dWFsL215c3FsLSR7TVlTUUxfUFZfTUFKT1J9IgoKCiMKIyBF eHRlcm5hbCBwYXRjaGVzCiMKCiMgTWFyaWFEQiBoYXMgaW50ZWdyYXRlZCBQQlhUCiMgUEJY VF9WRVJTSU9OIG1lYW5zIHRoYXQgd2UgaGF2ZSBhIFBCWFQgcGF0Y2ggZm9yIHRoaXMgUFYK IyBQQlhUIHdhcyBvbmx5IGludHJvZHVjZWQgYWZ0ZXIgNS4xLjEyCnBieHRfcGF0Y2hfYXZh aWxhYmxlKCkgewoJW1sgIiR7UE59IiAhPSAibWFyaWFkYiIgXV0gXAoJJiYgbXlzcWxfdmVy c2lvbl9pc19hdF9sZWFzdCAiNS4xLjEyIiBcCgkmJiBbWyAtbiAiJHtQQlhUX1ZFUlNJT059 IiBdXQoJcmV0dXJuICQ/Cn0KCnBieHRfYXZhaWxhYmxlKCkgewoJcGJ4dF9wYXRjaF9hdmFp bGFibGUgfHwgW1sgIiR7UE59IiA9PSAibWFyaWFkYiIgXV0KCXJldHVybiAkPwp9CgojIEdl dCB0aGUgcGVyY29uYSB0YXJiYWxsIGlmIFhUUkFEQl9WRVIgYW5kIFBFUkNPTkFfVkVSIGFy ZSBib3RoIHNldAojIE1hcmlhREIgaGFzIGludGVncmF0ZWQgWHRyYURCCiMgWFRSQURCX1ZF UlMgbWVhbnMgdGhhdCB3ZSBoYXZlIGEgWFRSQURCIHBhdGNoIGZvciB0aGlzIFBWCiMgWFRS QURCIHdhcyBvbmx5IGludHJvZHVjZWQgYWZ0ZXIgNS4xLjI2Cnh0cmFkYl9wYXRjaF9hdmFp bGFibGUoKSB7CglbWyAiJHtQTn0iICE9ICJtYXJpYWRiIiBdXSBcCgkmJiBteXNxbF92ZXJz aW9uX2lzX2F0X2xlYXN0ICI1LjEuMjYiIFwKCSYmIFtbIC1uICIke1hUUkFEQl9WRVJ9IiAm JiAtbiAiJHtQRVJDT05BX1ZFUn0iIF1dCglyZXR1cm4gJD8KfQoKCnBieHRfcGF0Y2hfYXZh aWxhYmxlIFwKJiYgUEJYVF9QPSJwYnh0LSR7UEJYVF9WRVJTSU9OfSIgXAomJiBQQlhUX1NS Q19VUkk9Imh0dHA6Ly93d3cucHJpbWViYXNlLm9yZy9kb3dubG9hZC8ke1BCWFRfUH0udGFy Lmd6IG1pcnJvcjovL3NvdXJjZWZvcmdlL3BieHQvJHtQQlhUX1B9LnRhci5neiIgXAomJiBT UkNfVVJJPSIke1NSQ19VUkl9IHBieHQ/ICggJHtQQlhUX1NSQ19VUkl9ICkiIFwKCiMgUEJY VF9ORVdTVFlMRSBtZWFucyBwYnh0IGlzIGluIHN0b3JhZ2UvIGFuZCBnZXRzIGVuYWJsZWQg YXMgb3RoZXIgcGx1Z2lucwojIHZzLiBidWlsdCBvdXRzaWRlIHRoZSBkaXIKcGJ4dF9hdmFp bGFibGUgXAomJiBJVVNFPSIke0lVU0V9IHBieHQiIFwKJiYgbXlzcWxfdmVyc2lvbl9pc19h dF9sZWFzdCAiNS4xLjQwIiBcCiYmIFBCWFRfTkVXU1RZTEU9MQoKeHRyYWRiX3BhdGNoX2F2 YWlsYWJsZSBcCiYmIFhUUkFEQl9QPSJwZXJjb25hLXh0cmFkYi0ke1hUUkFEQl9WRVJ9IiBc CiYmIFhUUkFEQl9TUkNfVVJJX0NPTU1PTj0iJHtQRVJDT05BX1ZFUn0vc291cmNlLyR7WFRS QURCX1B9LnRhci5neiIgXAomJiBYVFJBREJfU1JDX0IxPSJodHRwOi8vd3d3LnBlcmNvbmEu Y29tLyIgXAomJiBYVFJBREJfU1JDX0IyPSIke1hUUkFEQl9TUkNfQjF9L3BlcmNvbmEtYnVp bGRzLyIgXAomJiBYVFJBREJfU1JDX1VSSTE9IiR7WFRSQURCX1NSQ19CMn0vUGVyY29uYS1T ZXJ2ZXIvUGVyY29uYS1TZXJ2ZXItJHtYVFJBREJfU1JDX1VSSV9DT01NT059IiBcCiYmIFhU UkFEQl9TUkNfVVJJMj0iJHtYVFJBREJfU1JDX0IyfS94dHJhZGIvJHtYVFJBREJfU1JDX1VS SV9DT01NT059IiBcCiYmIFhUUkFEQl9TUkNfVVJJMz0iJHtYVFJBREJfU1JDX0IxfS8ke1BO fS94dHJhZGIvJHtYVFJBREJfU1JDX1VSSV9DT01NT059IiBcCiYmIFNSQ19VUkk9IiR7U1JD X1VSSX0geHRyYWRiPyAoICR7WFRSQURCX1NSQ19VUkkxfSAke1hUUkFEQl9TUkNfVVJJMn0g JHtYVFJBREJfU1JDX1VSSTN9ICkiIFwKJiYgSVVTRT0iJHtJVVNFfSB4dHJhZGIiCgojCiMg SEVMUEVSIEZVTkNUSU9OUzoKIwoKIyBARlVOQ1RJT046IG15c3FsX2Rpc2FibGVfdGVzdAoj IEBERVNDUklQVElPTjoKIyBIZWxwZXIgZnVuY3Rpb24gdG8gZGlzYWJsZSBzcGVjaWZpYyB0 ZXN0cy4KbXlzcWxfZGlzYWJsZV90ZXN0KCkgewoJJHtCVUlMRF9JTkhFUklUfV9kaXNhYmxl X3Rlc3QgIiRAIgp9Cgpjb25maWd1cmVfbWluaW1hbCgpIHsKCSR7QlVJTERfSU5IRVJJVH1f Y29uZmlndXJlX21pbmltYWwgIiRAIgp9Cgpjb25maWd1cmVfY29tbW9uKCkgewoJJHtCVUlM RF9JTkhFUklUfV9jb25maWd1cmVfY29tbW9uICIkQCIKfQoKIwojIEVCVUlMRCBGVU5DVElP TlMKIwoKIyBARlVOQ1RJT046IG15c3FsLXYyX3BrZ19zZXR1cAojIEBERVNDUklQVElPTjoK IyBQZXJmb3JtIHNvbWUgYmFzaWMgdGVzdHMgYW5kIHRhc2tzIGR1cmluZyBwa2dfc2V0dXAg cGhhc2U6CiMgICBkaWUgaWYgRkVBVFVSRVM9InRlc3QiLCBVU0U9Ii1taW5pbWFsIiBhbmQg bm90IHVzaW5nIEZFQVRVUkVTPSJ1c2VycHJpdiIKIyAgIGNoZWNrIGZvciBjb25mbGljdGlu ZyB1c2UgZmxhZ3MKIyAgIGNyZWF0ZSBuZXcgdXNlciBhbmQgZ3JvdXAgZm9yIG15c3FsCiMg ICB3YXJuIGFib3V0IGRlcHJlY2F0ZWQgZmVhdHVyZXMKbXlzcWwtdjJfcGtnX3NldHVwKCkg ewoKCWlmIGhhc3EgdGVzdCAke0ZFQVRVUkVTfSA7IHRoZW4KCQlpZiAhIHVzZSBtaW5pbWFs IDsgdGhlbgoJCQlpZiBbWyAkVUlEIC1lcSAwIF1dOyB0aGVuCgkJCQllZXJyb3IgIlRlc3Rp bmcgd2l0aCBGRUFUVVJFUz0tdXNlcnByaXYgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZCBieSB1 cHN0cmVhbS4gVGVzdHMgTVVTVCBiZSBydW4gYXMgbm9uLXJvb3QuIgoJCQlmaQoJCWZpCglm aQoKCSMgQ2hlY2sgZm9yIFVTRSBmbGFnIHByb2JsZW1zIGluIHBrZ19zZXR1cAoJaWYgdXNl IHN0YXRpYyAmJiB1c2Ugc3NsIDsgdGhlbgoJCU09Ik15U1FMIGRvZXMgbm90IHN1cHBvcnQg YmVpbmcgYnVpbHQgc3RhdGljYWxseSB3aXRoIFNTTCBzdXBwb3J0IGVuYWJsZWQhIgoJCWVl cnJvciAiJHtNfSIKCQlkaWUgIiR7TX0iCglmaQoKCWlmIG15c3FsX3ZlcnNpb25faXNfYXRf bGVhc3QgIjUuMS41MSIgXAoJICAgJiYgISBteXNxbF92ZXJzaW9uX2lzX2F0X2xlYXN0ICI1 LjIiIFwKCSAgICYmIHVzZSBkZWJ1ZyA7IHRoZW4KCSAgICMgQWxzbyBpbiBwYWNrYWdlLnVz ZS5tYXNrCgkgICBkaWUgIkJ1ZyAjMzQ0ODg1OiBVcHN0cmVhbSBoYXMgYnJva2VuIFVTRT1k ZWJ1ZyBmb3IgNS4xIHNlcmllcyA+PTUuMS41MSIKCWZpCgoJaWYgbXlzcWxfdmVyc2lvbl9p c19hdF9sZWFzdCAiNC4xLjMiIFwKCSYmICggdXNlIGNsdXN0ZXIgfHwgdXNlIGV4dHJhZW5n aW5lIHx8IHVzZSBlbWJlZGRlZCApIFwKCSYmIHVzZSBtaW5pbWFsIDsgdGhlbgoJCU09IlVT RSBmbGFncyAnY2x1c3RlcicsICdleHRyYWVuZ2luZScsICdlbWJlZGRlZCcgY29uZmxpY3Qg d2l0aCAnbWluaW1hbCcgVVNFIGZsYWchIgoJCWVlcnJvciAiJHtNfSIKCQlkaWUgIiR7TX0i CglmaQoKCWlmIG15c3FsX3ZlcnNpb25faXNfYXRfbGVhc3QgIjUuMSIgXAoJJiYgeHRyYWRi X3BhdGNoX2F2YWlsYWJsZSBcCgkmJiB1c2UgeHRyYWRiIFwKCSYmIHVzZSBlbWJlZGRlZCA7 IHRoZW4KCQlNPSJVU0UgZmxhZ3MgJ3h0cmFkYicgYW5kICdlbWJlZGRlZCcgY29uZmxpY3Qg YW5kIGNhdXNlIGJ1aWxkIGZhaWx1cmVzIgoJCWVlcnJvciAiJHtNfSIKCQlkaWUgIiR7TX0i CglmaQoKCSMgVGhpcyBzaG91bGQgY29tZSBhZnRlciBhbGwgb2YgdGhlIGRpZSBzdGF0ZW1l bnRzCgllbmV3Z3JvdXAgbXlzcWwgNjAgfHwgZGllICJwcm9ibGVtIGFkZGluZyAnbXlzcWwn IGdyb3VwIgoJZW5ld3VzZXIgbXlzcWwgNjAgLTEgL2Rldi9udWxsIG15c3FsIHx8IGRpZSAi cHJvYmxlbSBhZGRpbmcgJ215c3FsJyB1c2VyIgoKCWlmIFsgIiR7UE59IiAhPSAibXlzcWwt Y2x1c3RlciIgXSAmJiB1c2UgY2x1c3RlcjsgdGhlbgoJCWV3YXJuICJVcHN0cmVhbSBoYXMg bm90ZWQgdGhhdCB0aGUgTkRCIGNsdXN0ZXIgc3VwcG9ydCBpbiB0aGUgNS4wIGFuZCIKCQll d2FybiAiNS4xIHNlcmllcyBzaG91bGQgTk9UIGJlIHB1dCBpbnRvIHByb2R1Y3Rpb24uIElu IHRoZSBuZWFyIgoJCWV3YXJuICJmdXR1cmUsIGl0IHdpbGwgYmUgZGlzYWJsZWQgZnJvbSBi dWlsZGluZy4iCgkJZXdhcm4gIiIKCQlld2FybiAiSWYgeW91IG5lZWQgTkRCIHN1cHBvcnQs IHlvdSBzaG91bGQgaW5zdGVhZCBtb3ZlIHRvIHRoZSBuZXciCgkJZXdhcm4gIm15c3FsLWNs dXN0ZXIgcGFja2FnZSB0aGF0IHJlcHJlc2VudHMgdGhhdCB1cHN0cmVhbSBOREIiCgkJZXdh cm4gImRldmVsb3BtZW50LiIKCWZpCn0KCiMgQEZVTkNUSU9OOiBteXNxbC12Ml9zcmNfdW5w YWNrCiMgQERFU0NSSVBUSU9OOgojIFVucGFjayB0aGUgc291cmNlIGNvZGUgYW5kIGNhbGwg bXlzcWxfc3JjX3ByZXBhcmUgZm9yIEVBUEkgPCAyLgpteXNxbC12Ml9zcmNfdW5wYWNrKCkg ewoKCSMgSW5pdGlhbGl6ZSB0aGUgcHJvcGVyIHZhcmlhYmxlcyBmaXJzdAoJbXlzcWxfaW5p dF92YXJzCgoJdW5wYWNrICR7QX0KCSMgR3JhYiB0aGUgcGF0Y2hlcwoJW1sgIiR7TVlfRVhU UkFTX1ZFUn0iID09ICJsaXZlIiBdXSAmJiBTPSIke1dPUktESVJ9L215c3FsLWV4dHJhcyIg Z2l0X3NyY191bnBhY2sKCgltdiAtZiAiJHtXT1JLRElSfS8ke01ZX1NPVVJDRURJUn0iICIk e1N9Igp9CgojIEBGVU5DVElPTjogbXlzcWwtdjJfc3JjX3ByZXBhcmUKIyBAREVTQ1JJUFRJ T046CiMgQXBwbHkgcGF0Y2hlcyB0byB0aGUgc291cmNlIGNvZGUgYW5kIHJlbW92ZSB1bm5l ZWRlZCBidW5kbGVkIGxpYnMuCm15c3FsLXYyX3NyY19wcmVwYXJlKCkgewoJJHtCVUlMRF9J TkhFUklUfV9zcmNfcHJlcGFyZSAiJEAiCn0KCiMgQEZVTkNUSU9OOiBteXNxbC12Ml9zcmNf Y29uZmlndXJlCiMgQERFU0NSSVBUSU9OOgojIENvbmZpZ3VyZSBteXNxbCB0byBidWlsZCB0 aGUgY29kZSBmb3IgR2VudG9vIHJlc3BlY3RpbmcgdGhlIHVzZSBmbGFncy4KbXlzcWwtdjJf c3JjX2NvbmZpZ3VyZSgpIHsKCSR7QlVJTERfSU5IRVJJVH1fc3JjX2NvbmZpZ3VyZSAiJEAi Cn0KCiMgQEZVTkNUSU9OOiBteXNxbC12Ml9zcmNfY29tcGlsZQojIEBERVNDUklQVElPTjoK IyBDb21waWxlIHRoZSBteXNxbCBjb2RlLgpteXNxbC12Ml9zcmNfY29tcGlsZSgpIHsKCSR7 QlVJTERfSU5IRVJJVH1fc3JjX2NvbXBpbGUgIiRAIgp9CgojIEBGVU5DVElPTjogbXlzcWwt djJfc3JjX2luc3RhbGwKIyBAREVTQ1JJUFRJT046CiMgSW5zdGFsbCBteXNxbC4KbXlzcWwt djJfc3JjX2luc3RhbGwoKSB7Cgkke0JVSUxEX0lOSEVSSVR9X3NyY19pbnN0YWxsICIkQCIK fQoKIyBARlVOQ1RJT046IG15c3FsLXYyX3BrZ19wcmVpbnN0CiMgQERFU0NSSVBUSU9OOgoj IENyZWF0ZSB0aGUgdXNlciBhbmQgZ3JvdXBzIGZvciBteXNxbCAtIGRpZSBpZiB0aGF0IGZh aWxzLgpteXNxbC12Ml9wa2dfcHJlaW5zdCgpIHsKCWVuZXdncm91cCBteXNxbCA2MCB8fCBk aWUgInByb2JsZW0gYWRkaW5nICdteXNxbCcgZ3JvdXAiCgllbmV3dXNlciBteXNxbCA2MCAt MSAvZGV2L251bGwgbXlzcWwgfHwgZGllICJwcm9ibGVtIGFkZGluZyAnbXlzcWwnIHVzZXIi Cn0KCiMgQEZVTkNUSU9OOiBteXNxbC12Ml9wa2dfcG9zdGluc3QKIyBAREVTQ1JJUFRJT046 CiMgUnVuIHBvc3QtaW5zdGFsbGF0aW9uIHRhc2tzOgojICAgY3JlYXRlIHRoZSBkaXIgZm9y IGxvZ2ZpbGVzIGlmIG5vbi1leGlzdGFudAojICAgdG91Y2ggdGhlIGxvZ2ZpbGVzIGFuZCBz ZWN1cmUgdGhlbQojICAgaW5zdGFsbCBzY3JpcHRzCiMgICBpc3N1ZSByZXF1aXJlZCBzdGVw cyBmb3Igb3B0aW9uYWwgZmVhdHVyZXMKIyAgIGlzc3VlIGRlcHJlY2F0aW9uIHdhcm5pbmdz Cm15c3FsLXYyX3BrZ19wb3N0aW5zdCgpIHsKCgkjIE1ha2Ugc3VyZSB0aGUgdmFycyBhcmUg Y29ycmVjdGx5IGluaXRpYWxpemVkCglteXNxbF9pbml0X3ZhcnMKCgkjIENoZWNrIEZFQVRV UkVTPSJjb2xsaXNpb24tcHJvdGVjdCIgYmVmb3JlIHJlbW92aW5nIHRoaXMKCVtbIC1kICIk e1JPT1R9L3Zhci9sb2cvbXlzcWwiIF1dIHx8IGluc3RhbGwgLWQgLW0wNzUwIC1vIG15c3Fs IC1nIG15c3FsICIke1JPT1R9JHtNWV9MT0dESVJ9IgoKCSMgU2VjdXJlIHRoZSBsb2dmaWxl cwoJdG91Y2ggIiR7Uk9PVH0ke01ZX0xPR0RJUn0iL215c3FsLntsb2csZXJyfQoJY2hvd24g bXlzcWw6bXlzcWwgIiR7Uk9PVH0ke01ZX0xPR0RJUn0iL215c3FsKgoJY2htb2QgMDY2MCAi JHtST09UfSR7TVlfTE9HRElSfSIvbXlzcWwqCgoJIyBNaW5pbWFsIGJ1aWxkcyBkb24ndCBo YXZlIHRoZSBNeVNRTCBzZXJ2ZXIKCWlmICEgdXNlIG1pbmltYWwgOyB0aGVuCgkJZG9jaW50 byAic3VwcG9ydC1maWxlcyIKCQlmb3Igc2NyaXB0IGluIFwKCQkJc3VwcG9ydC1maWxlcy9t eS0qLmNuZiBcCgkJCXN1cHBvcnQtZmlsZXMvbWFnaWMgXAoJCQlzdXBwb3J0LWZpbGVzL25k Yi1jb25maWctMi1ub2RlLmluaQoJCWRvCgkJCVtbIC1mICIke3NjcmlwdH0iIF1dIFwKCQkJ JiYgZG9kb2MgIiR7c2NyaXB0fSIKCQlkb25lCgoJCWRvY2ludG8gInNjcmlwdHMiCgkJZm9y IHNjcmlwdCBpbiBzY3JpcHRzL215c3FsKiA7IGRvCgkJCVtbIC1mICIke3NjcmlwdH0iIF1d IFwKCQkJJiYgW1sgIiR7c2NyaXB0JS5zaH0iID09ICIke3NjcmlwdH0iIF1dIFwKCQkJJiYg ZG9kb2MgIiR7c2NyaXB0fSIKCQlkb25lCgoJCWVpbmZvCgkJZWxvZyAiWW91IG1pZ2h0IHdh bnQgdG8gcnVuOiIKCQllbG9nICJcImVtZXJnZSAtLWNvbmZpZyA9JHtDQVRFR09SWX0vJHtQ Rn1cIiIKCQllbG9nICJpZiB0aGlzIGlzIGEgbmV3IGluc3RhbGwuIgoJCWVpbmZvCgoJCWVp bmZvCgkJZWxvZyAiSWYgeW91IGFyZSB1cGdyYWRpbmcgbWFqb3IgdmVyc2lvbnMsIHlvdSBz aG91bGQgcnVuIHRoZSIKCQllbG9nICJteXNxbF91cGdyYWRlIHRvb2wuIgoJCWVpbmZvCglm aQoKCWlmIHBieHRfYXZhaWxhYmxlICYmIHVzZSBwYnh0IDsgdGhlbgoJCSMgVE9ETzogZXhw bGFpbiBpdCBiZXR0ZXIKCQllbG9nICIgICAgbXlzcWw+IElOU1RBTEwgUExVR0lOIHBieHQg U09OQU1FICdsaWJwYnh0LnNvJzsiCgkJZWxvZyAiICAgIG15c3FsPiBDUkVBVEUgVEFCTEUg dDEgKGMxIGludCwgYzIgdGV4dCkgRU5HSU5FPXBieHQ7IgoJCWVsb2cgImlmLCBhZnRlciB0 aGF0LCB5b3UgY2Fubm90IHN0YXJ0IHRoZSBNeVNRTCBzZXJ2ZXIsIgoJCWVsb2cgInJlbW92 ZSB0aGUgJHtNWV9EQVRBRElSfS9teXNxbC9wbHVnaW4uKiBmaWxlcywgdGhlbiIKCQllbG9n ICJ1c2UgdGhlIE15U1FMIHVwZ3JhZGUgc2NyaXB0IHRvIHJlc3RvcmUgdGhlIHRhYmxlIgoJ CWVsb2cgIm9yIGV4ZWN1dGUgdGhlIGZvbGxvd2luZyBTUUwgY29tbWFuZDoiCgkJZWxvZyAi ICAgIENSRUFURSBUQUJMRSBJRiBOT1QgRVhJU1RTIHBsdWdpbiAoIgoJCWVsb2cgIiAgICAg IG5hbWUgY2hhcig2NCkgYmluYXJ5IERFRkFVTFQgJycgTk9UIE5VTEwsIgoJCWVsb2cgIiAg ICAgIGRsIGNoYXIoMTI4KSBERUZBVUxUICcnIE5PVCBOVUxMLCIKCQllbG9nICIgICAgICBQ UklNQVJZIEtFWSAobmFtZSkiCgkJZWxvZyAiICAgICkgQ0hBUkFDVEVSIFNFVCB1dGY4IENP TExBVEUgdXRmOF9iaW47IgoJZmkKCglteXNxbF9jaGVja192ZXJzaW9uX3JhbmdlICI0LjAg dG8gNS4wLjk5Ljk5IiBcCgkmJiB1c2UgYmVya2RiIFwKCSYmIGVsb2cgIkJlcmtlbGV5IERC IHN1cHBvcnQgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIGZ1dHVyZSB2 ZXJzaW9ucyEiCn0KCiMgQEZVTkNUSU9OOiBteXNxbC12Ml9wa2dfY29uZmlnCiMgQERFU0NS SVBUSU9OOgojIENvbmZpZ3VyZSBteXNxbCBlbnZpcm9ubWVudC4KbXlzcWwtdjJfcGtnX2Nv bmZpZygpIHsKCglsb2NhbCBvbGRfTVlfREFUQURJUj0iJHtNWV9EQVRBRElSfSIKCgkjIE1h a2Ugc3VyZSB0aGUgdmFycyBhcmUgY29ycmVjdGx5IGluaXRpYWxpemVkCglteXNxbF9pbml0 X3ZhcnMKCglbWyAteiAiJHtNWV9EQVRBRElSfSIgXV0gJiYgZGllICJTb3JyeSwgdW5hYmxl IHRvIGZpbmQgTVlfREFUQURJUiIKCglpZiBidWlsdF93aXRoX3VzZSAke0NBVEVHT1JZfS8k e1BOfSBtaW5pbWFsIDsgdGhlbgoJCWRpZSAiTWluaW1hbCBidWlsZHMgZG8gTk9UIGluY2x1 ZGUgdGhlIE15U1FMIHNlcnZlciIKCWZpCgoJaWYgW1sgKCAtbiAiJHtNWV9EQVRBRElSfSIg KSAmJiAoICIke01ZX0RBVEFESVJ9IiAhPSAiJHtvbGRfTVlfREFUQURJUn0iICkgXV07IHRo ZW4KCQlsb2NhbCBNWV9EQVRBRElSX3M9IiQoc3RyaXBfZHVwbGljYXRlX3NsYXNoZXMgJHtS T09UfS8ke01ZX0RBVEFESVJ9KSIKCQlsb2NhbCBvbGRfTVlfREFUQURJUl9zPSIkKHN0cmlw X2R1cGxpY2F0ZV9zbGFzaGVzICR7Uk9PVH0vJHtvbGRfTVlfREFUQURJUn0pIgoKCQlpZiBb WyAtZCAiJHtvbGRfTVlfREFUQURJUl9zfSIgXV07IHRoZW4KCQkJaWYgW1sgLWQgIiR7TVlf REFUQURJUl9zfSIgXV07IHRoZW4KCQkJCWV3YXJuICJCb3RoICR7b2xkX01ZX0RBVEFESVJf c30gYW5kICR7TVlfREFUQURJUl9zfSBleGlzdCIKCQkJCWV3YXJuICJBdHRlbXB0aW5nIHRv IHVzZSAke01ZX0RBVEFESVJfc30gYW5kIHByZXNlcnZpbmcgJHtvbGRfTVlfREFUQURJUl9z fSIKCQkJZWxzZQoJCQkJZWxvZyAiTW92aW5nIE1ZX0RBVEFESVIgZnJvbSAke29sZF9NWV9E QVRBRElSX3N9IHRvICR7TVlfREFUQURJUl9zfSIKCQkJCW12IC0tc3RyaXAtdHJhaWxpbmct c2xhc2hlcyAtVCAiJHtvbGRfTVlfREFUQURJUl9zfSIgIiR7TVlfREFUQURJUl9zfSIgXAoJ CQkJfHwgZGllICJNb3ZpbmcgTVlfREFUQURJUiBmYWlsZWQiCgkJCWZpCgkJZWxzZQoJCQll d2FybiAiUHJldmlvdXMgTVlfREFUQURJUiAoJHtvbGRfTVlfREFUQURJUl9zfSkgZG9lcyBu b3QgZXhpc3QiCgkJCWlmIFtbIC1kICIke01ZX0RBVEFESVJfc30iIF1dOyB0aGVuCgkJCQll d2FybiAiQXR0ZW1wdGluZyB0byB1c2UgJHtNWV9EQVRBRElSX3N9IgoJCQllbHNlCgkJCQll ZXJyb3IgIk5ldyBNWV9EQVRBRElSICgke01ZX0RBVEFESVJfc30pIGRvZXMgbm90IGV4aXN0 IgoJCQkJZGllICJDb25maWd1cmF0aW9uIEZhaWxlZCEgIFBsZWFzZSByZWluc3RhbGwgJHtD QVRFR09SWX0vJHtQTn0iCgkJCWZpCgkJZmkKCWZpCgoJbG9jYWwgcHdkMT0iYSIKCWxvY2Fs IHB3ZDI9ImIiCglsb2NhbCBtYXh0cnk9MTUKCglpZiBbIC16ICIke01ZU1FMX1JPT1RfUEFT U1dPUkR9IiAtYSAtZiAiJHtST09UfS9yb290Ly5teS5jbmYiIF07IHRoZW4KCQlNWVNRTF9S T09UX1BBU1NXT1JEPSIkKHNlZCAtbiAtZSAnL15wYXNzd29yZD0vcyxecGFzc3dvcmQ9LCxn cCcgIiR7Uk9PVH0vcm9vdC8ubXkuY25mIikiCglmaQoKCWlmIFtbIC1kICIke1JPT1R9LyR7 TVlfREFUQURJUn0vbXlzcWwiIF1dIDsgdGhlbgoJCWV3YXJuICJZb3UgaGF2ZSBhbHJlYWR5 IGEgTXlTUUwgZGF0YWJhc2UgaW4gcGxhY2UuIgoJCWV3YXJuICIoJHtST09UfS8ke01ZX0RB VEFESVJ9LyopIgoJCWV3YXJuICJQbGVhc2UgcmVuYW1lIG9yIGRlbGV0ZSBpdCBpZiB5b3Ug d2lzaCB0byByZXBsYWNlIGl0LiIKCQlkaWUgIk15U1FMIGRhdGFiYXNlIGFscmVhZHkgZXhp c3RzISIKCWZpCgoJIyBCdWcgIzIxMzQ3NSAtIE15U1FMIF93aWxsXyBvYmplY3Qgc3RyZW5v dXNseSBpZiB5b3VyIG1hY2hpbmUgaXMgbmFtZWQKCSMgbG9jYWxob3N0LiBBbHNvIGNhdXNl cyB3ZWlyZCBmYWlsdXJlcy4KCVtbICIke0hPU1ROQU1FfSIgPT0gImxvY2FsaG9zdCIgXV0g JiYgZGllICJZb3VyIG1hY2hpbmUgbXVzdCBOT1QgYmUgbmFtZWQgbG9jYWxob3N0IgoKCWlm IFsgLXogIiR7TVlTUUxfUk9PVF9QQVNTV09SRH0iIF07IHRoZW4KCgkJZWluZm8gIlBsZWFz ZSBwcm92aWRlIGEgcGFzc3dvcmQgZm9yIHRoZSBteXNxbCAncm9vdCcgdXNlciBub3csIGlu IHRoZSIKCQllaW5mbyAiTVlTUUxfUk9PVF9QQVNTV09SRCBlbnYgdmFyIG9yIHRocm91Z2gg dGhlIC9yb290Ly5teS5jbmYgZmlsZS4iCgkJZXdhcm4gIkF2b2lkIFtcIidcXF8lXSBjaGFy YWN0ZXJzIGluIHRoZSBwYXNzd29yZCIKCQlyZWFkIC1yc3AgIiAgICA+IiBwd2QxIDsgZWNo bwoKCQllaW5mbyAiUmV0eXBlIHRoZSBwYXNzd29yZCIKCQlyZWFkIC1yc3AgIiAgICA+IiBw d2QyIDsgZWNobwoKCQlpZiBbWyAieCRwd2QxIiAhPSAieCRwd2QyIiBdXSA7IHRoZW4KCQkJ ZGllICJQYXNzd29yZHMgYXJlIG5vdCB0aGUgc2FtZSIKCQlmaQoJCU1ZU1FMX1JPT1RfUEFT U1dPUkQ9IiR7cHdkMX0iCgkJdW5zZXQgcHdkMSBwd2QyCglmaQoKCWxvY2FsIG9wdGlvbnM9 IiIKCWxvY2FsIHNxbHRtcD0iJChlbWt0ZW1wKSIKCglsb2NhbCBoZWxwX3RhYmxlcz0iJHtS T09UfSR7TVlfU0hBUkVEU1RBVEVESVJ9L2ZpbGxfaGVscF90YWJsZXMuc3FsIgoJW1sgLXIg IiR7aGVscF90YWJsZXN9IiBdXSBcCgkmJiBjcCAiJHtoZWxwX3RhYmxlc30iICIke1RNUERJ Un0vZmlsbF9oZWxwX3RhYmxlcy5zcWwiIFwKCXx8IHRvdWNoICIke1RNUERJUn0vZmlsbF9o ZWxwX3RhYmxlcy5zcWwiCgloZWxwX3RhYmxlcz0iJHtUTVBESVJ9L2ZpbGxfaGVscF90YWJs ZXMuc3FsIgoKCXB1c2hkICIke1RNUERJUn0iICY+L2Rldi9udWxsCgkiJHtST09UfS91c3Iv YmluL215c3FsX2luc3RhbGxfZGIiID4iJHtUTVBESVJ9Ii9teXNxbF9pbnN0YWxsX2RiLmxv ZyAyPiYxCglpZiBbICQ/IC1uZSAwIF07IHRoZW4KCQlncmVwIC1CNSAtQTk5OSAtaSAiRVJS T1IiICIke1RNUERJUn0iL215c3FsX2luc3RhbGxfZGIubG9nIDE+JjIKCQlkaWUgIkZhaWxl ZCB0byBydW4gbXlzcWxfaW5zdGFsbF9kYi4gUGxlYXNlIHJldmlldyAvdmFyL2xvZy9teXNx bC9teXNxbGQuZXJyIEFORCAke1RNUERJUn0vbXlzcWxfaW5zdGFsbF9kYi5sb2ciCglmaQoJ cG9wZCAmPi9kZXYvbnVsbAoJW1sgLWYgIiR7Uk9PVH0vJHtNWV9EQVRBRElSfS9teXNxbC91 c2VyLmZybSIgXV0gXAoJfHwgZGllICJNeVNRTCBkYXRhYmFzZXMgbm90IGluc3RhbGxlZCIK CWNob3duIC1SIG15c3FsOm15c3FsICIke1JPT1R9LyR7TVlfREFUQURJUn0iIDI+L2Rldi9u dWxsCgljaG1vZCAwNzUwICIke1JPT1R9LyR7TVlfREFUQURJUn0iIDI+L2Rldi9udWxsCgoJ IyBGaWd1cmUgb3V0IHdoaWNoIG9wdGlvbnMgd2UgbmVlZCB0byBkaXNhYmxlIHRvIGRvIHRo ZSBzZXR1cAoJaGVscGZpbGU9IiR7VE1QRElSfS9teXNxbGQtaGVscCIKCSR7Uk9PVH0vdXNy L3NiaW4vbXlzcWxkIC0tdmVyYm9zZSAtLWhlbHAgPiIke2hlbHBmaWxlfSIgMj4vZGV2L251 bGwKCWZvciBvcHQgaW4gZ3JhbnQtdGFibGVzIGhvc3QtY2FjaGUgbmFtZS1yZXNvbHZlIG5l dHdvcmtpbmcgc2xhdmUtc3RhcnQgYmRiIFwKCQlmZWRlcmF0ZWQgaW5ub2RiIHNzbCBsb2ct YmluIHJlbGF5LWxvZyBzbG93LXF1ZXJ5LWxvZyBleHRlcm5hbC1sb2NraW5nIFwKCQluZGJj bHVzdGVyIFwKCQk7IGRvCgkJb3B0ZXhwPSItLShza2lwLSk/JHtvcHR9IiBvcHRmdWxsPSIt LXNraXAtJHtvcHR9IgoJCWVncmVwIC1zcSAtLSAiJHtvcHRleHB9IiAiJHtoZWxwZmlsZX0i ICYmIG9wdGlvbnM9IiR7b3B0aW9uc30gJHtvcHRmdWxsfSIKCWRvbmUKCSMgQnV0IHNvbWUg b3B0aW9ucyBjaGFuZ2VkIG5hbWVzCgllZ3JlcCAtc3EgZXh0ZXJuYWwtbG9ja2luZyAiJHto ZWxwZmlsZX0iICYmIFwKCW9wdGlvbnM9IiR7b3B0aW9ucy9za2lwLWxvY2tpbmcvc2tpcC1l eHRlcm5hbC1sb2NraW5nfSIKCglpZiBteXNxbF92ZXJzaW9uX2lzX2F0X2xlYXN0ICI0LjEu MyIgOyB0aGVuCgkJIyBGaWxsaW5nIHRpbWV6b25lcywgc2VlCgkJIyBodHRwOi8vZGV2Lm15 c3FsLmNvbS9kb2MvbXlzcWwvZW4vdGltZS16b25lLXN1cHBvcnQuaHRtbAoJCSIke1JPT1R9 L3Vzci9iaW4vbXlzcWxfdHppbmZvX3RvX3NxbCIgIiR7Uk9PVH0vdXNyL3NoYXJlL3pvbmVp bmZvIiA+ICIke3NxbHRtcH0iIDI+L2Rldi9udWxsCgoJCWlmIFtbIC1yICIke2hlbHBfdGFi bGVzfSIgXV0gOyB0aGVuCgkJCWNhdCAiJHtoZWxwX3RhYmxlc30iID4+ICIke3NxbHRtcH0i CgkJZmkKCWZpCgoJZWluZm8gIkNyZWF0aW5nIHRoZSBteXNxbCBkYXRhYmFzZSBhbmQgc2V0 dGluZyBwcm9wZXIiCgllaW5mbyAicGVybWlzc2lvbnMgb24gaXQgLi4uIgoKCWxvY2FsIHNv Y2tldD0iJHtST09UfS92YXIvcnVuL215c3FsZC9teXNxbGQke1JBTkRPTX0uc29jayIKCWxv Y2FsIHBpZGZpbGU9IiR7Uk9PVH0vdmFyL3J1bi9teXNxbGQvbXlzcWxkJHtSQU5ET019LnBp ZCIKCWxvY2FsIG15c3FsZD0iJHtST09UfS91c3Ivc2Jpbi9teXNxbGQgXAoJCSR7b3B0aW9u c30gXAoJCS0tdXNlcj1teXNxbCBcCgkJLS1iYXNlZGlyPSR7Uk9PVH0vdXNyIFwKCQktLWRh dGFkaXI9JHtST09UfS8ke01ZX0RBVEFESVJ9IFwKCQktLW1heF9hbGxvd2VkX3BhY2tldD04 TSBcCgkJLS1uZXRfYnVmZmVyX2xlbmd0aD0xNksgXAoJCS0tZGVmYXVsdC1zdG9yYWdlLWVu Z2luZT1NeUlTQU0gXAoJCS0tc29ja2V0PSR7c29ja2V0fSBcCgkJLS1waWQtZmlsZT0ke3Bp ZGZpbGV9IgoJI2VpbmZvICJBYm91dCB0byBzdGFydCBteXNxbGQ6ICR7bXlzcWxkfSIKCWVi ZWdpbiAiU3RhcnRpbmcgbXlzcWxkIgoJJHtteXNxbGR9ICYKCXJjPSQ/Cgl3aGlsZSAhIFtb IC1TICIke3NvY2tldH0iIHx8ICIke21heHRyeX0iIC1sdCAxIF1dIDsgZG8KCQltYXh0cnk9 JCgoJHttYXh0cnl9LTEpKQoJCWVjaG8gLW4gIi4iCgkJc2xlZXAgMQoJZG9uZQoJZWVuZCAk cmMKCglpZiAhIFtbIC1TICIke3NvY2tldH0iIF1dOyB0aGVuCgkJZGllICJDb21wbGV0ZWx5 IGZhaWxlZCB0byBzdGFydCB1cCBteXNxbGQgd2l0aDogJHtteXNxbGR9IgoJZmkKCgllYmVn aW4gIlNldHRpbmcgcm9vdCBwYXNzd29yZCIKCSMgRG8gdGhpcyBmcm9tIG1lbW9yeSwgYXMg d2UgZG9uJ3Qgd2FudCBjbGVhciB0ZXh0IHBhc3N3b3JkcyBpbiB0ZW1wIGZpbGVzCglsb2Nh bCBzcWw9IlVQREFURSBteXNxbC51c2VyIFNFVCBQYXNzd29yZCA9IFBBU1NXT1JEKCcke01Z U1FMX1JPT1RfUEFTU1dPUkR9JykgV0hFUkUgVVNFUj0ncm9vdCciCgkiJHtST09UfS91c3Iv YmluL215c3FsIiBcCgkJLS1zb2NrZXQ9JHtzb2NrZXR9IFwKCQktaGxvY2FsaG9zdCBcCgkJ LWUgIiR7c3FsfSIKCWVlbmQgJD8KCgllYmVnaW4gIkxvYWRpbmcgXCJ6b25laW5mb1wiLCB0 aGlzIHN0ZXAgbWF5IHJlcXVpcmUgYSBmZXcgc2Vjb25kcyAuLi4iCgkiJHtST09UfS91c3Iv YmluL215c3FsIiBcCgkJLS1zb2NrZXQ9JHtzb2NrZXR9IFwKCQktaGxvY2FsaG9zdCBcCgkJ LXVyb290IFwKCQktcCIke01ZU1FMX1JPT1RfUEFTU1dPUkR9IiBcCgkJbXlzcWwgPCAiJHtz cWx0bXB9IgoJcmM9JD8KCWVlbmQgJD8KCVsgJHJjIC1uZSAwIF0gJiYgZXdhcm4gIkZhaWxl ZCB0byBsb2FkIHpvbmVpbmZvISIKCgkjIFN0b3AgdGhlIHNlcnZlciBhbmQgY2xlYW51cAoJ ZWluZm8gIlN0b3BwaW5nIHRoZSBzZXJ2ZXIgLi4uIgoJa2lsbCAkKDwgIiR7cGlkZmlsZX0i ICkKCXJtIC1mICIke3NxbHRtcH0iCgl3YWl0ICUxCgllaW5mbyAiRG9uZSIKfQoKIyBARlVO Q1RJT046IG15c3FsLXYyX3BrZ19wb3N0cm0KIyBAREVTQ1JJUFRJT046CiMgUmVtb3ZlIG15 c3FsIHN5bWxpbmtzLgpteXNxbC12Ml9wa2dfcG9zdHJtKCkgewoKCTogIyBteXNxbF9saWJf c3ltbGlua3MgIiR7RH0iCn0K --------------040003010409070701090409 Content-Type: text/plain; name="mysql-autotools.eclass" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="mysql-autotools.eclass" IyBDb3B5cmlnaHQgMTk5OS0yMDExIEdlbnRvbyBGb3VuZGF0aW9uCiMgRGlzdHJpYnV0ZWQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2Mgoj ICRIZWFkZXI6ICQKCiMgQEVDTEFTUzogbXlzcWwuZWNsYXNzCiMgQE1BSU5UQUlORVI6CiMg QXV0aG9yOiBGcmFuY2VzY28gUmlvc2EgKFJldGlyZWQpIDx2aXZvQGdlbnRvby5vcmc+CiMg TWFpbnRhaW5lcnM6CiMJLSBNeVNRTCBUZWFtIDxteXNxbC1idWdzQGdlbnRvby5vcmc+CiMJ LSBSb2JpbiBILiBKb2huc29uIDxyb2JiYXQyQGdlbnRvby5vcmc+CiMJLSBKb3JnZSBNYW51 ZWwgQi4gUy4gVmljZXR0byA8am1ic3ZpY2V0dG9AZ2VudG9vLm9yZz4KIwktIEx1Y2EgTG9u Z2lub3R0aSA8Y2h0ZWtrQGdlbnRvby5vcmc+CiMgQEJMVVJCOiBUaGlzIGVjbGFzcyBwcm92 aWRlcyBtb3N0IG9mIHRoZSBmdW5jdGlvbnMgZm9yIG15c3FsIGVidWlsZHMKIyBAREVTQ1JJ UFRJT046CiMgVGhlIG15c3FsLmVjbGFzcyBwcm92aWRlcyBhbG1vc3QgYWxsIHRoZSBjb2Rl IHRvIGJ1aWxkIHRoZSBteXNxbCBlYnVpbGRzCiMgaW5jbHVkaW5nIHRoZSBzcmNfdW5wYWNr LCBzcmNfcHJlcGFyZSwgc3JjX2NvbmZpZ3VyZSwgc3JjX2NvbXBpbGUsCiMgc2NyX2luc3Rh bGwsIHBrZ19wcmVpbnN0LCBwa2dfcG9zdGluc3QsIHBrZ19jb25maWcgYW5kIHBrZ19wb3N0 cm0KIyBwaGFzZSBob29rcy4KCmluaGVyaXQgYXV0b3Rvb2xzCgojCiMgSEVMUEVSIEZVTkNU SU9OUzoKIwoKIyBARlVOQ1RJT046IG15c3FsX2Rpc2FibGVfdGVzdAojIEBERVNDUklQVElP TjoKIyBIZWxwZXIgZnVuY3Rpb24gdG8gZGlzYWJsZSBzcGVjaWZpYyB0ZXN0cy4KbXlzcWwt YXV0b3Rvb2xzX2Rpc2FibGVfdGVzdCgpIHsKCglsb2NhbCByYXd0ZXN0bmFtZSB0ZXN0bmFt ZSB0ZXN0c3VpdGUgcmVhc29uIG15c3FsX2Rpc2FibGVfZmlsZQoJcmF3dGVzdG5hbWU9IiR7 MX0iIDsgc2hpZnQKCXJlYXNvbj0iJHtAfSIKCWV3YXJuICJ0ZXN0ICcke3Jhd3Rlc3RuYW1l fScgZGlzYWJsZWQ6ICcke3JlYXNvbn0nIgoKCXRlc3RzdWl0ZT0iJHtyYXd0ZXN0bmFtZS8u Kn0iCgl0ZXN0bmFtZT0iJHtyYXd0ZXN0bmFtZS8qLn0iCglteXNxbF9kaXNhYmxlX2ZpbGU9 IiR7U30vbXlzcWwtdGVzdC90L2Rpc2FibGVkLmRlZiIKCSNlaW5mbyAicmF3dGVzdG5hbWU9 JHtyYXd0ZXN0bmFtZX0gdGVzdG5hbWU9JHt0ZXN0bmFtZX0gdGVzdHN1aXRlPSR7dGVzdHN1 aXRlfSIKCWVjaG8gIiR7dGVzdG5hbWV9IDogJHtyZWFzb259IiA+PiAiJHtteXNxbF9kaXNh YmxlX2ZpbGV9IgoKCSMgJHtTfS9teXNxbC10ZXN0cy90L2Rpc2FibGVkLmRlZgoJIwoJIyAk e1N9L215c3FsLXRlc3RzL3N1aXRlL2ZlZGVyYXRlZC9kaXNhYmxlZC5kZWYKCSMKCSMgJHtT fS9teXNxbC10ZXN0cy9zdWl0ZS9qcC90L2Rpc2FibGVkLmRlZgoJIyAke1N9L215c3FsLXRl c3RzL3N1aXRlL25kYi90L2Rpc2FibGVkLmRlZgoJIyAke1N9L215c3FsLXRlc3RzL3N1aXRl L3JwbC90L2Rpc2FibGVkLmRlZgoJIyAke1N9L215c3FsLXRlc3RzL3N1aXRlL3BhcnRzL3Qv ZGlzYWJsZWQuZGVmCgkjICR7U30vbXlzcWwtdGVzdHMvc3VpdGUvcnBsX25kYi90L2Rpc2Fi bGVkLmRlZgoJIyAke1N9L215c3FsLXRlc3RzL3N1aXRlL25kYl90ZWFtL3QvZGlzYWJsZWQu ZGVmCgkjICR7U30vbXlzcWwtdGVzdHMvc3VpdGUvYmlubG9nL3QvZGlzYWJsZWQuZGVmCgkj ICR7U30vbXlzcWwtdGVzdHMvc3VpdGUvaW5ub2RiL3QvZGlzYWJsZWQuZGVmCglpZiBbIC1u ICIke3Rlc3RzdWl0ZX0iIF07IHRoZW4KCQlmb3IgbXlzcWxfZGlzYWJsZV9maWxlIGluIFwK CQkJJHtTfS9teXNxbC10ZXN0L3N1aXRlLyR7dGVzdHN1aXRlfS9kaXNhYmxlZC5kZWYgIFwK CQkJJHtTfS9teXNxbC10ZXN0L3N1aXRlLyR7dGVzdHN1aXRlfS90L2Rpc2FibGVkLmRlZiAg XAoJCQlGQUlMRUQgOyBkbwoJCQlbIC1mICIke215c3FsX2Rpc2FibGVfZmlsZX0iIF0gJiYg YnJlYWsKCQlkb25lCgkJaWYgWyAiJHtteXNxbF9kaXNhYmxlZF9maWxlfSIgIT0gIkZBSUxF RCIgXTsgdGhlbgoJCQllY2hvICIke3Rlc3RuYW1lfSA6ICR7cmVhc29ufSIgPj4gIiR7bXlz cWxfZGlzYWJsZV9maWxlfSIKCQllbHNlCgkJCWV3YXJuICJDb3VsZCBub3QgZmluZCB0ZXN0 c3VpdGUgZGlzYWJsZWQuZGVmIGxvY2F0aW9uIGZvciAke3Jhd3Rlc3RuYW1lfSIKCQlmaQoJ ZmkKfQoKbXlzcWwtYXV0b3Rvb2xzX2NvbmZpZ3VyZV9taW5pbWFsKCkgewoKCSMgVGhlc2Ug YXJlIHRoaW5ncyB3ZSBleGNsdWRlIGZyb20gYSBtaW5pbWFsIGJ1aWxkLCBwbGVhc2UKCSMg bm90ZSB0aGF0IHRoZSBzZXJ2ZXIgYWN0dWFsbHkgZG9lcyBnZXQgYnVpbHQgYW5kIGluc3Rh bGxlZCwKCSMgYnV0IHdlIHRoZW4gZGVsZXRlIGl0IGJlZm9yZSBwYWNrYWdpbmcuCglsb2Nh bCBtaW5pbWFsX2V4Y2x1ZGVfbGlzdD0ic2VydmVyIGVtYmVkZGVkLXNlcnZlciBleHRyYS10 b29scyBpbm5vZGIgYmVuY2ggYmVya2VsZXktZGIgcm93LWJhc2VkLXJlcGxpY2F0aW9uIHJl YWRsaW5lIgoKCWZvciBpIGluICR7bWluaW1hbF9leGNsdWRlX2xpc3R9IDsgZG8KCQlteWNv bmY9IiR7bXljb25mfSAtLXdpdGhvdXQtJHtpfSIKCWRvbmUKCW15Y29uZj0iJHtteWNvbmZ9 IC0td2l0aC1leHRyYS1jaGFyc2V0cz1ub25lIgoJbXljb25mPSIke215Y29uZn0gLS1lbmFi bGUtbG9jYWwtaW5maWxlIgoKCWlmIHVzZSBzdGF0aWMgOyB0aGVuCgkJbXljb25mPSIke215 Y29uZn0gLS13aXRoLWNsaWVudC1sZGZsYWdzPS1hbGwtc3RhdGljIgoJCW15Y29uZj0iJHtt eWNvbmZ9IC0tZGlzYWJsZS1zaGFyZWQgLS13aXRoLXBpYyIKCWVsc2UKCQlteWNvbmY9IiR7 bXljb25mfSAtLWVuYWJsZS1zaGFyZWQgLS1lbmFibGUtc3RhdGljIgoJZmkKCglpZiBteXNx bF92ZXJzaW9uX2lzX2F0X2xlYXN0ICI0LjEiICYmICEgdXNlIGxhdGluMSA7IHRoZW4KCQlt eWNvbmY9IiR7bXljb25mfSAtLXdpdGgtY2hhcnNldD11dGY4IgoJCW15Y29uZj0iJHtteWNv bmZ9IC0td2l0aC1jb2xsYXRpb249dXRmOF9nZW5lcmFsX2NpIgoJZWxzZQoJCW15Y29uZj0i JHtteWNvbmZ9IC0td2l0aC1jaGFyc2V0PWxhdGluMSIKCQlteWNvbmY9IiR7bXljb25mfSAt LXdpdGgtY29sbGF0aW9uPWxhdGluMV9zd2VkaXNoX2NpIgoJZmkKfQoKbXlzcWwtYXV0b3Rv b2xzX2NvbmZpZ3VyZV9jb21tb24oKSB7CgoJbXljb25mPSIke215Y29uZn0gJCh1c2Vfd2l0 aCBiaWctdGFibGVzKSIKCW15Y29uZj0iJHtteWNvbmZ9IC0tZW5hYmxlLWxvY2FsLWluZmls ZSIKCW15Y29uZj0iJHtteWNvbmZ9IC0td2l0aC1leHRyYS1jaGFyc2V0cz1hbGwiCglteWNv bmY9IiR7bXljb25mfSAtLXdpdGgtbXlzcWxkLXVzZXI9bXlzcWwiCglteWNvbmY9IiR7bXlj b25mfSAtLXdpdGgtc2VydmVyIgoJbXljb25mPSIke215Y29uZn0gLS13aXRoLXVuaXgtc29j a2V0LXBhdGg9L3Zhci9ydW4vbXlzcWxkL215c3FsZC5zb2NrIgoJbXljb25mPSIke215Y29u Zn0gLS13aXRob3V0LWxpYndyYXAiCgoJaWYgdXNlIHN0YXRpYyA7IHRoZW4KCQlteWNvbmY9 IiR7bXljb25mfSAtLXdpdGgtbXlzcWxkLWxkZmxhZ3M9LWFsbC1zdGF0aWMiCgkJbXljb25m PSIke215Y29uZn0gLS13aXRoLWNsaWVudC1sZGZsYWdzPS1hbGwtc3RhdGljIgoJCW15Y29u Zj0iJHtteWNvbmZ9IC0tZGlzYWJsZS1zaGFyZWQgLS13aXRoLXBpYyIKCWVsc2UKCQlteWNv bmY9IiR7bXljb25mfSAtLWVuYWJsZS1zaGFyZWQgLS1lbmFibGUtc3RhdGljIgoJZmkKCglp ZiB1c2UgZGVidWcgOyB0aGVuCgkJbXljb25mPSIke215Y29uZn0gLS13aXRoLWRlYnVnPWZ1 bGwiCgllbHNlCgkJbXljb25mPSIke215Y29uZn0gLS13aXRob3V0LWRlYnVnIgoJCW15c3Fs X3ZlcnNpb25faXNfYXRfbGVhc3QgIjQuMS4zIiBcCgkJJiYgKCB1c2UgY2x1c3RlciB8fCBb WyAiJHtQTn0iID09ICJteXNxbC1jbHVzdGVyIiBdXSApIFwKCQkmJiBteWNvbmY9IiR7bXlj b25mfSAtLXdpdGhvdXQtbmRiLWRlYnVnIgoJZmkKCglpZiBbIC1uICIke01ZU1FMX0RFRkFV TFRfQ0hBUlNFVH0iIC1hIC1uICIke01ZU1FMX0RFRkFVTFRfQ09MTEFUSU9OfSIgXTsgdGhl bgoJCWV3YXJuICJZb3UgYXJlIHVzaW5nIGEgY3VzdG9tIGNoYXJzZXQgb2YgJHtNWVNRTF9E RUZBVUxUX0NIQVJTRVR9IgoJCWV3YXJuICJhbmQgYSBjb2xsYXRpb24gb2YgJHtNWVNRTF9E RUZBVUxUX0NPTExBVElPTn0uIgoJCWV3YXJuICJZb3UgTVVTVCBmaWxlIGJ1Z3Mgd2l0aG91 dCB0aGVzZSB2YXJpYWJsZXMgc2V0LiIKCQlteWNvbmY9IiR7bXljb25mfSAtLXdpdGgtY2hh cnNldD0ke01ZU1FMX0RFRkFVTFRfQ0hBUlNFVH0iCgkJbXljb25mPSIke215Y29uZn0gLS13 aXRoLWNvbGxhdGlvbj0ke01ZU1FMX0RFRkFVTFRfQ09MTEFUSU9OfSIKCWVsaWYgbXlzcWxf dmVyc2lvbl9pc19hdF9sZWFzdCAiNC4xIiAmJiAhIHVzZSBsYXRpbjEgOyB0aGVuCgkJbXlj b25mPSIke215Y29uZn0gLS13aXRoLWNoYXJzZXQ9dXRmOCIKCQlteWNvbmY9IiR7bXljb25m fSAtLXdpdGgtY29sbGF0aW9uPXV0ZjhfZ2VuZXJhbF9jaSIKCWVsc2UKCQlteWNvbmY9IiR7 bXljb25mfSAtLXdpdGgtY2hhcnNldD1sYXRpbjEiCgkJbXljb25mPSIke215Y29uZn0gLS13 aXRoLWNvbGxhdGlvbj1sYXRpbjFfc3dlZGlzaF9jaSIKCWZpCgoJaWYgdXNlIGVtYmVkZGVk IDsgdGhlbgoJCW15Y29uZj0iJHtteWNvbmZ9IC0td2l0aC1lbWJlZGRlZC1wcml2aWxlZ2Ut Y29udHJvbCIKCQlteWNvbmY9IiR7bXljb25mfSAtLXdpdGgtZW1iZWRkZWQtc2VydmVyIgoJ ZWxzZQoJCW15Y29uZj0iJHtteWNvbmZ9IC0td2l0aG91dC1lbWJlZGRlZC1wcml2aWxlZ2Ut Y29udHJvbCIKCQlteWNvbmY9IiR7bXljb25mfSAtLXdpdGhvdXQtZW1iZWRkZWQtc2VydmVy IgoJZmkKCn0KCm15c3FsLWF1dG90b29sc19jb25maWd1cmVfNDBfNDFfNTAoKSB7CgoJbXlj b25mPSIke215Y29uZn0gJCh1c2Vfd2l0aCBwZXJsIGJlbmNoKSIKCW15Y29uZj0iJHtteWNv bmZ9IC0tZW5hYmxlLWFzc2VtYmxlciIKCW15Y29uZj0iJHtteWNvbmZ9IC0td2l0aC1leHRy YS10b29scyIKCW15Y29uZj0iJHtteWNvbmZ9IC0td2l0aC1pbm5vZGIiCglteWNvbmY9IiR7 bXljb25mfSAtLXdpdGhvdXQtcmVhZGxpbmUiCglteWNvbmY9IiR7bXljb25mfSAkKHVzZV93 aXRoIHNzbCBvcGVuc3NsKSIKCW15c3FsX3ZlcnNpb25faXNfYXRfbGVhc3QgIjUuMCIgfHwg bXljb25mPSIke215Y29uZn0gJCh1c2Vfd2l0aCByYWlkKSIKCgkjIC0td2l0aC12aW8gaXMg bm90IG5lZWRlZCBhbnltb3JlLCBpdCdzIG9uIGJ5IGRlZmF1bHQgYW5kCgkjIGhhcyBiZWVu IHJlbW92ZWQgZnJvbSBjb25maWd1cmUKCSMgIEFwcGx5IHRvIDQueCBhbmQgNS4wLlswLTNd CglpZiB1c2Ugc3NsIDsgdGhlbgoJCSBteXNxbF92ZXJzaW9uX2lzX2F0X2xlYXN0ICI1LjAu NCIgfHwgbXljb25mPSIke215Y29uZn0gLS13aXRoLXZpbyIKCWZpCgoJaWYgbXlzcWxfdmVy c2lvbl9pc19hdF9sZWFzdCAiNS4wLjYwIiA7IHRoZW4KCQkJaWYgdXNlIGJlcmtkYiA7IHRo ZW4KCQkJCWVsb2cgIkJlcmtlbGV5IERCIHN1cHBvcnQgd2FzIGRpc2FibGVkIGR1ZSB0byBi dWlsZCBmYWlsdXJlcyIKCQkJCWVsb2cgIm9uIG11bHRpcGxlIGFyY2hlcywgZ28gdG8gYSB2 ZXJzaW9uIGVhcmxpZXIgdGhhbiA1LjAuNjAiCgkJCQllbG9nICJpZiB5b3Ugd2FudCBpdCBh Z2Fpbi4gR2VudG9vIGJ1ZyAjMjI0MDY3LiIKCQkJZmkKCQkJbXljb25mPSIke215Y29uZn0g LS13aXRob3V0LWJlcmtlbGV5LWRiIgoJZWxpZiB1c2UgYmVya2RiIDsgdGhlbgoJCSMgVGhl IGZvbGxvd2luZyBmaXggaXMgZHVlIHRvIGEgYnVnIHdpdGggYmRiIG9uIFNQQVJDJ3MuIFNl ZToKCQkjIGh0dHA6Ly93d3cuZ2VvY3Jhd2xlci5jb20vbWFpbC9tc2cucGhwMz9tc2dfaWQ9 NDc1NDgxNCZsaXN0PTgKCQkjIEl0IGNvbWVzIGRvd24gdG8gbm9uLTY0LWJpdCBzYWZldHkg cHJvYmxlbXMuCgkJaWYgdXNlIGFscGhhIHx8IHVzZSBhbWQ2NCB8fCB1c2UgaHBwYSB8fCB1 c2UgbWlwcyB8fCB1c2Ugc3BhcmMgOyB0aGVuCgkJCWVsb2cgIkJlcmtlbGV5IERCIHN1cHBv cnQgd2FzIGRpc2FibGVkIGR1ZSB0byBjb21wYXRpYmlsaXR5IGlzc3VlcyBvbiB0aGlzIGFy Y2giCgkJCW15Y29uZj0iJHtteWNvbmZ9IC0td2l0aG91dC1iZXJrZWxleS1kYiIKCQllbHNl CgkJCW15Y29uZj0iJHtteWNvbmZ9IC0td2l0aC1iZXJrZWxleS1kYj0uL2JkYiIKCQlmaQoJ ZWxzZQoJCW15Y29uZj0iJHtteWNvbmZ9IC0td2l0aG91dC1iZXJrZWxleS1kYiIKCWZpCgoJ aWYgbXlzcWxfdmVyc2lvbl9pc19hdF9sZWFzdCAiNC4xLjMiIDsgdGhlbgoJCW15Y29uZj0i JHtteWNvbmZ9IC0td2l0aC1nZW9tZXRyeSIKCQlpZiBbWyAiJHtQTn0iICE9ICJteXNxbC1j bHVzdGVyIiBdXSA7IHRoZW4KCQkJbXljb25mPSIke215Y29uZn0gJCh1c2Vfd2l0aCBjbHVz dGVyIG5kYmNsdXN0ZXIpIgoJCWZpCglmaQoKCWlmIG15c3FsX3ZlcnNpb25faXNfYXRfbGVh c3QgIjQuMS4zIiAmJiB1c2UgZXh0cmFlbmdpbmUgOyB0aGVuCgkJIyBodHRwOi8vZGV2Lm15 c3FsLmNvbS9kb2MvbXlzcWwvZW4vYXJjaGl2ZS1zdG9yYWdlLWVuZ2luZS5odG1sCgkJbXlj b25mPSIke215Y29uZn0gLS13aXRoLWFyY2hpdmUtc3RvcmFnZS1lbmdpbmUiCgoJCSMgaHR0 cDovL2Rldi5teXNxbC5jb20vZG9jL215c3FsL2VuL2Nzdi1zdG9yYWdlLWVuZ2luZS5odG1s CgkJbXljb25mPSIke215Y29uZn0gLS13aXRoLWNzdi1zdG9yYWdlLWVuZ2luZSIKCgkJIyBo dHRwOi8vZGV2Lm15c3FsLmNvbS9kb2MvbXlzcWwvZW4vYmxhY2tob2xlLXN0b3JhZ2UtZW5n aW5lLmh0bWwKCQlteWNvbmY9IiR7bXljb25mfSAtLXdpdGgtYmxhY2tob2xlLXN0b3JhZ2Ut ZW5naW5lIgoKCQkjIGh0dHA6Ly9kZXYubXlzcWwuY29tL2RvYy9teXNxbC9lbi9mZWRlcmF0 ZWQtc3RvcmFnZS1lbmdpbmUuaHRtbAoJCSMgaHR0cDovL2Rldi5teXNxbC5jb20vZG9jL215 c3FsL2VuL2ZlZGVyYXRlZC1kZXNjcmlwdGlvbi5odG1sCgkJIyBodHRwOi8vZGV2Lm15c3Fs LmNvbS9kb2MvbXlzcWwvZW4vZmVkZXJhdGVkLWxpbWl0YXRpb25zLmh0bWwKCQlpZiBteXNx bF92ZXJzaW9uX2lzX2F0X2xlYXN0ICI1LjAuMyIgOyB0aGVuCgkJCWVsb2cgIkJlZm9yZSB1 c2luZyB0aGUgRmVkZXJhdGVkIHN0b3JhZ2UgZW5naW5lLCBwbGVhc2UgYmUgc3VyZSB0byBy ZWFkIgoJCQllbG9nICJodHRwOi8vZGV2Lm15c3FsLmNvbS9kb2MvbXlzcWwvZW4vZmVkZXJh dGVkLWxpbWl0YXRpb25zLmh0bWwiCgkJCW15Y29uZj0iJHtteWNvbmZ9IC0td2l0aC1mZWRl cmF0ZWQtc3RvcmFnZS1lbmdpbmUiCgkJZmkKCWZpCgoJaWYgWyAiJHtNWVNRTF9DT01NVU5J VFlfRkVBVFVSRVN9IiA9PSAiMSIgXTsgdGhlbgoJCW15Y29uZj0iJHtteWNvbmZ9IGB1c2Vf ZW5hYmxlIGNvbW11bml0eSBjb21tdW5pdHktZmVhdHVyZXNgIgoJCWlmIHVzZSBjb21tdW5p dHk7IHRoZW4KCQkJbXljb25mPSIke215Y29uZn0gYHVzZV9lbmFibGUgcHJvZmlsaW5nYCIK CQllbHNlCgkJCW15Y29uZj0iJHtteWNvbmZ9IC0tZGlzYWJsZS1wcm9maWxpbmciCgkJZmkK CWZpCgoJbXlzcWxfdmVyc2lvbl9pc19hdF9sZWFzdCAiNS4wLjE4IiBcCgkmJiB1c2UgbWF4 LWlkeC0xMjggXAoJJiYgbXljb25mPSIke215Y29uZn0gLS13aXRoLW1heC1pbmRleGVzPTEy OCIKfQoKbXlzcWwtYXV0b3Rvb2xzX2NvbmZpZ3VyZV81MSgpIHsKCgkjIFRPRE86ICEhISEg cmVhZGQgLS13aXRob3V0LXJlYWRsaW5lCgkjIHRoZSBmYWlsdXJlIGRlcGVuZCB1cG9uIGNv bmZpZy9hYy1tYWNyb3MvcmVhZGxpbmUubTQgY2hlY2tpbmcgaW50bwoJIyByZWFkbGluZS5o IGluc3RlYWQgb2YgaGlzdG9yeS5oCglteWNvbmY9IiR7bXljb25mfSAkKHVzZV93aXRoIHNz bCBzc2wgL3VzcikiCglteWNvbmY9IiR7bXljb25mfSAtLWVuYWJsZS1hc3NlbWJsZXIiCglt eWNvbmY9IiR7bXljb25mfSAtLXdpdGgtZ2VvbWV0cnkiCglteWNvbmY9IiR7bXljb25mfSAt LXdpdGgtcmVhZGxpbmUiCglteWNvbmY9IiR7bXljb25mfSAtLXdpdGgtemxpYi1kaXI9L3Vz ci8iCglteWNvbmY9IiR7bXljb25mfSAtLXdpdGhvdXQtcHN0YWNrIgoJbXljb25mPSIke215 Y29uZn0gLS13aXRoLXBsdWdpbmRpcj0vdXNyLyQoZ2V0X2xpYmRpcikvbXlzcWwvcGx1Z2lu IgoKCSMgVGhpcyBpcyBhbiBleHBsaWN0IGRpZSBoZXJlLCBiZWNhdXNlIGlmIHdlIGp1c3Qg Zm9yY2libHkgZGlzYWJsZSBpdCwgdGhlbiB0aGUKCSMgdXNlcidzIGRhdGEgaXMgbm90IGFj Y2Vzc2libGUuCgl1c2UgbWF4LWlkeC0xMjggJiYgZGllICJCdWcgIzMzNjAyNzogdXBzdHJl YW0gaGFzIGEgY29ycnVwdGlvbiBpc3N1ZSB3aXRoIG1heC1pZHgtMTI4IHByZXNlbnRseSIK CSN1c2UgbWF4LWlkeC0xMjggJiYgbXljb25mPSIke215Y29uZn0gLS13aXRoLW1heC1pbmRl eGVzPTEyOCIKCWlmIFsgIiR7TVlTUUxfQ09NTVVOSVRZX0ZFQVRVUkVTfSIgPT0gIjEiIF07 IHRoZW4KCQlteWNvbmY9IiR7bXljb25mfSAkKHVzZV9lbmFibGUgY29tbXVuaXR5IGNvbW11 bml0eS1mZWF0dXJlcykiCgkJaWYgdXNlIGNvbW11bml0eTsgdGhlbgoJCQlteWNvbmY9IiR7 bXljb25mfSAkKHVzZV9lbmFibGUgcHJvZmlsaW5nKSIKCQllbHNlCgkJCW15Y29uZj0iJHtt eWNvbmZ9IC0tZGlzYWJsZS1wcm9maWxpbmciCgkJZmkKCWZpCgoJIyBTY2FuIGZvciBhbGwg YXZhaWxhYmxlIHBsdWdpbnMKCWxvY2FsIHBsdWdpbnNfYXZhaWw9IiQoCglMQU5HPUMgXAoJ ZmluZCAiJHtTfSIgXAoJCVwoIFwKCQktbmFtZSAncGx1Zy5pbicgXAoJCS1vIC1pbmFtZSAn Y29uZmlndXJlLmluJyBcCgkJLW8gLWluYW1lICdjb25maWd1cmUuYWMnIFwKCQlcKSBcCgkJ LXByaW50MCBcCgl8IHhhcmdzIC0wIHNlZCAtciAtbiBcCgkJLWUgJy9eTVlTUUxfU1RPUkFH RV9FTkdJTkUvewoJCQlzfk1ZU1FMX1NUT1JBR0VfRU5HSU5FXChbWzpzcGFjZTpdXSpcWz8o Wy1fYS16MC05XSspXF0/LiosflwxIH5nIDsKCQkJc35eKFteIF0rKS4qflwxfmdwOyAKCQl9 JyBcCgl8IHRyIC1zICdcbicgJyAnCgkpIgoKCSMgNS4xIGludHJvZHVjZXMgYSBuZXcgd2F5 IHRvIG1hbmFnZSBzdG9yYWdlIGVuZ2luZXMgKHBsdWdpbnMpCgkjIGxpa2UgY29uZmlndXJh dGlvbj1ub25lCgkjIFRoaXMgYmFzZSBzZXQgYXJlIHJlcXVpcmVkLCBhbmQgd2lsbCBhbHdh eXMgYmUgc3RhdGljYWxseSBidWlsdC4KCWxvY2FsIHBsdWdpbnNfc3RhPSJjc3YgbXlpc2Ft IG15aXNhbW1yZyBoZWFwIgoJbG9jYWwgcGx1Z2luc19keW49IiIKCWxvY2FsIHBsdWdpbnNf ZGlzPSJleGFtcGxlIGlibWRiMmkiCgoJIyBUaGVzZSBhcmVuJ3QgYWN0dWFsbHkgcmVxdWly ZWQgYnkgdGhlIGJhc2Ugc2V0LCBidXQgYXJlIHJlYWxseSB1c2VmdWw6CglwbHVnaW5zX3N0 YT0iJHtwbHVnaW5zX3N0YX0gYXJjaGl2ZSBibGFja2hvbGUiCgoJIyBkZWZhdWx0IGluIDUu NS40CglpZiBteXNxbF92ZXJzaW9uX2lzX2F0X2xlYXN0ICI1LjUuNCIgOyB0aGVuCgkJcGx1 Z2luc19zdGE9IiR7cGx1Z2luc19zdGF9IHBhcnRpdGlvbiIKCWZpCgkjIE5vdyB0aGUgZXh0 cmFzCglpZiB1c2UgZXh0cmFlbmdpbmUgOyB0aGVuCgkJIyBsaWtlIGNvbmZpZ3VyYXRpb249 bWF4LW5vLW5kYiwgYXJjaGl2ZSBhbmQgZXhhbXBsZSByZW1vdmVkIGluIDUuMS4xMQoJCSMg bm90IGFkZGVkIHlldDogaWJtZGIyaQoJCSMgTm90IHN1cHBvcnRpbmcgYXMgZXhhbXBsZXM6 IGV4YW1wbGUsZGFlbW9uX2V4YW1wbGUsZnRleGFtcGxlCgkJcGx1Z2luc19zdGE9IiR7cGx1 Z2luc19zdGF9IHBhcnRpdGlvbiIKCgkJaWYgW1sgIiR7UE59IiAhPSAibWFyaWFkYiIgXV0g OyB0aGVuCgkJCWVsb2cgIkJlZm9yZSB1c2luZyB0aGUgRmVkZXJhdGVkIHN0b3JhZ2UgZW5n aW5lLCBwbGVhc2UgYmUgc3VyZSB0byByZWFkIgoJCQllbG9nICJodHRwOi8vZGV2Lm15c3Fs LmNvbS9kb2MvcmVmbWFuLzUuMS9lbi9mZWRlcmF0ZWQtbGltaXRhdGlvbnMuaHRtbCIKCQkJ cGx1Z2luc19keW49IiR7cGx1Z2luc19zdGF9IGZlZGVyYXRlZHgiCgkJZWxzZQoJCQllbG9n ICJNYXJpYURCIGluY2x1ZGVzIHRoZSBGZWRlcmF0ZWRYIGVuZ2luZS4gQmUgc3VyZSB0byBy ZWFkIgoJCQllbG9nICJodHRwOi8vYXNrbW9udHkub3JnL3dpa2kvaW5kZXgucGhwL01hbnVh bDpGZWRlcmF0ZWRYX3N0b3JhZ2VfZW5naW5lIgoJCQlwbHVnaW5zX2R5bj0iJHtwbHVnaW5z X3N0YX0gZmVkZXJhdGVkIgoJCWZpCgllbHNlCgkJcGx1Z2luc19kaXM9IiR7cGx1Z2luc19k aXN9IHBhcnRpdGlvbiBmZWRlcmF0ZWQiCglmaQoKCSMgVXBzdHJlYW0gc3BlY2lmaWNhbGx5 IHJlcXVlc3RzIHRoYXQgSW5ub0RCIGFsd2F5cyBiZSBidWlsdDoKCSMgLSBpbm5vYmFzZSwg aW5ub2RiX3BsdWdpbgoJIyBCdWlsZCBmYWxjb24gaWYgYXZhaWxhYmxlIGZvciA2Lnggc2Vy aWVzLgoJZm9yIGkgaW4gaW5ub2Jhc2UgZmFsY29uIDsgZG8KCQlbIC1lICIke1N9Ii9zdG9y YWdlLyR7aX0gXSAmJiBwbHVnaW5zX3N0YT0iJHtwbHVnaW5zX3N0YX0gJHtpfSIKCWRvbmUK CWZvciBpIGluIGlubm9kYl9wbHVnaW4gOyBkbwoJCVsgLWUgIiR7U30iL3N0b3JhZ2UvJHtp fSBdICYmIHBsdWdpbnNfZHluPSIke3BsdWdpbnNfZHlufSAke2l9IgoJZG9uZQoKCSMgbGlr ZSBjb25maWd1cmF0aW9uPW1heC1uby1uZGIKCWlmICggdXNlIGNsdXN0ZXIgfHwgW1sgIiR7 UE59IiA9PSAibXlzcWwtY2x1c3RlciIgXV0gKSA7IHRoZW4KCQlwbHVnaW5zX3N0YT0iJHtw bHVnaW5zX3N0YX0gbmRiY2x1c3RlciBwYXJ0aXRpb24iCgkJcGx1Z2luc19kaXM9IiR7cGx1 Z2luc19kaXMvL3BhcnRpdGlvbn0iCgkJbXljb25mPSIke215Y29uZn0gLS13aXRoLW5kYi1i aW5sb2ciCgllbHNlCgkJcGx1Z2luc19kaXM9IiR7cGx1Z2luc19kaXN9IG5kYmNsdXN0ZXIi CglmaQoKCWlmIFtbICIke1BOfSIgPT0gIm1hcmlhZGIiIF1dIDsgdGhlbgoJCSMgSW4gTWFy aWFEQiwgSW5ub0RCIGlzIHBhY2thZ2VkIGluIHRoZSB4dHJhZGIgZGlyZWN0b3J5LCBzbyBp dCdzIG5vdAoJCSMgY2F1Z2h0IGFib3ZlLgoJCSMgVGhpcyBpcyBub3Qgb3B0aW9uYWwsIHdp dGhvdXQgaXQgc2V2ZXJhbCB1cHN0cmVhbSB0ZXN0Y2FzZXMgZmFpbC4KCQkjIEFsc28gc3Ry b25nbHkgcmVjb21tZW5kZWQgYnkgdXBzdHJlYW0uCgkJaWYgW1sgIiR7UFZ9IiA8ICI1LjIu MCIgXV0gOyB0aGVuCgkJCW15Y29uZj0iJHtteWNvbmZ9IC0td2l0aC1tYXJpYS10bXAtdGFi bGVzIgoJCQlwbHVnaW5zX3N0YT0iJHtwbHVnaW5zX3N0YX0gbWFyaWEiCgkJZWxzZQoJCQlt eWNvbmY9IiR7bXljb25mfSAtLXdpdGgtYXJpYS10bXAtdGFibGVzIgoJCQlwbHVnaW5zX3N0 YT0iJHtwbHVnaW5zX3N0YX0gYXJpYSIKCQlmaQoKCQlbIC1lICIke1N9Ii9zdG9yYWdlL2lu bm9iYXNlIF0gfHwgWyAtZSAiJHtTfSIvc3RvcmFnZS94dHJhZGIgXSB8fAoJCQlkaWUgIlRo ZSAke1B9IHBhY2thZ2UgZG9lc24ndCBwcm92aWRlIGlubm9iYXNlIG5vciB4dHJhZGIiCgoJ CWZvciBpIGluIGlubm9iYXNlIHh0cmFkYiA7IGRvCgkJCVsgLWUgIiR7U30iL3N0b3JhZ2Uv JHtpfSBdICYmIHBsdWdpbnNfc3RhPSIke3BsdWdpbnNfc3RhfSAke2l9IgoJCWRvbmUKCgkJ bXljb25mPSIke215Y29uZn0gJCh1c2Vfd2l0aCBsaWJldmVudCkiCgoJCWlmIG15c3FsX3Zl cnNpb25faXNfYXRfbGVhc3QgIjUuMiIgOyB0aGVuCgkJCWZvciBpIGluIG9xZ3JhcGggOyBk bwoJCQkJdXNlICR7aX0gXAoJCQkJJiYgcGx1Z2luc19keW49IiR7cGx1Z2luc19keW59ICR7 aX0iIFwKCQkJCXx8IHBsdWdpbnNfZGlzPSIke3BsdWdpbnNfZGlzfSAke2l9IgoJCQlkb25l CgkJZmkKCgkJaWYgbXlzcWxfdmVyc2lvbl9pc19hdF9sZWFzdCAiNS4yLjUiIDsgdGhlbgoJ CQlmb3IgaSBpbiBzcGhpbnggOyBkbwoJCQkJdXNlICR7aX0gXAoJCQkJJiYgcGx1Z2luc19k eW49IiR7cGx1Z2luc19keW59ICR7aX0iIFwKCQkJCXx8IHBsdWdpbnNfZGlzPSIke3BsdWdp bnNfZGlzfSAke2l9IgoJCQlkb25lCgkJZmkKCWZpCgoJaWYgcGJ4dF9hdmFpbGFibGUgJiYg W1sgIiR7UEJYVF9ORVdTVFlMRX0iID09ICIxIiBdXTsgdGhlbgoJCXVzZSBwYnh0IFwKCQkm JiBwbHVnaW5zX2R5bj0iJHtwbHVnaW5zX2R5bn0gcGJ4dCIgXAoJCXx8IHBsdWdpbnNfZGlz PSIke3BsdWdpbnNfZGlzfSBwYnh0IgoJZmkKCgl1c2Ugc3RhdGljICYmIFwKCXBsdWdpbnNf c3RhPSIke3BsdWdpbnNfc3RhfSAke3BsdWdpbnNfZHlufSIgJiYgXAoJcGx1Z2luc19keW49 IiIKCgllaW5mbyAiQXZhaWxhYmxlIHBsdWdpbnM6ICR7cGx1Z2luc19hdmFpbH0iCgllaW5m byAiRHluYW1pYyBwbHVnaW5zOiAke3BsdWdpbnNfZHlufSIKCWVpbmZvICJTdGF0aWMgcGx1 Z2luczogJHtwbHVnaW5zX3N0YX0iCgllaW5mbyAiRGlzYWJsZWQgcGx1Z2luczogJHtwbHVn aW5zX2Rpc30iCgoJIyBUaGVzZSBhcmUgdGhlIHN0YXRpYyBwbHVnaW5zCglteWNvbmY9IiR7 bXljb25mfSAtLXdpdGgtcGx1Z2lucz0ke3BsdWdpbnNfc3RhLy8gLyx9IgoJIyBBbmQgdGhl IGRpc2FibGVkIG9uZXMKCWZvciBpIGluICR7cGx1Z2luc19kaXN9IDsgZG8KCQlteWNvbmY9 IiR7bXljb25mfSAtLXdpdGhvdXQtcGx1Z2luLSR7aX0iCglkb25lCn0KCnBieHRfc3JjX2Nv bmZpZ3VyZSgpIHsKCglteXNxbF9pbml0X3ZhcnMKCglwdXNoZCAiJHtXT1JLRElSfS9wYnh0 LSR7UEJYVF9WRVJTSU9OfSIgJj4vZGV2L251bGwKCgllaW5mbyAiUmVjb25maWd1cmluZyBk aXIgJyR7UFdEfSciCgllYXV0b3JlY29uZgoKCWxvY2FsIG15Y29uZj0iIgoJbXljb25mPSIk e215Y29uZn0gLS13aXRoLW15c3FsPSR7U30gLS1saWJkaXI9L3Vzci8kKGdldF9saWJkaXIp IgoJdXNlIGRlYnVnICYmIG15Y29uZj0iJHtteWNvbmZ9IC0td2l0aC1kZWJ1Zz1mdWxsIgoJ ZWNvbmYgJHtteWNvbmZ9IHx8IGRpZSAiUHJvYmxlbSBjb25maWd1cmluZyBQQlhUIHN0b3Jh Z2UgZW5naW5lIgp9CgpwYnh0X3NyY19jb21waWxlKCkgewoKCSMgVE9ETzogaXMgaXQgc2Fm ZS9uZWVkZWQgdG8gdXNlIGVtYWtlIGhlcmUgPwoJbWFrZSB8fCBkaWUgIlByb2JsZW0gbWFr aW5nIFBCWFQgc3RvcmFnZSBlbmdpbmUgKCR7bXljb25mfSkiCgoJcG9wZAoJIyBUT0RPOiBt b2RpZnkgdGVzdCBzdWl0ZSBmb3IgUEJYVAp9CgpwYnh0X3NyY19pbnN0YWxsKCkgewoKCXB1 c2hkICIke1dPUktESVJ9L3BieHQtJHtQQlhUX1ZFUlNJT059IiAmPi9kZXYvbnVsbAoJCWVt YWtlIGluc3RhbGwgREVTVERJUj0iJHtEfSIgfHwgZGllICJGYWlsZWQgdG8gaW5zdGFsbCBQ QlhUIgoJcG9wZAp9CgojCiMgRUJVSUxEIEZVTkNUSU9OUwojCgojIEBGVU5DVElPTjogbXlz cWwtYXV0b3Rvb2xzX3NyY19wcmVwYXJlCiMgQERFU0NSSVBUSU9OOgojIEFwcGx5IHBhdGNo ZXMgdG8gdGhlIHNvdXJjZSBjb2RlIGFuZCByZW1vdmUgdW5uZWVkZWQgYnVuZGxlZCBsaWJz LgpteXNxbC1hdXRvdG9vbHNfc3JjX3ByZXBhcmUoKSB7CgoJY2QgIiR7U30iCgoJIyBBcHBs eSB0aGUgcGF0Y2hlcyBmb3IgdGhpcyBNeVNRTCB2ZXJzaW9uCglFUEFUQ0hfU1VGRklYPSJw YXRjaCIKCW1rZGlyIC1wICIke0VQQVRDSF9TT1VSQ0V9IiB8fCBkaWUgIlVuYWJsZSB0byBj cmVhdGUgZXBhdGNoIGRpcmVjdG9yeSIKCSMgQ2xlYW4gb3V0IG9sZCBpdGVtcwoJcm0gLWYg IiR7RVBBVENIX1NPVVJDRX0iLyoKCSMgTm93IGxpbmsgaW4gcmlnaHQgcGF0Y2hlcwoJbXlz cWxfbXZfcGF0Y2hlcwoJIyBBbmQgYXBwbHkKCWVwYXRjaAoKCSMgbGFzdCAtZlBJQyBmaXh1 cCwgcGVyIGJ1ZyAjMzA1ODczCglpPSIke1N9Ii9zdG9yYWdlL2lubm9kYl9wbHVnaW4vcGx1 Zy5pbgoJWyAtZiAiJHtpfSIgXSAmJiBzZWQgLWkgLWUgJy9DRkxBR1MvcywtcHJlZmVyLW5v bi1waWMsLGcnICIke2l9IgoKCSMgQWRkaXRpb25hbCBjaGVja3MsIHJlbW92ZSBidW5kbGVk IHpsaWIgKENsdXN0ZXIgbmVlZHMgdGhpcywgZm9yIHN0YXRpYwoJIyBtZW1vcnkgbWFuYWdl bWVudCBpbiB6bGliLCBsZWF2ZSBhdmFpbGFibGUgZm9yIENsdXN0ZXIpCglpZiBbWyAiJHtQ Tn0iICE9ICJteXNxbC1jbHVzdGVyIiBdXSA7IHRoZW4KCQlybSAtZiAiJHtTfS96bGliLyIq LltjaF0KCQlzZWQgLWkgLWUgInMvemxpYlwvTWFrZWZpbGUgZG5sL2RubCB6bGliXC9NYWtl ZmlsZS8iICIke1N9L2NvbmZpZ3VyZS5pbiIKCWZpCglybSAtZiAic2NyaXB0cy9teXNxbGJ1 ZyIKCgkjIE1ha2UgY2hhcnNldHMgaW5zdGFsbCBpbiB0aGUgcmlnaHQgcGxhY2UKCWZpbmQg LiAtbmFtZSAnTWFrZWZpbGUuYW0nIFwKCQktZXhlYyBzZWQgLS1pbi1wbGFjZSAtZSAncyEk KHBrZ2RhdGFkaXIpIScke01ZX1NIQVJFRFNUQVRFRElSfSchZycge30gXDsKCglpZiBteXNx bF92ZXJzaW9uX2lzX2F0X2xlYXN0ICI0LjEiIDsgdGhlbgoJCSMgUmVtb3ZlIHdoYXQgbmVl ZHMgdG8gYmUgcmVjcmVhdGVkLCBzbyB3ZSdyZSBzdXJlIGl0J3MgYWN0dWFsbHkgZG9uZQoJ CWVpbmZvICJDbGVhbmluZyB1cCBvbGQgYnVpbGRzY3JpcHQgZmlsZXMiCgkJZmluZCAuIC1u YW1lIE1ha2VmaWxlIFwKCQkJLW8gLW5hbWUgTWFrZWZpbGUuaW4gXAoJCQktbyAtbmFtZSBj b25maWd1cmUgXAoJCQktZXhlYyBybSAtZiB7fSBcOwoJCXJtIC1mICJsdG1haW4uc2giCgkJ cm0gLWYgInNjcmlwdHMvbXlzcWxidWciCglmaQoKCWxvY2FsIHJlYnVpbGRkaXJsaXN0IGQK CglpZiB4dHJhZGJfcGF0Y2hfYXZhaWxhYmxlICYmIHVzZSB4dHJhZGIgOyB0aGVuCgkJZWlu Zm8gIkFkZGluZyBzdG9yYWdlIGVuZ2luZTogUGVyY29uYSBYdHJhREIgKHJlcGxhY2luZyBJ bm5vREIpIgoJCXB1c2hkICIke1N9Ii9zdG9yYWdlID4vZGV2L251bGwKCQlpPSJpbm5vYmFz ZSIKCQlvPSIke1dPUktESVJ9L3N0b3JhZ2UtJHtpfS5teXNxbC11cHN0cmVhbSIKCQkjIEhh dmUgd2UgYmVlbiBoZXJlIGFscmVhZHk/CgkJWyAtZCAiJHtvfSIgXSAmJiBybSAtZiAiJHtp fSIKCQkjIE9yIG1heWJlIHdlIGhhdmVuJ3QKCQlbIC1kICIke2l9IiAtYSAhIC1kICIke299 IiBdICYmIG12ICIke2l9IiAiJHtvfSIKCQljcCAtcmFsICIke1dPUktESVJ9LyR7WFRSQURC X1B9IiAiJHtpfSIKCQlwb3BkID4vZGV2L251bGwKCWZpCgoJaWYgcGJ4dF9hdmFpbGFibGUg JiYgW1sgIiR7UEJYVF9ORVdTVFlMRX0iID09ICIxIiBdXSAmJiB1c2UgcGJ4dCA7IHRoZW4K CQllaW5mbyAiQWRkaW5nIHN0b3JhZ2UgZW5naW5lOiBQQlhUIgoJCXB1c2hkICIke1N9Ii9z dG9yYWdlID4vZGV2L251bGwKCQlpPSdwYnh0JwoJCVsgLWQgIiR7aX0iIF0gJiYgcm0gLXJm ICIke2l9IgoJCWNwIC1yYWwgIiR7V09SS0RJUn0vJHtQQlhUX1B9IiAiJHtpfSIKCQlwb3Bk ID4vZGV2L251bGwKCWZpCgoJaWYgbXlzcWxfdmVyc2lvbl9pc19hdF9sZWFzdCAiNS4xLjEy IiA7IHRoZW4KCQlyZWJ1aWxkZGlybGlzdD0iLiIKCQkjIFRoaXMgZG9lcyBub3Qgc2VlbSB0 byBiZSBuZWVkZWQgcHJlc2VudGx5LiByb2JiYXQyIDIwMTAvMDIvMjMKCQkjZWluZm8gIlVw ZGF0aW5nIGlubm9iYXNlIGNtYWtlIgoJCSMjIFRPRE86IGNoZWNrIHRoaXMgd2l0aCBhIGNt YWtlIGV4cGVydAoJCSNjbWFrZSBcCgkJIwktRENNQUtFX0NfQ09NUElMRVI9JCh0eXBlIC1Q ICQodGMtZ2V0Q0MpKSBcCgkJIwktRENNQUtFX0NYWF9DT01QSUxFUj0kKHR5cGUgLVAgJCh0 Yy1nZXRDWFgpKSBcCgkJIwkic3RvcmFnZS9pbm5vYmFzZSIKCWVsc2UKCQlyZWJ1aWxkZGly bGlzdD0iLiBpbm5vYmFzZSIKCWZpCgoJZm9yIGQgaW4gJHtyZWJ1aWxkZGlybGlzdH0gOyBk bwoJCWVpbmZvICJSZWNvbmZpZ3VyaW5nIGRpciAnJHtkfSciCgkJcHVzaGQgIiR7ZH0iICY+ L2Rldi9udWxsCgkJZWF1dG9yZWNvbmYKCQlwb3BkICY+L2Rldi9udWxsCglkb25lCgoJaWYg bXlzcWxfY2hlY2tfdmVyc2lvbl9yYW5nZSAiNC4xIHRvIDUuMC45OS45OSIgXAoJJiYgdXNl IGJlcmtkYiA7IHRoZW4KCQllaW5mbyAiRml4aW5nIHVwIGJlcmtkYiBidWlsZHN5c3RlbSIK CQlbWyAtdyAiYmRiL2Rpc3QvbHRtYWluLnNoIiBdXSAmJiBjcCAtZiAibHRtYWluLnNoIiAi YmRiL2Rpc3QvbHRtYWluLnNoIgoJCWNwIC1mICIvdXNyL3NoYXJlL2FjbG9jYWwvbGlidG9v bC5tNCIgImJkYi9kaXN0L2FjbG9jYWwvbGlidG9vbC5hYyIgXAoJCXx8IGRpZSAiQ291bGQg bm90IGNvcHkgbGlidG9vbC5tNCB0byBiZGIvZGlzdC8iCgkJI1RoZXNlIGZpbGVzIGV4aXN0 IG9ubHkgd2l0aCBsaWJ0b29sLTIqLCBhbmQgbmVlZCB0byBiZSBpbmNsdWRlZC4KCQlpZiBb IC1mICcvdXNyL3NoYXJlL2FjbG9jYWwvbHRzdWdhci5tNCcgXTsgdGhlbgoJCQljYXQgIi91 c3Ivc2hhcmUvYWNsb2NhbC9sdHN1Z2FyLm00IiA+PiAgImJkYi9kaXN0L2FjbG9jYWwvbGli dG9vbC5hYyIKCQkJY2F0ICIvdXNyL3NoYXJlL2FjbG9jYWwvbHR2ZXJzaW9uLm00IiA+PiAg ImJkYi9kaXN0L2FjbG9jYWwvbGlidG9vbC5hYyIKCQkJY2F0ICIvdXNyL3NoYXJlL2FjbG9j YWwvbHR+b2Jzb2xldGUubTQiID4+ICAiYmRiL2Rpc3QvYWNsb2NhbC9saWJ0b29sLmFjIgoJ CQljYXQgIi91c3Ivc2hhcmUvYWNsb2NhbC9sdG9wdGlvbnMubTQiID4+ICAiYmRiL2Rpc3Qv YWNsb2NhbC9saWJ0b29sLmFjIgoJCWZpCgkJcHVzaGQgImJkYi9kaXN0IiAmPi9kZXYvbnVs bAoJCXNoIHNfYWxsIFwKCQl8fCBkaWUgIkZhaWxlZCBiZGIgcmVjb25maWd1cmUiCgkJcG9w ZCAmPi9kZXYvbnVsbAoJZmkKfQoKIyBARlVOQ1RJT046IG15c3FsLWF1dG90b29sc19zcmNf Y29uZmlndXJlCiMgQERFU0NSSVBUSU9OOgojIENvbmZpZ3VyZSBteXNxbCB0byBidWlsZCB0 aGUgY29kZSBmb3IgR2VudG9vIHJlc3BlY3RpbmcgdGhlIHVzZSBmbGFncy4KbXlzcWwtYXV0 b3Rvb2xzX3NyY19jb25maWd1cmUoKSB7CgoJIyBNYWtlIHN1cmUgdGhlIHZhcnMgYXJlIGNv cnJlY3RseSBpbml0aWFsaXplZAoJbXlzcWxfaW5pdF92YXJzCgoJIyAkbXljb25mIGlzIG1v ZGlmaWVkIGJ5IHRoZSBjb25maWd1cmVfKiBmdW5jdGlvbnMKCWxvY2FsIG15Y29uZj0iIgoK CWlmIHVzZSBtaW5pbWFsIDsgdGhlbgoJCW15c3FsLWF1dG90b29sc19jb25maWd1cmVfbWlu aW1hbAoJZWxzZQoJCW15c3FsLWF1dG90b29sc19jb25maWd1cmVfY29tbW9uCgkJaWYgbXlz cWxfdmVyc2lvbl9pc19hdF9sZWFzdCAiNS4xLjEwIiA7IHRoZW4KCQkJbXlzcWwtYXV0b3Rv b2xzX2NvbmZpZ3VyZV81MQoJCWVsc2UKCQkJbXlzcWwtYXV0b3Rvb2xzX2NvbmZpZ3VyZV80 MF80MV81MAoJCWZpCglmaQoKCSMgQnVnICMxMTQ4OTUsIGJ1ZyAjMTEwMTQ5CglmaWx0ZXIt ZmxhZ3MgIi1PIiAiLU9bMDFdIgoKCSMgZ2xpYi0yLjMuMl9wcmUgZml4LCBidWcgIzE2NDk2 CglhcHBlbmQtZmxhZ3MgIi1ESEFWRV9FUlJOT19BU19ERUZJTkU9MSIKCgkjIEFzIGRpc2Nv dmVyZWQgYnkgYnVnICMyNDY2NTIsIGRvaW5nIGEgZG91YmxlLWxldmVsIG9mIFNTUCBjYXVz ZXMgTkRCIHRvCgkjIGZhaWwgYmFkbHkgZHVyaW5nIGNsdXN0ZXIgc3RhcnR1cC4KCWlmIFtb ICQoZ2NjLW1ham9yLXZlcnNpb24pIC1sdCA0IF1dOyB0aGVuCgkJZmlsdGVyLWZsYWdzICIt ZnN0YWNrLXByb3RlY3Rvci1hbGwiCglmaQoKCUNYWEZMQUdTPSIke0NYWEZMQUdTfSAtZm5v LWV4Y2VwdGlvbnMgLWZuby1zdHJpY3QtYWxpYXNpbmciCglDWFhGTEFHUz0iJHtDWFhGTEFH U30gLWZlbGlkZS1jb25zdHJ1Y3RvcnMgLWZuby1ydHRpIgoJbXlzcWxfdmVyc2lvbl9pc19h dF9sZWFzdCAiNS4wIiBcCgkmJiBDWFhGTEFHUz0iJHtDWFhGTEFHU30gLWZuby1pbXBsaWNp dC10ZW1wbGF0ZXMiCglleHBvcnQgQ1hYRkxBR1MKCgkjIGJ1ZyAjMjgzOTI2LCB3aXRoIEdD QzQuNCwgdGhpcyBpcyByZXF1aXJlZCB0byBnZXQgY29ycmVjdCBiZWhhdmlvci4KCWFwcGVu ZC1mbGFncyAtZm5vLXN0cmljdC1hbGlhc2luZwoKCSMgYnVnICMzMzUxODUsICMzMzU5OTUs IHdpdGggPj0gR0NDNC4zLjMgb24geDg2IG9ubHksIG9taXQtZnJhbWUtcG9pbnRlcgoJIyBj YXVzZXMgYSBtaXMtY29tcGlsZS4KCSMgVXBzdHJlYW0gYnVnczoKCSMgaHR0cDovL2djYy5n bnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0zODU2MgoJIyBodHRwOi8vYnVncy5t eXNxbC5jb20vYnVnLnBocD9pZD00NTIwNQoJdXNlIHg4NiAmJiB2ZXJzaW9uX2lzX2F0X2xl YXN0ICI0LjMuMyIgIiQoZ2NjLWZ1bGx2ZXJzaW9uKSIgJiYgXAoJCWFwcGVuZC1mbGFncyAt Zm5vLW9taXQtZnJhbWUtcG9pbnRlciAmJiBcCgkJZmlsdGVyLWZsYWdzIC1mb21pdC1mcmFt ZS1wb2ludGVyCgoJZWNvbmYgXAoJCS0tbGliZXhlY2Rpcj0iL3Vzci9zYmluIiBcCgkJLS1z eXNjb25mZGlyPSIke01ZX1NZU0NPTkZESVJ9IiBcCgkJLS1sb2NhbHN0YXRlZGlyPSIke01Z X0xPQ0FMU1RBVEVESVJ9IiBcCgkJLS1zaGFyZWRzdGF0ZWRpcj0iJHtNWV9TSEFSRURTVEFU RURJUn0iIFwKCQktLWxpYmRpcj0iJHtNWV9MSUJESVJ9IiBcCgkJLS1pbmNsdWRlZGlyPSIk e01ZX0lOQ0xVREVESVJ9IiBcCgkJLS13aXRoLWxvdy1tZW1vcnkgXAoJCS0td2l0aC1jbGll bnQtbGRmbGFncz0tbHN0ZGMrKyBcCgkJLS1lbmFibGUtdGhyZWFkLXNhZmUtY2xpZW50IFwK CQktLXdpdGgtY29tbWVudD0iR2VudG9vIExpbnV4ICR7UEZ9IiBcCgkJLS13aXRob3V0LWRv Y3MgXAoJCS0td2l0aC1MSUJESVI9IiQoZ2V0X2xpYmRpcikiIFwKCQkke215Y29uZn0gfHwg ZGllICJlY29uZiBmYWlsZWQiCgoJIyBUT0RPOiBNb3ZlIHRoaXMgYmVmb3JlIGF1dG9yZWNv bmYgISEhCglmaW5kIC4gLXR5cGUgZiAtbmFtZSBNYWtlZmlsZSAtcHJpbnQwIFwKCXwgeGFy Z3MgLTAgLW4xMDAgc2VkIC1pIFwKCS1lICdzfF5wa2dsaWJkaXIgKj0gKiQobGliZGlyKS9t eXNxbHxwa2dsaWJkaXIgPSAkKGxpYmRpcil8O3N8XnBrZ2luY2x1ZGVkaXIgKj0gKiQoaW5j bHVkZWRpcikvbXlzcWx8cGtnaW5jbHVkZWRpciA9ICQoaW5jbHVkZWRpcil8JwoKCWlmIFtb ICRFQVBJID09IDIgXV0gJiYgW1sgIiR7UEJYVF9ORVdTVFlMRX0iICE9ICIxIiBdXTsgdGhl bgoJCXBieHRfcGF0Y2hfYXZhaWxhYmxlICYmIHVzZSBwYnh0ICYmIHBieHRfc3JjX2NvbmZp Z3VyZQoJZmkKfQoKIyBARlVOQ1RJT046IG15c3FsLWF1dG90b29sc19zcmNfY29tcGlsZQoj IEBERVNDUklQVElPTjoKIyBDb21waWxlIHRoZSBteXNxbCBjb2RlLgpteXNxbC1hdXRvdG9v bHNfc3JjX2NvbXBpbGUoKSB7CgoJZW1ha2UgfHwgZGllICJlbWFrZSBmYWlsZWQiCgoJaWYg W1sgIiR7UEJYVF9ORVdTVFlMRX0iICE9ICIxIiBdXTsgdGhlbgoJCXBieHRfcGF0Y2hfYXZh aWxhYmxlICYmIHVzZSBwYnh0ICYmIHBieHRfc3JjX2NvbXBpbGUKCWZpCn0KCiMgQEZVTkNU SU9OOiBteXNxbC1hdXRvdG9vbHNfc3JjX2luc3RhbGwKIyBAREVTQ1JJUFRJT046CiMgSW5z dGFsbCBteXNxbC4KbXlzcWwtYXV0b3Rvb2xzX3NyY19pbnN0YWxsKCkgewoKCSMgTWFrZSBz dXJlIHRoZSB2YXJzIGFyZSBjb3JyZWN0bHkgaW5pdGlhbGl6ZWQKCW15c3FsX2luaXRfdmFy cwoKCWVtYWtlIGluc3RhbGwgXAoJCURFU1RESVI9IiR7RH0iIFwKCQliZW5jaGRpcl9yb290 PSIke01ZX1NIQVJFRFNUQVRFRElSfSIgXAoJCXRlc3Ryb290PSIke01ZX1NIQVJFRFNUQVRF RElSfSIgXAoJCXx8IGRpZSAiZW1ha2UgaW5zdGFsbCBmYWlsZWQiCgoJaWYgW1sgIiR7UEJY VF9ORVdTVFlMRX0iICE9ICIxIiBdXTsgdGhlbgoJCXBieHRfcGF0Y2hfYXZhaWxhYmxlICYm IHVzZSBwYnh0ICYmIHBieHRfc3JjX2luc3RhbGwKCWZpCgoJIyBDb252ZW5pZW5jZSBsaW5r cwoJZWluZm8gIk1ha2luZyBDb252ZW5pZW5jZSBsaW5rcyBmb3IgbXlzcWxjaGVjayBtdWx0 aS1jYWxsIGJpbmFyeSIKCWRvc3ltICIvdXNyL2Jpbi9teXNxbGNoZWNrIiAiL3Vzci9iaW4v bXlzcWxhbmFseXplIgoJZG9zeW0gIi91c3IvYmluL215c3FsY2hlY2siICIvdXNyL2Jpbi9t eXNxbHJlcGFpciIKCWRvc3ltICIvdXNyL2Jpbi9teXNxbGNoZWNrIiAiL3Vzci9iaW4vbXlz cWxvcHRpbWl6ZSIKCgkjIFZhcmlvdXMganVuayAobXktKi5jbmYgbW92ZWQgZWxzZXdoZXJl KQoJZWluZm8gIlJlbW92aW5nIGR1cGxpY2F0ZSAvdXNyL3NoYXJlL215c3FsIGZpbGVzIgoJ cm0gLVJmICIke0R9L3Vzci9zaGFyZS9pbmZvIgoJZm9yIHJlbW92ZW1lIGluICAibXlzcWwt bG9nLXJvdGF0ZSIgbXlzcWwuc2VydmVyKiBcCgkJYmluYXJ5LWNvbmZpZ3VyZSogbXktKi5j bmYgbWlfdGVzdF9hbGwqCglkbwoJCXJtIC1mICIke0R9Ii8ke01ZX1NIQVJFRFNUQVRFRElS fS8ke3JlbW92ZW1lfQoJZG9uZQoKCSMgQ2xlYW4gdXAgc3R1ZmYgZm9yIGEgbWluaW1hbCBi dWlsZAoJaWYgdXNlIG1pbmltYWwgOyB0aGVuCgkJZWluZm8gIlJlbW92ZSBhbGwgZXh0cmEg Y29udGVudCBmb3IgbWluaW1hbCBidWlsZCIKCQlybSAtUmYgIiR7RH0ke01ZX1NIQVJFRFNU QVRFRElSfSIve215c3FsLXRlc3Qsc3FsLWJlbmNofQoJCXJtIC1mICIke0R9Ii91c3IvYmlu L3tteXNxbHtfaW5zdGFsbF9kYixtYW5hZ2VyKixfc2VjdXJlX2luc3RhbGxhdGlvbixfZml4 X3ByaXZpbGVnZV90YWJsZXMsaG90Y29weSxfY29udmVydF90YWJsZV9mb3JtYXQsZF9tdWx0 aSxfZml4X2V4dGVuc2lvbnMsX3phcCxfZXhwbGFpbl9sb2csX3RhYmxlaW5mbyxkX3NhZmUs X2luc3RhbGwsX3dhaXRwaWQsYmlubG9nLHRlc3R9LG15aXNhbSosaXNhbSoscGFja19pc2Ft fQoJCXJtIC1mICIke0R9L3Vzci9zYmluL215c3FsZCIKCQlybSAtZiAiJHtEfSR7TVlfTElC RElSfSIvbGlie2hlYXAsbWVyZ2UsbmlzYW0sbXl7c3lzLHN0cmluZ3Msc3FsZCxpc2FtbXJn LGlzYW19LHZpbyxkYnVnfS5hCglmaQoKCSMgVW5sZXNzIHRoZXkgZXhwbGljaXRseSBzcGVj aWZpYyBVU0U9dGVzdCwgdGhlbiBkbyBub3QgaW5zdGFsbCB0aGUKCSMgdGVzdHN1aXRlLiBJ dCBET0VTIGhhdmUgYSB1c2UgdG8gYmUgaW5zdGFsbGVkLCBlc3AuIHdoZW4geW91IHdhbnQg dG8gZG8gYQoJIyB2YWxpZGF0aW9uIG9mIHlvdXIgZGF0YWJhc2UgY29uZmlndXJhdGlvbiBh ZnRlciB0dW5pbmcgaXQuCglpZiB1c2UgIXRlc3QgOyB0aGVuCgkJcm0gLXJmICIke0R9Ii8k e01ZX1NIQVJFRFNUQVRFRElSfS9teXNxbC10ZXN0CglmaQoKCSMgQ29uZmlndXJhdGlvbiBz dHVmZgoJY2FzZSAke01ZU1FMX1BWX01BSk9SfSBpbgoJCTMqfDQuMCkgbXlzcWxfbXljbmZf dmVyc2lvbj0iNC4wIiA7OwoJCTQuWzEtOV18NS4wKSBteXNxbF9teWNuZl92ZXJzaW9uPSI0 LjEiIDs7CgkJNS5bMS05XXw2Knw3KikgbXlzcWxfbXljbmZfdmVyc2lvbj0iNS4xIiA7OwoJ ZXNhYwoJZWluZm8gIkJ1aWxkaW5nIGRlZmF1bHQgbXkuY25mICgke215c3FsX215Y25mX3Zl cnNpb259KSIKCWluc2ludG8gIiR7TVlfU1lTQ09ORkRJUn0iCglkb2lucyBzY3JpcHRzL215 c3FsYWNjZXNzLmNvbmYKCW15Y25mX3NyYz0ibXkuY25mLSR7bXlzcWxfbXljbmZfdmVyc2lv bn0iCglzZWQgLWUgInMhQERBVEFESVJAISR7TVlfREFUQURJUn0hZyIgXAoJCSIke0ZJTEVT RElSfS8ke215Y25mX3NyY30iIFwKCQk+ICIke1RNUERJUn0vbXkuY25mLm9rIgoJaWYgdXNl IGxhdGluMSA7IHRoZW4KCQlzZWQgLWkgXAoJCQktZSAiL2NoYXJhY3Rlci1zZXQvc3x1dGY4 fGxhdGluMXxnIiBcCgkJCSIke1RNUERJUn0vbXkuY25mLm9rIgoJZmkKCW5ld2lucyAiJHtU TVBESVJ9L215LmNuZi5vayIgbXkuY25mCgoJIyBNaW5pbWFsIGJ1aWxkcyBkb24ndCBoYXZl IHRoZSBNeVNRTCBzZXJ2ZXIKCWlmICEgdXNlIG1pbmltYWwgOyB0aGVuCgkJZWluZm8gIkNy ZWF0aW5nIGluaXRpYWwgZGlyZWN0b3JpZXMiCgkJIyBFbXB0eSBkaXJlY3RvcmllcyAuLi4K CQlkaXJvcHRzICItbTA3NTAiCgkJaWYgW1sgIiR7UFJFVklPVVNfREFUQURJUn0iICE9ICJ5 ZXMiIF1dIDsgdGhlbgoJCQlkb2RpciAiJHtNWV9EQVRBRElSfSIKCQkJa2VlcGRpciAiJHtN WV9EQVRBRElSfSIKCQkJY2hvd24gLVIgbXlzcWw6bXlzcWwgIiR7RH0vJHtNWV9EQVRBRElS fSIKCQlmaQoKCQlkaXJvcHRzICItbTA3NTUiCgkJZm9yIGZvbGRlciBpbiAiJHtNWV9MT0dE SVJ9IiAiL3Zhci9ydW4vbXlzcWxkIiA7IGRvCgkJCWRvZGlyICIke2ZvbGRlcn0iCgkJCWtl ZXBkaXIgIiR7Zm9sZGVyfSIKCQkJY2hvd24gLVIgbXlzcWw6bXlzcWwgIiR7RH0vJHtmb2xk ZXJ9IgoJCWRvbmUKCWZpCgoJIyBEb2NzCgllaW5mbyAiSW5zdGFsbGluZyBkb2NzIgoJZG9k b2MgUkVBRE1FIENoYW5nZUxvZyBFWENFUFRJT05TLUNMSUVOVCBJTlNUQUxMLVNPVVJDRQoJ ZG9pbmZvICIke1N9Ii9Eb2NzL215c3FsLmluZm8KCgkjIE1pbmltYWwgYnVpbGRzIGRvbid0 IGhhdmUgdGhlIE15U1FMIHNlcnZlcgoJaWYgISB1c2UgbWluaW1hbCA7IHRoZW4KCQllaW5m byAiSW5jbHVkaW5nIHN1cHBvcnQgZmlsZXMgYW5kIHNhbXBsZSBjb25maWd1cmF0aW9ucyIK CQlkb2NpbnRvICJzdXBwb3J0LWZpbGVzIgoJCWZvciBzY3JpcHQgaW4gXAoJCQkiJHtTfSIv c3VwcG9ydC1maWxlcy9teS0qLmNuZiBcCgkJCSIke1N9Ii9zdXBwb3J0LWZpbGVzL21hZ2lj IFwKCQkJIiR7U30iL3N1cHBvcnQtZmlsZXMvbmRiLWNvbmZpZy0yLW5vZGUuaW5pCgkJZG8K CQkJW1sgLWYgIiRzY3JpcHQiIF1dICYmIGRvZG9jICIke3NjcmlwdH0iCgkJZG9uZQoKCQlk b2NpbnRvICJzY3JpcHRzIgoJCWZvciBzY3JpcHQgaW4gIiR7U30iL3NjcmlwdHMvbXlzcWwq IDsgZG8KCQkJW1sgLWYgIiRzY3JpcHQiIF1dICYmIFtbICIke3NjcmlwdCUuc2h9IiA9PSAi JHtzY3JpcHR9IiBdXSAmJiBkb2RvYyAiJHtzY3JpcHR9IgoJCWRvbmUKCglmaQoKCW15c3Fs X2xpYl9zeW1saW5rcyAiJHtEfSIKfQo= --------------040003010409070701090409 Content-Type: text/plain; name="mysql-cmake.eclass" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="mysql-cmake.eclass" IyBDb3B5cmlnaHQgMTk5OS0yMDExIEdlbnRvbyBGb3VuZGF0aW9uCiMgRGlzdHJpYnV0ZWQg dW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2Mgoj ICRIZWFkZXI6ICQKCiMgQEVDTEFTUzogbXlzcWwuY21ha2UuZWNsYXNzCiMgQE1BSU5UQUlO RVI6CiMgTWFpbnRhaW5lcnM6CiMJLSBNeVNRTCBUZWFtIDxteXNxbC1idWdzQGdlbnRvby5v cmc+CiMJLSBSb2JpbiBILiBKb2huc29uIDxyb2JiYXQyQGdlbnRvby5vcmc+CiMJLSBKb3Jn ZSBNYW51ZWwgQi4gUy4gVmljZXR0byA8am1ic3ZpY2V0dG9AZ2VudG9vLm9yZz4KIyBAQkxV UkI6IFRoaXMgZWNsYXNzIHByb3ZpZGVzIHRoZSBjbWFrZSBzdXBwb3J0aW5nIGZ1bmN0aW9u cyBmb3IgbXlzcWwgZWJ1aWxkcwojIEBERVNDUklQVElPTjoKIyBUaGUgbXlzcWwtY21ha2Uu ZWNsYXNzIHByb3ZpZGVzIHByb3ZpZGVzIHRoZSBjbWFrZSBzcGVjaWZpYyBjb2RlCiMgZm9y IG15c3FsIGVidWlsZHMuCgppbmhlcml0IGNtYWtlLXV0aWxzCgojCiMgSEVMUEVSIEZVTkNU SU9OUzoKIwoKIyBARlVOQ1RJT046IG15c3FsX2NtYWtlX2Rpc2FibGVfdGVzdAojIEBERVND UklQVElPTjoKIyBIZWxwZXIgZnVuY3Rpb24gdG8gZGlzYWJsZSBzcGVjaWZpYyB0ZXN0cy4K bXlzcWwtY21ha2VfZGlzYWJsZV90ZXN0KCkgewoKCWxvY2FsIHJhd3Rlc3RuYW1lIHRlc3Ru YW1lIHRlc3RzdWl0ZSByZWFzb24gbXlzcWxfZGlzYWJsZV9maWxlCglyYXd0ZXN0bmFtZT0i JHsxfSIgOyBzaGlmdAoJcmVhc29uPSIke0B9IgoJZXdhcm4gInRlc3QgJyR7cmF3dGVzdG5h bWV9JyBkaXNhYmxlZDogJyR7cmVhc29ufSciCgoJdGVzdHN1aXRlPSIke3Jhd3Rlc3RuYW1l Ly4qfSIKCXRlc3RuYW1lPSIke3Jhd3Rlc3RuYW1lLyoufSIKCW15c3FsX2Rpc2FibGVfZmls ZT0iJHtTfS9teXNxbC10ZXN0L3QvZGlzYWJsZWQuZGVmIgoJI2VpbmZvICJyYXd0ZXN0bmFt ZT0ke3Jhd3Rlc3RuYW1lfSB0ZXN0bmFtZT0ke3Rlc3RuYW1lfSB0ZXN0c3VpdGU9JHt0ZXN0 c3VpdGV9IgoJZWNobyAke3Rlc3RuYW1lfSA6ICR7cmVhc29ufSA+PiAiJHtteXNxbF9kaXNh YmxlX2ZpbGV9IgoKCSMgJHtTfS9teXNxbC10ZXN0cy90L2Rpc2FibGVkLmRlZgoJIwoJIyAk e1N9L215c3FsLXRlc3RzL3N1aXRlL2ZlZGVyYXRlZC9kaXNhYmxlZC5kZWYKCSMKCSMgJHtT fS9teXNxbC10ZXN0cy9zdWl0ZS9qcC90L2Rpc2FibGVkLmRlZgoJIyAke1N9L215c3FsLXRl c3RzL3N1aXRlL25kYi90L2Rpc2FibGVkLmRlZgoJIyAke1N9L215c3FsLXRlc3RzL3N1aXRl L3JwbC90L2Rpc2FibGVkLmRlZgoJIyAke1N9L215c3FsLXRlc3RzL3N1aXRlL3BhcnRzL3Qv ZGlzYWJsZWQuZGVmCgkjICR7U30vbXlzcWwtdGVzdHMvc3VpdGUvcnBsX25kYi90L2Rpc2Fi bGVkLmRlZgoJIyAke1N9L215c3FsLXRlc3RzL3N1aXRlL25kYl90ZWFtL3QvZGlzYWJsZWQu ZGVmCgkjICR7U30vbXlzcWwtdGVzdHMvc3VpdGUvYmlubG9nL3QvZGlzYWJsZWQuZGVmCgkj ICR7U30vbXlzcWwtdGVzdHMvc3VpdGUvaW5ub2RiL3QvZGlzYWJsZWQuZGVmCglpZiBbIC1u ICIke3Rlc3RzdWl0ZX0iIF07IHRoZW4KCQlmb3IgbXlzcWxfZGlzYWJsZV9maWxlIGluIFwK CQkJJHtTfS9teXNxbC10ZXN0L3N1aXRlLyR7dGVzdHN1aXRlfS9kaXNhYmxlZC5kZWYgIFwK CQkJJHtTfS9teXNxbC10ZXN0L3N1aXRlLyR7dGVzdHN1aXRlfS90L2Rpc2FibGVkLmRlZiAg XAoJCQlGQUlMRUQgOyBkbwoJCQlbIC1mICIke215c3FsX2Rpc2FibGVfZmlsZX0iIF0gJiYg YnJlYWsKCQlkb25lCgkJaWYgWyAiJHtteXNxbF9kaXNhYmxlZF9maWxlfSIgIT0gIkZBSUxF RCIgXTsgdGhlbgoJCQllY2hvICIke3Rlc3RuYW1lfSA6ICR7cmVhc29ufSIgPj4gIiR7bXlz cWxfZGlzYWJsZV9maWxlfSIKCQllbHNlCgkJCWV3YXJuICJDb3VsZCBub3QgZmluZCB0ZXN0 c3VpdGUgZGlzYWJsZWQuZGVmIGxvY2F0aW9uIGZvciAke3Jhd3Rlc3RuYW1lfSIKCQlmaQoJ ZmkKfQoKIyBARlVOQ1RJT046IGNvbmZpZ3VyZV9jbWFrZV9sb2NhbGUKIyBAREVTQ1JJUFRJ T046CiMgSGVscGVyIGZ1bmN0aW9uIHRvIGNvbmZpZ3VyZSBsb2NhbGUgY21ha2Ugb3B0aW9u cwpjb25maWd1cmVfY21ha2VfbG9jYWxlKCkgewoKCWlmICEgdXNlIG1pbmltYWwgJiYgWyAt biAiJHtNWVNRTF9ERUZBVUxUX0NIQVJTRVR9IiAtYSAtbiAiJHtNWVNRTF9ERUZBVUxUX0NP TExBVElPTn0iIF07IHRoZW4KCQlld2FybiAiWW91IGFyZSB1c2luZyBhIGN1c3RvbSBjaGFy c2V0IG9mICR7TVlTUUxfREVGQVVMVF9DSEFSU0VUfSIKCQlld2FybiAiYW5kIGEgY29sbGF0 aW9uIG9mICR7TVlTUUxfREVGQVVMVF9DT0xMQVRJT059LiIKCQlld2FybiAiWW91IE1VU1Qg ZmlsZSBidWdzIHdpdGhvdXQgdGhlc2UgdmFyaWFibGVzIHNldC4iCgoJCW15Y21ha2Vhcmdz Kz0oCgkJCS1EREVGQVVMVF9DSEFSU0VUPSR7TVlTUUxfREVGQVVMVF9DSEFSU0VUfQoJCQkt RERFRkFVTFRfQ09MTEFUSU9OPSR7TVlTUUxfREVGQVVMVF9DT0xMQVRJT059CgkJKQoKCWVs aWYgISB1c2UgbGF0aW4xIDsgdGhlbgoJCW15Y21ha2VhcmdzKz0oCgkJCS1EREVGQVVMVF9D SEFSU0VUPXV0ZjgKCQkJLURERUZBVUxUX0NPTExBVElPTj11dGY4X2dlbmVyYWxfY2kKCQkp CgllbHNlCgkJbXljbWFrZWFyZ3MrPSgKCQkJLURERUZBVUxUX0NIQVJTRVQ9bGF0aW4xCgkJ CS1EREVGQVVMVF9DT0xMQVRJT049bGF0aW4xX3N3ZWRpc2hfY2kKCQkpCglmaQp9CgojIEBG VU5DVElPTjogY29uZmlndXJlX2NtYWtlX21pbmltYWwKIyBAREVTQ1JJUFRJT046CiMgSGVs cGVyIGZ1bmN0aW9uIHRvIGNvbmZpZ3VyZSBtaW5pbWFsIGluc3RhbGwKY29uZmlndXJlX2Nt YWtlX21pbmltYWwoKSB7CgoJbXljbWFrZWFyZ3MrPSgKCQktRFdJVEhPVVRfU0VSVkVSPTEK CQktRFdJVEhPVVRfRU1CRURERURfU0VSVkVSPTEKCQktREVOQUJMRURfTE9DQUxfSU5GSUxF PTEKCQktREVYVFJBX0NIQVJTRVRTPW5vbmUKCQktRElOU1RBTExfU1FMQkVOQ0hESVI9CgkJ LURXSVRIX1NTTD1zeXN0ZW0KCQktRFdJVEhfWkxJQj1zeXN0ZW0KCQktRFdJVEhPVVRfTElC V1JBUD0xCgkJLURXSVRIT1VUX1JFQURMSU5FPTEKCQktRFdJVEhPVVRfSU5OT0JBU0VfU1RP UkFHRV9FTkdJTkU9MQoJCS1EV0lUSE9VVF9BUkNISVZFX1NUT1JBR0VfRU5HSU5FPTEKCQkt RFdJVEhPVVRfQkxBQ0tIT0xFX1NUT1JBR0VfRU5HSU5FPTEKCSkKfQoKIyBARlVOQ1RJT046 IGNvbmZpZ3VyZV9jbWFrZV9zdGFuZGFyZAojIEBERVNDUklQVElPTjoKIyBIZWxwZXIgZnVu Y3Rpb24gdG8gY29uZmlndXJlIHN0YW5kYXJkIGluc3RhbGwKY29uZmlndXJlX2NtYWtlX3N0 YW5kYXJkKCkgewoKCW15Y21ha2VhcmdzKz0oCgkJLURFTkFCTEVEX0xPQ0FMX0lORklMRT0x CgkJLURFWFRSQV9DSEFSU0VUUz1hbGwKCQktRE1ZU1FMX1VTRVI9bXlzcWwKCQktRE1ZU1FM X1VOSVhfQUREUj0vdmFyL3J1bi9teXNxbGQvbXlzcWxkLnNvY2sKCQktRFdJVEhPVVRfUkVB RExJTkU9MQoJCS1EV0lUSF9aTElCPXN5c3RlbQoJCS1EV0lUSE9VVF9MSUJXUkFQPTEKCSkK CglpZiB1c2Ugc3RhdGljIDsgdGhlbgoJCW15Y21ha2VhcmdzKz0oIC1ERElTQUJMRV9TSEFS RUQ9MSApCgllbHNlCgkJbXljbWFrZWFyZ3MrPSggLURESVNBQkxFRF9TSEFSRUQ9MCApCglm aQoKCW15Y21ha2VhcmdzKz0oCgkJJChjbWFrZS11dGlsc191c2Vfd2l0aCBkZWJ1ZykKCQkk KGNtYWtlLXV0aWxzX3VzZV93aXRoIGVtYmVkZGVkIEVNQkVEREVEX1NFUlZFUikKCQkkKGNt YWtlLXV0aWxzX3VzZV93aXRoIHByb2ZpbGluZykKCSkKCglpZiB1c2Ugc3NsOyB0aGVuCgkJ bXljbWFrZWFyZ3MrPSggLURXSVRIX1NTTD1zeXN0ZW0gKQoJZWxzZQoJCW15Y21ha2Vhcmdz Kz0oIC1EV0lUSF9TU0w9MCApCglmaQp9Cgpjb25maWd1cmVfNTEoKSB7CgoJIyBUaGlzIGlz IGFuIGV4cGxpY3QgZGllIGhlcmUsIGJlY2F1c2UgaWYgd2UganVzdCBmb3JjaWJseSBkaXNh YmxlIGl0LCB0aGVuIHRoZQoJIyB1c2VyJ3MgZGF0YSBpcyBub3QgYWNjZXNzaWJsZS4KCXVz ZSBtYXgtaWR4LTEyOCAmJiBkaWUgIkJ1ZyAjMzM2MDI3OiB1cHN0cmVhbSBoYXMgYSBjb3Jy dXB0aW9uIGlzc3VlIHdpdGggbWF4LWlkeC0xMjggcHJlc2VudGx5IgoJI3VzZSBtYXgtaWR4 LTEyOCAmJiBteWNvbmY9IiR7bXljb25mfSAtLXdpdGgtbWF4LWluZGV4ZXM9MTI4IgoKCSMg U2NhbiBmb3IgYWxsIGF2YWlsYWJsZSBwbHVnaW5zCglsb2NhbCBwbHVnaW5zX2F2YWlsPSIk KAoJTEFORz1DIFwKCWZpbmQgIiR7U30iIFwKCQlcKCBcCgkJLW5hbWUgJ3BsdWcuaW4nIFwK CQktbyAtaW5hbWUgJ2NvbmZpZ3VyZS5pbicgXAoJCS1vIC1pbmFtZSAnY29uZmlndXJlLmFj JyBcCgkJXCkgXAoJCS1wcmludDAgXAoJfCB4YXJncyAtMCBzZWQgLXIgLW4gXAoJCS1lICcv Xk1ZU1FMX1NUT1JBR0VfRU5HSU5FL3sKCQkJc35NWVNRTF9TVE9SQUdFX0VOR0lORVwoW1s6 c3BhY2U6XV0qXFs/KFstX2EtejAtOV0rKVxdPy4qLH5cMSB+ZyA7CgkJCXN+XihbXiBdKyku Kn5cMX5ncDsKCQl9JyBcCgl8IHRyIC1zICdcbicgJyAnCgkpIgoKCSMgNS4xIGludHJvZHVj ZXMgYSBuZXcgd2F5IHRvIG1hbmFnZSBzdG9yYWdlIGVuZ2luZXMgKHBsdWdpbnMpCgkjIGxp a2UgY29uZmlndXJhdGlvbj1ub25lCgkjIFRoaXMgYmFzZSBzZXQgYXJlIHJlcXVpcmVkLCBh bmQgd2lsbCBhbHdheXMgYmUgc3RhdGljYWxseSBidWlsdC4KCWxvY2FsIHBsdWdpbnNfc3Rh PSJjc3YgbXlpc2FtIG15aXNhbW1yZyBoZWFwIgoJbG9jYWwgcGx1Z2luc19keW49IiIKCWxv Y2FsIHBsdWdpbnNfZGlzPSJleGFtcGxlIGlibWRiMmkiCgoJIyBUaGVzZSBhcmVuJ3QgYWN0 dWFsbHkgcmVxdWlyZWQgYnkgdGhlIGJhc2Ugc2V0LCBidXQgYXJlIHJlYWxseSB1c2VmdWw6 CglwbHVnaW5zX3N0YT0iJHtwbHVnaW5zX3N0YX0gYXJjaGl2ZSBibGFja2hvbGUiCgoJIyBk ZWZhdWx0IGluIDUuNS40CglpZiBteXNxbF92ZXJzaW9uX2lzX2F0X2xlYXN0ICI1LjUuNCIg OyB0aGVuCgkJcGx1Z2luc19zdGE9IiR7cGx1Z2luc19zdGF9IHBhcnRpdGlvbiIKCWZpCgkj IE5vdyB0aGUgZXh0cmFzCglpZiB1c2UgZXh0cmFlbmdpbmUgOyB0aGVuCgkJIyBsaWtlIGNv bmZpZ3VyYXRpb249bWF4LW5vLW5kYiwgYXJjaGl2ZSBhbmQgZXhhbXBsZSByZW1vdmVkIGlu IDUuMS4xMQoJCSMgbm90IGFkZGVkIHlldDogaWJtZGIyaQoJCSMgTm90IHN1cHBvcnRpbmcg YXMgZXhhbXBsZXM6IGV4YW1wbGUsZGFlbW9uX2V4YW1wbGUsZnRleGFtcGxlCgkJcGx1Z2lu c19zdGE9IiR7cGx1Z2luc19zdGF9IHBhcnRpdGlvbiIKCgkJaWYgW1sgIiR7UE59IiAhPSAi bWFyaWFkYiIgXV0gOyB0aGVuCgkJCWVsb2cgIkJlZm9yZSB1c2luZyB0aGUgRmVkZXJhdGVk IHN0b3JhZ2UgZW5naW5lLCBwbGVhc2UgYmUgc3VyZSB0byByZWFkIgoJCQllbG9nICJodHRw Oi8vZGV2Lm15c3FsLmNvbS9kb2MvcmVmbWFuLzUuMS9lbi9mZWRlcmF0ZWQtbGltaXRhdGlv bnMuaHRtbCIKCQkJcGx1Z2luc19keW49IiR7cGx1Z2luc19zdGF9IGZlZGVyYXRlZHgiCgkJ ZWxzZQoJCQllbG9nICJNYXJpYURCIGluY2x1ZGVzIHRoZSBGZWRlcmF0ZWRYIGVuZ2luZS4g QmUgc3VyZSB0byByZWFkIgoJCQllbG9nICJodHRwOi8vYXNrbW9udHkub3JnL3dpa2kvaW5k ZXgucGhwL01hbnVhbDpGZWRlcmF0ZWRYX3N0b3JhZ2VfZW5naW5lIgoJCQlwbHVnaW5zX2R5 bj0iJHtwbHVnaW5zX3N0YX0gZmVkZXJhdGVkIgoJCWZpCgllbHNlCgkJcGx1Z2luc19kaXM9 IiR7cGx1Z2luc19kaXN9IHBhcnRpdGlvbiBmZWRlcmF0ZWQiCglmaQoKCSMgVXBzdHJlYW0g c3BlY2lmaWNhbGx5IHJlcXVlc3RzIHRoYXQgSW5ub0RCIGFsd2F5cyBiZSBidWlsdDoKCSMg LSBpbm5vYmFzZSwgaW5ub2RiX3BsdWdpbgoJIyBCdWlsZCBmYWxjb24gaWYgYXZhaWxhYmxl IGZvciA2Lnggc2VyaWVzLgoJZm9yIGkgaW4gaW5ub2Jhc2UgZmFsY29uIDsgZG8KCQlbIC1l ICIke1N9Ii9zdG9yYWdlLyR7aX0gXSAmJiBwbHVnaW5zX3N0YT0iJHtwbHVnaW5zX3N0YX0g JHtpfSIKCWRvbmUKCWZvciBpIGluIGlubm9kYl9wbHVnaW4gOyBkbwoJCVsgLWUgIiR7U30i L3N0b3JhZ2UvJHtpfSBdICYmIHBsdWdpbnNfZHluPSIke3BsdWdpbnNfZHlufSAke2l9IgoJ ZG9uZQoKCSMgbGlrZSBjb25maWd1cmF0aW9uPW1heC1uby1uZGIKCWlmICggdXNlIGNsdXN0 ZXIgfHwgW1sgIiR7UE59IiA9PSAibXlzcWwtY2x1c3RlciIgXV0gKSA7IHRoZW4KCQlwbHVn aW5zX3N0YT0iJHtwbHVnaW5zX3N0YX0gbmRiY2x1c3RlciBwYXJ0aXRpb24iCgkJcGx1Z2lu c19kaXM9IiR7cGx1Z2luc19kaXMvL3BhcnRpdGlvbn0iCgkJbXljb25mPSIke215Y29uZn0g LS13aXRoLW5kYi1iaW5sb2ciCgllbHNlCgkJcGx1Z2luc19kaXM9IiR7cGx1Z2luc19kaXN9 IG5kYmNsdXN0ZXIiCglmaQoKCXVzZSBzdGF0aWMgJiYgXAoJcGx1Z2luc19zdGE9IiR7cGx1 Z2luc19zdGF9ICR7cGx1Z2luc19keW59IiAmJiBcCglwbHVnaW5zX2R5bj0iIgoKCWVpbmZv ICJBdmFpbGFibGUgcGx1Z2luczogJHtwbHVnaW5zX2F2YWlsfSIKCWVpbmZvICJEeW5hbWlj IHBsdWdpbnM6ICR7cGx1Z2luc19keW59IgoJZWluZm8gIlN0YXRpYyBwbHVnaW5zOiAke3Bs dWdpbnNfc3RhfSIKCWVpbmZvICJEaXNhYmxlZCBwbHVnaW5zOiAke3BsdWdpbnNfZGlzfSIK CgkjIFRoZXNlIGFyZSB0aGUgc3RhdGljIHBsdWdpbnMKCW15Y29uZj0iJHtteWNvbmZ9IC0t d2l0aC1wbHVnaW5zPSR7cGx1Z2luc19zdGEvLyAvLH0iCgkjIEFuZCB0aGUgZGlzYWJsZWQg b25lcwoJZm9yIGkgaW4gJHtwbHVnaW5zX2Rpc30gOyBkbwoJCW15Y29uZj0iJHtteWNvbmZ9 IC0td2l0aG91dC1wbHVnaW4tJHtpfSIKCWRvbmUKfQoKCiMKIyBFQlVJTEQgRlVOQ1RJT05T CiMKCiMgQEZVTkNUSU9OOiBteXNxbC1jbWFrZV9zcmNfcHJlcGFyZQojIEBERVNDUklQVElP TjoKIyBBcHBseSBwYXRjaGVzIHRvIHRoZSBzb3VyY2UgY29kZSBhbmQgcmVtb3ZlIHVubmVl ZGVkIGJ1bmRsZWQgbGlicy4KbXlzcWwtY21ha2Vfc3JjX3ByZXBhcmUoKSB7CgoJZGVidWct cHJpbnQtZnVuY3Rpb24gJHtGVU5DTkFNRX0gIiRAIgoKCWNkICIke1N9IgoKCSMgQXBwbHkg dGhlIHBhdGNoZXMgZm9yIHRoaXMgTXlTUUwgdmVyc2lvbgoJRVBBVENIX1NVRkZJWD0icGF0 Y2giCglta2RpciAtcCAiJHtFUEFUQ0hfU09VUkNFfSIgfHwgZGllICJVbmFibGUgdG8gY3Jl YXRlIGVwYXRjaCBkaXJlY3RvcnkiCgkjIENsZWFuIG91dCBvbGQgaXRlbXMKCXJtIC1mICIk e0VQQVRDSF9TT1VSQ0V9Ii8qCgkjIE5vdyBsaW5rIGluIHJpZ2h0IHBhdGNoZXMKCW15c3Fs X212X3BhdGNoZXMKCSMgQW5kIGFwcGx5CgllcGF0Y2gKCgkjIGxhc3QgLWZQSUMgZml4dXAs IHBlciBidWcgIzMwNTg3MwoJaT0iJHtTfSIvc3RvcmFnZS9pbm5vZGJfcGx1Z2luL3BsdWcu aW4KCVsgLWYgIiR7aX0iIF0gJiYgc2VkIC1pIC1lICcvQ0ZMQUdTL3MsLXByZWZlci1ub24t cGljLCxnJyAiJHtpfSIKCglybSAtZiAic2NyaXB0cy9teXNxbGJ1ZyIKfQoKIyBARlVOQ1RJ T046IG15c3FsLWNtYWtlX3NyY19jb25maWd1cmUKIyBAREVTQ1JJUFRJT046CiMgQ29uZmln dXJlIG15c3FsIHRvIGJ1aWxkIHRoZSBjb2RlIGZvciBHZW50b28gcmVzcGVjdGluZyB0aGUg dXNlIGZsYWdzLgpteXNxbC1jbWFrZV9zcmNfY29uZmlndXJlKCkgewoKCWRlYnVnLXByaW50 LWZ1bmN0aW9uICR7RlVOQ05BTUV9ICIkQCIKCglteWNtYWtlYXJncz0oCgkJLURDTUFLRV9J TlNUQUxMX1BSRUZJWD0vdXNyCgkJLURNWVNRTF9EQVRBRElSPS92YXIvbGliL215c3FsCgkJ LURTWVNDT05GRElSPS9ldGMvbXlzcWwKCQktRElOU1RBTExfQklORElSPWJpbgoJCS1ESU5T VEFMTF9ET0NESVI9c2hhcmUvZG9jLyR7UH0KCQktRElOU1RBTExfRE9DUkVBRE1FRElSPXNo YXJlL2RvYy8ke1B9CgkJLURJTlNUQUxMX0lOQ0xVREVESVI9aW5jbHVkZS9teXNxbAoJCS1E SU5TVEFMTF9JTkZPRElSPXNoYXJlL2luZm8KCQktRElOU1RBTExfTElCRElSPSQoZ2V0X2xp YmRpcikvbXlzcWwKCQktRElOU1RBTExfTUFORElSPXNoYXJlL21hbgoJCS1ESU5TVEFMTF9N WVNRTERBVEFESVI9L3Zhci9saWIvbXlzcWwKCQktRElOU1RBTExfTVlTUUxTSEFSRURJUj1z aGFyZS9teXNxbAoJCS1ESU5TVEFMTF9NWVNRTFRFU1RESVI9c2hhcmUvbXlzcWwvbXlzcWwt dGVzdAoJCS1ESU5TVEFMTF9QTFVHSU5ESVI9JChnZXRfbGliZGlyKS9teXNxbC9wbHVnaW4K CQktRElOU1RBTExfU0JJTkRJUj1zYmluCgkJLURJTlNUQUxMX1NDUklQVERJUj1zaGFyZS9t eXNxbC9zY3JpcHRzCgkJLURJTlNUQUxMX1NRTEJFTkNIRElSPXNoYXJlL215c3FsCgkJLURJ TlNUQUxMX1NVUFBPUlRGSUxFU0RJUj0vdXNyL3NoYXJlL215c3FsCgkJLURXSVRIX0NPTU1F TlQ9IkdlbnRvbyBMaW51eCAke1BGfSIKCQktRFdJVEhPVVRfVU5JVF9URVNUUz0xCgkpCgoJ Y29uZmlndXJlX2NtYWtlX2xvY2FsZQoKCWlmIHVzZSBtaW5pbWFsIDsgdGhlbgoJCWNvbmZp Z3VyZV9jbWFrZV9taW5pbWFsCgllbHNlCgkJY29uZmlndXJlX2NtYWtlX3N0YW5kYXJkCglm aQoKCSMgQnVnICMxMTQ4OTUsIGJ1ZyAjMTEwMTQ5CglmaWx0ZXItZmxhZ3MgIi1PIiAiLU9b MDFdIgoKCUNYWEZMQUdTPSIke0NYWEZMQUdTfSAtZm5vLWV4Y2VwdGlvbnMgLWZuby1zdHJp Y3QtYWxpYXNpbmciCglDWFhGTEFHUz0iJHtDWFhGTEFHU30gLWZlbGlkZS1jb25zdHJ1Y3Rv cnMgLWZuby1ydHRpIgoJQ1hYRkxBR1M9IiR7Q1hYRkxBR1N9IC1mbm8taW1wbGljaXQtdGVt cGxhdGVzIgoJZXhwb3J0IENYWEZMQUdTCgoJIyBidWcgIzI4MzkyNiwgd2l0aCBHQ0M0LjQs IHRoaXMgaXMgcmVxdWlyZWQgdG8gZ2V0IGNvcnJlY3QgYmVoYXZpb3IuCglhcHBlbmQtZmxh Z3MgLWZuby1zdHJpY3QtYWxpYXNpbmcKCgljbWFrZS11dGlsc19zcmNfY29uZmlndXJlCn0K CiMgQEZVTkNUSU9OOiBteXNxbC1jbWFrZV9zcmNfY29tcGlsZQojIEBERVNDUklQVElPTjoK IyBDb21waWxlIHRoZSBteXNxbCBjb2RlLgpteXNxbC1jbWFrZV9zcmNfY29tcGlsZSgpIHsK CglkZWJ1Zy1wcmludC1mdW5jdGlvbiAke0ZVTkNOQU1FfSAiJEAiCgoJY21ha2UtdXRpbHNf c3JjX2NvbXBpbGUKfQoKIyBARlVOQ1RJT046IG15c3FsLWNtYWtlX3NyY19pbnN0YWxsCiMg QERFU0NSSVBUSU9OOgojIEluc3RhbGwgbXlzcWwuCm15c3FsLWNtYWtlX3NyY19pbnN0YWxs KCkgewoKCWRlYnVnLXByaW50LWZ1bmN0aW9uICR7RlVOQ05BTUV9ICIkQCIKCgkjIE1ha2Ug c3VyZSB0aGUgdmFycyBhcmUgY29ycmVjdGx5IGluaXRpYWxpemVkCglteXNxbF9pbml0X3Zh cnMKCgljbWFrZS11dGlsc19zcmNfaW5zdGFsbAoKCSMgQ29udmVuaWVuY2UgbGlua3MKCWVp bmZvICJNYWtpbmcgQ29udmVuaWVuY2UgbGlua3MgZm9yIG15c3FsY2hlY2sgbXVsdGktY2Fs bCBiaW5hcnkiCglkb3N5bSAiL3Vzci9iaW4vbXlzcWxjaGVjayIgIi91c3IvYmluL215c3Fs YW5hbHl6ZSIKCWRvc3ltICIvdXNyL2Jpbi9teXNxbGNoZWNrIiAiL3Vzci9iaW4vbXlzcWxy ZXBhaXIiCglkb3N5bSAiL3Vzci9iaW4vbXlzcWxjaGVjayIgIi91c3IvYmluL215c3Fsb3B0 aW1pemUiCgoJIyBJTlNUQUxMX0xBWU9VVD1TVEFOREFMT05FIGNhdXNlcyBjbWFrZSB0byBj cmVhdGUgYSAvdXNyL2RhdGEgZGlyCglybSAtUmYgIiR7RH0vdXNyL2RhdGEiCgoJIyBWYXJp b3VzIGp1bmsgKG15LSouY25mIG1vdmVkIGVsc2V3aGVyZSkKCWVpbmZvICJSZW1vdmluZyBk dXBsaWNhdGUgL3Vzci9zaGFyZS9teXNxbCBmaWxlcyIKIwlybSAtUmYgIiR7RH0vdXNyL3No YXJlL2luZm8iCiMJZm9yIHJlbW92ZW1lIGluICAibXlzcWwtbG9nLXJvdGF0ZSIgbXlzcWwu c2VydmVyKiBcCiMJCWJpbmFyeS1jb25maWd1cmUqIG15LSouY25mIG1pX3Rlc3RfYWxsKgoj CWRvCiMJCXJtIC1mICIke0R9Ii8ke01ZX1NIQVJFRFNUQVRFRElSfS8ke3JlbW92ZW1lfQoj CWRvbmUKCgkjIENsZWFuIHVwIHN0dWZmIGZvciBhIG1pbmltYWwgYnVpbGQKIwlpZiB1c2Ug bWluaW1hbCA7IHRoZW4KIwkJZWluZm8gIlJlbW92ZSBhbGwgZXh0cmEgY29udGVudCBmb3Ig bWluaW1hbCBidWlsZCIKIwkJcm0gLVJmICIke0R9JHtNWV9TSEFSRURTVEFURURJUn0iL3tt eXNxbC10ZXN0LHNxbC1iZW5jaH0KIwkJcm0gLWYgIiR7RH0iL3Vzci9iaW4ve215c3Fse19p bnN0YWxsX2RiLG1hbmFnZXIqLF9zZWN1cmVfaW5zdGFsbGF0aW9uLF9maXhfcHJpdmlsZWdl X3RhYmxlcyxob3Rjb3B5LF9jb252ZXJ0X3RhYmxlX2Zvcm1hdCxkX211bHRpLF9maXhfZXh0 ZW5zaW9ucyxfemFwLF9leHBsYWluX2xvZyxfdGFibGVpbmZvLGRfc2FmZSxfaW5zdGFsbCxf d2FpdHBpZCxiaW5sb2csdGVzdH0sbXlpc2FtKixpc2FtKixwYWNrX2lzYW19CiMJCXJtIC1m ICIke0R9L3Vzci9zYmluL215c3FsZCIKIwkJcm0gLWYgIiR7RH0ke01ZX0xJQkRJUn0iL2xp YntoZWFwLG1lcmdlLG5pc2FtLG15e3N5cyxzdHJpbmdzLHNxbGQsaXNhbW1yZyxpc2FtfSx2 aW8sZGJ1Z30uYQojCWZpCgoJIyBVbmxlc3MgdGhleSBleHBsaWNpdGx5IHNwZWNpZmljIFVT RT10ZXN0LCB0aGVuIGRvIG5vdCBpbnN0YWxsIHRoZQoJIyB0ZXN0c3VpdGUuIEl0IERPRVMg aGF2ZSBhIHVzZSB0byBiZSBpbnN0YWxsZWQsIGVzcC4gd2hlbiB5b3Ugd2FudCB0byBkbyBh CgkjIHZhbGlkYXRpb24gb2YgeW91ciBkYXRhYmFzZSBjb25maWd1cmF0aW9uIGFmdGVyIHR1 bmluZyBpdC4KCWlmICEgdXNlIHRlc3QgOyB0aGVuCgkJcm0gLXJmICIke0R9Ii8ke01ZX1NI QVJFRFNUQVRFRElSfS9teXNxbC10ZXN0CglmaQoKCSMgQ29uZmlndXJhdGlvbiBzdHVmZgoJ Y2FzZSAke01ZU1FMX1BWX01BSk9SfSBpbgoJCTUuWzEtOV18Nip8NyopIG15c3FsX215Y25m X3ZlcnNpb249IjUuMSIgOzsKCWVzYWMKCWVpbmZvICJCdWlsZGluZyBkZWZhdWx0IG15LmNu ZiAoJHtteXNxbF9teWNuZl92ZXJzaW9ufSkiCglpbnNpbnRvICIke01ZX1NZU0NPTkZESVJ9 IgoJZG9pbnMgc2NyaXB0cy9teXNxbGFjY2Vzcy5jb25mCglteWNuZl9zcmM9Im15LmNuZi0k e215c3FsX215Y25mX3ZlcnNpb259IgoJc2VkIC1lICJzIUBEQVRBRElSQCEke01ZX0RBVEFE SVJ9IWciIFwKCQkiJHtGSUxFU0RJUn0vJHtteWNuZl9zcmN9IiBcCgkJPiAiJHtUTVBESVJ9 L215LmNuZi5vayIKCWlmIHVzZSBsYXRpbjEgOyB0aGVuCgkJc2VkIC1pIFwKCQkJLWUgIi9j aGFyYWN0ZXItc2V0L3N8dXRmOHxsYXRpbjF8ZyIgXAoJCQkiJHtUTVBESVJ9L215LmNuZi5v ayIKCWZpCgluZXdpbnMgIiR7VE1QRElSfS9teS5jbmYub2siIG15LmNuZgoKCSMgTWluaW1h bCBidWlsZHMgZG9uJ3QgaGF2ZSB0aGUgTXlTUUwgc2VydmVyCglpZiAhIHVzZSBtaW5pbWFs IDsgdGhlbgoJCWVpbmZvICJDcmVhdGluZyBpbml0aWFsIGRpcmVjdG9yaWVzIgoJCSMgRW1w dHkgZGlyZWN0b3JpZXMgLi4uCgkJZGlyb3B0cyAiLW0wNzUwIgoJCWlmIFtbICIke1BSRVZJ T1VTX0RBVEFESVJ9IiAhPSAieWVzIiBdXSA7IHRoZW4KCQkJZG9kaXIgIiR7TVlfREFUQURJ Un0iCgkJCWtlZXBkaXIgIiR7TVlfREFUQURJUn0iCgkJCWNob3duIC1SIG15c3FsOm15c3Fs ICIke0R9LyR7TVlfREFUQURJUn0iCgkJZmkKCgkJZGlyb3B0cyAiLW0wNzU1IgoJCWZvciBm b2xkZXIgaW4gIiR7TVlfTE9HRElSfSIgIi92YXIvcnVuL215c3FsZCIgOyBkbwoJCQlkb2Rp ciAiJHtmb2xkZXJ9IgoJCQlrZWVwZGlyICIke2ZvbGRlcn0iCgkJCWNob3duIC1SIG15c3Fs Om15c3FsICIke0R9LyR7Zm9sZGVyfSIKCQlkb25lCglmaQoKCSMgRG9jcwojCWVpbmZvICJJ bnN0YWxsaW5nIGRvY3MiCiMJZG9kb2MgUkVBRE1FIENoYW5nZUxvZyBFWENFUFRJT05TLUNM SUVOVCBJTlNUQUxMLVNPVVJDRQojCWRvaW5mbyAiJHtTfSIvRG9jcy9teXNxbC5pbmZvCgoJ IyBNaW5pbWFsIGJ1aWxkcyBkb24ndCBoYXZlIHRoZSBNeVNRTCBzZXJ2ZXIKIwlpZiAhIHVz ZSBtaW5pbWFsIDsgdGhlbgojCQllaW5mbyAiSW5jbHVkaW5nIHN1cHBvcnQgZmlsZXMgYW5k IHNhbXBsZSBjb25maWd1cmF0aW9ucyIKIwkJZG9jaW50byAic3VwcG9ydC1maWxlcyIKIwkJ Zm9yIHNjcmlwdCBpbiBcCiMJCQkiJHtTfSIvc3VwcG9ydC1maWxlcy9teS0qLmNuZiBcCiMJ CQkiJHtTfSIvc3VwcG9ydC1maWxlcy9tYWdpYyBcCiMJCQkiJHtTfSIvc3VwcG9ydC1maWxl cy9uZGItY29uZmlnLTItbm9kZS5pbmkKIwkJZG8KIwkJCVtbIC1mICIkc2NyaXB0IiBdXSAm JiBkb2RvYyAiJHtzY3JpcHR9IgojCQlkb25lCiMKIwkJZG9jaW50byAic2NyaXB0cyIKIwkJ Zm9yIHNjcmlwdCBpbiAiJHtTfSIvc2NyaXB0cy9teXNxbCogOyBkbwojCQkJW1sgLWYgIiRz Y3JpcHQiIF1dICYmIFtbICIke3NjcmlwdCUuc2h9IiA9PSAiJHtzY3JpcHR9IiBdXSAmJiBk b2RvYyAiJHtzY3JpcHR9IgojCQlkb25lCiMKIwlmaQoKCW15c3FsX2xpYl9zeW1saW5rcyAi JHtEfSIKfQo= --------------040003010409070701090409-- --------------enig68E3BFF2F43FC943031B5EAA 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/ iQIcBAEBAgAGBQJNrKyAAAoJEC8ZTXQF1qEPMQ4P/jGeZWIJdQt1FasmOfS48UEZ wJZXhaw+Qb0kDcIelWaQULwUvGwjsuC9FogmcDHV0RSf6ZcUJv1MgbDgAk0M7ssR oXvvH7amNoRy+xlbmi1ZUPUM1AqTzuNjz8v9KVjXsjn3wdwhsziKZXRAq7kHqkAv b/nknwJwlP2wJ4kZFQK2KiyYPkaHzuhJ0Dr7s18g3VnxhGwojIRe0Nc/aqLj/rNB 5aZBzyHKFiKAJCld+KF/D6T1MBL4ZeU7MMgV0n0ZbiTNC7i93Dt5w8DNzygl6gFA dszpKwYotJUCZUREzB/MjVLmrTrqmQ3fY6qdHxRB0EKdf/c/hfpcDA8kvg30z3he Ljklgt+dOj7grFuE5HI2jzQmE2eCccxeV7upV42X+HLWxDY6kahNPrxmwRrq5Uto mM/nr+Uym8UUdJA792XJ/feQ0IfeAkla6NGlTGglBm0FOTc+AIqP/lHumj8qIF0z /tVQxQyY8CJjpsOkxWIOvjrN8y4ctAyQ1pnFYaO/R4jBxWeZgRw4YT251vnWBIhm +WudiK8T7Ex33WJxakNfpnS1x7sjeUXzESvUCpSZK+Sns3Yey6QoTWDE5SIdxMeW isGvK8jiP/rmDsCiUQ9U5sbQwaicniwIVMJxH4BlWO0s2/tcXWICwosY4LbTwyX0 JlaqY6TiBOboFb5qdyn5 =/eMT -----END PGP SIGNATURE----- --------------enig68E3BFF2F43FC943031B5EAA--