From mboxrd@z Thu Jan 1 00:00:00 1970 From: Boris Ostrovsky Subject: [PATCH v6] acpi: Prevent GPL-only code from seeping into non-GPL binaries Date: Fri, 23 Sep 2016 15:14:20 -0400 Message-ID: <1474658060-6449-1-git-send-email-boris.ostrovsky@oracle.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen-devel@lists.xen.org Cc: wei.liu2@citrix.com, andrew.cooper3@citrix.com, ian.jackson@eu.citrix.com, julien.grall@arm.com, jbeulich@suse.com, zhaoshenglong@huawei.com, Boris Ostrovsky , roger.pau@citrix.com List-Id: xen-devel@lists.xenproject.org U29tZSBjb2RlIChzcGVjaWZpY2FsbHksIGludHJvZHVjZWQgYnkgY29tbWl0IDgwMWQ0NjlhZCAo IltIVk1dIEFDUEkKc3VwcG9ydCBwYXRjaCAzIG9mIDQ6IEFDUEkgX1BSVCB0YWJsZS4iKSkgaGFz IG9ubHkgYmVlbiBsaWNlbnNlZCB1bmRlcgpHUEx2Mi4gV2Ugd2FudCB0byBwcmV2ZW50IHRoaXMg Y29kZSBmcm9tIHNob3dpbmcgdXAgaW4gbm9uLUdQTApiaW5hcmllcyB3aGljaCBtaWdodCBiZWNv bWUgcG9zc2libGUgYWZ0ZXIgd2UgbWFrZSBBQ1BJIGJ1aWxkZXIgY29kZQphdmFpbGFibGUgdG8g dXNlcnMgb3RoZXIgdGhhbiBodm1sb2FkZXIuCgpUaGVyZSBhcmUgdHdvIHBpZWNlcyB0aGF0IHdl IG5lZWQgdG8gYmUgY2FyZWZ1bCBhYm91dDoKKDEpIEEgc21hbGwgY2h1bmsgb2YgY29kZSBpbiBk c2R0LmFzbCB0aGF0IGltcGxlbWVudHMgX1BJQyBtZXRob2QKKDIpIEEgY2h1bmsgb2YgQVNMIGdl bmVyYXRvciBpbiBta19kc2R0LmMgdGhhdCBkZXNjcmliZXMgd2l0aCBQQ0kKICAgIGludGVycnVw dCByb3V0aW5nLgoKVGhpcyBjb2RlIHdpbGwgbm93IGJlIGdlbmVyYXRlZCBieSBhIEdQTC1vbmx5 IHNjcmlwdCB3aGljaCB3aWxsIGJlCmludm9rZWQgb25seSB3aGVuIEFDUEkgYnVpbGRlcidzIE1h a2VmaWxlIGlzIGNhbGxlZCB3aXRoIEdQTCB2YXJpYWJsZQpzZXQuCgpXZSBhbHNvIHN0cmlwIGxp Y2Vuc2UgaGVhZGVyIGZyb20gZ2VuZXJhdGVkIEFTTCBmaWxlcyB0byBwcmV2ZW50CmluYWR2ZXJl bnQgdXNlIG9mIHRob3NlIGZpbGVzIHdpdGggaW5jb3JyZWN0IGxpY2Vuc2UuCgpTaWduZWQtb2Zm LWJ5OiBCb3JpcyBPc3Ryb3Zza3kgPGJvcmlzLm9zdHJvdnNreUBvcmFjbGUuY29tPgotLS0KQ2hh bmdlcyBpbiB2NjoKKiBSZXBsYWNlZCBzY3JpcHQncyBwcmludGYgaW4gbW9zdCBjYXNlIHdpdGgg ImhlcmUgZG9jdW1lbnQiIChmb3IgbXVsdGktbGluZQogIHRleHQpIG9yIGVjaG8gZm9yIHNpbmds ZSBsaW5lLiBMZWZ0IHByaW50ZiBmb3IgZm9ybWF0dGVkIG91dHB1dC4KICAoTm90ZSB0aGF0IGlu IG9uZSBjYXNlIHBhcmFtdGVyIGV4cGFuc2lvbiBpcyBuZWNlc3NhcnkgYW5kIHNvCiAgIGRlbGlt aXRlciB3b3JkIGlzIGludGVudGlvbmFsbHkgbm90IHF1b3RlZCkuCiogUmVwbGFjZWQgYmFzaCBh cnJheXMgd2l0aCAke3N0cmluZzppbmRleDpzaXplfSBzeW50YXguCiogU3R5bGUgYWRqdXN0bWVu dHMgYXMgcmVxdWVzdGVkIGJ5IEphbi4KCkkgYW0gc2VuZGluZyBvbmx5IHRoaXMgcGF0Y2ggZnJv bSBzZXJpZXMuIEEgY291cGxlIG9mIHBhdGNoZXMgYXJlIGFmZmVjdGVkCmJ5IGNoYW5nZXMgaGVy ZS4gSSB3aWxsIHJlLXNlbmQgdGhlIHdob2xlIHNlcmllcyBpZiBuZWVkZWQuCgogdG9vbHMvZmly bXdhcmUvaHZtbG9hZGVyL01ha2VmaWxlICAgICAgICAgICAgICAgIHwgICAzICsKIHRvb2xzL2Zp cm13YXJlL2h2bWxvYWRlci9hY3BpL01ha2VmaWxlICAgICAgICAgICB8ICAxNCArKy0KIHRvb2xz L2Zpcm13YXJlL2h2bWxvYWRlci9hY3BpL2RzZHQuYXNsICAgICAgICAgICB8ICAxNCAtLS0KIHRv b2xzL2Zpcm13YXJlL2h2bWxvYWRlci9hY3BpL2dwbC9ta19kc2R0X2dwbC5zaCB8IDExNiArKysr KysrKysrKysrKysrKysrKysrKwogdG9vbHMvZmlybXdhcmUvaHZtbG9hZGVyL2FjcGkvbWtfZHNk dC5jICAgICAgICAgIHwgIDY4ICstLS0tLS0tLS0tLS0KIDUgZmlsZXMgY2hhbmdlZCwgMTMxIGlu c2VydGlvbnMoKyksIDg0IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNzU1IHRvb2xzL2Zp cm13YXJlL2h2bWxvYWRlci9hY3BpL2dwbC9ta19kc2R0X2dwbC5zaAoKZGlmZiAtLWdpdCBhL3Rv b2xzL2Zpcm13YXJlL2h2bWxvYWRlci9NYWtlZmlsZSBiL3Rvb2xzL2Zpcm13YXJlL2h2bWxvYWRl ci9NYWtlZmlsZQppbmRleCA5ZjczNTdmLi5hMTg0NGQwIDEwMDY0NAotLS0gYS90b29scy9maXJt d2FyZS9odm1sb2FkZXIvTWFrZWZpbGUKKysrIGIvdG9vbHMvZmlybXdhcmUvaHZtbG9hZGVyL01h a2VmaWxlCkBAIC02NSw2ICs2NSw5IEBAIFJPTUJJT1NfUk9NIDo9ICQoUk9NQklPU19ESVIpL0JJ T1MtYm9jaHMtbGF0ZXN0CiBST01TICs9ICQoUk9NQklPU19ST00pICQoU1REVkdBX1JPTSkgJChD SVJSVVNWR0FfUk9NKSAkKEVUSEVSQk9PVF9ST01TKQogZW5kaWYKIAorIyBDZXJ0YWluIHBhcnRz IG9mIEFDUEkgYnVpbGRlciBhcmUgR1BMLW9ubHkKK2V4cG9ydCBHUEwgOj0geQorCiAuUEhPTlk6 IGFsbAogYWxsOiBzdWJkaXJzLWFsbAogCSQoTUFLRSkgaHZtbG9hZGVyCmRpZmYgLS1naXQgYS90 b29scy9maXJtd2FyZS9odm1sb2FkZXIvYWNwaS9NYWtlZmlsZSBiL3Rvb2xzL2Zpcm13YXJlL2h2 bWxvYWRlci9hY3BpL01ha2VmaWxlCmluZGV4IGY2M2U3MzQuLmMyMzYyNmQgMTAwNjQ0Ci0tLSBh L3Rvb2xzL2Zpcm13YXJlL2h2bWxvYWRlci9hY3BpL01ha2VmaWxlCisrKyBiL3Rvb2xzL2Zpcm13 YXJlL2h2bWxvYWRlci9hY3BpL01ha2VmaWxlCkBAIC0xNyw3ICsxNyw4IEBACiBYRU5fUk9PVCA9 ICQoQ1VSRElSKS8uLi8uLi8uLi8uLgogaW5jbHVkZSAkKFhFTl9ST09UKS90b29scy9maXJtd2Fy ZS9SdWxlcy5tawogCi1DX1NSQyA9IGJ1aWxkLmMgZHNkdF9hbnljcHUuYyBkc2R0XzE1Y3B1LmMg c3RhdGljX3RhYmxlcy5jIGRzZHRfYW55Y3B1X3FlbXVfeGVuLmMKK0NfU1JDLSQoR1BMKSA9IGJ1 aWxkLmMgZHNkdF9hbnljcHUuYyBkc2R0XzE1Y3B1LmMgZHNkdF9hbnljcHVfcWVtdV94ZW4uYwor Q19TUkMgPSBidWlsZC5jIHN0YXRpY190YWJsZXMuYyAkKENfU1JDLXkpCiBPQkpTICA9ICQocGF0 c3Vic3QgJS5jLCUubywkKENfU1JDKSkKIAogQ0ZMQUdTICs9ICQoQ0ZMQUdTX3hlbmluY2x1ZGUp CkBAIC0zNiwxOCArMzcsMjUgQEAgc3NkdF9zMy5oIHNzZHRfczQuaCBzc2R0X3BtLmggc3NkdF90 cG0uaDogJS5oOiAlLmFzbCBpYXNsCiBta19kc2R0OiBta19kc2R0LmMKIAkkKEhPU1RDQykgJChI T1NUQ0ZMQUdTKSAkKENGTEFHU194ZW5pbmNsdWRlKSAtbyAkQCBta19kc2R0LmMKIAotZHNkdF9h bnljcHVfcWVtdV94ZW4uYXNsOiBkc2R0LmFzbCBkc2R0X2FjcGlfaW5mby5hc2wgbWtfZHNkdAor aWZlcSAoJChHUEwpLHkpCitkc2R0X2FueWNwdV9xZW11X3hlbi5hc2w6IGRzZHQuYXNsIGRzZHRf YWNwaV9pbmZvLmFzbCBncGwvbWtfZHNkdF9ncGwuc2ggbWtfZHNkdAogCWF3ayAnTlIgPiAxIHtw cmludCBzfSB7cz0kJDB9JyAkPCA+ICRALiQoVE1QX1NVRkZJWCkKKwkjIFN0cmlwIGxpY2Vuc2Ug Y29tbWVudAorCXNlZCAtaSAnMSwvXCpcLy97L1wvXCovLC9cKlwvL2R9JyAkQC4kKFRNUF9TVUZG SVgpCisJJChTSEVMTCkgZ3BsL21rX2RzZHRfZ3BsLnNoID4+ICRALiQoVE1QX1NVRkZJWCkKIAlj YXQgZHNkdF9hY3BpX2luZm8uYXNsID4+ICRALiQoVE1QX1NVRkZJWCkKIAkuL21rX2RzZHQgLS1k ZWJ1Zz0kKGRlYnVnKSAtLWRtLXZlcnNpb24gcWVtdS14ZW4gPj4gJEAuJChUTVBfU1VGRklYKQog CW12IC1mICRALiQoVE1QX1NVRkZJWCkgJEAKIAogIyBOQi4gYXdrIGludm9jYXRpb24gaXMgYSBw b3J0YWJsZSBhbHRlcm5hdGl2ZSB0byAnaGVhZCAtbiAtMScKLWRzZHRfJWNwdS5hc2w6IGRzZHQu YXNsIGRzZHRfYWNwaV9pbmZvLmFzbCBta19kc2R0Citkc2R0XyVjcHUuYXNsOiBkc2R0LmFzbCBk c2R0X2FjcGlfaW5mby5hc2wgZ3BsL21rX2RzZHRfZ3BsLnNoIG1rX2RzZHQKIAlhd2sgJ05SID4g MSB7cHJpbnQgc30ge3M9JCQwfScgJDwgPiAkQC4kKFRNUF9TVUZGSVgpCisJc2VkIC1pICcxLC9c KlwvL3svXC9cKi8sL1wqXC8vZH0nICRALiQoVE1QX1NVRkZJWCkKKwkkKFNIRUxMKSBncGwvbWtf ZHNkdF9ncGwuc2ggPj4gJEAuJChUTVBfU1VGRklYKQogCWNhdCBkc2R0X2FjcGlfaW5mby5hc2wg Pj4gJEAuJChUTVBfU1VGRklYKQogCS4vbWtfZHNkdCAtLWRlYnVnPSQoZGVidWcpIC0tbWF4Y3B1 ICQqICA+PiAkQC4kKFRNUF9TVUZGSVgpCiAJbXYgLWYgJEAuJChUTVBfU1VGRklYKSAkQAorZW5k aWYKIAogJChmaWx0ZXIgZHNkdF8lLmMsJChDX1NSQykpOiAlLmM6IGlhc2wgJS5hc2wKIAlpYXNs IC12cyAtcCAkKiAtdGMgJCouYXNsCmRpZmYgLS1naXQgYS90b29scy9maXJtd2FyZS9odm1sb2Fk ZXIvYWNwaS9kc2R0LmFzbCBiL3Rvb2xzL2Zpcm13YXJlL2h2bWxvYWRlci9hY3BpL2RzZHQuYXNs CmluZGV4IDRmNmRiNzkuLjEzODExY2YgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2Zpcm13YXJlL2h2bWxv YWRlci9hY3BpL2RzZHQuYXNsCisrKyBiL3Rvb2xzL2Zpcm13YXJlL2h2bWxvYWRlci9hY3BpL2Rz ZHQuYXNsCkBAIC0yNiwyMCArMjYsNiBAQCBEZWZpbml0aW9uQmxvY2sgKCJEU0RULmFtbCIsICJE U0RUIiwgMiwgIlhlbiIsICJIVk0iLCAwKQogICAgIE5hbWUgKFxBUENMLCAweDAwMDEwMDAwKQog ICAgIE5hbWUgKFxQVUlELCAweDAwKQogCi0gICAgLyogX1MzIGFuZCBfUzQgYXJlIGluIHNlcGFy YXRlIFNTRFRzICovCi0gICAgTmFtZSAoXF9TNSwgUGFja2FnZSAoMHgwNCkKLSAgICB7Ci0gICAg ICAgIDB4MDAsICAvKiBQTTFhX0NOVC5TTFBfVFlQICovCi0gICAgICAgIDB4MDAsICAvKiBQTTFi X0NOVC5TTFBfVFlQICovCi0gICAgICAgIDB4MDAsICAvKiByZXNlcnZlZCAqLwotICAgICAgICAw eDAwICAgLyogcmVzZXJ2ZWQgKi8KLSAgICB9KQotCi0gICAgTmFtZShQSUNELCAwKQotICAgIE1l dGhvZChfUElDLCAxKQotICAgIHsKLSAgICAgICAgU3RvcmUoQXJnMCwgUElDRCkgCi0gICAgfQog CiAgICAgU2NvcGUgKFxfU0IpCiAgICAgewpkaWZmIC0tZ2l0IGEvdG9vbHMvZmlybXdhcmUvaHZt bG9hZGVyL2FjcGkvZ3BsL21rX2RzZHRfZ3BsLnNoIGIvdG9vbHMvZmlybXdhcmUvaHZtbG9hZGVy L2FjcGkvZ3BsL21rX2RzZHRfZ3BsLnNoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAw MDAuLjI4YTBkZDcKLS0tIC9kZXYvbnVsbAorKysgYi90b29scy9maXJtd2FyZS9odm1sb2FkZXIv YWNwaS9ncGwvbWtfZHNkdF9ncGwuc2gKQEAgLTAsMCArMSwxMTYgQEAKKyMgVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkg aXQKKyMgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBHTlUgR2VuZXJhbCBQ dWJsaWMgTGljZW5zZSwKKyMgdmVyc2lvbiAyLCBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbi4KKyMKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRo ZSBob3BlIGl0IHdpbGwgYmUgdXNlZnVsLCBidXQgV0lUSE9VVAorIyBBTlkgV0FSUkFOVFk7IHdp dGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IKKyMg RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBHZW5lcmFsIFB1 YmxpYyBMaWNlbnNlIGZvcgorIyBtb3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSBy ZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdp dGgKKyMgdGhpcyBwcm9ncmFtOyBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vu c2VzLz4uCisjCisKK2NhdCA8PCdFbmRPZkFTTCcKKyAgICAvKiBCZWdpbm5pbmcgb2YgR1BMLW9u bHkgY29kZSAqLworCisgICAgLyogX1MzIGFuZCBfUzQgYXJlIGluIHNlcGFyYXRlIFNTRFRzICov CisgICAgTmFtZSAoXF9TNSwgUGFja2FnZSAoMHgwNCkgeworICAgICAgICAweDAwLCAgLyogUE0x YV9DTlQuU0xQX1RZUCAqLworICAgICAgICAweDAwLCAgLyogUE0xYl9DTlQuU0xQX1RZUCAqLwor ICAgICAgICAweDAwLCAgLyogcmVzZXJ2ZWQgKi8KKyAgICAgICAgMHgwMCAgIC8qIHJlc2VydmVk ICovCisgICAgfSkKKyAgICBOYW1lKFBJQ0QsIDApCisgICAgTWV0aG9kKF9QSUMsIDEpIHsKKyAg ICAgICAgU3RvcmUoQXJnMCwgUElDRCkKKyAgICB9CitFbmRPZkFTTAorCisjIFBDSS1JU0EgbGlu ayBkZWZpbml0aW9ucworIyBCVUZBOiBMaXN0IG9mIElTQSBJUlFzIGF2YWlsYWJsZSBmb3IgbGlu a2luZyB0byBQQ0kgSU5UeC4KKyMgQlVGQjogSVJRIGRlc2NyaXB0b3IgZm9yIHJldHVybmluZyBm cm9tIGxpbmstZGV2aWNlIF9DUlMgbWV0aG9kcy4KK2NhdCA8PCdFbmRPZkFTTCcKKyAgICBTY29w ZSAoIFxfU0IuUENJMCApICB7CisgICAgICAgIE5hbWUgKCBCVUZBLCBSZXNvdXJjZVRlbXBsYXRl KCkgeyBJUlEoTGV2ZWwsIEFjdGl2ZUxvdywgU2hhcmVkKSB7IDUsIDEwLCAxMSB9IH0gKQorICAg ICAgICBOYW1lICggQlVGQiwgQnVmZmVyKCkgeyAweDIzLCAweDAwLCAweDAwLCAweDE4LCAweDc5 LCAwIH0gKQorICAgICAgICBDcmVhdGVXb3JkRmllbGQgKCBCVUZCLCAweDAxLCBJUlFWICkKK0Vu ZE9mQVNMCisKK2xpbmtzPSJBQkNEIgorCitmb3IgaSBpbiAkKHNlcSAwIDMpCitkbworICAgIGxp bms9JHtsaW5rczokaToxfQorICAgIGNhdCA8PEVuZE9mQVNMCisgICAgICAgIERldmljZSAoIExO SyRsaW5rICkgeworICAgICAgICAgICAgTmFtZSAoIF9ISUQsICBFSVNBSUQoIlBOUDBDMEYiKSAp CisgICAgICAgICAgICBOYW1lICggX1VJRCwgJCgoaSsxKSkpCisgICAgICAgICAgICBNZXRob2Qg KCBfU1RBLCAwKSB7CisgICAgICAgICAgICAgICAgSWYgKCBBbmQoUElSJGxpbmssIDB4ODApICkg eworICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKCAweDA5ICkKKyAgICAgICAgICAgICAgICB9 IEVsc2UgeworICAgICAgICAgICAgICAgICAgICBSZXR1cm4gKCAweDBCICkKKyAgICAgICAgICAg ICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBNZXRob2QgKCBfUFJTICkgeworICAg ICAgICAgICAgICAgIFJldHVybiAoIEJVRkEgKQorICAgICAgICAgICAgfQorICAgICAgICAgICAg TWV0aG9kICggX0RJUyApIHsKKyAgICAgICAgICAgICAgICBPciAoIFBJUiRsaW5rLCAweDgwLCBQ SVIkbGluayApCisgICAgICAgICAgICB9CisgICAgICAgICAgICBNZXRob2QgKCBfQ1JTICkgewor ICAgICAgICAgICAgICAgIEFuZCAoIFBJUiRsaW5rLCAweDBmLCBMb2NhbDAgKQorICAgICAgICAg ICAgICAgIFNoaWZ0TGVmdCAoIDB4MSwgTG9jYWwwLCBJUlFWICkKKyAgICAgICAgICAgICAgICBS ZXR1cm4gKCBCVUZCICkKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIE1ldGhvZCAoIF9TUlMs IDEgKSB7CisgICAgICAgICAgICAgICAgQ3JlYXRlV29yZEZpZWxkICggQVJHMCwgMHgwMSwgSVJR MSApCisgICAgICAgICAgICAgICAgRmluZFNldFJpZ2h0Qml0ICggSVJRMSwgTG9jYWwwICkKKyAg ICAgICAgICAgICAgICBEZWNyZW1lbnQgKCBMb2NhbDAgKQorICAgICAgICAgICAgICAgIFN0b3Jl ICggTG9jYWwwLCBQSVIkbGluayApCisgICAgICAgICAgICB9CisgICAgICAgIH0KK0VuZE9mQVNM Citkb25lCisKKyMgUENJIGludGVycnVwdCByb3V0aW5nIGRlZmluaXRpb25zCisjIF9QUlQ6IE1l dGhvZCB0byByZXR1cm4gcm91dGluZyB0YWJsZS4KK2NhdCA8PCdFbmRPZkFTTCcKKyAgICAgICAg TWV0aG9kICggX1BSVCwgMCApIHsKKyAgICAgICAgICAgIElmICggUElDRCApIHsKKyAgICAgICAg ICAgICAgICBSZXR1cm4gKCBQUlRBICkKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFJldHVy biAoIFBSVFAgKQorICAgICAgICB9CitFbmRPZkFTTAorCisjIFBSVFA6IFBJQyByb3V0aW5nIHRh YmxlICh2aWEgSVNBIGxpbmtzKS4KK2VjaG8gIiAgICAgICAgTmFtZShQUlRQLCBQYWNrYWdlKCkg eyIKK2ZvciBkZXYgaW4gJChzZXEgMSAzMSkKK2RvCisgICAgZm9yIGludHggaW4gJChzZXEgMCAz KSAgIyBJTlRBLUQKKyAgICBkbworCWxpbmtfaWR4PSQoKChkZXYgKyBpbnR4KSAmIDMpKQorCXBy aW50ZiAiICAgICAgICAgICAgUGFja2FnZSgpezB4JTA0eGZmZmYsICV1LCBcXFxcX1NCLlBDSTAu TE5LJWMsIDB9LFxuIiBcCisJICAgICRkZXYgJGludHggJHtsaW5rczokbGlua19pZHg6MX0KKyAg ICBkb25lCitkb25lCitlY2hvICIgICAgICAgIH0pIgorCisjIFBSVEE6IEFQSUMgcm91dGluZyB0 YWJsZSAodmlhIG5vbi1sZWdhY3kgSU9BUElDIEdTSXMpLgorZWNobyAiICAgICAgICBOYW1lKFBS VEEsIFBhY2thZ2UoKSB7IgorZm9yIGRldiBpbiAkKHNlcSAxIDMxKQorZG8KKyAgICBmb3IgaW50 eCBpbiAkKHNlcSAwIDMpICAjIElOVEEtRAorICAgIGRvCisJaWR4PSQoKCgoZGV2ICogNCArIGRl di84ICsgaW50eCkgJiAzMSkgKyAxNikpCisJcHJpbnRmICIgICAgICAgICAgICBQYWNrYWdlKCl7 MHglMDR4ZmZmZiwgJXUsIDAsICV1fSxcbiIgXAorCSAgICAkZGV2ICRpbnR4ICRpZHgKKyAgICBk b25lCitkb25lCitlY2hvICIgICAgICAgIH0pIgorCitlY2hvICIgICAgfSIKKworZWNobyAiICAg IC8qIEVuZCBvZiBHUEwtb25seSBjb2RlICovIgpkaWZmIC0tZ2l0IGEvdG9vbHMvZmlybXdhcmUv aHZtbG9hZGVyL2FjcGkvbWtfZHNkdC5jIGIvdG9vbHMvZmlybXdhcmUvaHZtbG9hZGVyL2FjcGkv bWtfZHNkdC5jCmluZGV4IGIyYWRlODkuLjc2NTZiNWQgMTAwNjQ0Ci0tLSBhL3Rvb2xzL2Zpcm13 YXJlL2h2bWxvYWRlci9hY3BpL21rX2RzZHQuYworKysgYi90b29scy9maXJtd2FyZS9odm1sb2Fk ZXIvYWNwaS9ta19kc2R0LmMKQEAgLTkxLDcgKzkxLDcgQEAgc3RhdGljIHN0cnVjdCBvcHRpb24g b3B0aW9uc1tdID0gewogCiBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiB7Ci0gICAg dW5zaWduZWQgaW50IHNsb3QsIGRldiwgaW50eCwgbGluaywgY3B1LCBtYXhfY3B1cyA9IEhWTV9N QVhfVkNQVVM7CisgICAgdW5zaWduZWQgaW50IHNsb3QsIGNwdSwgbWF4X2NwdXMgPSBIVk1fTUFY X1ZDUFVTOwogICAgIGRtX3ZlcnNpb24gZG1fdmVyc2lvbiA9IFFFTVVfWEVOX1RSQURJVElPTkFM OwogCiAgICAgZm9yICggOyA7ICkKQEAgLTI3Myw3MiArMjczLDYgQEAgaW50IG1haW4oaW50IGFy Z2MsIGNoYXIgKiphcmd2KQogICAgICAgICB9CiAgICAgfSBwb3BfYmxvY2soKTsKIAotICAgIC8q KiogUENJLUlTQSBsaW5rIGRlZmluaXRpb25zICoqKi8KLSAgICAvKiBCVUZBOiBMaXN0IG9mIElT QSBJUlFzIGF2YWlsYWJsZSBmb3IgbGlua2luZyB0byBQQ0kgSU5UeC4gKi8KLSAgICBzdG10KCJO YW1lIiwgIkJVRkEsIFJlc291cmNlVGVtcGxhdGUoKSB7ICIKLSAgICAgICAgICJJUlEoTGV2ZWws IEFjdGl2ZUxvdywgU2hhcmVkKSB7IDUsIDEwLCAxMSB9IH0iKTsKLSAgICAvKiBCVUZCOiBJUlEg ZGVzY3JpcHRvciBmb3IgcmV0dXJuaW5nIGZyb20gbGluay1kZXZpY2UgX0NSUyBtZXRob2RzLiAq LwotICAgIHN0bXQoIk5hbWUiLCAiQlVGQiwgQnVmZmVyKCkgeyAiCi0gICAgICAgICAiMHgyMywg MHgwMCwgMHgwMCwgMHgxOCwgIiAvKiBJUlEgZGVzY3JpcHRvciAqLwotICAgICAgICAgIjB4Nzks IDAgfSIpOyAgICAgICAgICAgICAgLyogRW5kIHRhZywgbnVsbCBjaGVja3N1bSAqLwotICAgIHN0 bXQoIkNyZWF0ZVdvcmRGaWVsZCIsICJCVUZCLCAweDAxLCBJUlFWIik7Ci0gICAgLyogQ3JlYXRl IGZvdXIgUENJLUlTQSBsaW5rIGRldmljZXM6IExOS0EsIExOS0IsIExOS0MsIExOS0QuICovCi0g ICAgZm9yICggbGluayA9IDA7IGxpbmsgPCA0OyBsaW5rKysgKQotICAgIHsKLSAgICAgICAgcHVz aF9ibG9jaygiRGV2aWNlIiwgIkxOSyVjIiwgJ0EnK2xpbmspOwotICAgICAgICBzdG10KCJOYW1l IiwgIl9ISUQsICBFSVNBSUQoXCJQTlAwQzBGXCIpIik7ICAvKiBQQ0kgaW50ZXJydXB0IGxpbmsg Ki8KLSAgICAgICAgc3RtdCgiTmFtZSIsICJfVUlELCAldSIsIGxpbmsrMSk7Ci0gICAgICAgIHB1 c2hfYmxvY2soIk1ldGhvZCIsICJfU1RBLCAwIik7Ci0gICAgICAgIHB1c2hfYmxvY2soIklmIiwg IkFuZChQSVIlYywgMHg4MCkiLCAnQScrbGluayk7Ci0gICAgICAgIHN0bXQoIlJldHVybiIsICIw eDA5Iik7Ci0gICAgICAgIHBvcF9ibG9jaygpOwotICAgICAgICBwdXNoX2Jsb2NrKCJFbHNlIiwg TlVMTCk7Ci0gICAgICAgIHN0bXQoIlJldHVybiIsICIweDBCIik7Ci0gICAgICAgIHBvcF9ibG9j aygpOwotICAgICAgICBwb3BfYmxvY2soKTsKLSAgICAgICAgcHVzaF9ibG9jaygiTWV0aG9kIiwg Il9QUlMiKTsKLSAgICAgICAgc3RtdCgiUmV0dXJuIiwgIkJVRkEiKTsKLSAgICAgICAgcG9wX2Js b2NrKCk7Ci0gICAgICAgIHB1c2hfYmxvY2soIk1ldGhvZCIsICJfRElTIik7Ci0gICAgICAgIHN0 bXQoIk9yIiwgIlBJUiVjLCAweDgwLCBQSVIlYyIsICdBJytsaW5rLCAnQScrbGluayk7Ci0gICAg ICAgIHBvcF9ibG9jaygpOwotICAgICAgICBwdXNoX2Jsb2NrKCJNZXRob2QiLCAiX0NSUyIpOwot ICAgICAgICBzdG10KCJBbmQiLCAiUElSJWMsIDB4MGYsIExvY2FsMCIsICdBJytsaW5rKTsKLSAg ICAgICAgc3RtdCgiU2hpZnRMZWZ0IiwgIjB4MSwgTG9jYWwwLCBJUlFWIik7Ci0gICAgICAgIHN0 bXQoIlJldHVybiIsICJCVUZCIik7Ci0gICAgICAgIHBvcF9ibG9jaygpOwotICAgICAgICBwdXNo X2Jsb2NrKCJNZXRob2QiLCAiX1NSUywgMSIpOwotICAgICAgICBzdG10KCJDcmVhdGVXb3JkRmll bGQiLCAiQVJHMCwgMHgwMSwgSVJRMSIpOwotICAgICAgICBzdG10KCJGaW5kU2V0UmlnaHRCaXQi LCAiSVJRMSwgTG9jYWwwIik7Ci0gICAgICAgIHN0bXQoIkRlY3JlbWVudCIsICJMb2NhbDAiKTsK LSAgICAgICAgc3RtdCgiU3RvcmUiLCAiTG9jYWwwLCBQSVIlYyIsICdBJytsaW5rKTsKLSAgICAg ICAgcG9wX2Jsb2NrKCk7Ci0gICAgICAgIHBvcF9ibG9jaygpOwotICAgIH0KLQotICAgIC8qKiog UENJIGludGVycnVwdCByb3V0aW5nIGRlZmluaXRpb25zKioqLwotICAgIC8qIF9QUlQ6IE1ldGhv ZCB0byByZXR1cm4gcm91dGluZyB0YWJsZS4gKi8KLSAgICBwdXNoX2Jsb2NrKCJNZXRob2QiLCAi X1BSVCwgMCIpOwotICAgIHB1c2hfYmxvY2soIklmIiwgIlBJQ0QiKTsKLSAgICBzdG10KCJSZXR1 cm4iLCAiUFJUQSIpOwotICAgIHBvcF9ibG9jaygpOwotICAgIHN0bXQoIlJldHVybiIsICJQUlRQ Iik7Ci0gICAgcG9wX2Jsb2NrKCk7Ci0gICAgLyogUFJUUDogUElDIHJvdXRpbmcgdGFibGUgKHZp YSBJU0EgbGlua3MpLiAqLwotICAgIHByaW50ZigiTmFtZShQUlRQLCBQYWNrYWdlKCkge1xuIik7 Ci0gICAgZm9yICggZGV2ID0gMTsgZGV2IDwgMzI7IGRldisrICkKLSAgICAgICAgZm9yICggaW50 eCA9IDA7IGludHggPCA0OyBpbnR4KysgKSAvKiBJTlRBLUQgKi8KLSAgICAgICAgICAgIHByaW50 ZigiUGFja2FnZSgpezB4JTA0eGZmZmYsICV1LCBcXF9TQi5QQ0kwLkxOSyVjLCAwfSxcbiIsCi0g ICAgICAgICAgICAgICAgICAgZGV2LCBpbnR4LCAnQScrKChkZXYraW50eCkmMykpOwotICAgIHBy aW50ZigifSlcbiIpOwotICAgIC8qIFBSVEE6IEFQSUMgcm91dGluZyB0YWJsZSAodmlhIG5vbi1s ZWdhY3kgSU9BUElDIEdTSXMpLiAqLwotICAgIHByaW50ZigiTmFtZShQUlRBLCBQYWNrYWdlKCkg e1xuIik7Ci0gICAgZm9yICggZGV2ID0gMTsgZGV2IDwgMzI7IGRldisrICkKLSAgICAgICAgZm9y ICggaW50eCA9IDA7IGludHggPCA0OyBpbnR4KysgKSAvKiBJTlRBLUQgKi8KLSAgICAgICAgICAg IHByaW50ZigiUGFja2FnZSgpezB4JTA0eGZmZmYsICV1LCAwLCAldX0sXG4iLAotICAgICAgICAg ICAgICAgICAgIGRldiwgaW50eCwgKChkZXYqNCtkZXYvOCtpbnR4KSYzMSkrMTYpOwotICAgIHBy aW50ZigifSlcbiIpOwotCiAgICAgLyoKICAgICAgKiBFYWNoIFBDSSBob3RwbHVnIHNsb3QgbmVl ZHMgYXQgbGVhc3QgdHdvIG1ldGhvZHMgdG8gaGFuZGxlCiAgICAgICogdGhlIEFDUEkgZXZlbnQ6 Ci0tIAoxLjguMy4xCgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRw czovL2xpc3RzLnhlbi5vcmcveGVuLWRldmVsCg==