From mboxrd@z Thu Jan 1 00:00:00 1970 From: Wei Liu Subject: [PATCH v3] gcov: add new interface and 3.4 and 4.7 format support Date: Tue, 11 Oct 2016 11:31:57 +0100 Message-ID: <1476181917-29259-1-git-send-email-wei.liu2@citrix.com> References: <1476092438-24895-6-git-send-email-wei.liu2@citrix.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mail6.bemta3.messagelabs.com ([195.245.230.39]) by lists.xenproject.org with esmtp (Exim 4.84_2) (envelope-from ) id 1btuLr-0004N7-5y for xen-devel@lists.xenproject.org; Tue, 11 Oct 2016 10:32:03 +0000 In-Reply-To: <1476092438-24895-6-git-send-email-wei.liu2@citrix.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: Xen-devel Cc: Stefano Stabellini , Wei Liu , George Dunlap , Andrew Cooper , Ian Jackson , Tim Deegan , philippe.gabriel@citrix.com, Jan Beulich List-Id: xen-devel@lists.xenproject.org QSBuZXcgc3lzY3RsIGludGVyZmFjZSBmb3IgcGFzc2luZyBnY292IGRhdGEgYmFjayB0byB1c2Vy c3BhY2UuIFRoZSBuZXcKaW50ZXJmYWNlIHVzZXMgYSBjdXN0b21pc2VkIHJlY29yZCBmaWxlIGZv cm1hdC4gVGhlIG5ldyBzeXNjdGwgcmV1c2VzCm9yaWdpbmFsIHN5c2N0bCBudW1iZXIgYnV0IHJl bmFtZXMgdGhlIG9wIHRvIGdjb3Zfb3AuCgpCb3RoIGdjYyAzLjQgYW5kIDQuNyBmb3JtYXQgYXJl IHN1cHBvcnRlZC4gVGhlIGNvZGUgaXMgcmV3cml0dGVuIHNvIHRoYXQKYSBuZXcgZm9ybWF0IGNh biBiZSBlYXNpbHkgYWRkZWQgaW4gdGhlIGZ1dHVyZS4gIFZlcnNpb24gc3BlY2lmaWMgY29kZQpp cyBncm91cGVkIGludG8gZGlmZmVyZW50IGZpbGVzLiBUaGUgZm9ybWF0IG9uZSBuZWVkcyB0byB1 c2UgY2FuIGJlCnBpY2tlZCB2aWEgS2NvbmZpZy4gVGhlIGRlZmF1bHQgZm9ybWF0IGlzIDQuNyBm b3JtYXQuCgpVc2Vyc3BhY2UgcHJvZ3JhbXMgdG8gaGFuZGxlIGV4dHJhY3RlZCBkYXRhIHdpbGwg Y29tZSBpbiBhIGxhdGVyIHBhdGNoLgoKU2lnbmVkLW9mZi1ieTogV2VpIExpdSA8d2VpLmxpdTJA Y2l0cml4LmNvbT4KLS0tCkFzIGFsd2F5cywgdjMgaW4gbXkgeGVuYml0cyB4ZW4uZ2l0IHRyZWUu IE9ubHkgc2VuZGluZyB0aGlzIHVuYWNrZWQKcGF0Y2guCgp2MzoKMS4gQ2hlY2sgZ2NjIHZlcnNp b24gaW4gZ2NjXyouYyBmaWxlcy4KMi4gRWxpbWluYXRlIHUzMiAvIHU2NC4KMy4gTWFyayBfX2dj b3ZfaW5pdCBhcyBfX2luaXQuCjQuIEZpeCBhIHJlYmFzZSBlcnJvciBpbiB2Mi4KNS4gU29tZSBv dGhlciBjb3NtZXRpYyBmaXhlcy4KCnYyOgoxLiBVc2UgdGFiIGluIEtjb25maWcgYW5kIGluZGVu dCBoZWxwIHRleHQgcHJvcGVybHkuCjIuIEJ1bXAgWEVOX1NZU0NUTF9JTlRFUkZBQ0VfVkVSU0lP Ti4KMy4gRml4IGNvc21ldGljIGlzc3Vlcy4KCkNjOiBBbmRyZXcgQ29vcGVyIDxhbmRyZXcuY29v cGVyM0BjaXRyaXguY29tPgpDYzogR2VvcmdlIER1bmxhcCA8R2VvcmdlLkR1bmxhcEBldS5jaXRy aXguY29tPgpDYzogSWFuIEphY2tzb24gPGlhbi5qYWNrc29uQGV1LmNpdHJpeC5jb20+CkNjOiBK YW4gQmV1bGljaCA8amJldWxpY2hAc3VzZS5jb20+CkNjOiBLb25yYWQgUnplc3p1dGVrIFdpbGsg PGtvbnJhZC53aWxrQG9yYWNsZS5jb20+CkNjOiBTdGVmYW5vIFN0YWJlbGxpbmkgPHNzdGFiZWxs aW5pQGtlcm5lbC5vcmc+CkNjOiBUaW0gRGVlZ2FuIDx0aW1AeGVuLm9yZz4KQ2M6IFdlaSBMaXUg PHdlaS5saXUyQGNpdHJpeC5jb20+Ci0tLQogeGVuL0tjb25maWcuZGVidWcgICAgICAgICAgIHwg IDI0ICsrLQogeGVuL2NvbW1vbi9nY292L01ha2VmaWxlICAgIHwgICAzICsKIHhlbi9jb21tb24v Z2Nvdi9nY2NfM180LmMgICB8IDM2NyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKwogeGVuL2NvbW1vbi9nY292L2djY180XzcuYyAgIHwgMjA1ICsrKysrKysrKysr KysrKysrKysrKysrKysKIHhlbi9jb21tb24vZ2Nvdi9nY292LmMgICAgICB8IDI1NyArKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrCiB4ZW4vY29tbW9uL2djb3YvZ2Nvdi5oICAgICAgfCAg NDAgKysrKysKIHhlbi9jb21tb24vZ2Nvdi9nY292X2Jhc2UuYyB8ICA2MCArKysrKysrKwogeGVu L2NvbW1vbi9zeXNjdGwuYyAgICAgICAgIHwgICA4ICsKIHhlbi9pbmNsdWRlL3B1YmxpYy9zeXNj dGwuaCB8ICAzOSArKysrLQogeGVuL2luY2x1ZGUveGVuL2djb3YuaCAgICAgIHwgICA5ICsrCiAx MCBmaWxlcyBjaGFuZ2VkLCAxMDA1IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCiBjcmVh dGUgbW9kZSAxMDA2NDQgeGVuL2NvbW1vbi9nY292L2djY18zXzQuYwogY3JlYXRlIG1vZGUgMTAw NjQ0IHhlbi9jb21tb24vZ2Nvdi9nY2NfNF83LmMKIGNyZWF0ZSBtb2RlIDEwMDY0NCB4ZW4vY29t bW9uL2djb3YvZ2Nvdi5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgeGVuL2NvbW1vbi9nY292L2djb3Yu aAogY3JlYXRlIG1vZGUgMTAwNjQ0IHhlbi9jb21tb24vZ2Nvdi9nY292X2Jhc2UuYwogY3JlYXRl IG1vZGUgMTAwNjQ0IHhlbi9pbmNsdWRlL3hlbi9nY292LmgKCmRpZmYgLS1naXQgYS94ZW4vS2Nv bmZpZy5kZWJ1ZyBiL3hlbi9LY29uZmlnLmRlYnVnCmluZGV4IGVmODYzZGMuLmM2NWU1NDMgMTAw NjQ0Ci0tLSBhL3hlbi9LY29uZmlnLmRlYnVnCisrKyBiL3hlbi9LY29uZmlnLmRlYnVnCkBAIC0z MCwxNiArMzAsMzAgQEAgY29uZmlnIEZSQU1FX1BPSU5URVIKIAogY29uZmlnIEdDT1YKIAlib29s ICJHY292IFN1cHBvcnQiCi0JZGVwZW5kcyBvbiBCUk9LRU4KIAktLS1oZWxwLS0tCiAJICBFbmFi bGUgZ2NvdiAoYSB0ZXN0IGNvdmVyYWdlIHByb2dyYW0gaW4gR0NDKSBzdXBwb3J0LgogCi0JICBD dXJyZW50bHkgdGhlIGRhdGEgc3RydWN0dXJlIGFuZCBoeXBlcmNhbGwgaW50ZXJmYWNlIGFyZSB0 aWVkCi0JICB0byBHQ0MgMy40IGdjb3YgZm9ybWF0LiBZb3UgbmVlZCB0byBoYXZlIGEgdmVyc2lv biBvZiBHQ0MKLQkgIHRoYXQgaXMgY29tcGF0aWJsZSB3aXRoIHRoYXQgZm9ybWF0IHRvIG1ha2Ug Z2NvdiB3b3JrLgotCiAJICBJZiB1bnN1cmUsIHNheSBOIGhlcmUuCiAKK2Nob2ljZQorCXByb21w dCAiU3BlY2lmeSBHY292IGZvcm1hdCIKKwlkZXBlbmRzIG9uIEdDT1YKKwlkZWZhdWx0IEdDT1Zf Rk9STUFUXzRfNworCS0tLWhlbHAtLS0KKwkgIFRoZSBnY292IGZvcm1hdCBpcyBkZXRlcm1pbmVk IGJ5IGdjYyB2ZXJzaW9uLgorCitjb25maWcgR0NPVl9GT1JNQVRfNF83CisJYm9vbCAiR0NDIDQu NyBmb3JtYXQiCisJLS0taGVscC0tLQorCSAgU2VsZWN0IHRoaXMgb3B0aW9uIHRvIHVzZSB0aGUg Zm9ybWF0IHNwZWNpZmllZCBpbiBHQ0MgNC43LgorCitjb25maWcgR0NPVl9GT1JNQVRfM180CisJ Ym9vbCAiR0NDIDMuNCBmb3JtYXQiCisJLS0taGVscC0tLQorCSAgU2VsZWN0IHRoaXMgb3B0aW9u IHRvIHVzZSB0aGUgZm9ybWF0IHNwZWNpZmllZCBpbiBHQ0MgMy40LgorCitlbmRjaG9pY2UKKwog Y29uZmlnIExPQ0tfUFJPRklMRQogCWJvb2wgIkxvY2sgUHJvZmlsaW5nIgogCS0tLWhlbHAtLS0K ZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vZ2Nvdi9NYWtlZmlsZSBiL3hlbi9jb21tb24vZ2Nvdi9N YWtlZmlsZQppbmRleCBlNjlkZTI5Li4wM2FjMWU1IDEwMDY0NAotLS0gYS94ZW4vY29tbW9uL2dj b3YvTWFrZWZpbGUKKysrIGIveGVuL2NvbW1vbi9nY292L01ha2VmaWxlCkBAIC0wLDAgKzEsMyBA QAorb2JqLXkgKz0gZ2Nvdl9iYXNlLm8gZ2Nvdi5vCitvYmotJChDT05GSUdfR0NPVl9GT1JNQVRf M180KSArPSBnY2NfM180Lm8KK29iai0kKENPTkZJR19HQ09WX0ZPUk1BVF80XzcpICs9IGdjY180 XzcubwpkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9nY292L2djY18zXzQuYyBiL3hlbi9jb21tb24v Z2Nvdi9nY2NfM180LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzYzMWY0 YgotLS0gL2Rldi9udWxsCisrKyBiL3hlbi9jb21tb24vZ2Nvdi9nY2NfM180LmMKQEAgLTAsMCAr MSwzNjcgQEAKKy8qCisgKiAgVGhpcyBjb2RlIHByb3ZpZGVzIGZ1bmN0aW9ucyB0byBoYW5kbGUg Z2NjJ3MgcHJvZmlsaW5nIGRhdGEgZm9ybWF0CisgKiAgaW50cm9kdWNlZCB3aXRoIGdjYyAzLjQu IEZ1dHVyZSB2ZXJzaW9ucyBvZiBnY2MgbWF5IGNoYW5nZSB0aGUgZ2NvdgorICogIGZvcm1hdCAo YXMgaGFwcGVuZWQgYmVmb3JlKSwgc28gYWxsIGZvcm1hdC1zcGVjaWZpYyBpbmZvcm1hdGlvbiBu ZWVkcworICogIHRvIGJlIGtlcHQgbW9kdWxhciBhbmQgZWFzaWx5IGV4Y2hhbmdlYWJsZS4KKyAq CisgKiAgVGhpcyBmaWxlIGlzIGJhc2VkIG9uIGdjYy1pbnRlcm5hbCBkZWZpbml0aW9ucy4gRnVu Y3Rpb25zIGFuZCBkYXRhCisgKiAgc3RydWN0dXJlcyBhcmUgZGVmaW5lZCB0byBiZSBjb21wYXRp YmxlIHdpdGggZ2NjIGNvdW50ZXJwYXJ0cy4KKyAqICBGb3IgYSBiZXR0ZXIgdW5kZXJzdGFuZGlu ZywgcmVmZXIgdG8gZ2NjIHNvdXJjZTogZ2NjL2djb3YtaW8uaC4KKyAqCisgKiAgICBDb3B5cmln aHQgSUJNIENvcnAuIDIwMDkKKyAqICAgIEF1dGhvcihzKTogUGV0ZXIgT2JlcnBhcmxlaXRlciA8 b2JlcnBhckBsaW51eC52bmV0LmlibS5jb20+CisgKgorICogICAgVXNlcyBnY2MtaW50ZXJuYWwg ZGF0YSBkZWZpbml0aW9ucy4KKyAqCisgKiAgSW1wb3J0ZWQgZnJvbSBMaW51eCBhbmQgbW9kaWZp ZWQgZm9yIFhlbiBieQorICogICAgV2VpIExpdSA8d2VpLmxpdTJAY2l0cml4LmNvbT4KKyAqLwor CisKKyNpbmNsdWRlIDx4ZW4vbGliLmg+CisKKyNpbmNsdWRlICJnY292LmgiCisKKyNpZiAhKEdD Q19WRVJTSU9OID49IDMwNDAwICYmIEdDQ19WRVJTSU9OIDwgNDA3MDApCisjZXJyb3IgIldyb25n IHZlcnNpb24gb2YgR0NDIHVzZWQgdG8gY29tcGlsZSBnY292IgorI2VuZGlmCisKKyNkZWZpbmUg R0NPVl9DT1VOVEVSUyA1CisKK3N0YXRpYyBzdHJ1Y3QgZ2Nvdl9pbmZvICpnY292X2luZm9faGVh ZDsKKworLyoqCisgKiBzdHJ1Y3QgZ2Nvdl9mbl9pbmZvIC0gcHJvZmlsaW5nIG1ldGEgZGF0YSBw ZXIgZnVuY3Rpb24KKyAqIEBpZGVudDogb2JqZWN0IGZpbGUtdW5pcXVlIGZ1bmN0aW9uIGlkZW50 aWZpZXIKKyAqIEBjaGVja3N1bTogZnVuY3Rpb24gY2hlY2tzdW0KKyAqIEBuX2N0cnM6IG51bWJl ciBvZiB2YWx1ZXMgcGVyIGNvdW50ZXIgdHlwZSBiZWxvbmdpbmcgdG8gdGhpcyBmdW5jdGlvbgor ICoKKyAqIFRoaXMgZGF0YSBpcyBnZW5lcmF0ZWQgYnkgZ2NjIGR1cmluZyBjb21waWxhdGlvbiBh bmQgZG9lc24ndCBjaGFuZ2UKKyAqIGF0IHJ1bi10aW1lLgorICovCitzdHJ1Y3QgZ2Nvdl9mbl9p bmZvCit7CisgICAgdW5zaWduZWQgaW50IGlkZW50OworICAgIHVuc2lnbmVkIGludCBjaGVja3N1 bTsKKyAgICB1bnNpZ25lZCBpbnQgbl9jdHJzWzBdOworfTsKKworLyoqCisgKiBzdHJ1Y3QgZ2Nv dl9jdHJfaW5mbyAtIHByb2ZpbGluZyBkYXRhIHBlciBjb3VudGVyIHR5cGUKKyAqIEBudW06IG51 bWJlciBvZiBjb3VudGVyIHZhbHVlcyBmb3IgdGhpcyB0eXBlCisgKiBAdmFsdWVzOiBhcnJheSBv ZiBjb3VudGVyIHZhbHVlcyBmb3IgdGhpcyB0eXBlCisgKiBAbWVyZ2U6IG1lcmdlIGZ1bmN0aW9u IGZvciBjb3VudGVyIHZhbHVlcyBvZiB0aGlzIHR5cGUgKHVudXNlZCkKKyAqCisgKiBUaGlzIGRh dGEgaXMgZ2VuZXJhdGVkIGJ5IGdjYyBkdXJpbmcgY29tcGlsYXRpb24gYW5kIGRvZXNuJ3QgY2hh bmdlCisgKiBhdCBydW4tdGltZSB3aXRoIHRoZSBleGNlcHRpb24gb2YgdGhlIHZhbHVlcyBhcnJh eS4KKyAqLworc3RydWN0IGdjb3ZfY3RyX2luZm8KK3sKKyAgICB1bnNpZ25lZCBpbnQgbnVtOwor ICAgIGdjb3ZfdHlwZSAqdmFsdWVzOworICAgIHZvaWQgKCptZXJnZSkoZ2Nvdl90eXBlICosIHVu c2lnbmVkIGludCk7Cit9OworCisvKioKKyAqIHN0cnVjdCBnY292X2luZm8gLSBwcm9maWxpbmcg ZGF0YSBwZXIgb2JqZWN0IGZpbGUKKyAqIEB2ZXJzaW9uOiBnY292IHZlcnNpb24gbWFnaWMgaW5k aWNhdGluZyB0aGUgZ2NjIHZlcnNpb24gdXNlZCBmb3IgY29tcGlsYXRpb24KKyAqIEBuZXh0OiBs aXN0IGhlYWQgZm9yIGEgc2luZ2x5LWxpbmtlZCBsaXN0CisgKiBAc3RhbXA6IHRpbWUgc3RhbXAK KyAqIEBmaWxlbmFtZTogbmFtZSBvZiB0aGUgYXNzb2NpYXRlZCBnY292IGRhdGEgZmlsZQorICog QG5fZnVuY3Rpb25zOiBudW1iZXIgb2YgaW5zdHJ1bWVudGVkIGZ1bmN0aW9ucworICogQGZ1bmN0 aW9uczogZnVuY3Rpb24gZGF0YQorICogQGN0cl9tYXNrOiBtYXNrIHNwZWNpZnlpbmcgd2hpY2gg Y291bnRlciB0eXBlcyBhcmUgYWN0aXZlCisgKiBAY291bnRzOiBjb3VudGVyIGRhdGEgcGVyIGNv dW50ZXIgdHlwZQorICoKKyAqIFRoaXMgZGF0YSBpcyBnZW5lcmF0ZWQgYnkgZ2NjIGR1cmluZyBj b21waWxhdGlvbiBhbmQgZG9lc24ndCBjaGFuZ2UKKyAqIGF0IHJ1bi10aW1lIHdpdGggdGhlIGV4 Y2VwdGlvbiBvZiB0aGUgbmV4dCBwb2ludGVyLgorICovCitzdHJ1Y3QgZ2Nvdl9pbmZvCit7Cisg ICAgdW5zaWduZWQgaW50ICAgICAgICAgICAgICB2ZXJzaW9uOworICAgIHN0cnVjdCBnY292X2lu Zm8gICAgICAgICAgKm5leHQ7CisgICAgdW5zaWduZWQgaW50ICAgICAgICAgICAgICBzdGFtcDsK KyAgICBjb25zdCBjaGFyICAgICAgICAgICAgICAgICpmaWxlbmFtZTsKKyAgICB1bnNpZ25lZCBp bnQgICAgICAgICAgICAgIG5fZnVuY3Rpb25zOworICAgIGNvbnN0IHN0cnVjdCBnY292X2ZuX2lu Zm8gKmZ1bmN0aW9uczsKKyAgICB1bnNpZ25lZCBpbnQgICAgICAgICAgICAgIGN0cl9tYXNrOwor ICAgIHN0cnVjdCBnY292X2N0cl9pbmZvICAgICAgY291bnRzWzBdOworfTsKKworLyoqCisgKiBz dHJ1Y3QgdHlwZV9pbmZvIC0gaXRlcmF0b3IgaGVscGVyIGFycmF5CisgKiBAY3RyX3R5cGU6IGNv dW50ZXIgdHlwZQorICogQG9mZnNldDogaW5kZXggb2YgdGhlIGZpcnN0IHZhbHVlIG9mIHRoZSBj dXJyZW50IGZ1bmN0aW9uIGZvciB0aGlzIHR5cGUKKyAqCisgKiBUaGlzIGFycmF5IGlzIG5lZWRl ZCB0byBjb252ZXJ0IHRoZSBpbi1tZW1vcnkgZGF0YSBmb3JtYXQgaW50byB0aGUgaW4tZmlsZQor ICogZGF0YSBmb3JtYXQ6CisgKgorICogSW4tbWVtb3J5OgorICogICBmb3IgZWFjaCBjb3VudGVy IHR5cGUKKyAqICAgICBmb3IgZWFjaCBmdW5jdGlvbgorICogICAgICAgdmFsdWVzCisgKgorICog SW4tZmlsZToKKyAqICAgZm9yIGVhY2ggZnVuY3Rpb24KKyAqICAgICBmb3IgZWFjaCBjb3VudGVy IHR5cGUKKyAqICAgICAgIHZhbHVlcworICoKKyAqIFNlZSBnY2Mgc291cmNlIGdjYy9nY292LWlv LmggZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gZGF0YSBvcmdhbml6YXRpb24uCisgKi8KK3N0cnVj dCB0eXBlX2luZm8geworICAgIGludCBjdHJfdHlwZTsKKyAgICB1bnNpZ25lZCBpbnQgb2Zmc2V0 OworfTsKKworLyoqCisgKiBzdHJ1Y3QgZ2Nvdl9pdGVyYXRvciAtIHNwZWNpZmllcyBjdXJyZW50 IGZpbGUgcG9zaXRpb24gaW4gbG9naWNhbCByZWNvcmRzCisgKiBAaW5mbzogYXNzb2NpYXRlZCBw cm9maWxpbmcgZGF0YQorICogQHJlY29yZDogcmVjb3JkIHR5cGUKKyAqIEBmdW5jdGlvbjogZnVu Y3Rpb24gbnVtYmVyCisgKiBAdHlwZTogY291bnRlciB0eXBlCisgKiBAY291bnQ6IGluZGV4IGlu dG8gdmFsdWVzIGFycmF5CisgKiBAbnVtX3R5cGVzOiBudW1iZXIgb2YgY291bnRlciB0eXBlcwor ICogQHR5cGVfaW5mbzogaGVscGVyIGFycmF5IHRvIGdldCB2YWx1ZXMtYXJyYXkgb2Zmc2V0IGZv ciBjdXJyZW50IGZ1bmN0aW9uCisgKi8KK3N0cnVjdCBnY292X2l0ZXJhdG9yIHsKKyAgICBjb25z dCBzdHJ1Y3QgZ2Nvdl9pbmZvICppbmZvOworCisgICAgaW50IHJlY29yZDsKKyAgICB1bnNpZ25l ZCBpbnQgZnVuY3Rpb247CisgICAgdW5zaWduZWQgaW50IHR5cGU7CisgICAgdW5zaWduZWQgaW50 IGNvdW50OworCisgICAgaW50IG51bV90eXBlczsKKyAgICBzdHJ1Y3QgdHlwZV9pbmZvIHR5cGVf aW5mb1tHQ09WX0NPVU5URVJTXTsKK307CisKKy8qIE1hcHBpbmcgb2YgbG9naWNhbCByZWNvcmQg bnVtYmVyIHRvIGFjdHVhbCBmaWxlIGNvbnRlbnQuICovCisjZGVmaW5lIFJFQ09SRF9GSUxFX01B R0lDICAgICAgIDAKKyNkZWZpbmUgUkVDT1JEX0dDT1ZfVkVSU0lPTiAgICAgMQorI2RlZmluZSBS RUNPUkRfVElNRV9TVEFNUCAgICAgICAyCisjZGVmaW5lIFJFQ09SRF9GVU5DVElPTl9UQUcgICAg IDMKKyNkZWZpbmUgUkVDT1JEX0ZVTkNUT05fVEFHX0xFTiAgNAorI2RlZmluZSBSRUNPUkRfRlVO Q1RJT05fSURFTlQgICA1CisjZGVmaW5lIFJFQ09SRF9GVU5DVElPTl9DSEVDSyAgIDYKKyNkZWZp bmUgUkVDT1JEX0NPVU5UX1RBRyAgICAgICAgNworI2RlZmluZSBSRUNPUkRfQ09VTlRfTEVOICAg ICAgICA4CisjZGVmaW5lIFJFQ09SRF9DT1VOVCAgICAgICAgICAgIDkKKworc3RhdGljIGludCBj b3VudGVyX2FjdGl2ZShjb25zdCBzdHJ1Y3QgZ2Nvdl9pbmZvICppbmZvLCB1bnNpZ25lZCBpbnQg dHlwZSkKK3sKKyAgICByZXR1cm4gKDEgPDwgdHlwZSkgJiBpbmZvLT5jdHJfbWFzazsKK30KKwor c3RhdGljIHVuc2lnbmVkIGludCBudW1fY291bnRlcl9hY3RpdmUoY29uc3Qgc3RydWN0IGdjb3Zf aW5mbyAqaW5mbykKK3sKKyAgICB1bnNpZ25lZCBpbnQgaTsKKyAgICB1bnNpZ25lZCBpbnQgcmVz dWx0ID0gMDsKKworICAgIGZvciAoIGkgPSAwOyBpIDwgR0NPVl9DT1VOVEVSUzsgaSsrICkKKyAg ICAgICAgaWYgKCBjb3VudGVyX2FjdGl2ZShpbmZvLCBpKSApCisgICAgICAgICAgICByZXN1bHQr KzsKKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3ZvaWQgZ2Nvdl9pbmZvX2xpbmsoc3RydWN0 IGdjb3ZfaW5mbyAqaW5mbykKK3sKKyAgICBpbmZvLT5uZXh0ID0gZ2Nvdl9pbmZvX2hlYWQ7Cisg ICAgZ2Nvdl9pbmZvX2hlYWQgPSBpbmZvOworfQorCitzdHJ1Y3QgZ2Nvdl9pbmZvICpnY292X2lu Zm9fbmV4dChjb25zdCBzdHJ1Y3QgZ2Nvdl9pbmZvICppbmZvKQoreworICAgIGlmICggIWluZm8g KQorICAgICAgICByZXR1cm4gZ2Nvdl9pbmZvX2hlYWQ7CisKKyAgICByZXR1cm4gaW5mby0+bmV4 dDsKK30KKworY29uc3QgY2hhciAqZ2Nvdl9pbmZvX2ZpbGVuYW1lKGNvbnN0IHN0cnVjdCBnY292 X2luZm8gKmluZm8pCit7CisgICAgcmV0dXJuIGluZm8tPmZpbGVuYW1lOworfQorCit2b2lkIGdj b3ZfaW5mb19yZXNldChzdHJ1Y3QgZ2Nvdl9pbmZvICppbmZvKQoreworICAgIHVuc2lnbmVkIGlu dCBhY3RpdmUgPSBudW1fY291bnRlcl9hY3RpdmUoaW5mbyk7CisgICAgdW5zaWduZWQgaW50IGk7 CisKKyAgICBmb3IgKCBpID0gMDsgaSA8IGFjdGl2ZTsgaSsrICkKKyAgICAgICAgbWVtc2V0KGlu Zm8tPmNvdW50c1tpXS52YWx1ZXMsIDAsCisgICAgICAgICAgICAgICBpbmZvLT5jb3VudHNbaV0u bnVtICogc2l6ZW9mKGdjb3ZfdHlwZSkpOworfQorCitzdGF0aWMgc2l6ZV90IGdldF9mbl9zaXpl KGNvbnN0IHN0cnVjdCBnY292X2luZm8gKmluZm8pCit7CisgICAgc2l6ZV90IHNpemU7CisKKyAg ICBzaXplID0gc2l6ZW9mKHN0cnVjdCBnY292X2ZuX2luZm8pICsgbnVtX2NvdW50ZXJfYWN0aXZl KGluZm8pICoKKyAgICAgICAgc2l6ZW9mKHVuc2lnbmVkIGludCk7CisgICAgaWYgKCBfX2FsaWdu b2ZfXyhzdHJ1Y3QgZ2Nvdl9mbl9pbmZvKSA+IHNpemVvZih1bnNpZ25lZCBpbnQpICkKKyAgICAg ICAgc2l6ZSA9IFJPVU5EVVAoc2l6ZSwgX19hbGlnbm9mX18oc3RydWN0IGdjb3ZfZm5faW5mbykp OworICAgIHJldHVybiBzaXplOworfQorCitzdGF0aWMgc3RydWN0IGdjb3ZfZm5faW5mbyAqZ2V0 X2ZuX2luZm8oY29uc3Qgc3RydWN0IGdjb3ZfaW5mbyAqaW5mbywKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgZm4pCit7CisgICAgcmV0dXJuIChz dHJ1Y3QgZ2Nvdl9mbl9pbmZvICopCisgICAgICAgICgoY2hhciAqKSBpbmZvLT5mdW5jdGlvbnMg KyBmbiAqIGdldF9mbl9zaXplKGluZm8pKTsKK30KKworc3RhdGljIHN0cnVjdCBnY292X2ZuX2lu Zm8gKmdldF9mdW5jKHN0cnVjdCBnY292X2l0ZXJhdG9yICppdGVyKQoreworICAgIHJldHVybiBn ZXRfZm5faW5mbyhpdGVyLT5pbmZvLCBpdGVyLT5mdW5jdGlvbik7Cit9CisKK3N0YXRpYyBzdHJ1 Y3QgdHlwZV9pbmZvICpnZXRfdHlwZShzdHJ1Y3QgZ2Nvdl9pdGVyYXRvciAqaXRlcikKK3sKKyAg ICByZXR1cm4gJml0ZXItPnR5cGVfaW5mb1tpdGVyLT50eXBlXTsKK30KKworLyoqCisgKiBnY292 X2l0ZXJfbmV4dCAtIGFkdmFuY2UgZmlsZSBpdGVyYXRvciB0byBuZXh0IGxvZ2ljYWwgcmVjb3Jk CisgKiBAaXRlcjogZmlsZSBpdGVyYXRvcgorICoKKyAqIFJldHVybiB6ZXJvIGlmIG5ldyBwb3Np dGlvbiBpcyB2YWxpZCwgbm9uLXplcm8gaWYgaXRlcmF0b3IgaGFzIHJlYWNoZWQgZW5kLgorICov CitzdGF0aWMgaW50IGdjb3ZfaXRlcl9uZXh0KHN0cnVjdCBnY292X2l0ZXJhdG9yICppdGVyKQor eworICAgIHN3aXRjaCAoIGl0ZXItPnJlY29yZCApCisgICAgeworICAgIGNhc2UgUkVDT1JEX0ZJ TEVfTUFHSUM6CisgICAgY2FzZSBSRUNPUkRfR0NPVl9WRVJTSU9OOgorICAgIGNhc2UgUkVDT1JE X0ZVTkNUSU9OX1RBRzoKKyAgICBjYXNlIFJFQ09SRF9GVU5DVE9OX1RBR19MRU46CisgICAgY2Fz ZSBSRUNPUkRfRlVOQ1RJT05fSURFTlQ6CisgICAgY2FzZSBSRUNPUkRfQ09VTlRfVEFHOgorICAg ICAgICAvKiBBZHZhbmNlIHRvIG5leHQgcmVjb3JkICovCisgICAgICAgIGl0ZXItPnJlY29yZCsr OworICAgICAgICBicmVhazsKKyAgICBjYXNlIFJFQ09SRF9DT1VOVDoKKyAgICAgICAgLyogQWR2 YW5jZSB0byBuZXh0IGNvdW50ICovCisgICAgICAgIGl0ZXItPmNvdW50Kys7CisgICAgICAgIC8q IGZhbGwgdGhyb3VnaCAqLworICAgIGNhc2UgUkVDT1JEX0NPVU5UX0xFTjoKKyAgICAgICAgaWYg KCBpdGVyLT5jb3VudCA8IGdldF9mdW5jKGl0ZXIpLT5uX2N0cnNbaXRlci0+dHlwZV0gKQorICAg ICAgICB7CisgICAgICAgICAgICBpdGVyLT5yZWNvcmQgPSA5OworICAgICAgICAgICAgYnJlYWs7 CisgICAgICAgIH0KKyAgICAgICAgLyogQWR2YW5jZSB0byBuZXh0IGNvdW50ZXIgdHlwZSAqLwor ICAgICAgICBnZXRfdHlwZShpdGVyKS0+b2Zmc2V0ICs9IGl0ZXItPmNvdW50OworICAgICAgICBp dGVyLT5jb3VudCA9IDA7CisgICAgICAgIGl0ZXItPnR5cGUrKzsKKyAgICAgICAgLyogZmFsbCB0 aHJvdWdoICovCisgICAgY2FzZSBSRUNPUkRfRlVOQ1RJT05fQ0hFQ0s6CisgICAgICAgIGlmICgg aXRlci0+dHlwZSA8IGl0ZXItPm51bV90eXBlcyApCisgICAgICAgIHsKKyAgICAgICAgICAgIGl0 ZXItPnJlY29yZCA9IDc7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICAv KiBBZHZhbmNlIHRvIG5leHQgZnVuY3Rpb24gKi8KKyAgICAgICAgaXRlci0+dHlwZSA9IDA7Cisg ICAgICAgIGl0ZXItPmZ1bmN0aW9uKys7CisgICAgICAgIC8qIGZhbGwgdGhyb3VnaCAqLworICAg IGNhc2UgUkVDT1JEX1RJTUVfU1RBTVA6CisgICAgICAgIGlmICggaXRlci0+ZnVuY3Rpb24gPCBp dGVyLT5pbmZvLT5uX2Z1bmN0aW9ucyApCisgICAgICAgICAgICBpdGVyLT5yZWNvcmQgPSAzOwor ICAgICAgICBlbHNlCisgICAgICAgICAgICBpdGVyLT5yZWNvcmQgPSAtMTsKKyAgICAgICAgYnJl YWs7CisgICAgfQorICAgIC8qIENoZWNrIGZvciBFT0YuICovCisgICAgaWYgKCBpdGVyLT5yZWNv cmQgPT0gLTEgKQorICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAgICBlbHNlCisgICAgICAgIHJl dHVybiAwOworfQorCisvKioKKyAqIGdjb3ZfaXRlcl93cml0ZSAtIHdyaXRlIGRhdGEgdG8gYnVm ZmVyCisgKiBAaXRlcjogZmlsZSBpdGVyYXRvcgorICogQGJ1ZjogYnVmZmVyIHRvIHdyaXRlIHRv LCBpZiBpdCBpcyBOVUxMLCBub3RoaW5nIGlzIHdyaXR0ZW4KKyAqIEBwb3M6IHBvc2l0aW9uIGlu c2lkZSBidWZmZXIgdG8gc3RhcnQgd3JpdGluZworICoKKyAqIFJldHVybiBudW1iZXIgb2YgYnl0 ZXMgd3JpdHRlbiBpbnRvIGJ1ZmZlci4KKyAqLworc3RhdGljIHNpemVfdCBnY292X2l0ZXJfd3Jp dGUoc3RydWN0IGdjb3ZfaXRlcmF0b3IgKml0ZXIsIGNoYXIgKmJ1ZiwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHNpemVfdCBwb3MpCit7CisgICAgc2l6ZV90IHJldCA9IDA7CisKKyAg ICBzd2l0Y2ggKCBpdGVyLT5yZWNvcmQgKQorICAgIHsKKyAgICBjYXNlIFJFQ09SRF9GSUxFX01B R0lDOgorICAgICAgICByZXQgPSBnY292X3N0b3JlX3VpbnQzMihidWYsIHBvcywgR0NPVl9EQVRB X01BR0lDKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBSRUNPUkRfR0NPVl9WRVJTSU9OOgor ICAgICAgICByZXQgPSBnY292X3N0b3JlX3VpbnQzMihidWYsIHBvcywgaXRlci0+aW5mby0+dmVy c2lvbik7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUkVDT1JEX1RJTUVfU1RBTVA6CisgICAg ICAgIHJldCA9IGdjb3Zfc3RvcmVfdWludDMyKGJ1ZiwgcG9zLCBpdGVyLT5pbmZvLT5zdGFtcCk7 CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgUkVDT1JEX0ZVTkNUSU9OX1RBRzoKKyAgICAgICAg cmV0ID0gZ2Nvdl9zdG9yZV91aW50MzIoYnVmLCBwb3MsIEdDT1ZfVEFHX0ZVTkNUSU9OKTsKKyAg ICAgICAgYnJlYWs7CisgICAgY2FzZSBSRUNPUkRfRlVOQ1RPTl9UQUdfTEVOOgorICAgICAgICBy ZXQgPSBnY292X3N0b3JlX3VpbnQzMihidWYsIHBvcywgMik7CisgICAgICAgIGJyZWFrOworICAg IGNhc2UgUkVDT1JEX0ZVTkNUSU9OX0lERU5UOgorICAgICAgICByZXQgPSBnY292X3N0b3JlX3Vp bnQzMihidWYsIHBvcywgZ2V0X2Z1bmMoaXRlciktPmlkZW50KTsKKyAgICAgICAgYnJlYWs7Cisg ICAgY2FzZSBSRUNPUkRfRlVOQ1RJT05fQ0hFQ0s6CisgICAgICAgIHJldCA9IGdjb3Zfc3RvcmVf dWludDMyKGJ1ZiwgcG9zLCBnZXRfZnVuYyhpdGVyKS0+Y2hlY2tzdW0pOworICAgICAgICBicmVh azsKKyAgICBjYXNlIFJFQ09SRF9DT1VOVF9UQUc6CisgICAgICAgIHJldCA9IGdjb3Zfc3RvcmVf dWludDMyKGJ1ZiwgcG9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQ09WX1RB R19GT1JfQ09VTlRFUihnZXRfdHlwZShpdGVyKS0+Y3RyX3R5cGUpKTsKKyAgICAgICAgYnJlYWs7 CisgICAgY2FzZSBSRUNPUkRfQ09VTlRfTEVOOgorICAgICAgICByZXQgPSBnY292X3N0b3JlX3Vp bnQzMihidWYsIHBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0X2Z1bmMo aXRlciktPm5fY3Ryc1tpdGVyLT50eXBlXSAqIDIpOworICAgICAgICBicmVhazsKKyAgICBjYXNl IFJFQ09SRF9DT1VOVDoKKyAgICAgICAgcmV0ID0gZ2Nvdl9zdG9yZV91aW50NjQoYnVmLCBwb3Ms IGl0ZXItPmluZm8tPmNvdW50c1tpdGVyLT50eXBlXS4KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdmFsdWVzW2l0ZXItPmNvdW50ICsgZ2V0X3R5cGUoaXRlciktPm9mZnNldF0pOwor ICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gcmV0OworfQorCisvKiBJZiBidWZm ZXIgaXMgTlVMTCwgbm8gZGF0YSBpcyB3cml0dGVuLiAqLworc2l6ZV90IGdjb3ZfaW5mb190b19n Y2RhKGNoYXIgKmJ1ZmZlciwgY29uc3Qgc3RydWN0IGdjb3ZfaW5mbyAqaW5mbykKK3sKKyAgICBz dHJ1Y3QgZ2Nvdl9pdGVyYXRvciBpdGVyID0geyAuaW5mbyA9IGluZm8gfTsKKyAgICB1bnNpZ25l ZCBpbnQgaTsKKyAgICBzaXplX3QgcG9zID0gMDsKKworICAgIGZvciAoIGkgPSAwOyBpIDwgR0NP Vl9DT1VOVEVSUzsgaSsrICkKKyAgICB7CisgICAgICAgIGlmICggY291bnRlcl9hY3RpdmUoaW5m bywgaSkgKQorICAgICAgICB7CisgICAgICAgICAgICBpdGVyLnR5cGVfaW5mb1tpdGVyLm51bV90 eXBlc10uY3RyX3R5cGUgPSBpOworICAgICAgICAgICAgaXRlci50eXBlX2luZm9baXRlci5udW1f dHlwZXNdLm9mZnNldCA9IDA7CisgICAgICAgICAgICBpdGVyLm51bV90eXBlcysrOworICAgICAg ICB9CisgICAgfQorCisgICAgZG8geworICAgICAgICBwb3MgKz0gZ2Nvdl9pdGVyX3dyaXRlKCZp dGVyLCBidWZmZXIsIHBvcyk7CisgICAgfSB3aGlsZSAoIGdjb3ZfaXRlcl9uZXh0KCZpdGVyKSA9 PSAwICk7CisKKyAgICByZXR1cm4gcG9zOworfQorCisvKgorICogTG9jYWwgdmFyaWFibGVzOgor ICogbW9kZTogQworICogYy1maWxlLXN0eWxlOiAiQlNEIgorICogYy1iYXNpYy1vZmZzZXQ6IDQK KyAqIHRhYi13aWR0aDogNAorICogaW5kZW50LXRhYnMtbW9kZTogbmlsCisgKiBFbmQ6CisgKi8K ZGlmZiAtLWdpdCBhL3hlbi9jb21tb24vZ2Nvdi9nY2NfNF83LmMgYi94ZW4vY29tbW9uL2djb3Yv Z2NjXzRfNy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmY2NlNDMKLS0t IC9kZXYvbnVsbAorKysgYi94ZW4vY29tbW9uL2djb3YvZ2NjXzRfNy5jCkBAIC0wLDAgKzEsMjA1 IEBACisvKgorICogIFRoaXMgY29kZSBwcm92aWRlcyBmdW5jdGlvbnMgdG8gaGFuZGxlIGdjYydz IHByb2ZpbGluZyBkYXRhIGZvcm1hdAorICogIGludHJvZHVjZWQgd2l0aCBnY2MgNC43LgorICoK KyAqICBUaGlzIGZpbGUgaXMgYmFzZWQgaGVhdmlseSBvbiBnY2NfM180LmMgZmlsZS4KKyAqCisg KiAgRm9yIGEgYmV0dGVyIHVuZGVyc3RhbmRpbmcsIHJlZmVyIHRvIGdjYyBzb3VyY2U6CisgKiAg Z2NjL2djb3YtaW8uaAorICogIGxpYmdjYy9saWJnY292LmMKKyAqCisgKiAgVXNlcyBnY2MtaW50 ZXJuYWwgZGF0YSBkZWZpbml0aW9ucy4KKyAqCisgKiAgSW1wb3J0ZWQgZnJvbSBMaW51eCBhbmQg bW9kaWZpZWQgZm9yIFhlbiBieQorICogICAgV2VpIExpdSA8d2VpLmxpdTJAY2l0cml4LmNvbT4K KyAqLworCisjaW5jbHVkZSA8eGVuL3N0cmluZy5oPgorCisjaW5jbHVkZSAiZ2Nvdi5oIgorCisj aWYgR0NDX1ZFUlNJT04gPCA0MDcwMAorI2Vycm9yICJXcm9uZyB2ZXJzaW9uIG9mIEdDQyB1c2Vk IHRvIGNvbXBpbGUgZ2NvdiIKKyNlbmRpZgorCisjaWYgKF9fR05VQ19fID4gNSkgfHwgKF9fR05V Q19fID09IDUgJiYgX19HTlVDX01JTk9SX18gPj0gMSkKKyNkZWZpbmUgR0NPVl9DT1VOVEVSUyAg ICAgICAgICAgICAgICAgICAxMAorI2VsaWYgX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1Jf XyA+PSA5CisjZGVmaW5lIEdDT1ZfQ09VTlRFUlMgICAgICAgICAgICAgICAgICAgOQorI2Vsc2UK KyNkZWZpbmUgR0NPVl9DT1VOVEVSUyAgICAgICAgICAgICAgICAgICA4CisjZW5kaWYKKworI2Rl ZmluZSBHQ09WX1RBR19GVU5DVElPTl9MRU5HVEggICAgICAgIDMKKworc3RhdGljIHN0cnVjdCBn Y292X2luZm8gKmdjb3ZfaW5mb19oZWFkOworCisvKioKKyAqIHN0cnVjdCBnY292X2N0cl9pbmZv IC0gaW5mb3JtYXRpb24gYWJvdXQgY291bnRlcnMgZm9yIGEgc2luZ2xlIGZ1bmN0aW9uCisgKiBA bnVtOiBudW1iZXIgb2YgY291bnRlciB2YWx1ZXMgZm9yIHRoaXMgdHlwZQorICogQHZhbHVlczog YXJyYXkgb2YgY291bnRlciB2YWx1ZXMgZm9yIHRoaXMgdHlwZQorICoKKyAqIFRoaXMgZGF0YSBp cyBnZW5lcmF0ZWQgYnkgZ2NjIGR1cmluZyBjb21waWxhdGlvbiBhbmQgZG9lc24ndCBjaGFuZ2UK KyAqIGF0IHJ1bi10aW1lIHdpdGggdGhlIGV4Y2VwdGlvbiBvZiB0aGUgdmFsdWVzIGFycmF5Lgor ICovCitzdHJ1Y3QgZ2Nvdl9jdHJfaW5mbyB7CisgICAgdW5zaWduZWQgaW50IG51bTsKKyAgICBn Y292X3R5cGUgKnZhbHVlczsKK307CisKKy8qKgorICogc3RydWN0IGdjb3ZfZm5faW5mbyAtIHBy b2ZpbGluZyBtZXRhIGRhdGEgcGVyIGZ1bmN0aW9uCisgKiBAa2V5OiBjb21kYXQga2V5CisgKiBA aWRlbnQ6IHVuaXF1ZSBpZGVudCBvZiBmdW5jdGlvbgorICogQGxpbmVub19jaGVja3N1bTogZnVu Y3Rpb24gbGluZW9fY2hlY2tzdW0KKyAqIEBjZmdfY2hlY2tzdW06IGZ1bmN0aW9uIGNmZyBjaGVj a3N1bQorICogQGN0cnM6IGluc3RydW1lbnRlZCBjb3VudGVycworICoKKyAqIFRoaXMgZGF0YSBp cyBnZW5lcmF0ZWQgYnkgZ2NjIGR1cmluZyBjb21waWxhdGlvbiBhbmQgZG9lc24ndCBjaGFuZ2UK KyAqIGF0IHJ1bi10aW1lLgorICoKKyAqIEluZm9ybWF0aW9uIGFib3V0IGEgc2luZ2xlIGZ1bmN0 aW9uLiAgVGhpcyB1c2VzIHRoZSB0cmFpbGluZyBhcnJheQorICogaWRpb20uIFRoZSBudW1iZXIg b2YgY291bnRlcnMgaXMgZGV0ZXJtaW5lZCBmcm9tIHRoZSBtZXJnZSBwb2ludGVyCisgKiBhcnJh eSBpbiBnY292X2luZm8uICBUaGUga2V5IGlzIHVzZWQgdG8gZGV0ZWN0IHdoaWNoIG9mIGEgc2V0 IG9mCisgKiBjb21kYXQgZnVuY3Rpb25zIHdhcyBzZWxlY3RlZCAtLSBpdCBwb2ludHMgdG8gdGhl IGdjb3ZfaW5mbyBvYmplY3QKKyAqIG9mIHRoZSBvYmplY3QgZmlsZSBjb250YWluaW5nIHRoZSBz ZWxlY3RlZCBjb21kYXQgZnVuY3Rpb24uCisgKi8KK3N0cnVjdCBnY292X2ZuX2luZm8geworICAg IGNvbnN0IHN0cnVjdCBnY292X2luZm8gKmtleTsKKyAgICB1bnNpZ25lZCBpbnQgaWRlbnQ7Cisg ICAgdW5zaWduZWQgaW50IGxpbmVub19jaGVja3N1bTsKKyAgICB1bnNpZ25lZCBpbnQgY2ZnX2No ZWNrc3VtOworICAgIHN0cnVjdCBnY292X2N0cl9pbmZvIGN0cnNbMF07Cit9OworCisvKioKKyAq IHN0cnVjdCBnY292X2luZm8gLSBwcm9maWxpbmcgZGF0YSBwZXIgb2JqZWN0IGZpbGUKKyAqIEB2 ZXJzaW9uOiBnY292IHZlcnNpb24gbWFnaWMgaW5kaWNhdGluZyB0aGUgZ2NjIHZlcnNpb24gdXNl ZCBmb3IgY29tcGlsYXRpb24KKyAqIEBuZXh0OiBsaXN0IGhlYWQgZm9yIGEgc2luZ2x5LWxpbmtl ZCBsaXN0CisgKiBAc3RhbXA6IHVuaXF1aWZ5aW5nIHRpbWUgc3RhbXAKKyAqIEBmaWxlbmFtZTog bmFtZSBvZiB0aGUgYXNzb2NpYXRlZCBnY292IGRhdGEgZmlsZQorICogQG1lcmdlOiBtZXJnZSBm dW5jdGlvbnMgKG51bGwgZm9yIHVudXNlZCBjb3VudGVyIHR5cGUpCisgKiBAbl9mdW5jdGlvbnM6 IG51bWJlciBvZiBpbnN0cnVtZW50ZWQgZnVuY3Rpb25zCisgKiBAZnVuY3Rpb25zOiBwb2ludGVy IHRvIHBvaW50ZXJzIHRvIGZ1bmN0aW9uIGluZm9ybWF0aW9uCisgKgorICogVGhpcyBkYXRhIGlz IGdlbmVyYXRlZCBieSBnY2MgZHVyaW5nIGNvbXBpbGF0aW9uIGFuZCBkb2Vzbid0IGNoYW5nZQor ICogYXQgcnVuLXRpbWUgd2l0aCB0aGUgZXhjZXB0aW9uIG9mIHRoZSBuZXh0IHBvaW50ZXIuCisg Ki8KK3N0cnVjdCBnY292X2luZm8geworICAgIHVuc2lnbmVkIGludCB2ZXJzaW9uOworICAgIHN0 cnVjdCBnY292X2luZm8gKm5leHQ7CisgICAgdW5zaWduZWQgaW50IHN0YW1wOworICAgIGNvbnN0 IGNoYXIgKmZpbGVuYW1lOworICAgIHZvaWQgKCptZXJnZVtHQ09WX0NPVU5URVJTXSkoZ2Nvdl90 eXBlICosIHVuc2lnbmVkIGludCk7CisgICAgdW5zaWduZWQgaW50IG5fZnVuY3Rpb25zOworICAg IHN0cnVjdCBnY292X2ZuX2luZm8gKipmdW5jdGlvbnM7Cit9OworCitzdGF0aWMgaW50IGNvdW50 ZXJfYWN0aXZlKGNvbnN0IHN0cnVjdCBnY292X2luZm8gKmluZm8sIHVuc2lnbmVkIGludCB0eXBl KQoreworICAgIHJldHVybiBpbmZvLT5tZXJnZVt0eXBlXSA/IDEgOiAwOworfQorCit2b2lkIGdj b3ZfaW5mb19saW5rKHN0cnVjdCBnY292X2luZm8gKmluZm8pCit7CisgICAgaW5mby0+bmV4dCA9 IGdjb3ZfaW5mb19oZWFkOworICAgIGdjb3ZfaW5mb19oZWFkID0gaW5mbzsKK30KKworc3RydWN0 IGdjb3ZfaW5mbyAqZ2Nvdl9pbmZvX25leHQoY29uc3Qgc3RydWN0IGdjb3ZfaW5mbyAqaW5mbykK K3sKKyAgICBpZiAoICFpbmZvICkKKyAgICAgICAgcmV0dXJuIGdjb3ZfaW5mb19oZWFkOworICAg IHJldHVybiBpbmZvLT5uZXh0OworfQorCit2b2lkIGdjb3ZfaW5mb19yZXNldChzdHJ1Y3QgZ2Nv dl9pbmZvICppbmZvKQoreworICAgIHN0cnVjdCBnY292X2N0cl9pbmZvICpjaV9wdHI7CisgICAg dW5zaWduZWQgaW50IGZpX2lkeDsKKyAgICB1bnNpZ25lZCBpbnQgY3RfaWR4OworCisgICAgZm9y ICggZmlfaWR4ID0gMDsgZmlfaWR4IDwgaW5mby0+bl9mdW5jdGlvbnM7IGZpX2lkeCsrICkKKyAg ICB7CisgICAgICAgIGNpX3B0ciA9IGluZm8tPmZ1bmN0aW9uc1tmaV9pZHhdLT5jdHJzOworCisg ICAgICAgIGZvciAoIGN0X2lkeCA9IDA7IGN0X2lkeCA8IEdDT1ZfQ09VTlRFUlM7IGN0X2lkeCsr ICkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCAhY291bnRlcl9hY3RpdmUoaW5mbywgY3Rf aWR4KSApCisgICAgICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgICAgIG1lbXNldChj aV9wdHItPnZhbHVlcywgMCwgc2l6ZW9mKGdjb3ZfdHlwZSkgKiBjaV9wdHItPm51bSk7CisgICAg ICAgICAgICBjaV9wdHIrKzsKKyAgICAgICAgfQorICAgIH0KK30KKworY29uc3QgY2hhciAqZ2Nv dl9pbmZvX2ZpbGVuYW1lKGNvbnN0IHN0cnVjdCBnY292X2luZm8gKmluZm8pCit7CisgICAgcmV0 dXJuIGluZm8tPmZpbGVuYW1lOworfQorCisKKy8qKgorICogZ2Nvdl9pbmZvX3RvX2djZGEgLSBj b252ZXJ0IHByb2ZpbGluZyBkYXRhIHNldCB0byBnY2RhIGZpbGUgZm9ybWF0CisgKiBAYnVmZmVy OiB0aGUgYnVmZmVyIHRvIHN0b3JlIGZpbGUgZGF0YSBvciAlTlVMTCBpZiBubyBkYXRhIHNob3Vs ZCBiZSBzdG9yZWQKKyAqIEBpbmZvOiBwcm9maWxpbmcgZGF0YSBzZXQgdG8gYmUgY29udmVydGVk CisgKgorICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRoYXQgd2VyZS93b3VsZCBoYXZl IGJlZW4gc3RvcmVkIGludG8gdGhlIGJ1ZmZlci4KKyAqLworc2l6ZV90IGdjb3ZfaW5mb190b19n Y2RhKGNoYXIgKmJ1ZmZlciwgY29uc3Qgc3RydWN0IGdjb3ZfaW5mbyAqaW5mbykKK3sKKyAgICBz dHJ1Y3QgZ2Nvdl9mbl9pbmZvICpmaV9wdHI7CisgICAgc3RydWN0IGdjb3ZfY3RyX2luZm8gKmNp X3B0cjsKKyAgICB1bnNpZ25lZCBpbnQgZmlfaWR4OworICAgIHVuc2lnbmVkIGludCBjdF9pZHg7 CisgICAgdW5zaWduZWQgaW50IGN2X2lkeDsKKyAgICBzaXplX3QgcG9zID0gMDsKKworICAgIC8q IEZpbGUgaGVhZGVyLiAqLworICAgIHBvcyArPSBnY292X3N0b3JlX3VpbnQzMihidWZmZXIsIHBv cywgR0NPVl9EQVRBX01BR0lDKTsKKyAgICBwb3MgKz0gZ2Nvdl9zdG9yZV91aW50MzIoYnVmZmVy LCBwb3MsIGluZm8tPnZlcnNpb24pOworICAgIHBvcyArPSBnY292X3N0b3JlX3VpbnQzMihidWZm ZXIsIHBvcywgaW5mby0+c3RhbXApOworCisgICAgZm9yICggZmlfaWR4ID0gMDsgZmlfaWR4IDwg aW5mby0+bl9mdW5jdGlvbnM7IGZpX2lkeCsrICkKKyAgICB7CisgICAgICAgIGZpX3B0ciA9IGlu Zm8tPmZ1bmN0aW9uc1tmaV9pZHhdOworCisgICAgICAgIC8qIEZ1bmN0aW9uIHJlY29yZC4gKi8K KyAgICAgICAgcG9zICs9IGdjb3Zfc3RvcmVfdWludDMyKGJ1ZmZlciwgcG9zLCBHQ09WX1RBR19G VU5DVElPTik7CisgICAgICAgIHBvcyArPSBnY292X3N0b3JlX3VpbnQzMihidWZmZXIsIHBvcywg R0NPVl9UQUdfRlVOQ1RJT05fTEVOR1RIKTsKKyAgICAgICAgcG9zICs9IGdjb3Zfc3RvcmVfdWlu dDMyKGJ1ZmZlciwgcG9zLCBmaV9wdHItPmlkZW50KTsKKyAgICAgICAgcG9zICs9IGdjb3Zfc3Rv cmVfdWludDMyKGJ1ZmZlciwgcG9zLCBmaV9wdHItPmxpbmVub19jaGVja3N1bSk7CisgICAgICAg IHBvcyArPSBnY292X3N0b3JlX3VpbnQzMihidWZmZXIsIHBvcywgZmlfcHRyLT5jZmdfY2hlY2tz dW0pOworCisgICAgICAgIGNpX3B0ciA9IGZpX3B0ci0+Y3RyczsKKworICAgICAgICBmb3IgKCBj dF9pZHggPSAwOyBjdF9pZHggPCBHQ09WX0NPVU5URVJTOyBjdF9pZHgrKyApCisgICAgICAgIHsK KyAgICAgICAgICAgIGlmICghIGNvdW50ZXJfYWN0aXZlKGluZm8sIGN0X2lkeCkgKQorICAgICAg ICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgICAgICAvKiBDb3VudGVyIHJlY29yZC4gKi8K KyAgICAgICAgICAgIHBvcyArPSBnY292X3N0b3JlX3VpbnQzMihidWZmZXIsIHBvcywKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHQ09WX1RBR19GT1JfQ09VTlRFUihjdF9p ZHgpKTsKKyAgICAgICAgICAgIHBvcyArPSBnY292X3N0b3JlX3VpbnQzMihidWZmZXIsIHBvcywg Y2lfcHRyLT5udW0gKiAyKTsKKworICAgICAgICAgICAgZm9yICggY3ZfaWR4ID0gMDsgY3ZfaWR4 IDwgY2lfcHRyLT5udW07IGN2X2lkeCsrICkKKyAgICAgICAgICAgICAgICBwb3MgKz0gZ2Nvdl9z dG9yZV91aW50NjQoYnVmZmVyLCBwb3MsIGNpX3B0ci0+dmFsdWVzW2N2X2lkeF0pOworCisgICAg ICAgICAgICBjaV9wdHIrKzsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBwb3M7Cit9 CisKKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6 ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNldDogNAorICogdGFiLXdpZHRoOiA0CisgKiBpbmRlbnQt dGFicy1tb2RlOiBuaWwKKyAqIEVuZDoKKyAqLwpkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9nY292 L2djb3YuYyBiL3hlbi9jb21tb24vZ2Nvdi9nY292LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uNThiMTQzZAotLS0gL2Rldi9udWxsCisrKyBiL3hlbi9jb21tb24vZ2Nvdi9n Y292LmMKQEAgLTAsMCArMSwyNTcgQEAKKy8qCisgKiAgVGhpcyBjb2RlIG1haW50YWlucyBhIGxp c3Qgb2YgYWN0aXZlIHByb2ZpbGluZyBkYXRhIHN0cnVjdHVyZXMuCisgKgorICogICAgQ29weXJp Z2h0IElCTSBDb3JwLiAyMDA5CisgKiAgICBBdXRob3Iocyk6IFBldGVyIE9iZXJwYXJsZWl0ZXIg PG9iZXJwYXJAbGludXgudm5ldC5pYm0uY29tPgorICoKKyAqICAgIFVzZXMgZ2NjLWludGVybmFs IGRhdGEgZGVmaW5pdGlvbnMuCisgKiAgICBCYXNlZCBvbiB0aGUgZ2Nvdi1rZXJuZWwgcGF0Y2gg Ynk6CisgKiAgICAgICBIdWJlcnR1cyBGcmFua2UgPGZyYW5rZWhAdXMuaWJtLmNvbT4KKyAqICAg ICAgIE5pZ2VsIEhpbmRzIDxuaGluZHNAdXMuaWJtLmNvbT4KKyAqICAgICAgIFJhamFuIFJhdmlu ZHJhbiA8cmFqYW5jckB1cy5pYm0uY29tPgorICogICAgICAgUGV0ZXIgT2JlcnBhcmxlaXRlciA8 b2JlcnBhckBsaW51eC52bmV0LmlibS5jb20+CisgKiAgICAgICBQYXVsIExhcnNvbgorICoKKyAq ICBNb2RpZmllZCBmb3IgWGVuIGJ5OgorICogICAgV2VpIExpdSA8d2VpLmxpdTJAY2l0cml4LmNv bT4KKyAqLworCisjaW5jbHVkZSA8eGVuL2Vycm5vLmg+CisjaW5jbHVkZSA8eGVuL2d1ZXN0X2Fj Y2Vzcy5oPgorI2luY2x1ZGUgPHhlbi90eXBlcy5oPgorCisjaW5jbHVkZSA8cHVibGljL3N5c2N0 bC5oPgorCisjaW5jbHVkZSAiZ2Nvdi5oIgorCisvKioKKyAqIGdjb3Zfc3RvcmVfdWludDMyIC0g c3RvcmUgMzIgYml0IG51bWJlciBpbiBnY292IGZvcm1hdCB0byBidWZmZXIKKyAqIEBidWZmZXI6 IHRhcmdldCBidWZmZXIgb3IgTlVMTAorICogQG9mZjogb2Zmc2V0IGludG8gdGhlIGJ1ZmZlcgor ICogQHY6IHZhbHVlIHRvIGJlIHN0b3JlZAorICoKKyAqIE51bWJlciBmb3JtYXQgZGVmaW5lZCBi eSBnY2M6IG51bWJlcnMgYXJlIHJlY29yZGVkIGluIHRoZSAzMiBiaXQKKyAqIHVuc2lnbmVkIGJp bmFyeSBmb3JtIG9mIHRoZSBlbmRpYW5uZXNzIG9mIHRoZSBtYWNoaW5lIGdlbmVyYXRpbmcgdGhl CisgKiBmaWxlLiBSZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgc3RvcmVkLiBJZiBAYnVmZmVy IGlzICVOVUxMLCBkb2Vzbid0CisgKiBzdG9yZSBhbnl0aGluZy4KKyAqLworc2l6ZV90IGdjb3Zf c3RvcmVfdWludDMyKHZvaWQgKmJ1ZmZlciwgc2l6ZV90IG9mZiwgdWludDMyX3QgdikKK3sKKyAg ICB1aW50MzJfdCAqZGF0YTsKKworICAgIGlmICggYnVmZmVyICkKKyAgICB7CisgICAgICAgIGRh dGEgPSBidWZmZXIgKyBvZmY7CisgICAgICAgICpkYXRhID0gdjsKKyAgICB9CisKKyAgICByZXR1 cm4gc2l6ZW9mKCpkYXRhKTsKK30KKworLyoqCisgKiBnY292X3N0b3JlX3VpbnQ2NCAtIHN0b3Jl IDY0IGJpdCBudW1iZXIgaW4gZ2NvdiBmb3JtYXQgdG8gYnVmZmVyCisgKiBAYnVmZmVyOiB0YXJn ZXQgYnVmZmVyIG9yIE5VTEwKKyAqIEBvZmY6IG9mZnNldCBpbnRvIHRoZSBidWZmZXIKKyAqIEB2 OiB2YWx1ZSB0byBiZSBzdG9yZWQKKyAqCisgKiBOdW1iZXIgZm9ybWF0IGRlZmluZWQgYnkgZ2Nj OiBudW1iZXJzIGFyZSByZWNvcmRlZCBpbiB0aGUgMzIgYml0CisgKiB1bnNpZ25lZCBiaW5hcnkg Zm9ybSBvZiB0aGUgZW5kaWFubmVzcyBvZiB0aGUgbWFjaGluZSBnZW5lcmF0aW5nIHRoZQorICog ZmlsZS4gNjQgYml0IG51bWJlcnMgYXJlIHN0b3JlZCBhcyB0d28gMzIgYml0IG51bWJlcnMsIHRo ZSBsb3cgcGFydAorICogZmlyc3QuIFJldHVybnMgdGhlIG51bWJlciBvZiBieXRlcyBzdG9yZWQu IElmIEBidWZmZXIgaXMgJU5VTEwsIGRvZXNuJ3Qgc3RvcmUKKyAqIGFueXRoaW5nLgorICovCitz aXplX3QgZ2Nvdl9zdG9yZV91aW50NjQodm9pZCAqYnVmZmVyLCBzaXplX3Qgb2ZmLCB1aW50NjRf dCB2KQoreworICAgIHVpbnQzMl90ICpkYXRhOworCisgICAgaWYgKCBidWZmZXIgKQorICAgIHsK KyAgICAgICAgZGF0YSA9IGJ1ZmZlciArIG9mZjsKKworICAgICAgICBkYXRhWzBdID0gKHYgJiAw eGZmZmZmZmZmVUwpOworICAgICAgICBkYXRhWzFdID0gKHYgPj4gMzIpOworICAgIH0KKworICAg IHJldHVybiBzaXplb2YoKmRhdGEpICogMjsKK30KKworc3RhdGljIHNpemVfdCBnY292X2luZm9f cGF5bG9hZF9zaXplKGNvbnN0IHN0cnVjdCBnY292X2luZm8gKmluZm8pCit7CisgICAgcmV0dXJu IGdjb3ZfaW5mb190b19nY2RhKE5VTEwsIGluZm8pOworfQorCitzdGF0aWMgaW50IGdjb3ZfaW5m b19kdW1wX3BheWxvYWQoY29uc3Qgc3RydWN0IGdjb3ZfaW5mbyAqaW5mbywKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBYRU5fR1VFU1RfSEFORExFX1BBUkFNKGNoYXIpIGJ1ZmZl ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAqb2ZmKQorewor ICAgIGNoYXIgKmJ1ZjsKKyAgICB1aW50MzJfdCBidWZfc2l6ZTsKKyAgICBpbnQgcmV0OworCisg ICAgLyoKKyAgICAgKiBBbGxvY2F0ZSBhIGJ1ZmZlciBhbmQgZHVtcCBwYXlsb2FkIHRoZXJlLiBU aGlzIGhlbHBzIHVzIHRvIG5vdAorICAgICAqIGhhdmUgY29weV90b19ndWVzdCBpbiBvdGhlciBm dW5jdGlvbnMgYW5kIHJldGFpbiB0aGVpciBzaW1wbGUKKyAgICAgKiBzZW1hbnRpY3MuCisgICAg ICovCisKKyAgICBidWZfc2l6ZSA9IGdjb3ZfaW5mb19wYXlsb2FkX3NpemUoaW5mbyk7CisgICAg YnVmID0geG1hbGxvY19hcnJheShjaGFyLCBidWZfc2l6ZSk7CisKKyAgICBpZiAoICFidWYgKQor ICAgIHsKKyAgICAgICAgcmV0ID0gLUVOT01FTTsKKyAgICAgICAgZ290byBvdXQ7CisgICAgfQor CisgICAgZ2Nvdl9pbmZvX3RvX2djZGEoYnVmLCBpbmZvKTsKKworICAgIGlmICggY29weV90b19n dWVzdF9vZmZzZXQoYnVmZmVyLCAqb2ZmLCBidWYsIGJ1Zl9zaXplKSApCisgICAgeworICAgICAg ICByZXQgPSAtRUZBVUxUOworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisgICAgKm9mZiArPSBi dWZfc2l6ZTsKKworICAgIHJldCA9IDA7Cisgb3V0OgorICAgIHhmcmVlKGJ1Zik7CisgICAgcmV0 dXJuIHJldDsKKworfQorCitzdGF0aWMgdWludDMyX3QgZ2Nvdl9nZXRfc2l6ZSh2b2lkKQorewor ICAgIHVpbnQzMl90IHRvdGFsX3NpemUgPSBzaXplb2YodWludDMyX3QpOyAvKiBNYWdpYyBudW1i ZXIgWENPViAqLworICAgIHN0cnVjdCBnY292X2luZm8gKmluZm8gPSBOVUxMOworCisgICAgd2hp bGUgKCAoaW5mbyA9IGdjb3ZfaW5mb19uZXh0KGluZm8pKSApCisgICAgeworICAgICAgICAvKiBG aWxlIG5hbWUgbGVuZ3RoLCBpbmNsdWRpbmcgdHJhaWxpbmcgXDAgKi8KKyAgICAgICAgdG90YWxf c2l6ZSArPSBzdHJsZW4oZ2Nvdl9pbmZvX2ZpbGVuYW1lKGluZm8pKSArIDE7CisKKyAgICAgICAg LyogUGF5bG9hZCBzaXplIGZpZWxkICovCisgICAgICAgIHRvdGFsX3NpemUgKz0gc2l6ZW9mKHVp bnQzMl90KTsKKworICAgICAgICAvKiBQYXlsb2FkIGl0c2VsZiAqLworICAgICAgICB0b3RhbF9z aXplICs9IGdjb3ZfaW5mb19wYXlsb2FkX3NpemUoaW5mbyk7CisgICAgfQorCisgICAgcmV0dXJu IHRvdGFsX3NpemU7Cit9CisKK3N0YXRpYyB2b2lkIGdjb3ZfcmVzZXRfYWxsX2NvdW50ZXJzKHZv aWQpCit7CisgICAgc3RydWN0IGdjb3ZfaW5mbyAqaW5mbyA9IE5VTEw7CisKKyAgICB3aGlsZSAo IChpbmZvID0gZ2Nvdl9pbmZvX25leHQoaW5mbykpICkKKyAgICAgICAgZ2Nvdl9pbmZvX3Jlc2V0 KGluZm8pOworfQorCitzdGF0aWMgaW50IGdjb3ZfZHVtcF9vbmVfcmVjb3JkKGNvbnN0IHN0cnVj dCBnY292X2luZm8gKmluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFhFTl9H VUVTVF9IQU5ETEVfUEFSQU0oY2hhcikgYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1aW50MzJfdCAqb2ZmKQoreworICAgIHVpbnQzMl90IHBheWxvYWRfc2l6ZTsKKyAg ICB1aW50MzJfdCBsZW47CisKKyAgICAvKiBGaWxlIG5hbWUsIGluY2x1ZGluZyB0cmFpbGluZyBc MCAqLworICAgIGxlbiA9IHN0cmxlbihnY292X2luZm9fZmlsZW5hbWUoaW5mbykpICsgMTsKKyAg ICBpZiAoIGNvcHlfdG9fZ3Vlc3Rfb2Zmc2V0KGJ1ZmZlciwgKm9mZiwgZ2Nvdl9pbmZvX2ZpbGVu YW1lKGluZm8pLCBsZW4pICkKKyAgICAgICAgcmV0dXJuIC1FRkFVTFQ7CisgICAgKm9mZiArPSBs ZW47CisKKyAgICBwYXlsb2FkX3NpemUgPSBnY292X2luZm9fcGF5bG9hZF9zaXplKGluZm8pOwor ICAgIC8qIFBheWxvYWQgc2l6ZSAqLworICAgIGlmICggY29weV90b19ndWVzdF9vZmZzZXQoYnVm ZmVyLCAqb2ZmLCAoY2hhciopJnBheWxvYWRfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIHNpemVvZih1aW50MzJfdCkpICkKKyAgICAgICAgcmV0dXJuIC1FRkFVTFQ7CisgICAg Km9mZiArPSBzaXplb2YodWludDMyX3QpOworCisgICAgLyogUGF5bG9hZCBpdHNlbGYgKi8KKyAg ICByZXR1cm4gZ2Nvdl9pbmZvX2R1bXBfcGF5bG9hZChpbmZvLCBidWZmZXIsIG9mZik7Cit9CisK K3N0YXRpYyBpbnQgZ2Nvdl9kdW1wX2FsbChYRU5fR1VFU1RfSEFORExFX1BBUkFNKGNoYXIpIGJ1 ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCAqYnVmZmVyX3NpemUpCit7 CisgICAgdWludDMyX3Qgb2ZmOworICAgIHVpbnQzMl90IG1hZ2ljID0gWEVOX0dDT1ZfRk9STUFU X01BR0lDOworICAgIHN0cnVjdCBnY292X2luZm8gKmluZm8gPSBOVUxMOworICAgIGludCByZXQ7 CisKKyAgICBpZiAoICpidWZmZXJfc2l6ZSA8IGdjb3ZfZ2V0X3NpemUoKSApCisgICAgeworICAg ICAgICByZXQgPSAtRU5PQlVGUzsKKyAgICAgICAgZ290byBvdXQ7CisgICAgfQorCisgICAgb2Zm ID0gMDsKKworICAgIC8qIE1hZ2ljIG51bWJlciAqLworICAgIGlmICggY29weV90b19ndWVzdF9v ZmZzZXQoYnVmZmVyLCBvZmYsIChjaGFyICopJm1hZ2ljLCBzaXplb2YobWFnaWMpKSApCisgICAg eworICAgICAgICByZXQgPSAtRUZBVUxUOworICAgICAgICBnb3RvIG91dDsKKyAgICB9CisgICAg b2ZmICs9IHNpemVvZihtYWdpYyk7CisKKyAgICB3aGlsZSAoIChpbmZvID0gZ2Nvdl9pbmZvX25l eHQoaW5mbykpICkKKyAgICB7CisgICAgICAgIHJldCA9IGdjb3ZfZHVtcF9vbmVfcmVjb3JkKGlu Zm8sIGJ1ZmZlciwgJm9mZik7CisgICAgICAgIGlmICggcmV0ICkKKyAgICAgICAgICAgIGdvdG8g b3V0OworICAgIH0KKworICAgICpidWZmZXJfc2l6ZSA9IG9mZjsKKworICAgIHJldCA9IDA7Cisg b3V0OgorICAgIHJldHVybiByZXQ7Cit9CisKK2ludCBzeXNjdGxfZ2Nvdl9vcCh4ZW5fc3lzY3Rs X2djb3Zfb3BfdCAqb3ApCit7CisgICAgaW50IHJldDsKKworICAgIHN3aXRjaCAoIG9wLT5jbWQg KQorICAgIHsKKyAgICBjYXNlIFhFTl9TWVNDVExfR0NPVl9nZXRfc2l6ZToKKyAgICAgICAgb3At PnNpemUgPSBnY292X2dldF9zaXplKCk7CisgICAgICAgIHJldCA9IDA7CisgICAgICAgIGJyZWFr OworCisgICAgY2FzZSBYRU5fU1lTQ1RMX0dDT1ZfcmVhZDoKKyAgICB7CisgICAgICAgIFhFTl9H VUVTVF9IQU5ETEVfUEFSQU0oY2hhcikgYnVmOworICAgICAgICB1aW50MzJfdCBzaXplID0gb3At PnNpemU7CisKKyAgICAgICAgYnVmID0gZ3Vlc3RfaGFuZGxlX2Nhc3Qob3AtPmJ1ZmZlciwgY2hh cik7CisKKyAgICAgICAgcmV0ID0gZ2Nvdl9kdW1wX2FsbChidWYsICZzaXplKTsKKyAgICAgICAg b3AtPnNpemUgPSBzaXplOworCisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgWEVO X1NZU0NUTF9HQ09WX3Jlc2V0OgorICAgICAgICBnY292X3Jlc2V0X2FsbF9jb3VudGVycygpOwor ICAgICAgICByZXQgPSAwOworICAgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICAg IHJldCA9IC1FSU5WQUw7CisgICAgICAgIGJyZWFrOworICAgIH0KKworICAgIHJldHVybiByZXQ7 Cit9CisKKy8qCisgKiBMb2NhbCB2YXJpYWJsZXM6CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5 bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9mZnNldDogNAorICogdGFiLXdpZHRoOiA0CisgKiBpbmRl bnQtdGFicy1tb2RlOiBuaWwKKyAqIEVuZDoKKyAqLwpkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9n Y292L2djb3YuaCBiL3hlbi9jb21tb24vZ2Nvdi9nY292LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK aW5kZXggMDAwMDAwMC4uZWZjMWZkNwotLS0gL2Rldi9udWxsCisrKyBiL3hlbi9jb21tb24vZ2Nv di9nY292LmgKQEAgLTAsMCArMSw0MCBAQAorI2lmbmRlZiBfR0NPVl9IXworI2RlZmluZSBfR0NP Vl9IXworCisjaW5jbHVkZSA8eGVuL2d1ZXN0X2FjY2Vzcy5oPgorI2luY2x1ZGUgPHhlbi90eXBl cy5oPgorCisvKgorICogUHJvZmlsaW5nIGRhdGEgdHlwZXMgdXNlZCBmb3IgZ2NjIDMuNCBhbmQg YWJvdmUgLSB0aGVzZSBhcmUgZGVmaW5lZCBieQorICogZ2NjIGFuZCBuZWVkIHRvIGJlIGtlcHQg YXMgY2xvc2UgdG8gdGhlIG9yaWdpbmFsIGRlZmluaXRpb24gYXMgcG9zc2libGUgdG8KKyAqIHJl bWFpbiBjb21wYXRpYmxlLgorICovCisjZGVmaW5lIEdDT1ZfREFUQV9NQUdJQyAgICAgICAgICgo dW5zaWduZWQgaW50KTB4Njc2MzY0NjEpCisjZGVmaW5lIEdDT1ZfVEFHX0ZVTkNUSU9OICAgICAg ICgodW5zaWduZWQgaW50KTB4MDEwMDAwMDApCisjZGVmaW5lIEdDT1ZfVEFHX0NPVU5URVJfQkFT RSAgICgodW5zaWduZWQgaW50KTB4MDFhMTAwMDApCisjZGVmaW5lIEdDT1ZfVEFHX0ZPUl9DT1VO VEVSKGNvdW50KQkJCQlcCisJR0NPVl9UQUdfQ09VTlRFUl9CQVNFICsgKCh1bnNpZ25lZCBpbnQp KGNvdW50KSA8PCAxNykKKworI2RlZmluZSBHQ0NfVkVSU0lPTiAoX19HTlVDX18gKiAxMDAwMCAg ICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgKyBfX0dOVUNfTUlOT1JfXyAqIDEwMCAg ICAgXAorICAgICAgICAgICAgICAgICAgICAgKyBfX0dOVUNfUEFUQ0hMRVZFTF9fKQorCisjaWYg QklUU19QRVJfTE9ORyA+PSA2NAordHlwZWRlZiBsb25nIGdjb3ZfdHlwZTsKKyNlbHNlCit0eXBl ZGVmIGxvbmcgbG9uZyBnY292X3R5cGU7CisjZW5kaWYKKworLyogT3BhcXVlIGdjb3ZfaW5mbyAt LSB0aWVkIHRvIHNwZWNpZmljIGdjYyBnY292IGZvcm1hdHMgKi8KK3N0cnVjdCBnY292X2luZm87 CisKK3ZvaWQgZ2Nvdl9pbmZvX2xpbmsoc3RydWN0IGdjb3ZfaW5mbyAqaW5mbyk7CitzdHJ1Y3Qg Z2Nvdl9pbmZvICpnY292X2luZm9fbmV4dChjb25zdCBzdHJ1Y3QgZ2Nvdl9pbmZvICppbmZvKTsK K3ZvaWQgZ2Nvdl9pbmZvX3Jlc2V0KHN0cnVjdCBnY292X2luZm8gKmluZm8pOworY29uc3QgY2hh ciAqZ2Nvdl9pbmZvX2ZpbGVuYW1lKGNvbnN0IHN0cnVjdCBnY292X2luZm8gKmluZm8pOworc2l6 ZV90IGdjb3ZfaW5mb190b19nY2RhKGNoYXIgKmJ1ZmZlciwgY29uc3Qgc3RydWN0IGdjb3ZfaW5m byAqaW5mbyk7CisKK3NpemVfdCBnY292X3N0b3JlX3VpbnQzMih2b2lkICpidWZmZXIsIHNpemVf dCBvZmYsIHVpbnQzMl90IHYpOworc2l6ZV90IGdjb3Zfc3RvcmVfdWludDY0KHZvaWQgKmJ1ZmZl ciwgc2l6ZV90IG9mZiwgdWludDY0X3Qgdik7CisKKyNlbmRpZgkvKiBfR0NPVl9IXyAqLwpkaWZm IC0tZ2l0IGEveGVuL2NvbW1vbi9nY292L2djb3ZfYmFzZS5jIGIveGVuL2NvbW1vbi9nY292L2dj b3ZfYmFzZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1MDY1ZGIKLS0t IC9kZXYvbnVsbAorKysgYi94ZW4vY29tbW9uL2djb3YvZ2Nvdl9iYXNlLmMKQEAgLTAsMCArMSw2 MCBAQAorLyoKKyAqIENvbW1vbiBjb2RlIGFjcm9zcyBnY292IGltcGxlbWVudGF0aW9ucworICoK KyAqIENvcHlyaWdodCBDaXRyaXggU3lzdGVtcyBSJkQgVUsKKyAqIEF1dGhvcihzKTogV2VpIExp dSA8d2VpLmxpdTJAY2l0cml4LmNvbT4KKyAqCisgKiAgICBVc2VzIGdjYy1pbnRlcm5hbCBkYXRh IGRlZmluaXRpb25zLgorICogICAgQmFzZWQgb24gdGhlIGdjb3Yta2VybmVsIHBhdGNoIGJ5Ogor ICogICAgICAgSHViZXJ0dXMgRnJhbmtlIDxmcmFua2VoQHVzLmlibS5jb20+CisgKiAgICAgICBO aWdlbCBIaW5kcyA8bmhpbmRzQHVzLmlibS5jb20+CisgKiAgICAgICBSYWphbiBSYXZpbmRyYW4g PHJhamFuY3JAdXMuaWJtLmNvbT4KKyAqICAgICAgIFBldGVyIE9iZXJwYXJsZWl0ZXIgPG9iZXJw YXJAbGludXgudm5ldC5pYm0uY29tPgorICogICAgICAgUGF1bCBMYXJzb24KKyAqLworCisjaW5j bHVkZSAiZ2Nvdi5oIgorCisvKgorICogX19nY292X2luaXQgaXMgY2FsbGVkIGJ5IGdjYy1nZW5l cmF0ZWQgY29uc3RydWN0b3IgY29kZSBmb3IgZWFjaCBvYmplY3QKKyAqIGZpbGUgY29tcGlsZWQg d2l0aCAtZnByb2ZpbGUtYXJjcy4KKyAqLwordm9pZCBfX2luaXQgX19nY292X2luaXQoc3RydWN0 IGdjb3ZfaW5mbyAqaW5mbykKK3sKKyAgICAvKiBMaW5rIGFsbCBnY292IGluZm8gdG9nZXRoZXIu ICovCisgICAgZ2Nvdl9pbmZvX2xpbmsoaW5mbyk7Cit9CisKKy8qCisgKiBUaGVzZSBmdW5jdGlv bnMgbWF5IGJlIHJlZmVyZW5jZWQgYnkgZ2NjLWdlbmVyYXRlZCBwcm9maWxpbmcgY29kZSBidXQg c2VydmUKKyAqIG5vIGZ1bmN0aW9uIGZvciBYZW4uCisgKi8KK3ZvaWQgX19nY292X2ZsdXNoKHZv aWQpCit7CisgICAgLyogVW51c2VkLiAqLworfQorCit2b2lkIF9fZ2Nvdl9tZXJnZV9hZGQoZ2Nv dl90eXBlICpjb3VudGVycywgdW5zaWduZWQgaW50IG5fY291bnRlcnMpCit7CisgICAgLyogVW51 c2VkLiAqLworfQorCit2b2lkIF9fZ2Nvdl9tZXJnZV9zaW5nbGUoZ2Nvdl90eXBlICpjb3VudGVy cywgdW5zaWduZWQgaW50IG5fY291bnRlcnMpCit7CisgICAgLyogVW51c2VkLiAqLworfQorCit2 b2lkIF9fZ2Nvdl9tZXJnZV9kZWx0YShnY292X3R5cGUgKmNvdW50ZXJzLCB1bnNpZ25lZCBpbnQg bl9jb3VudGVycykKK3sKKyAgICAvKiBVbnVzZWQuICovCit9CisKKy8qCisgKiBMb2NhbCB2YXJp YWJsZXM6CisgKiBtb2RlOiBDCisgKiBjLWZpbGUtc3R5bGU6ICJCU0QiCisgKiBjLWJhc2ljLW9m ZnNldDogNAorICogdGFiLXdpZHRoOiA0CisgKiBpbmRlbnQtdGFicy1tb2RlOiBuaWwKKyAqIEVu ZDoKKyAqLwpkaWZmIC0tZ2l0IGEveGVuL2NvbW1vbi9zeXNjdGwuYyBiL3hlbi9jb21tb24vc3lz Y3RsLmMKaW5kZXggMmNhYzQ1MS4uMDNjY2E1YyAxMDA2NDQKLS0tIGEveGVuL2NvbW1vbi9zeXNj dGwuYworKysgYi94ZW4vY29tbW9uL3N5c2N0bC5jCkBAIC0yOCw2ICsyOCw3IEBACiAjaW5jbHVk ZSA8eHNtL3hzbS5oPgogI2luY2x1ZGUgPHhlbi9wbXN0YXQuaD4KICNpbmNsdWRlIDx4ZW4vbGl2 ZXBhdGNoLmg+CisjaW5jbHVkZSA8eGVuL2djb3YuaD4KIAogbG9uZyBkb19zeXNjdGwoWEVOX0dV RVNUX0hBTkRMRV9QQVJBTSh4ZW5fc3lzY3RsX3QpIHVfc3lzY3RsKQogewpAQCAtMzk1LDYgKzM5 NiwxMyBAQCBsb25nIGRvX3N5c2N0bChYRU5fR1VFU1RfSEFORExFX1BBUkFNKHhlbl9zeXNjdGxf dCkgdV9zeXNjdGwpCiAgICAgfQogICAgIGJyZWFrOwogCisjaWZkZWYgQ09ORklHX0dDT1YKKyAg ICBjYXNlIFhFTl9TWVNDVExfZ2Nvdl9vcDoKKyAgICAgICAgcmV0ID0gc3lzY3RsX2djb3Zfb3Ao Jm9wLT51Lmdjb3Zfb3ApOworICAgICAgICBjb3B5YmFjayA9IDE7CisgICAgICAgIGJyZWFrOwor I2VuZGlmCisKICNpZmRlZiBDT05GSUdfSEFTX1BDSQogICAgIGNhc2UgWEVOX1NZU0NUTF9wY2l0 b3BvaW5mbzoKICAgICB7CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS9wdWJsaWMvc3lzY3RsLmgg Yi94ZW4vaW5jbHVkZS9wdWJsaWMvc3lzY3RsLmgKaW5kZXggYTkzOWZhOS4uMjhhYzU2YyAxMDA2 NDQKLS0tIGEveGVuL2luY2x1ZGUvcHVibGljL3N5c2N0bC5oCisrKyBiL3hlbi9pbmNsdWRlL3B1 YmxpYy9zeXNjdGwuaApAQCAtMzYsNyArMzYsNyBAQAogI2luY2x1ZGUgInBoeXNkZXYuaCIKICNp bmNsdWRlICJ0bWVtLmgiCiAKLSNkZWZpbmUgWEVOX1NZU0NUTF9JTlRFUkZBQ0VfVkVSU0lPTiAw eDAwMDAwMDBFCisjZGVmaW5lIFhFTl9TWVNDVExfSU5URVJGQUNFX1ZFUlNJT04gMHgwMDAwMDAw RgogCiAvKgogICogUmVhZCBjb25zb2xlIGNvbnRlbnQgZnJvbSBYZW4gYnVmZmVyIHJpbmcuCkBA IC02NjUsNiArNjY1LDQwIEBAIHN0cnVjdCB4ZW5fc3lzY3RsX3NjaGVkdWxlcl9vcCB7CiB0eXBl ZGVmIHN0cnVjdCB4ZW5fc3lzY3RsX3NjaGVkdWxlcl9vcCB4ZW5fc3lzY3RsX3NjaGVkdWxlcl9v cF90OwogREVGSU5FX1hFTl9HVUVTVF9IQU5ETEUoeGVuX3N5c2N0bF9zY2hlZHVsZXJfb3BfdCk7 CiAKKy8qCisgKiBPdXRwdXQgZm9ybWF0IG9mIGdjb3YgZGF0YToKKyAqCisgKiBYRU5fR0NPVl9G T1JNQVRfTUFHSUMgWEVOX0dDT1ZfUkVDT1JEIC4uLiBYRU5fR0NPVl9SRUNPUkQKKyAqCisgKiBU aGF0IGlzLCBvbmUgbWFnaWMgbnVtYmVyIGZvbGxvd2VkIGJ5IDAgb3IgbW9yZSByZWNvcmQuCisg KgorICogVGhlIG1hZ2ljIG51bWJlciBpcyBzdG9yZWQgYXMgYW4gdWludDMyX3QgZmllbGQuCisg KgorICogVGhlIHJlY29yZCBpcyBwYWNrZWQgYW5kIHZhcmlhYmxlIGluIGxlbmd0aC4gSXQgaGFz IHRoZSBmb3JtOgorICoKKyAqICBmaWxlbmFtZTogYSBOVUxMIHRlcm1pbmF0ZWQgcGF0aCBuYW1l IGV4dHJhY3RlZCBmcm9tIGdjb3YsIHVzZWQgdG8KKyAqICAgICAgICAgICAgY3JlYXRlIHRoZSBu YW1lIG9mIGdjZGEgZmlsZS4KKyAqICBzaXplOiAgICAgYSB1aW50MzJfdCBmaWVsZCBpbmRpY2F0 aW5nIHRoZSBzaXplIG9mIHRoZSBwYXlsb2FkLCB0aGUKKyAqICAgICAgICAgICAgdW5pdCBpcyBi eXRlLgorICogIHBheWxvYWQ6ICB0aGUgYWN0dWFsIHBheWxvYWQsIGxlbmd0aCBpcyBgc2l6ZScg Ynl0ZXMuCisgKgorICogVXNlcnNwYWNlIHRvb2wgd2lsbCBzcGxpdCB0aGUgcmVjb3JkIHRvIGRp ZmZlcmVudCBmaWxlcy4KKyAqLworCisjZGVmaW5lIFhFTl9HQ09WX0ZPUk1BVF9NQUdJQyAgICAw eDU4NDM0ZjU2IC8qIFhDT1YgKi8KKworI2RlZmluZSBYRU5fU1lTQ1RMX0dDT1ZfZ2V0X3NpemUg MCAvKiBHZXQgdG90YWwgc2l6ZSBvZiBvdXRwdXQgZGF0YSAqLworI2RlZmluZSBYRU5fU1lTQ1RM X0dDT1ZfcmVhZCAgICAgMSAvKiBSZWFkIG91dHB1dCBkYXRhICovCisjZGVmaW5lIFhFTl9TWVND VExfR0NPVl9yZXNldCAgICAyIC8qIFJlc2V0IGFsbCBjb3VudGVycyAqLworCitzdHJ1Y3QgeGVu X3N5c2N0bF9nY292X29wIHsKKyAgICB1aW50MzJfdCBjbWQ7CisgICAgdWludDMyX3Qgc2l6ZTsg LyogSU4vT1VUOiBzaXplIG9mIHRoZSBidWZmZXIgICovCisgICAgWEVOX0dVRVNUX0hBTkRMRV82 NChjaGFyKSBidWZmZXI7IC8qIE9VVCAqLworfTsKK3R5cGVkZWYgc3RydWN0IHhlbl9zeXNjdGxf Z2Nvdl9vcCB4ZW5fc3lzY3RsX2djb3Zfb3BfdDsKK0RFRklORV9YRU5fR1VFU1RfSEFORExFKHhl bl9zeXNjdGxfZ2Nvdl9vcF90KTsKKwogI2RlZmluZSBYRU5fU1lTQ1RMX1BTUl9DTVRfZ2V0X3Rv dGFsX3JtaWQgICAgICAgICAgICAwCiAjZGVmaW5lIFhFTl9TWVNDVExfUFNSX0NNVF9nZXRfbDNf dXBzY2FsaW5nX2ZhY3RvciAgIDEKIC8qIFRoZSBMMyBjYWNoZSBzaXplIGlzIHJldHVybmVkIGlu IEtCIHVuaXQgKi8KQEAgLTEwNzMsNyArMTEwNyw3IEBAIHN0cnVjdCB4ZW5fc3lzY3RsIHsKICNk ZWZpbmUgWEVOX1NZU0NUTF9udW1haW5mbyAgICAgICAgICAgICAgICAgICAgICAxNwogI2RlZmlu ZSBYRU5fU1lTQ1RMX2NwdXBvb2xfb3AgICAgICAgICAgICAgICAgICAgIDE4CiAjZGVmaW5lIFhF Tl9TWVNDVExfc2NoZWR1bGVyX29wICAgICAgICAgICAgICAgICAgMTkKLS8qICNkZWZpbmUgWEVO X1NZU0NUTF9jb3ZlcmFnZV9vcCAgICAgICAgICAgICAgICAgICAyMCAqLworI2RlZmluZSBYRU5f U1lTQ1RMX2djb3Zfb3AgICAgICAgICAgICAgICAgICAgICAgIDIwCiAjZGVmaW5lIFhFTl9TWVND VExfcHNyX2NtdF9vcCAgICAgICAgICAgICAgICAgICAgMjEKICNkZWZpbmUgWEVOX1NZU0NUTF9w Y2l0b3BvaW5mbyAgICAgICAgICAgICAgICAgICAyMgogI2RlZmluZSBYRU5fU1lTQ1RMX3Bzcl9j YXRfb3AgICAgICAgICAgICAgICAgICAgIDIzCkBAIC0xMTAyLDYgKzExMzYsNyBAQCBzdHJ1Y3Qg eGVuX3N5c2N0bCB7CiAgICAgICAgIHN0cnVjdCB4ZW5fc3lzY3RsX2xvY2twcm9mX29wICAgICAg IGxvY2twcm9mX29wOwogICAgICAgICBzdHJ1Y3QgeGVuX3N5c2N0bF9jcHVwb29sX29wICAgICAg ICBjcHVwb29sX29wOwogICAgICAgICBzdHJ1Y3QgeGVuX3N5c2N0bF9zY2hlZHVsZXJfb3AgICAg ICBzY2hlZHVsZXJfb3A7CisgICAgICAgIHN0cnVjdCB4ZW5fc3lzY3RsX2djb3Zfb3AgICAgICAg ICAgIGdjb3Zfb3A7CiAgICAgICAgIHN0cnVjdCB4ZW5fc3lzY3RsX3Bzcl9jbXRfb3AgICAgICAg IHBzcl9jbXRfb3A7CiAgICAgICAgIHN0cnVjdCB4ZW5fc3lzY3RsX3Bzcl9jYXRfb3AgICAgICAg IHBzcl9jYXRfb3A7CiAgICAgICAgIHN0cnVjdCB4ZW5fc3lzY3RsX3RtZW1fb3AgICAgICAgICAg IHRtZW1fb3A7CmRpZmYgLS1naXQgYS94ZW4vaW5jbHVkZS94ZW4vZ2Nvdi5oIGIveGVuL2luY2x1 ZGUveGVuL2djb3YuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YjVkOTE0 Ci0tLSAvZGV2L251bGwKKysrIGIveGVuL2luY2x1ZGUveGVuL2djb3YuaApAQCAtMCwwICsxLDkg QEAKKyNpZm5kZWYgX1hFTl9HQ09WX0gKKyNkZWZpbmUgX1hFTl9HQ09WX0gKKworI2lmZGVmIENP TkZJR19HQ09WCisjaW5jbHVkZSA8cHVibGljL3N5c2N0bC5oPgoraW50IHN5c2N0bF9nY292X29w KHhlbl9zeXNjdGxfZ2Nvdl9vcF90ICpvcCk7CisjZW5kaWYKKworI2VuZGlmCS8qIF9YRU5fR0NP Vl9IICovCi0tIAoyLjEuNAoKCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fClhlbi1kZXZlbCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcK aHR0cHM6Ly9saXN0cy54ZW4ub3JnL3hlbi1kZXZlbAo=