From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Kiper Subject: [PATCH v11 08/13] x86/boot: implement early command line parser in C Date: Mon, 5 Dec 2016 23:25:13 +0100 Message-ID: <1480976718-12198-9-git-send-email-daniel.kiper@oracle.com> References: <1480976718-12198-1-git-send-email-daniel.kiper@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta6.messagelabs.com ([193.109.254.103]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cE1iE-0003HK-Vq for xen-devel@lists.xenproject.org; Mon, 05 Dec 2016 22:26:19 +0000 In-Reply-To: <1480976718-12198-1-git-send-email-daniel.kiper@oracle.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xenproject.org Cc: jgross@suse.com, sstabellini@kernel.org, andrew.cooper3@citrix.com, cardoe@cardoe.com, pgnet.dev@gmail.com, ning.sun@intel.com, julien.grall@arm.com, jbeulich@suse.com, qiaowei.ren@intel.com, gang.wei@intel.com, fu.wei@linaro.org List-Id: xen-devel@lists.xenproject.org Q3VycmVudCBlYXJseSBjb21tYW5kIGxpbmUgcGFyc2VyIGltcGxlbWVudGF0aW9uIGluIGFzc2Vt YmxlcgppcyB2ZXJ5IGRpZmZpY3VsdCB0byBjaGFuZ2UgdG8gcmVsb2NhdGFibGUgc3R1ZmYgdXNp bmcgc2VnbWVudApyZWdpc3RlcnMuIFRoaXMgcmVxdWlyZXMgYSBsb3Qgb2YgY2hhbmdlcyBpbiB2 ZXJ5IHdlaXJkIGFuZApmcmFnaWxlIGNvZGUuIFNvLCByZWltcGxlbWVudCB0aGlzIGZ1bmN0aW9u YWxpdHkgaW4gQy4gVGhpcwp3YXkgY29kZSB3aWxsIGJlIHJlbG9jYXRhYmxlIG91dCBvZiB0aGUg Ym94ICh3aXRob3V0IHBsYXlpbmcKd2l0aCBzZWdtZW50IHJlZ2lzdGVycykgYW5kIG11Y2ggZWFz aWVyIHRvIG1haW50YWluLgoKQWRkaXRpb25hbGx5LCBwdXQgYWxsIGNvbW1vbiBjbWRsaW5lLmMg YW5kIHJlbG9jLmMgZGVmaW5pdGlvbnMKaW50byBkZWZzLmggaGVhZGVyLiBUaGlzIHdheSB3ZSBk byBub3QgZHVwbGljYXRlIG5lZWRsZXNzbHkKc29tZSBzdHVmZi4KCkFuZCBmaW5hbGx5IHJlbW92 ZSB1bnVzZWQgeGVuL2luY2x1ZGUvYXNtLXg4Ni9jb25maWcuaApoZWFkZXIgZnJvbSByZWxvYy5j IGRlcGVuZGVuY2llcy4KClN1Z2dlc3RlZC1ieTogQW5kcmV3IENvb3BlciA8YW5kcmV3LmNvb3Bl cjNAY2l0cml4LmNvbT4KU2lnbmVkLW9mZi1ieTogRGFuaWVsIEtpcGVyIDxkYW5pZWwua2lwZXJA b3JhY2xlLmNvbT4KQWNrZWQtYnk6IEphbiBCZXVsaWNoIDxqYmV1bGljaEBzdXNlLmNvbT4KLS0t CnY3IC0gc3VnZ2VzdGlvbnMvZml4ZXM6CiAgIC0gYWRkIG1pbigpIG1hY3JvCiAgICAgKHN1Z2dl c3RlZCBieSBKYW4gQmV1bGljaCksCiAgIC0gYWRkIHBhZGRpbmcgdG8gZWFybHlfYm9vdF9vcHRz X3QKICAgICBpbiBtb3JlIHN0YW5kYXJkIHdheQogICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxp Y2gpLAogICAtIHNpbXBsaWZ5IGRlZnMuaCBkZXBlbmRlbmNpZXMKICAgICAoc3VnZ2VzdGVkIGJ5 IEphbiBCZXVsaWNoKS4KCnY2IC0gc3VnZ2VzdGlvbnMvZml4ZXM6CiAgIC0gcHV0IGNvbW1vbiBj bWRsaW5lLmMgYW5kIHJlbG9jLmMKICAgICBkZWZpbml0aW9ucyBpbnRvIGRlZnMuaCBoZWFkZXIK ICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKSwKICAgLSB1c2UgeGVuL2luY2x1ZGUveGVu L3N0ZGJvb2wuaAogICAgIGFuZCBib29sIHR5cGUgZnJvbSBpdCBpbnN0ZWFkCiAgICAgb2Ygb3du IGRlZmluZWQgYm9vbF90CiAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCksCiAgIC0gZGVm aW5lIGRlbGltX2NoYXJzIGFzIGNvbnN0YW50CiAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGlj aCksCiAgIC0gcHJvcGVybHkgYWxpZ24gdHJhbXBvbGluZS5TOmVhcmx5X2Jvb3Rfb3B0cyBzdHJ1 Y3QKICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKSwKICAgLSBmaXggb3ZlcmZsb3cgY2hl Y2sgaW4gc3RydG91aSgpCiAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCksCiAgIC0gcmVt b3ZlIHVudXNlZCB4ZW4vaW5jbHVkZS9hc20teDg2L2NvbmZpZy5oCiAgICAgaGVhZGVyIGZyb20g cmVsb2MuYyBkZXBlbmRlbmNpZXMsCiAgIC0gaW1wcm92ZSBjb21taXQgbWVzc2FnZS4KCnY0IC0g c3VnZ2VzdGlvbnMvZml4ZXM6CiAgIC0gbW92ZSB0byBzdGRjYWxsIGNhbGxpbmcgY29udmVudGlv bgogICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpLAogICAtIGRlZmluZSBib29sX3QgYW5k IHVzZSBpdCBwcm9wZXJseQogICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpLAogICAtIHB1 dCBsaXN0IG9mIGRlbGltaXRlciBjaGFycyBpbnRvCiAgICAgc3RhdGljIGNvbnN0IGNoYXJbXQog ICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpLAogICAtIHVzZSBzdHJsZW4oKSBpbnN0ZWFk IG9mIHN0cmxlbl9vcHQoKQogICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpLAogICAtIGNo YW5nZSBzdHJ0b2koKSB0byBzdHJ0b3VpKCkgYW5kCiAgICAgb3B0aW1pemUgaXQgYSBiaXQKICAg ICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKSwKICAgLSBkZWZpbmUgc3RyY2hyKCkgYW5kIHVz ZSBpdCBpbiBzdHJ0b3VpKCkKICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKSwKICAgLSBv cHRpbWl6ZSB2Z2FfcGFyc2UoKQogICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpLAogICAt IG1vdmUgIWNtZGxpbmUgY2hlY2sgZnJvbSBhc3NlbWJseSB0byBDCiAgICAgKHN1Z2dlc3RlZCBi eSBKYW4gQmV1bGljaCksCiAgIC0gcmVtb3ZlIG15IG5hbWUgZnJvbSBjb3B5cmlnaHQgKE9yYWNs ZSByZXF1aXJlbWVudCkKICAgICAoc3VnZ2VzdGVkIGJ5IEtvbnJhZCBSemVzenV0ZWsgV2lsayku Cgp2MyAtIHN1Z2dlc3Rpb25zL2ZpeGVzOgogICAtIG9wdGltaXplIHNvbWUgY29kZQogICAgIChz dWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpLAogICAtIHB1dCBWRVNBIGRhdGEgaW50byBlYXJseV9i b290X29wdHNfdCBtZW1iZXJzCiAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCksCiAgIC0g cmVuYW1lIHNvbWUgZnVuY3Rpb25zIGFuZCB2YXJpYWJsZXMKICAgICAoc3VnZ2VzdGVkIGJ5IEph biBCZXVsaWNoKSwKICAgLSBtb3ZlIGFyb3VuZCB2aWRlby5oIGluY2x1ZGUgaW4geGVuL2FyY2gv eDg2L2Jvb3QvdHJhbXBvbGluZS5TCiAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCksCiAg IC0gZml4IGNvZGluZyBzdHlsZQogICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpLAogICAt IGZpeCBidWlsZCB3aXRoIG9sZGVyIEdDQwogICAgIChzdWdnZXN0ZWQgYnkgS29ucmFkIFJ6ZXN6 dXRlayBXaWxrKSwKICAgLSByZW1vdmUgcmVkdW5kYW50IGNvbW1lbnRzCiAgICAgKHN1Z2dlc3Rl ZCBieSBKYW4gQmV1bGljaCksCiAgIC0gYWRkIHNvbWUgY29tbWVudHMKICAgLSBpbXByb3ZlIGNv bW1pdCBtZXNzYWdlCiAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCkuCi0tLQogLmdpdGln bm9yZSAgICAgICAgICAgICAgICAgICAgIHwgICAgNSArLQogeGVuL2FyY2gveDg2L01ha2VmaWxl ICAgICAgICAgIHwgICAgMiArLQogeGVuL2FyY2gveDg2L2Jvb3QvTWFrZWZpbGUgICAgIHwgICAx MSArLQogeGVuL2FyY2gveDg2L2Jvb3QvYnVpbGQzMi5tayAgIHwgICAgMiArCiB4ZW4vYXJjaC94 ODYvYm9vdC9jbWRsaW5lLlMgICAgfCAgMzY3IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KIHhlbi9hcmNoL3g4Ni9ib290L2NtZGxpbmUuYyAgICB8ICAzNDAgKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogeGVuL2FyY2gveDg2L2Jvb3QvZGVmcy5o ICAgICAgIHwgICA1OCArKysrKysrCiB4ZW4vYXJjaC94ODYvYm9vdC9lZGQuUyAgICAgICAgfCAg ICAzIC0KIHhlbi9hcmNoL3g4Ni9ib290L2hlYWQuUyAgICAgICB8ICAgIDggKwogeGVuL2FyY2gv eDg2L2Jvb3QvcmVsb2MuYyAgICAgIHwgICAxMyArLQogeGVuL2FyY2gveDg2L2Jvb3QvdHJhbXBv bGluZS5TIHwgICAxNSArKwogeGVuL2FyY2gveDg2L2Jvb3QvdmlkZW8uUyAgICAgIHwgICAgNyAt CiAxMiBmaWxlcyBjaGFuZ2VkLCA0MzcgaW5zZXJ0aW9ucygrKSwgMzk0IGRlbGV0aW9ucygtKQog ZGVsZXRlIG1vZGUgMTAwNjQ0IHhlbi9hcmNoL3g4Ni9ib290L2NtZGxpbmUuUwogY3JlYXRlIG1v ZGUgMTAwNjQ0IHhlbi9hcmNoL3g4Ni9ib290L2NtZGxpbmUuYwogY3JlYXRlIG1vZGUgMTAwNjQ0 IHhlbi9hcmNoL3g4Ni9ib290L2RlZnMuaAoKZGlmZiAtLWdpdCBhLy5naXRpZ25vcmUgYi8uZ2l0 aWdub3JlCmluZGV4IGEyZjM0YTEuLmQyOTY3ZDggMTAwNjQ0Ci0tLSBhLy5naXRpZ25vcmUKKysr IGIvLmdpdGlnbm9yZQpAQCAtMjUwLDkgKzI1MCwxMCBAQCB4ZW4vYXJjaC9hcm0veGVuLmxkcwog eGVuL2FyY2gveDg2L2FzbS1vZmZzZXRzLnMKIHhlbi9hcmNoL3g4Ni9ib290L21rZWxmMzIKIHhl bi9hcmNoL3g4Ni94ZW4ubGRzCit4ZW4vYXJjaC94ODYvYm9vdC9jbWRsaW5lLlMKIHhlbi9hcmNo L3g4Ni9ib290L3JlbG9jLlMKLXhlbi9hcmNoL3g4Ni9ib290L3JlbG9jLmJpbgoteGVuL2FyY2gv eDg2L2Jvb3QvcmVsb2MubG5rCit4ZW4vYXJjaC94ODYvYm9vdC8qLmJpbgoreGVuL2FyY2gveDg2 L2Jvb3QvKi5sbmsKIHhlbi9hcmNoL3g4Ni9lZmkubGRzCiB4ZW4vYXJjaC94ODYvZWZpL2NoZWNr LmVmaQogeGVuL2FyY2gveDg2L2VmaS9kaXNhYmxlZApkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2 L01ha2VmaWxlIGIveGVuL2FyY2gveDg2L01ha2VmaWxlCmluZGV4IDJhMDc4MWEuLmU3NGZlNjIg MTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9NYWtlZmlsZQorKysgYi94ZW4vYXJjaC94ODYvTWFr ZWZpbGUKQEAgLTIyMCw1ICsyMjAsNSBAQCBjbGVhbjo6CiAJcm0gLWYgYXNtLW9mZnNldHMucyAq LmxkcyBib290LyoubyBib290Lyp+IGJvb3QvY29yZSBib290L21rZWxmMzIKIAlybSAtZiAkKEJB U0VESVIpLy54ZW4tc3ltcy5bMC05XSogYm9vdC8uKi5kCiAJcm0gLWYgJChCQVNFRElSKS8ueGVu LmVmaS5bMC05XSogZWZpLyouZWZpIGVmaS9kaXNhYmxlZCBlZmkvbWtyZWxvYwotCXJtIC1mIGJv b3QvcmVsb2MuUyBib290L3JlbG9jLmxuayBib290L3JlbG9jLmJpbgorCXJtIC1mIGJvb3QvY21k bGluZS5TIGJvb3QvcmVsb2MuUyBib290LyoubG5rIGJvb3QvKi5iaW4KIAlybSAtZiBub3RlLm8K ZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9ib290L01ha2VmaWxlIGIveGVuL2FyY2gveDg2L2Jv b3QvTWFrZWZpbGUKaW5kZXggMDY4OTNkOC4uYzYyNDZjOCAxMDA2NDQKLS0tIGEveGVuL2FyY2gv eDg2L2Jvb3QvTWFrZWZpbGUKKysrIGIveGVuL2FyY2gveDg2L2Jvb3QvTWFrZWZpbGUKQEAgLTEs OSArMSwxNiBAQAogb2JqLWJpbi15ICs9IGhlYWQubwogCi1SRUxPQ19ERVBTID0gJChCQVNFRElS KS9pbmNsdWRlL2FzbS14ODYvY29uZmlnLmggJChCQVNFRElSKS9pbmNsdWRlL3hlbi9tdWx0aWJv b3QuaCBcCitERUZTX0hfREVQUyA9IGRlZnMuaCAkKEJBU0VESVIpL2luY2x1ZGUveGVuL3N0ZGJv b2wuaAorCitDTURMSU5FX0RFUFMgPSAkKERFRlNfSF9ERVBTKSB2aWRlby5oCisKK1JFTE9DX0RF UFMgPSAkKERFRlNfSF9ERVBTKSAkKEJBU0VESVIpL2luY2x1ZGUveGVuL211bHRpYm9vdC5oIFwK IAkgICAgICQoQkFTRURJUikvaW5jbHVkZS94ZW4vbXVsdGlib290Mi5oCiAKLWhlYWQubzogcmVs b2MuUworaGVhZC5vOiBjbWRsaW5lLlMgcmVsb2MuUworCitjbWRsaW5lLlM6IGNtZGxpbmUuYyAk KENNRExJTkVfREVQUykKKwkkKE1BS0UpIC1mIGJ1aWxkMzIubWsgJEAgQ01ETElORV9ERVBTPSIk KENNRExJTkVfREVQUykiCiAKIHJlbG9jLlM6IHJlbG9jLmMgJChSRUxPQ19ERVBTKQogCSQoTUFL RSkgLWYgYnVpbGQzMi5tayAkQCBSRUxPQ19ERVBTPSIkKFJFTE9DX0RFUFMpIgpkaWZmIC0tZ2l0 IGEveGVuL2FyY2gveDg2L2Jvb3QvYnVpbGQzMi5tayBiL3hlbi9hcmNoL3g4Ni9ib290L2J1aWxk MzIubWsKaW5kZXggMzllNjQ1My4uM2QwMTY5OCAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2Jv b3QvYnVpbGQzMi5taworKysgYi94ZW4vYXJjaC94ODYvYm9vdC9idWlsZDMyLm1rCkBAIC0zMiw2 ICszMiw4IEBAIENGTEFHUyA6PSAkKGZpbHRlci1vdXQgLWZsdG8sJChDRkxBR1MpKQogJS5vOiAl LmMKIAkkKENDKSAkKENGTEFHUykgLWMgLWZwaWMgJDwgLW8gJEAKIAorY21kbGluZS5vOiBjbWRs aW5lLmMgJChDTURMSU5FX0RFUFMpCisKIHJlbG9jLm86IHJlbG9jLmMgJChSRUxPQ19ERVBTKQog CiAuUFJFQ0lPVVM6ICUuYmluICUubG5rCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvYm9vdC9j bWRsaW5lLlMgYi94ZW4vYXJjaC94ODYvYm9vdC9jbWRsaW5lLlMKZGVsZXRlZCBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwNjg3ZWIuLjAwMDAwMDAKLS0tIGEveGVuL2FyY2gveDg2L2Jvb3QvY21k bGluZS5TCisrKyAvZGV2L251bGwKQEAgLTEsMzY3ICswLDAgQEAKLS8qKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioKLSAqIGNtZGxpbmUuUwotICoKLSAqIEVhcmx5IGNvbW1hbmQtbGluZSBwYXJzaW5nLgot ICovCi0KLSAgICAgICAgLmNvZGUzMgotCi0jaW5jbHVkZSAidmlkZW8uaCIKLQotIyBOQi4gU3Ry aW5nIHBvaW50ZXIgb24gc3RhY2sgaXMgbW9kaWZpZWQgdG8gcG9pbnQgcGFzdCBwYXJzZWQgZGln aXRzLgotLkxhdG9pOgotICAgICAgICBwdXNoICAgICVlYngKLSAgICAgICAgcHVzaCAgICAlZWN4 Ci0gICAgICAgIHB1c2ggICAgJWVkeAotICAgICAgICBwdXNoICAgICVlc2kKLSAgICAgICAgeG9y ICAgICAlZWJ4LCVlYnggICAgICAgLyogJWVieCA9IGFjY3VtdWxhdG9yICovCi0gICAgICAgIG1v diAgICAgJDEwLCVlY3ggICAgICAgIC8qICVlY3ggPSBiYXNlIChkZWZhdWx0IGJhc2UgMTApICov Ci0gICAgICAgIG1vdiAgICAgMTYrNCglZXNwKSwlZXNpIC8qICVlc2kgPSBwb2ludGVyIGludG8g YXNjaWkgc3RyaW5nLiAqLwotICAgICAgICBsb2RzYgotICAgICAgICBjbXBiICAgICQnMCcsJWFs Ci0gICAgICAgIGpuZSAgICAgMmYKLSAgICAgICAgbW92ICAgICAkOCwlZWN4ICAgICAgICAgLyog UHJlZml4ICcwJyA9PiBvY3RhbCAoYmFzZSA4KSAqLwotICAgICAgICBsb2RzYgotICAgICAgICBj bXBiICAgICQneCcsJWFsCi0gICAgICAgIGpuZSAgICAgMmYKLSAgICAgICAgbW92ICAgICAkMTYs JWVjeCAgICAgICAgLyogUHJlZml4ICcweCcgPT4gaGV4IChiYXNlIDE2KSAqLwotMTogICAgICBs b2RzYgotMjogICAgICBzdWIgICAgICQnMCcsJWFsCi0gICAgICAgIGpiICAgICAgNGYKLSAgICAg ICAgY21wICAgICAkOSwlYWwKLSAgICAgICAgamJlICAgICAzZgotICAgICAgICBzdWIgICAgICQn QSctJzAnLTEwLCVhbAotICAgICAgICBqYiAgICAgIDRmCi0gICAgICAgIGNtcCAgICAgJDE1LCVh bAotICAgICAgICBqYmUgICAgIDNmCi0gICAgICAgIHN1YiAgICAgJCdhJy0nQScsJWFsCi0gICAg ICAgIGpiICAgICAgNGYKLTM6ICAgICAgY21wICAgICAlY2wsJWFsCi0gICAgICAgIGphZSAgICAg NGYKLSAgICAgICAgbW92emJsICAlYWwsJWVheAotICAgICAgICB4Y2hnICAgICVlYXgsJWVieAot ICAgICAgICBtdWwgICAgICVlY3gKLSAgICAgICAgeGNoZyAgICAlZWF4LCVlYngKLSAgICAgICAg YWRkICAgICAlZWF4LCVlYngKLSAgICAgICAgam1wICAgICAxYgotNDogICAgICBtb3YgICAgICVl YngsJWVheAotICAgICAgICBkZWMgICAgICVlc2kKLSAgICAgICAgbW92ICAgICAlZXNpLDE2KzQo JWVzcCkKLSAgICAgICAgcG9wICAgICAlZXNpCi0gICAgICAgIHBvcCAgICAgJWVkeAotICAgICAg ICBwb3AgICAgICVlY3gKLSAgICAgICAgcG9wICAgICAlZWJ4Ci0gICAgICAgIHJldAotCi0uTHN0 cnN0cjoKLSAgICAgICAgcHVzaCAgICAlZWN4Ci0gICAgICAgIHB1c2ggICAgJWVkeAotICAgICAg ICBwdXNoICAgICVlc2kKLSAgICAgICAgcHVzaCAgICAlZWRpCi0gICAgICAgIHhvciAgICAgJWVh eCwlZWF4Ci0gICAgICAgIHhvciAgICAgJWVjeCwlZWN4Ci0gICAgICAgIG5vdCAgICAgJWVjeAot ICAgICAgICBtb3YgICAgIDE2KzQoJWVzcCksJWVzaQotICAgICAgICBtb3YgICAgIDE2KzgoJWVz cCksJWVkaQotICAgICAgICByZXBuZSAgIHNjYXNiCi0gICAgICAgIG5vdCAgICAgJWVjeAotICAg ICAgICBkZWMgICAgICVlY3gKLSAgICAgICAgbW92ICAgICAlZWN4LCVlZHgKLTE6ICAgICAgbW92 ICAgICAxNis4KCVlc3ApLCVlZGkKLSAgICAgICAgbW92ICAgICAlZXNpLCVlYXgKLSAgICAgICAg bW92ICAgICAlZWR4LCVlY3gKLSAgICAgICAgcmVwZSAgICBjbXBzYgotICAgICAgICBqZSAgICAg IDJmCi0gICAgICAgIHhjaGcgICAgJWVheCwlZXNpCi0gICAgICAgIGluYyAgICAgJWVzaQotICAg ICAgICBjbXBiICAgICQwLC0xKCVlYXgpCi0gICAgICAgIGpuZSAgICAgMWIKLSAgICAgICAgeG9y ICAgICAlZWF4LCVlYXgKLTI6ICAgICAgcG9wICAgICAlZWRpCi0gICAgICAgIHBvcCAgICAgJWVz aQotICAgICAgICBwb3AgICAgICVlZHgKLSAgICAgICAgcG9wICAgICAlZWN4Ci0gICAgICAgIHJl dAotCi0uTHN0cl9wcmVmaXg6Ci0gICAgICAgIHB1c2ggICAgJWVzaQotICAgICAgICBwdXNoICAg ICVlZGkKLSAgICAgICAgbW92ICAgICA4KzQoJWVzcCksJWVzaSAvKiAxc3QgYXJnIGlzIHByZWZp eCBzdHJpbmcgKi8KLSAgICAgICAgbW92ICAgICA4KzgoJWVzcCksJWVkaSAvKiAybmQgYXJnIGlz IG1haW4gc3RyaW5nICovCi0xOiAgICAgIGxvZHNiCi0gICAgICAgIHRlc3QgICAgJWFsLCVhbAot ICAgICAgICBqeiAgICAgIDJmCi0gICAgICAgIHNjYXNiCi0gICAgICAgIGplICAgICAgMWIKLSAg ICAgICAgc2JiICAgICAlZWF4LCVlYXgKLSAgICAgICAgb3IgICAgICAkMSwlYWwKLSAgICAgICAg am1wICAgICAzZgotMjogICAgICB4b3IgICAgICVlYXgsJWVheAotMzogICAgICBwb3AgICAgICVl ZGkKLSAgICAgICAgcG9wICAgICAlZXNpCi0gICAgICAgIHJldAotCi0uTHN0cmxlbjoKLSAgICAg ICAgcHVzaCAgICAlZWN4Ci0gICAgICAgIHB1c2ggICAgJWVzaQotICAgICAgICBwdXNoICAgICVl ZGkKLSAgICAgICAgeG9yICAgICAlZWF4LCVlYXgKLSAgICAgICAgeG9yICAgICAlZWN4LCVlY3gK LSAgICAgICAgbm90ICAgICAlZWN4Ci0gICAgICAgIG1vdiAgICAgMTIrNCglZXNwKSwlZWRpCi0g ICAgICAgIHJlcG5lICAgc2Nhc2IKLSAgICAgICAgbm90ICAgICAlZWN4Ci0gICAgICAgIGRlYyAg ICAgJWVjeAotICAgICAgICBtb3YgICAgICVlY3gsJWVheAotICAgICAgICBwb3AgICAgICVlZGkK LSAgICAgICAgcG9wICAgICAlZXNpCi0gICAgICAgIHBvcCAgICAgJWVjeAotICAgICAgICByZXQK LQotLkxmaW5kX29wdGlvbjoKLSAgICAgICAgbW92ICAgICA0KCVlc3ApLCVlYXgKLSAgICAgICAg ZGVjICAgICAlZWF4Ci0gICAgICAgIHB1c2ggICAgJWVieAotMTogICAgICBwdXNobCAgIDQrOCgl ZXNwKQotICAgICAgICBpbmMgICAgICVlYXgKLSAgICAgICAgcHVzaCAgICAlZWF4Ci0gICAgICAg IGNhbGwgICAgLkxzdHJzdHIKLSAgICAgICAgYWRkICAgICAkOCwlZXNwCi0gICAgICAgIHRlc3Qg ICAgJWVheCwlZWF4Ci0gICAgICAgIGp6ICAgICAgM2YKLSAgICAgICAgY21wICAgICAlZWF4LDQr NCglZXNwKQotICAgICAgICBqZSAgICAgIDJmCi0gICAgICAgIGNtcGIgICAgJCcgJywtMSglZWF4 KQotICAgICAgICBqbmUgICAgIDFiCi0yOiAgICAgIG1vdiAgICAgJWVheCwlZWJ4Ci0gICAgICAg IHB1c2hsICAgNCs4KCVlc3ApCi0gICAgICAgIGNhbGwgICAgLkxzdHJsZW4KLSAgICAgICAgYWRk ICAgICAkNCwlZXNwCi0gICAgICAgIHhhZGQgICAgJWVheCwlZWJ4Ci0gICAgICAgIC8qIE5VTCBj aGVjayAoYXMgJCdcMCcgPT0gMHgzMCBpbiBHQVMpICovCi0gICAgICAgIGNtcGIgICAgJDAsKCVl YngpCi0gICAgICAgIGplICAgICAgM2YKLSAgICAgICAgY21wYiAgICAkJyAnLCglZWJ4KQotICAg ICAgICBqZSAgICAgIDNmCi0gICAgICAgIGNtcGIgICAgJCc9JywoJWVieCkKLSAgICAgICAgam5l ICAgICAxYgotMzogICAgICBwb3AgICAgICVlYngKLSAgICAgICAgcmV0Ci0KLWNtZGxpbmVfcGFy c2VfZWFybHk6Ci0gICAgICAgIHB1c2hhCi0KLSAgICAgICAgLyogQmFpbCBpZiB0aGVyZSBpcyBu byBjb21tYW5kIGxpbmUgdG8gcGFyc2UuICovCi0gICAgICAgIG1vdiAgICAgc3ltX3BoeXMobXVs dGlib290X3B0ciksJWVieAotICAgICAgICBtb3YgICAgIE1CX2ZsYWdzKCVlYngpLCVlYXgKLSAg ICAgICAgdGVzdCAgICAkNCwlYWwKLSAgICAgICAganogICAgICAuTGNtZGxpbmVfZXhpdAotICAg ICAgICBtb3YgICAgIE1CX2NtZGxpbmUoJWVieCksJWVheAotICAgICAgICB0ZXN0ICAgICVlYXgs JWVheAotICAgICAgICBqeiAgICAgIC5MY21kbGluZV9leGl0Ci0KLSAgICAgICAgLyogQ2hlY2sg Zm9yICduby1yZWFsLW1vZGUnIGNvbW1hbmQtbGluZSBvcHRpb24uICovCi0gICAgICAgIHB1c2hs ICAgJHN5bV9waHlzKC5Mbm9fcm1fb3B0KQotICAgICAgICBwdXNobCAgIE1CX2NtZGxpbmUoJWVi eCkKLSAgICAgICAgY2FsbCAgICAuTGZpbmRfb3B0aW9uCi0gICAgICAgIHRlc3QgICAgJWVheCwl ZWF4Ci0gICAgICAgIHNldG56ICAgJWFsCi0gICAgICAgIG9yICAgICAgJWFsLHN5bV9waHlzKHNr aXBfcmVhbG1vZGUpCi0KLSAgICAgICAgLyogQ2hlY2sgZm9yICd0Ym9vdD0nIGNvbW1hbmQtbGlu ZSBvcHRpb24uICovCi0gICAgICAgIG1vdmwgICAgJHN5bV9waHlzKC5MdGJvb3Rfb3B0KSw0KCVl c3ApCi0gICAgICAgIGNhbGwgICAgLkxmaW5kX29wdGlvbgotICAgICAgICB0ZXN0ICAgICVlYXgs JWVheAotICAgICAgICBzZXRueiAgICVhbAotICAgICAgICBvciAgICAgICVhbCxzeW1fcGh5cyhz a2lwX3JlYWxtb2RlKSAvKiB0Ym9vdD0gaW1wbGllcyBuby1yZWFsLW1vZGUgKi8KLQotLkxwYXJz ZV9lZGQ6Ci0gICAgICAgIC8qIENoZWNrIGZvciAnZWRkPScgY29tbWFuZC1saW5lIG9wdGlvbi4g Ki8KLSAgICAgICAgbW92bCAgICAkc3ltX3BoeXMoLkxlZGRfb3B0KSw0KCVlc3ApCi0gICAgICAg IGNhbGwgICAgLkxmaW5kX29wdGlvbgotICAgICAgICB0ZXN0ICAgICVlYXgsJWVheAotICAgICAg ICBqeiAgICAgIC5McGFyc2VfZWRpZAotICAgICAgICBjbXBiICAgICQnPScsMyglZWF4KQotICAg ICAgICBqbmUgICAgIC5McGFyc2VfZWRpZAotICAgICAgICBhZGQgICAgICQ0LCVlYXgKLSAgICAg ICAgbW92YiAgICAkMixzeW1fcGh5cyhvcHRfZWRkKSAgLyogb3B0X2VkZD0yOiBlZGQ9b2ZmICov Ci0gICAgICAgIGNtcHcgICAgJDB4NjY2ZiwoJWVheCkgICAgICAgICAgICAvKiAweDY2NmYgPT0g Im9mIiAqLwotICAgICAgICBqZSAgICAgIC5McGFyc2VfZWRpZAotICAgICAgICBkZWNiICAgIHN5 bV9waHlzKG9wdF9lZGQpICAgICAvKiBvcHRfZWRkPTE6IGVkZD1za2lwbWJyICovCi0gICAgICAg IGNtcHcgICAgJDB4NmI3MywoJWVheCkgICAgICAgICAgICAvKiAweDZiNzMgPT0gInNrIiAqLwot ICAgICAgICBqZSAgICAgIC5McGFyc2VfZWRpZAotICAgICAgICBkZWNiICAgIHN5bV9waHlzKG9w dF9lZGQpICAgICAvKiBvcHRfZWRkPTA6IGVkZD1vbiAoZGVmYXVsdCkgKi8KLQotLkxwYXJzZV9l ZGlkOgotICAgICAgICAvKiBDaGVjayBmb3IgJ2VkaWQ9JyBjb21tYW5kLWxpbmUgb3B0aW9uLiAq LwotICAgICAgICBtb3ZsICAgICRzeW1fcGh5cyguTGVkaWRfb3B0KSw0KCVlc3ApCi0gICAgICAg IGNhbGwgICAgLkxmaW5kX29wdGlvbgotICAgICAgICB0ZXN0ICAgICVlYXgsJWVheAotICAgICAg ICBqeiAgICAgIC5McGFyc2VfdmdhCi0gICAgICAgIGNtcGIgICAgJCc9Jyw0KCVlYXgpCi0gICAg ICAgIGpuZSAgICAgLkxwYXJzZV92Z2EKLSAgICAgICAgYWRkICAgICAkNSwlZWF4Ci0gICAgICAg IG1vdiAgICAgJWVheCwlZWJ4Ci0gICAgICAgIHB1c2ggICAgJWVieAotICAgICAgICBwdXNobCAg ICRzeW1fcGh5cyguTGVkaWRfZm9yY2UpCi0gICAgICAgIGNhbGwgICAgLkxzdHJfcHJlZml4Ci0g ICAgICAgIGFkZCAgICAgJDgsJWVzcAotICAgICAgICBtb3ZiICAgICQyLHN5bV9waHlzKG9wdF9l ZGlkKSAvKiBvcHRfZWRpZD0yOiBlZGlkPWZvcmNlICovCi0gICAgICAgIHRlc3QgICAgJWVheCwl ZWF4Ci0gICAgICAgIGp6ICAgICAgLkxwYXJzZV92Z2EKLSAgICAgICAgcHVzaCAgICAlZWJ4Ci0g ICAgICAgIHB1c2hsICAgJHN5bV9waHlzKC5MZWRpZF9ubykKLSAgICAgICAgY2FsbCAgICAuTHN0 cl9wcmVmaXgKLSAgICAgICAgYWRkICAgICAkOCwlZXNwCi0gICAgICAgIGRlY2IgICAgc3ltX3Bo eXMob3B0X2VkaWQpICAgIC8qIG9wdF9lZGlkPTE6IGVkaWQ9bm8gKi8KLSAgICAgICAgdGVzdCAg ICAlZWF4LCVlYXgKLSAgICAgICAganogICAgICAuTHBhcnNlX3ZnYQotICAgICAgICBkZWNiICAg IHN5bV9waHlzKG9wdF9lZGlkKSAgICAvKiBvcHRfZWRpZD0wOiBkZWZhdWx0ICovCi0KLS5McGFy c2VfdmdhOgotICAgICAgICAvKiBDaGVjayBmb3IgJ3ZnYT0nIGNvbW1hbmQtbGluZSBvcHRpb24u ICovCi0gICAgICAgIG1vdmwgICAgJHN5bV9waHlzKC5MdmdhX29wdCksNCglZXNwKQotICAgICAg ICBjYWxsICAgIC5MZmluZF9vcHRpb24KLSAgICAgICAgYWRkICAgICAkOCwlZXNwCi0gICAgICAg IHRlc3QgICAgJWVheCwlZWF4Ci0gICAgICAgIGp6ICAgICAgLkxjbWRsaW5lX2V4aXQKLSAgICAg ICAgY21wYiAgICAkJz0nLDMoJWVheCkKLSAgICAgICAgam5lICAgICAuTGNtZGxpbmVfZXhpdAot ICAgICAgICBhZGQgICAgICQ0LCVlYXgKLQotICAgICAgICAvKiBGb3VuZCB0aGUgJ3ZnYT0nIG9w dGlvbi4gRGVmYXVsdCBvcHRpb24gaXMgdG8gZGlzcGxheSB2Z2EgbWVudS4gKi8KLSAgICAgICAg bW92dyAgICAkQVNLX1ZHQSxzeW1fcGh5cyhib290X3ZpZF9tb2RlKQotCi0gICAgICAgIC8qIENo ZWNrIGZvciAndmdhPXRleHQtODB4PHJvd3M+LiAqLwotICAgICAgICBtb3YgICAgICVlYXgsJWVi eAotICAgICAgICBwdXNoICAgICVlYngKLSAgICAgICAgcHVzaGwgICAkc3ltX3BoeXMoLkx2Z2Ff dGV4dDgwKQotICAgICAgICBjYWxsICAgIC5Mc3RyX3ByZWZpeAotICAgICAgICBhZGQgICAgICQ4 LCVlc3AKLSAgICAgICAgdGVzdCAgICAlZWF4LCVlYXgKLSAgICAgICAgam56ICAgICAuTHBhcnNl X3ZnYV9nZngKLQotICAgICAgICAvKiBXZSBoYXZlICd2Z2E9dGV4dC04MHg8cm93cz4nLiAqLwot ICAgICAgICBhZGQgICAgICQ4LCVlYngKLSAgICAgICAgcHVzaCAgICAlZWJ4Ci0gICAgICAgIGNh bGwgICAgLkxhdG9pCi0gICAgICAgIGFkZCAgICAgJDQsJWVzcAotICAgICAgICBtb3YgICAgICVh eCwlYngKLSAgICAgICAgbGVhICAgICBzeW1fcGh5cyguTHZnYV90ZXh0X21vZGVzKSwlZXNpCi0x OiAgICAgIGxvZHN3Ci0gICAgICAgIHRlc3QgICAgJWF4LCVheAotICAgICAgICBqeiAgICAgIC5M Y21kbGluZV9leGl0Ci0gICAgICAgIGNtcCAgICAgJWF4LCVieAotICAgICAgICBsb2RzdwotICAg ICAgICBqbmUgICAgIDFiCi0gICAgICAgIG1vdiAgICAgJWF4LHN5bV9waHlzKGJvb3RfdmlkX21v ZGUpCi0gICAgICAgIGptcCAgICAgLkxjbWRsaW5lX2V4aXQKLQotLkxwYXJzZV92Z2FfZ2Z4Ogot ICAgICAgICAvKiBDaGVjayBmb3IgJ3ZnYT1nZngtPHdpZHRoPng8aGVpZ2h0Png8ZGVwdGg+Jy4g Ki8KLSAgICAgICAgcHVzaCAgICAlZWJ4Ci0gICAgICAgIHB1c2hsICAgJHN5bV9waHlzKC5Mdmdh X2dmeCkKLSAgICAgICAgY2FsbCAgICAuTHN0cl9wcmVmaXgKLSAgICAgICAgYWRkICAgICAkOCwl ZXNwCi0gICAgICAgIHRlc3QgICAgJWVheCwlZWF4Ci0gICAgICAgIGpueiAgICAgLkxwYXJzZV92 Z2FfbW9kZQotCi0gICAgICAgIC8qIFdlIGhhdmUgJ3ZnYT1nZngtPHdpZHRoPng8aGVpZ2h0Png8 ZGVwdGg+Jy4gKi8KLSAgICAgICAgLyogc2tpcCAnZ2Z4LScgKi8KLSAgICAgICAgYWRkICAgICAk NCwlZWJ4Ci0gICAgICAgIC8qIHBhcnNlIDx3aWR0aD4gKi8KLSAgICAgICAgcHVzaCAgICAlZWJ4 Ci0gICAgICAgIGNhbGwgICAgLkxhdG9pCi0gICAgICAgIHBvcCAgICAgJWVzaQotICAgICAgICBt b3YgICAgICVheCxzeW1fcGh5cyh2ZXNhX3NpemUpKzAKLSAgICAgICAgLyogc2tpcCAneCcgKi8K LSAgICAgICAgbG9kc2IKLSAgICAgICAgY21wYiAgICAkJ3gnLCVhbAotICAgICAgICBqbmUgICAg IC5MY21kbGluZV9leGl0Ci0gICAgICAgIC8qIHBhcnNlIDxoZWlnaHQ+ICovCi0gICAgICAgIHB1 c2ggICAgJWVzaQotICAgICAgICBjYWxsICAgIC5MYXRvaQotICAgICAgICBwb3AgICAgICVlc2kK LSAgICAgICAgbW92ICAgICAlYXgsc3ltX3BoeXModmVzYV9zaXplKSsyCi0gICAgICAgIC8qIHNr aXAgJ3gnICovCi0gICAgICAgIGxvZHNiCi0gICAgICAgIGNtcGIgICAgJCd4JywlYWwKLSAgICAg ICAgam5lICAgICAuTGNtZGxpbmVfZXhpdAotICAgICAgICAvKiBwYXJzZSA8ZGVwdGg+ICovCi0g ICAgICAgIHB1c2ggICAgJWVzaQotICAgICAgICBjYWxsICAgIC5MYXRvaQotICAgICAgICBwb3Ag ICAgICVlc2kKLSAgICAgICAgbW92ICAgICAlYXgsc3ltX3BoeXModmVzYV9zaXplKSs0Ci0gICAg ICAgIC8qIGNvbW1pdCB0byB2ZXNhIG1vZGUgKi8KLSAgICAgICAgbW92dyAgICAkVklERU9fVkVT QV9CWV9TSVpFLHN5bV9waHlzKGJvb3RfdmlkX21vZGUpCi0gICAgICAgIGptcCAgICAgLkxjbWRs aW5lX2V4aXQKLQotLkxwYXJzZV92Z2FfbW9kZToKLSAgICAgICAgLyogQ2hlY2sgZm9yICd2Z2E9 bW9kZS08bW9kZT4nLiAqLwotICAgICAgICBwdXNoICAgICVlYngKLSAgICAgICAgcHVzaGwgICAk c3ltX3BoeXMoLkx2Z2FfbW9kZSkKLSAgICAgICAgY2FsbCAgICAuTHN0cl9wcmVmaXgKLSAgICAg ICAgYWRkICAgICAkOCwlZXNwCi0gICAgICAgIHRlc3QgICAgJWVheCwlZWF4Ci0gICAgICAgIGpu eiAgICAgLkxwYXJzZV92Z2FfY3VycmVudAotCi0gICAgICAgIC8qIFdlIGhhdmUgJ3ZnYT1tb2Rl LTxtb2RlPicuICovCi0gICAgICAgIGFkZCAgICAgJDUsJWVieAotICAgICAgICBwdXNoICAgICVl YngKLSAgICAgICAgY2FsbCAgICAuTGF0b2kKLSAgICAgICAgYWRkICAgICAkNCwlZXNwCi0gICAg ICAgIG1vdiAgICAgJWF4LHN5bV9waHlzKGJvb3RfdmlkX21vZGUpCi0gICAgICAgIGptcCAgICAg LkxjbWRsaW5lX2V4aXQKLQotLkxwYXJzZV92Z2FfY3VycmVudDoKLSAgICAgICAgLyogQ2hlY2sg Zm9yICd2Z2E9Y3VycmVudCcuICovCi0gICAgICAgIHB1c2ggICAgJWVieAotICAgICAgICBwdXNo bCAgICRzeW1fcGh5cyguTHZnYV9jdXJyZW50KQotICAgICAgICBjYWxsICAgIC5Mc3RyX3ByZWZp eAotICAgICAgICBhZGQgICAgICQ4LCVlc3AKLSAgICAgICAgdGVzdCAgICAlZWF4LCVlYXgKLSAg ICAgICAgam56ICAgICAuTGNtZGxpbmVfZXhpdAotCi0gICAgICAgIC8qIFdlIGhhdmUgJ3ZnYT1j dXJyZW50Jy4gKi8KLSAgICAgICAgbW92dyAgICAkVklERU9fQ1VSUkVOVF9NT0RFLHN5bV9waHlz KGJvb3RfdmlkX21vZGUpCi0KLS5MY21kbGluZV9leGl0OgotICAgICAgICBwb3BhCi0gICAgICAg IHJldAotCi0gICAgICAgIC5wdXNoc2VjdGlvbiAuaW5pdC5yb2RhdGEsICJhIiwgQHByb2diaXRz Ci0KLS5MdmdhX3RleHRfbW9kZXM6IC8qIHJvd3MsIG1vZGVfbnVtYmVyICovCi0gICAgICAgIC53 b3JkICAgMjUsVklERU9fODB4MjUKLSAgICAgICAgLndvcmQgICA1MCxWSURFT184MHg1MAotICAg ICAgICAud29yZCAgIDQzLFZJREVPXzgweDQzCi0gICAgICAgIC53b3JkICAgMjgsVklERU9fODB4 MjgKLSAgICAgICAgLndvcmQgICAzMCxWSURFT184MHgzMAotICAgICAgICAud29yZCAgIDM0LFZJ REVPXzgweDM0Ci0gICAgICAgIC53b3JkICAgNjAsVklERU9fODB4NjAKLSAgICAgICAgLndvcmQg ICAwCi0KLS5MdmdhX29wdDoKLSAgICAgICAgLmFzY2l6ICAidmdhIgotLkx2Z2FfdGV4dDgwOgot ICAgICAgICAuYXNjaXogICJ0ZXh0LTgweCIKLS5MdmdhX2dmeDoKLSAgICAgICAgLmFzY2l6ICAi Z2Z4LSIKLS5MdmdhX21vZGU6Ci0gICAgICAgIC5hc2NpeiAgIm1vZGUtIgotLkx2Z2FfY3VycmVu dDoKLSAgICAgICAgLmFzY2l6ICAiY3VycmVudCIKLS5Mbm9fcm1fb3B0OgotICAgICAgICAuYXNj aXogICJuby1yZWFsLW1vZGUiCi0uTHRib290X29wdDoKLSAgICAgICAgLmFzY2l6ICAidGJvb3Qi Ci0uTGVkaWRfb3B0OgotICAgICAgICAuYXNjaXogICJlZGlkIgotLkxlZGlkX2ZvcmNlOgotICAg ICAgICAuYXNjaXogICJmb3JjZSIKLS5MZWRpZF9ubzoKLSAgICAgICAgLmFzY2l6ICAibm8iCi0u TGVkZF9vcHQ6Ci0gICAgICAgIC5hc2NpeiAgImVkZCIKLQotICAgICAgICAucG9wc2VjdGlvbgpk aWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2Jvb3QvY21kbGluZS5jIGIveGVuL2FyY2gveDg2L2Jv b3QvY21kbGluZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2YWEwNjQK LS0tIC9kZXYvbnVsbAorKysgYi94ZW4vYXJjaC94ODYvYm9vdC9jbWRsaW5lLmMKQEAgLTAsMCAr MSwzNDAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKGMpIDIwMTUsIDIwMTYgT3JhY2xlIGFuZC9vciBp dHMgYWZmaWxpYXRlcy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBUaGlzIHByb2dyYW0g aXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQor ICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBh cyBwdWJsaXNoZWQgYnkKKyAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2 ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCisgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRl ciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9w ZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3 aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBv ciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5l cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBo YXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYWxv bmcKKyAqIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9y Zy9saWNlbnNlcy8+LgorICoKKyAqIHN0cmxlbigpLCBzdHJuY21wKCksIHN0cmNocigpLCBzdHJz cG4oKSBhbmQgc3RyY3NwbigpIHdlcmUgY29waWVkIGZyb20KKyAqIExpbnV4IGtlcm5lbCBzb3Vy Y2UgKGxpbnV4L2xpYi9zdHJpbmcuYykuCisgKi8KKworLyoKKyAqIFRoaXMgZW50cnkgcG9pbnQg aXMgZW50ZXJlZCBmcm9tIHhlbi9hcmNoL3g4Ni9ib290L2hlYWQuUyB3aXRoOgorICogICAtIDB4 NCglZXNwKSA9ICZjbWRsaW5lLAorICogICAtIDB4OCglZXNwKSA9ICZlYXJseV9ib290X29wdHMu CisgKi8KK2FzbSAoCisgICAgIiAgICAudGV4dCAgICAgICAgICAgICAgICAgICAgICAgICBcbiIK KyAgICAiICAgIC5nbG9ibCBfc3RhcnQgICAgICAgICAgICAgICAgIFxuIgorICAgICJfc3RhcnQ6 ICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCisgICAgIiAgICBqbXAgIGNtZGxpbmVfcGFy c2VfZWFybHkgICAgICBcbiIKKyAgICApOworCisjaW5jbHVkZSAiZGVmcy5oIgorI2luY2x1ZGUg InZpZGVvLmgiCisKKy8qIEtlZXAgaW4gc3luYyB3aXRoIHRyYW1wb2xpbmUuUzplYXJseV9ib290 X29wdHMgbGFiZWwhICovCit0eXBlZGVmIHN0cnVjdCBfX3BhY2tlZCB7CisgICAgdTggc2tpcF9y ZWFsbW9kZTsKKyAgICB1OCBvcHRfZWRkOworICAgIHU4IG9wdF9lZGlkOworICAgIHU4IHBhZGRp bmc7CisgICAgdTE2IGJvb3RfdmlkX21vZGU7CisgICAgdTE2IHZlc2Ffd2lkdGg7CisgICAgdTE2 IHZlc2FfaGVpZ2h0OworICAgIHUxNiB2ZXNhX2RlcHRoOworfSBlYXJseV9ib290X29wdHNfdDsK KworLyoKKyAqIFNwYWNlIGFuZCBUQUIgYXJlIG9idmlvdXMgZGVsaW1pdGVycy4gSG93ZXZlciwg SSBhbQorICogYWRkaW5nICJcbiIgYW5kICJcciIgaGVyZSB0b28uIEp1c3QgaW4gY2FzZSB3aGVu CisgKiBjcmF6eSBib290bG9hZGVyL3VzZXIgcHV0cyB0aGVtIHNvbWV3aGVyZS4KKyAqLworc3Rh dGljIGNvbnN0IGNoYXIgZGVsaW1fY2hhcnNfY29tbWFbXSA9ICIsIFxuXHJcdCI7CisKKyNkZWZp bmUgZGVsaW1fY2hhcnMJKGRlbGltX2NoYXJzX2NvbW1hICsgMSkKKworc3RhdGljIHNpemVfdCBz dHJsZW4oY29uc3QgY2hhciAqcykKK3sKKyAgICBjb25zdCBjaGFyICpzYzsKKworICAgIGZvciAo IHNjID0gczsgKnNjICE9ICdcMCc7ICsrc2MgKQorICAgICAgICAvKiBub3RoaW5nICovOworICAg IHJldHVybiBzYyAtIHM7Cit9CisKK3N0YXRpYyBpbnQgc3RybmNtcChjb25zdCBjaGFyICpjcywg Y29uc3QgY2hhciAqY3QsIHNpemVfdCBjb3VudCkKK3sKKyAgICB1bnNpZ25lZCBjaGFyIGMxLCBj MjsKKworICAgIHdoaWxlICggY291bnQgKQorICAgIHsKKyAgICAgICAgYzEgPSAqY3MrKzsKKyAg ICAgICAgYzIgPSAqY3QrKzsKKyAgICAgICAgaWYgKCBjMSAhPSBjMiApCisgICAgICAgICAgICBy ZXR1cm4gYzEgPCBjMiA/IC0xIDogMTsKKyAgICAgICAgaWYgKCAhYzEgKQorICAgICAgICAgICAg YnJlYWs7CisgICAgICAgIGNvdW50LS07CisgICAgfQorICAgIHJldHVybiAwOworfQorCitzdGF0 aWMgY2hhciAqc3RyY2hyKGNvbnN0IGNoYXIgKnMsIGludCBjKQoreworICAgIGZvciAoIDsgKnMg IT0gKGNoYXIpYzsgKytzICkKKyAgICAgICAgaWYgKCAqcyA9PSAnXDAnICkKKyAgICAgICAgICAg IHJldHVybiBOVUxMOworICAgIHJldHVybiAoY2hhciAqKXM7Cit9CisKK3N0YXRpYyBzaXplX3Qg c3Ryc3BuKGNvbnN0IGNoYXIgKnMsIGNvbnN0IGNoYXIgKmFjY2VwdCkKK3sKKyAgICBjb25zdCBj aGFyICpwOworICAgIGNvbnN0IGNoYXIgKmE7CisgICAgc2l6ZV90IGNvdW50ID0gMDsKKworICAg IGZvciAoIHAgPSBzOyAqcCAhPSAnXDAnOyArK3AgKQorICAgIHsKKyAgICAgICAgZm9yICggYSA9 IGFjY2VwdDsgKmEgIT0gJ1wwJzsgKythICkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCAq cCA9PSAqYSApCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgaWYg KCAqYSA9PSAnXDAnICkKKyAgICAgICAgICAgIHJldHVybiBjb3VudDsKKyAgICAgICAgKytjb3Vu dDsKKyAgICB9CisgICAgcmV0dXJuIGNvdW50OworfQorCitzdGF0aWMgc2l6ZV90IHN0cmNzcG4o Y29uc3QgY2hhciAqcywgY29uc3QgY2hhciAqcmVqZWN0KQoreworICAgIGNvbnN0IGNoYXIgKnA7 CisgICAgY29uc3QgY2hhciAqcjsKKyAgICBzaXplX3QgY291bnQgPSAwOworCisgICAgZm9yICgg cCA9IHM7ICpwICE9ICdcMCc7ICsrcCApCisgICAgeworICAgICAgICBmb3IgKCByID0gcmVqZWN0 OyAqciAhPSAnXDAnOyArK3IgKQorICAgICAgICB7CisgICAgICAgICAgICBpZiAoICpwID09ICpy ICkKKyAgICAgICAgICAgICAgICByZXR1cm4gY291bnQ7CisgICAgICAgIH0KKyAgICAgICAgKytj b3VudDsKKyAgICB9CisgICAgcmV0dXJuIGNvdW50OworfQorCitzdGF0aWMgdW5zaWduZWQgaW50 IHN0cnRvdWkoY29uc3QgY2hhciAqcywgY29uc3QgY2hhciAqc3RvcCwgY29uc3QgY2hhciAqKm5l eHQpCit7CisgICAgY2hhciBiYXNlID0gMTAsIGw7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIHJl cyA9IDA7CisKKyAgICBpZiAoICpzID09ICcwJyApCisgICAgICBiYXNlID0gKHRvbG93ZXIoKisr cykgPT0gJ3gnKSA/ICgrK3MsIDE2KSA6IDg7CisKKyAgICBmb3IgKCA7ICpzICE9ICdcMCc7ICsr cyApCisgICAgeworICAgICAgICBpZiAoIHN0b3AgJiYgc3RyY2hyKHN0b3AsICpzKSApCisgICAg ICAgICAgICBnb3RvIG91dDsKKworICAgICAgICBpZiAoICpzIDwgJzAnIHx8ICgqcyA+ICc3JyAm JiBiYXNlID09IDgpICkKKyAgICAgICAgeworICAgICAgICAgICAgcmVzID0gVUlOVF9NQVg7Cisg ICAgICAgICAgICBnb3RvIG91dDsKKyAgICAgICAgfQorCisgICAgICAgIGwgPSB0b2xvd2VyKCpz KTsKKworICAgICAgICBpZiAoICpzID4gJzknICYmIChiYXNlICE9IDE2IHx8IGwgPCAnYScgfHwg bCA+ICdmJykgKQorICAgICAgICB7CisgICAgICAgICAgICByZXMgPSBVSU5UX01BWDsKKyAgICAg ICAgICAgIGdvdG8gb3V0OworICAgICAgICB9CisKKyAgICAgICAgcmVzICo9IGJhc2U7CisgICAg ICAgIHJlcyArPSAobCA+PSAnYScpID8gKGwgLSAnYScgKyAxMCkgOiAoKnMgLSAnMCcpOworCisg ICAgICAgIGlmICggcmVzID49IFVJTlRfTUFYICkKKyAgICAgICAgeworICAgICAgICAgICAgcmVz ID0gVUlOVF9NQVg7CisgICAgICAgICAgICBnb3RvIG91dDsKKyAgICAgICAgfQorICAgIH0KKwor IG91dDoKKyAgICBpZiAoIG5leHQgKQorICAgICAgKm5leHQgPSBzOworCisgICAgcmV0dXJuIHJl czsKK30KKworc3RhdGljIGludCBzdHJtYXhjbXAoY29uc3QgY2hhciAqY3MsIGNvbnN0IGNoYXIg KmN0LCBjb25zdCBjaGFyICpfZGVsaW1fY2hhcnMpCit7CisgICAgcmV0dXJuIHN0cm5jbXAoY3Ms IGN0LCBtYXgoc3RyY3NwbihjcywgX2RlbGltX2NoYXJzKSwgc3RybGVuKGN0KSkpOworfQorCitz dGF0aWMgaW50IHN0cnN1YmNtcChjb25zdCBjaGFyICpjcywgY29uc3QgY2hhciAqY3QpCit7Cisg ICAgcmV0dXJuIHN0cm5jbXAoY3MsIGN0LCBzdHJsZW4oY3QpKTsKK30KKworc3RhdGljIGNvbnN0 IGNoYXIgKmZpbmRfb3B0KGNvbnN0IGNoYXIgKmNtZGxpbmUsIGNvbnN0IGNoYXIgKm9wdCwgYm9v bCBhcmcpCit7CisgICAgc2l6ZV90IGxjLCBsbzsKKworICAgIGxvID0gc3RybGVuKG9wdCk7CisK KyAgICBmb3IgKCA7IDsgKQorICAgIHsKKyAgICAgICAgY21kbGluZSArPSBzdHJzcG4oY21kbGlu ZSwgZGVsaW1fY2hhcnMpOworCisgICAgICAgIGlmICggKmNtZGxpbmUgPT0gJ1wwJyApCisgICAg ICAgICAgICByZXR1cm4gTlVMTDsKKworICAgICAgICBpZiAoICFzdHJtYXhjbXAoY21kbGluZSwg Ii0tIiwgZGVsaW1fY2hhcnMpICkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworCisgICAgICAg IGxjID0gc3RyY3NwbihjbWRsaW5lLCBkZWxpbV9jaGFycyk7CisKKyAgICAgICAgaWYgKCAhc3Ry bmNtcChjbWRsaW5lLCBvcHQsIGFyZyA/IGxvIDogbWF4KGxjLCBsbykpICkKKyAgICAgICAgICAg IHJldHVybiBjbWRsaW5lICsgbG87CisKKyAgICAgICAgY21kbGluZSArPSBsYzsKKyAgICB9Cit9 CisKK3N0YXRpYyBib29sIHNraXBfcmVhbG1vZGUoY29uc3QgY2hhciAqY21kbGluZSkKK3sKKyAg ICByZXR1cm4gZmluZF9vcHQoY21kbGluZSwgIm5vLXJlYWwtbW9kZSIsIGZhbHNlKSB8fCBmaW5k X29wdChjbWRsaW5lLCAidGJvb3Q9IiwgdHJ1ZSk7Cit9CisKK3N0YXRpYyB1OCBlZGRfcGFyc2Uo Y29uc3QgY2hhciAqY21kbGluZSkKK3sKKyAgICBjb25zdCBjaGFyICpjOworCisgICAgYyA9IGZp bmRfb3B0KGNtZGxpbmUsICJlZGQ9IiwgdHJ1ZSk7CisKKyAgICBpZiAoICFjICkKKyAgICAgICAg cmV0dXJuIDA7CisKKyAgICBpZiAoICFzdHJtYXhjbXAoYywgIm9mZiIsIGRlbGltX2NoYXJzKSAp CisgICAgICAgIHJldHVybiAyOworCisgICAgcmV0dXJuICFzdHJtYXhjbXAoYywgInNraXBtYnIi LCBkZWxpbV9jaGFycyk7Cit9CisKK3N0YXRpYyB1OCBlZGlkX3BhcnNlKGNvbnN0IGNoYXIgKmNt ZGxpbmUpCit7CisgICAgY29uc3QgY2hhciAqYzsKKworICAgIGMgPSBmaW5kX29wdChjbWRsaW5l LCAiZWRpZD0iLCB0cnVlKTsKKworICAgIGlmICggIWMgKQorICAgICAgICByZXR1cm4gMDsKKwor ICAgIGlmICggIXN0cm1heGNtcChjLCAiZm9yY2UiLCBkZWxpbV9jaGFycykgKQorICAgICAgICBy ZXR1cm4gMjsKKworICAgIHJldHVybiAhc3RybWF4Y21wKGMsICJubyIsIGRlbGltX2NoYXJzKTsK K30KKworc3RhdGljIHUxNiByb3dzMnZtb2RlKHVuc2lnbmVkIGludCByb3dzKQoreworICAgIHN3 aXRjaCAoIHJvd3MgKQorICAgIHsKKyAgICBjYXNlIDI1OgorICAgICAgICByZXR1cm4gVklERU9f ODB4MjU7CisKKyAgICBjYXNlIDI4OgorICAgICAgICByZXR1cm4gVklERU9fODB4Mjg7CisKKyAg ICBjYXNlIDMwOgorICAgICAgICByZXR1cm4gVklERU9fODB4MzA7CisKKyAgICBjYXNlIDM0Ogor ICAgICAgICByZXR1cm4gVklERU9fODB4MzQ7CisKKyAgICBjYXNlIDQzOgorICAgICAgICByZXR1 cm4gVklERU9fODB4NDM7CisKKyAgICBjYXNlIDUwOgorICAgICAgICByZXR1cm4gVklERU9fODB4 NTA7CisKKyAgICBjYXNlIDYwOgorICAgICAgICByZXR1cm4gVklERU9fODB4NjA7CisKKyAgICBk ZWZhdWx0OgorICAgICAgICByZXR1cm4gQVNLX1ZHQTsKKyAgICB9Cit9CisKK3N0YXRpYyB2b2lk IHZnYV9wYXJzZShjb25zdCBjaGFyICpjbWRsaW5lLCBlYXJseV9ib290X29wdHNfdCAqZWJvKQor eworICAgIGNvbnN0IGNoYXIgKmM7CisgICAgdW5zaWduZWQgaW50IHRtcCwgdmVzYV9kZXB0aCwg dmVzYV9oZWlnaHQsIHZlc2Ffd2lkdGg7CisKKyAgICBjID0gZmluZF9vcHQoY21kbGluZSwgInZn YT0iLCB0cnVlKTsKKworICAgIGlmICggIWMgKQorICAgICAgICByZXR1cm47CisKKyAgICBlYm8t PmJvb3RfdmlkX21vZGUgPSBBU0tfVkdBOworCisgICAgaWYgKCAhc3RybWF4Y21wKGMsICJjdXJy ZW50IiwgZGVsaW1fY2hhcnNfY29tbWEpICkKKyAgICAgICAgZWJvLT5ib290X3ZpZF9tb2RlID0g VklERU9fQ1VSUkVOVF9NT0RFOworICAgIGVsc2UgaWYgKCAhc3Ryc3ViY21wKGMsICJ0ZXh0LTgw eCIpICkKKyAgICB7CisgICAgICAgIGMgKz0gc3RybGVuKCJ0ZXh0LTgweCIpOworICAgICAgICBl Ym8tPmJvb3RfdmlkX21vZGUgPSByb3dzMnZtb2RlKHN0cnRvdWkoYywgZGVsaW1fY2hhcnNfY29t bWEsIE5VTEwpKTsKKyAgICB9CisgICAgZWxzZSBpZiAoICFzdHJzdWJjbXAoYywgImdmeC0iKSAp CisgICAgeworICAgICAgICB2ZXNhX3dpZHRoID0gc3RydG91aShjICsgc3RybGVuKCJnZngtIiks ICJ4IiwgJmMpOworCisgICAgICAgIGlmICggdmVzYV93aWR0aCA+IFUxNl9NQVggKQorICAgICAg ICAgICAgcmV0dXJuOworCisgICAgICAgIC8qCisgICAgICAgICAqIEluY3JlbWVudCBjIG91dHNp ZGUgb2Ygc3RydG91aSgpIGJlY2F1c2Ugb3RoZXJ3aXNlIHNvbWUKKyAgICAgICAgICogY29tcGls ZXIgbWF5IGNvbXBsYWluIHdpdGggZm9sbG93aW5nIG1lc3NhZ2U6CisgICAgICAgICAqIHdhcm5p bmc6IG9wZXJhdGlvbiBvbiAnYycgbWF5IGJlIHVuZGVmaW5lZC4KKyAgICAgICAgICovCisgICAg ICAgICsrYzsKKyAgICAgICAgdmVzYV9oZWlnaHQgPSBzdHJ0b3VpKGMsICJ4IiwgJmMpOworCisg ICAgICAgIGlmICggdmVzYV9oZWlnaHQgPiBVMTZfTUFYICkKKyAgICAgICAgICAgIHJldHVybjsK KworICAgICAgICB2ZXNhX2RlcHRoID0gc3RydG91aSgrK2MsIGRlbGltX2NoYXJzX2NvbW1hLCBO VUxMKTsKKworICAgICAgICBpZiAoIHZlc2FfZGVwdGggPiBVMTZfTUFYICkKKyAgICAgICAgICAg IHJldHVybjsKKworICAgICAgICBlYm8tPnZlc2Ffd2lkdGggPSB2ZXNhX3dpZHRoOworICAgICAg ICBlYm8tPnZlc2FfaGVpZ2h0ID0gdmVzYV9oZWlnaHQ7CisgICAgICAgIGViby0+dmVzYV9kZXB0 aCA9IHZlc2FfZGVwdGg7CisgICAgICAgIGViby0+Ym9vdF92aWRfbW9kZSA9IFZJREVPX1ZFU0Ff QllfU0laRTsKKyAgICB9CisgICAgZWxzZSBpZiAoICFzdHJzdWJjbXAoYywgIm1vZGUtIikgKQor ICAgIHsKKyAgICAgICAgdG1wID0gc3RydG91aShjICsgc3RybGVuKCJtb2RlLSIpLCBkZWxpbV9j aGFyc19jb21tYSwgTlVMTCk7CisKKyAgICAgICAgaWYgKCB0bXAgPiBVMTZfTUFYICkKKyAgICAg ICAgICAgIHJldHVybjsKKworICAgICAgICBlYm8tPmJvb3RfdmlkX21vZGUgPSB0bXA7CisgICAg fQorfQorCit2b2lkIF9fc3RkY2FsbCBjbWRsaW5lX3BhcnNlX2Vhcmx5KGNvbnN0IGNoYXIgKmNt ZGxpbmUsIGVhcmx5X2Jvb3Rfb3B0c190ICplYm8pCit7CisgICAgaWYgKCAhY21kbGluZSApCisg ICAgICAgIHJldHVybjsKKworICAgIGViby0+c2tpcF9yZWFsbW9kZSA9IHNraXBfcmVhbG1vZGUo Y21kbGluZSk7CisgICAgZWJvLT5vcHRfZWRkID0gZWRkX3BhcnNlKGNtZGxpbmUpOworICAgIGVi by0+b3B0X2VkaWQgPSBlZGlkX3BhcnNlKGNtZGxpbmUpOworICAgIHZnYV9wYXJzZShjbWRsaW5l LCBlYm8pOworfQpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2Jvb3QvZGVmcy5oIGIveGVuL2Fy Y2gveDg2L2Jvb3QvZGVmcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZh YmRjMTUKLS0tIC9kZXYvbnVsbAorKysgYi94ZW4vYXJjaC94ODYvYm9vdC9kZWZzLmgKQEAgLTAs MCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxNiBPcmFjbGUgYW5kL29yIGl0cyBh ZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisgKiBp dCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1 Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNp b24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl cnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo YXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhv dXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJ VE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwg UHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUg cmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwor ICogd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xp Y2Vuc2VzLz4uCisgKgorICogbWF4KCkgd2FzIGNvcGllZCBmcm9tIHhlbi94ZW4vaW5jbHVkZS94 ZW4va2VybmVsLmguCisgKi8KKworI2lmbmRlZiBfX0JPT1RfREVGU19IX18KKyNkZWZpbmUgX19C T09UX0RFRlNfSF9fCisKKyNpbmNsdWRlICIuLi8uLi8uLi9pbmNsdWRlL3hlbi9zdGRib29sLmgi CisKKyNkZWZpbmUgX19wYWNrZWQJX19hdHRyaWJ1dGVfXygoX19wYWNrZWRfXykpCisjZGVmaW5l IF9fc3RkY2FsbAlfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpCisKKyNkZWZpbmUgTlVMTAkJ KCh2b2lkICopMCkKKworI2RlZmluZSBBTElHTl9VUChhcmcsIGFsaWduKSBcCisgICAgICAgICAg ICAgICAgKCgoYXJnKSArIChhbGlnbikgLSAxKSAmIH4oKHR5cGVvZihhcmcpKShhbGlnbikgLSAx KSkKKworI2RlZmluZSBtaW4oeCx5KSAoeyBcCisgICAgICAgIGNvbnN0IHR5cGVvZih4KSBfeCA9 ICh4KTsgICAgICAgXAorICAgICAgICBjb25zdCB0eXBlb2YoeSkgX3kgPSAoeSk7ICAgICAgIFwK KyAgICAgICAgKHZvaWQpICgmX3ggPT0gJl95KTsgICAgICAgICAgICBcCisgICAgICAgIF94IDwg X3kgPyBfeCA6IF95OyB9KQorCisjZGVmaW5lIG1heCh4LHkpICh7IFwKKyAgICAgICAgY29uc3Qg dHlwZW9mKHgpIF94ID0gKHgpOyAgICAgICBcCisgICAgICAgIGNvbnN0IHR5cGVvZih5KSBfeSA9 ICh5KTsgICAgICAgXAorICAgICAgICAodm9pZCkgKCZfeCA9PSAmX3kpOyAgICAgICAgICAgIFwK KyAgICAgICAgX3ggPiBfeSA/IF94IDogX3k7IH0pCisKKyNkZWZpbmUgX3AodmFsKQkJKCh2b2lk ICopKHVuc2lnbmVkIGxvbmcpKHZhbCkpCisKKyNkZWZpbmUgdG9sb3dlcihjKQkoKGMpIHwgMHgy MCkKKwordHlwZWRlZiB1bnNpZ25lZCBjaGFyIHU4OwordHlwZWRlZiB1bnNpZ25lZCBzaG9ydCB1 MTY7Cit0eXBlZGVmIHVuc2lnbmVkIGludCB1MzI7Cit0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9u ZyB1NjQ7Cit0eXBlZGVmIHVuc2lnbmVkIGludCBzaXplX3Q7CisKKyNkZWZpbmUgVTE2X01BWAkJ KCh1MTYpKH4wVSkpCisjZGVmaW5lIFVJTlRfTUFYCSh+MFUpCisKKyNlbmRpZiAvKiBfX0JPT1Rf REVGU19IX18gKi8KZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9ib290L2VkZC5TIGIveGVuL2Fy Y2gveDg2L2Jvb3QvZWRkLlMKaW5kZXggNWM4MGRhNi4uNzMzNzFmOSAxMDA2NDQKLS0tIGEveGVu L2FyY2gveDg2L2Jvb3QvZWRkLlMKKysrIGIveGVuL2FyY2gveDg2L2Jvb3QvZWRkLlMKQEAgLTE0 Miw5ICsxNDIsNiBAQCBlZGRfbmV4dDoKIGVkZF9kb25lOgogICAgICAgICByZXQKIAotb3B0X2Vk ZDoKLSAgICAgICAgLmJ5dGUgICAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZWRk PW9uL29mZi9za2lwbWJyCi0KIEdMT0JBTChib290X2VkZF9pbmZvX25yKQogICAgICAgICAuYnl0 ZSAgIDAKIEdMT0JBTChib290X21icl9zaWduYXR1cmVfbnIpCmRpZmYgLS1naXQgYS94ZW4vYXJj aC94ODYvYm9vdC9oZWFkLlMgYi94ZW4vYXJjaC94ODYvYm9vdC9oZWFkLlMKaW5kZXggYWM5M2Rm MC4uNmM5N2UxZiAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2Jvb3QvaGVhZC5TCisrKyBiL3hl bi9hcmNoL3g4Ni9ib290L2hlYWQuUwpAQCAtNTE0LDYgKzUxNCwxMyBAQCB0cmFtcG9saW5lX3Nl dHVwOgogICAgICAgICBjbXBiICAgICQwLHN5bV9waHlzKGVmaV9wbGF0Zm9ybSkKICAgICAgICAg am56ICAgICAxZgogCisgICAgICAgIC8qIEJhaWwgaWYgdGhlcmUgaXMgbm8gY29tbWFuZCBsaW5l IHRvIHBhcnNlLiAqLworICAgICAgICBtb3YgICAgIHN5bV9waHlzKG11bHRpYm9vdF9wdHIpLCVl YngKKyAgICAgICAgdGVzdGwgICAkTUJJX0NNRExJTkUsTUJfZmxhZ3MoJWVieCkKKyAgICAgICAg anogICAgICAxZgorCisgICAgICAgIHB1c2hsICAgJHN5bV9waHlzKGVhcmx5X2Jvb3Rfb3B0cykK KyAgICAgICAgcHVzaGwgICBNQl9jbWRsaW5lKCVlYngpCiAgICAgICAgIGNhbGwgICAgY21kbGlu ZV9wYXJzZV9lYXJseQogCiAxOgpAQCAtNTMyLDYgKzUzOSw3IEBAIHRyYW1wb2xpbmVfc2V0dXA6 CiAgICAgICAgIC8qIEp1bXAgaW50byB0aGUgcmVsb2NhdGVkIHRyYW1wb2xpbmUuICovCiAgICAg ICAgIGxyZXQKIAorY21kbGluZV9wYXJzZV9lYXJseToKICNpbmNsdWRlICJjbWRsaW5lLlMiCiAK IHJlbG9jOgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2Jvb3QvcmVsb2MuYyBiL3hlbi9hcmNo L3g4Ni9ib290L3JlbG9jLmMKaW5kZXggYjIyYmYxZS4uMGYyZTM3MiAxMDA2NDQKLS0tIGEveGVu L2FyY2gveDg2L2Jvb3QvcmVsb2MuYworKysgYi94ZW4vYXJjaC94ODYvYm9vdC9yZWxvYy5jCkBA IC0yNSwyMSArMjUsMTAgQEAgYXNtICgKICAgICAiICAgIGptcCAgcmVsb2MgICAgICAgICAgICAg ICAgICAgIFxuIgogICAgICk7CiAKLXR5cGVkZWYgdW5zaWduZWQgaW50IHUzMjsKLXR5cGVkZWYg dW5zaWduZWQgbG9uZyBsb25nIHU2NDsKLQorI2luY2x1ZGUgImRlZnMuaCIKICNpbmNsdWRlICIu Li8uLi8uLi9pbmNsdWRlL3hlbi9tdWx0aWJvb3QuaCIKICNpbmNsdWRlICIuLi8uLi8uLi9pbmNs dWRlL3hlbi9tdWx0aWJvb3QyLmgiCiAKLSNkZWZpbmUgTlVMTAkJKCh2b2lkICopMCkKLQotI2Rl ZmluZSBfX3N0ZGNhbGwJX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKQotCi0jZGVmaW5lIEFM SUdOX1VQKGFyZywgYWxpZ24pIFwKLSAgICAgICAgICAgICAgICAoKChhcmcpICsgKGFsaWduKSAt IDEpICYgfigodHlwZW9mKGFyZykpKGFsaWduKSAtIDEpKQotCi0jZGVmaW5lIF9wKHZhbCkJCSgo dm9pZCAqKSh1bnNpZ25lZCBsb25nKSh2YWwpKQotCiAjZGVmaW5lIGdldF9tYjJfZGF0YSh0YWcs IHR5cGUsIG1lbWJlcikgICAoKChtdWx0aWJvb3QyX3RhZ18jI3R5cGUjI190ICopKHRhZykpLT5t ZW1iZXIpCiAjZGVmaW5lIGdldF9tYjJfc3RyaW5nKHRhZywgdHlwZSwgbWVtYmVyKSAoKHUzMiln ZXRfbWIyX2RhdGEodGFnLCB0eXBlLCBtZW1iZXIpKQogCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94 ODYvYm9vdC90cmFtcG9saW5lLlMgYi94ZW4vYXJjaC94ODYvYm9vdC90cmFtcG9saW5lLlMKaW5k ZXggYjAxMzYxNC4uMjcxNWQxNyAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2Jvb3QvdHJhbXBv bGluZS5TCisrKyBiL3hlbi9hcmNoL3g4Ni9ib290L3RyYW1wb2xpbmUuUwpAQCAtMjIwLDggKzIy MCwyMyBAQCB0cmFtcG9saW5lX2Jvb3RfY3B1X2VudHJ5OgogICAgICAgICAvKiBKdW1wIHRvIHRo ZSBjb21tb24gYm9vdHN0cmFwIGVudHJ5IHBvaW50LiAqLwogICAgICAgICBqbXAgICAgIHRyYW1w b2xpbmVfcHJvdG1vZGVfZW50cnkKIAorI2luY2x1ZGUgInZpZGVvLmgiCisKKyAgICAgICAgLmFs aWduICAyCisvKiBLZWVwIGluIHN5bmMgd2l0aCBjbWRsaW5lLmM6ZWFybHlfYm9vdF9vcHRzX3Qg dHlwZSEgKi8KK2Vhcmx5X2Jvb3Rfb3B0czoKIHNraXBfcmVhbG1vZGU6CiAgICAgICAgIC5ieXRl ICAgMAorb3B0X2VkZDoKKyAgICAgICAgLmJ5dGUgICAwICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC8qIGVkZD1vbi9vZmYvc2tpcG1iciAqLworb3B0X2VkaWQ6CisgICAgICAgIC5ieXRl ICAgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBFRElEIHBhcnNpbmcgb3B0aW9u IChmb3JjZS9uby9kZWZhdWx0KS4gKi8KKy8qIFBhZGRpbmcuICovCisgICAgICAgIC5ieXRlICAg MAorR0xPQkFMKGJvb3RfdmlkX21vZGUpCisgICAgICAgIC53b3JkICAgVklERU9fODB4MjUgICAg ICAgICAgICAgICAgICAgICAvKiBJZiB3ZSBkb24ndCBydW4gYXQgYWxsLCBhc3N1bWUgYmFzaWMg dmlkZW8gbW9kZSAzIGF0IDgweDI1LiAqLwordmVzYV9zaXplOgorICAgICAgICAud29yZCAgIDAs MCwwICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogd2lkdGggeCBkZXB0aCB4IGhlaWdodCAq LwogCiBHTE9CQUwoa2JkX3NoaWZ0X2ZsYWdzKQogICAgICAgICAuYnl0ZSAgIDAKZGlmZiAtLWdp dCBhL3hlbi9hcmNoL3g4Ni9ib290L3ZpZGVvLlMgYi94ZW4vYXJjaC94ODYvYm9vdC92aWRlby5T CmluZGV4IDJhYWZiZWIuLjMzNWE1MWMgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9ib290L3Zp ZGVvLlMKKysrIGIveGVuL2FyY2gveDg2L2Jvb3QvdmlkZW8uUwpAQCAtOTQ1LDcgKzk0NSw2IEBA IHN0b3JlX2VkaWQ6CiAjZW5kaWYKICAgICAgICAgcmV0CiAKLW9wdF9lZGlkOiAgICAgICAuYnl0 ZSAgIDAgICAgICAgIyBFRElEIHBhcnNpbmcgb3B0aW9uIChmb3JjZS9uby9kZWZhdWx0KQogbXRf ZW5kOiAgICAgICAgIC53b3JkICAgMCAgICAgICAjIEVuZCBvZiB2aWRlbyBtb2RlIHRhYmxlIGlm IGJ1aWx0CiBlZGl0X2J1ZjogICAgICAgLnNwYWNlICA2ICAgICAgICMgTGluZSBlZGl0b3IgYnVm ZmVyCiBjYXJkX25hbWU6ICAgICAgLndvcmQgICAwICAgICAgICMgUG9pbnRlciB0byBhZGFwdGVy IG5hbWUKQEAgLTk5MSwxMiArOTkwLDYgQEAgbmFtZV9iYW5uOiAgICAgIC5hc2NpeiAgIlZpZGVv IGFkYXB0ZXI6ICIKIAogZm9yY2Vfc2l6ZTogICAgIC53b3JkICAgMCAgICAgICAjIFVzZSB0aGlz IHNpemUgaW5zdGVhZCBvZiB0aGUgb25lIGluIEJJT1MgdmFycwogCi12ZXNhX3NpemU6ICAgICAg LndvcmQgICAwLDAsMCAgICMgd2lkdGggeCBkZXB0aCB4IGhlaWdodAotCi0vKiBJZiB3ZSBkb24n dCBydW4gYXQgYWxsLCBhc3N1bWUgYmFzaWMgdmlkZW8gbW9kZSAzIGF0IDgweDI1LiAqLwotICAg ICAgICAuYWxpZ24gIDIKLUdMT0JBTChib290X3ZpZF9tb2RlKQotICAgICAgICAud29yZCAgIFZJ REVPXzgweDI1CiBHTE9CQUwoYm9vdF92aWRfaW5mbykKICAgICAgICAgLmJ5dGUgICAwLCAwICAg IC8qIG9yaWdfeCwgb3JpZ195ICovCiAgICAgICAgIC5ieXRlICAgMyAgICAgICAvKiB0ZXh0IG1v ZGUgMyAgICAqLwotLSAKMS43LjEwLjQKCgpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBsaXN0cy54 ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK