Received: from localhost ([::1]:58970 helo=stodi.digitalkingdom.org) by stodi.digitalkingdom.org with esmtp (Exim 4.80.1) (envelope-from ) id 1Wx4jx-0004yK-LD; Tue, 17 Jun 2014 18:32:41 -0700 Received: from 173-13-139-235-sfba.hfc.comcastbusiness.net ([173.13.139.235]:47239 helo=jukni.digitalkingdom.org) by stodi.digitalkingdom.org with smtp (Exim 4.80.1) (envelope-from ) id 1Wx4jn-0004yC-0y for wikichanges@lojban.org; Tue, 17 Jun 2014 18:32:39 -0700 Received: by jukni.digitalkingdom.org (sSMTP sendmail emulation); Tue, 17 Jun 2014 18:32:30 -0700 From: "Apache" Date: Tue, 17 Jun 2014 18:32:30 -0700 To: wikichanges@lojban.org X-PHP-Originating-Script: 48:htmlMimeMail.php MIME-Version: 1.0 Message-ID: X-Spam-Score: -0.9 (/) X-Spam_score: -0.9 X-Spam_score_int: -8 X-Spam_bar: / Subject: [Wikichanges] Wiki page gadri: an unofficial commentary from a logical point of view changed by guskant X-BeenThere: wikichanges@lojban.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: webmaster@lojban.org Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: wikichanges-bounces@lojban.org VGhlIHBhZ2UgZ2Fkcmk6IGFuIHVub2ZmaWNpYWwgY29tbWVudGFyeSBmcm9tIGEgbG9naWNhbCBw b2ludCBvZiB2aWV3IHdhcyBjaGFuZ2VkIGJ5IGd1c2thbnQgYXQgMDE6MzIgVVRDCkNvbW1lbnQ6 IGxpbmsKCllvdSBjYW4gdmlldyB0aGUgcGFnZSBieSBmb2xsb3dpbmcgdGhpcyBsaW5rOgogCmh0 dHA6Ly93d3cubG9qYmFuLm9yZy90aWtpL2dhZHJpJTNBJTIwYW4lMjB1bm9mZmljaWFsJTIwY29t bWVudGFyeSUyMGZyb20lMjBhJTIwbG9naWNhbCUyMHBvaW50JTIwb2YlMjB2aWV3CgpZb3UgY2Fu IHZpZXcgYSBkaWZmIGJhY2sgdG8gdGhlIHByZXZpb3VzIHZlcnNpb24gYnkgZm9sbG93aW5nIHRo aXMgbGluazogCmh0dHA6Ly93d3cubG9qYmFuLm9yZy90aWtpL3Rpa2ktcGFnZWhpc3RvcnkucGhw P3BhZ2U9Z2FkcmklM0ElMjBhbiUyMHVub2ZmaWNpYWwlMjBjb21tZW50YXJ5JTIwZnJvbSUyMGEl MjBsb2dpY2FsJTIwcG9pbnQlMjBvZiUyMHZpZXcmY29tcGFyZT0xJm9sZHZlcj0yMyZuZXd2ZXI9 MjQKCgoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKgpUaGUgY2hhbmdlcyBpbiB0aGlzIHZlcnNpb24gZm9sbG93IGJlbG93LCBmb2xsb3dl ZCBhZnRlciBieSB0aGUgY3VycmVudCBmdWxsIHBhZ2UgdGV4dC4KKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCgorLSstKy0rLSstKy0r LSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKwpAQCAtTGluZXM6 IDE2MC0xNjQgY2hhbmdlZCB0byArTGluZXM6IDE2MC0xNjQgQEAKKy0rLSstKy0rLSstKy0rLSst Ky0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSsKQnkgYSBzcGVha2VyIHdo byB0aGlua3MgdGhhdCBhIGN1dC1vZmYgcGllY2Ugb2YgYnJlYWQgaXMgYWxzbyBicmVhZCwgYnJl YWQgaXMgcmVnYXJkZWQgYXMgbmVpdGhlciBhbiBpbmRpdmlkdWFsIG5vciBpbmRpdmlkdWFscy4K Ci0gW2h0dHBzOi8vZ3JvdXBzLmdvb2dsZS5jb20vZC9tc2cvbG9qYmFuL1JBdEU3WWstZHF3L3BD R2VZQ0U5bDFRSnwoUmVsYXRlZCBkaXNjdXNzaW9uOiBmb3IgdGhlIGNhc2Ugb2Yge2tvJ2F9PXts byBzaWRib30sIEkgd3JvdGUgdGhlIHNhbWUgcHJvb2Ygb25seSBpbiBMb2piYW4uKV0KKyBbaHR0 cDovL2d1c2thbnQuZ2l0aHViLmlvL2xvamJvL2pldG51amFyY28uaHRtbHwoSSB3cm90ZSB0aGUg c2FtZSBwcm9vZiBvbmx5IGluIExvamJhbi4pXQoKISEhISMgQSBsb2dpY2FsIGF4aW9tIG9uIHBs dXJhbCBjb25zdGFudAoKCgoKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioKVGhlIG5ldyBwYWdlIGNvbnRlbnQgZm9sbG93cyBiZWxvdy4K KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioKCigoQlBGSyBTZWN0aW9uOiBnYWRyaXxCUEZLJ3MgZ2FkcmkgcGFnZSkpIGNvbnRhaW5zIGV4 cHJlc3Npb25zIG1pc2xlYWRpbmcgcGVvcGxlIHdobyBoYXZlIGF0IGxlYXN0IGEgbGl0dGxlIGtu b3dsZWRnZSBvZiBsb2dpYyAoW2h0dHBzOi8vZ3JvdXBzLmdvb2dsZS5jb20vZC90b3BpYy9sb2pi YW4vUkF0RTdZay1kcXcvZGlzY3Vzc2lvbnxkaXNjdXNzaW9uXSkuCgpJIHdpbGwgbWFrZSBoZXJl IGEgY29tbWVudGFyeSBvbiBCUEZLJ3MgZ2Fkcmkgc28gdGhhdCBpdCBpcyB1bmRlcnNvb2QgYnkg dGhlbSBjb3JyZWN0bHkuCgoKCnttYWtldG9jfQoKCgohISMgR2xvc3NhcnkKCldlIHdpbGwgdXNl IHRoZSBmb2xsb3dpbmcgdGVybXMgaW4gdGhpcyBjb21tZW50YXJ5LgoKO19fYXJndW1lbnQgKHN1 bXRpKV9fOiBTeW1ib2wgdGhhdCByZWZlcnMgdG8gYSByZWZlcmVudCwgb3IgdGhhdCBhbm90aGVy IGFyZ3VtZW50IGNhbiBiZSBzdWJzdGl0dXRlZCBmb3IuCgpeR3JhbW1hdGljYWxseSwgYWxsIHRo ZXNlIGFyZSBzdW10aTogYXJndW1lbnRzLCB7emknb30gd2hpY2ggcmVtb3ZlcyBhIHBsYWNlIGZv ciBhbiBhcmd1bWVudCwge2tvfSB3aGljaCByZWZlcnMgdG8gbGlzdGVuZXIocykgYW5kIGZvcm1z IGltcGVyYXRpdmUsIHttYX0gd2hpY2ggZm9ybXMgaW50ZXJyb2dhdGl2ZSB0byBhc2sgd2hpY2gg c3VtdGkgbWFrZXMgdGhlIHN0YXRlbWVudCB0cnVlLCBzdW10aSBhbmQgcmVsYXRpdmUgY2xhdXNl cyAoe3pvJ2Ugbm9pIGJyb2RhfS4uLiksIHF1YW50aWZpZXIgYW5kIHN1bXRpL3NlbGJyaSAoe25v ZGF9LCB7Y2kgbG8gYnJvZGF9LCB7cm8gYnJvZGF9Li4uKSAsIHN1bXRpIGNvbm5lY3RlZCBieSBj b25uZWN0aXZlcyAoe2tvJ2EgLmUga28nZX0uLi4pLiBIb3dldmVyLCBpbiB0aGlzIGFydGljbGUs ICJzdW10aSIgcmVmZXJzIHRvIGFuIGFyZ3VtZW50IG9mIGxvZ2ljIHJlcHJlc2VudGVkIGluIExv amJhbi5eCgo7X191bml2ZXJzZSBvZiBkaXNjb3Vyc2VfXzogU2V0IG9mIGFsbCByZWZlcmVudHMg b2YgYXJndW1lbnRzLiBJdCBpcyBuYXR1cmFsbHkgYSB1bml2ZXJzZSB0aGF0IGlzIGRpc2N1c3Nl ZC4gQSB1bml2ZXJzZSBvZiBkaXNjb3Vyc2UgZGVwZW5kcyBvbiB0aGUgY29udGV4dC4KCjtfX2Nv bnN0YW50X186IEFyZ3VtZW50IHRoYXQgcmVmZXJzIHRvIGEgcmVmZXJlbnQuCgo7X192YXJpYWJs ZV9fOiBBcmd1bWVudCBhcyBhIHBsYWNlIGhvbGRlci4gSXQgZG9lcyBub3QgcmVmZXIgdG8gYW55 dGhpbmcuIEl0IGlzIHRvIGJlIHN1YnN0aXR1dGVkIGZvci4gVmFyaWFibGUgb3RoZXIgdGhhbiBi b3VuZCB2YXJpYWJsZSB0aGF0IHdpbGwgYmUgZGVmaW5lZCBiZWxvdyBpcyBjYWxsZWQgX19mcmVl IHZhcmlhYmxlX18uIFRoZSB0cnV0aCB2YWx1ZSBvZiBhIHNlbnRlbmNlIHRoYXQgaW5jbHVkZXMg YSBmcmVlIHZhcmlhYmxlIGlzIGluZGVmaW5pdGUuIFN1Y2ggYSBzZW50ZW5jZSBpcyBjYWxsZWQg X19vcGVuIHNlbnRlbmNlX18uCgpeSW4gTG9qYmFuLCB7a2UnYX0gYW5kIHtjZSd1fSBhcmUgYWx3 YXlzIGZyZWUgdmFyaWFibGVzLiBBIHNlbnRlbmNlIGluIE5PSS1jbGF1c2Ugb3IgTlUtY2xhdXNl IHdpdGgge2NlJ3V9IGlzIG9wZW4uIChBIHNlbnRlbmNlIGluIE5VLWNsYXVzZSB3aXRoIG5vIHtj ZSd1fSBoYXMgYSB0cnV0aCB2YWx1ZSwgYnV0IGVhY2ggb2YgdGhlIGluc2lkZSBhbmQgdGhlIG91 dHNpZGUgb2YgTlUtY2xhdXNlIGhhcyBhbiBpbmRlcGVuZGVudCB1bml2ZXJzZSBvZiBkaXNjb3Vy c2UsIGFuZCB0aHVzIGVhY2ggb2YgdGhlbSBoYXMgYW4gaW5kZXBlbmRlbnQgdHJ1dGggdmFsdWUg KGZvciBleGFtcGxlLCBzZWUgW2h0dHA6Ly9sb2piYW4uZ2l0aHViLmlvL2NsbC85LzcvfENMTDku N10pLiBJbiBkZWZpbml0aW9ucyBvZiB3b3JkcyBpbiBMb2piYW4sIGtvJ1YvZm8nViBzZXJpZXMg e2tvJ2EsIGtvJ2UsIC4uLn0gb2Ygc2VsbWEnbyBLT2hBNCBhcmUgdXNlZCBhcyBmcmVlIHZhcmlh YmxlcywgYnV0IGl0IGlzIG9ubHkgYSBjdXN0b20gZm9yIGNvbnZlbmllbmNlLiBBbGwgY21hdm8g b2YgS09oQTIsMyw0LDUsNiBhbmQge3pvJ2V9IG9mIEtPaEE3IGFyZSBlc3NlbnRpYWxseSBjb25z dGFudHMuIENvbnNpZGVyaW5nIHRoZSBjYXNlIHRoYXQgYm90aCBjb25zdGFudHMgYW5kIGJvdW5k IHZhcmlhYmxlcyAodG8gYmUgZGVmaW5lZCBiZWxvdykgYXBwZWFyIGluIGEgc3RhdGVtZW50LCAi Y29uc3RhbnRzIiBhcmUgZ2VuZXJhbGx5IGNvbnNpZGVyZWQgdG8gYmUgU2tvbGVtIGZ1bmN0aW9u cy4gU2VlICgofCNCb3VuZF92YXJpYWJsZXNfYW5kX2NvbnN0YW50c19pbl9hX3N0YXRlbWVudHxT ZWN0aW9uIDMuMi4yKSkgZm9yIGRldGFpbC5eCgo7X19xdWFudGlmeV9fOiBJbiBzdWJzdGl0dXRp bmcgcG9zc2libGUgYXJndW1lbnRzIG9uZSBieSBvbmUgZm9yIGEgdmFyaWFibGUgaW4gYSBzZW50 ZW5jZSwgY291bnQgdGhlIG51bWJlciBvZiByZWZlcmVudHMgdGhhdCBtYWtlIHRoZSBzZW50ZW5j ZSB0cnVlLCBhbmQgcHJlZml4IHRoZSBudW1iZXIgdG8gdGhlIHZhcmlhYmxlLgoKO19fcXVhbnRp Zmllcl9fOiBOdW1iZXIgdXNlZCBmb3IgcXVhbnRpZmljYXRpb24uIEJlc2lkZXMge3BhfSwge3Jl fSwge3ZlaSBueSBzdSdpIHBhICh2ZSdvKX0gYW5kIHNvIG9uLCB7cm99ICJhbGwiIGFuZCB7c3Un b30gInRoZXJlIGlzIG9uZSBvciBtb3JlIiBhcmUgYWxzbyBxdWFudGlmaWVycy4KCjtfX2JvdW5k IHZhcmlhYmxlX186IFZhcmlhYmxlIHByZWZpeGVkIGJ5IGEgcXVhbnRpZmllci4gQXMgYSByZXN1 bHQgb2YgcXVhbnRpZmljYXRpb24sIHRoZXJlIGlzIG5vIHJvb20gZm9yIHN1YnN0aXR1dGluZyBh biBhcmJpdHJhcnkgYXJndW1lbnQgZm9yIHRoZSB2YXJpYWJsZS4KCl5JbiBMb2piYW4sIHtkYX0s IHtkZX0gYW5kIHtkaX0gYXJlIGJvdW5kIHZhcmlhYmxlcy4gRm9yIGV4YW1wbGUsIHtybyBkYSB6 byd1IGRhIGJyb2RhfSBtZWFucyAiRm9yIGFsbCB7ZGF9IGluIHRoZSB1bml2ZXJzZSBvZiBkaXNj b3Vyc2UsIHtkYSBicm9kYX0gaXMgdHJ1ZS4iIEluIHRoZSBjYXNlIHRoYXQge2RhfSwge2RlfSBv ciB7ZGl9IGFyZSBub3QgcHJlZml4ZWQgYnkgYSBxdWFudGlmaWVyLCB0aGV5IGFyZSByZWdhcmRl ZCBhcyBpbXBsaWNpdGx5IHByZWZpeGVkIGJ5IHtzdSdvfS5eCgo7X19kb21haW5fXzogUmFuZ2Ug b2YgcmVmZXJlbnRzIHRvIGJlIHN1YnN0aXR1dGVkIGZvciBhIHZhcmlhYmxlLCBvciByYW5nZSB0 byBiZSBjb25zaWRlcmVkIGluIGNvdW50aW5nIHJlZmVyZW50cyBpbiBxdWFudGlmaWNhdGlvbi4K Cl5JbiBMb2piYW4sIGEgZG9tYWluIG9mIGEgYm91bmQgdmFyaWFibGUgY2FuIGJlIGxpbWl0ZWQg d2l0aCBhbiBleHByZXNzaW9uIHtkYSBwb2kuLi59LiBGb3IgZXhhbXBsZSwge3JvIGRhIHBvaSBr ZSdhIGJyb2RhIHpvJ3UgZGEgYnJvZGV9IG1lYW5zICJGb3IgYWxsIHtkYX0gdGhhdCBhcmUgeDEg b2Yge2Jyb2RhfSBpbiB0aGUgdW5pdmVyc2Ugb2YgZGlzY291cnNlLCB7ZGEgYnJvZGV9IGlzIHRy dWUuIiBJZiB7cG9pLi4ufSBkb2VzIG5vdCBmb2xsb3cge2RhfSwgdGhlIGRvbWFpbiBpcyB0aGUg d2hvbGUgdW5pdmVyc2Ugb2YgZGlzY291cnNlLl4KCjtfX3RhdXRvbG9neV9fOiBTZW50ZW5jZSB0 aGF0IGlzIGFsd2F5cyB0cnVlIGluZGVwZW5kZW50bHkgb2YgY29udGV4dC4ge2tvJ2EgZHUga28n YX0gZXRjLgoKO19fbG9naWNhbCBheGlvbXNfXzogU2VudGVuY2VzIHNlbGVjdGVkIGZyb20gdGF1 dG9sb2dpZXMgc28gdGhhdCBhbGwgdGF1dG9sb2dpZXMgYXJlIHByb3ZlZCBmcm9tIHRoZW0gd2l0 aCBydWxlcyBvZiBpbmZlcmVuY2UgdGhhdCBhcmUgZGVmaW5lZC4KCgoKISEjIFBsdXJhbCBxdWFu dGlmaWNhdGlvbgoKSW4gb3JkZXIgdG8gdW5kZXJzdGFuZCBhcmd1bWVudHMgb2YgTG9qYmFuIGZy b20gYSBsb2dpY2FsIHBvaW50IG9mIHZpZXcsIGl0IGlzIGVzc2VudGlhbCB0byBoYXZlIGEga25v d2xlZGdlIG9mIF9fcGx1cmFsIHF1YW50aWZpY2F0aW9uX18gKHNlZSwgZm9yIGV4YW1wbGUsIFto dHRwOi8vdGhlY29sbGVnZS5zeXIuZWR1L3Byb2ZpbGVzL3BhZ2VzL21ja2F5LXRob21hcy5odG1s fFRob21hcyBNY0theV06ICcnUGx1cmFsIFByZWRpY2F0aW9uJycsIE94Zm9yZCBVbml2ZXJzaXR5 IFByZXNzLCAyMDA2KS4KCgoKUGx1cmFsIHF1YW50aWZpY2F0aW9uIHdhcyBpbnZlbnRlZCBpbiBv cmRlciB0byBmYWNpbGl0YXRlIGV4cHJlc3Npb24gb2YgcHJvcG9zaXRpb24gdGhhdCBpcyBtZWFu aW5nZnVsIG9ubHkgd2hlbiB0aGUgcmVmZXJlbnQgb2YgYW4gYXJndW1lbnQgaXMgcGx1cmFsLiAK Cl4KCjtFeGFtcGxlOiBQZW9wbGUgZ2F0aGVyZWQsIGNvb2tlZCBhbmQgYXRlLl4KCkxvZ2ljYWxs eSwgdGhpcyBzZW50ZW5jZSBpcyBhIHByb3Bvc2l0aW9uIHRoYXQgY29uc2lzdHMgb2YgYSBjb25z dGFudCAicGVvcGxlIiBhbmQgdGhyZWUgcHJlZGljYXRlcyAiZ2F0aGVyZWQiICJjb29rZWQiIGFu ZCAiYXRlIi4gVGhlIHByZWRpY2F0ZXMgYXJlIGRpZmZlcmVudCBmcm9tIGVhY2ggb3RoZXIgaW4g cHJvcGVydHkgb2YgdHJlYXRpbmcgdGhlIGFyZ3VtZW50LiBXZSB3aWxsIGRpc2N1c3MgcHJlY2lz ZWx5IGhvdyB0aGUgYXJndW1lbnQgaW4gdGhlIHNlbnRlbmNlIGlzIHRyZWF0ZWQuCgoKCiEhISMg Q29sbGVjdGl2aXR5IGFuZCBkaXN0cmlidXRpdml0eQoKCgpDb25zaWRlciB0aGUgZXhwcmVzc2lv biAicGVvcGxlIGdhdGhlcmVkIjogYmFzZWQgb24gdGhlIG1lYW5pbmcgb2YgdGhlIHByZWRpY2F0 ZSAiZ2F0aGVyZWQiLCB0aGUgY29uc3RhbnQgInBlb3BsZSIgc2hvdWxkIHJlZmVyIHRvIHBsdXJh bCBwZW9wbGUuCgpXaGVuIHJlZmVyZW50cyBvZiBhbiBhcmd1bWVudCBzYXRpc2Z5IGEgcHJlZGlj YXRlIGFzIGNvbGxlY3RpdmUgcGx1cmFsIHRoaW5ncyBsaWtlIHRoaXMsIHdlIGV4cHJlc3MgaXQg YXMgImFuIGFyZ3VtZW50IHNhdGlzZmllcyBhbiBwcmVkaWNhdGUgX19jb2xsZWN0aXZlbHlfXyIs IG9yICJ0aGUgYXJndW1lbnQgaGFzIF9fY29sbGVjdGl2aXR5X18iLgoKCgpBcyBmb3IgZWFjaCBv ZiB0aGUgcGx1cmFsIHBlb3BsZSByZWZlcnJlZCB0byBieSB0aGUgY29uc3RhbnQsICBlYWNoIHNl bnRlbmNlIHN1Y2ggdGhhdCAiQWxpY2UgZ2F0aGVyZWQiLCAiQm9iIGdhdGhlcmVkIiBhbmQgc28g b24gaXMgbm9uc2Vuc2UuCgpXaGVuIGVhY2ggcmVmZXJlbnQgcmVmZXJyZWQgdG8gYnkgYSBjb25z dGFudCBjYW5ub3Qgc2F0aXNmeSBhIHByZWRpY2F0ZSBhbG9uZSwgd2UgZXhwcmVzcyBpdCBhcyAi YW4gYXJndW1lbnQgc2F0aXNmaWVzIGFuIHByZWRpY2F0ZSBfX25vbi1kaXN0cmlidXRpdmVseV9f Ii4KCgoKT24gdGhlIG90aGVyIGhhbmQsIGluIHRoZSBleHByZXNzaW9uICJwZW9wbGUgYXRlIiwg YWx0aG91Z2ggdGhlIGNvbnN0YW50ICJwZW9wbGUiIHJlZmVycyB0byBwbHVyYWwgcGVvcGxlLCB0 aGUgcHJlZGljYXRlICJhdGUiIGlzIHNhdGlzZmllZCBieSBlYWNoIHBlcnNvbi4gVGhhdCBpcyB0 byBzYXksIGVhY2ggc2VudGVuY2Ugc3VjaCB0aGF0ICJBbGljZSBhdGUiLCAiQm9iIGF0ZSIgYW5k IHNvIG9uIGlzIG1lYW5pbmdmdWwuCgpXaGVuIGVhY2ggcmVmZXJlbnQgcmVmZXJyZWQgdG8gYnkg YSBjb25zdGFudCBzYXRpc2ZpZXMgYSBwcmVkaWNhdGUgYWxvbmUsIHdlIGV4cHJlc3MgaXQgYXMg ImFuIGFyZ3VtZW50IHNhdGlzZmllcyBhbiBwcmVkaWNhdGUgX19kaXN0cmlidXRpdmVseV9fIiwg b3IgInRoZSBhcmd1bWVudCBoYXMgX19kaXN0cmlidXRpdml0eV9fIi4KCgoKTW9yZW92ZXIsIGlm IHRoZSBwcmVkaWNhdGUgImVhdCIgbWVhbnMgYW4gYWN0ICJwdXQgZm9vZCBpbiBhIG1vdXRoLCBi aXRlIGl0LCBsZXQgaXQgcGFzcyB0aHJvdWdoIGFuIGVzb3BoYWd1cyBhbmQgc2VuZCBpdCB0byBh IHN0b21hY2giLCBpdCBpcyBoYXJkbHkgY29uc2lkZXJlZCB0aGF0ICJwZW9wbGUiIHNhdGlzZmll cyAiZWF0IiBjb2xsZWN0aXZlbHkuIEV2ZW4gaWYgYSBwZXJzb24gaGVscHMgYW5vdGhlciB0byBl YXQsIHRoZSBoZWxwZXIgaXMgbm90IGVhdGVyLCBhbmQgdGhlIGVhdGVyIGlzIG5vdCBjb2xsZWN0 aXZlIHBlb3BsZSBidXQgYW4gaW5kaXZpZHVhbC4gCgpXaGVuIGVhY2ggcmVmZXJlbnQgcmVmZXJy ZWQgdG8gYnkgYSBjb25zdGFudCBjYW5ub3Qgc2F0aXNmeSBhIHByZWRpY2F0ZSBhcyBjb2xsZWN0 aXZlIHBsdXJhbCB0aGluZ3MsIHdlIGV4cHJlc3MgaXQgYXMgImFuIGFyZ3VtZW50IHNhdGlzZmll cyBhbiBwcmVkaWNhdGUgX19ub24tY29sbGVjdGl2ZWx5X18iLgoKKEhvd2V2ZXIsIGl0IGlzIHBv c3NpYmxlIHRvIGludGVycHJldCB0aGUgcHJlZGljYXRlICJlYXQiIGFzIGludm9sdmluZyBjb2xs ZWN0aXZpdHkuIEZvciBleGFtcGxlLCBpZiBpdCBpcyBpbnRlcnByZXRlZCBhcyAicHV0IGZvb2Qg YXdheSBmcm9tIG91dHNpZGUgdG8gaW5zaWRlIG9mIGJvZHkiLCB3ZSBtYXkgc2F5ICJjb2xsZWN0 aXZlbHkgZWF0IiB0byBleHByZXNzIGFuIGV2ZW50IHRoYXQgcGVvcGxlIGVhdCBhbmQgY29uc3Vt ZSBhIG1hc3Mgb2YgZm9vZCB0b2dldGhlci4pCgoKClRoZXJlIGFyZSBhbHNvIHByZWRpY2F0ZXMg dGhhdCBhbGxvdyBib3RoIHByb3BlcnRpZXMgImNvbGxlY3Rpdml0eSIgYW5kICJkaXN0cmlidXRp dml0eSIuCgoiUGVvcGxlIGNvb2tlZCIgbWF5IG1lYW4gdGhhdCBwbHVyYWwgcGVvcGxlIGtuZWFk IHBhc3RlIG9mIHBpenphIHRvZ2V0aGVyLCBhbmQgdGhhdCBlYWNoIG9mIHRoZW0gaXMgaW4gY2hh cmdlIG9mIGNha2VzIG9yIHBvdC1hdS1mZXUuIEluIHRoaXMgY2FzZSwgdGhlIGNvbnN0YW50ICJw ZW9wbGUiIHJlZmVycyB0byBwbHVyYWwgcGVvcGxlLCBhbmQgdGhleSBjb29rZWQgcGl6emEgY29s bGVjdGl2ZWx5LCBjYWtlcyBhbmQgcG90LWF1LWZldSBkaXN0cmlidXRpdmVseS4gVGhlIGNvbnN0 YW50ICJwZW9wbGUiIHRodXMgc2F0aXNmaWVzIHRoZSBwcmVkaWNhdGUgImNvb2tlZCIgY29sbGVj dGl2ZWx5IGFuZCBkaXN0cmlidXRpdmVseS4KCgoKTm90ZSB0aGF0IHRoZSBjb25zdGFudCAicGVv cGxlIiByZWZlcnMgdG8gd2hhdCBpcyBjb21tb24gdG8gdGhyZWUgcHJlZGljYXRlcyAiZ2F0aGVy ZWQiLCAiY29va2VkIiBhbmQgImF0ZSIuIE5vIG1hdHRlciBpZiBhIGNvbnN0YW50IHNhdGlzZmll cyBwcmVkaWNhdGVzIGNvbGxlY3RpdmVseSBvciBkaXN0cmlidXRpdmVseSwgdGhlIHJlZmVyZW50 IGlzIHRoZSBzYW1lLgoKCgpJZiB3ZSB1c2UgYW4gYXJndW1lbnQgImEgc2V0IG9mIHBlb3BsZSIg aW4gdGhlIGNhc2Ugb2Ygc2F0aXNmeWluZyBhIHByZWRpY2F0ZSBjb2xsZWN0aXZlbHksIGl0IG1p Z2h0IGJlIHBvc3NpYmxlIHRvIGludGVycHJldCB0aGUgcHJlZGljYXRlICJnYXRoZXJlZCIgc28g dGhhdCB0aGUgYXJndW1lbnQgc2F0aXNmaWVzIGl0LCBidXQgdGhlIHNhbWUgYXJndW1lbnQgY2Fu bm90IHNhdGlzZnkgdGhlIHByZWRpY2F0ZSAiYXRlIiwgYmVjYXVzZSB3ZSBjYW4gaGFyZGx5IHNh eSB0aGF0IGEgc2V0IG9mIHBlb3BsZSwgd2hpY2ggaXMgYW4gYWJzdHJhY3QgZW50aXR5LCBwZXJm b3JtcyAiYXRlIi4KCgoKVXNpbmcgcGx1cmFsIGNvbnN0YW50cyBhbmQgcGx1cmFsIHZhcmlhYmxl cyB0aGF0IHdpbGwgYmUgZGlzY3Vzc2VkIGluIHRoZSBmb2xsb3dpbmcgc2VjdGlvbnMsIHdlIGNh biBleHByZXNzIHBsdXJhbCB0aGluZ3MgaW4gdGhlIGZvcm0gb2YgcHJlZGljYXRlIGxvZ2ljIHdp dGhvdXQgdXNpbmcgc2V0cy4KCgoKISEhIyBQbHVyYWwgY29uc3RhbnQgYW5kIHBsdXJhbCB2YXJp YWJsZQoKQW4gYXJndW1lbnQgdGhhdCByZWZlcnMgdG8gcmVmZXJlbnQgd2l0aG91dCBpbnRyb2R1 Y2luZyBhIG5vdGlvbiBvZiBzZXRzLCB3aXRob3V0IGRpc3Rpbmd1aXNoaW5nIGNvbGxlY3Rpdml0 eSBhbmQgZGlzdHJpYnV0aXZpdHksIHdpdGhvdXQgZGlzdGluZ3Vpc2hpbmcgcGx1cmFsaXR5IGFu ZCBzaW5ndWxhcml0eSwgaXMgY2FsbGVkIF9fcGx1cmFsIGNvbnN0YW50X18uCgpBIHZhcmlhYmxl IGZvciB3aGljaCBhIHBsdXJhbCBjb25zdGFudCBjYW4gYmUgc3Vic3RpdHV0ZWQgaXMgY2FsbGVk IF9fcGx1cmFsIHZhcmlhYmxlX18uCgpRdWFudGlmeWluZyBhIHBsdXJhbCB2YXJpYWJsZSBpcyBj YWxsZWQgX19wbHVyYWwgcXVhbnRpZmljYXRpb25fXy4gQSBxdWFudGlmaWVyIHVzZWQgZm9yIHBs dXJhbCBxdWFudGlmaWNhdGlvbiBpcyBjYWxsZWQgX19wbHVyYWwgcXVhbnRpZmllcl9fLiBBIHBs dXJhbCB2YXJpYWJsZSBwcmVmaXhlZCB3aXRoIGEgcGx1cmFsIHF1YW50aWZpZXIgaXMgY2FsbGVk IGEgX19ib3VuZCBwbHVyYWwgdmFyaWFibGVfXy4KCgoKISEhISMgbWUgYW5kIGpvJ3UKCldlIGlu dHJvZHVjZSByZWxhdGlvbnMgYmV0d2VlbiBwbHVyYWwgY29uc3RhbnRzIGFuZCBwbHVyYWwgdmFy aWFibGVzOiB7bWV9IGFuZCB7am8ndX0uCgoKCnx8CgpYIG1lIFkgKG1lJ3UpIH5oc358fmhzfiBY IGlzIGFtb25nIFkKCnx8CgpYIGFuZCBZIHJlcHJlc2VudCBoZXJlIHBsdXJhbCBjb25zdGFudHMg b3IgcGx1cmFsIHZhcmlhYmxlcy4gQSBjbHVzdGVyIHttZSBZIChtZSd1KX0gaXMgYSBzZWxicmkg aW4gTG9qYmFuIGdyYW1tYXIuIHttZSd1fSBpcyBhbiBlbGlkYWJsZSB0ZXJtaW5hdG9yIG9mIHN0 cnVjdHVyZSBiZWdpbm5pbmcgd2l0aCB7bWV9LgoKCgp7bWV9IGhhcyB0aGUgZm9sbG93aW5nIHBy b3BlcnRpZXMgd2l0aCBhcmJpdHJhcnkgYXJndW1lbnRzIFgsIFkgYW5kIFo6CgojIFggbWUgWCAo cmVmbGV4aXZpdHkpCgojIFggbWUgWSBpamVibyBZIG1lIFogaW5hamEgWCBtZSBaICh0cmFuc2l0 aXZpdHkpCgojIFggbWUgWSBpamVibyBZIG1lIFggaWpvIFggZHUgWSAoaWRlbnRpdHkpCgpUaGUg cHJvcGVydHkgMyBtZWFucyB0aGF0IHRoZSBpZGVudGl0eSBiZXR3ZWVuIHJlZmVyZW50cyBvZiBY IGFuZCBZIGlzIHJlcHJlc2VudGVkIHdpdGgge21lfSwgYXMgYSByZWxhdGlvbiB0aGF0IHtYIG1l IFkgaWplYm8gWSBtZSBYfS4KCgoKfHwKClggam8ndSBZIH5oc358fmhzfiBYIGFuZCBZCgp8fAoK e2pvJ3V9IGNvbWJpbmVzIHR3byBhcmd1bWVudHMgWCBhbmQgWSBpbnRvIG9uZSBwbHVyYWwgY29u c3RhbnQgb3Igb25lIHBsdXJhbCB2YXJpYWJsZS4KCgoKe2pvJ3V9IGhhcyB0aGUgZm9sbG93aW5n IHByb3BlcnRpZXMgd2l0aCBhcmJpdHJhcnkgYXJndW1lbnRzIFggYW5kIFk6CgojIFggbWUgWCBq byd1IFkKCiMgWCBqbyd1IFkgZHUgWSBqbyd1IFgKCiMgWCBqbyd1IFggZHUgWAoKVGhlIHByb3Bl cnR5IDIgbWVhbnMgdGhhdCB0aGUgcmVmZXJlbnQgb2YgdGhlIHdob2xlIGFyZ3VtZW50IGRvZXMg bm90IHZhcnkgd2hlbiB0d28gYXJndW1lbnRzIGNvbWJpbmVkIGJ5IHtqbyd1fSBhcmUgaW50ZXJj aGFuZ2VkIHdpdGggZWFjaCBvdGhlci4gVGhlIHByb3BlcnR5IDMgbWVhbnMgdGhhdCB7am8ndX0g ZG9lcyBub3QgYWRkIGFueSByZWZlcmVudCB3aGVuIGl0IGNvbWJpbmVzIGFuIGFyZ3VtZW50IHdp dGggaXRzZWxmLgoKCgpVc2luZyB7am8ndX0sIHRoZSBmb2xsb3dpbmcgZXhwcmVzc2lvbiBpcyBw b3NzaWJsZToKCl4KCjtFeGFtcGxlOiBCIGFuZCBDIGdhdGhlcmVkLCBjb29rZWQgYW5kIGF0ZS4K Cjs6IGJ5IGpvJ3UgY3kgam1hamkgZ2knZSBqdWtwYSBnaSdlIGNpdGthXgoKRWFjaCBvZiB7Ynl9 IGFuZCB7Y3l9IGlzIGEgcGx1cmFsIGNvbnN0YW50LgoKCgpUaGUgcHJlZGljYXRlIHtqdWtwYX0g KGNvb2spIGNhbiBiZSBpbnRlcnByZXRlZCBjb2xsZWN0aXZlbHkgYW5kL29yIGRpc3RyaWJ1dGl2 ZWx5LCBidXQgdGhlIHBsdXJhbCBjb25zdGFudCB7Ynkgam8ndSBjeX0gc2F5cyBub3RoaW5nIGFi b3V0IHdoZXRoZXIgaXQgc2F0aXNmaWVzIHtqdWtwYX0gY29sbGVjdGl2ZWx5IGFuZC9vciBkaXN0 cmlidXRpdmVseS4gSWYgd2Ugd2FudCB0byBtYWtlIGV4cGxpY2l0IHRoYXQgdGhleSBjb29rZWQg ImNvbGxlY3RpdmVseSIsIHdlIHNheSB7Ynkgam9pIGN5fSB1c2luZyB7am9pfSB0aGF0IHdpbGwg YmUgZGlzY3Vzc2VkIGluICgofCNSZWxhdGlvbl9iZXR3ZWVuX2pvX3Vfam9pX2NlX2FuZF9nYWRy aXxTZWN0aW9uIDMuNCkpLCBvciB7bHUnbyBieSBqbyd1IGN5fSB1c2luZyB7bHUnb30gdGhhdCB3 aWxsIGJlIGRpc2N1c3NlZCBpbiAoKHwjUmVsYXRpb25fYmV0d2Vlbl9sdV9hX2x1X29fbHVfaV9h bmRfZ2Fkcml8U2VjdGlvbiAzLjMpKS4gQ29udHJhc3RpdmVseSwgaWYgd2Ugd2FudCB0byBtYWtl IGV4cGxpY2l0IHRoYXQgdGhleSBjb29rZWQgImRpc3RyaWJ1dGl2ZWx5Iiwgd2Ugc2F5ICB7bHUn YSBieSBqbyd1IGN5fSB1c2luZyB7bHUnYX0gdGhhdCB3aWxsIGJlIGRpc2N1c3NlZCBpbiAoKHwj UmVsYXRpb25fYmV0d2Vlbl9sdV9hX2x1X29fbHVfaV9hbmRfZ2Fkcml8U2VjdGlvbiAzLjMpKS4g SG93ZXZlciwgdGhlc2UgYXJndW1lbnRzIHRoYXQgc2F5cyBleHBsaWNpdGx5IGNvbGxlY3Rpdml0 eSBhbmQvb3IgZGlzdHJpYnV0aXZpdHkgYXJlIG5vdCBhbHdheXMgY29tbW9ubHkgdXNlZCBmb3Ig b3RoZXIgcHJlZGljYXRlcyBsaWtlIHtqbWFqaX0gb3Ige2NpdGthfS4KCgoKVGhlIGRpYWdyYW0g YmVsb3cgc2hvd3MgcmVsYXRpb25zIGNvbnN0cnVjdGVkIHdpdGgge21lfSBhbmQge2pvJ3V9IHJl cHJlc2VudGVkIHdpdGggYSBkaXJlY3RlZCBncmFwaCwgaW4gd2hpY2ggdGhlIHZlcnRpY2VzIHJl cHJlc2VudCBwbHVyYWwgY29uc3RhbnRzLgoKCgp7aW1nIGZpbGVJZD0iNyIgdGh1bWI9InkiIHJl bD0iYm94W2ddIn0KCgoKISEhISMgSW5kaXZpZHVhbAoKUmVmZXJlbnQgb2YgYSBwbHVyYWwgY29u c3RhbnQgaXMgbm90IG5lY2Vzc2FyaWx5IHBsdXJhbDogYSBwbHVyYWwgY29uc3RhbnQgY2FuIHJl ZmVyIHRvIG9uZSBpbmRpdmlkdWFsLgoKX19BbiBpbmRpdmlkdWFsX18gaXMgZGVmaW5lZCBhcyBm b2xsb3dzOgoKfHwKCl9fWCBpcyBhbiBpbmRpdmlkdWFsX18gfmhzfnx+aHN+ID1jYSdlIH5oc358 fmhzfiBybydvaSBkYSBwb2kga2UnYSBtZSBYIHpvJ3UgWCBtZSBkYQoKfHwKCgoKd2hlcmUgX19y bydvaV9fIGlzIGFuIGV4cGVyaW1lbnRhbCBjbWF2byBwcm9wb3NlZCBieSAoKHhvcnhlc3xsYSB4 b3J4ZXMpKSwgd2hpY2ggaXMgYSBwbHVyYWwgcXVhbnRpZmllciBtZWFuaW5nICJhbGwiLiAge3Jv J29pIGRhfSBpcyBhIGJvdW5kIHBsdXJhbCB2YXJpYWJsZSBtZWFuaW5nICJmb3IgYWxsIHRoYXQg Y2FuIGJlIHN1YnN0aXR1dGVkIGZvciB7ZGF9Ii4gVGhpcyBkZWZpbml0aW9uIG1lYW5zIHRoYXQg WCBpcyBjYWxsZWQgYW4gaW5kaXZpZHVhbCB3aGVuIHRoZSBjb25kaXRpb24gImZvciBhbGwge2Rh fSB0aGF0IGFyZSBhbW9uZyBYLCBYIGlzIGFtb25nIHtkYX0iIGlzIHNhdGlzZmllZC4gSW4gb3Ro ZXIgd29yZHMsICJpbiB0aGUgdW5pdmVyc2Ugb2YgZGlzY291cnNlLCBub3RoaW5nIG90aGVyIHRo YW4ge1h9IGNhbiBiZSBzdWJzdGl0dXRlZCBmb3Ige2RhfSBzdWNoIHRoYXQge1ggbWUgZGF9IiBp cyBleHByZXNzZWQgYnkgIlggaXMgYW4gaW5kaXZpZHVhbCIuCgoKCldoZW4gZWFjaCBvZiBYIGFu ZCBZIGlzIGFuIGluZGl2aWR1YWwgYW5kIFggaXMgbm90IGVxdWFsIHRvIFksIHtYIGpvJ3UgWX0g aXMgY2FsbGVkIF9faW5kaXZpZHVhbHNfXy4gV2hlbiBlYWNoIG9mIFggYW5kIFkgaXMgYW4gaW5k aXZpZHVhbCBvciBpbmRpdmlkdWFscywge1ggam8ndSBZfSBpcyBjYWxsZWQgaW5kaXZpZHVhbHMg YXMgd2VsbC4KCgoKISEhISMgRGlmZmVyZW5jZSBiZXR3ZWVuIHBsdXJhbCBhbmQgc2luZ3VsYXIK CkEgcGx1cmFsIGNvbnN0YW50IHRoYXQgcmVmZXJzIHRvIGEgc2luZ2xlIGluZGl2aWR1YWwgaXMg Y2FsbGVkIGEgX19zaW5ndWxhciBjb25zdGFudF9fLgoKCgpVbmxlc3MgWD1ZIGFuZCBYIGlzIGFu IGluZGl2aWR1YWwsIG5vIG1hdHRlciB3aGV0aGVyIGVhY2ggb2YgWCBhbmQgWSBpcyBwbHVyYWwg b3Igc2luZ3VsYXIsIHtYIGpvJ3UgWX0gaXMgbm90IGEgc2luZ3VsYXIgY29uc3RhbnQuIEl0IGlz IGJlY2F1c2UgCgpeWCBtZSBYIGpvJ3UgWSBpamVuYWkgWCBqbyd1IFkgbWUgWF4KCmhvbGRzIHRy dWUsIGFuZCB0aGVuIHtYIGpvJ3UgWX0gZG9lcyBub3Qgc2F0aXNmeSB0aGUgY29uZGl0aW9uIG9m IGFuIGluZGl2aWR1YWwge3JvJ29pIGRhIHBvaSBrZSdhIG1lIFggam8ndSBZIHpvJ3UgWCBqbyd1 IFkgbWUgZGF9LgoKCgohISEhIyBCb3VuZCBzaW5ndWxhciB2YXJpYWJsZQoKV2hlbiB0aGUgZG9t YWluIG9mIGEgYm91bmQgcGx1cmFsIHZhcmlhYmxlIGlzIHJlc3RyaWN0ZWQgdG8gd2hhdCBpcyBh biBpbmRpdmlkdWFsLCB0aGUgdmFyaWFibGUgaXMgY2FsbGVkIF9fYm91bmQgc2luZ3VsYXIgdmFy aWFibGVfXy4gQSBib3VuZCBzaW5ndWxhciB2YXJpYWJsZSBjYW5ub3QgdGFrZSBtb3JlIHRoYW4g b25lIGluZGl2aWR1YWwgdmFsdWUgYXQgYSB0aW1lLgoKe3JvIGRhfSAoZm9yIGFsbCB7ZGF9KSBh bmQge3N1J28gZGF9ICh0aGVyZSBpcyBhdCBsZWFzdCBvbmUge2RhfSksIHdoaWNoIGFyZSBvZmZp Y2lhbGx5IGRlZmluZWQgaW4gTG9qYmFuLCBhcmUgYm91bmQgc2luZ3VsYXIgdmFyaWFibGVzLiBU aGV5IGNhbiBiZSBkZWZpbmVkIHdpdGggYm91bmQgcGx1cmFsIHZhcmlhYmxlcyBhcyBmb2xsb3dz OgoKfHwKCnJvIGRhIH5oc358fmhzfiBybydvaSBkYSBwb2kgcm8nb2kgZGUgcG9pIGRlIG1lIGRh IHpvJ3UgZGEgbWUgZGUKCnN1J28gZGEgfmhzfnx+aHN+IHN1J29pIGRhIHBvaSBybydvaSBkZSBw b2kgZGUgbWUgZGEgem8ndSBkYSBtZSBkZQoKfHwKCl9fc3Unb2lfXyBpcyBhbiBleHBlcmltZW50 YWwgY21hdm8gcHJvcG9zZWQgYnkgKCh4b3J4ZXN8bGEgeG9yeGVzKSksIGFuZCBpcyBhIHBsdXJh bCBxdWFudGlmaWVyIG1lYW5pbmcgInRoZXJlIGlzL2FyZSIuIE5vdGUgdGhhdCB7c3Unb2l9IGlz IF9fbm90X18gImF0IGxlYXN0IG9uZSIuIHtzdSdvaSBkYX0gaXMgYSBib3VuZCBwbHVyYWwgdmFy aWFibGUgbWVhbmluZyAidGhlcmUgaXMvYXJlIHtkYX0iLgoKCgohISEhIyBXaGF0IGlzIG5laXRo ZXIgYW4gaW5kaXZpZHVhbCBub3IgaW5kaXZpZHVhbHMKClJlZmVyZW50IG9mIGEgcGx1cmFsIGNv bnN0YW50IGlzIG5vdCBuZWNlc3NhcmlseSBhbiBpbmRpdmlkdWFsIG9yIGluZGl2aWR1YWxzLiAK Ckl0IGlzIHBvc3NpYmxlIHRvIGRpc2N1c3MgYSB1bml2ZXJzZSBvZiBkaXNjb3Vyc2Ugc3VjaCB0 aGF0IHJlZmVyZW50IG9mIGEgcGx1cmFsIGNvbnN0YW50IGlzIG5laXRoZXIgYW4gaW5kaXZpZHVh bCBub3IgaW5kaXZpZHVhbHMuCgoKCkZvciBleGFtcGxlLCBjb25zaWRlciBzdWNoIGEgdW5pdmVy c2Ugb2YgZGlzY291cnNlIGluIHdoaWNoIHRoZSBmb2xsb3dpbmcgcHJvcG9zaXRpb24gaG9sZHMg dHJ1ZS4KCl5ybydvaSBkYSBwb2kga2UnYSBtZSBrbydhIGt1J28gc3Unb2kgZGUgem8ndSBkZSBt ZSBkYSBpamVuYWkgZGEgbWUgZGUgfi0tfiBDb25kaXRpb25fMV4KCkluIG90aGVyIHdvcmRzLCBp biB0aGlzIHVuaXZlcnNlIG9mIGRpc2NvdXJzZSwgZm9yIGFsbCBYIHN1Y2ggdGhhdCB7WCBtZSBr bydhfSwgdGhlcmUgaXMgYWx3YXlzIFkgc3VjaCB0aGF0IHtZIG1lIFh9IGFuZCBub3Qge1ggbWUg WX0uCgoKCjtUaGVvcmVtOiBJbiBhIHVuaXZlcnNlIG9mIGRpc2NvdXJzZSB3aGVyZSBDb25kaXRp b25fMSBpcyB0cnVlLCB7a28nYX0gaXMgbmVpdGhlciBhbiBpbmRpdmlkdWFsIG5vciBpbmRpdmlk dWFscy4KCgoKO1Byb29mOiBTdXBwb3NlIHtrbydhfSBpcyBhbiBpbmRpdmlkdWFsLiBGcm9tIHRo ZSBkZWZpbml0aW9uIG9mICJhbiBpbmRpdmlkdWFsIjoKCl5ybydvaSBkYSBwb2kga2UnYSBtZSBr bydhIHpvJ3Uga28nYSBtZSBkYSB+LS1+IFN1cHBvc2l0aW9uXzJeCgpSZXBsYWNlIHtybydvaSBk YX0gd2l0aCB7bmFrdSBzdSdvaSBkYSBuYWt1fToKCl5uYWt1IHN1J29pIGRhIHBvaSBrZSdhIG1l IGtvJ2Ega3UnbyBuYWt1IHpvJ3Uga28nYSBtZSBkYSB+LS1+IFN1cHBvc2l0aW9uXzItMV4KCk1v dmUgdGhlIGlubmVyLW1vc3Qge25ha3V9IGludG8gdGhlIHByb3Bvc2l0aW9uOgoKXm5ha3Ugc3Un b2kgZGEgcG9pIGtlJ2EgbWUga28nYSB6byd1IG5ha3Uga28nYSBtZSBkYSB+LS1+IFN1cHBvc2l0 aW9uXzItMl4KClJlcGxhY2Uge3N1J29pIGRhIHBvaX0gd2l0aCB7aWplfSBhbmQgbW92ZSBpbnRv IHRoZSBwcm9wb3NpdGlvbjoKCl5uYWt1IHN1J29pIGRhIHpvJ3UgZGEgbWUga28nYSBpamUgbmFr dSBrbydhIG1lIGRhIH4tLX4gU3VwcG9zaXRpb25fMi0zXgoKUmVwbGFjZSB7aWplIG5ha3V9IHdp dGgge2lqZW5haX06CgpebmFrdSBzdSdvaSBkYSB6byd1IGRhIG1lIGtvJ2EgaWplbmFpIGtvJ2Eg bWUgZGEgfi0tfiBTdXBwb3NpdGlvbl8yLTReCgpCeSB0aGUgd2F5LCBmcm9tIGEgcHJvcGVydHkg b2Yge21lfSwKCl5rbydhIG1lIGtvJ2EgXgoKaXMgYWx3YXlzIHRydWUuIHtrbydhfSBpcyB0aGVy ZWZvcmUgaW4gdGhlIGRvbWFpbiBvZiB7ZGF9IG9mIENvbmRpdGlvbl8xLiBSZXBsYWNlIHtybydv aSBkYX0gb2YgQ29uZGl0aW9uXzEgd2l0aCB7a28nYX0sIGFuZCBpdCB0aHVzIGhvbGRzIHRydWU6 Cgpec3Unb2kgZGUgem8ndSBkZSBtZSBrbydhIGlqZW5haSBrbydhIG1lIGRlIH4tLX4gQ29uZGl0 aW9uXzEtMV4KCkNvbmRpdGlvbl8xLTEgYW5kIFN1cHBvc2l0aW9uXzItNCBjb250cmFkaWN0IGVh Y2ggb3RoZXIuCgpTdXBwb3NpdGlvbl8yIGlzIHRodXMgcmVqZWN0ZWQgYnkgcmVkdWN0aW8gYWQg YWJzdXJkdW0uCgpJdCBtZWFucyB0aGF0IHtrbydhfSBpcyBub3QgYW4gaW5kaXZpZHVhbC4KCgoK TW9yZW92ZXIsIHdoZW4ge2tvJ2F9IGlzIGV4cGFuZGVkIHRvIHtBIGpvJ3UgQn0sIGZyb20gYSBw cm9wZXJ0eSBvZiB7am8ndX0sIHRoZSBmb2xsb3dpbmcgcHJvcG9zaXRpb25zIGhvbGQgdHJ1ZToK Cl5BIG1lIGtvJ2F+cHB+Cgp+L3BwfkIgbWUga28nYV4KCkVhY2ggb2YgQSBhbmQgQiBpcyBpbiB0 aGUgZG9tYWluIG9mIHtkYX0gb2YgQ29uZGl0aW9uXzEuIENvbnNpZGVyaW5nIHNpbWlsYXJseSB0 byBDb25kaXRpb25fMS0xLCBuZWl0aGVyIEEgbm9yIEIgaXMgYW4gaW5kaXZpZHVhbC4ge2tvJ2F9 IGlzIHRodXMgbm90IGluZGl2aWR1YWxzLgoKUS5FLkQuCgoKCldoZW4ge2tvJ2F9IGlzIG5laXRo ZXIgYW4gaW5kaXZpZHVhbCBub3IgaW5kaXZpZHVhbHMsIHdoYXQgYWN0dWFsbHkgZG9lcyBpdCBy ZWZlciB0bz8KCldlIG1heSBpbnRlcnByZXQgdGhhdCBpdCByZWZlcnMgdG8gd2hhdCBpcyByZWZl cnJlZCB0byBieSBhIG1hdGVyaWFsIG5vdW4sIGZvciBleGFtcGxlLgoKQnkgYSBzcGVha2VyIHdo byB0aGlua3MgdGhhdCBhIGN1dC1vZmYgcGllY2Ugb2YgYnJlYWQgaXMgYWxzbyBicmVhZCwgYnJl YWQgaXMgcmVnYXJkZWQgYXMgbmVpdGhlciBhbiBpbmRpdmlkdWFsIG5vciBpbmRpdmlkdWFscy4K CgoKW2h0dHA6Ly9ndXNrYW50LmdpdGh1Yi5pby9sb2piby9qZXRudWphcmNvLmh0bWx8KEkgd3Jv dGUgdGhlIHNhbWUgcHJvb2Ygb25seSBpbiBMb2piYW4uKV0KCgoKISEhISMgQSBsb2dpY2FsIGF4 aW9tIG9uIHBsdXJhbCBjb25zdGFudAoKVGhlIGZvbGxvd2luZyBsb2dpY2FsIGF4aW9tIGlzIGdp dmVuIHRvIGFuIGFyYml0cmFyeSBwbHVyYWwgY29uc3RhbnQgQzoKCl5nYW5haSBDIGJyb2RhIGdp IHN1J29pIGRhIHpvJ3UgZGEgYnJvZGFeCgoKCkl0IG1lYW5zICJpbiBhIHVuaXZlcnNlIG9mIGRp c2NvdXJzZSwgaWYgYSBwcm9wb3NpdGlvbiBpbiB3aGljaCBhIHBsdXJhbCBjb25zdGFudCBpcyB4 MSBvZiB7YnJvZGF9IGhvbGRzIHRydWUsIHRoZXJlIGlzIHJlZmVyZW50IHRoYXQgaXMgeDEgb2Yg e2Jyb2RhfSIuCgoKClRoYXQgaXMgdG8gc2F5LCBhbiBhcmd1bWVudCB0aGF0IGhhcyBubyByZWZl cmVudCBpbiBhIHVuaXZlcnNlIG9mIGRpc2NvdXJzZSBjYW5ub3QgYmUgcmVwcmVzZW50ZWQgYnkg YSBwbHVyYWwgY29uc3RhbnQuIEFuIGFyZ3VtZW50IHRoYXQgaGFzIG5vIHJlZmVyZW50IGlzIGV4 cHJlc3NlZCBpbiB0aGUgZm9ybSB7bmFrdSBzdSdvaSBkYX0sIHdoaWNoIGlzIGEgbmVnYXRpb24g b2YgYSBib3VuZCBwbHVyYWwgdmFyaWFibGUge3N1J29pIGRhfSBtZWFuaW5nICJ0aGVyZSBpcy9h cmUiLgoKCgohISMgRGVmaW5pdGlvbiBvZiBnYWRyaQoKO19fbG9fXyAoTEUpOiBJdCBpcyBwcmVm aXhlZCB0byBzZWxicmksIGFuZCBmb3JtcyBhIHBsdXJhbCBjb25zdGFudCB0aGF0IHJlZmVycyB0 byB3aGF0IHNhdGlzZmllcyB4MSwgdGhlIGZpcnN0IHBsYWNlIG9mIHRoZSBzZWxicmkuIElmIGEg cXVhbnRpZmllciBmb2xsb3dzIHtsb30sIHRoZSBxdWFudGlmaWVyIHJlcHJlc2VudHMgdGhlIGNv dW50IG9mIGFsbCB0aGUgcmVmZXJlbnRzIG9mIHRoZSBwbHVyYWwgY29uc3RhbnQuIEluIHRoZSBj YXNlIHRoYXQgYSBxdWFudGlmaWVyIGZvbGxvd3Mge2xvfSwgYSBzdW10aSBtYXkgZm9sbG93IGl0 LiBJbiB0aGlzIGNhc2UsIGl0IGZvcm1zIGEgcGx1cmFsIGNvbnN0YW50IHRoYXQgcmVmZXJzIHRv IHdoYXQgaXMvYXJlIGFtb25nICcnc3VtdGknJy4KCnx8CgpsbyBbW1BBXSBicm9kYSAoa3UpIH5o c358fmhzfiB6bydlIG5vaSBrZSdhIGJyb2RhIFtbZ2knZSB6aWxrYW5jdSBsaSBQQSBsbyBicm9k YV0gKGt1J28pIH5oc358fmhzfiB3aGF0IGlzL2FyZSBicm9kYSBbW3RoYXQgaXMvYXJlIFBBIGlu IHRvdGFsXQoKbG8gUEEgJydzdW10aScnIChrdSkgfmhzfnx+aHN+IGxvIFBBIG1lICcnc3VtdGkn JyAobWUndSkgKGt1KSB+aHN+fH5oc34gd2hhdCBpcy9hcmUgYW1vbmcgJydzdW10aScnLCBhbmQg UEEgaW4gdG90YWwKCnx8Cgp7a3V9LCB7a3Unb30sIHttZSd1fSBhcmUgZWxpZGFibGUgdGVybWlu YXRvcnMuCgoKClB1dHRpbmcgYSBxdWFudGlmaWVyIGFmdGVyIGdhZHJpIGxpa2Uge2xvIFBBfSBp cyBjYWxsZWQgX19pbm5lciBxdWFudGlmaWNhdGlvbl9fLCBhbmQgdGhlIHF1YW50aWZpZXIgaXMg Y2FsbGVkIF9faW5uZXIgcXVhbnRpZmllcl9fLiBBbHRob3VnaCB0aGUgdGVybSAicXVhbnRpZnki IGlzIGludm9sdmVkLCBpdCBpcyBkaWZmZXJlbnQgZnJvbSBxdWFudGlmaWNhdGlvbiBvZiBsb2dp Yy4gSW5uZXIgcXVhbnRpZmljYXRpb24gZG9lcyBub3QgaW52b2x2ZSBjb3VudGluZyByZWZlcmVu dHMgb2YgY29uc3RhbnRzIHRoYXQgY2FuIGJlIHN1YnN0aXR1dGVkIGZvciBhIHZhcmlhYmxlLCBi dXQgY291bnRpbmcgYWxsIHRoZSByZWZlcmVudHMgb2Ygb25lIHBsdXJhbCBjb25zdGFudC4gSW5u ZXIgcXVhbnRpZmljYXRpb24gd2lsbCBiZSBkaXNjdXNzZWQgbW9yZSBwcmVjaXNlbHkgaW4gKCh8 I0lubmVyX3F1YW50aWZpY2F0aW9ufFNlY3Rpb24gMy4xKSkuCgoKCk9uIHRoZSBvdGhlciBoYW5k LCBwdXR0aW5nIGEgcXVhbnRpZmllciBiZWZvcmUgZ2FkcmksIG9yIGJlZm9yZSBhIHN1bXRpIG1v cmUgZ2VuZXJhbGx5LCBpcyBjYWxsZWQgX19vdXRlciBxdWFudGlmaWNhdGlvbl9fLCBhbmQgdGhl IHF1YW50aWZpZXIgaXMgY2FsbGVkIF9fb3V0ZXIgcXVhbnRpZmllcl9fLiBPdXRlciBxdWFudGlm aWNhdGlvbiB3aWxsIGJlIGRpc2N1c3NlZCBtb3JlIHByZWNpc2VseSBpbiAoKHwjT3V0ZXJfcXVh bnRpZmljYXRpb258U2VjdGlvbiAzLjIpKS4KCgoKQWxsIHN1bXRpIGZvcm1lZCB3aXRoIGdhZHJp IGFyZSBkZWZpbmVkIHNvIHRoYXQgdGhleSBhcmUgZXhwYW5kZWQgaW50byBleHByZXNzaW9ucyB3 aXRoIHt6bydlfS4gVGhhdCBpcyB0byBzYXksIHRoZSBtb3N0IGdlbmVyYWwgcGx1cmFsIGNvbnN0 YW50IGlzIHJlcHJlc2VudGVkIGJ5IGEgc2luZ2xlIHt6bydlfS4gQSBzdW10aSBmb3JtZWQgd2l0 aCBnYWRyaSBpcyB7em8nZX0gYWNjb21wYW5pZWQgYnkgYW4gZXhwbGFuYXRpb24uCgpeCgo7RXhh bXBsZTogUGVvcGxlIGdhdGhlcmVkLCBjb29rZWQgYW5kIGF0ZS4KCjs6IGxvIHByZW51IGN1IGpt YWppIGdpJ2UganVrcGEgZ2knZSBjaXRrYV4KCgoKV2hpbGUgdGhlIHByZWRpY2F0ZSB7anVrcGF9 IChjb29rKSBjYW4gYmUgaW50ZXJwcmV0ZWQgY29sbGVjdGl2ZWx5IGFzIHdlbGwgYXMgZGlzdHJp YnV0aXZlbHksIHRoZSBwbHVyYWwgY29uc3RhbnQge2xvIHByZW51fSAocGVvcGxlKSBkb2VzIG5v dCBzYXkgZXhwbGljaXRseSBpZiBpdCBzYXRpc2ZpZXMge2p1a3BhfSBjb2xsZWN0aXZlbHkgb3Ig ZGlzdHJpYnV0aXZlbHkuIElmIHdlIHdhbnQgdG8gc2F5IGV4cGxpY2l0bHkgdGhhdCB0aGV5ICJj b2xsZWN0aXZlbHkiIGNvb2tlZCwgd2UgdXNlIHtsb2l9LCB3aGljaCB3aWxsIGJlIGRpc2N1c3Nl ZCBsYXRlciwgYW5kIHNheSB7bG9pIHByZW51fS4gQ29udHJhc3RpdmVseSwgaWYgd2Ugd2FudCB0 byBzYXkgZXhwbGljaXRseSB0aGF0IHRoZXkgImRpc3RyaWJ1dGl2ZWx5IiBjb29rZWQsIHdlIHNh eSB7cm8gbG8gcHJlbnV9IHdpdGggYW4gb3V0ZXIgcXVhbnRpZmljYXRpb24sIG9yIHtsdSdhIGxv IHByZW51fS4gSG93ZXZlciwgYSBzdW10aSB0aGF0IHNheXMgZXhwbGljaXRseSBjb2xsZWN0aXZp dHkgb3IgZGlzdHJpYnV0aXZpdHkgaXMgbm90IG5lY2Vzc2FyaWx5IGFibGUgdG8gYmUgc2hhcmVk IHdpdGggb3RoZXIgcHJlZGljYXRlIGxpa2Uge2ptYWppfSBvciB7Y2l0a2F9LgoKCgo7X19sZV9f IChMRSk6IHtsZSBicm9kYX0gcmVmZXJzIF9fc3BlY2lmaWNhbGx5X18gdG8gYSByZWZlcmVudCBv ZiB7bG8gYnJvZGF9LCBhbmQgX19leHBsaWNpdGx5IGV4cHJlc3MgdGhhdCB0aGUgc3BlYWtlciBo YXMgdGhlIHJlZmVyZW50IGluIG1pbmRfXy4gSXRzIGxvZ2ljYWwgcHJvcGVydHkgaXMgdGhlIHNh bWUgYXMgdGhhdCBvZiB7bG99LgoKfHwKCmxlIFtbUEFdIGJyb2RhIChrdSkgfmhzfnx+aHN+IHpv J2Ugbm9pIG1pIGtlJ2EgZG8gc2tpY3UgbG8ga2EgY2UndSBicm9kYSBbW2dpJ2Ugemlsa2FuY3Ug bGkgUEEgbG8gYnJvZGFdIChrdSdvKSAKCmxlIFBBICcnc3VtdGknJyAoa3UpIH5oc358fmhzfiBs ZSBQQSBtZSAnJ3N1bXRpJycgKG1lJ3UpIChrdSkKCnx8CgoKCjtfX2xhX18gKExBKTogSXQgaXMg cHJlZml4ZWQgdG8gc2VsYnJpIG9yIGNtZXZsYSwgYW5kIGZvcm1zIGEgcGx1cmFsIGNvbnN0YW50 IHRoYXQgcmVmZXJzIHRvIHdoYXQgaXMgbmFtZWQgdGhlIHNlbGJyaSBvciBjbWV2bGEgc3RyaW5n LiBJdHMgbG9naWNhbCBwcm9wZXJ0eSBpcyB0aGUgc2FtZSBhcyB0aGF0IG9mIHtsb30uCgp8fAoK bGEgW1tQQV0gYnJvZGEgKGt1KSB+aHN+fH5oc34gem8nZSBub2kgbHUgW1tQQV0gYnJvZGEgbGkn dSBjbWVuZSBrZSdhIG1pIChrdSdvKSAKCmxhIFBBICcnc3VtdGknJyAoa3UpIH5oc358fmhzfiB6 bydlIG5vaSBsdSBQQSBzdW10aSBsaSd1IGNtZW5lIGtlJ2EgbWkgKGt1J28pIAoKfHwKCgoKO19f bG9pX18gKExFKSwgX19sZWlfXyAoTEUpLCBfX2xhaV9fIChMQSk6IHtsb2kvbGVpL2xhaSBicm9k YX0gcmVmZXJzIHRvIGEgcmVmZXJlbnQgb2Yge2xvL2xlL2xhIGJyb2RhfSwgYW5kIF9fZXhwbGlj aXRseSBleHByZXNzIHRoYXQgdGhlIHJlZmVyZW50IHNhdGlzZmllcyBhIHByZWRpY2F0ZSBjb2xs ZWN0aXZlbHlfXy4KCnx8Cgpsb2kgW1tQQV0gYnJvZGEgfmhzfnx+aHN+IGxvIGd1bm1hIGJlIGxv IFtbUEFdIGJyb2RhCgpsZWkgW1tQQV0gYnJvZGEgfmhzfnx+aHN+IGxvIGd1bm1hIGJlIGxlIFtb UEFdIGJyb2RhCgpsYWkgW1tQQV0gYnJvZGEgfmhzfnx+aHN+IGxvIGd1bm1hIGJlIGxhIFtbUEFd IGJyb2RhCgpsb2kgUEEgJydzdW10aScnIH5oc358fmhzfiBsbyBndW5tYSBiZSBsbyBQQSAnJ3N1 bXRpJycKCmxlaSBQQSAnJ3N1bXRpJycgfmhzfnx+aHN+IGxvIGd1bm1hIGJlIGxlIFBBICcnc3Vt dGknJwoKbGFpIFBBICcnc3VtdGknJyB+aHN+fH5oc34gbG8gZ3VubWEgYmUgbGEgUEEgJydzdW10 aScnCgp8fAoKQmVjYXVzZSB7bG9pL2xlaS9sYWl9IGlzIHRodXMgZGVmaW5lZCBieSBhbm90aGVy IHBsdXJhbCBjb25zdGFudCB7bG8gZ3VubWEgYmUgbG8vbGUvbGF9LCBpdCBkb2VzIG5vdCByZWZl ciBkaXJlY3RseSB0byByZWZlcmVudCBvZiB7bG8gYnJvZGF9IG9yIHtsbyBQQSAnJ3N1bXRpJyd9 LCBidXQgcmVmZXJlbnQgb2Yge2xvIGd1bm1hfS4gVGhlcmVmb3JlLCBldmVuIGlmIHtsbyBicm9k YX0gb3Ige2xvIFBBICcnc3VtdGknJ30gaXMgbm90IGFuIGluZGl2aWR1YWwsIHtsb2kgYnJvZGF9 IG9yIHtsb2kgUEEgJydzdW10aScnfSBjYW4gYmUgYW4gaW5kaXZpZHVhbCB7bG8gZ3VubWF9IHVu ZGVyIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uOgoKXnJvJ29pIGRhIHBvaSBrZSdhIG1lIGxvIGd1 bm1hIGJlIGxvL2xlL2xhIFtbUEFdIGJyb2RhIHpvJ3UgbG8gZ3VubWEgYmUgbG8vbGUvbGEgW1tQ QV0gYnJvZGEgY3UgbWUgZGF+cHB+Cgp+L3BwfnJvJ29pIGRhIHBvaSBrZSdhIG1lIGxvIGd1bm1h IGJlIGxvL2xlL2xhIFBBICcnc3VtdGknJyB6byd1IGxvIGd1bm1hIGJlIGxvL2xlL2xhIFBBICcn c3VtdGknJyBjdSBtZSBkYV4KCgoKO19fbG8naV9fIChMRSksIF9fbGUnaV9fIChMRSksIF9fbGEn aV9fIChMQSk6IHtsbydpL2xlJ2kvbGEnaSBicm9kYX0gcmVmZXJzIHRvIGEgc2V0IG9yIHNldHMg b2YgaW5kaXZpZHVhbChzKSB0aGF0IGNvbnN0aXR1dGUocykgYSBwbHVyYWwgY29uc3RhbnQge2xv L2xlL2xhIGJyb2RhfS4gQmVjYXVzZSB7bG8naS9sZSdpL2xhJ2l9IGZvcm1zIGEgc2V0IG9yIHNl dHMsIGl0IGlzIGRlZmluZWQgb25seSB3aGVuIGl0cy90aGVpciBtZW1iZXIocykge2xvL2xlL2xh IGJyb2RhfSBpcy9hcmUgYW4gaW5kaXZpZHVhbCBvciBpbmRpdmlkdWFscy4gQSBzZXQgaXRzZWxm IGlzIGFsd2F5cyBhbiBpbmRpdmlkdWFsLCBhbmQgc2V0cyBhcmUgYWx3YXlzIGluZGl2aWR1YWxz OiB0aGVyZSBpcyBubyBzZXQgdGhhdCBpcyBub3QgYW4gaW5kaXZpZHVhbC4KCnx8CgpsbydpIFtb UEFdIGJyb2RhIH5oc358fmhzfiBsbyBzZWxjbWkgYmUgbG8gW1tQQV0gYnJvZGEKCmxlJ2kgW1tQ QV0gYnJvZGEgfmhzfnx+aHN+IGxvIHNlbGNtaSBiZSBsZSBbW1BBXSBicm9kYQoKbGEnaSBbW1BB XSBicm9kYSB+aHN+fH5oc34gbG8gc2VsY21pIGJlIGxhIFtbUEFdIGJyb2RhCgpsbydpIFBBICcn c3VtdGknJyB+aHN+fH5oc34gbG8gc2VsY21pIGJlIGxvIFBBICcnc3VtdGknJwoKbGUnaSBQQSAn J3N1bXRpJycgfmhzfnx+aHN+IGxvIHNlbGNtaSBiZSBsZSBQQSAnJ3N1bXRpJycKCmxhJ2kgUEEg JydzdW10aScnIH5oc358fmhzfiBsbyBzZWxjbWkgYmUgbGEgUEEgJydzdW10aScnCgp8fAoKQmVj YXVzZSB7bG8naS9sZSdpL2xhJ2l9IGlzIGRlZmluZWQgYnkgYW5vdGhlciBwbHVyYWwgY29uc3Rh bnQge2xvIHNlbGNtaSBiZSBsby9sZS9sYX0sIGl0IGRvZXMgbm90IHJlZmVyIGRpcmVjdGx5IHRv IHJlZmVyZW50IG9mIHtsbyBicm9kYX0gb3Ige2xvIFBBICcnc3VtdGknJ30sIGJ1dCByZWZlcmVu dCBvZiB7bG8gc2VsY21pfS4KCgoKSW4gc2V0IHRoZW9yeSwgYW4gZW1wdHkgc2V0IGlzIGRlZmlu ZWQgYXMge2xvIHNlbGNtaSBiZSBubyBkYX0sIGFuZCBhbiBleHByZXNzaW9uIHtsbyBubyBicm9k YX0gaXMgb2ZmaWNpYWxseSBtZWFuaW5nbGVzcyAoc2VlICgofCNJbm5lcl9xdWFudGlmaWNhdGlv bnxTZWN0aW9uIDMuMSkpLiBUaGlzIGltcGxpZXMgdGhhdCBhbiBlbXB0eSBzZXQgY2Fubm90IGJl IGV4cHJlc3NlZCB3aXRoIHtsbydpL2xlJ2kvbGEnaX0uIAoKCgpBY2NvcmRpbmcgdG8gW2h0dHA6 Ly9qYm92bGFzdGUubG9qYmFuLm9yZy9kaWN0L3NlbGNtaXxqYm92bGFzdGVdLCB7c2VsY21pfSBp cyBkZWZpbmVkIGFzIGZvbGxvd3M6fHwKCngxIHNlbGNtaSB4MiB+aHN+fH5oc34gPWNhJ2Ugfmhz fnx+aHN+IHgxIHNlIGNtaW1hIHJvIGxvIG1lIHgyIG1lJ3UgZSBubyBsbyBuYSBtZSB4MiB8fAoK SWYgd2UgYWNjZXB0IHRoaXMgZGVmaW5pdGlvbiwgYSBzZXQgcmVmZXJyZWQgdG8gYnkge2xvJ2kv bGUnaS9sYSdpfS1zdW10aSBjb25zaXN0cyBvZiBvbmx5IHRoZSByZWZlcmVudCBvZiB7bG8vbGUv bGEgW1tQQV0gYnJvZGF9IG9yIHtsby9sZS9sYSBQQSAnJ3N1bXRpJyd9LiBDb250cmFzdGl2ZWx5 LCBpZiB3ZSBkZWZpbmUgaXQgYXMge3NlbGNtaX09e3NlIGNtaW1hfSwgdGhlIHNldCBtYXkgaW5j bHVkZSB3aGF0IGlzL2FyZSBvdGhlciB0aGFuIHRoZSByZWZlcmVudCBvZiB7bG8vbGUvbGEgW1tQ QV0gYnJvZGF9IG9yIHtsby9sZS9sYSBQQSAnJ3N1bXRpJyd9LiBJdCBpcyBub3QgeWV0IG9mZmlj aWFsbHkgZGV0ZXJtaW5lZCB3aGljaCBpbnRlcnByZXRhdGlvbiBpcyB0byBiZSBhY2NlcHRlZC4K CgoKISEhIyBJbm5lciBxdWFudGlmaWNhdGlvbgoKKChCUEZLIFNlY3Rpb246IGdhZHJpfEJQRksg ZGVmaW5lcyBpbm5lciBxdWFudGlmaWNhdGlvbikpIGFzIGZvbGxvd3M6Cgp8fAoKbG8gW1tQQV0g YnJvZGEgfmhzfnx+aHN+IHpvJ2Ugbm9pIGtlJ2EgYnJvZGEgW1tnaSdlIHppbGthbmN1IGxpIFBB IGxvIGJyb2RhXQoKbG8gUEEgJydzdW10aScnIH5oc358fmhzfiBsbyBQQSBtZSAnJ3N1bXRpJycK Cnx8CgpUaGF0IGlzIHRvIHNheSwgaW5uZXIgcXVhbnRpZmllciBtZWFucyBudW1iZXIgb2YgcmVm ZXJlbnQgY291bnRlZCBieSB1bml0IHtsbyBicm9kYX0gb3Ige2xvIG1lICcnc3VtdGknJ30gdGhh dCBpcyB4MyBvZiB7emlsa2FuY3V9LiAKCkhvd2V2ZXIsIGluc3RlYWQgb2Yge3ppbGthbmN1fSwg dGhlIG1lYW5pbmcgb2Ygd2hpY2ggaXMgdG9vIHZhZ3VlIGZvciBkZWZpbml0aW9uLCBbaHR0cHM6 Ly9ncm91cHMuZ29vZ2xlLmNvbS9kL21zZy9sb2piYW4vUkF0RTdZay1kcXcveGkyaDZBMTdDdXNK fGFuIGlkZWEgb2YgcmVkZWZpbml0aW9uIHVzaW5nIHttZWl9IHdhcyBzdWdnZXN0ZWRdIGFzIGZv bGxvd3M6CgoKCjtBeGlvbSAxOiBybydvaSBkYSBzdSdvIHBhIG1laQoKO0RlZmluaXRpb246fHwK CihEMSkga28nYSBzdSdvIE4gbWVpIH5oc358fmhzfiA9Y2EnZSB+aHN+fH5oc34gc3Unb2kgZGEg cG9pIG1lIGtvJ2Ega3UnbyBzdSdvaSBkZSBwb2kgbWUga28nYSB6byd1IGdlIGRhIHN1J28gTi0x IG1laSBnaW5haSBkZSBtZSBkYQoKKEQyKSBrbydhIE4gbWVpIH5oc358fmhzfiA9Y2EnZSB+aHN+ fH5oc34ga28nYSBzdSdvIE4gbWVpIGdpJ2UgbmFpIHN1J28gTisxIG1laSAKCihEMykgbG8gUEEg YnJvZGEgfmhzfnx+aHN+ID1jYSdlIH5oc358fmhzfiB6bydlIG5vaSBrZSdhIFBBIG1laSBnaSdl IGJyb2RhCgp8fAoKCgpVc2luZyB0aGVzZSBkZWZpbml0aW9ucyBhbmQgQXhpb20gMSwgdGhlIGZv bGxvd2luZyB0aGVvcmVtIHdpbGwgYmUgcHJvdmVkLgoKXklmIGFuZCBvbmx5IGlmIHtrbydhIHBh IG1laX0sIHtrbydhfSBpcyBhbiBpbmRpdmlkdWFsLl4KCgoKO1Byb29mOiAoRDIpIGlzCgp8fAoK a28nYSBOIG1laQl8PXwga28nYSBzdSdvIE4gbWVpIGdpJ2UgbmFpIHN1J28gTisxIG1laSAKCgkJ fD18IGdlIGtvJ2Egc3UnbyBOIG1laSAtLS0tLShTMSkKCgkJfCB8IGdpIG5ha3Uga28nYSBzdSdv IE4rMSBtZWkgLS0tLS0oUzIpCgp8fAoKQXBwbHlpbmcgKEQxKSB0byAoUzIpLCAKCnx8CgooUzIp CQl8PXwgbmFrdSBzdSdvaSBkYSBwb2kgbWUga28nYSBrdSdvIHN1J29pIGRlIHBvaSBtZSBrbydh IHpvJ3UgCgoJCXwgfCBnZSBkYSBzdSdvIE4gbWVpIAoKCQl8IHwgZ2luYWkgZGUgbWUgZGEKCgkJ fD18IHJvJ29pIGRhIHBvaSBtZSBrbydhIGt1J28gcm8nb2kgZGUgcG9pIG1lIGtvJ2Egem8ndQoK CQl8IHwgbmFrdSBnZSBkYSBzdSdvIE4gbWVpIAoKCQl8IHwgZ2kgbmFrdSBkZSBtZSBkYQoKCQl8 PXwgcm8nb2kgZGEgcG9pIG1lIGtvJ2Ega3UnbyBybydvaSBkZSBwb2kgbWUga28nYSB6byd1CgoJ CXwgfCBnYW5haSBkYSBzdSdvIE4gbWVpIAoKCQl8IHwgZ2kgZGUgbWUgZGEKCnx8CgooRDIpIGlz IHRoZXJlZm9yZQoKfHwKCmtvJ2EgTiBtZWkJfD18IGdlIChTMSkgZ2kgKFMyKSAKCgkJfD18IGdl IGtvJ2Egc3UnbyBOIG1laQoKCQl8IHwgZ2kgcm8nb2kgZGEgcG9pIG1lIGtvJ2Ega3UnbyBybydv aSBkZSBwb2kgbWUga28nYSB6byd1CgoJCXwgfCBnYW5haSBkYSBzdSdvIE4gbWVpIAoKCQl8IHwg Z2kgZGUgbWUgZGEKCnx8CgpXaGVuIE49MSwKCnx8CgprbydhIHBhIG1laQl8PXwgZ2Uga28nYSBz dSdvIHBhIG1laQoKCQl8IHwgZ2kgcm8nb2kgZGEgcG9pIG1lIGtvJ2Ega3UnbyBybydvaSBkZSBw b2kgbWUga28nYSB6byd1CgoJCXwgfCBnYW5haSBkYSBzdSdvIHBhIG1laSAKCgkJfCB8IGdpIGRl IG1lIGRhIAoKfHwKCkJlY2F1c2Ugb2YgQXhpb20gMSwgaXQgaW1wbGllcwoKfHwKCmtvJ2EgcGEg bWVpCXw9fCBybydvaSBkYSBwb2kgbWUga28nYSBrdSdvIHJvJ29pIGRlIHBvaSBtZSBrbydhIHpv J3UgZGUgbWUgZGEKCnx8CgpUaGUgcmlnaHQgc2lkZSBpbXBsaWVzIHtybydvaSBkYSBwb2kga2Un YSBtZSBrbydhIHpvJ3Uga28nYSBtZSBkYX0sIHdoaWNoIGlzIHRoZSBjb25kaXRpb24gZm9yICJ7 a28nYX0gaXMgYW4gaW5kaXZpZHVhbCIuIEl0cyBjb252ZXJzZSBpcyBhbHNvIHRydWUuCgpRLkUu RC4KCgoKVGhlIGRpYWdyYW0gYmVsb3cgc2hvd3MgYSBwcm9jZWR1cmUgb2YgY291bnRpbmcgc29t ZXRoaW5nIHVwIHRvIGZvdXIgcmVwcmVzZW50ZWQgd2l0aCBhIGRpcmVjdGVkIGdyYXBoLiBJbiB0 aGlzIGRpYWdyYW0sIGxvb3BzIHN1Y2ggYXMge1ggbWUgWH0gYXJlIG9taXR0ZWQgZm9yIHNpbXBs aWNpdHksIHRob3VnaCB0aGV5IGV4aXN0LiBDb3VudGluZyB1cCBjb3JyZXNwb25kcyB0byBzZWxl Y3RpbmcgYSBzdWJncmFwaCBvZiBhIGRpcmVjdGVkIGdyYXBoIGZvcm1lZCB3aXRoIHttZX06IHRo ZSBzdWJncmFwaCB0aGF0IGhhcyBhIGZvcm0gb2YgdHJlZSB0aGF0IGluY2x1ZGVzIGFsbCBsZWF2 ZXMgKGNvbnN0YW50cyBlYWNoIG9mIHdoaWNoIGlzIGFuIGluZGl2aWR1YWwpIHRvIGJlIGNvdW50 ZWQsIGZvciBleGFtcGxlIHRoZSBwYXJ0IG9mIG1hZ2VudGEgY29sb3IgaW4gdGhlIGRpYWdyYW0u CgoKCntpbWcgZmlsZUlkPSIxMCIgdGh1bWI9InkiIHJlbD0iYm94W2ddIn0KCgoKISEhISMgUmVw ZWF0aW5nIGlubmVyIHF1YW50aWZpY2F0aW9uCgpCZWNhdXNlIHtsbyBQQSAnJ3N1bXRpJyd9IGlz IGRlZmluZWQsIHdlIGNhbiByZXBlYXQgaW5uZXIgcXVhbnRpZmljYXRpb24gdG8gZm9ybSBhbiBh cmd1bWVudC4KCl4KCjtFeGFtcGxlOiBsbyBtdWxubyBrYXJkeWdyaSBjdSBndW5tYSBsbyB2byBs b2kgcGFjaSBrYXJkYSB+aHN+ICcnQSBmdWxsIGRlY2sgY29uc2lzdHMgb2YgZm91ciBncm91cHMg b2YgdGhpcnRlZW4gY2FyZHMuJycKCjs6IHN1J28gZGEgem8ndSBsb2kgcmUgbG8naSBybyBtb2tj YSBub2kgc2VwbGkgcHkgbm9pIG1va2NhIGt1J28gZGEgY3UgcmVsY3VrdGFpIH5oc34gJydUd28g c2V0cyBvZiBwb2ludHMgdGhhdCBhcmUgZXF1aWRpc3RhbnQgZnJvbSBhIHBvaW50IFAgaXMgYSBk b3VibGUgY2lyY2xlLicnXgoKCgohISEhIyBQcm9ibGVtcyBvbiBpbm5lciBxdWFudGlmaWNhdGlv bgoKISEhISEjIENhbm5vdCBzYXkgemVybwoKCgpCZWNhdXNlIGFuIGFyZ3VtZW50IGZvcm1lZCBi eSBnYWRyaSBpcyBhIHBsdXJhbCBjb25zdGFudCwge2xvIGJyb2RhfSBpbXBsaWVzIHtzdSdvaSBk YSB6byd1IGRhIGJyb2RhfSBhY2NvcmRpbmcgdG8gdGhlIGxvZ2ljYWwgYXhpb20gb24gcGx1cmFs IGNvbnN0YW50IHNob3duIGluICgofCNBX2xvZ2ljYWxfYXhpb21fb25fcGx1cmFsX2NvbnN0YW50 fFNlY3Rpb24gMi4yLjYpKS4gVGhhdCBpcyB0byBzYXksIHRoZSBleHByZXNzaW9uIHtsbyBubyBi cm9kYX0gaW1wbGllcyAidGhlcmUgYXJlIHdoYXQgYXJlIGJyb2RhLCB3aGljaCBhcmUgY291bnRl ZCAwIiwgd2hpY2ggc2VlbXMgbWVhbmluZ2xlc3MuCgoKClRoaXMgbWVhbnMgdGhhdCBvZmZpY2lh bCBMb2piYW4gY2Fubm90IGV4cHJlc3MgbmVnYXRpb24gb2YgZXhpc3RlbmNlIG9mIHBsdXJhbCB2 YXJpYWJsZSB7bmFrdSBzdSdvaSBkYX0sIHdoaWNoIGlzIG5ldmVydGhlbGVzcyBuZWNlc3Nhcnks IGZvciBleGFtcGxlIGluIHRoZSBmb2xsb3dpbmcgc2l0dWF0aW9uOgoKCgpeIGxvIHhvIHByZW51 IGN1IGptYWppIGdpJ2UganVrcGEgZ2knZSBjaXRrYSB+aHN+fi0tfiBub35wcH4KCn4vcHB+Jyci SG93IG1hbnkgcGVvcGxlIGdhdGhlcmVkLCBjb29rZWQgYW5kIGF0ZT8iICJ6ZXJvLiInJ14KCgoK VGhpcyByZXNwb25zZSBpcyBhbiBhYmJyZXZpYXRlZCBmb3JtIG9mIHtsbyBubyBwcmVudSBjdSBq bWFqaSBnaSdlIGp1a3BhIGdpJ2UgY2l0a2F9LgoKCgpUaGlzIHByb3Bvc2l0aW9uIG1lYW5zIHRo YXQge2xvIG5vIHByZW51fSBzYXRpc2ZpZXMgc2VsYnJpIHtqbWFqaX0gY29sbGVjdGl2ZWx5IGFu ZCAoamUpIG5vbi1kaXN0cmlidXRpdmVseSwge2p1a3BhfSBjb2xsZWN0aXZlbHkgb3IgKGphKSBk aXN0cmlidXRpdmVseSwge2NpdGthfSBub24tY29sbGVjdGl2ZWx5IGFuZCAoamUpIGRpc3RyaWJ1 dGl2ZWx5LiBCZWNhdXNlIGl0IGluY2x1ZGVzIHNlbGJyaSB7am1haml9IHRvIGJlIHNhdGlzZmll ZCBub24tZGlzdHJpYnV0aXZlbHksIHRoZSBzdW10aSBjYW5ub3QgYmUgcmVwbGFjZWQgYnkgbmVn YXRpb24gb2YgZXhpc3RlbmNlIG9mIGJvdW5kIHNpbmd1bGFyIHZhcmlhYmxlIHtuYWt1IHN1J28g ZGF9PXtubyBkYX0uIE1vcmVvdmVyLCBiZWNhdXNlIGl0IGluY2x1ZGVzIHNlbGJyaSB7Y2l0a2F9 IHRvIGJlIHNhdGlzZmllZCBub24tY29sbGVjdGl2ZWx5LCB7bG99IG9mIHRoZSBzdW10aSBjYW5u b3QgYmUgcmVwbGFjZWQgYnkge2xvaX09e2xvIGd1bm1hIGJlIGxvfS4KCgoKRm9yIG1ha2luZyBz dWNoIGEgcHJvcG9zaXRpb24gbWVhbmluZ2Z1bCwgaXQgaXMgZXNzZW50aWFsIHRvIGdpdmUgYW4g ZXhwcmVzc2lvbiB7bG8gbm8gYnJvZGF9IGEgbWVhbmluZyBvZiBuZWdhdGlvbiBvZiBleGlzdGVu Y2Ugb2YgcGx1cmFsIHZhcmlhYmxlLgoKRm9yIHRoaXMgcHVycG9zZSwgSSBzdWdnZXN0IHRoZSBm b2xsb3dpbmcgZGVmaW5pdGlvbiB2YWxpZCBpbiB0aGUgY2FzZSB0aGF0IFBBPTAgZm9yIHtsbyBQ QSBicm9kYX0uCgo7VW5vZmZpY2lhbCBkZWZpbml0aW9uIG9mIHtsbyBubyBicm9kYX06fHwKCmxv IG5vIGJyb2RhIH5oc358fmhzfiA9Y2EnZSB+aHN+fH5oc34gbmFrdSBzdSdvaSBkYSBwb2kga2Un YSBicm9kYQoKfHwKCgoK77yISWYgaXQgd2VyZSBkZWZpbmVkIGFzIHtuYWt1IGxvIGJyb2RhfSwg dGhlIG5lZ2F0aW9uIHdvdWxkIGhhdmUgc3Bhbm5lZCB0aGUgd2hvbGUgcHJvcG9zaXRpb24sIGFu ZCBpdCB3b3VsZCBub3QgaGF2ZSBpbXBsaWVkIHF1YW50aWZpY2F0aW9uLiBJIGFiYW5kb25lZCB0 aGVyZWZvcmUgc3VjaCBhIGRlZmluaXRpb24uKQoKCgohISEhISMgQ2Fubm90IHF1YW50aWZ5IG1h dGVyaWFsIG5vdW4gb3Igc29tZXRoaW5nCgpBeGlvbSAxIG9mICgofCNJbm5lcl9xdWFudGlmaWNh dGlvbnxTZWN0aW9uIDMuMSkpIGV4Y2x1ZGVzIHN1bXRpIHRoYXQgaXMgbmVpdGhlciBhbiBpbmRp dmlkdWFsIG5vciBpbmRpdmlkdWFscyBmcm9tIGV4cHJlc3Npb25zIHsoc3UnbykgTiBtZWl9IGFu ZCB7bG8gTiBicm9kYX0uCgoKCkNhbiB3ZSB1c2Uge3BpUEF9IGZvciBzdW10aSB0aGF0IGlzIG5l aXRoZXIgYW4gaW5kaXZpZHVhbCBub3IgaW5kaXZpZHVhbHMsIHRoZW4/IE5vLgoKKChCUEZLIFNl Y3Rpb246IGdhZHJpfEFjdHVhbGx5LCBwaVBBIGlzIGRlZmluZWQgb25seSBmb3Igb3V0ZXIgcXVh bnRpZmljYXRpb24uKSkKCnx8CgpwaVBBICcnc3VtdGknJyB+aHN+fH5oc34gbG8gcGlQQSBzaSdl IGJlIHBhIG1lICcnc3VtdGknJwoKfHwKCkFzIHdlIGNhbiBzZWUgaW4gdGhlIGRlZmluaXRpb24s IHRoZSBib2R5IG9mIG91dGVyIHF1YW50aWZpY2F0aW9uIGJ5IHtwaVBBfSBpcyBwbHVyYWwgY29u c3RhbnQge2xvIHBpUEEgc2knZX0sIHdoaWNoIGlzIG5vdCBhIGJvdW5kIHNpbmd1bGFyIHZhcmlh YmxlLiBIb3dldmVyLCB4MiBvZiB7cGlQQSBzaSdlfSBpcyB7cGEgbWUgJydzdW10aScnfSwgdG8g d2hpY2ggKChCUEZLIFNlY3Rpb246IGdhZHJpfHRoZSBkZWZpbml0aW9uIG9mIFBBIGJyb2RhKSkg aXMgYXBwbGllZDoKCnx8CgpQQSBicm9kYSB+aHN+fH5oc34gUEEgZGEgcG9pIGJyb2RhIAoKfHwK CkFzIGEgcmVzdWx0LCB7cGlQQSAnJ3N1bXRpJyd9IGlzIGRlZmluZWQgb25seSB3aGVuIHRoZXJl IGlzIGFuIGluZGl2aWR1YWwgdGhhdCBzYXRpc2ZpZXMgeDEgb2Yge21lICcnc3VtdGknJ30uIFRo YXQgaXMgdG8gc2F5LCB3aGF0IGlzIG5laXRoZXIgYW4gaW5kaXZpZHVhbCBub3IgaW5kaXZpZHVh bHMgaXMgZXhjbHVkZWQgYWxzbyBmcm9tIGFuIGV4cHJlc3Npb24gb2Ygb3V0ZXIgcXVhbnRpZmlj YXRpb24gd2l0aCB7cGlQQX0uCgoKCldoYXQgd291bGQgYmUgaWYge3BpUEF9IHdlcmUgZGVmaW5l ZCBhbHNvIGZvciBpbm5lciBxdWFudGlmaWNhdGlvbj8KCkluIHRoYXQgY2FzZSwgdGhlIGZvbGxv d2luZyBkZWZpbml0aW9uIHdvdWxkIGJlIGRlc2lyYWJsZSB0byBjb25mb3JtIHRoZSBkZWZpbml0 aW9uIG9mIHtwaVBBfSBvZiBvdXRlciBxdWFudGlmaWNhdGlvbjoKCjsgVW5vZmZpY2lhbCBkZWZp bml0aW9uIG9mIHtwaVBBfSBvZiBpbm5lciBxdWFudGlmaWNhdGlvbjp8fAoKbG8gcGlQQSBicm9k YSB+aHN+fH5oc34gPWNhJ2Ugfmhzfnx+aHN+IHpvJ2Ugbm9pIGtlJ2EgcGlQQSBzaSdlIGJlIGxv IHBhIGJyb2RhCgp8fAoKVGhpcyBkZWZpbml0aW9uIG9mIHtwaVBBfSBvZiBpbm5lciBxdWFudGlm aWNhdGlvbiBzdGlsbCBleGNsdWRlcyB3aGF0IGlzIG5laXRoZXIgYW4gaW5kaXZpZHVhbCBub3Ig aW5kaXZpZHVhbHMgdW5sZXNzIHtsbyBwYSBicm9kYX0gaXMgZGVmaW5lZCBpbiBhbm90aGVyIHdh eSBzbyB0aGF0IGl0IGNhbiBiZSB3aGF0IGlzIG5laXRoZXIgYW4gaW5kaXZpZHVhbCBub3IgaW5k aXZpZHVhbHMuCgoKCldoeSBkb24ndCB3ZSB1c2Uge1BBIHNpJ2V9IHRvIGV4cHJlc3MgcXVhbnRp ZmljYXRpb24gb2Ygd2hhdCBpcyBuZWl0aGVyIGFuIGluZGl2aWR1YWwgbm9yIGluZGl2aWR1YWxz PyAKCkl0IGlzIHBvc3NpYmxlLCBidXQgKChCUEZLIFNlY3Rpb246IE51bWVyaWMgc2VsYnJpfEJQ RksncyBjdXJyZW50IGRlZmluaXRpb24gb2Yge3NpJ2V9KSkgZGVwZW5kcyBvbiB7cGFnYnV9OgoK fHwKCngxIG51bWJlciBzaSdlIHgyIH5oc358fmhzfiB4MSBwYWdidSB4MiBnaSdlIGtsYW5pIGxp IG51bWJlciBsbyBzZSBncmFkdSBiZSB4MgoKfHwKCklmIHdlIGludGVycHJldCB7cGFnYnV9IHNv IHRoYXQgeDEgaXMgbm90IGxhcmdlciB0aGFuIHgyIChhbmQgdGhpcyBpcyBvcmRpbmFyeSBpbnRl cnByZXRhdGlvbiksIFtodHRwczovL2dyb3Vwcy5nb29nbGUuY29tL2QvbXNnL2xvamJhbi9SQXRF N1lrLWRxdy9uVWJaaXdtQjJNMEp8e3NpJ2V9IGlzIHZlcnkgaW5jb252ZW5pZW50IGJlY2F1c2Ug dGhlIHVuaXQgc2hvdWxkIGJlIGNoYW5nZWQgZXZlcnkgdGltZSBjb3VudGluZyB1cC5dIElmIHtz aSdlfSB3ZXJlIGRlZmluZWQgc28gdGhhdCBQQSBvZiB7UEEgc2knZX0gY291bGQgYmUgbGFyZ2Vy IHRoYW4gMSwge3NpJ2V9IHdvdWxkIGhhdmUgYmVlbiBwcmFnbWF0aWMgZm9yIHF1YW50aWZpY2F0 aW9uIG9mIHdoYXQgaXMgbmVpdGhlciBhbiBpbmRpdmlkdWFsIG5vciBpbmRpdmlkdWFscy4KCgoK QmVzaWRlcyB0aG9zZSBjb25zaWRlcmF0aW9ucywgaWYgd2UgYWJhbmRvbiBBeGlvbSAxIG9mICgo fCNJbm5lcl9xdWFudGlmaWNhdGlvbnxTZWN0aW9uIDMuMSkpLCBEZWZpbml0aW9ucyAoRDEpIChE MikgKEQzKSBjYW4gYmUgYXBwbGllZCB0byB3aGF0IGlzIG5laXRoZXIgYW4gaW5kaXZpZHVhbCBu b3IgaW5kaXZpZHVhbHMuCgpJbiB0aGlzIGNhc2UsIGEgc3BlYWtlciBzaG91bGQgc2VsZWN0IHNv bWUgcGx1cmFsIGNvbnN0YW50cyB7a28nYSwga28nZSwgLi4ufSwgYW5kIGRlY2lkZSB0aGF0IHtb W2tvJ2Eva28nZS8uLi5dIHN1J28gcGEgbWVpfTsgdGhlIHNlbGVjdGlvbiBtdXN0IGJlIGRvbmUg YXR0ZW50aXZlbHkgc28gdGhhdCByZWZlcmVudHMgb2YgcGx1cmFsIGNvbnN0YW50cyB0aGF0IGFy ZSB7cGEgbWVpfSBkbyBub3Qgb3ZlcmxhcCB3aXRoIGVhY2ggb3RoZXIuCgpUaG9zZSBwcmVwYXJh dGlvbnMgb2Yge2tvJ2EsIGtvJ2UsIC4uLn0gYW5kIChEMikgaW1wbHkgb25seQoKfHwKCmdhbmFp IFtba28nYS9rbydlLy4uLl0gcGEgbWVpIAoKZ2kgcm8nb2kgZGUgcG9pIG1lIFtba28nYS9rbydl Ly4uLl0gem8ndSBkZSBtZSBbW2tvJ2Eva28nZS8uLi5dCgp8fAoKVW5kZXIgdGhlc2UgY29uZGl0 aW9ucywgdGhlcmUgaXMgbm8gbmVlZCB0aGF0IHdoYXQgaXMgeDEgb2Yge3BhIG1laX0gaXMgYW4g aW5kaXZpZHVhbC4KCgoKV2hlbiB3ZSB1c2UgRGVmaW5pdGlvbnMgKEQxKSAoRDIpIChEMykgd2l0 aG91dCB1c2luZyBBeGlvbSAxIG9mICgofCNJbm5lcl9xdWFudGlmaWNhdGlvbnxTZWN0aW9uIDMu MSkpLCBhIGNvbmRpdGlvbiB7Z2knZSBzdSdvIHBhIG1laX0gbXVzdCBiZSBhZGRlZCB0byB7ZGV9 IG9mIChEMSnvvIhXaGVuIEF4aW9tIDEgaXMgdXNlZCwgcmVmZXJlbnRzIGluIHRoZSBkb21haW4g b2YgdmFyaWFibGUge2RlfSBzYXRpc2ZpZXMgdGhpcyBjb25kaXRpb24gYXV0b21hdGljYWxseSku IAoKO1Vub2ZmaWNpYWwgZGVmaW5pdGlvbnMgdW5kZXIgdGhlIGNvbmRpdGlvbiB0aGF0IEF4aW9t IDEgaXMgYWJhbmRvbmVkOnx8CgooRDEnKSBrbydhIHN1J28gTiBtZWkgfmhzfnx+aHN+ID1jYSdl IH5oc358fmhzfiBzdSdvaSBkYSBwb2kgbWUga28nYSBrdSdvIHN1J29pIGRlIHBvaSBtZSBrbydh IGdpJ2Ugc3UnbyBwYSBtZWkgem8ndSBnZSBkYSBzdSdvIE4tMSBtZWkgZ2luYWkgZGUgbWUgZGEK CihEMikga28nYSBOIG1laSB+aHN+fH5oc34gPWNhJ2Ugfmhzfnx+aHN+IGtvJ2Egc3UnbyBOIG1l aSBnaSdlIG5haSBzdSdvIE4rMSBtZWkgCgooRDMpIGxvIFBBIGJyb2RhIH5oc358fmhzfiA9Y2En ZSB+aHN+fH5oc34gem8nZSBub2kga2UnYSBQQSBtZWkgZ2knZSBicm9kYQoKfHwKClVzaW5nIHRo ZXNlIGRlZmluaXRpb25zLCBpbm5lciBxdWFudGlmaWNhdGlvbiBvZiB3aGF0IGlzIG5laXRoZXIg YW4gaW5kaXZpZHVhbCBub3IgaW5kaXZpZHVhbHMgYmVjb21lcyBwb3NzaWJsZS4gTW9yZW92ZXIs ICJVbm9mZmljaWFsIGRlZmluaXRpb24gb2Yge3BpUEF9IG9mIGlubmVyIHF1YW50aWZpY2F0aW9u IiBkaXNjdXNzZWQgYWJvdmUgYmVjb21lcyBhYmxlIHRvIGJlIGFwcGxpZWQgdG8gd2hhdCBpcyBu ZWl0aGVyIGFuIGluZGl2aWR1YWwgbm9yIGluZGl2aWR1YWxzLgoKCgpUaGUgZGlhZ3JhbSBiZWxv dyBzaG93cyBhIHByb2NlZHVyZSBvZiBjb3VudGluZyB1cCB3aGF0IGlzIG5laXRoZXIgYW4gaW5k aXZpZHVhbCBub3IgaW5kaXZpZHVhbHMgcmVwcmVzZW50ZWQgd2l0aCBhIGRpcmVjdGVkIGdyYXBo LiBJbiB0aGlzIGRpYWdyYW0sIGxvb3BzIHN1Y2ggYXMge1ggbWUgWH0gYXJlIG9taXR0ZWQgZm9y IHNpbXBsaWNpdHksIHRob3VnaCB0aGV5IGV4aXN0LiBBbW9uZyBpbmZpbml0ZSBudW1iZXIgb2Yg dmVydGljZXMgKHBsdXJhbCBjb25zdGFudHMpLCB0aGUgdmVydGljZXMgdGhhdCBhIHNwZWFrZXIg c2VsZWN0ZWQgYXMge3N1J28gcGEgbWVpfSBhcmUgY29sb3JlZCBwaW5rLiBDb3VudGluZyB1cCBj b3JyZXNwb25kcyB0byBzZWxlY3RpbmcgYSB0cmVlIHRoYXQgaXMgYSBzdWJncmFwaCBvZiBhIGRp cmVjdGVkIGdyYXBoIGZvcm1lZCB3aXRoIHttZX0sIGZvciBleGFtcGxlIHRoZSBwYXJ0IG9mIGJs dWUgY29sb3IgaW4gdGhlIGRpYWdyYW0uCgoKCntpbWcgZmlsZUlkPSI5IiB0aHVtYj0ieSIgcmVs PSJib3hbZ10ifQoKCgohISEjIE91dGVyIHF1YW50aWZpY2F0aW9uCgooKEJQRksgU2VjdGlvbjog Z2Fkcml8QlBGSyBkZWZpbmVzIG91dGVyIHF1YW50aWZpY2F0aW9uKSkgYXMgZm9sbG93czoKCnx8 CgpQQSAnJ3N1bXRpJycgfmhzfnx+aHN+IFBBIGRhIHBvaSBrZSdhIG1lICcnc3VtdGknJwoKUEEg YnJvZGEgfmhzfnx+aHN+IFBBIGRhIHBvaSBicm9kYSAKCnBpUEEgJydzdW10aScnIH5oc358fmhz fiBsbyBwaVBBIHNpJ2UgYmUgcGEgbWUgJydzdW10aScnCgp8fAoKCgpPdXRlciBxdWFudGlmaWNh dGlvbiBleGNlcHQge3BpUEF9IGZvcm1zIHtQQSBkYX0sIHdoaWNoIGlzIG9mZmljaWFsbHkgYSBi b3VuZCBzaW5ndWxhciB2YXJpYWJsZS4gSXQgaW1wbGllcyB0aGF0IHRoZXNlIGFyZ3VtZW50cyBz YXRpc2Z5IGEgcHJlZGljYXRlIF9fZGlzdHJpYnV0aXZlbHlfXy4gRm9yIGV4YW1wbGUsIGl0IGlz IG1lYW5pbmdsZXNzIHRvIHVzZSB7Y2kgbG8gcHJlbnV9IGFzIHgxIG9mIHtqbWFqaX0gKGdhdGhl ciksIGJlY2F1c2UgaXQgaXMgbm90IHRoZSBjYXNlIHRoYXQgZWFjaCBvZiB0aHJlZSBwZW9wbGUg c2F0aXNmaWVzIHRoZSBwcmVkaWNhdGUgImdhdGhlciIuCgoKCkhvd2V2ZXIsIGlmIHdlIHVzZSB1 bm9mZmljaWFsIHBsdXJhbCBxdWFudGlmaWVycyB7cm8nb2l9IG9yIHtzdSdvaX0gZm9yIFBBLCBv dXRlciBxdWFudGlmaWNhdGlvbiBjYW4gZm9ybSBib3VuZCBwbHVyYWwgdmFyaWFibGUuIEZvciBl eGFtcGxlLAoKXnN1J29pIHByZW51IGN1IGptYWppIH5oc34gdGhlcmUgYXJlIHBlb3BsZSB3aG8g Z2F0aGVyLl4KClRoaXMgcHJvcG9zaXRpb24gaXMgaW1wbGllZCBieSBhIHByb3Bvc2l0aW9uIGlu Y2x1ZGluZyBwbHVyYWwgY29uc3RhbnQKCl5sbyBwcmVudSBjdSBqbWFqaSB+aHN+IFBlb3BsZSBn YXRoZXIuXgoKd2l0aCB0aGUgbG9naWNhbCBheGlvbSBpbiAoKHwjQV9sb2dpY2FsX2F4aW9tX29u X3BsdXJhbF9jb25zdGFudHxTZWN0aW9uIDIuMi42KSkuCgoKCntQQSBsbyBicm9kYX0gZGlmZmVy cyBmcm9tIHtQQSBicm9kYX0gaW4gZG9tYWluIG9mIHJlZmVyZW50cyBvZiBib3VuZCBzaW5ndWxh ciB2YXJpYWJsZSB0byBiZSBjb3VudGVkLiBUaGUgZGVmaW5pdGlvbnMgb2Ygb3V0ZXIgcXVhbnRp ZmljYXRpb24gYXJlIGFwcGxpZWQgdG8gdGhlbSBhcyBmb2xsb3dzOgoKfHwKClBBIGxvIGJyb2Rh IH5oc358fmhzfiBQQSBkYSBwb2kga2UnYSBtZSBsbyBicm9kYSB+aHN+fH5oc34gVGhlIGRvbWFp biBvZiBib3VuZCBzaW5ndWxhciB2YXJpYWJsZSBpcyBhIHJlZmVyZW50IG9mIHBsdXJhbCBjb25z dGFudCB7bG8gYnJvZGF9IGluIHRoZSB1bml2ZXJzZSBvZiBkaXNjb3Vyc2UsIGFuZCBjb3VudGVk IHRvIGJlIFBBCgpQQSBicm9kYSB+aHN+fH5oc34gUEEgZGEgcG9pIGtlJ2EgYnJvZGEgfmhzfnx+ aHN+IFRoZSBkb21haW4gb2YgYm91bmQgc2luZ3VsYXIgdmFyaWFibGUgaXMgYWxsIHRoYXQgYXJl IHticm9kYX0gaW4gdGhlIHVuaXZlcnNlIG9mIGRpc2NvdXJzZSwgYW5kIGNvdW50ZWQgdG8gYmUg UEEKCnx8CgoKCl4KCjtFeGFtcGxlIDE6IHJvIGptaXZlIGJhIG1vcnNpIH5oc34gJydBbGwgbGl2 aW5nIHRoaW5ncyB3aWxsIGRpZS4nJwoKO0V4YW1wbGUgMjogcm8gbG8gcHJlbnUgdGkga2xhbWEg fmhzfiAnJ0FsbCB0aGUgcGVvcGxlIGNvbWUgaGVyZS4nJ14KCkV4YW1wbGUgMSBtZW50aW9ucyBh bGwge2ptaXZlfSBpbiB0aGUgdW5pdmVyc2Ugb2YgZGlzY291cnNlLiBJbiB0aGUgdW5pdmVyc2Ug b2YgZGlzY291cnNlIG9mIEV4YW1wbGUgMiwgaXQgaXMgcG9zc2libGUgdG8gaW50ZXJwcmV0IHRo YXQgdGhlcmUgYXJlIHtwcmVudX0gb3RoZXIgdGhhbiB0aGUgcmVmZXJlbnQgb2YgdGhlIHBsdXJh bCBjb25zdGFudCB7bG8gcHJlbnV9LgoKCgpUaGUgb3V0ZXIgcXVhbnRpZmljYXRpb24gYnkge3Bp UEF9IGZvcm1zIHBsdXJhbCBjb25zdGFudCB7bG8gcGlQQSBzaSdlfS4gSG93ZXZlciwgeDIgb2Yg e3BpUEEgc2knZX0gaXMgYm91bmQgc2luZ3VsYXIgdmFyaWFibGUge3BhIG1lICcnc3VtdGknJ30u IHtwaX0gaW4gdGhpcyBkZWZpbml0aW9uIG1lYW5zICJub3QgbGFyZ2VyIHRoYW4gMSI7IHByYWN0 aWNhbGx5LCB7ZmkndX0gb3Igc29tZXRoaW5nIGNhbiBiZSB1c2VkIGluc3RlYWQgb2Yge3BpfQoK CgohISEhIyBDb21iaW5hdGlvbiBvZiBvdXRlciBhbmQgaW5uZXIgcXVhbnRpZmljYXRpb25zCgpU aGUgZGVmaW5pdGlvbnMgb2YgaW5uZXIgYW5kIG91dGVyIHF1YW50aWZpY2F0aW9uIGltcGx5IHRo ZSBmb2xsb3dpbmcgaW50ZXJwcmV0YXRpb25zOgoKfHwKCk0gbG8gW1tOXSBicm9kYSB+aHN+fH5o c34gTSAod2hpY2ggc2F0aXNmaWVzIGEgcHJlZGljYXRlIGRpc3RyaWJ1dGl2ZWx5KSBvZiB7bG8g YnJvZGF9IFtbdGhhdCBhcmUgTl0KCk0gbG9pIFtbTl0gYnJvZGEgfmhzfnx+aHN+IE0gKHdoaWNo IHNhdGlzZmllcyBhIHByZWRpY2F0ZSBkaXN0cmlidXRpdmVseSkgb2Yge2xvIGd1bm1hfSB0aGF0 IGNvbnNpc3RzIG9mIHtsbyBicm9kYX0gW1t0aGF0IGFyZSBOXQoKTSBsbydpIFtbTl0gYnJvZGEg fmhzfnx+aHN+IE0gKHdoaWNoIHNhdGlzZmllcyBhIHByZWRpY2F0ZSBkaXN0cmlidXRpdmVseSkg b2Yge2xvIHNlbGNtaX0gdGhhdCBjb25zaXN0cyBvZiB7bG8gYnJvZGF9IFtbdGhhdCBhcmUgTl0K CnBpIE0gbG8gW1tOXSBicm9kYSB+aHN+fH5oc34gUXVhbnRpdHkge3BpIE0gc2knZX0gb2YgYSBw YXJ0IG9mIG9uZSBvZiB7bG8gYnJvZGF9IFtbdGhhdCBhcmUgTl0KCnBpIE0gbG9pIFtbTl0gYnJv ZGEgfmhzfnx+aHN+IFF1YW50aXR5IHtwaSBNIHNpJ2V9IG9mIGEgcGFydCBvZiBvbmUgb2Yge2xv IGd1bm1hfSB0aGF0IGNvbnNpc3RzIG9mIHtsbyBicm9kYX0gW1t0aGF0IGFyZSBOXQoKcGkgTSBs bydpIFtbTl0gYnJvZGEgfmhzfnx+aHN+IFF1YW50aXR5IHtwaSBNIHNpJ2V9IG9mIGEgcGFydCAo c3Vic2V0KSBvZiBvbmUgb2Yge2xvIHNlbGNtaX0gdGhhdCBjb25zaXN0cyBvZiB7bG8gYnJvZGF9 IFtbdGhhdCBhcmUgTl0KCnx8CgoKCkFtb25nIHRoZW0sIHtNIGxvIFtbTl0gYnJvZGF9IGFuZCB7 cGkgTSBsb2kgW1tOXSBicm9kYX0gY2FuIGV4cHJlc3Mgc29tZSBvZiBwbHVyYWwgbnVtYmVyIG9m IHRoaW5ncy4KCl4KCjtFeGFtcGxlIDE6IHJlIGxvIFtbY2ldIG1sYXR1IG1pIHZpc2thIH5oc34g JydUd28gW1tvZiB0aHJlZV0gY2F0cyBzZWUgbWUuJycKCjtFeGFtcGxlIDI6IHJlIGZpJ3UgY2kg bG9pIFtbdmVpIGNpIHBpJ2kgbnkgKHZlJ28pXSBtbGF0dSBtaSB2aXNrYSB+aHN+ICcnVHdvIHRo aXJkIG9mIFtbM25dIGNhdHMgc2VlIG1lLicnXgoKCgp7cmUgbG8gW1tjaV0gbWxhdHV9IG9mIEV4 YW1wbGUgMSByZWZlcnMgdG8gdHdvIGNhdHMgYW1vbmcgW1t0aHJlZV0gY2F0cyB0aGF0IGFyZSBy ZWZlcmVudCBvZiB7bG8gW1tjaV0gbWxhdHV9LgoKSWYgdGhlIGlubmVyIHF1YW50aWZpZXIge2Np fSBpcyBub3Qgc2FpZCwgaXQgaXMgdW5jbGVhciBob3cgbWFueSBjYXRzIGFyZSByZWZlcnJlZCB0 byBieSB7bG8gbWxhdHV9OyBpbiBhbnkgY2FzZSB7cmUgbG8gbWxhdHV9IHJlZmVycyB0byB0d28g b2YgdGhlbS4KCgoKSW4gRXhhbXBsZSAyLCB0aGUgYXJndW1lbnQgaXMgZm9ybWVkIGJ5IHtsb2l9 LCBhbmQgdGhlIHJlZmVyZW50IGlzIGFjdHVhbGx5IHtsbyBndW5tYX0uIEV4cGFuZGluZyBFeGFt cGxlIDIgYWNjb3JkaW5nIHRvIHRoZSBkZWZpbml0aW9ucyBvZiB7bG9pfSBhbmQge3BpUEEgJydz dW10aScnfSwKCl4KCjtFeGFtcGxlIDItMTogbG8gcmUgZmkndSBjaSBzaSdlIGJlIHBhIG1lIGxv IGd1bm1hIGJlIGxvIFtbdmVpIGNpIHBpJ2kgbnkgKHZlJ28pXSBtbGF0dSBtaSB2aXNrYV4KClRo YXQgaXMgdG8gc2F5LCB7cmUgZmkndSBjaSBsb2kuLi59IHJlZmVycyB0byB0d28gdGhpcmQgb2Yg YW4gaW5kaXZpZHVhbCB7cGEgbWUgbG8gZ3VubWEuLi59LiBUaGlzIHtsbyBndW5tYX0gY29uc2lz dHMgb2Yge3ZlaSBjaSBwaSdpIG55ICh2ZSdvKX0gY2F0cy4gCgpJZiB0aGUgaW5uZXIgcXVhbnRp ZmllciBpcyBub3Qgc2FpZCwgaXQgaXMgdW5jbGVhciBob3cgbWFueSBjYXRzIGNvbnN0aXR1dGUg e2xvIGd1bm1hfSB0aGF0IGlzIHtsb2kgbWxhdHV9OyBpbiBhbnkgY2FzZSB7cmUgZmkndSBjaSBs b2kgbWxhdHV9IHJlZmVycyB0byB0d28gdGhpcmQgb2Yge2xvIGd1bm1hfS4gSG93ZXZlciwgCgpe cmUgZmkndSBjaSBsb2kgbWxhdHUgbWkgdmlza2FeCgppcyBtZWFuaW5nZnVsIG9ubHkgd2hlbiB7 bG9pIG1sYXR1fSBjb25zaXN0cyBvZiAzbiBjYXRzLCBiZWNhdXNlIGl0IGlzIG5vdCBvcmRpbmFy eSB0byBpbnRlcnByZXQgdGhhdCBhIGZyYWdtZW50IG9mIGEgY2F0IHNhdGlzZmllcyB0aGUgcHJl ZGljYXRlIHt2aXNrYX0uCgpBY2NvcmRpbmcgdG8gQlBGSydzIGRlZmluaXRpb24sIHtsb2l9IGNh bm5vdCBmb3JtIGEgcGx1cmFsIGNvbnN0YW50IHRoYXQgc2F0aXNmaWVzIGEgcHJlZGljYXRlIG5v bi1jb2xsZWN0aXZlbHkuIElmIHlvdSB3YW50IHRvIG1lYW4gImNhdHMgc2VlIG1lIG5vbi1jb2xs ZWN0aXZlbHkiLCBhdm9pZCB7bG9pfSwgb3IgdXNlIHtsdSdhfSwgd2hpY2ggd2lsbCBiZSBkaXNj dXNzZWQgaW4gKCh8I1JlbGF0aW9uX2JldHdlZW5fbHVfYV9sdV9vX2x1X2lfYW5kX2dhZHJpfFNl Y3Rpb24gMy4zKSk6CgpebHUnYSByZSBmaSd1IGNpIGxvaSBtbGF0dSBtaSB2aXNrYV4KCgoKISEh ISMgQm91bmQgdmFyaWFibGVzIGFuZCBjb25zdGFudHMgaW4gYSBzdGF0ZW1lbnQKCldoZW4gYm90 aCBib3VuZCB2YXJpYWJsZXMgYW5kIGNvbnN0YW50cyBhcHBlYXIgaW4gYSBzdGF0ZW1lbnQsIHRo ZSBjb25zdGFudHMgZG8gbm90IG5lY2Vzc2FyaWx5IHNwYW4gb3ZlciBhbGwgYm91bmQgdmFyaWFi bGVzLiBBbHRob3VnaCB0aGV5IGFyZSBjYWxsZWQgImNvbnN0YW50cyIsIGl0IGlzIG5vdCBnZW5l cmFsbHkgZGV0ZXJtaW5lZCB3aGV0aGVyIHRoZXkgcmVmZXIgdG8gY29tbW9uIHJlZmVyZW50cyBm b3IgYWxsIHJlZmVyZW50cyBpbiBkb21haW5zIG9mIHZhcmlhYmxlcywgb3IgdGhleSByZWZlciB0 byBkaWZmZXJlbnQgcmVmZXJlbnRzIGRlcGVuZGVudCBvbiByZWZlcmVudHMgaW4gZG9tYWlucyBv ZiB2YXJpYWJsZXMuIFRoZSByZWFzb24gZm9sbG93cyBiZWxvdyAoW2h0dHBzOi8vZ3JvdXBzLmdv b2dsZS5jb20vZC9tc2cvbG9qYmFuL1JBdEU3WWstZHF3L0FCRGZPZnVveldFSnxEaXNjdXNzaW9u XSkuCgoKCldoZW4gc29tZSBzdW10aSBvZiB0ZXJicmkgaW4gYSBzdGF0ZW1lbnQgYXJlIG9taXR0 ZWQsIGl0IGlzIGNvbnNpZGVyZWQgdGhhdCB0aGVyZSBhcmUgaW1wbGljaXQge3pvJ2V9IGluIHRo b3NlIHBsYWNlcyAoW2h0dHA6Ly9sb2piYW4uZ2l0aHViLmlvL2NsbC83LzcvfENMTCA3LjddKS4K CkZvciBleGFtcGxlLAoKXnJvIG1sYXR1IGN1IGpiZW5hfnBwfgoKfi9wcH4gICcnQWxsIGNhdHMg YXJlL3dpbGwgYmUgYm9ybi4nJ14KCnNlZW1zIHRvIGJlIHRydWUgZnJvbSBhIHN0YW5kYXJkIHBv aW50IG9mIHZpZXcuIEFjY29yZGluZyB0byBkZWZpbml0aW9uIG9mIHRlcmJyaSBvZiB7amJlbmF9 LCBpdCBpcyBjb25zaWRlcmVkIHRoYXQgdGhyZWUgc3VtdGkgYXJlIG9taXR0ZWQsIGFuZCB0aGlz IHN0YXRlbWVudCBoYXMgdGhlIHNhbWUgbWVhbmluZyBhcwoKXnJvIG1sYXR1IGN1IGpiZW5hIHpv J2Ugem8nZSB6bydlXgoKaW4gd2hpY2gge3pvJ2V9IGFyZSBleHBsaWNpdC4gCgpVbmxlc3MgYWxs IGNhdHMgaW4gdGhpcyB1bml2ZXJzZSBvZiBkaXNjb3Vyc2UgYXJlL3dpbGwgYmUgYm9ybiB0byBj b21tb24gcGFyZW50cyBhdCB0aGUgc2FtZSB0aW1lIGF0IHRoZSBzYW1lIHBsYWNlLCB0aGVzZSB7 em8nZX0gY2Fubm90IGJlIGNvbnNpZGVyZWQgYXMgY29tbW9uIGNvbnN0YW50cyBmb3IgYWxsIHJl ZmVyZW50cyBpbiBhIGRvbWFpbiBvZiB7cm8gbWxhdHV9LiBJbiBvcmRlciB0byBtYWtlIHN1Y2gg YW4gZXhwcmVzc2lvbiBsaWtlIHtybyBtbGF0dSBjdSBqYmVuYX0gaGF2ZSBpbnRlbmRlZCBtZWFu aW5nLCAiY29uc3RhbnRzIiBvZiBMb2piYW4gY2FuIGJlIGRlcGVuZGVudCBvbiByZWZlcmVudHMg aW4gZG9tYWlucyBvZiBib3VuZCB2YXJpYWJsZXMuCgoKCiJDb25zdGFudHMiIGluIHRoaXMgbWVh bmluZyBjb3JyZXNwb25kIHRvIFNrb2xlbSBmdW5jdGlvbnMgaW4gU2tvbGVtIG5vcm1hbCBmb3Jt cyBvZiBwcmVkaWNhdGUgbG9naWMuIFRoZSB0YWJsZSBiZWxvdyBzaG93cyBjb21wYXJpc29uIG9m IGludGVycHJldGF0aW9ucyBiZXR3ZWVuIHByZWRpY2F0ZSBsb2dpYywgeG9ybG8gb24gd2hpY2gg dGhpcyBjb21tZW50YXJ5IGRlcGVuZHMgYW5kIGltcGxpY2l0IHF1YW50aWZpZXIgKFtodHRwOi8v bG9qYmFuLmdpdGh1Yi5pby9jbGwvNi8xL3xDTEwgQ2hhcHRlciA2XSkgd2hpY2ggd2FzIGFib2xp c2hlZC4gVGhlIGV4cHJlc3Npb25zIHRoYXQgaGF2ZSB0aGUgc2FtZSB0cnV0aCB2YWx1ZSBhcmUg YWxpZ25lZCBpbiB0aGUgc2FtZSBjb2x1bW4uIFVwcGVyIGNhc2UgWSByZXByZXNlbnRzIGEgcGx1 cmFsIHZhcmlhYmxlLiBUaGUgcm93IG9mIHpvJ2UreG9ybG8gc2hvd3MgdW5vZmZpY2lhbCBzdWdn ZXN0aW9uIG9mIGludGVycHJldGF0aW9uLiBJbiB0aGUgZ3JheSBwYXJ0IGluIHRoZSByb3cgb2Yg UHJlbmV4IG5vcm1hbCwgdW5vZmZpY2lhbCBleHByZXNzaW9ucyB3aXRoIGFuIGV4cGVyaW1lbnRh bCBjbWF2byB7c3Unb2l9IGFyZSBzaG93bi4gKENsaWNrIG9uIHRoZSB0YWJsZSB0byBlbmxhcmdl LikKCntpbWcgZmlsZUlkPSIxMiIgdGh1bWI9InkiIGxpbms9ImRpc3BsYXkxMSIgcmVsPSJib3hb Z10ifQoKCgohISEjIFJlbGF0aW9uIGJldHdlZW4gbHUnYSwgbHUnbywgbHUnaSBhbmQgZ2FkcmkK CigoQlBGSyBTZWN0aW9uOiBJbmRpcmVjdCBSZWZlcmVyc3xCUEZLIGRlZmluZXMpKSB7bHUnYX0s IHtsdSdvfSwge2x1J2l9IG9mIExBaEUgYXMgZm9sbG93czoKCnx8CgpsdSdhICcnc3VtdGknJyB+ aHN+fH5oc34gbG8gbWUgJydzdW10aScnIH5oc358fmhzfiBsbyBjbWltYSBiZSAnJ3N1bXRpJycg W1tub2kgc2VsY21pXQoKbHUnbyAnJ3N1bXRpJycgfmhzfnx+aHN+IGxvaSBtZSAnJ3N1bXRpJycK Cmx1J2kgJydzdW10aScnIH5oc358fmhzfiBsbydpIG1lICcnc3VtdGknJwoKfHwKCkhvd2V2ZXIs IGd1ZXNzaW5nIGZyb20gdGhlIEVuZ2xpc2ggZGVmaW5pdGlvbnMgb24gdGhlIHNhbWUgcGFnZSwg dGhlIGRlZmluaXRpb24gb2Yge2x1J2F9IGlzIHVuc2F0aXNmYWN0b3J5LCBhbmQgdGhhdCBvZiB7 bHUnb30gaGFzIHNvbWUgcHJvYmxlbS4KCgoKe2x1J2F9IGV4dHJhY3RzIHgyIG9mIHtzZWxjbWl9 IGZyb20gc3VtdGkgdGhhdCBpcyB7bG8gc2VsY21pfSwgYW5kIHgyIG9mIHtndW5tYX0gZnJvbSBz dW10aSB0aGF0IGlzIHtsbyBndW5tYX0uIE1vcmVvdmVyLCB7bHUnYX0gbWFrZXMgZXhwbGljaXQg dGhhdCB0aGUgc3VtdGkgc2F0aXNmaWVzIGEgcHJlZGljYXRlIGRpc3RyaWJ1dGl2ZWx5IGFuZCBu b24tY29sbGVjdGl2ZWx5LiBPbiB0aGUgb3RoZXIgaGFuZCwgYWNjb3JkaW5nIHRvIHRoZSBkZWZp bml0aW9uIG9mIHtsb30sIHtsbyBtZSAnJ3N1bXRpJyd9IGRvZXMgbm90IGltcGx5ICJkaXN0cmli dXRpdmVseSBhbmQgbm9uLWNvbGxlY3RpdmVseSIuCgoKCntsdSdvfSBtYWtlcyBleHBsaWNpdCB0 aGF0IHRoZSBzdW10aSBzYXRpc2ZpZXMgYSBwcmVkaWNhdGUgbm9uLWRpc3RyaWJ1dGl2ZWx5IGFu ZCBjb2xsZWN0aXZlbHkuIE9uIHRoZSBvdGhlciBoYW5kLCBhY2NvcmRpbmcgdG8gdGhlIGRlZmlu aXRpb24gb2Yge2xvaX0sIHtsb2kgbWUgJydzdW10aScnfSBzYXRpc2ZpZXMgYSBwcmVkaWNhdGUg Y29sbGVjdGl2ZWx5LCBidXQgc3RpbGwgdW5jbGVhciBpZiBpdCBkb2VzIG5vbi1kaXN0cmlidXRp dmVseS4gRm9yIGNvbnNpc3RlbmN5LCBpdCB3b3VsZCBiZSBiZXR0ZXIgdG8gYWRkICJ7bG9pIGJy b2RhfSBpbXBsaWVzIHRoYXQgcmVmZXJlbnQgb2YgeDEgb2YgYnJvZGEgY29sbGVjdGl2ZWx5IGFu ZCBub24tZGlzdHJpYnV0aXZlbHkgc2F0aXNmaWVzIGEgcHJlZGljYXRlIiB0byB0aGUgZGVmaW5p dGlvbiBvZiB7bG9pfS4KCgoKQXMgYSBjb25jbHVzaW9uIG9mIHRoaXMgc2VjdGlvbiwgSSBzdWdn ZXN0IHRvIHJlLWRlZmluZSB7bHUnYX0gYXMgZm9sbG93czoKCjsgVW5vZmZpY2lhbCBkZWZpbml0 aW9uIG9mIHtsdSdhfTp8fAoKbHUnYSAnJ3N1bXRpJycgfmhzfnx+aHN+IGxvIGNtaW1hIGJlICcn c3VtdGknJyBub2kgc2VsY21pIGt1IG9uYWkgbG8gc2UgZ3VubWEgYmUgJydzdW10aScnIG5vaSBn dW5tYSBrdSBvbmFpIGxvIG1lICcnc3VtdGknJyBrdSB+cHB+Cgp+L3BwfiB+aHN+IHZ1J28gbm9p IHN1J28gZGEgem8ndSBkYSBtZSBrZSdhIGdpJ2Ugbm8nYQoKfHwKCkluIHtub2l9IGNsYXVzZSBh ZnRlciB7dnUnb30sIGl0IGlzIG1hZGUgZXhwbGljaXQgdGhhdCB0aGUgcmVmZXJlbnQgb2Yge2x1 J2EgJydzdW10aScnfSBkaXN0cmlidXRpdmVseSBzYXRpc2ZpZXMgdGhlIHNlbnRlbmNlIHRoYXQg aW5jbHVkZXMgdGhpcyBzdW10aS4KCgoKISEhIyBSZWxhdGlvbiBiZXR3ZWVuIGpvJ3UsIGpvaSwg Y2UgYW5kIGdhZHJpCgooKEJQRksgU2VjdGlvbjogTm9uLWxvZ2ljYWwgQ29ubmVjdGl2ZXN8QWNj b3JkaW5nIHRvIEJQRksgU2VjdGlvbikpIHtqbyd1fSwge2pvaX0gYW5kIHtjZX0gb2Ygc2VsbWEn byBKT0kgYXJlIGRlZmluZWQgYXMgZm9sbG93czp8fAoKX19YX18gam8ndSBfX1lfXyB+aHN+fH5o c34gbG8gc3V6bWVpIG5vaSBfX1hfXyAuZSBfX1lfXyAuZSBubyBkcmF0YSBiZSBfX1hfXyAuZSBf X1lfXyBjdSBtZSBrZSdhCgpfX1hfXyBqb2kgX19ZX18gfmhzfnx+aHN+IGxvIGd1bm1hIGJlIF9f WF9fIC5lIF9fWV9fIC5lIG5vIGRyYXRhIGJlIF9fWF9fIC5lIF9fWV9fCgpfX1hfXyBjZSBfX1lf XyB+aHN+fH5oc34gbG8gc2UgY21pbWEgYmUgX19YX18gLmUgX19ZX18gLmUgbm8gZHJhdGEgYmUg X19YX18gLmUgX19ZX18KCnx8CgpUaGV5IGNvcnJlc3BvbmQgcmVzcGVjdGl2ZWx5IHRvIHtsb30s IHtsb2l9LCB7bG8naX0gb2YgZ2FkcmkuIFRoZXkgY29ubmVjdCB0d28gc3VtdGk6IHtqbyd1fSBm b3JtcyBhIHBsdXJhbCBjb25zdGFudCwge2pvaX0gYSBub24tZGlzdHJpYnV0aXZlIHBsdXJhbCBj b25zdGFudCwge2NlfSBhIHBsdXJhbCBjb25zdGFudCB0aGF0IHJlZmVycyB0byBzZXQocykgdGhh dCBjb25zaXN0KHMpIG9mIHRoZSBzdW10aSB0aGF0IHtjZX0gY29ubmVjdHMuIEluIHRoZSBFbmds aXNoIGRlZmluaXRpb24gb2Yge2pvaX0gb2YgQlBGSywgIm5vbi1kaXN0cmlidXRpdmUiIGlzIG1l bnRpb25lZC4gVGhpcyBmYWN0IGFsc28gc3VwcG9ydHMgdGhlIHN1Z2dlc3Rpb24gaW4gKCh8I1Jl bGF0aW9uX2JldHdlZW5fbHVfYV9sdV9vX2x1X2lfYW5kX2dhZHJpfFNlY3Rpb24gMy4zKSkgdG8g YWRkICJ7bG9pIGJyb2RhfSBpbXBsaWVzIHRoYXQgcmVmZXJlbnQgb2YgeDEgb2YgYnJvZGEgY29s bGVjdGl2ZWx5IGFuZCBub24tZGlzdHJpYnV0aXZlbHkgc2F0aXNmaWVzIGEgcHJlZGljYXRlIiB0 byB0aGUgZGVmaW5pdGlvbiBvZiB7bG9pfS4KCgoKRXZlbiBpZiBfX1hfXyBvciBfX1lfXyBhcmUg Ym91bmQgdmFyaWFibGVzLCB0aGVzZSBjb25uZWN0aXZlcyBmb3JtIGNvbnN0YW50cy4gSW4gdGhp cyBjYXNlLCBpdCBpcyBub3QgZGV0ZXJtaW5lZCB3aGV0aGVyIHRoZSBmb3JtZWQgY29uc3RhbnRz IGRlcGVuZCBvbiBfX1hfXyBhbmQgX19ZX18sIG9yIHRoZXkgYXJlIGNvbW1vbiB0byBhbGwgcmVm ZXJlbnRzIGluIHRoZSBkb21haW5zIG9mIF9fWF9fIGFuZCBfX1lfXy4gU2VlICgofCNCb3VuZF92 YXJpYWJsZXNfYW5kX2NvbnN0YW50c19pbl9hX3N0YXRlbWVudHxTZWN0aW9uIDMuMi4yKSkgZm9y IGRldGFpbC4KCgoKQmVjYXVzZSB0aGV5IGFyZSBjbWF2byBpbiBzZWxtYSdvIEpPSSwgdGhleSBj YW4gY29ubmVjdCB3aGF0IGFyZSBub3Qgc3VtdGksIGJ1dCB0aGUgbWVhbmluZ3MgaW4gdGhpcyB1 c2FnZSBhcmUgbm90IG9mZmljaWFsbHkgZGVmaW5lZC4gVGhleSBjYW4gZm9ybSBhbHNvIGZvcmV0 aG91Z2h0IGNvbm5lY3RpdmUge0pPSSBnaSBfX1hfXyBnaSBfX1lfX30uIFdoZW4gdGhlIGZvcmV0 aG91Z2h0IGNvbm5lY3RpdmVzIGFyZSB1c2VkIGZvciBzdW10aSwgdGhleSBmb3JtIHRoZSBzYW1l IGNvbnN0YW50cyBhcyB0aGUgYWZ0ZXJ0aG91Z2h0IHVzYWdlIGRlZmluZWQgYWJvdmUuCgoKCiEh IyBOb3RlcwoKVGhpcyBzZWN0aW9uIGNvbnNpc3RzIG9mIG5vdGVzIG9mIHRoZSBhdXRob3IgZ3Vz a2FudCwgYW5kIGl0IGlzIG5vdCBhdCBhbGwgaW1wb3J0YW50IGZvciB1bmRlcnN0YW5kaW5nIGdh ZHJpLgoKCgohISEjIEFib3V0IG9udG9sb2d5CgpeKChCUEZLIFNlY3Rpb246IGdhZHJpfCcnUG9z aXRpdmUgaW1wYWN0OiBTb21lIHVzYWdlcyB0aGF0IG1ha2UgbGl0dGxlIHNlbnNlIHdpdGgge2xv fT17c3Unb30gYmVjb21lIHZhbGlkYXRlZC4nJykpIGFjY29yZGluZyB0byBCUEZLLl4KCgoKe2xv fT17c3Unb30gd2FzIGFiYW5kb25lZCwgYnV0IGJlY2F1c2Ugb2YgdGhlIGZhY3QgdGhhdCB7bG8g YnJvZGF9IGlzIGEgcGx1cmFsIGNvbnN0YW50LCBhbmQgYmVjYXVzZSBvZiBhIGxvZ2ljYWwgYXhp b20gb2YgcGx1cmFsIGNvbnN0YW50IGluICgofCNBX2xvZ2ljYWxfYXhpb21fb25fcGx1cmFsX2Nv bnN0YW50fFNlY3Rpb24gMi4yLjYpKSwge2xvIGJyb2RhIGN1IGJyb2RlfSBpbXBsaWNpdGx5IGlt cGxpZXMge3N1J29pIGRhIGJyb2RlfS4KCgoKISEhIyBjbGF4dSB4MgoKXigoQlBGSyBTZWN0aW9u OiBnYWRyaXxsZSBjbWFuYSBfX2xvX18gY2lkamEgYmEgY2xheHUpKX5wcH4KCn4vcHB+ICAnJ0lu IHRoZSBtb3VudGFpbnMgdGhlcmUgaXMgbm8gZm9vZC4nJ35wcH4KCn4vcHB+KChsYXBvaSBwZWx4 dSBrdSdvIHRyYWp5bm9ibGkpKV4KCgoKRXhwYW5kaW5nIHtsbyBjaWRqYX0sIAoKXmxlIGNtYW5h IHpvJ2Ugbm9pIGtlJ2EgY2lkamEga3UnbyBiYSBjbGF4dV4KCkFjY29yZGluZyB0byAoKEJQRksg U2VjdGlvbjogU3Vib3JkaW5hdG9yc3x0aGUgZGVmaW5pdGlvbiBvZiB7bm9pfSkpLCAKCl5sZSBj bWFuYSB6bydlIHRvIHJpIHhpIHJhdSBjaWRqYSB0b2kgYmEgY2xheHVeCgpUaGUgcGFydCBiZXR3 ZWVuIHt0b30gYW5kIHt0b2l9IGlzIGEgcGFyZW50aGV0aWNhbCBleHByZXNzaW9uLiBUaGUgbWFp biBwcm9wb3NpdGlvbiBpcyB0aHVzCgpebGUgY21hbmEgem8nZSBiYSBjbGF4dV4KCndoZXJlIHt6 bydlfSBpcyBhIHBsdXJhbCBjb25zdGFudC4gQWNjb3JkaW5nIHRvIHRoZSBsb2dpY2FsIGF4aW9t IG9mIHBsdXJhbCBjb25zdGFudCBpbiAoKHwjQV9sb2dpY2FsX2F4aW9tX29uX3BsdXJhbF9jb25z dGFudHxTZWN0aW9uIDIuMi42KSksIFRoaXMgcHJvcG9zaXRpb24gaW1wbGllcyAKCl5zdSdvaSBk YSB6byd1IGxlIGNtYW5hIGRhIGJhIGNsYXh1XgoKd2hpY2ggbWVhbnMgdGhhdCB0aGVyZSBpcyBh IHJlZmVyZW50IG9mICJ3aGF0IGlzIGxhY2tlZCBieSB0aGUgbW91bnRhaW4iIGluIHRoZSB1bml2 ZXJzZSBvZiBkaXNjb3Vyc2UuCgpUaGUgc3RyYW5nZW5lc3MgY29tZXMgZnJvbSB0aGUgZmFjdCB0 aGF0IHgyIG9mIHtjbGF4dX0gX19hcHBhcmVudGx5X18gbWVhbnMgbm9uLWV4aXN0ZW5jZS4gV2Ug Y2FuIGludGVycHJldCBpdCBjb25zaXN0ZW50bHkgdGhhdCB7Y2xheHV9IG1lYW5zIG9ubHkgdGhh dCB0aGUgcmVmZXJlbnQgb2YgeDIgaXMgbm90IHBsYWNlZCBhdCB0aGUgcmVmZXJlbnQgb2YgeDEs IGFuZCBpdCBzYXlzIG5vdGhpbmcgYWJvdXQgZXhpc3RlbmNlIGluIHRoZSB1bml2ZXJzZSBvZiBk aXNjb3Vyc2UuIAoKCgohISEjIHpvJ2UgaXMgYSBwbHVyYWwgY29uc3RhbnQKCkFzc3VtaW5nIHRo YXQge3pvJ2V9IGNhbiBiZSBhbnkgb2YgZnJlZSB2YXJpYWJsZSwgYm91bmQgcGx1cmFsIHZhcmlh YmxlIG9yIHBsdXJhbCBjb25zdGFudCwgdGhlIGxhbmd1YWdlIHdvdWxkIGJlIG1vcmUgcmVhc29u YWJsZSBmcm9tIGEgbG9naWNhbCBwb2ludCBvZiB2aWV3LgoKSG93ZXZlciwgdGhpcyBpZGVhIHdh cyBjbGVhcmx5IGRlbmllZCBpbiBbaHR0cHM6Ly9ncm91cHMuZ29vZ2xlLmNvbS9kL3RvcGljL2xv amJhbi9SQXRFN1lrLWRxdy9kaXNjdXNzaW9ufHRoZSBkaXNjdXNzaW9uXS4gVGhhdCBpcyB0byBz YXksIHt6bydlfSBpcyBhbHdheXMgYSBwbHVyYWwgY29uc3RhbnQgYWNjb3JkaW5nIHRvIHRoZSBv ZmZpY2lhbCBpbnRlcnByZXRhdGlvbi4KCkkgd2lsbCBleGFtaW5lIHRoZXNlIGNvbmZsaWN0aW5n IGlkZWFzLCBhbmQgdHJ5IHRvIHNvbHZlIHNvbWUgcHJvYmxlbXMgY2F1c2VkIGJ5IHRoZSBvZmZp Y2lhbCBpbnRlcnByZXRhdGlvbiB0aGF0IHt6bydlfSBpcyBhIHBsdXJhbCBjb25zdGFudC4KCgoK ISEhISMgSWYgem8nZSBjb3VsZCBiZSBhIGJvdW5kIHBsdXJhbCB2YXJpYWJsZQoKSSB3aWxsIGxp c3QgdXAgaGVyZSBtZXJpdHMgYW5kIGRlbWVyaXRzIG9mIGFzc3VtaW5nIHRoYXQge3pvJ2V9IGlu IG5vIGNvbnRleHQgaXMgYSBmcmVlIHZhcmlhYmxlLCBhbmQgdGhhdCB0aGUgY29udGV4dCBkZXRl cm1pbmVzIHRoZSB1bml2ZXJzZSBvZiBkaXNjb3Vyc2UsIGJhc2VkIG9uIHdoaWNoIHt6bydlfSBp cyByZWdhcmRlZCBhcyBzdWJzdGl0dXRlZCBmb3IgYnkgYSBwbHVyYWwgY29uc3RhbnQsIG9yIGJv dW5kIGJ5IGEgcGx1cmFsIHF1YW50aWZpZXIuCgoKCiEhISEhIyBNZXJpdHMKClVuZGVyIHRoaXMg YXNzdW1wdGlvbiwgdGhlcmUgaXMgbm8gbmVlZCB0byBleGNsdWRlIHRoZSBjYXNlIFBBPTAgb2Yg e2xvIFBBIGJyb2RhfSwgb3IgZ2l2ZSBpdCBhbiB1bm9mZmljaWFsIGRlZmluaXRpb24gYXMgZGlz Y3Vzc2VkIGluICgofCNDYW5ub3Rfc2F5X3plcm98U2VjdGlvbiAzLjEuMi4xKSkuIEl0IGlzIGJl Y2F1c2UgaWYge2xvIFBBIGJyb2RhfSBpbiBubyBjb250ZXh0IGlzIGEgZnJlZSB2YXJpYWJsZSwg d2UgY2FuIGludGVycHJldCBpdCwgd2hlbiBhIGNvbnRleHQgaXMgZ2l2ZW4sIGFzIHN1YnN0aXR1 dGVkIGZvciBieSBhIHBsdXJhbCBjb25zdGFudCBvciBib3VuZCBieSBhIHBsdXJhbCBxdWFudGlm aWVyIGxpa2Uge3N1J29pIGRhfSBpbiB0aGUgY2FzZSBvZiBQQT4wOyB3ZSBjYW4gaW50ZXJwcmV0 IGl0IGFzIGJvdW5kIGJ5IHtuYWt1IHN1J29pIGRhfSBpbiB0aGUgY2FzZSBvZiBQQT0wIGFzIHdl bGwuCgoKClRoaXMgYXNzdW1wdGlvbiBtYWtlcyB0aGUgaW50ZXJwcmV0YXRpb24gY2xvc2VyIHRv IG5hdHVyYWwgbGFuZ3VhZ2VzIG5vdCBvbmx5IGluIHRoZSBjYXNlIFBBPTAgYnV0IGFsc28gaW4g dGhlIGNhc2UgUEE+MC4gRm9yIGV4YW1wbGUsIAoKXmxvIGNpIHhhbnRvIGN1IHppbGthbmN1IGxp IGNpIGxvIHhhbnRvXgoKVGhlIGxhc3Qge2xvIHhhbnRvfSBpcyBhIHVuaXQgb2YgY291bnRpbmcu IEl0IGlzIG5hdHVyYWwgdG8gaW50ZXJwcmV0IGl0IGFzIGEgYm91bmQgcGx1cmFsIHZhcmlhYmxl IHF1YW50aWZpZWQgYnkgIjEiIHJhdGhlciB0aGFuIGEgcGx1cmFsIGNvbnN0YW50LCB3aGljaCBz aG91bGQgcmVmZXIgdG8gc29tZXRoaW5nLiBJZiB3ZSBpbnRlcnByZXQgaXQgYXMgYSBib3VuZCBw bHVyYWwgdmFyaWFibGUsIHdlIHNob3VsZCBjb25zaWRlciB0aGUgcmVsYXRpdmUgb3JkZXIgd2l0 aCB0aGUgb3RoZXIgYm91bmQgdmFyaWFibGVzIGFuZCB7bmFrdX0uIFdlIGNhbiBoYW5kbGUgdGhl IG9yZGVyIGZyZWVseSBieSBwdXR0aW5nIHRoZSBhcmd1bWVudHMgaW4gcHJlbmV4LgoKCgpNb3Jl b3ZlciwgdGhpcyBhc3N1bXB0aW9uIGVtYm9kaWVzIHRoZSBwcm9wZXJ0eSBvZiBuYXR1cmFsIGxh bmd1YWdlcyB0aGF0IHRoZSB0cnV0aCB2YWx1ZSBvZiBhIHByb3Bvc2l0aW9uIGluIG5vIGNvbnRl eHQgaXMgZ2VuZXJhbGx5IGluZGVmaW5pdGUuIEJ5IGludGVycHJldGluZyB0aGF0IHt6bydlfSBp biBubyBjb250ZXh0IGlzIGEgZnJlZSB2YXJpYWJsZSwgd2hpY2ggd2lsbCBiZSBzdWJzdGl0dXRl ZCBmb3IgYnkgYSBwbHVyYWwgY29uc3RhbnQgb3IgYm91bmQgYnkgYSBwbHVyYWwgcXVhbnRpZmll ciB3aGVuIGEgY29udGV4dCBpcyBnaXZlbiwgbmF0dXJhbCBpbnRlcnByZXRhdGlvbiBvZiBMb2pi YW4gc2VudGVuY2UgaXMgcG9zc2libGUgd2l0aG91dCBsb3NpbmcgbG9naWNhbCBhc3BlY3RzIGFu ZCBzdHJ1Y3R1cmFsIGJlYXV0eS4KCgoKISEhISEjIERlbWVyaXRzCgpCZWNhdXNlIHt6bydlfSBj YW4gYmUgYSBmcmVlIHZhcmlhYmxlLCBhIGJvdW5kIHBsdXJhbCB2YXJpYWJsZSBvciBhIHBsdXJh bCBjb25zdGFudCBkZXBlbmRpbmcgb24gdGhlIGNvbnRleHQsIGEgc2luZ2xlIGJyaWRpIGRvZXMg bm90IGxldCBsaXN0ZW5lcnMgZGV0ZXJtaW5lIHdoaWNoIG9mIHRoZW0gaXMgdGhlIGN1cnJlbnQg e3pvJ2V9LCBvciB0aGUgdHJ1dGggdmFsdWUgb2YgdGhlIHByb3Bvc2l0aW9uLgoKSG93ZXZlciwg c3VjaCBhbiBhc3BlY3QgdGhhdCB0aGUgdHJ1dGggdmFsdWUgb2YgYSBwcm9wb3NpdGlvbiBnZW5l cmFsbHkgZGVwZW5kcyBvbiB0aGUgY29udGV4dCBpcyBhIGNvbW1vbiBwcm9wZXJ0eSB0byBhbGwg bmF0dXJhbCBsYW5ndWFnZXMuCgoKCk9uIHRoZSBvdGhlciBoYW5kLCBldmVuIGlmIHdlIHRha2Ug dGhlIG9mZmljaWFsIGludGVycHJldGF0aW9uIHRoYXQge3pvJ2V9IGlzIGFsd2F5cyBhIHBsdXJh bCBjb25zdGFudCwgbGlzdGVuZXJzIGFyZSBvbmx5IGluZm9ybWVkIGJ5IHt6bydlfSB0aGF0IGEg Y2VydGFpbiB1bml2ZXJzZSBvZiBkaXNjb3Vyc2UgaXMgZ2l2ZW4uIFdpdGggbm8gY29udGV4dCwg dGhlcmUgaXMgbm8gd2F5IHRvIGRldGVybWluZSB3aGF0IGlzIHRoZSB1bml2ZXJzZSBvZiBkaXNj b3Vyc2UuIFRoZSB0cnV0aCB2YWx1ZSBvZiBhIHByb3Bvc2l0aW9uIGluIG5vIGNvbnRleHQgaXMg aW5kZWZpbml0ZSBldmVuIHdpdGggdGhlIG9mZmljaWFsIGludGVycHJldGF0aW9uLgoKCgohISEh IyBQcm9ibGVtcyBjYXVzZWQgYnkgdGhlIGZhY3QgdGhhdCB6bydlIGlzIGEgcGx1cmFsIGNvbnN0 YW50IGFuZCB0aGUgY291bnRlci1tZWFzdXJlcwoKVGhlIG9mZmljaWFsIGludGVycHJldGF0aW9u IHRoYXQge3pvJ2V9IGlzIGEgcGx1cmFsIGNvbnN0YW50IGNhdXNlcyB0aGUgZm9sbG93aW5nIHBy b2JsZW1zLgoKCgohISEhISMgQ2Fubm90IGV4cHJlc3MgcGx1cmFsIHF1YW50aWZpY2F0aW9uIG9m IG5vbi1leGlzdGVuY2UKClJlYXNvbmFibGUgaW50ZXJwcmV0YXRpb24gb2Yge2xvIG5vIGJyb2Rh fSBpcyBvZmZpY2lhbGx5IGV4Y2x1ZGVkIGZyb20gTG9qYmFuLiBUaGF0IGlzIHRvIHNheSwgTG9q YmFuIGNhbm5vdCBvZmZpY2lhbGx5IGRlYWwgd2l0aCB0aGUgZXhwcmVzc2lvbiAidGhlcmUgaXMg bm90IHdoYXQgaXMgc3Vic3RpdHV0ZWQgZm9yIHtkYX0iIGZvciBwbHVyYWwgdmFyaWFibGUgKHtu YWt1IHN1J29pIGRhfSksIHdoaWNoIGlzIG5hdHVyYWxseSBkZWFsdCB3aXRoIGJ5IHBsdXJhbCBx dWFudGlmaWNhdGlvbi4gSW4gb3JkZXIgdG8gZXhwcmVzcyB7bG8gbm8gYnJvZGF9IHdpdGggcmVh c29uYWJsZSBpbnRlcnByZXRhdGlvbiwgd2UgbmVlZCBhbiB1bm9mZmljaWFsIGludGVycHJldGF0 aW9uIGxpa2UgKCh8I0Nhbm5vdF9zYXlfemVyb3xTZWN0aW9uIDMuMS4yLjEpKS4KCgoKISEhISEj IENhbm5vdCBleHByZXNzIGJvdW5kIHBsdXJhbCB2YXJpYWJsZSwgd2hpY2ggZG9lcyBub3Qgc3Bl Y2lmeSBhIHJlZmVyZW50CgpCZWNhdXNlIHRoZSBvZmZpY2lhbCBpbnRlcnByZXRhdGlvbiBkb2Vz IG5vdCBhbGxvdyB7bG8gUEEgYnJvZGF9IHRvIGJlIGEgYm91bmQgcGx1cmFsIHZhcmlhYmxlIGRl cGVuZGluZyBvbiB0aGUgY29udGV4dCwgYW4gYXJndW1lbnQgdGhhdCBzaG91bGQgcmVmZXIgdG8g bm90aGluZywgYSB1bml0IG9mIGNvdW50aW5nIGZvciBleGFtcGxlLCBzaG91bGQgYmUgaW50ZXJw cmV0ZWQgYXMgYSBwbHVyYWwgY29uc3RhbnQsIHdoaWNoIHJlZmVycyB0byBzb21ldGhpbmcuIEZv ciBleGFtcGxlIAoKXmxvIGNpIHhhbnRvIGN1IHppbGthbmN1IGxpIGNpIGxvIHhhbnRvXgoKZm9y IHdoaWNoIHdlIGFyZSBjb21wZWxsZWQgdG8gaW50ZXJwcmV0IHRoYXQgdGhlcmUgaXMgdGhlICJF bGVwaGFudCBkZXMgQXJjaGl2ZXMiIGluIHRoZSB1bml2ZXJzZSBvZiBkaXNjb3Vyc2UsIGp1c3Qg bGlrZSB0aGUgIk3DqHRyZSBkZXMgQXJjaGl2ZXMiIChhbHRob3VnaCBpdCBoYXMgYWxyZWFkeSBm aW5pc2hlZCBpdHMgcm9sZSksIGluIG9yZGVyIHRvIHVzZSB7bG8geGFudG99IGFzIGEgdW5pdCBp biBhIHByb3Bvc2l0aW9uLgoKCgohISEhISMgQ2Fubm90IGV4cHJlc3MgZWxlbWVudGFyeSBwYXJ0 aWNsZXMgd2l0aCBsbwoKQXMgbG9uZyBhcyB7bG8gYnJvZGF9IGlzIGludGVycHJldGVkIGFzIGEg cGx1cmFsIGNvbnN0YW50LCB0aGUgZm9sbG93aW5nIExvamJhbiBzZW50ZW5jZSBpcyBtZWFuaW5n bGVzczoKCgoKXmxvIGd1c2thJ3UgY3UgZ2F1IGptYWppIHNlcGknbyBsbyBsZW5qbyBnaSdlIHBh Z3JlIGxvIGZlbnJhfnBwfgoKfi9wcH4nJ1Bob3RvbnMgYXJlIGNvbmRlbnNlZCBieSBsZW5zZXMs IGFuZCBwYXNzIHRocm91Z2ggc2xpdHMuJydeCgoKCkFjdHVhbGx5LCBwaG90b25zIGFyZSBpbmRp dmlkdWFscywgYW5kIHdlIGNhbiBjb3VudCB0aGVtLCBidXQgd2UgY2Fubm90IGRpc3Rpbmd1aXNo IGVhY2ggb2YgdGhlbTogd2UgY2Fubm90IHJlZmVyIHRvIGEgc3BlY2lmaWMgcGhvdG9uLiBRdWFu dGlmaWNhdGlvbiBpcyBpbmRlZWQgc3VpdGFibGUgZm9yIGFyZ3VtZW50cyB0aGF0IHJlcHJlc2Vu dCBwYXJ0aWNsZXMgbGlrZSBwaG90b25zLiBIb3dldmVyLCBMb2piYW4gb2ZmaWNpYWxseSBkb2Vz IG5vdCBoYXZlIGEgcGx1cmFsIHF1YW50aWZpZXIsIGFuZCBjYW5ub3QgZXhwcmVzcyBxdWFudGlm aWNhdGlvbiBvZiAgc3VtdGkgdGhhdCBzYXRpc2ZpZXMgc2VsYnJpIGJvdGggY29sbGVjdGl2ZWx5 IGFuZCBkaXN0cmlidXRpdmVseS4gTW9yZW92ZXIsIGJlY2F1c2Uge2xvIGJyb2RhfSBpcyBvZmZp Y2lhbGx5IGFsd2F5cyBhIHBsdXJhbCBjb25zdGFudCwgdGhlcmUgaXMgbm8gcm9vbSB0byBpbnRl cnByZXQge2xvIGd1c2thJ3V9IGFzIGEgYm91bmQgcGx1cmFsIHZhcmlhYmxlLiBJbiBvcmRlciB0 byBzb2x2ZSB0aGUgcHJvYmxlbSwgd2Ugc2hvdWxkIHVzZSBhbiB1bm9mZmljaWFsIHBsdXJhbCBx dWFudGlmaWVyIHtzdSdvaX0gc3VnZ2VzdGVkIGJ5ICgoeG9yeGVzfGxhIHhvcnhlcykpLgoKCgpe c3Unb2kgZGEgcG9pIGtlJ2EgZ3Vza2EndSBjdSBnYXUgam1hamkgc2VwaSdvIGxvIGxlbmpvIGdp J2UgcGFncmUgbG8gZmVucmFeCgoKCiEhISEhIyBIb3cgdG8gaW50ZXJwcmV0IGEgcHJldmFpbGlu ZyB2aWV3CgpUaGUgZm9sbG93aW5nIGV4YW1wbGUgaXMgZ2l2ZW4gb24gKChCUEZLIFNlY3Rpb246 IGdhZHJpfEJQRksncyBnYWRyaSBwYWdlKSk6CgoKCl5sbyBwYSBwaXhyYSBjdSBzZSB2YW1qaSBs byBraSdvIHZhbHNpfnBwfgoKfi9wcH4nJ09uZSBwaWN0dXJlIGlzIHdvcnRoIGEgdGhvdXNhbmQg d29yZHMuJycgXgoKCgpFdmVuIGluIHN1Y2ggYSBzZW50ZW5jZSB0aGF0IHNlZW1zIGEgcHJldmFp bGluZyB2aWV3LCB7bG8gcGEgcGl4cmF9IGFuZCB7bG8ga2knbyB2YWxzaX0gYXJlIGludGVycHJl dGVkIGFzIHJlZmVycmluZyB0byBzb21ldGhpbmcuIFdlIHNob3VsZCBwcmVwYXJlIHNvbWUgcmVm ZXJlbnRzIG9mIHN1bXRpIG9mIGEgcHJldmFpbGluZyB2aWV3IGluIHRoZSB1bml2ZXJzZSBvZiBk aXNjb3Vyc2UuCgoKCkludHVpdGlvbmFsbHkgc3BlYWtpbmcsIHdlIG1heSB1c2Uge2xvJ2V9IGlu c3RlYWQgb2Yge2xvfSwgYnV0IHdlIGNhbm5vdCB5ZXQgZXhwbGFpbiB7bG8nZX0gZnJvbSBhIGxv Z2ljYWwgcG9pbnQgb2YgdmlldyBiZWNhdXNlICgoQlBGSyBTZWN0aW9uOiBUeXBpY2Fsc3xhY3R1 YWxseSB0aGVyZSBpcyBubyBvZmZpY2lhbCBjb25jbHVzaW9uIGFib3V0IHJlbGF0aW9uIGJldHdl ZW4ge2xvJ2V9IGFuZCB7bG99KSkuCgoKCkFzIGEgbWV0aG9kIG9mIGF2b2lkaW5nIG1lbnRpb24g b2YgYSByZWZlcmVudCBpbiBhbiBleHByZXNzaW9uIG9mIHByZXZhaWxpbmcgdmlldywgd2UgbWF5 IHB1dCB0aGUgd2hvbGUgcHJvcG9zaXRpb24gaW4gTlUgY2xhdXNlLiBJbiBmYWN0LCB0cnV0aCB2 YWx1ZSBvZiBhIHByb3Bvc2l0aW9uIGluIE5VIGNsYXVzZSBkb2VzIG5vdCBpbmZsdWVuY2UgdHJ1 dGggdmFsdWUgb2YgdGhlIG91dGVyIHByb3Bvc2l0aW9uIChyZWZlcmVudGlhbGx5IG9wYXF1ZTsg dGhpcyB0b3BpYyBpcyByZWxhdGVkIHRvIFtodHRwOi8vbG9qYmFuLmdpdGh1Yi5pby9jbGwvOS83 L3xDTEw5LjddKS4gSW4gb3RoZXIgd29yZHMsIHRoZSB1bml2ZXJzZSBvZiBkaXNjb3Vyc2Ugb2Yg YSBwcm9wb3NpdGlvbiBpbiBOVSBjbGF1c2UgaXMgZGlmZmVyZW50IGZyb20gdGhlIHVuaXZlcnNl IG9mIGRpc2NvdXJzZSBvZiBhIHByb3Bvc2l0aW9uIG91dCBvZiBOVS4KCklmIHdlIGFjY2VwdCB0 aGlzIG1ldGhvZCwgdGhlIGV4YW1wbGUgYWJvdmUgd2lsbCBiZSBtb2RpZmllZCwgdXNpbmcge3Np J299IGZvciBleGFtcGxlLCBhcyBmb2xsb3dzOgoKCgpec2knbyBsbyBwYSBwaXhyYSBjdSBzZSB2 YW1qaSBsbyBraSdvIHZhbHNpIH5wcH4KCn4vcHB+JydJcyBhbiBpZGVhIHRoYXQgb25lIHBpY3R1 cmUgaXMgd29ydGggYSB0aG91c2FuZCB3b3Jkcy4nJ14KCgoKd2hlcmUgeDEgb2Yge3NpJ299IGlz IGltcGxpY2l0IHt6bydlfSwgd2hpY2ggaGFzIGEgcmVmZXJlbnQgaW4gdGhlIHVuaXZlcnNlIG9m IGRpc2NvdXJzZS4gQXMgYW4gaW50ZXJwcmV0YXRpb24gb2YgYSBwcmV2YWlsaW5nIHZpZXcsIHN1 cHBvc2luZyBhIHJlZmVyZW50IG9mIHgxIG9mIHtzaSdvfSBpcyBtb3JlIG5hdHVyYWwgdGhhbiBz dXBwb3NpbmcgYSByZWZlcmVudCBvZiB7bG8gcGEgcGl4cmF9IG9yIHtsbyBraSdvIHZhbHNpfS4K CihTdWNoIGEgYnJpZGkgd2l0aCBubyB0ZXJicmkgaXMgY2FsbGVkICJvYnNlcnZhdGl2ZSIgaW4g KChUaGUgQ29tcGxldGUgTG9qYmFuIExhbmd1YWdlKSksIGJ1dCB0aGlzIGludGVycHJldGF0aW9u IGlzIG5vdCBzdWl0YWJsZSBoZXJlLCBiZWNhdXNlIHRoaXMgaXMgbm90IHRoZSB1dHRlcmFuY2Ug dGhhdCBpcyBhbHdheXMgY2F1c2VkIGJ5IGEgc3BlY2lmaWMgc3RpbXVsdXMuKQoKCgohISEhISMg SG93IHRvIGV4cHJlc3MgZnJlZSB2YXJpYWJsZXMKCkFzIGEgY3VzdG9tLCBrbydWL2ZvJ1Ygc2Vy aWVzIG9mIEtPaEE0IGFyZSB1c2VkIGFzIGZyZWUgdmFyaWFibGVzIGluIGRlZmluaXRpb25zIG9m IHdvcmRzIG9yIHNvbWV0aGluZy4gSG93ZXZlciwgdGhleSBhcmUgYWN0dWFsbHkgcGx1cmFsIGNv bnN0YW50cy4KCklmIHdlIGFiYW5kb24gdGhpcyBjdXN0b20sIHtrZSdhfSBhbmQge2NlJ3V9IGFy ZSBzdWl0YWJsZSBmb3IgZXhwcmVzc2lvbiB3aXRoIGZyZWUgdmFyaWFibGVzIChvcGVuIHNlbnRl bmNlKSwgYmVjYXVzZSB0aGUgdHJ1dGggdmFsdWUgb2YgYnJpZGkgaW4gd2hpY2gge2tlJ2F9IG9y IHtjZSd1fSBpcyB1c2VkIGlzIGluZGVmaW5pdGUuIAoKSW4gYSBicmlkaSBpbiB3aGljaCB7a2Un YX0gYXBwZWFycyB0d28gdGltZXMgb3IgbW9yZSwgdGhlc2Uge2tlJ2F9cyBhcmUgcmVnYXJkZWQg YXMgcmVwcmVzZW50aW5nIGFuIGlkZW50aWNhbCBzdW10aToKCl5kYSBwb2kga2UnYSBneSB4bHVy YSBrZSdhIGN1IHBhbmNpIGxvIGthJ2Ugc2UgY2l0a2F+cHB+Cgp+L3Bwfn4tLX4gKChsbyBudSBi aW54bykpXgoKT24gdGhlIG90aGVyIGhhbmQsIGluIGEgYnJpZGkgaW4gd2hpY2gge2NlJ3V9IGFw cGVhcnMgdHdvIHRpbWVzIG9yIG1vcmUsIHRoZXNlIHtjZSd1fXMgYXJlIG5vdCBuZWNlc3Nhcmls eSByZWdhcmRlZCBhcyByZXByZXNlbnRpbmcgYW4gaWRlbnRpY2FsIHN1bXRpOgoKXmxvIG1hbXRh IGpvJ3UgbG8gbWVuc2kgY3Ugc2lteHUgbG8ga2EgY2UndSBjaXNtYSBmYSdhIGNlJ3V+cHB+Cgp+ L3Bwfn4tLX4gKChsbyBudSBiaW54bykpXgoKQ29uc2lkZXJpbmcgdGhlc2UgcHJvcGVydGllcywg aW4gb3JkZXIgdG8gZXhwcmVzcyBhbiBvcGVuIHNlbnRlbmNlIHdpdGggZnJlZSB2YXJpYWJsZXMg aW4gbm8gY29udGV4dCwge2NlJ3V9IGlzIG1vcmUgY29udmVuaWVudCB0aGFuIHtrZSdhfSB3aGlj aCBoYXMgcmVzdHJpY3Rpb24gb2YgaWRlbnRpY2FsIHN1bXRpLgoKXmNlJ3UgY2UndSBjaXRrYX5w cH4KCn4vcHB+JydBIGVhdHMgQi4nJyAoT3BlbiBzZW50ZW5jZSwgdHJ1dGggdmFsdWUgaW5kZWZp bml0ZS4pXgoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f Cldpa2ljaGFuZ2VzIG1haWxpbmcgbGlzdApXaWtpY2hhbmdlc0Bsb2piYW4ub3JnCmh0dHA6Ly9t YWlsLmxvamJhbi5vcmcvbWFpbG1hbi9saXN0aW5mby93aWtpY2hhbmdlcwo=