From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Kiper Subject: [PATCH v6 04/15] x86: add multiboot2 protocol support Date: Mon, 12 Sep 2016 22:18:19 +0200 Message-ID: <1473711511-11931-5-git-send-email-daniel.kiper@oracle.com> References: <1473711511-11931-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 1bjXjH-00063Y-Qn for xen-devel@lists.xenproject.org; Mon, 12 Sep 2016 20:21:24 +0000 In-Reply-To: <1473711511-11931-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, 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 QWRkIG11bHRpYm9vdDIgcHJvdG9jb2wgc3VwcG9ydC4gQWx0ZXIgbWluIG1lbW9yeSBsaW1pdCBo YW5kbGluZyBhcyB3ZQpub3cgbWF5IG5vdCBmaW5kIGl0IGZyb20gZWl0aGVyIG11bHRpYm9vdCAo djEpIG9yIG11bHRpYm9vdDIuCgpUaGlzIHdheSB3ZSBhcmUgbGF5aW5nIHRoZSBmb3VuZGF0aW9u IGZvciBFRkkgKyBHUlVCMiArIFhlbiBkZXZlbG9wbWVudC4KClNpZ25lZC1vZmYtYnk6IERhbmll bCBLaXBlciA8ZGFuaWVsLmtpcGVyQG9yYWNsZS5jb20+Ci0tLQp2NiAtIHN1Z2dlc3Rpb25zL2Zp eGVzOgogICAtIHByb3Blcmx5IGluZGV4IG11bHRpYm9vdDJfdGFnX21tYXBfdC5lbnRyaWVzW10K ICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKSwKICAgLSBkbyBub3QgaW5kZXggbWJpX291 dF9tb2RzW10gYmV5b25kIGl0cyBlbmQKICAgICAoc3VnZ2VzdGVkIGJ5IEFuZHJldyBDb29wZXIp LAogICAtIHJlZHVjZSBudW1iZXIgb2YgY2FzdHMKICAgICAoc3VnZ2VzdGVkIGJ5IEFuZHJldyBD b29wZXIgYW5kIEphbiBCZXVsaWNoKSwKICAgLSBhZGQgYnJhY2VzIHRvIGluY3JlYXNlIGNvZGUg cmVhZGFiaWxpdHkKICAgICAoc3VnZ2VzdGVkIGJ5IEFuZHJldyBDb29wZXIpLgoKdjUgLSBzdWdn ZXN0aW9ucy9maXhlczoKICAgLSBjaGVjayBtdWx0aWJvb3QyX3RhZ19tbWFwX3QuZW50cnlfc2l6 ZSBiZWZvcmUKICAgICBtdWx0aWJvb3QyX3RhZ19tbWFwX3QuZW50cmllc1tdIHVzZQogICAgIChz dWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpLAogICAtIHByb3Blcmx5IGluZGV4IG11bHRpYm9vdDJf dGFnX21tYXBfdC5lbnRyaWVzW10KICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKSwKICAg LSB1c2UgInR5cGUgbmFtZVtdIiBpbnN0YWQgb2YgInR5cGUgbmFtZVswXSIKICAgICBpbiB4ZW4v aW5jbHVkZS94ZW4vbXVsdGlib290Mi5oCiAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCks CiAgIC0gcmVtb3ZlIHVubmVlZGVkIGNvbW1lbnQKICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVs aWNoKS4KCnY0IC0gc3VnZ2VzdGlvbnMvZml4ZXM6CiAgIC0gYXZvaWQgYXNzZW1ibHkgdXNhZ2Ug aW4geGVuL2FyY2gveDg2L2Jvb3QvcmVsb2MuYywKICAgLSBmaXggYm91bmRhcnkgY2hlY2sgaXNz dWUgYW5kIG9wdGltaXplCiAgICAgZm9yKCkgbG9vcHMgaW4gbWJpMl9tYmkoKSwKICAgLSBtb3Zl IHRvIHN0ZGNhbGwgY2FsbGluZyBjb252ZW50aW9uLAogICAtIHJlbW92ZSB1bm5lZWRlZCB0eXBl b2YoKSBmcm9tIEFMSUdOX1VQKCkgbWFjcm8KICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNo KSwKICAgLSBhZGQgYW5kIHVzZSBOVUxMIGRlZmluaXRpb24gaW4geGVuL2FyY2gveDg2L2Jvb3Qv cmVsb2MuYwogICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpLAogICAtIGRvIG5vdCByZWFk IGRhdGEgYmV5b25kIHRoZSBlbmQgb2YgbXVsdGlib290MgogICAgIGluZm9ybWF0aW9uIGluIHhl bi9hcmNoL3g4Ni9ib290L2hlYWQuUwogICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpLAog ICAtIGFkZCA6cmVxIHRvIHNvbWUgLm1hY3JvIGFyZ3VtZW50cwogICAgIChzdWdnZXN0ZWQgYnkg SmFuIEJldWxpY2gpLAogICAtIHVzZSBjbW92Y2MgaWYgcG9zc2libGUsCiAgIC0gYWRkIC5MIHRv IG11bHRpYm9vdDJfaGVhZGVyX2VuZCBsYWJlbAogICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxp Y2gpLAogICAtIGFkZCAuTCB0byBtdWx0aWJvb3QyX3Byb3RvIGxhYmVsCiAgICAgKHN1Z2dlc3Rl ZCBieSBKYW4gQmV1bGljaCksCiAgIC0gaW1wcm92ZSBsYWJlbCBuYW1lcwogICAgIChzdWdnZXN0 ZWQgYnkgSmFuIEJldWxpY2gpLgoKdjMgLSBzdWdnZXN0aW9ucy9maXhlczoKICAgLSByZW9yZGVy IHJlbG9jKCkgYXJndW1lbnRzCiAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCksCiAgIC0g cmVtb3ZlIC5MIGZyb20gbXVsdGlib290MiBoZWFkZXIgbGFiZWxzCiAgICAgKHN1Z2dlc3RlZCBi eSBBbmRyZXcgQ29vcGVyLCBKYW4gQmV1bGljaCBhbmQgS29ucmFkIFJ6ZXN6dXRlayBXaWxrKSwK ICAgLSB0YWtlIGludG8gYWNjb3VudCBhbGlnbm1lbnQgd2hlbiBza2lwcGluZyBtdWx0aWJvb3Qy IGZpeGVkIHBhcnQKICAgICAoc3VnZ2VzdGVkIGJ5IEtvbnJhZCBSemVzenV0ZWsgV2lsayksCiAg IC0gY3JlYXRlIG1vZHVsZXMgZGF0YSBpZiBtb2R1bGVzIGNvdW50ICE9IDAKICAgICAoc3VnZ2Vz dGVkIGJ5IEphbiBCZXVsaWNoKSwKICAgLSBpbXByb3ZlIG1hY3JvcwogICAgIChzdWdnZXN0ZWQg YnkgSmFuIEJldWxpY2gpLAogICAtIHJlZHVjZSBudW1iZXIgb2YgY2FzdHMKICAgICAoc3VnZ2Vz dGVkIGJ5IEphbiBCZXVsaWNoKSwKICAgLSB1c2UgY29uc3QgaWYgcG9zc2libGUKICAgICAoc3Vn Z2VzdGVkIGJ5IEphbiBCZXVsaWNoKSwKICAgLSBkcm9wIHN0YXRpYyBhbmQgX191c2VkX18gYXR0 cmlidXRlIGZyb20gcmVsb2MoKQogICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpLAogICAt IHJlbW92ZSBpc29sYXRlZC9zdHJheSBfX3BhY2tlZCBhdHRyaWJ1dGUgZnJvbQogICAgIG11bHRp Ym9vdDJfbWVtb3J5X21hcF90IHR5cGUgZGVmaW5pdGlvbgogICAgIChzdWdnZXN0ZWQgYnkgSmFu IEJldWxpY2gpLAogICAtIHJlZm9ybWF0IHhlbi9pbmNsdWRlL3hlbi9tdWx0aWJvb3QyLmgKICAg ICAoc3VnZ2VzdGVkIGJ5IEtvbnJhZCBSemVzenV0ZWsgV2lsayksCiAgIC0gaW1wcm92ZSBjb21t ZW50cwogICAgIChzdWdnZXN0ZWQgYnkgS29ucmFkIFJ6ZXN6dXRlayBXaWxrKSwKICAgLSByZW1v dmUgaGFyZCB0YWJzCiAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGljaCBhbmQgS29ucmFkIFJ6 ZXN6dXRlayBXaWxrKS4KCnYyIC0gc3VnZ2VzdGlvbnMvZml4ZXM6CiAgIC0gZ2VuZXJhdGUgbXVs dGlib290MiBoZWFkZXIgdXNpbmcgbWFjcm9zCiAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1bGlj aCksCiAgIC0gaW1wcm92ZSBjb21tZW50cwogICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gp LAogICAtIHNpbXBsaWZ5IGFzc2VtYmx5IGluIHhlbi9hcmNoL3g4Ni9ib290L2hlYWQuUwogICAg IChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gpLAogICAtIGRvIG5vdCBpbmNsdWRlIGluY2x1ZGUv eGVuL2NvbXBpbGVyLmgKICAgICBpbiB4ZW4vYXJjaC94ODYvYm9vdC9yZWxvYy5jCiAgICAgKHN1 Z2dlc3RlZCBieSBKYW4gQmV1bGljaCksCiAgIC0gZG8gbm90IHJlYWQgZGF0YSBiZXlvbmQgdGhl IGVuZCBvZiBtdWx0aWJvb3QyIGluZm9ybWF0aW9uCiAgICAgKHN1Z2dlc3RlZCBieSBKYW4gQmV1 bGljaCkuCgp2MiAtIG5vdCBmaXhlZCB5ZXQ6CiAgIC0gZHluYW1pYyBkZXBlbmRlbmN5IGdlbmVy YXRpb24gZm9yIHhlbi9hcmNoL3g4Ni9ib290L3JlbG9jLlM7CiAgICAgdGhpcyByZXF1aXJlcyBt b3JlIHdvcms7IEkgYW0gbm90IHN1cmUgdGhhdCBpdCBwYXlzIGJlY2F1c2UKICAgICBwb3RlbnRp YWwgcGF0Y2ggcmVxdWlyZXMgbW9yZSBjaGFuZ2VzIHRoYW4gYWRkaXRpb24gb2YganVzdAogICAg IG11bHRpYm9vdDIuaCB0byBNYWtlZmlsZQogICAgIChzdWdnZXN0ZWQgYnkgSmFuIEJldWxpY2gp LAogICAtIGlzb2xhdGVkL3N0cmF5IF9fcGFja2VkIGF0dHJpYnV0ZSB1c2FnZSBmb3IgbXVsdGli b290Ml9tZW1vcnlfbWFwX3QKICAgICAoc3VnZ2VzdGVkIGJ5IEphbiBCZXVsaWNoKS4KLS0tCiB4 ZW4vYXJjaC94ODYvYm9vdC9NYWtlZmlsZSAgICAgICAgfCAgICAzICstCiB4ZW4vYXJjaC94ODYv Ym9vdC9oZWFkLlMgICAgICAgICAgfCAgMTA3ICsrKysrKysrKysrKysrKysrKysrKystCiB4ZW4v YXJjaC94ODYvYm9vdC9yZWxvYy5jICAgICAgICAgfCAgMTQ4ICsrKysrKysrKysrKysrKysrKysr KysrKysrKysrKy0tCiB4ZW4vYXJjaC94ODYveDg2XzY0L2FzbS1vZmZzZXRzLmMgfCAgICA5ICsr CiB4ZW4vaW5jbHVkZS94ZW4vbXVsdGlib290Mi5oICAgICAgfCAgMTY5ICsrKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysKIDUgZmlsZXMgY2hhbmdlZCwgNDI2IGluc2VydGlvbnMo KyksIDEwIGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9pbmNsdWRlL3hlbi9t dWx0aWJvb3QyLmgKCmRpZmYgLS1naXQgYS94ZW4vYXJjaC94ODYvYm9vdC9NYWtlZmlsZSBiL3hl bi9hcmNoL3g4Ni9ib290L01ha2VmaWxlCmluZGV4IDVmZGI1YWUuLjA2ODkzZDggMTAwNjQ0Ci0t LSBhL3hlbi9hcmNoL3g4Ni9ib290L01ha2VmaWxlCisrKyBiL3hlbi9hcmNoL3g4Ni9ib290L01h a2VmaWxlCkBAIC0xLDYgKzEsNyBAQAogb2JqLWJpbi15ICs9IGhlYWQubwogCi1SRUxPQ19ERVBT ID0gJChCQVNFRElSKS9pbmNsdWRlL2FzbS14ODYvY29uZmlnLmggJChCQVNFRElSKS9pbmNsdWRl L3hlbi9tdWx0aWJvb3QuaAorUkVMT0NfREVQUyA9ICQoQkFTRURJUikvaW5jbHVkZS9hc20teDg2 L2NvbmZpZy5oICQoQkFTRURJUikvaW5jbHVkZS94ZW4vbXVsdGlib290LmggXAorCSAgICAgJChC QVNFRElSKS9pbmNsdWRlL3hlbi9tdWx0aWJvb3QyLmgKIAogaGVhZC5vOiByZWxvYy5TCiAKZGlm ZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9ib290L2hlYWQuUyBiL3hlbi9hcmNoL3g4Ni9ib290L2hl YWQuUwppbmRleCA2ZjJjNjY4Li4zODNmZjc5IDEwMDY0NAotLS0gYS94ZW4vYXJjaC94ODYvYm9v dC9oZWFkLlMKKysrIGIveGVuL2FyY2gveDg2L2Jvb3QvaGVhZC5TCkBAIC0xLDUgKzEsNiBAQAog I2luY2x1ZGUgPHhlbi9jb25maWcuaD4KICNpbmNsdWRlIDx4ZW4vbXVsdGlib290Lmg+CisjaW5j bHVkZSA8eGVuL211bHRpYm9vdDIuaD4KICNpbmNsdWRlIDxwdWJsaWMveGVuLmg+CiAjaW5jbHVk ZSA8YXNtL2FzbV9kZWZucy5oPgogI2luY2x1ZGUgPGFzbS9kZXNjLmg+CkBAIC0xOSw2ICsyMCwy OCBAQAogI2RlZmluZSBCT09UX1BTRVVET1JNX0NTIDB4MDAyMAogI2RlZmluZSBCT09UX1BTRVVE T1JNX0RTIDB4MDAyOAogCisjZGVmaW5lIE1CMl9IVChuYW1lKSAgICAgIChNVUxUSUJPT1QyX0hF QURFUl9UQUdfIyNuYW1lKQorI2RlZmluZSBNQjJfVFQobmFtZSkgICAgICAoTVVMVElCT09UMl9U QUdfVFlQRV8jI25hbWUpCisKKyAgICAgICAgLm1hY3JvIG1iMmh0X2FyZ3MgYXJnOnJlcSwgYXJn czp2YXJhcmcKKyAgICAgICAgLmxvbmcgXGFyZworICAgICAgICAuaWZuYiBcYXJncworICAgICAg ICBtYjJodF9hcmdzIFxhcmdzCisgICAgICAgIC5lbmRpZgorICAgICAgICAuZW5kbQorCisgICAg ICAgIC5tYWNybyBtYjJodF9pbml0IHR5cGU6cmVxLCByZXE6cmVxLCBhcmdzOnZhcmFyZworICAg ICAgICAuYWxpZ24gTVVMVElCT09UMl9UQUdfQUxJR04KKy5MbWIyaHRfaW5pdF9zdGFydFxAOgor ICAgICAgICAuc2hvcnQgXHR5cGUKKyAgICAgICAgLnNob3J0IFxyZXEKKyAgICAgICAgLmxvbmcg LkxtYjJodF9pbml0X2VuZFxAIC0gLkxtYjJodF9pbml0X3N0YXJ0XEAKKyAgICAgICAgLmlmbmIg XGFyZ3MKKyAgICAgICAgbWIyaHRfYXJncyBcYXJncworICAgICAgICAuZW5kaWYKKy5MbWIyaHRf aW5pdF9lbmRcQDoKKyAgICAgICAgLmVuZG0KKwogRU5UUlkoc3RhcnQpCiAgICAgICAgIGptcCAg ICAgX19zdGFydAogCkBAIC0zNCw2ICs1Nyw0MiBAQCBtdWx0aWJvb3QxX2hlYWRlcl9zdGFydDog ICAgICAgLyoqKiBNVUxUSUJPT1QxIEhFQURFUiAqKioqLwogICAgICAgICAubG9uZyAgIC0oTVVM VElCT09UX0hFQURFUl9NQUdJQyArIE1VTFRJQk9PVF9IRUFERVJfRkxBR1MpCiBtdWx0aWJvb3Qx X2hlYWRlcl9lbmQ6CiAKKy8qKiogTVVMVElCT09UMiBIRUFERVIgKioqKi8KKy8qIFNvbWUgaWRl YXMgYXJlIHRha2VuIGZyb20gZ3J1Yi0yLjAwL2dydWItY29yZS90ZXN0cy9ib290L2tlcm5lbC1p Mzg2LlMgZmlsZS4gKi8KKyAgICAgICAgLmFsaWduICBNVUxUSUJPT1QyX0hFQURFUl9BTElHTgor CittdWx0aWJvb3QyX2hlYWRlcl9zdGFydDoKKyAgICAgICAgLyogTWFnaWMgbnVtYmVyIGluZGlj YXRpbmcgYSBNdWx0aWJvb3QyIGhlYWRlci4gKi8KKyAgICAgICAgLmxvbmcgICBNVUxUSUJPT1Qy X0hFQURFUl9NQUdJQworICAgICAgICAvKiBBcmNoaXRlY3R1cmU6IGkzODYuICovCisgICAgICAg IC5sb25nICAgTVVMVElCT09UMl9BUkNISVRFQ1RVUkVfSTM4NgorICAgICAgICAvKiBNdWx0aWJv b3QyIGhlYWRlciBsZW5ndGguICovCisgICAgICAgIC5sb25nICAgLkxtdWx0aWJvb3QyX2hlYWRl cl9lbmQgLSBtdWx0aWJvb3QyX2hlYWRlcl9zdGFydAorICAgICAgICAvKiBNdWx0aWJvb3QyIGhl YWRlciBjaGVja3N1bS4gKi8KKyAgICAgICAgLmxvbmcgICAtKE1VTFRJQk9PVDJfSEVBREVSX01B R0lDICsgTVVMVElCT09UMl9BUkNISVRFQ1RVUkVfSTM4NiArIFwKKyAgICAgICAgICAgICAgICAg ICAgICAgICguTG11bHRpYm9vdDJfaGVhZGVyX2VuZCAtIG11bHRpYm9vdDJfaGVhZGVyX3N0YXJ0 KSkKKworICAgICAgICAvKiBNdWx0aWJvb3QyIGluZm9ybWF0aW9uIHJlcXVlc3QgdGFnLiAqLwor ICAgICAgICBtYjJodF9pbml0IE1CMl9IVChJTkZPUk1BVElPTl9SRVFVRVNUKSwgTUIyX0hUKFJF UVVJUkVEKSwgXAorICAgICAgICAgICAgICAgICAgIE1CMl9UVChCQVNJQ19NRU1JTkZPKSwgTUIy X1RUKE1NQVApCisKKyAgICAgICAgLyogQWxpZ24gbW9kdWxlcyBhdCBwYWdlIGJvdW5kcnkuICov CisgICAgICAgIG1iMmh0X2luaXQgTUIyX0hUKE1PRFVMRV9BTElHTiksIE1CMl9IVChSRVFVSVJF RCkKKworICAgICAgICAvKiBDb25zb2xlIGZsYWdzIHRhZy4gKi8KKyAgICAgICAgbWIyaHRfaW5p dCBNQjJfSFQoQ09OU09MRV9GTEFHUyksIE1CMl9IVChPUFRJT05BTCksIFwKKyAgICAgICAgICAg ICAgICAgICBNVUxUSUJPT1QyX0NPTlNPTEVfRkxBR1NfRUdBX1RFWFRfU1VQUE9SVEVECisKKyAg ICAgICAgLyogRnJhbWVidWZmZXIgdGFnLiAqLworICAgICAgICBtYjJodF9pbml0IE1CMl9IVChG UkFNRUJVRkZFUiksIE1CMl9IVChPUFRJT05BTCksIFwKKyAgICAgICAgICAgICAgICAgICAwLCAv KiBOdW1iZXIgb2YgdGhlIGNvbHVtbnMgLSBubyBwcmVmZXJlbmNlLiAqLyBcCisgICAgICAgICAg ICAgICAgICAgMCwgLyogTnVtYmVyIG9mIHRoZSBsaW5lcyAtIG5vIHByZWZlcmVuY2UuICovIFwK KyAgICAgICAgICAgICAgICAgICAwICAvKiBOdW1iZXIgb2YgYml0cyBwZXIgcGl4ZWwgLSBubyBw cmVmZXJlbmNlLiAqLworCisgICAgICAgIC8qIE11bHRpYm9vdDIgaGVhZGVyIGVuZCB0YWcuICov CisgICAgICAgIG1iMmh0X2luaXQgTUIyX0hUKEVORCksIE1CMl9IVChSRVFVSVJFRCkKKy5MbXVs dGlib290Ml9oZWFkZXJfZW5kOgorCiAgICAgICAgIC5zZWN0aW9uIC5pbml0LnJvZGF0YSwgImEi LCBAcHJvZ2JpdHMKICAgICAgICAgLmFsaWduIDQKIApAQCAtODIsMTAgKzE0MSw1MiBAQCBfX3N0 YXJ0OgogICAgICAgICBtb3YgICAgICVlY3gsJWVzCiAgICAgICAgIG1vdiAgICAgJWVjeCwlc3MK IAotICAgICAgICAvKiBDaGVjayBmb3IgTXVsdGlib290IGJvb3Rsb2FkZXIgKi8KKyAgICAgICAg LyogQm9vdGxvYWRlcnMgbWF5IHNldCBtdWx0aWJvb3R7MSwyfS5tZW1fbG93ZXIgdG8gYSBub256 ZXJvIHZhbHVlLiAqLworICAgICAgICB4b3IgICAgICVlZHgsJWVkeAorCisgICAgICAgIC8qIENo ZWNrIGZvciBNdWx0aWJvb3QyIGJvb3Rsb2FkZXIuICovCisgICAgICAgIGNtcCAgICAgJE1VTFRJ Qk9PVDJfQk9PVExPQURFUl9NQUdJQywlZWF4CisgICAgICAgIGplICAgICAgLkxtdWx0aWJvb3Qy X3Byb3RvCisKKyAgICAgICAgLyogQ2hlY2sgZm9yIE11bHRpYm9vdCBib290bG9hZGVyLiAqLwog ICAgICAgICBjbXAgICAgICRNVUxUSUJPT1RfQk9PVExPQURFUl9NQUdJQywlZWF4CiAgICAgICAg IGpuZSAgICAgbm90X211bHRpYm9vdAogCisgICAgICAgIC8qIEdldCBtZW1fbG93ZXIgZnJvbSBN dWx0aWJvb3QgaW5mb3JtYXRpb24uICovCisgICAgICAgIHRlc3RiICAgJE1CSV9NRU1MSU1JVFMs TUJfZmxhZ3MoJWVieCkKKworICAgICAgICAvKiBOb3QgYXZhaWxhYmxlPyBCREEgdmFsdWUgd2ls bCBiZSBmaW5lLiAqLworICAgICAgICBjbW92bnogIE1CX21lbV9sb3dlciglZWJ4KSwlZWR4Cisg ICAgICAgIGptcCAgICAgdHJhbXBvbGluZV9zZXR1cAorCisuTG11bHRpYm9vdDJfcHJvdG86Cisg ICAgICAgIC8qIFNraXAgTXVsdGlib290MiBpbmZvcm1hdGlvbiBmaXhlZCBwYXJ0LiAqLworICAg ICAgICBsZWEgICAgIChNQjJfZml4ZWRfc2l6ZW9mK01VTFRJQk9PVDJfVEFHX0FMSUdOLTEpKCVl YngpLCVlY3gKKyAgICAgICAgYW5kICAgICAkfihNVUxUSUJPT1QyX1RBR19BTElHTi0xKSwlZWN4 CisKKzA6CisgICAgICAgIC8qIENoZWNrIE11bHRpYm9vdDIgaW5mb3JtYXRpb24gdG90YWwgc2l6 ZS4gKi8KKyAgICAgICAgbW92ICAgICAlZWN4LCVlZGkKKyAgICAgICAgc3ViICAgICAlZWJ4LCVl ZGkKKyAgICAgICAgY21wICAgICAlZWRpLE1CMl9maXhlZF90b3RhbF9zaXplKCVlYngpCisgICAg ICAgIGpiZSAgICAgdHJhbXBvbGluZV9zZXR1cAorCisgICAgICAgIC8qIEdldCBtZW1fbG93ZXIg ZnJvbSBNdWx0aWJvb3QyIGluZm9ybWF0aW9uLiAqLworICAgICAgICBjbXBsICAgICRNVUxUSUJP T1QyX1RBR19UWVBFX0JBU0lDX01FTUlORk8sTUIyX3RhZ190eXBlKCVlY3gpCisgICAgICAgIGNt b3ZlICAgTUIyX21lbV9sb3dlciglZWN4KSwlZWR4CisgICAgICAgIGplICAgICAgdHJhbXBvbGlu ZV9zZXR1cAorCisgICAgICAgIC8qIElzIGl0IHRoZSBlbmQgb2YgTXVsdGlib290MiBpbmZvcm1h dGlvbj8gKi8KKyAgICAgICAgY21wbCAgICAkTVVMVElCT09UMl9UQUdfVFlQRV9FTkQsTUIyX3Rh Z190eXBlKCVlY3gpCisgICAgICAgIGplICAgICAgdHJhbXBvbGluZV9zZXR1cAorCisgICAgICAg IC8qIEdvIHRvIG5leHQgTXVsdGlib290MiBpbmZvcm1hdGlvbiB0YWcuICovCisgICAgICAgIGFk ZCAgICAgTUIyX3RhZ19zaXplKCVlY3gpLCVlY3gKKyAgICAgICAgYWRkICAgICAkKE1VTFRJQk9P VDJfVEFHX0FMSUdOLTEpLCVlY3gKKyAgICAgICAgYW5kICAgICAkfihNVUxUSUJPT1QyX1RBR19B TElHTi0xKSwlZWN4CisgICAgICAgIGptcCAgICAgMGIKKwordHJhbXBvbGluZV9zZXR1cDoKICAg ICAgICAgLyogU2V0IHVwIHRyYW1wb2xpbmUgc2VnbWVudCA2NGsgYmVsb3cgRUJEQSAqLwogICAg ICAgICBtb3Z6d2wgIDB4NDBlLCVlY3ggICAgICAgICAgLyogRUJEQSBzZWdtZW50ICovCiAgICAg ICAgIGNtcCAgICAgJDB4YTAwMCwlZWN4ICAgICAgICAvKiBzYW5pdHkgY2hlY2sgKGhpZ2gpICov CkBAIC0xMDAsOSArMjAxLDYgQEAgX19zdGFydDoKICAgICAgICAgICogQ29tcGFyZSB0aGUgdmFs dWUgaW4gdGhlIEJEQSB3aXRoIHRoZSBpbmZvcm1hdGlvbiBmcm9tIHRoZQogICAgICAgICAgKiBt dWx0aWJvb3Qgc3RydWN0dXJlIChpZiBhdmFpbGFibGUpIGFuZCB1c2UgdGhlIHNtYWxsZXN0Lgog ICAgICAgICAgKi8KLSAgICAgICAgdGVzdGIgICAkTUJJX01FTUxJTUlUUywoJWVieCkKLSAgICAg ICAganogICAgICAyZiAgICAgICAgICAgICAgICAgIC8qIG5vdCBhdmFpbGFibGU/IEJEQSB2YWx1 ZSB3aWxsIGJlIGZpbmUgKi8KLSAgICAgICAgbW92ICAgICBNQl9tZW1fbG93ZXIoJWVieCksJWVk eAogICAgICAgICBjbXAgICAgICQweDEwMCwlZWR4ICAgICAgICAgLyogaXMgdGhlIG11bHRpYm9v dCB2YWx1ZSB0b28gc21hbGw/ICovCiAgICAgICAgIGpiICAgICAgMmYgICAgICAgICAgICAgICAg ICAvKiBpZiBzbywgZG8gbm90IHVzZSBpdCAqLwogICAgICAgICBzaGwgICAgICQxMC00LCVlZHgK QEAgLTEyMSw2ICsyMTksNyBAQCBfX3N0YXJ0OgogICAgICAgICBtb3YgICAgICRzeW1fcGh5cyhj cHUwX3N0YWNrKSsxMDI0LCVlc3AKICAgICAgICAgcHVzaCAgICAlZWN4ICAgICAgICAgICAgICAg IC8qIEJvb3QgdHJhbXBvbGluZSBhZGRyZXNzLiAqLwogICAgICAgICBwdXNoICAgICVlYnggICAg ICAgICAgICAgICAgLyogTXVsdGlib290IGluZm9ybWF0aW9uIGFkZHJlc3MuICovCisgICAgICAg IHB1c2ggICAgJWVheCAgICAgICAgICAgICAgICAvKiBNdWx0aWJvb3QgbWFnaWMuICovCiAgICAg ICAgIGNhbGwgICAgcmVsb2MKICAgICAgICAgbW92ICAgICAlZWF4LHN5bV9waHlzKG11bHRpYm9v dF9wdHIpCiAKZGlmZiAtLWdpdCBhL3hlbi9hcmNoL3g4Ni9ib290L3JlbG9jLmMgYi94ZW4vYXJj aC94ODYvYm9vdC9yZWxvYy5jCmluZGV4IGVhOGNiMzcuLmU0MjFiMDcgMTAwNjQ0Ci0tLSBhL3hl bi9hcmNoL3g4Ni9ib290L3JlbG9jLmMKKysrIGIveGVuL2FyY2gveDg2L2Jvb3QvcmVsb2MuYwpA QCAtNSwxNSArNSwxOCBAQAogICogYW5kIG1vZHVsZXMuIFRoaXMgaXMgbW9zdCBlYXNpbHkgZG9u ZSBlYXJseSB3aXRoIHBhZ2luZyBkaXNhYmxlZC4KICAqCiAgKiBDb3B5cmlnaHQgKGMpIDIwMDks IENpdHJpeCBTeXN0ZW1zLCBJbmMuCisgKiBDb3B5cmlnaHQgKGMpIDIwMTMtMjAxNiBPcmFjbGUg YW5kL29yIGl0cyBhZmZpbGlhdGVzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIEF1dGhv cnM6CiAgKiAgICBLZWlyIEZyYXNlciA8a2VpckB4ZW4ub3JnPgorICogICAgRGFuaWVsIEtpcGVy IDxkYW5pZWwua2lwZXJAb3JhY2xlLmNvbT4KICAqLwogCiAvKgogICogVGhpcyBlbnRyeSBwb2lu dCBpcyBlbnRlcmVkIGZyb20geGVuL2FyY2gveDg2L2Jvb3QvaGVhZC5TIHdpdGg6Ci0gKiAgIC0g MHg0KCVlc3ApID0gTVVMVElCT09UX0lORk9STUFUSU9OX0FERFJFU1MsCi0gKiAgIC0gMHg4KCVl c3ApID0gQk9PVF9UUkFNUE9MSU5FX0FERFJFU1MuCisgKiAgIC0gMHg0KCVlc3ApID0gTVVMVElC T09UX01BR0lDLAorICogICAtIDB4OCglZXNwKSA9IE1VTFRJQk9PVF9JTkZPUk1BVElPTl9BRERS RVNTLAorICogICAtIDB4YyglZXNwKSA9IEJPT1RfVFJBTVBPTElORV9BRERSRVNTLgogICovCiBh c20gKAogICAgICIgICAgLnRleHQgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCkBAIC0yMyw3 ICsyNiwxMiBAQCBhc20gKAogICAgICk7CiAKIHR5cGVkZWYgdW5zaWduZWQgaW50IHUzMjsKK3R5 cGVkZWYgdW5zaWduZWQgbG9uZyBsb25nIHU2NDsKKwogI2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1 ZGUveGVuL211bHRpYm9vdC5oIgorI2luY2x1ZGUgIi4uLy4uLy4uL2luY2x1ZGUveGVuL211bHRp Ym9vdDIuaCIKKworI2RlZmluZSBOVUxMCQkoKHZvaWQgKikwKQogCiAjZGVmaW5lIF9fc3RkY2Fs bAlfX2F0dHJpYnV0ZV9fKChfX3N0ZGNhbGxfXykpCiAKQEAgLTMyLDYgKzQwLDkgQEAgdHlwZWRl ZiB1bnNpZ25lZCBpbnQgdTMyOwogCiAjZGVmaW5lIF9wKHZhbCkJCSgodm9pZCAqKSh1bnNpZ25l ZCBsb25nKSh2YWwpKQogCisjZGVmaW5lIGdldF9tYjJfZGF0YSh0YWcsIHR5cGUsIG1lbWJlcikg ICAoKChtdWx0aWJvb3QyX3RhZ18jI3R5cGUjI190ICopKHRhZykpLT5tZW1iZXIpCisjZGVmaW5l IGdldF9tYjJfc3RyaW5nKHRhZywgdHlwZSwgbWVtYmVyKSAoKHUzMilnZXRfbWIyX2RhdGEodGFn LCB0eXBlLCBtZW1iZXIpKQorCiBzdGF0aWMgdTMyIGFsbG9jOwogCiBzdGF0aWMgdTMyIGFsbG9j X21lbSh1MzIgYnl0ZXMpCkBAIC0zOSw2ICs1MCwxMiBAQCBzdGF0aWMgdTMyIGFsbG9jX21lbSh1 MzIgYnl0ZXMpCiAgICAgcmV0dXJuIGFsbG9jIC09IEFMSUdOX1VQKGJ5dGVzLCAxNik7CiB9CiAK K3N0YXRpYyB2b2lkIHplcm9fbWVtKHUzMiBzLCB1MzIgYnl0ZXMpCit7CisgICAgd2hpbGUgKCBi eXRlcy0tICkKKyAgICAgICAgKihjaGFyICopcysrID0gMDsKK30KKwogc3RhdGljIHUzMiBjb3B5 X21lbSh1MzIgc3JjLCB1MzIgYnl0ZXMpCiB7CiAgICAgdTMyIGRzdCwgZHN0X3JldDsKQEAgLTY1 LDEzICs4MiwxMSBAQCBzdGF0aWMgdTMyIGNvcHlfc3RyaW5nKHUzMiBzcmMpCiAgICAgcmV0dXJu IGNvcHlfbWVtKHNyYywgcCAtIHNyYyArIDEpOwogfQogCi1tdWx0aWJvb3RfaW5mb190IF9fc3Rk Y2FsbCAqcmVsb2ModTMyIG1iaV9pbiwgdTMyIHRyYW1wb2xpbmUpCitzdGF0aWMgbXVsdGlib290 X2luZm9fdCAqbWJpX21iaSh1MzIgbWJpX2luKQogewogICAgIGludCBpOwogICAgIG11bHRpYm9v dF9pbmZvX3QgKm1iaV9vdXQ7CiAKLSAgICBhbGxvYyA9IHRyYW1wb2xpbmU7Ci0KICAgICBtYmlf b3V0ID0gX3AoY29weV9tZW0obWJpX2luLCBzaXplb2YoKm1iaV9vdXQpKSk7CiAKICAgICBpZiAo IG1iaV9vdXQtPmZsYWdzICYgTUJJX0NNRExJTkUgKQpAQCAtMTA4LDMgKzEyMywxMjYgQEAgbXVs dGlib290X2luZm9fdCBfX3N0ZGNhbGwgKnJlbG9jKHUzMiBtYmlfaW4sIHUzMiB0cmFtcG9saW5l KQogCiAgICAgcmV0dXJuIG1iaV9vdXQ7CiB9CisKK3N0YXRpYyBtdWx0aWJvb3RfaW5mb190ICpt YmkyX21iaSh1MzIgbWJpX2luKQoreworICAgIGNvbnN0IG11bHRpYm9vdDJfZml4ZWRfdCAqbWJp X2ZpeCA9IF9wKG1iaV9pbik7CisgICAgY29uc3QgbXVsdGlib290Ml9tZW1vcnlfbWFwX3QgKm1t YXBfc3JjOworICAgIGNvbnN0IG11bHRpYm9vdDJfdGFnX3QgKnRhZzsKKyAgICBtb2R1bGVfdCAq bWJpX291dF9tb2RzID0gTlVMTDsKKyAgICBtZW1vcnlfbWFwX3QgKm1tYXBfZHN0OworICAgIG11 bHRpYm9vdF9pbmZvX3QgKm1iaV9vdXQ7CisgICAgdTMyIHB0cjsKKyAgICB1bnNpZ25lZCBpbnQg aSwgbW9kX2lkeCA9IDA7CisKKyAgICBwdHIgPSBhbGxvY19tZW0oc2l6ZW9mKCptYmlfb3V0KSk7 CisgICAgbWJpX291dCA9IF9wKHB0cik7CisgICAgemVyb19tZW0ocHRyLCBzaXplb2YoKm1iaV9v dXQpKTsKKworICAgIC8qIFNraXAgTXVsdGlib290MiBpbmZvcm1hdGlvbiBmaXhlZCBwYXJ0LiAq LworICAgIHB0ciA9IEFMSUdOX1VQKG1iaV9pbiArIHNpemVvZihtdWx0aWJvb3QyX2ZpeGVkX3Qp LCBNVUxUSUJPT1QyX1RBR19BTElHTik7CisKKyAgICAvKiBHZXQgdGhlIG51bWJlciBvZiBtb2R1 bGVzLiAqLworICAgIGZvciAoIHRhZyA9IF9wKHB0cik7ICh1MzIpdGFnIC0gbWJpX2luIDwgbWJp X2ZpeC0+dG90YWxfc2l6ZTsKKyAgICAgICAgICB0YWcgPSBfcChBTElHTl9VUCgodTMyKXRhZyAr IHRhZy0+c2l6ZSwgTVVMVElCT09UMl9UQUdfQUxJR04pKSApCisgICAgeworICAgICAgICBpZiAo IHRhZy0+dHlwZSA9PSBNVUxUSUJPT1QyX1RBR19UWVBFX01PRFVMRSApCisgICAgICAgICAgICAr K21iaV9vdXQtPm1vZHNfY291bnQ7CisgICAgICAgIGVsc2UgaWYgKCB0YWctPnR5cGUgPT0gTVVM VElCT09UMl9UQUdfVFlQRV9FTkQgKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAg aWYgKCBtYmlfb3V0LT5tb2RzX2NvdW50ICkKKyAgICB7CisgICAgICAgIG1iaV9vdXQtPmZsYWdz ID0gTUJJX01PRFVMRVM7CisgICAgICAgIG1iaV9vdXQtPm1vZHNfYWRkciA9IGFsbG9jX21lbSht Ymlfb3V0LT5tb2RzX2NvdW50ICogc2l6ZW9mKG1vZHVsZV90KSk7CisgICAgICAgIG1iaV9vdXRf bW9kcyA9IF9wKG1iaV9vdXQtPm1vZHNfYWRkcik7CisgICAgfQorCisgICAgLyogU2tpcCBNdWx0 aWJvb3QyIGluZm9ybWF0aW9uIGZpeGVkIHBhcnQuICovCisgICAgcHRyID0gQUxJR05fVVAobWJp X2luICsgc2l6ZW9mKG11bHRpYm9vdDJfZml4ZWRfdCksIE1VTFRJQk9PVDJfVEFHX0FMSUdOKTsK KworICAgIC8qIFB1dCBhbGwgbmVlZGVkIGRhdGEgaW50byBtYmlfb3V0LiAqLworICAgIGZvciAo IHRhZyA9IF9wKHB0cik7ICh1MzIpdGFnIC0gbWJpX2luIDwgbWJpX2ZpeC0+dG90YWxfc2l6ZTsK KyAgICAgICAgICB0YWcgPSBfcChBTElHTl9VUCgodTMyKXRhZyArIHRhZy0+c2l6ZSwgTVVMVElC T09UMl9UQUdfQUxJR04pKSApCisgICAgICAgIHN3aXRjaCAoIHRhZy0+dHlwZSApCisgICAgICAg IHsKKyAgICAgICAgY2FzZSBNVUxUSUJPT1QyX1RBR19UWVBFX0JPT1RfTE9BREVSX05BTUU6Cisg ICAgICAgICAgICBtYmlfb3V0LT5mbGFncyB8PSBNQklfTE9BREVSTkFNRTsKKyAgICAgICAgICAg IHB0ciA9IGdldF9tYjJfc3RyaW5nKHRhZywgc3RyaW5nLCBzdHJpbmcpOworICAgICAgICAgICAg bWJpX291dC0+Ym9vdF9sb2FkZXJfbmFtZSA9IGNvcHlfc3RyaW5nKHB0cik7CisgICAgICAgICAg ICBicmVhazsKKworICAgICAgICBjYXNlIE1VTFRJQk9PVDJfVEFHX1RZUEVfQ01ETElORToKKyAg ICAgICAgICAgIG1iaV9vdXQtPmZsYWdzIHw9IE1CSV9DTURMSU5FOworICAgICAgICAgICAgcHRy ID0gZ2V0X21iMl9zdHJpbmcodGFnLCBzdHJpbmcsIHN0cmluZyk7CisgICAgICAgICAgICBtYmlf b3V0LT5jbWRsaW5lID0gY29weV9zdHJpbmcocHRyKTsKKyAgICAgICAgICAgIGJyZWFrOworCisg ICAgICAgIGNhc2UgTVVMVElCT09UMl9UQUdfVFlQRV9CQVNJQ19NRU1JTkZPOgorICAgICAgICAg ICAgbWJpX291dC0+ZmxhZ3MgfD0gTUJJX01FTUxJTUlUUzsKKyAgICAgICAgICAgIG1iaV9vdXQt Pm1lbV9sb3dlciA9IGdldF9tYjJfZGF0YSh0YWcsIGJhc2ljX21lbWluZm8sIG1lbV9sb3dlcik7 CisgICAgICAgICAgICBtYmlfb3V0LT5tZW1fdXBwZXIgPSBnZXRfbWIyX2RhdGEodGFnLCBiYXNp Y19tZW1pbmZvLCBtZW1fdXBwZXIpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2Fz ZSBNVUxUSUJPT1QyX1RBR19UWVBFX01NQVA6CisgICAgICAgICAgICBpZiAoIGdldF9tYjJfZGF0 YSh0YWcsIG1tYXAsIGVudHJ5X3NpemUpIDwgc2l6ZW9mKCptbWFwX3NyYykgKQorICAgICAgICAg ICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBtYmlfb3V0LT5mbGFncyB8PSBNQklfTUVNTUFQ OworICAgICAgICAgICAgbWJpX291dC0+bW1hcF9sZW5ndGggPSBnZXRfbWIyX2RhdGEodGFnLCBt bWFwLCBzaXplKTsKKyAgICAgICAgICAgIG1iaV9vdXQtPm1tYXBfbGVuZ3RoIC09IHNpemVvZiht dWx0aWJvb3QyX3RhZ19tbWFwX3QpOworICAgICAgICAgICAgbWJpX291dC0+bW1hcF9sZW5ndGgg Lz0gZ2V0X21iMl9kYXRhKHRhZywgbW1hcCwgZW50cnlfc2l6ZSk7CisgICAgICAgICAgICBtYmlf b3V0LT5tbWFwX2xlbmd0aCAqPSBzaXplb2YobWVtb3J5X21hcF90KTsKKworICAgICAgICAgICAg bWJpX291dC0+bW1hcF9hZGRyID0gYWxsb2NfbWVtKG1iaV9vdXQtPm1tYXBfbGVuZ3RoKTsKKwor ICAgICAgICAgICAgbW1hcF9zcmMgPSBnZXRfbWIyX2RhdGEodGFnLCBtbWFwLCBlbnRyaWVzKTsK KyAgICAgICAgICAgIG1tYXBfZHN0ID0gX3AobWJpX291dC0+bW1hcF9hZGRyKTsKKworICAgICAg ICAgICAgZm9yICggaSA9IDA7IGkgPCBtYmlfb3V0LT5tbWFwX2xlbmd0aCAvIHNpemVvZihtZW1v cnlfbWFwX3QpOyBpKysgKQorICAgICAgICAgICAgeworICAgICAgICAgICAgICAgIC8qIEluaXQg c2l6ZSBtZW1iZXIgcHJvcGVybHkuICovCisgICAgICAgICAgICAgICAgbW1hcF9kc3RbaV0uc2l6 ZSA9IHNpemVvZihtZW1vcnlfbWFwX3QpOworICAgICAgICAgICAgICAgIG1tYXBfZHN0W2ldLnNp emUgLT0gc2l6ZW9mKCgobWVtb3J5X21hcF90KXswfSkuc2l6ZSk7CisgICAgICAgICAgICAgICAg LyogTm93IGNvcHkgYSBnaXZlbiByZWdpb24gZGF0YS4gKi8KKyAgICAgICAgICAgICAgICBtbWFw X2RzdFtpXS5iYXNlX2FkZHJfbG93ID0gKHUzMiltbWFwX3NyYy0+YWRkcjsKKyAgICAgICAgICAg ICAgICBtbWFwX2RzdFtpXS5iYXNlX2FkZHJfaGlnaCA9ICh1MzIpKG1tYXBfc3JjLT5hZGRyID4+ IDMyKTsKKyAgICAgICAgICAgICAgICBtbWFwX2RzdFtpXS5sZW5ndGhfbG93ID0gKHUzMiltbWFw X3NyYy0+bGVuOworICAgICAgICAgICAgICAgIG1tYXBfZHN0W2ldLmxlbmd0aF9oaWdoID0gKHUz MikobW1hcF9zcmMtPmxlbiA+PiAzMik7CisgICAgICAgICAgICAgICAgbW1hcF9kc3RbaV0udHlw ZSA9IG1tYXBfc3JjLT50eXBlOworICAgICAgICAgICAgICAgIG1tYXBfc3JjID0gX3AobW1hcF9z cmMpICsgZ2V0X21iMl9kYXRhKHRhZywgbW1hcCwgZW50cnlfc2l6ZSk7CisgICAgICAgICAgICB9 CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIE1VTFRJQk9PVDJfVEFHX1RZUEVf TU9EVUxFOgorICAgICAgICAgICAgaWYgKCBtb2RfaWR4ID49IG1iaV9vdXQtPm1vZHNfY291bnQg KQorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBtYmlfb3V0X21vZHNbbW9k X2lkeF0ubW9kX3N0YXJ0ID0gZ2V0X21iMl9kYXRhKHRhZywgbW9kdWxlLCBtb2Rfc3RhcnQpOwor ICAgICAgICAgICAgbWJpX291dF9tb2RzW21vZF9pZHhdLm1vZF9lbmQgPSBnZXRfbWIyX2RhdGEo dGFnLCBtb2R1bGUsIG1vZF9lbmQpOworICAgICAgICAgICAgcHRyID0gZ2V0X21iMl9zdHJpbmco dGFnLCBtb2R1bGUsIGNtZGxpbmUpOworICAgICAgICAgICAgbWJpX291dF9tb2RzW21vZF9pZHhd LnN0cmluZyA9IGNvcHlfc3RyaW5nKHB0cik7CisgICAgICAgICAgICBtYmlfb3V0X21vZHNbbW9k X2lkeF0ucmVzZXJ2ZWQgPSAwOworICAgICAgICAgICAgKyttb2RfaWR4OworICAgICAgICAgICAg YnJlYWs7CisKKyAgICAgICAgY2FzZSBNVUxUSUJPT1QyX1RBR19UWVBFX0VORDoKKyAgICAgICAg ICAgIHJldHVybiBtYmlfb3V0OworCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBicmVh azsKKyAgICAgICAgfQorCisgICAgcmV0dXJuIG1iaV9vdXQ7Cit9CisKK211bHRpYm9vdF9pbmZv X3QgX19zdGRjYWxsICpyZWxvYyh1MzIgbWJfbWFnaWMsIHUzMiBtYmlfaW4sIHUzMiB0cmFtcG9s aW5lKQoreworICAgIGFsbG9jID0gdHJhbXBvbGluZTsKKworICAgIGlmICggbWJfbWFnaWMgPT0g TVVMVElCT09UMl9CT09UTE9BREVSX01BR0lDICkKKyAgICAgICAgcmV0dXJuIG1iaTJfbWJpKG1i aV9pbik7CisgICAgZWxzZQorICAgICAgICByZXR1cm4gbWJpX21iaShtYmlfaW4pOworfQpkaWZm IC0tZ2l0IGEveGVuL2FyY2gveDg2L3g4Nl82NC9hc20tb2Zmc2V0cy5jIGIveGVuL2FyY2gveDg2 L3g4Nl82NC9hc20tb2Zmc2V0cy5jCmluZGV4IDY0OTA1YzYuLmI0MzdhOGYgMTAwNjQ0Ci0tLSBh L3hlbi9hcmNoL3g4Ni94ODZfNjQvYXNtLW9mZnNldHMuYworKysgYi94ZW4vYXJjaC94ODYveDg2 XzY0L2FzbS1vZmZzZXRzLmMKQEAgLTEzLDYgKzEzLDcgQEAKICNpbmNsdWRlIDxhc20vZml4bWFw Lmg+CiAjaW5jbHVkZSA8YXNtL2hhcmRpcnEuaD4KICNpbmNsdWRlIDx4ZW4vbXVsdGlib290Lmg+ CisjaW5jbHVkZSA8eGVuL211bHRpYm9vdDIuaD4KIAogI2RlZmluZSBERUZJTkUoX3N5bSwgX3Zh bCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAg IGFzbSB2b2xhdGlsZSAoIlxuLmFzY2lpXCI9PT4jZGVmaW5lICIgI19zeW0gIiAlMCAvKiAiICNf dmFsICIgKi88PT1cIiIgXApAQCAtMTY3LDYgKzE2OCwxNCBAQCB2b2lkIF9fZHVtbXlfXyh2b2lk KQogICAgIE9GRlNFVChNQl9mbGFncywgbXVsdGlib290X2luZm9fdCwgZmxhZ3MpOwogICAgIE9G RlNFVChNQl9jbWRsaW5lLCBtdWx0aWJvb3RfaW5mb190LCBjbWRsaW5lKTsKICAgICBPRkZTRVQo TUJfbWVtX2xvd2VyLCBtdWx0aWJvb3RfaW5mb190LCBtZW1fbG93ZXIpOworICAgIEJMQU5LKCk7 CisKKyAgICBERUZJTkUoTUIyX2ZpeGVkX3NpemVvZiwgc2l6ZW9mKG11bHRpYm9vdDJfZml4ZWRf dCkpOworICAgIE9GRlNFVChNQjJfZml4ZWRfdG90YWxfc2l6ZSwgbXVsdGlib290Ml9maXhlZF90 LCB0b3RhbF9zaXplKTsKKyAgICBPRkZTRVQoTUIyX3RhZ190eXBlLCBtdWx0aWJvb3QyX3RhZ190 LCB0eXBlKTsKKyAgICBPRkZTRVQoTUIyX3RhZ19zaXplLCBtdWx0aWJvb3QyX3RhZ190LCBzaXpl KTsKKyAgICBPRkZTRVQoTUIyX21lbV9sb3dlciwgbXVsdGlib290Ml90YWdfYmFzaWNfbWVtaW5m b190LCBtZW1fbG93ZXIpOworICAgIEJMQU5LKCk7CiAKICAgICBPRkZTRVQoRE9NQUlOX3ZtX2Fz c2lzdCwgc3RydWN0IGRvbWFpbiwgdm1fYXNzaXN0KTsKIH0KZGlmZiAtLWdpdCBhL3hlbi9pbmNs dWRlL3hlbi9tdWx0aWJvb3QyLmggYi94ZW4vaW5jbHVkZS94ZW4vbXVsdGlib290Mi5oCm5ldyBm aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkZDU4MDAKLS0tIC9kZXYvbnVsbAorKysg Yi94ZW4vaW5jbHVkZS94ZW4vbXVsdGlib290Mi5oCkBAIC0wLDAgKzEsMTY5IEBACisvKgorICog IENvcHlyaWdodCAoQykgMTk5OSwyMDAzLDIwMDcsMjAwOCwyMDA5LDIwMTAgIEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLgorICoKKyAqICBtdWx0aWJvb3QyLmggLSBNdWx0aWJvb3QgMiBo ZWFkZXIgZmlsZS4KKyAqCisgKiAgQmFzZWQgb24gZ3J1Yi0yLjAwL2luY2x1ZGUvbXVsdGlib290 Mi5oIGZpbGUuCisgKgorICogIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2Yg Y2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKKyAqICBvZiB0aGlzIHNvZnR3 YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwg dG8KKyAqICBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRp bmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZQorICogIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlm eSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vcgorICogIHNl bGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdCBwZXJzb25zIHRvIHdob20g dGhlIFNvZnR3YXJlIGlzCisgKiAgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBm b2xsb3dpbmcgY29uZGl0aW9uczoKKyAqCisgKiAgVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2Ug YW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKyAqICBhbGwg Y29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KKyAqCisgKiAg VEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5Z IEtJTkQsIEVYUFJFU1MgT1IKKyAqICBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVE IFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqICBGSVRORVNTIEZPUiBB IFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hB TEwgQU5ZCisgKiAgREVWRUxPUEVSIE9SIERJU1RSSUJVVE9SIEJFIExJQUJMRSBGT1IgQU5ZIENM QUlNLCBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwKKyAqICBXSEVUSEVSIElOIEFOIEFDVElP TiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9S CisgKiAgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVS IERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqLworCisjaWZuZGVmIF9fTVVMVElCT09UMl9I X18KKyNkZWZpbmUgX19NVUxUSUJPT1QyX0hfXworCisvKiBUaGUgbWFnaWMgZmllbGQgc2hvdWxk IGNvbnRhaW4gdGhpcy4gICovCisjZGVmaW5lIE1VTFRJQk9PVDJfSEVBREVSX01BR0lDCQkJCTB4 ZTg1MjUwZDYKKworLyogVGhpcyBzaG91bGQgYmUgaW4gJWVheCBvbiB4ODYgYXJjaGl0ZWN0dXJl LiAgKi8KKyNkZWZpbmUgTVVMVElCT09UMl9CT09UTE9BREVSX01BR0lDCQkJMHgzNmQ3NjI4OQor CisvKiBIb3cgbWFueSBieXRlcyBmcm9tIHRoZSBzdGFydCBvZiB0aGUgZmlsZSB3ZSBzZWFyY2gg Zm9yIHRoZSBoZWFkZXIuICAqLworI2RlZmluZSBNVUxUSUJPT1QyX1NFQVJDSAkJCQkzMjc2OAor CisvKiBNdWx0aWJvb3QgMiBoZWFkZXIgYWxpZ25tZW50LiAqLworI2RlZmluZSBNVUxUSUJPT1Qy X0hFQURFUl9BTElHTgkJCQk4CisKKy8qIEFsaWdubWVudCBvZiBtdWx0aWJvb3QgMiBtb2R1bGVz LiAgKi8KKyNkZWZpbmUgTVVMVElCT09UMl9NT0RfQUxJR04JCQkJMHgwMDAwMTAwMAorCisvKiBB bGlnbm1lbnQgb2YgdGhlIG11bHRpYm9vdCAyIGluZm8gc3RydWN0dXJlLiAgKi8KKyNkZWZpbmUg TVVMVElCT09UMl9JTkZPX0FMSUdOCQkJCTB4MDAwMDAwMDgKKworLyogTXVsdGlib290IDIgYXJj aGl0ZWN0dXJlcy4gKi8KKyNkZWZpbmUgTVVMVElCT09UMl9BUkNISVRFQ1RVUkVfSTM4NgkJCTAK KyNkZWZpbmUgTVVMVElCT09UMl9BUkNISVRFQ1RVUkVfTUlQUzMyCQkJNAorCisvKiBIZWFkZXIg dGFnIHR5cGVzLiAqLworI2RlZmluZSBNVUxUSUJPT1QyX0hFQURFUl9UQUdfRU5ECQkJMAorI2Rl ZmluZSBNVUxUSUJPT1QyX0hFQURFUl9UQUdfSU5GT1JNQVRJT05fUkVRVUVTVAkxCisjZGVmaW5l IE1VTFRJQk9PVDJfSEVBREVSX1RBR19BRERSRVNTCQkJMgorI2RlZmluZSBNVUxUSUJPT1QyX0hF QURFUl9UQUdfRU5UUllfQUREUkVTUwkJMworI2RlZmluZSBNVUxUSUJPT1QyX0hFQURFUl9UQUdf Q09OU09MRV9GTEFHUwkJNAorI2RlZmluZSBNVUxUSUJPT1QyX0hFQURFUl9UQUdfRlJBTUVCVUZG RVIJCTUKKyNkZWZpbmUgTVVMVElCT09UMl9IRUFERVJfVEFHX01PRFVMRV9BTElHTgkJNgorI2Rl ZmluZSBNVUxUSUJPT1QyX0hFQURFUl9UQUdfRUZJX0JTCQkJNworI2RlZmluZSBNVUxUSUJPT1Qy X0hFQURFUl9UQUdfRU5UUllfQUREUkVTU19FRkkzMgk4CisjZGVmaW5lIE1VTFRJQk9PVDJfSEVB REVSX1RBR19FTlRSWV9BRERSRVNTX0VGSTY0CTkKKworLyogSGVhZGVyIHRhZyBmbGFncy4gKi8K KyNkZWZpbmUgTVVMVElCT09UMl9IRUFERVJfVEFHX1JFUVVJUkVECQkJMAorI2RlZmluZSBNVUxU SUJPT1QyX0hFQURFUl9UQUdfT1BUSU9OQUwJCQkxCisKKy8qIEhlYWRlciBjb25zb2xlIHRhZyBj b25zb2xlX2ZsYWdzLiAqLworI2RlZmluZSBNVUxUSUJPT1QyX0NPTlNPTEVfRkxBR1NfQ09OU09M RV9SRVFVSVJFRAkxCisjZGVmaW5lIE1VTFRJQk9PVDJfQ09OU09MRV9GTEFHU19FR0FfVEVYVF9T VVBQT1JURUQJMgorCisvKiBGbGFncyBzZXQgaW4gdGhlICdmbGFncycgbWVtYmVyIG9mIHRoZSBt dWx0aWJvb3QgaGVhZGVyLiAgKi8KKyNkZWZpbmUgTVVMVElCT09UMl9UQUdfVFlQRV9FTkQJCQkJ MAorI2RlZmluZSBNVUxUSUJPT1QyX1RBR19UWVBFX0NNRExJTkUJCQkxCisjZGVmaW5lIE1VTFRJ Qk9PVDJfVEFHX1RZUEVfQk9PVF9MT0FERVJfTkFNRQkJMgorI2RlZmluZSBNVUxUSUJPT1QyX1RB R19UWVBFX01PRFVMRQkJCTMKKyNkZWZpbmUgTVVMVElCT09UMl9UQUdfVFlQRV9CQVNJQ19NRU1J TkZPCQk0CisjZGVmaW5lIE1VTFRJQk9PVDJfVEFHX1RZUEVfQk9PVERFVgkJCTUKKyNkZWZpbmUg TVVMVElCT09UMl9UQUdfVFlQRV9NTUFQCQkJNgorI2RlZmluZSBNVUxUSUJPT1QyX1RBR19UWVBF X1ZCRQkJCQk3CisjZGVmaW5lIE1VTFRJQk9PVDJfVEFHX1RZUEVfRlJBTUVCVUZGRVIJCQk4Cisj ZGVmaW5lIE1VTFRJQk9PVDJfVEFHX1RZUEVfRUxGX1NFQ1RJT05TCQk5CisjZGVmaW5lIE1VTFRJ Qk9PVDJfVEFHX1RZUEVfQVBNCQkJCTEwCisjZGVmaW5lIE1VTFRJQk9PVDJfVEFHX1RZUEVfRUZJ MzIJCQkxMQorI2RlZmluZSBNVUxUSUJPT1QyX1RBR19UWVBFX0VGSTY0CQkJMTIKKyNkZWZpbmUg TVVMVElCT09UMl9UQUdfVFlQRV9TTUJJT1MJCQkxMworI2RlZmluZSBNVUxUSUJPT1QyX1RBR19U WVBFX0FDUElfT0xECQkJMTQKKyNkZWZpbmUgTVVMVElCT09UMl9UQUdfVFlQRV9BQ1BJX05FVwkJ CTE1CisjZGVmaW5lIE1VTFRJQk9PVDJfVEFHX1RZUEVfTkVUV09SSwkJCTE2CisjZGVmaW5lIE1V TFRJQk9PVDJfVEFHX1RZUEVfRUZJX01NQVAJCQkxNworI2RlZmluZSBNVUxUSUJPT1QyX1RBR19U WVBFX0VGSV9CUwkJCTE4CisjZGVmaW5lIE1VTFRJQk9PVDJfVEFHX1RZUEVfRUZJMzJfSUgJCQkx OQorI2RlZmluZSBNVUxUSUJPT1QyX1RBR19UWVBFX0VGSTY0X0lICQkJMjAKKworLyogTXVsdGli b290IDIgdGFnIGFsaWdubWVudC4gKi8KKyNkZWZpbmUgTVVMVElCT09UMl9UQUdfQUxJR04JCQkJ OAorCisvKiBNZW1vcnkgdHlwZXMuICovCisjZGVmaW5lIE1VTFRJQk9PVDJfTUVNT1JZX0FWQUlM QUJMRQkJCTEKKyNkZWZpbmUgTVVMVElCT09UMl9NRU1PUllfUkVTRVJWRUQJCQkyCisjZGVmaW5l IE1VTFRJQk9PVDJfTUVNT1JZX0FDUElfUkVDTEFJTUFCTEUJCTMKKyNkZWZpbmUgTVVMVElCT09U Ml9NRU1PUllfTlZTCQkJCTQKKyNkZWZpbmUgTVVMVElCT09UMl9NRU1PUllfQkFEUkFNCQkJNQor CisvKiBGcmFtZWJ1ZmZlciB0eXBlcy4gKi8KKyNkZWZpbmUgTVVMVElCT09UMl9GUkFNRUJVRkZF Ul9UWVBFX0lOREVYRUQJCTAKKyNkZWZpbmUgTVVMVElCT09UMl9GUkFNRUJVRkZFUl9UWVBFX1JH QgkJCTEKKyNkZWZpbmUgTVVMVElCT09UMl9GUkFNRUJVRkZFUl9UWVBFX0VHQV9URVhUCQkyCisK KyNpZm5kZWYgX19BU1NFTUJMWV9fCit0eXBlZGVmIHN0cnVjdCB7CisgICAgdTMyIHRvdGFsX3Np emU7CisgICAgdTMyIHJlc2VydmVkOworfSBtdWx0aWJvb3QyX2ZpeGVkX3Q7CisKK3R5cGVkZWYg c3RydWN0IHsKKyAgICB1MzIgdHlwZTsKKyAgICB1MzIgc2l6ZTsKK30gbXVsdGlib290Ml90YWdf dDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIHUzMiB0eXBlOworICAgIHUzMiBzaXplOworICAg IGNoYXIgc3RyaW5nW107Cit9IG11bHRpYm9vdDJfdGFnX3N0cmluZ190OworCit0eXBlZGVmIHN0 cnVjdCB7CisgICAgdTMyIHR5cGU7CisgICAgdTMyIHNpemU7CisgICAgdTMyIG1lbV9sb3dlcjsK KyAgICB1MzIgbWVtX3VwcGVyOworfSBtdWx0aWJvb3QyX3RhZ19iYXNpY19tZW1pbmZvX3Q7CisK K3R5cGVkZWYgc3RydWN0IHsKKyAgICB1NjQgYWRkcjsKKyAgICB1NjQgbGVuOworICAgIHUzMiB0 eXBlOworICAgIHUzMiB6ZXJvOworfSBtdWx0aWJvb3QyX21lbW9yeV9tYXBfdDsKKwordHlwZWRl ZiBzdHJ1Y3QgeworICAgIHUzMiB0eXBlOworICAgIHUzMiBzaXplOworICAgIHUzMiBlbnRyeV9z aXplOworICAgIHUzMiBlbnRyeV92ZXJzaW9uOworICAgIG11bHRpYm9vdDJfbWVtb3J5X21hcF90 IGVudHJpZXNbXTsKK30gbXVsdGlib290Ml90YWdfbW1hcF90OworCit0eXBlZGVmIHN0cnVjdCB7 CisgICAgdTMyIHR5cGU7CisgICAgdTMyIHNpemU7CisgICAgdTY0IHBvaW50ZXI7Cit9IG11bHRp Ym9vdDJfdGFnX2VmaTY0X3Q7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICB1MzIgdHlwZTsKKyAg ICB1MzIgc2l6ZTsKKyAgICB1NjQgcG9pbnRlcjsKK30gbXVsdGlib290Ml90YWdfZWZpNjRfaWhf dDsKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIHUzMiB0eXBlOworICAgIHUzMiBzaXplOworICAg IHUzMiBtb2Rfc3RhcnQ7CisgICAgdTMyIG1vZF9lbmQ7CisgICAgY2hhciBjbWRsaW5lW107Cit9 IG11bHRpYm9vdDJfdGFnX21vZHVsZV90OworI2VuZGlmIC8qIF9fQVNTRU1CTFlfXyAqLworCisj ZW5kaWYgLyogX19NVUxUSUJPT1QyX0hfXyAqLwotLSAKMS43LjEwLjQKCgpfX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpYZW4tZGV2ZWwgbWFpbGluZyBsaXN0 Clhlbi1kZXZlbEBsaXN0cy54ZW4ub3JnCmh0dHBzOi8vbGlzdHMueGVuLm9yZy94ZW4tZGV2ZWwK