From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Kiper Subject: [PATCH v7 09/14] x86/boot: implement early command line parser in C Date: Fri, 23 Sep 2016 23:47:34 +0200 Message-ID: <1474667259-27290-10-git-send-email-daniel.kiper@oracle.com> References: <1474667259-27290-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 1bnYL9-00045f-Rn for xen-devel@lists.xenproject.org; Fri, 23 Sep 2016 21:49:04 +0000 In-Reply-To: <1474667259-27290-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, david.vrabel@citrix.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 b3JhY2xlLmNvbT4KLS0tCnY3IC0gc3VnZ2VzdGlvbnMvZml4ZXM6CiAgIC0gYWRkIG1pbigpIG1h Y3JvCiAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCksCiAgIC0gYWRkIHBhZGRpbmcgdG8g ZWFybHlfYm9vdF9vcHRzX3QKICAgICBpbiBtb3JlIHN0YW5kYXJkIHdheQogICAgIChzdWdnZXN0 ZWQgYnkgSmFuIEJldWxpY2gpLAogICAtIHNpbXBsaWZ5IGRlZnMuaCBkZXBlbmRlbmNpZXMKICAg ICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKS4KCnY2IC0gc3VnZ2VzdGlvbnMvZml4ZXM6CiAg IC0gcHV0IGNvbW1vbiBjbWRsaW5lLmMgYW5kIHJlbG9jLmMKICAgICBkZWZpbml0aW9ucyBpbnRv IGRlZnMuaCBoZWFkZXIKICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKSwKICAgLSB1c2Ug eGVuL2luY2x1ZGUveGVuL3N0ZGJvb2wuaAogICAgIGFuZCBib29sIHR5cGUgZnJvbSBpdCBpbnN0 ZWFkCiAgICAgb2Ygb3duIGRlZmluZWQgYm9vbF90CiAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1 bGljaCksCiAgIC0gZGVmaW5lIGRlbGltX2NoYXJzIGFzIGNvbnN0YW50CiAgICAgKHN1Z2dlc3Rl ZCBieSBKYW4gQmV1bGljaCksCiAgIC0gcHJvcGVybHkgYWxpZ24gdHJhbXBvbGluZS5TOmVhcmx5 X2Jvb3Rfb3B0cyBzdHJ1Y3QKICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKSwKICAgLSBm aXggb3ZlcmZsb3cgY2hlY2sgaW4gc3RydG91aSgpCiAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1 bGljaCksCiAgIC0gcmVtb3ZlIHVudXNlZCB4ZW4vaW5jbHVkZS9hc20teDg2L2NvbmZpZy5oCiAg ICAgaGVhZGVyIGZyb20gcmVsb2MuYyBkZXBlbmRlbmNpZXMsCiAgIC0gaW1wcm92ZSBjb21taXQg bWVzc2FnZS4KCnY0IC0gc3VnZ2VzdGlvbnMvZml4ZXM6CiAgIC0gbW92ZSB0byBzdGRjYWxsIGNh bGxpbmcgY29udmVudGlvbgogICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpLAogICAtIGRl ZmluZSBib29sX3QgYW5kIHVzZSBpdCBwcm9wZXJseQogICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJl dWxpY2gpLAogICAtIHB1dCBsaXN0IG9mIGRlbGltaXRlciBjaGFycyBpbnRvCiAgICAgc3RhdGlj IGNvbnN0IGNoYXJbXQogICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpLAogICAtIHVzZSBz dHJsZW4oKSBpbnN0ZWFkIG9mIHN0cmxlbl9vcHQoKQogICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJl dWxpY2gpLAogICAtIGNoYW5nZSBzdHJ0b2koKSB0byBzdHJ0b3VpKCkgYW5kCiAgICAgb3B0aW1p emUgaXQgYSBiaXQKICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKSwKICAgLSBkZWZpbmUg c3RyY2hyKCkgYW5kIHVzZSBpdCBpbiBzdHJ0b3VpKCkKICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBC ZXVsaWNoKSwKICAgLSBvcHRpbWl6ZSB2Z2FfcGFyc2UoKQogICAgIChzdWdnZXN0ZWQgYnkgSmFu IEJldWxpY2gpLAogICAtIG1vdmUgIWNtZGxpbmUgY2hlY2sgZnJvbSBhc3NlbWJseSB0byBDCiAg ICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCksCiAgIC0gcmVtb3ZlIG15IG5hbWUgZnJvbSBj b3B5cmlnaHQgKE9yYWNsZSByZXF1aXJlbWVudCkKICAgICAoc3VnZ2VzdGVkIGJ5IEtvbnJhZCBS emVzenV0ZWsgV2lsaykuCgp2MyAtIHN1Z2dlc3Rpb25zL2ZpeGVzOgogICAtIG9wdGltaXplIHNv bWUgY29kZQogICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpLAogICAtIHB1dCBWRVNBIGRh dGEgaW50byBlYXJseV9ib290X29wdHNfdCBtZW1iZXJzCiAgICAgKHN1Z2dlc3RlZCBieSBKYW4g QmV1bGljaCksCiAgIC0gcmVuYW1lIHNvbWUgZnVuY3Rpb25zIGFuZCB2YXJpYWJsZXMKICAgICAo c3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKSwKICAgLSBtb3ZlIGFyb3VuZCB2aWRlby5oIGluY2x1 ZGUgaW4geGVuL2FyY2gveDg2L2Jvb3QvdHJhbXBvbGluZS5TCiAgICAgKHN1Z2dlc3RlZCBieSBK YW4gQmV1bGljaCksCiAgIC0gZml4IGNvZGluZyBzdHlsZQogICAgIChzdWdnZXN0ZWQgYnkgSmFu IEJldWxpY2gpLAogICAtIGZpeCBidWlsZCB3aXRoIG9sZGVyIEdDQwogICAgIChzdWdnZXN0ZWQg YnkgS29ucmFkIFJ6ZXN6dXRlayBXaWxrKSwKICAgLSByZW1vdmUgcmVkdW5kYW50IGNvbW1lbnRz CiAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCksCiAgIC0gYWRkIHNvbWUgY29tbWVudHMK ICAgLSBpbXByb3ZlIGNvbW1pdCBtZXNzYWdlCiAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGlj aCkuCi0tLQogLmdpdGlnbm9yZSAgICAgICAgICAgICAgICAgICAgIHwgICAgNSArLQogeGVuL2Fy Y2gveDg2L01ha2VmaWxlICAgICAgICAgIHwgICAgMiArLQogeGVuL2FyY2gveDg2L2Jvb3QvTWFr ZWZpbGUgICAgIHwgICAxMSArLQogeGVuL2FyY2gveDg2L2Jvb3QvYnVpbGQzMi5tayAgIHwgICAg MiArCiB4ZW4vYXJjaC94ODYvYm9vdC9jbWRsaW5lLlMgICAgfCAgMzY3IC0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHhlbi9hcmNoL3g4Ni9ib290L2NtZGxpbmUuYyAg ICB8ICAzNDAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogeGVuL2FyY2gv eDg2L2Jvb3QvZGVmcy5oICAgICAgIHwgICA1OCArKysrKysrCiB4ZW4vYXJjaC94ODYvYm9vdC9l ZGQuUyAgICAgICAgfCAgICAzIC0KIHhlbi9hcmNoL3g4Ni9ib290L2hlYWQuUyAgICAgICB8ICAg IDggKwogeGVuL2FyY2gveDg2L2Jvb3QvcmVsb2MuYyAgICAgIHwgICAxMyArLQogeGVuL2FyY2gv eDg2L2Jvb3QvdHJhbXBvbGluZS5TIHwgICAxNSArKwogeGVuL2FyY2gveDg2L2Jvb3QvdmlkZW8u UyAgICAgIHwgICAgNyAtCiAxMiBmaWxlcyBjaGFuZ2VkLCA0MzcgaW5zZXJ0aW9ucygrKSwgMzk0 IGRlbGV0aW9ucygtKQogZGVsZXRlIG1vZGUgMTAwNjQ0IHhlbi9hcmNoL3g4Ni9ib290L2NtZGxp bmUuUwogY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9hcmNoL3g4Ni9ib290L2NtZGxpbmUuYwogY3Jl YXRlIG1vZGUgMTAwNjQ0IHhlbi9hcmNoL3g4Ni9ib290L2RlZnMuaAoKZGlmZiAtLWdpdCBhLy5n aXRpZ25vcmUgYi8uZ2l0aWdub3JlCmluZGV4IGNjNjRmYzkuLjlhYTQ3YTEgMTAwNjQ0Ci0tLSBh Ly5naXRpZ25vcmUKKysrIGIvLmdpdGlnbm9yZQpAQCAtMjQ3LDkgKzI0NywxMCBAQCB4ZW4vYXJj aC9hcm0veGVuLmxkcwogeGVuL2FyY2gveDg2L2FzbS1vZmZzZXRzLnMKIHhlbi9hcmNoL3g4Ni9i b290L21rZWxmMzIKIHhlbi9hcmNoL3g4Ni94ZW4ubGRzCit4ZW4vYXJjaC94ODYvYm9vdC9jbWRs aW5lLlMKIHhlbi9hcmNoL3g4Ni9ib290L3JlbG9jLlMKLXhlbi9hcmNoL3g4Ni9ib290L3JlbG9j LmJpbgoteGVuL2FyY2gveDg2L2Jvb3QvcmVsb2MubG5rCit4ZW4vYXJjaC94ODYvYm9vdC8qLmJp bgoreGVuL2FyY2gveDg2L2Jvb3QvKi5sbmsKIHhlbi9hcmNoL3g4Ni9lZmkubGRzCiB4ZW4vYXJj aC94ODYvZWZpL2NoZWNrLmVmaQogeGVuL2FyY2gveDg2L2VmaS9kaXNhYmxlZApkaWZmIC0tZ2l0 IGEveGVuL2FyY2gveDg2L01ha2VmaWxlIGIveGVuL2FyY2gveDg2L01ha2VmaWxlCmluZGV4IDQ5 ZDdlNTkuLjdkMzc3MjggMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9NYWtlZmlsZQorKysgYi94 ZW4vYXJjaC94ODYvTWFrZWZpbGUKQEAgLTIyNCw2ICsyMjQsNiBAQCBjbGVhbjo6CiAJcm0gLWYg YXNtLW9mZnNldHMucyAqLmxkcyBib290LyoubyBib290Lyp+IGJvb3QvY29yZSBib290L21rZWxm MzIKIAlybSAtZiAkKEJBU0VESVIpLy54ZW4tc3ltcy5bMC05XSogYm9vdC8uKi5kCiAJcm0gLWYg JChCQVNFRElSKS8ueGVuLmVmaS5bMC05XSogZWZpLyouZWZpIGVmaS9kaXNhYmxlZCBlZmkvbWty ZWxvYwotCXJtIC1mIGJvb3QvcmVsb2MuUyBib290L3JlbG9jLmxuayBib290L3JlbG9jLmJpbgor CXJtIC1mIGJvb3QvY21kbGluZS5TIGJvb3QvcmVsb2MuUyBib290LyoubG5rIGJvb3QvKi5iaW4K IAlybSAtZiBub3RlLm8KIAkkKE1BS0UpIC1mICQoQkFTRURJUikvUnVsZXMubWsgLUMgdGVzdCBj bGVhbgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2Jvb3QvTWFrZWZpbGUgYi94ZW4vYXJjaC94 ODYvYm9vdC9NYWtlZmlsZQppbmRleCAwNjg5M2Q4Li5jNjI0NmM4IDEwMDY0NAotLS0gYS94ZW4v YXJjaC94ODYvYm9vdC9NYWtlZmlsZQorKysgYi94ZW4vYXJjaC94ODYvYm9vdC9NYWtlZmlsZQpA QCAtMSw5ICsxLDE2IEBACiBvYmotYmluLXkgKz0gaGVhZC5vCiAKLVJFTE9DX0RFUFMgPSAkKEJB U0VESVIpL2luY2x1ZGUvYXNtLXg4Ni9jb25maWcuaCAkKEJBU0VESVIpL2luY2x1ZGUveGVuL211 bHRpYm9vdC5oIFwKK0RFRlNfSF9ERVBTID0gZGVmcy5oICQoQkFTRURJUikvaW5jbHVkZS94ZW4v c3RkYm9vbC5oCisKK0NNRExJTkVfREVQUyA9ICQoREVGU19IX0RFUFMpIHZpZGVvLmgKKworUkVM T0NfREVQUyA9ICQoREVGU19IX0RFUFMpICQoQkFTRURJUikvaW5jbHVkZS94ZW4vbXVsdGlib290 LmggXAogCSAgICAgJChCQVNFRElSKS9pbmNsdWRlL3hlbi9tdWx0aWJvb3QyLmgKIAotaGVhZC5v OiByZWxvYy5TCitoZWFkLm86IGNtZGxpbmUuUyByZWxvYy5TCisKK2NtZGxpbmUuUzogY21kbGlu ZS5jICQoQ01ETElORV9ERVBTKQorCSQoTUFLRSkgLWYgYnVpbGQzMi5tayAkQCBDTURMSU5FX0RF UFM9IiQoQ01ETElORV9ERVBTKSIKIAogcmVsb2MuUzogcmVsb2MuYyAkKFJFTE9DX0RFUFMpCiAJ JChNQUtFKSAtZiBidWlsZDMyLm1rICRAIFJFTE9DX0RFUFM9IiQoUkVMT0NfREVQUykiCmRpZmYg LS1naXQgYS94ZW4vYXJjaC94ODYvYm9vdC9idWlsZDMyLm1rIGIveGVuL2FyY2gveDg2L2Jvb3Qv YnVpbGQzMi5tawppbmRleCAzOWU2NDUzLi4zZDAxNjk4IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94 ODYvYm9vdC9idWlsZDMyLm1rCisrKyBiL3hlbi9hcmNoL3g4Ni9ib290L2J1aWxkMzIubWsKQEAg LTMyLDYgKzMyLDggQEAgQ0ZMQUdTIDo9ICQoZmlsdGVyLW91dCAtZmx0bywkKENGTEFHUykpCiAl Lm86ICUuYwogCSQoQ0MpICQoQ0ZMQUdTKSAtYyAtZnBpYyAkPCAtbyAkQAogCitjbWRsaW5lLm86 IGNtZGxpbmUuYyAkKENNRExJTkVfREVQUykKKwogcmVsb2MubzogcmVsb2MuYyAkKFJFTE9DX0RF UFMpCiAKIC5QUkVDSU9VUzogJS5iaW4gJS5sbmsKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9i b290L2NtZGxpbmUuUyBiL3hlbi9hcmNoL3g4Ni9ib290L2NtZGxpbmUuUwpkZWxldGVkIGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggMDA2ODdlYi4uMDAwMDAwMAotLS0gYS94ZW4vYXJjaC94ODYvYm9v dC9jbWRsaW5lLlMKKysrIC9kZXYvbnVsbApAQCAtMSwzNjcgKzAsMCBAQAotLyoqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKgotICogY21kbGluZS5TCi0gKgotICogRWFybHkgY29tbWFuZC1saW5lIHBhcnNp bmcuCi0gKi8KLQotICAgICAgICAuY29kZTMyCi0KLSNpbmNsdWRlICJ2aWRlby5oIgotCi0jIE5C LiBTdHJpbmcgcG9pbnRlciBvbiBzdGFjayBpcyBtb2RpZmllZCB0byBwb2ludCBwYXN0IHBhcnNl ZCBkaWdpdHMuCi0uTGF0b2k6Ci0gICAgICAgIHB1c2ggICAgJWVieAotICAgICAgICBwdXNoICAg ICVlY3gKLSAgICAgICAgcHVzaCAgICAlZWR4Ci0gICAgICAgIHB1c2ggICAgJWVzaQotICAgICAg ICB4b3IgICAgICVlYngsJWVieCAgICAgICAvKiAlZWJ4ID0gYWNjdW11bGF0b3IgKi8KLSAgICAg ICAgbW92ICAgICAkMTAsJWVjeCAgICAgICAgLyogJWVjeCA9IGJhc2UgKGRlZmF1bHQgYmFzZSAx MCkgKi8KLSAgICAgICAgbW92ICAgICAxNis0KCVlc3ApLCVlc2kgLyogJWVzaSA9IHBvaW50ZXIg aW50byBhc2NpaSBzdHJpbmcuICovCi0gICAgICAgIGxvZHNiCi0gICAgICAgIGNtcGIgICAgJCcw JywlYWwKLSAgICAgICAgam5lICAgICAyZgotICAgICAgICBtb3YgICAgICQ4LCVlY3ggICAgICAg ICAvKiBQcmVmaXggJzAnID0+IG9jdGFsIChiYXNlIDgpICovCi0gICAgICAgIGxvZHNiCi0gICAg ICAgIGNtcGIgICAgJCd4JywlYWwKLSAgICAgICAgam5lICAgICAyZgotICAgICAgICBtb3YgICAg ICQxNiwlZWN4ICAgICAgICAvKiBQcmVmaXggJzB4JyA9PiBoZXggKGJhc2UgMTYpICovCi0xOiAg ICAgIGxvZHNiCi0yOiAgICAgIHN1YiAgICAgJCcwJywlYWwKLSAgICAgICAgamIgICAgICA0Zgot ICAgICAgICBjbXAgICAgICQ5LCVhbAotICAgICAgICBqYmUgICAgIDNmCi0gICAgICAgIHN1YiAg ICAgJCdBJy0nMCctMTAsJWFsCi0gICAgICAgIGpiICAgICAgNGYKLSAgICAgICAgY21wICAgICAk MTUsJWFsCi0gICAgICAgIGpiZSAgICAgM2YKLSAgICAgICAgc3ViICAgICAkJ2EnLSdBJywlYWwK LSAgICAgICAgamIgICAgICA0ZgotMzogICAgICBjbXAgICAgICVjbCwlYWwKLSAgICAgICAgamFl ICAgICA0ZgotICAgICAgICBtb3Z6YmwgICVhbCwlZWF4Ci0gICAgICAgIHhjaGcgICAgJWVheCwl ZWJ4Ci0gICAgICAgIG11bCAgICAgJWVjeAotICAgICAgICB4Y2hnICAgICVlYXgsJWVieAotICAg ICAgICBhZGQgICAgICVlYXgsJWVieAotICAgICAgICBqbXAgICAgIDFiCi00OiAgICAgIG1vdiAg ICAgJWVieCwlZWF4Ci0gICAgICAgIGRlYyAgICAgJWVzaQotICAgICAgICBtb3YgICAgICVlc2ks MTYrNCglZXNwKQotICAgICAgICBwb3AgICAgICVlc2kKLSAgICAgICAgcG9wICAgICAlZWR4Ci0g ICAgICAgIHBvcCAgICAgJWVjeAotICAgICAgICBwb3AgICAgICVlYngKLSAgICAgICAgcmV0Ci0K LS5Mc3Ryc3RyOgotICAgICAgICBwdXNoICAgICVlY3gKLSAgICAgICAgcHVzaCAgICAlZWR4Ci0g ICAgICAgIHB1c2ggICAgJWVzaQotICAgICAgICBwdXNoICAgICVlZGkKLSAgICAgICAgeG9yICAg ICAlZWF4LCVlYXgKLSAgICAgICAgeG9yICAgICAlZWN4LCVlY3gKLSAgICAgICAgbm90ICAgICAl ZWN4Ci0gICAgICAgIG1vdiAgICAgMTYrNCglZXNwKSwlZXNpCi0gICAgICAgIG1vdiAgICAgMTYr OCglZXNwKSwlZWRpCi0gICAgICAgIHJlcG5lICAgc2Nhc2IKLSAgICAgICAgbm90ICAgICAlZWN4 Ci0gICAgICAgIGRlYyAgICAgJWVjeAotICAgICAgICBtb3YgICAgICVlY3gsJWVkeAotMTogICAg ICBtb3YgICAgIDE2KzgoJWVzcCksJWVkaQotICAgICAgICBtb3YgICAgICVlc2ksJWVheAotICAg ICAgICBtb3YgICAgICVlZHgsJWVjeAotICAgICAgICByZXBlICAgIGNtcHNiCi0gICAgICAgIGpl ICAgICAgMmYKLSAgICAgICAgeGNoZyAgICAlZWF4LCVlc2kKLSAgICAgICAgaW5jICAgICAlZXNp Ci0gICAgICAgIGNtcGIgICAgJDAsLTEoJWVheCkKLSAgICAgICAgam5lICAgICAxYgotICAgICAg ICB4b3IgICAgICVlYXgsJWVheAotMjogICAgICBwb3AgICAgICVlZGkKLSAgICAgICAgcG9wICAg ICAlZXNpCi0gICAgICAgIHBvcCAgICAgJWVkeAotICAgICAgICBwb3AgICAgICVlY3gKLSAgICAg ICAgcmV0Ci0KLS5Mc3RyX3ByZWZpeDoKLSAgICAgICAgcHVzaCAgICAlZXNpCi0gICAgICAgIHB1 c2ggICAgJWVkaQotICAgICAgICBtb3YgICAgIDgrNCglZXNwKSwlZXNpIC8qIDFzdCBhcmcgaXMg cHJlZml4IHN0cmluZyAqLwotICAgICAgICBtb3YgICAgIDgrOCglZXNwKSwlZWRpIC8qIDJuZCBh cmcgaXMgbWFpbiBzdHJpbmcgKi8KLTE6ICAgICAgbG9kc2IKLSAgICAgICAgdGVzdCAgICAlYWws JWFsCi0gICAgICAgIGp6ICAgICAgMmYKLSAgICAgICAgc2Nhc2IKLSAgICAgICAgamUgICAgICAx YgotICAgICAgICBzYmIgICAgICVlYXgsJWVheAotICAgICAgICBvciAgICAgICQxLCVhbAotICAg ICAgICBqbXAgICAgIDNmCi0yOiAgICAgIHhvciAgICAgJWVheCwlZWF4Ci0zOiAgICAgIHBvcCAg ICAgJWVkaQotICAgICAgICBwb3AgICAgICVlc2kKLSAgICAgICAgcmV0Ci0KLS5Mc3RybGVuOgot ICAgICAgICBwdXNoICAgICVlY3gKLSAgICAgICAgcHVzaCAgICAlZXNpCi0gICAgICAgIHB1c2gg ICAgJWVkaQotICAgICAgICB4b3IgICAgICVlYXgsJWVheAotICAgICAgICB4b3IgICAgICVlY3gs JWVjeAotICAgICAgICBub3QgICAgICVlY3gKLSAgICAgICAgbW92ICAgICAxMis0KCVlc3ApLCVl ZGkKLSAgICAgICAgcmVwbmUgICBzY2FzYgotICAgICAgICBub3QgICAgICVlY3gKLSAgICAgICAg ZGVjICAgICAlZWN4Ci0gICAgICAgIG1vdiAgICAgJWVjeCwlZWF4Ci0gICAgICAgIHBvcCAgICAg JWVkaQotICAgICAgICBwb3AgICAgICVlc2kKLSAgICAgICAgcG9wICAgICAlZWN4Ci0gICAgICAg IHJldAotCi0uTGZpbmRfb3B0aW9uOgotICAgICAgICBtb3YgICAgIDQoJWVzcCksJWVheAotICAg ICAgICBkZWMgICAgICVlYXgKLSAgICAgICAgcHVzaCAgICAlZWJ4Ci0xOiAgICAgIHB1c2hsICAg NCs4KCVlc3ApCi0gICAgICAgIGluYyAgICAgJWVheAotICAgICAgICBwdXNoICAgICVlYXgKLSAg ICAgICAgY2FsbCAgICAuTHN0cnN0cgotICAgICAgICBhZGQgICAgICQ4LCVlc3AKLSAgICAgICAg dGVzdCAgICAlZWF4LCVlYXgKLSAgICAgICAganogICAgICAzZgotICAgICAgICBjbXAgICAgICVl YXgsNCs0KCVlc3ApCi0gICAgICAgIGplICAgICAgMmYKLSAgICAgICAgY21wYiAgICAkJyAnLC0x KCVlYXgpCi0gICAgICAgIGpuZSAgICAgMWIKLTI6ICAgICAgbW92ICAgICAlZWF4LCVlYngKLSAg ICAgICAgcHVzaGwgICA0KzgoJWVzcCkKLSAgICAgICAgY2FsbCAgICAuTHN0cmxlbgotICAgICAg ICBhZGQgICAgICQ0LCVlc3AKLSAgICAgICAgeGFkZCAgICAlZWF4LCVlYngKLSAgICAgICAgLyog TlVMIGNoZWNrIChhcyAkJ1wwJyA9PSAweDMwIGluIEdBUykgKi8KLSAgICAgICAgY21wYiAgICAk MCwoJWVieCkKLSAgICAgICAgamUgICAgICAzZgotICAgICAgICBjbXBiICAgICQnICcsKCVlYngp Ci0gICAgICAgIGplICAgICAgM2YKLSAgICAgICAgY21wYiAgICAkJz0nLCglZWJ4KQotICAgICAg ICBqbmUgICAgIDFiCi0zOiAgICAgIHBvcCAgICAgJWVieAotICAgICAgICByZXQKLQotY21kbGlu ZV9wYXJzZV9lYXJseToKLSAgICAgICAgcHVzaGEKLQotICAgICAgICAvKiBCYWlsIGlmIHRoZXJl IGlzIG5vIGNvbW1hbmQgbGluZSB0byBwYXJzZS4gKi8KLSAgICAgICAgbW92ICAgICBzeW1fcGh5 cyhtdWx0aWJvb3RfcHRyKSwlZWJ4Ci0gICAgICAgIG1vdiAgICAgTUJfZmxhZ3MoJWVieCksJWVh eAotICAgICAgICB0ZXN0ICAgICQ0LCVhbAotICAgICAgICBqeiAgICAgIC5MY21kbGluZV9leGl0 Ci0gICAgICAgIG1vdiAgICAgTUJfY21kbGluZSglZWJ4KSwlZWF4Ci0gICAgICAgIHRlc3QgICAg JWVheCwlZWF4Ci0gICAgICAgIGp6ICAgICAgLkxjbWRsaW5lX2V4aXQKLQotICAgICAgICAvKiBD aGVjayBmb3IgJ25vLXJlYWwtbW9kZScgY29tbWFuZC1saW5lIG9wdGlvbi4gKi8KLSAgICAgICAg cHVzaGwgICAkc3ltX3BoeXMoLkxub19ybV9vcHQpCi0gICAgICAgIHB1c2hsICAgTUJfY21kbGlu ZSglZWJ4KQotICAgICAgICBjYWxsICAgIC5MZmluZF9vcHRpb24KLSAgICAgICAgdGVzdCAgICAl ZWF4LCVlYXgKLSAgICAgICAgc2V0bnogICAlYWwKLSAgICAgICAgb3IgICAgICAlYWwsc3ltX3Bo eXMoc2tpcF9yZWFsbW9kZSkKLQotICAgICAgICAvKiBDaGVjayBmb3IgJ3Rib290PScgY29tbWFu ZC1saW5lIG9wdGlvbi4gKi8KLSAgICAgICAgbW92bCAgICAkc3ltX3BoeXMoLkx0Ym9vdF9vcHQp LDQoJWVzcCkKLSAgICAgICAgY2FsbCAgICAuTGZpbmRfb3B0aW9uCi0gICAgICAgIHRlc3QgICAg JWVheCwlZWF4Ci0gICAgICAgIHNldG56ICAgJWFsCi0gICAgICAgIG9yICAgICAgJWFsLHN5bV9w aHlzKHNraXBfcmVhbG1vZGUpIC8qIHRib290PSBpbXBsaWVzIG5vLXJlYWwtbW9kZSAqLwotCi0u THBhcnNlX2VkZDoKLSAgICAgICAgLyogQ2hlY2sgZm9yICdlZGQ9JyBjb21tYW5kLWxpbmUgb3B0 aW9uLiAqLwotICAgICAgICBtb3ZsICAgICRzeW1fcGh5cyguTGVkZF9vcHQpLDQoJWVzcCkKLSAg ICAgICAgY2FsbCAgICAuTGZpbmRfb3B0aW9uCi0gICAgICAgIHRlc3QgICAgJWVheCwlZWF4Ci0g ICAgICAgIGp6ICAgICAgLkxwYXJzZV9lZGlkCi0gICAgICAgIGNtcGIgICAgJCc9JywzKCVlYXgp Ci0gICAgICAgIGpuZSAgICAgLkxwYXJzZV9lZGlkCi0gICAgICAgIGFkZCAgICAgJDQsJWVheAot ICAgICAgICBtb3ZiICAgICQyLHN5bV9waHlzKG9wdF9lZGQpICAvKiBvcHRfZWRkPTI6IGVkZD1v ZmYgKi8KLSAgICAgICAgY21wdyAgICAkMHg2NjZmLCglZWF4KSAgICAgICAgICAgIC8qIDB4NjY2 ZiA9PSAib2YiICovCi0gICAgICAgIGplICAgICAgLkxwYXJzZV9lZGlkCi0gICAgICAgIGRlY2Ig ICAgc3ltX3BoeXMob3B0X2VkZCkgICAgIC8qIG9wdF9lZGQ9MTogZWRkPXNraXBtYnIgKi8KLSAg ICAgICAgY21wdyAgICAkMHg2YjczLCglZWF4KSAgICAgICAgICAgIC8qIDB4NmI3MyA9PSAic2si ICovCi0gICAgICAgIGplICAgICAgLkxwYXJzZV9lZGlkCi0gICAgICAgIGRlY2IgICAgc3ltX3Bo eXMob3B0X2VkZCkgICAgIC8qIG9wdF9lZGQ9MDogZWRkPW9uIChkZWZhdWx0KSAqLwotCi0uTHBh cnNlX2VkaWQ6Ci0gICAgICAgIC8qIENoZWNrIGZvciAnZWRpZD0nIGNvbW1hbmQtbGluZSBvcHRp b24uICovCi0gICAgICAgIG1vdmwgICAgJHN5bV9waHlzKC5MZWRpZF9vcHQpLDQoJWVzcCkKLSAg ICAgICAgY2FsbCAgICAuTGZpbmRfb3B0aW9uCi0gICAgICAgIHRlc3QgICAgJWVheCwlZWF4Ci0g ICAgICAgIGp6ICAgICAgLkxwYXJzZV92Z2EKLSAgICAgICAgY21wYiAgICAkJz0nLDQoJWVheCkK LSAgICAgICAgam5lICAgICAuTHBhcnNlX3ZnYQotICAgICAgICBhZGQgICAgICQ1LCVlYXgKLSAg ICAgICAgbW92ICAgICAlZWF4LCVlYngKLSAgICAgICAgcHVzaCAgICAlZWJ4Ci0gICAgICAgIHB1 c2hsICAgJHN5bV9waHlzKC5MZWRpZF9mb3JjZSkKLSAgICAgICAgY2FsbCAgICAuTHN0cl9wcmVm aXgKLSAgICAgICAgYWRkICAgICAkOCwlZXNwCi0gICAgICAgIG1vdmIgICAgJDIsc3ltX3BoeXMo b3B0X2VkaWQpIC8qIG9wdF9lZGlkPTI6IGVkaWQ9Zm9yY2UgKi8KLSAgICAgICAgdGVzdCAgICAl ZWF4LCVlYXgKLSAgICAgICAganogICAgICAuTHBhcnNlX3ZnYQotICAgICAgICBwdXNoICAgICVl YngKLSAgICAgICAgcHVzaGwgICAkc3ltX3BoeXMoLkxlZGlkX25vKQotICAgICAgICBjYWxsICAg IC5Mc3RyX3ByZWZpeAotICAgICAgICBhZGQgICAgICQ4LCVlc3AKLSAgICAgICAgZGVjYiAgICBz eW1fcGh5cyhvcHRfZWRpZCkgICAgLyogb3B0X2VkaWQ9MTogZWRpZD1ubyAqLwotICAgICAgICB0 ZXN0ICAgICVlYXgsJWVheAotICAgICAgICBqeiAgICAgIC5McGFyc2VfdmdhCi0gICAgICAgIGRl Y2IgICAgc3ltX3BoeXMob3B0X2VkaWQpICAgIC8qIG9wdF9lZGlkPTA6IGRlZmF1bHQgKi8KLQot LkxwYXJzZV92Z2E6Ci0gICAgICAgIC8qIENoZWNrIGZvciAndmdhPScgY29tbWFuZC1saW5lIG9w dGlvbi4gKi8KLSAgICAgICAgbW92bCAgICAkc3ltX3BoeXMoLkx2Z2Ffb3B0KSw0KCVlc3ApCi0g ICAgICAgIGNhbGwgICAgLkxmaW5kX29wdGlvbgotICAgICAgICBhZGQgICAgICQ4LCVlc3AKLSAg ICAgICAgdGVzdCAgICAlZWF4LCVlYXgKLSAgICAgICAganogICAgICAuTGNtZGxpbmVfZXhpdAot ICAgICAgICBjbXBiICAgICQnPScsMyglZWF4KQotICAgICAgICBqbmUgICAgIC5MY21kbGluZV9l eGl0Ci0gICAgICAgIGFkZCAgICAgJDQsJWVheAotCi0gICAgICAgIC8qIEZvdW5kIHRoZSAndmdh PScgb3B0aW9uLiBEZWZhdWx0IG9wdGlvbiBpcyB0byBkaXNwbGF5IHZnYSBtZW51LiAqLwotICAg ICAgICBtb3Z3ICAgICRBU0tfVkdBLHN5bV9waHlzKGJvb3RfdmlkX21vZGUpCi0KLSAgICAgICAg LyogQ2hlY2sgZm9yICd2Z2E9dGV4dC04MHg8cm93cz4uICovCi0gICAgICAgIG1vdiAgICAgJWVh eCwlZWJ4Ci0gICAgICAgIHB1c2ggICAgJWVieAotICAgICAgICBwdXNobCAgICRzeW1fcGh5cygu THZnYV90ZXh0ODApCi0gICAgICAgIGNhbGwgICAgLkxzdHJfcHJlZml4Ci0gICAgICAgIGFkZCAg ICAgJDgsJWVzcAotICAgICAgICB0ZXN0ICAgICVlYXgsJWVheAotICAgICAgICBqbnogICAgIC5M cGFyc2VfdmdhX2dmeAotCi0gICAgICAgIC8qIFdlIGhhdmUgJ3ZnYT10ZXh0LTgweDxyb3dzPicu ICovCi0gICAgICAgIGFkZCAgICAgJDgsJWVieAotICAgICAgICBwdXNoICAgICVlYngKLSAgICAg ICAgY2FsbCAgICAuTGF0b2kKLSAgICAgICAgYWRkICAgICAkNCwlZXNwCi0gICAgICAgIG1vdiAg ICAgJWF4LCVieAotICAgICAgICBsZWEgICAgIHN5bV9waHlzKC5MdmdhX3RleHRfbW9kZXMpLCVl c2kKLTE6ICAgICAgbG9kc3cKLSAgICAgICAgdGVzdCAgICAlYXgsJWF4Ci0gICAgICAgIGp6ICAg ICAgLkxjbWRsaW5lX2V4aXQKLSAgICAgICAgY21wICAgICAlYXgsJWJ4Ci0gICAgICAgIGxvZHN3 Ci0gICAgICAgIGpuZSAgICAgMWIKLSAgICAgICAgbW92ICAgICAlYXgsc3ltX3BoeXMoYm9vdF92 aWRfbW9kZSkKLSAgICAgICAgam1wICAgICAuTGNtZGxpbmVfZXhpdAotCi0uTHBhcnNlX3ZnYV9n Zng6Ci0gICAgICAgIC8qIENoZWNrIGZvciAndmdhPWdmeC08d2lkdGg+eDxoZWlnaHQ+eDxkZXB0 aD4nLiAqLwotICAgICAgICBwdXNoICAgICVlYngKLSAgICAgICAgcHVzaGwgICAkc3ltX3BoeXMo Lkx2Z2FfZ2Z4KQotICAgICAgICBjYWxsICAgIC5Mc3RyX3ByZWZpeAotICAgICAgICBhZGQgICAg ICQ4LCVlc3AKLSAgICAgICAgdGVzdCAgICAlZWF4LCVlYXgKLSAgICAgICAgam56ICAgICAuTHBh cnNlX3ZnYV9tb2RlCi0KLSAgICAgICAgLyogV2UgaGF2ZSAndmdhPWdmeC08d2lkdGg+eDxoZWln aHQ+eDxkZXB0aD4nLiAqLwotICAgICAgICAvKiBza2lwICdnZngtJyAqLwotICAgICAgICBhZGQg ICAgICQ0LCVlYngKLSAgICAgICAgLyogcGFyc2UgPHdpZHRoPiAqLwotICAgICAgICBwdXNoICAg ICVlYngKLSAgICAgICAgY2FsbCAgICAuTGF0b2kKLSAgICAgICAgcG9wICAgICAlZXNpCi0gICAg ICAgIG1vdiAgICAgJWF4LHN5bV9waHlzKHZlc2Ffc2l6ZSkrMAotICAgICAgICAvKiBza2lwICd4 JyAqLwotICAgICAgICBsb2RzYgotICAgICAgICBjbXBiICAgICQneCcsJWFsCi0gICAgICAgIGpu ZSAgICAgLkxjbWRsaW5lX2V4aXQKLSAgICAgICAgLyogcGFyc2UgPGhlaWdodD4gKi8KLSAgICAg ICAgcHVzaCAgICAlZXNpCi0gICAgICAgIGNhbGwgICAgLkxhdG9pCi0gICAgICAgIHBvcCAgICAg JWVzaQotICAgICAgICBtb3YgICAgICVheCxzeW1fcGh5cyh2ZXNhX3NpemUpKzIKLSAgICAgICAg Lyogc2tpcCAneCcgKi8KLSAgICAgICAgbG9kc2IKLSAgICAgICAgY21wYiAgICAkJ3gnLCVhbAot ICAgICAgICBqbmUgICAgIC5MY21kbGluZV9leGl0Ci0gICAgICAgIC8qIHBhcnNlIDxkZXB0aD4g Ki8KLSAgICAgICAgcHVzaCAgICAlZXNpCi0gICAgICAgIGNhbGwgICAgLkxhdG9pCi0gICAgICAg IHBvcCAgICAgJWVzaQotICAgICAgICBtb3YgICAgICVheCxzeW1fcGh5cyh2ZXNhX3NpemUpKzQK LSAgICAgICAgLyogY29tbWl0IHRvIHZlc2EgbW9kZSAqLwotICAgICAgICBtb3Z3ICAgICRWSURF T19WRVNBX0JZX1NJWkUsc3ltX3BoeXMoYm9vdF92aWRfbW9kZSkKLSAgICAgICAgam1wICAgICAu TGNtZGxpbmVfZXhpdAotCi0uTHBhcnNlX3ZnYV9tb2RlOgotICAgICAgICAvKiBDaGVjayBmb3Ig J3ZnYT1tb2RlLTxtb2RlPicuICovCi0gICAgICAgIHB1c2ggICAgJWVieAotICAgICAgICBwdXNo bCAgICRzeW1fcGh5cyguTHZnYV9tb2RlKQotICAgICAgICBjYWxsICAgIC5Mc3RyX3ByZWZpeAot ICAgICAgICBhZGQgICAgICQ4LCVlc3AKLSAgICAgICAgdGVzdCAgICAlZWF4LCVlYXgKLSAgICAg ICAgam56ICAgICAuTHBhcnNlX3ZnYV9jdXJyZW50Ci0KLSAgICAgICAgLyogV2UgaGF2ZSAndmdh PW1vZGUtPG1vZGU+Jy4gKi8KLSAgICAgICAgYWRkICAgICAkNSwlZWJ4Ci0gICAgICAgIHB1c2gg ICAgJWVieAotICAgICAgICBjYWxsICAgIC5MYXRvaQotICAgICAgICBhZGQgICAgICQ0LCVlc3AK LSAgICAgICAgbW92ICAgICAlYXgsc3ltX3BoeXMoYm9vdF92aWRfbW9kZSkKLSAgICAgICAgam1w ICAgICAuTGNtZGxpbmVfZXhpdAotCi0uTHBhcnNlX3ZnYV9jdXJyZW50OgotICAgICAgICAvKiBD aGVjayBmb3IgJ3ZnYT1jdXJyZW50Jy4gKi8KLSAgICAgICAgcHVzaCAgICAlZWJ4Ci0gICAgICAg IHB1c2hsICAgJHN5bV9waHlzKC5MdmdhX2N1cnJlbnQpCi0gICAgICAgIGNhbGwgICAgLkxzdHJf cHJlZml4Ci0gICAgICAgIGFkZCAgICAgJDgsJWVzcAotICAgICAgICB0ZXN0ICAgICVlYXgsJWVh eAotICAgICAgICBqbnogICAgIC5MY21kbGluZV9leGl0Ci0KLSAgICAgICAgLyogV2UgaGF2ZSAn dmdhPWN1cnJlbnQnLiAqLwotICAgICAgICBtb3Z3ICAgICRWSURFT19DVVJSRU5UX01PREUsc3lt X3BoeXMoYm9vdF92aWRfbW9kZSkKLQotLkxjbWRsaW5lX2V4aXQ6Ci0gICAgICAgIHBvcGEKLSAg ICAgICAgcmV0Ci0KLSAgICAgICAgLnB1c2hzZWN0aW9uIC5pbml0LnJvZGF0YSwgImEiLCBAcHJv Z2JpdHMKLQotLkx2Z2FfdGV4dF9tb2RlczogLyogcm93cywgbW9kZV9udW1iZXIgKi8KLSAgICAg ICAgLndvcmQgICAyNSxWSURFT184MHgyNQotICAgICAgICAud29yZCAgIDUwLFZJREVPXzgweDUw Ci0gICAgICAgIC53b3JkICAgNDMsVklERU9fODB4NDMKLSAgICAgICAgLndvcmQgICAyOCxWSURF T184MHgyOAotICAgICAgICAud29yZCAgIDMwLFZJREVPXzgweDMwCi0gICAgICAgIC53b3JkICAg MzQsVklERU9fODB4MzQKLSAgICAgICAgLndvcmQgICA2MCxWSURFT184MHg2MAotICAgICAgICAu d29yZCAgIDAKLQotLkx2Z2Ffb3B0OgotICAgICAgICAuYXNjaXogICJ2Z2EiCi0uTHZnYV90ZXh0 ODA6Ci0gICAgICAgIC5hc2NpeiAgInRleHQtODB4IgotLkx2Z2FfZ2Z4OgotICAgICAgICAuYXNj aXogICJnZngtIgotLkx2Z2FfbW9kZToKLSAgICAgICAgLmFzY2l6ICAibW9kZS0iCi0uTHZnYV9j dXJyZW50OgotICAgICAgICAuYXNjaXogICJjdXJyZW50IgotLkxub19ybV9vcHQ6Ci0gICAgICAg IC5hc2NpeiAgIm5vLXJlYWwtbW9kZSIKLS5MdGJvb3Rfb3B0OgotICAgICAgICAuYXNjaXogICJ0 Ym9vdCIKLS5MZWRpZF9vcHQ6Ci0gICAgICAgIC5hc2NpeiAgImVkaWQiCi0uTGVkaWRfZm9yY2U6 Ci0gICAgICAgIC5hc2NpeiAgImZvcmNlIgotLkxlZGlkX25vOgotICAgICAgICAuYXNjaXogICJu byIKLS5MZWRkX29wdDoKLSAgICAgICAgLmFzY2l6ICAiZWRkIgotCi0gICAgICAgIC5wb3BzZWN0 aW9uCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvYm9vdC9jbWRsaW5lLmMgYi94ZW4vYXJjaC94 ODYvYm9vdC9jbWRsaW5lLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDZh YTA2NAotLS0gL2Rldi9udWxsCisrKyBiL3hlbi9hcmNoL3g4Ni9ib290L2NtZGxpbmUuYwpAQCAt MCwwICsxLDM0MCBAQAorLyoKKyAqIENvcHlyaWdodCAoYykgMjAxNSwgMjAxNiBPcmFjbGUgYW5k L29yIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFRoaXMgcHJv Z3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5CisgKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNl bnNlIGFzIHB1Ymxpc2hlZCBieQorICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0 aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKyAqIChhdCB5b3VyIG9wdGlvbikgYW55 IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklM SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05V IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hv dWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5z ZSBhbG9uZworICogd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5n bnUub3JnL2xpY2Vuc2VzLz4uCisgKgorICogc3RybGVuKCksIHN0cm5jbXAoKSwgc3RyY2hyKCks IHN0cnNwbigpIGFuZCBzdHJjc3BuKCkgd2VyZSBjb3BpZWQgZnJvbQorICogTGludXgga2VybmVs IHNvdXJjZSAobGludXgvbGliL3N0cmluZy5jKS4KKyAqLworCisvKgorICogVGhpcyBlbnRyeSBw b2ludCBpcyBlbnRlcmVkIGZyb20geGVuL2FyY2gveDg2L2Jvb3QvaGVhZC5TIHdpdGg6CisgKiAg IC0gMHg0KCVlc3ApID0gJmNtZGxpbmUsCisgKiAgIC0gMHg4KCVlc3ApID0gJmVhcmx5X2Jvb3Rf b3B0cy4KKyAqLworYXNtICgKKyAgICAiICAgIC50ZXh0ICAgICAgICAgICAgICAgICAgICAgICAg IFxuIgorICAgICIgICAgLmdsb2JsIF9zdGFydCAgICAgICAgICAgICAgICAgXG4iCisgICAgIl9z dGFydDogICAgICAgICAgICAgICAgICAgICAgICAgICBcbiIKKyAgICAiICAgIGptcCAgY21kbGlu ZV9wYXJzZV9lYXJseSAgICAgIFxuIgorICAgICk7CisKKyNpbmNsdWRlICJkZWZzLmgiCisjaW5j bHVkZSAidmlkZW8uaCIKKworLyogS2VlcCBpbiBzeW5jIHdpdGggdHJhbXBvbGluZS5TOmVhcmx5 X2Jvb3Rfb3B0cyBsYWJlbCEgKi8KK3R5cGVkZWYgc3RydWN0IF9fcGFja2VkIHsKKyAgICB1OCBz a2lwX3JlYWxtb2RlOworICAgIHU4IG9wdF9lZGQ7CisgICAgdTggb3B0X2VkaWQ7CisgICAgdTgg cGFkZGluZzsKKyAgICB1MTYgYm9vdF92aWRfbW9kZTsKKyAgICB1MTYgdmVzYV93aWR0aDsKKyAg ICB1MTYgdmVzYV9oZWlnaHQ7CisgICAgdTE2IHZlc2FfZGVwdGg7Cit9IGVhcmx5X2Jvb3Rfb3B0 c190OworCisvKgorICogU3BhY2UgYW5kIFRBQiBhcmUgb2J2aW91cyBkZWxpbWl0ZXJzLiBIb3dl dmVyLCBJIGFtCisgKiBhZGRpbmcgIlxuIiBhbmQgIlxyIiBoZXJlIHRvby4gSnVzdCBpbiBjYXNl IHdoZW4KKyAqIGNyYXp5IGJvb3Rsb2FkZXIvdXNlciBwdXRzIHRoZW0gc29tZXdoZXJlLgorICov CitzdGF0aWMgY29uc3QgY2hhciBkZWxpbV9jaGFyc19jb21tYVtdID0gIiwgXG5cclx0IjsKKwor I2RlZmluZSBkZWxpbV9jaGFycwkoZGVsaW1fY2hhcnNfY29tbWEgKyAxKQorCitzdGF0aWMgc2l6 ZV90IHN0cmxlbihjb25zdCBjaGFyICpzKQoreworICAgIGNvbnN0IGNoYXIgKnNjOworCisgICAg Zm9yICggc2MgPSBzOyAqc2MgIT0gJ1wwJzsgKytzYyApCisgICAgICAgIC8qIG5vdGhpbmcgKi87 CisgICAgcmV0dXJuIHNjIC0gczsKK30KKworc3RhdGljIGludCBzdHJuY21wKGNvbnN0IGNoYXIg KmNzLCBjb25zdCBjaGFyICpjdCwgc2l6ZV90IGNvdW50KQoreworICAgIHVuc2lnbmVkIGNoYXIg YzEsIGMyOworCisgICAgd2hpbGUgKCBjb3VudCApCisgICAgeworICAgICAgICBjMSA9ICpjcysr OworICAgICAgICBjMiA9ICpjdCsrOworICAgICAgICBpZiAoIGMxICE9IGMyICkKKyAgICAgICAg ICAgIHJldHVybiBjMSA8IGMyID8gLTEgOiAxOworICAgICAgICBpZiAoICFjMSApCisgICAgICAg ICAgICBicmVhazsKKyAgICAgICAgY291bnQtLTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisK K3N0YXRpYyBjaGFyICpzdHJjaHIoY29uc3QgY2hhciAqcywgaW50IGMpCit7CisgICAgZm9yICgg OyAqcyAhPSAoY2hhciljOyArK3MgKQorICAgICAgICBpZiAoICpzID09ICdcMCcgKQorICAgICAg ICAgICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIChjaGFyICopczsKK30KKworc3RhdGljIHNp emVfdCBzdHJzcG4oY29uc3QgY2hhciAqcywgY29uc3QgY2hhciAqYWNjZXB0KQoreworICAgIGNv bnN0IGNoYXIgKnA7CisgICAgY29uc3QgY2hhciAqYTsKKyAgICBzaXplX3QgY291bnQgPSAwOwor CisgICAgZm9yICggcCA9IHM7ICpwICE9ICdcMCc7ICsrcCApCisgICAgeworICAgICAgICBmb3Ig KCBhID0gYWNjZXB0OyAqYSAhPSAnXDAnOyArK2EgKQorICAgICAgICB7CisgICAgICAgICAgICBp ZiAoICpwID09ICphICkKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAg ICBpZiAoICphID09ICdcMCcgKQorICAgICAgICAgICAgcmV0dXJuIGNvdW50OworICAgICAgICAr K2NvdW50OworICAgIH0KKyAgICByZXR1cm4gY291bnQ7Cit9CisKK3N0YXRpYyBzaXplX3Qgc3Ry Y3Nwbihjb25zdCBjaGFyICpzLCBjb25zdCBjaGFyICpyZWplY3QpCit7CisgICAgY29uc3QgY2hh ciAqcDsKKyAgICBjb25zdCBjaGFyICpyOworICAgIHNpemVfdCBjb3VudCA9IDA7CisKKyAgICBm b3IgKCBwID0gczsgKnAgIT0gJ1wwJzsgKytwICkKKyAgICB7CisgICAgICAgIGZvciAoIHIgPSBy ZWplY3Q7ICpyICE9ICdcMCc7ICsrciApCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICggKnAg PT0gKnIgKQorICAgICAgICAgICAgICAgIHJldHVybiBjb3VudDsKKyAgICAgICAgfQorICAgICAg ICArK2NvdW50OworICAgIH0KKyAgICByZXR1cm4gY291bnQ7Cit9CisKK3N0YXRpYyB1bnNpZ25l ZCBpbnQgc3RydG91aShjb25zdCBjaGFyICpzLCBjb25zdCBjaGFyICpzdG9wLCBjb25zdCBjaGFy ICoqbmV4dCkKK3sKKyAgICBjaGFyIGJhc2UgPSAxMCwgbDsKKyAgICB1bnNpZ25lZCBsb25nIGxv bmcgcmVzID0gMDsKKworICAgIGlmICggKnMgPT0gJzAnICkKKyAgICAgIGJhc2UgPSAodG9sb3dl cigqKytzKSA9PSAneCcpID8gKCsrcywgMTYpIDogODsKKworICAgIGZvciAoIDsgKnMgIT0gJ1ww JzsgKytzICkKKyAgICB7CisgICAgICAgIGlmICggc3RvcCAmJiBzdHJjaHIoc3RvcCwgKnMpICkK KyAgICAgICAgICAgIGdvdG8gb3V0OworCisgICAgICAgIGlmICggKnMgPCAnMCcgfHwgKCpzID4g JzcnICYmIGJhc2UgPT0gOCkgKQorICAgICAgICB7CisgICAgICAgICAgICByZXMgPSBVSU5UX01B WDsKKyAgICAgICAgICAgIGdvdG8gb3V0OworICAgICAgICB9CisKKyAgICAgICAgbCA9IHRvbG93 ZXIoKnMpOworCisgICAgICAgIGlmICggKnMgPiAnOScgJiYgKGJhc2UgIT0gMTYgfHwgbCA8ICdh JyB8fCBsID4gJ2YnKSApCisgICAgICAgIHsKKyAgICAgICAgICAgIHJlcyA9IFVJTlRfTUFYOwor ICAgICAgICAgICAgZ290byBvdXQ7CisgICAgICAgIH0KKworICAgICAgICByZXMgKj0gYmFzZTsK KyAgICAgICAgcmVzICs9IChsID49ICdhJykgPyAobCAtICdhJyArIDEwKSA6ICgqcyAtICcwJyk7 CisKKyAgICAgICAgaWYgKCByZXMgPj0gVUlOVF9NQVggKQorICAgICAgICB7CisgICAgICAgICAg ICByZXMgPSBVSU5UX01BWDsKKyAgICAgICAgICAgIGdvdG8gb3V0OworICAgICAgICB9CisgICAg fQorCisgb3V0OgorICAgIGlmICggbmV4dCApCisgICAgICAqbmV4dCA9IHM7CisKKyAgICByZXR1 cm4gcmVzOworfQorCitzdGF0aWMgaW50IHN0cm1heGNtcChjb25zdCBjaGFyICpjcywgY29uc3Qg Y2hhciAqY3QsIGNvbnN0IGNoYXIgKl9kZWxpbV9jaGFycykKK3sKKyAgICByZXR1cm4gc3RybmNt cChjcywgY3QsIG1heChzdHJjc3BuKGNzLCBfZGVsaW1fY2hhcnMpLCBzdHJsZW4oY3QpKSk7Cit9 CisKK3N0YXRpYyBpbnQgc3Ryc3ViY21wKGNvbnN0IGNoYXIgKmNzLCBjb25zdCBjaGFyICpjdCkK K3sKKyAgICByZXR1cm4gc3RybmNtcChjcywgY3QsIHN0cmxlbihjdCkpOworfQorCitzdGF0aWMg Y29uc3QgY2hhciAqZmluZF9vcHQoY29uc3QgY2hhciAqY21kbGluZSwgY29uc3QgY2hhciAqb3B0 LCBib29sIGFyZykKK3sKKyAgICBzaXplX3QgbGMsIGxvOworCisgICAgbG8gPSBzdHJsZW4ob3B0 KTsKKworICAgIGZvciAoIDsgOyApCisgICAgeworICAgICAgICBjbWRsaW5lICs9IHN0cnNwbihj bWRsaW5lLCBkZWxpbV9jaGFycyk7CisKKyAgICAgICAgaWYgKCAqY21kbGluZSA9PSAnXDAnICkK KyAgICAgICAgICAgIHJldHVybiBOVUxMOworCisgICAgICAgIGlmICggIXN0cm1heGNtcChjbWRs aW5lLCAiLS0iLCBkZWxpbV9jaGFycykgKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAg ICAgICAgbGMgPSBzdHJjc3BuKGNtZGxpbmUsIGRlbGltX2NoYXJzKTsKKworICAgICAgICBpZiAo ICFzdHJuY21wKGNtZGxpbmUsIG9wdCwgYXJnID8gbG8gOiBtYXgobGMsIGxvKSkgKQorICAgICAg ICAgICAgcmV0dXJuIGNtZGxpbmUgKyBsbzsKKworICAgICAgICBjbWRsaW5lICs9IGxjOworICAg IH0KK30KKworc3RhdGljIGJvb2wgc2tpcF9yZWFsbW9kZShjb25zdCBjaGFyICpjbWRsaW5lKQor eworICAgIHJldHVybiBmaW5kX29wdChjbWRsaW5lLCAibm8tcmVhbC1tb2RlIiwgZmFsc2UpIHx8 IGZpbmRfb3B0KGNtZGxpbmUsICJ0Ym9vdD0iLCB0cnVlKTsKK30KKworc3RhdGljIHU4IGVkZF9w YXJzZShjb25zdCBjaGFyICpjbWRsaW5lKQoreworICAgIGNvbnN0IGNoYXIgKmM7CisKKyAgICBj ID0gZmluZF9vcHQoY21kbGluZSwgImVkZD0iLCB0cnVlKTsKKworICAgIGlmICggIWMgKQorICAg ICAgICByZXR1cm4gMDsKKworICAgIGlmICggIXN0cm1heGNtcChjLCAib2ZmIiwgZGVsaW1fY2hh cnMpICkKKyAgICAgICAgcmV0dXJuIDI7CisKKyAgICByZXR1cm4gIXN0cm1heGNtcChjLCAic2tp cG1iciIsIGRlbGltX2NoYXJzKTsKK30KKworc3RhdGljIHU4IGVkaWRfcGFyc2UoY29uc3QgY2hh ciAqY21kbGluZSkKK3sKKyAgICBjb25zdCBjaGFyICpjOworCisgICAgYyA9IGZpbmRfb3B0KGNt ZGxpbmUsICJlZGlkPSIsIHRydWUpOworCisgICAgaWYgKCAhYyApCisgICAgICAgIHJldHVybiAw OworCisgICAgaWYgKCAhc3RybWF4Y21wKGMsICJmb3JjZSIsIGRlbGltX2NoYXJzKSApCisgICAg ICAgIHJldHVybiAyOworCisgICAgcmV0dXJuICFzdHJtYXhjbXAoYywgIm5vIiwgZGVsaW1fY2hh cnMpOworfQorCitzdGF0aWMgdTE2IHJvd3Mydm1vZGUodW5zaWduZWQgaW50IHJvd3MpCit7Cisg ICAgc3dpdGNoICggcm93cyApCisgICAgeworICAgIGNhc2UgMjU6CisgICAgICAgIHJldHVybiBW SURFT184MHgyNTsKKworICAgIGNhc2UgMjg6CisgICAgICAgIHJldHVybiBWSURFT184MHgyODsK KworICAgIGNhc2UgMzA6CisgICAgICAgIHJldHVybiBWSURFT184MHgzMDsKKworICAgIGNhc2Ug MzQ6CisgICAgICAgIHJldHVybiBWSURFT184MHgzNDsKKworICAgIGNhc2UgNDM6CisgICAgICAg IHJldHVybiBWSURFT184MHg0MzsKKworICAgIGNhc2UgNTA6CisgICAgICAgIHJldHVybiBWSURF T184MHg1MDsKKworICAgIGNhc2UgNjA6CisgICAgICAgIHJldHVybiBWSURFT184MHg2MDsKKwor ICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBBU0tfVkdBOworICAgIH0KK30KKworc3RhdGlj IHZvaWQgdmdhX3BhcnNlKGNvbnN0IGNoYXIgKmNtZGxpbmUsIGVhcmx5X2Jvb3Rfb3B0c190ICpl Ym8pCit7CisgICAgY29uc3QgY2hhciAqYzsKKyAgICB1bnNpZ25lZCBpbnQgdG1wLCB2ZXNhX2Rl cHRoLCB2ZXNhX2hlaWdodCwgdmVzYV93aWR0aDsKKworICAgIGMgPSBmaW5kX29wdChjbWRsaW5l LCAidmdhPSIsIHRydWUpOworCisgICAgaWYgKCAhYyApCisgICAgICAgIHJldHVybjsKKworICAg IGViby0+Ym9vdF92aWRfbW9kZSA9IEFTS19WR0E7CisKKyAgICBpZiAoICFzdHJtYXhjbXAoYywg ImN1cnJlbnQiLCBkZWxpbV9jaGFyc19jb21tYSkgKQorICAgICAgICBlYm8tPmJvb3RfdmlkX21v ZGUgPSBWSURFT19DVVJSRU5UX01PREU7CisgICAgZWxzZSBpZiAoICFzdHJzdWJjbXAoYywgInRl eHQtODB4IikgKQorICAgIHsKKyAgICAgICAgYyArPSBzdHJsZW4oInRleHQtODB4Iik7CisgICAg ICAgIGViby0+Ym9vdF92aWRfbW9kZSA9IHJvd3Mydm1vZGUoc3RydG91aShjLCBkZWxpbV9jaGFy c19jb21tYSwgTlVMTCkpOworICAgIH0KKyAgICBlbHNlIGlmICggIXN0cnN1YmNtcChjLCAiZ2Z4 LSIpICkKKyAgICB7CisgICAgICAgIHZlc2Ffd2lkdGggPSBzdHJ0b3VpKGMgKyBzdHJsZW4oImdm eC0iKSwgIngiLCAmYyk7CisKKyAgICAgICAgaWYgKCB2ZXNhX3dpZHRoID4gVTE2X01BWCApCisg ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgLyoKKyAgICAgICAgICogSW5jcmVtZW50IGMg b3V0c2lkZSBvZiBzdHJ0b3VpKCkgYmVjYXVzZSBvdGhlcndpc2Ugc29tZQorICAgICAgICAgKiBj b21waWxlciBtYXkgY29tcGxhaW4gd2l0aCBmb2xsb3dpbmcgbWVzc2FnZToKKyAgICAgICAgICog d2FybmluZzogb3BlcmF0aW9uIG9uICdjJyBtYXkgYmUgdW5kZWZpbmVkLgorICAgICAgICAgKi8K KyAgICAgICAgKytjOworICAgICAgICB2ZXNhX2hlaWdodCA9IHN0cnRvdWkoYywgIngiLCAmYyk7 CisKKyAgICAgICAgaWYgKCB2ZXNhX2hlaWdodCA+IFUxNl9NQVggKQorICAgICAgICAgICAgcmV0 dXJuOworCisgICAgICAgIHZlc2FfZGVwdGggPSBzdHJ0b3VpKCsrYywgZGVsaW1fY2hhcnNfY29t bWEsIE5VTEwpOworCisgICAgICAgIGlmICggdmVzYV9kZXB0aCA+IFUxNl9NQVggKQorICAgICAg ICAgICAgcmV0dXJuOworCisgICAgICAgIGViby0+dmVzYV93aWR0aCA9IHZlc2Ffd2lkdGg7Cisg ICAgICAgIGViby0+dmVzYV9oZWlnaHQgPSB2ZXNhX2hlaWdodDsKKyAgICAgICAgZWJvLT52ZXNh X2RlcHRoID0gdmVzYV9kZXB0aDsKKyAgICAgICAgZWJvLT5ib290X3ZpZF9tb2RlID0gVklERU9f VkVTQV9CWV9TSVpFOworICAgIH0KKyAgICBlbHNlIGlmICggIXN0cnN1YmNtcChjLCAibW9kZS0i KSApCisgICAgeworICAgICAgICB0bXAgPSBzdHJ0b3VpKGMgKyBzdHJsZW4oIm1vZGUtIiksIGRl bGltX2NoYXJzX2NvbW1hLCBOVUxMKTsKKworICAgICAgICBpZiAoIHRtcCA+IFUxNl9NQVggKQor ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIGViby0+Ym9vdF92aWRfbW9kZSA9IHRtcDsK KyAgICB9Cit9CisKK3ZvaWQgX19zdGRjYWxsIGNtZGxpbmVfcGFyc2VfZWFybHkoY29uc3QgY2hh ciAqY21kbGluZSwgZWFybHlfYm9vdF9vcHRzX3QgKmVibykKK3sKKyAgICBpZiAoICFjbWRsaW5l ICkKKyAgICAgICAgcmV0dXJuOworCisgICAgZWJvLT5za2lwX3JlYWxtb2RlID0gc2tpcF9yZWFs bW9kZShjbWRsaW5lKTsKKyAgICBlYm8tPm9wdF9lZGQgPSBlZGRfcGFyc2UoY21kbGluZSk7Cisg ICAgZWJvLT5vcHRfZWRpZCA9IGVkaWRfcGFyc2UoY21kbGluZSk7CisgICAgdmdhX3BhcnNlKGNt ZGxpbmUsIGVibyk7Cit9CmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvYm9vdC9kZWZzLmggYi94 ZW4vYXJjaC94ODYvYm9vdC9kZWZzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw MC4uNmFiZGMxNQotLS0gL2Rldi9udWxsCisrKyBiL3hlbi9hcmNoL3g4Ni9ib290L2RlZnMuaApA QCAtMCwwICsxLDU4IEBACisvKgorICogQ29weXJpZ2h0IChjKSAyMDE2IE9yYWNsZSBhbmQvb3Ig aXRzIGFmZmlsaWF0ZXMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkK KyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug YXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIg dmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhv cGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsg d2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkg b3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2Vu ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQg aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFs b25nCisgKiB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5v cmcvbGljZW5zZXMvPi4KKyAqCisgKiBtYXgoKSB3YXMgY29waWVkIGZyb20geGVuL3hlbi9pbmNs dWRlL3hlbi9rZXJuZWwuaC4KKyAqLworCisjaWZuZGVmIF9fQk9PVF9ERUZTX0hfXworI2RlZmlu ZSBfX0JPT1RfREVGU19IX18KKworI2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUveGVuL3N0ZGJv b2wuaCIKKworI2RlZmluZSBfX3BhY2tlZAlfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fKSkKKyNk ZWZpbmUgX19zdGRjYWxsCV9fYXR0cmlidXRlX18oKF9fc3RkY2FsbF9fKSkKKworI2RlZmluZSBO VUxMCQkoKHZvaWQgKikwKQorCisjZGVmaW5lIEFMSUdOX1VQKGFyZywgYWxpZ24pIFwKKyAgICAg ICAgICAgICAgICAoKChhcmcpICsgKGFsaWduKSAtIDEpICYgfigodHlwZW9mKGFyZykpKGFsaWdu KSAtIDEpKQorCisjZGVmaW5lIG1pbih4LHkpICh7IFwKKyAgICAgICAgY29uc3QgdHlwZW9mKHgp IF94ID0gKHgpOyAgICAgICBcCisgICAgICAgIGNvbnN0IHR5cGVvZih5KSBfeSA9ICh5KTsgICAg ICAgXAorICAgICAgICAodm9pZCkgKCZfeCA9PSAmX3kpOyAgICAgICAgICAgIFwKKyAgICAgICAg X3ggPCBfeSA/IF94IDogX3k7IH0pCisKKyNkZWZpbmUgbWF4KHgseSkgKHsgXAorICAgICAgICBj b25zdCB0eXBlb2YoeCkgX3ggPSAoeCk7ICAgICAgIFwKKyAgICAgICAgY29uc3QgdHlwZW9mKHkp IF95ID0gKHkpOyAgICAgICBcCisgICAgICAgICh2b2lkKSAoJl94ID09ICZfeSk7ICAgICAgICAg ICAgXAorICAgICAgICBfeCA+IF95ID8gX3ggOiBfeTsgfSkKKworI2RlZmluZSBfcCh2YWwpCQko KHZvaWQgKikodW5zaWduZWQgbG9uZykodmFsKSkKKworI2RlZmluZSB0b2xvd2VyKGMpCSgoYykg fCAweDIwKQorCit0eXBlZGVmIHVuc2lnbmVkIGNoYXIgdTg7Cit0eXBlZGVmIHVuc2lnbmVkIHNo b3J0IHUxNjsKK3R5cGVkZWYgdW5zaWduZWQgaW50IHUzMjsKK3R5cGVkZWYgdW5zaWduZWQgbG9u ZyBsb25nIHU2NDsKK3R5cGVkZWYgdW5zaWduZWQgaW50IHNpemVfdDsKKworI2RlZmluZSBVMTZf TUFYCQkoKHUxNikofjBVKSkKKyNkZWZpbmUgVUlOVF9NQVgJKH4wVSkKKworI2VuZGlmIC8qIF9f Qk9PVF9ERUZTX0hfXyAqLwpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2Jvb3QvZWRkLlMgYi94 ZW4vYXJjaC94ODYvYm9vdC9lZGQuUwppbmRleCA1YzgwZGE2Li43MzM3MWY5IDEwMDY0NAotLS0g YS94ZW4vYXJjaC94ODYvYm9vdC9lZGQuUworKysgYi94ZW4vYXJjaC94ODYvYm9vdC9lZGQuUwpA QCAtMTQyLDkgKzE0Miw2IEBAIGVkZF9uZXh0OgogZWRkX2RvbmU6CiAgICAgICAgIHJldAogCi1v cHRfZWRkOgotICAgICAgICAuYnl0ZSAgIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IyBlZGQ9b24vb2ZmL3NraXBtYnIKLQogR0xPQkFMKGJvb3RfZWRkX2luZm9fbnIpCiAgICAgICAg IC5ieXRlICAgMAogR0xPQkFMKGJvb3RfbWJyX3NpZ25hdHVyZV9ucikKZGlmZiAtLWdpdCBhL3hl bi9hcmNoL3g4Ni9ib290L2hlYWQuUyBiL3hlbi9hcmNoL3g4Ni9ib290L2hlYWQuUwppbmRleCBh MzcxY2RlLi5jMzAxNDY0IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvYm9vdC9oZWFkLlMKKysr IGIveGVuL2FyY2gveDg2L2Jvb3QvaGVhZC5TCkBAIC01MDksNiArNTA5LDEzIEBAIHRyYW1wb2xp bmVfc2V0dXA6CiAgICAgICAgIGNtcGIgICAgJDAsc3ltX3BoeXMoc2tpcF9yZWFsbW9kZSkKICAg ICAgICAgam56ICAgICAxZgogCisgICAgICAgIC8qIEJhaWwgaWYgdGhlcmUgaXMgbm8gY29tbWFu ZCBsaW5lIHRvIHBhcnNlLiAqLworICAgICAgICBtb3YgICAgIHN5bV9waHlzKG11bHRpYm9vdF9w dHIpLCVlYngKKyAgICAgICAgdGVzdGwgICAkTUJJX0NNRExJTkUsTUJfZmxhZ3MoJWVieCkKKyAg ICAgICAganogICAgICAxZgorCisgICAgICAgIHB1c2hsICAgJHN5bV9waHlzKGVhcmx5X2Jvb3Rf b3B0cykKKyAgICAgICAgcHVzaGwgICBNQl9jbWRsaW5lKCVlYngpCiAgICAgICAgIGNhbGwgICAg Y21kbGluZV9wYXJzZV9lYXJseQogCiAxOgpAQCAtNTI3LDYgKzUzNCw3IEBAIHRyYW1wb2xpbmVf c2V0dXA6CiAgICAgICAgIC8qIEp1bXAgaW50byB0aGUgcmVsb2NhdGVkIHRyYW1wb2xpbmUuICov CiAgICAgICAgIGxyZXQKIAorY21kbGluZV9wYXJzZV9lYXJseToKICNpbmNsdWRlICJjbWRsaW5l LlMiCiAKIHJlbG9jOgpkaWZmIC0tZ2l0IGEveGVuL2FyY2gveDg2L2Jvb3QvcmVsb2MuYyBiL3hl bi9hcmNoL3g4Ni9ib290L3JlbG9jLmMKaW5kZXggOTRjZWFkNy4uOWY3Y2JiNyAxMDA2NDQKLS0t IGEveGVuL2FyY2gveDg2L2Jvb3QvcmVsb2MuYworKysgYi94ZW4vYXJjaC94ODYvYm9vdC9yZWxv Yy5jCkBAIC0yNSwyMSArMjUsMTAgQEAgYXNtICgKICAgICAiICAgIGptcCAgcmVsb2MgICAgICAg ICAgICAgICAgICAgIFxuIgogICAgICk7CiAKLXR5cGVkZWYgdW5zaWduZWQgaW50IHUzMjsKLXR5 cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIHU2NDsKLQorI2luY2x1ZGUgImRlZnMuaCIKICNpbmNs dWRlICIuLi8uLi8uLi9pbmNsdWRlL3hlbi9tdWx0aWJvb3QuaCIKICNpbmNsdWRlICIuLi8uLi8u Li9pbmNsdWRlL3hlbi9tdWx0aWJvb3QyLmgiCiAKLSNkZWZpbmUgTlVMTAkJKCh2b2lkICopMCkK LQotI2RlZmluZSBfX3N0ZGNhbGwJX19hdHRyaWJ1dGVfXygoX19zdGRjYWxsX18pKQotCi0jZGVm aW5lIEFMSUdOX1VQKGFyZywgYWxpZ24pIFwKLSAgICAgICAgICAgICAgICAoKChhcmcpICsgKGFs aWduKSAtIDEpICYgfigodHlwZW9mKGFyZykpKGFsaWduKSAtIDEpKQotCi0jZGVmaW5lIF9wKHZh bCkJCSgodm9pZCAqKSh1bnNpZ25lZCBsb25nKSh2YWwpKQotCiAjZGVmaW5lIGdldF9tYjJfZGF0 YSh0YWcsIHR5cGUsIG1lbWJlcikgICAoKChtdWx0aWJvb3QyX3RhZ18jI3R5cGUjI190ICopKHRh ZykpLT5tZW1iZXIpCiAjZGVmaW5lIGdldF9tYjJfc3RyaW5nKHRhZywgdHlwZSwgbWVtYmVyKSAo KHUzMilnZXRfbWIyX2RhdGEodGFnLCB0eXBlLCBtZW1iZXIpKQogCmRpZmYgLS1naXQgYS94ZW4v YXJjaC94ODYvYm9vdC90cmFtcG9saW5lLlMgYi94ZW4vYXJjaC94ODYvYm9vdC90cmFtcG9saW5l LlMKaW5kZXggYjAxMzYxNC4uMjcxNWQxNyAxMDA2NDQKLS0tIGEveGVuL2FyY2gveDg2L2Jvb3Qv dHJhbXBvbGluZS5TCisrKyBiL3hlbi9hcmNoL3g4Ni9ib290L3RyYW1wb2xpbmUuUwpAQCAtMjIw LDggKzIyMCwyMyBAQCB0cmFtcG9saW5lX2Jvb3RfY3B1X2VudHJ5OgogICAgICAgICAvKiBKdW1w IHRvIHRoZSBjb21tb24gYm9vdHN0cmFwIGVudHJ5IHBvaW50LiAqLwogICAgICAgICBqbXAgICAg IHRyYW1wb2xpbmVfcHJvdG1vZGVfZW50cnkKIAorI2luY2x1ZGUgInZpZGVvLmgiCisKKyAgICAg ICAgLmFsaWduICAyCisvKiBLZWVwIGluIHN5bmMgd2l0aCBjbWRsaW5lLmM6ZWFybHlfYm9vdF9v cHRzX3QgdHlwZSEgKi8KK2Vhcmx5X2Jvb3Rfb3B0czoKIHNraXBfcmVhbG1vZGU6CiAgICAgICAg IC5ieXRlICAgMAorb3B0X2VkZDoKKyAgICAgICAgLmJ5dGUgICAwICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC8qIGVkZD1vbi9vZmYvc2tpcG1iciAqLworb3B0X2VkaWQ6CisgICAgICAg IC5ieXRlICAgMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBFRElEIHBhcnNpbmcg b3B0aW9uIChmb3JjZS9uby9kZWZhdWx0KS4gKi8KKy8qIFBhZGRpbmcuICovCisgICAgICAgIC5i eXRlICAgMAorR0xPQkFMKGJvb3RfdmlkX21vZGUpCisgICAgICAgIC53b3JkICAgVklERU9fODB4 MjUgICAgICAgICAgICAgICAgICAgICAvKiBJZiB3ZSBkb24ndCBydW4gYXQgYWxsLCBhc3N1bWUg YmFzaWMgdmlkZW8gbW9kZSAzIGF0IDgweDI1LiAqLwordmVzYV9zaXplOgorICAgICAgICAud29y ZCAgIDAsMCwwICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogd2lkdGggeCBkZXB0aCB4IGhl aWdodCAqLwogCiBHTE9CQUwoa2JkX3NoaWZ0X2ZsYWdzKQogICAgICAgICAuYnl0ZSAgIDAKZGlm ZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9ib290L3ZpZGVvLlMgYi94ZW4vYXJjaC94ODYvYm9vdC92 aWRlby5TCmluZGV4IDJhYWZiZWIuLjMzNWE1MWMgMTAwNjQ0Ci0tLSBhL3hlbi9hcmNoL3g4Ni9i b290L3ZpZGVvLlMKKysrIGIveGVuL2FyY2gveDg2L2Jvb3QvdmlkZW8uUwpAQCAtOTQ1LDcgKzk0 NSw2IEBAIHN0b3JlX2VkaWQ6CiAjZW5kaWYKICAgICAgICAgcmV0CiAKLW9wdF9lZGlkOiAgICAg ICAuYnl0ZSAgIDAgICAgICAgIyBFRElEIHBhcnNpbmcgb3B0aW9uIChmb3JjZS9uby9kZWZhdWx0 KQogbXRfZW5kOiAgICAgICAgIC53b3JkICAgMCAgICAgICAjIEVuZCBvZiB2aWRlbyBtb2RlIHRh YmxlIGlmIGJ1aWx0CiBlZGl0X2J1ZjogICAgICAgLnNwYWNlICA2ICAgICAgICMgTGluZSBlZGl0 b3IgYnVmZmVyCiBjYXJkX25hbWU6ICAgICAgLndvcmQgICAwICAgICAgICMgUG9pbnRlciB0byBh ZGFwdGVyIG5hbWUKQEAgLTk5MSwxMiArOTkwLDYgQEAgbmFtZV9iYW5uOiAgICAgIC5hc2NpeiAg IlZpZGVvIGFkYXB0ZXI6ICIKIAogZm9yY2Vfc2l6ZTogICAgIC53b3JkICAgMCAgICAgICAjIFVz ZSB0aGlzIHNpemUgaW5zdGVhZCBvZiB0aGUgb25lIGluIEJJT1MgdmFycwogCi12ZXNhX3NpemU6 ICAgICAgLndvcmQgICAwLDAsMCAgICMgd2lkdGggeCBkZXB0aCB4IGhlaWdodAotCi0vKiBJZiB3 ZSBkb24ndCBydW4gYXQgYWxsLCBhc3N1bWUgYmFzaWMgdmlkZW8gbW9kZSAzIGF0IDgweDI1LiAq LwotICAgICAgICAuYWxpZ24gIDIKLUdMT0JBTChib290X3ZpZF9tb2RlKQotICAgICAgICAud29y ZCAgIFZJREVPXzgweDI1CiBHTE9CQUwoYm9vdF92aWRfaW5mbykKICAgICAgICAgLmJ5dGUgICAw LCAwICAgIC8qIG9yaWdfeCwgb3JpZ195ICovCiAgICAgICAgIC5ieXRlICAgMyAgICAgICAvKiB0 ZXh0IG1vZGUgMyAgICAqLwotLSAKMS43LjEwLjQKCgpfX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0Clhlbi1kZXZlbEBs aXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK