From mboxrd@z Thu Jan 1 00:00:00 1970 From: Changlong Xie Subject: [PATCH v11 10/27] tools/libxl: add back channel support to write stream Date: Fri, 4 Mar 2016 16:41:14 +0800 Message-ID: <1457080891-26054-11-git-send-email-xiecl.fnst@cn.fujitsu.com> References: <1457080891-26054-1-git-send-email-xiecl.fnst@cn.fujitsu.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1457080891-26054-1-git-send-email-xiecl.fnst@cn.fujitsu.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: xen devel , Konrad Rzeszutek Wilk , Andrew Cooper , Ian Campbell , Ian Jackson , Wei Liu Cc: Lars Kurth , Changlong Xie , Wen Congyang , Gui Jianfeng , Jiang Yunhong , Dong Eddie , Anthony Perard , Shriram Rajagopalan , Yang Hongyang List-Id: xen-devel@lists.xenproject.org RnJvbTogV2VuIENvbmd5YW5nIDx3ZW5jeUBjbi5mdWppdHN1LmNvbT4KCkFkZCBiYWNrIGNoYW5u ZWwgc3VwcG9ydCB0byB3cml0ZSBzdHJlYW0uIElmIHRoZSB3cml0ZSBzdHJlYW0gaXMKYSBiYWNr IGNoYW5uZWwgc3RyZWFtLCB0aGlzIG1lYW5zIHRoZSB3cml0ZSBzdHJlYW0gaXMgdXNlZCBieQpT ZWNvbmRhcnkgdG8gc2VuZCBzb21lIHJlY29yZHMgYmFjay4KClNpZ25lZC1vZmYtYnk6IFlhbmcg SG9uZ3lhbmcgPGhvbmd5YW5nLnlhbmdAZWFzeXN0YWNrLmNuPgpTaWduZWQtb2ZmLWJ5OiBXZW4g Q29uZ3lhbmcgPHdlbmN5QGNuLmZ1aml0c3UuY29tPgpTaWduZWQtb2ZmLWJ5OiBDaGFuZ2xvbmcg WGllIDx4aWVjbC5mbnN0QGNuLmZ1aml0c3UuY29tPgotLS0KIHRvb2xzL2xpYnhsL2xpYnhsX2Rv bV9zYXZlLmMgICAgIHwgIDEgKwogdG9vbHMvbGlieGwvbGlieGxfaW50ZXJuYWwuaCAgICAgfCAg NiArKysKIHRvb2xzL2xpYnhsL2xpYnhsX3N0cmVhbV93cml0ZS5jIHwgOTkgKysrKysrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrLS0tLQogMyBmaWxlcyBjaGFuZ2VkLCA5NiBpbnNlcnRp b25zKCspLCAxMCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS90b29scy9saWJ4bC9saWJ4bF9k b21fc2F2ZS5jIGIvdG9vbHMvbGlieGwvbGlieGxfZG9tX3NhdmUuYwppbmRleCA0ZGY4NmMzLi5j ZDMyNGJiIDEwMDY0NAotLS0gYS90b29scy9saWJ4bC9saWJ4bF9kb21fc2F2ZS5jCisrKyBiL3Rv b2xzL2xpYnhsL2xpYnhsX2RvbV9zYXZlLmMKQEAgLTQwNSw2ICs0MDUsNyBAQCB2b2lkIGxpYnhs X19kb21haW5fc2F2ZShsaWJ4bF9fZWdjICplZ2MsIGxpYnhsX19kb21haW5fc2F2ZV9zdGF0ZSAq ZHNzKQogICAgIGRzcy0+c3dzLmFvICA9IGRzcy0+YW87CiAgICAgZHNzLT5zd3MuZHNzID0gZHNz OwogICAgIGRzcy0+c3dzLmZkICA9IGRzcy0+ZmQ7CisgICAgZHNzLT5zd3MuYmFja19jaGFubmVs ID0gZmFsc2U7CiAgICAgZHNzLT5zd3MuY29tcGxldGlvbl9jYWxsYmFjayA9IHN0cmVhbV9kb25l OwogCiAgICAgbGlieGxfX3N0cmVhbV93cml0ZV9zdGFydChlZ2MsICZkc3MtPnN3cyk7CmRpZmYg LS1naXQgYS90b29scy9saWJ4bC9saWJ4bF9pbnRlcm5hbC5oIGIvdG9vbHMvbGlieGwvbGlieGxf aW50ZXJuYWwuaAppbmRleCA1MzE0NTIyLi5mYjhiMmZhIDEwMDY0NAotLS0gYS90b29scy9saWJ4 bC9saWJ4bF9pbnRlcm5hbC5oCisrKyBiL3Rvb2xzL2xpYnhsL2xpYnhsX2ludGVybmFsLmgKQEAg LTMwNDIsNiArMzA0Miw3IEBAIHN0cnVjdCBsaWJ4bF9fc3RyZWFtX3dyaXRlX3N0YXRlIHsKICAg ICBsaWJ4bF9fYW8gKmFvOwogICAgIGxpYnhsX19kb21haW5fc2F2ZV9zdGF0ZSAqZHNzOwogICAg IGludCBmZDsKKyAgICBib29sIGJhY2tfY2hhbm5lbDsKICAgICB2b2lkICgqY29tcGxldGlvbl9j YWxsYmFjaykobGlieGxfX2VnYyAqZWdjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBsaWJ4bF9fc3RyZWFtX3dyaXRlX3N0YXRlICpzd3MsCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGludCByYyk7CkBAIC0zMDUzLDYgKzMwNTQsNyBAQCBzdHJ1Y3QgbGlieGxfX3N0 cmVhbV93cml0ZV9zdGF0ZSB7CiAgICAgYm9vbCBydW5uaW5nOwogICAgIGJvb2wgaW5fY2hlY2tw b2ludDsKICAgICBib29sIHN5bmNfdGVhcmRvd247ICAvKiBPbmx5IHVzZWQgdG8gY29vcmRpbmF0 ZSBzaHV0ZG93biBvbiBlcnJvciBwYXRoLiAqLworICAgIGJvb2wgaW5fY2hlY2twb2ludF9zdGF0 ZTsKICAgICBsaWJ4bF9fc2F2ZV9oZWxwZXJfc3RhdGUgc2hzOwogCiAgICAgLyogTWFpbiBzdHJl YW0td3JpdGluZyBkYXRhLiAqLwpAQCAtMzA3Niw2ICszMDc4LDEwIEBAIF9oaWRkZW4gdm9pZCBs aWJ4bF9fc3RyZWFtX3dyaXRlX3N0YXJ0KGxpYnhsX19lZ2MgKmVnYywKIF9oaWRkZW4gdm9pZAog bGlieGxfX3N0cmVhbV93cml0ZV9zdGFydF9jaGVja3BvaW50KGxpYnhsX19lZ2MgKmVnYywKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9fc3RyZWFtX3dyaXRlX3N0 YXRlICpzdHJlYW0pOworX2hpZGRlbiB2b2lkCitsaWJ4bF9fc3RyZWFtX3dyaXRlX2NoZWNrcG9p bnRfc3RhdGUobGlieGxfX2VnYyAqZWdjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGxpYnhsX19zdHJlYW1fd3JpdGVfc3RhdGUgKnN0cmVhbSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBsaWJ4bF9zcl9jaGVja3BvaW50X3N0YXRlICpzcmNzKTsK IF9oaWRkZW4gdm9pZCBsaWJ4bF9fc3RyZWFtX3dyaXRlX2Fib3J0KGxpYnhsX19lZ2MgKmVnYywK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX19zdHJlYW1fd3Jp dGVfc3RhdGUgKnN0cmVhbSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGludCByYyk7CmRpZmYgLS1naXQgYS90b29scy9saWJ4bC9saWJ4bF9zdHJlYW1fd3JpdGUuYyBi L3Rvb2xzL2xpYnhsL2xpYnhsX3N0cmVhbV93cml0ZS5jCmluZGV4IGY2ZWE1NWQuLjhjNzdkNTIg MTAwNjQ0Ci0tLSBhL3Rvb2xzL2xpYnhsL2xpYnhsX3N0cmVhbV93cml0ZS5jCisrKyBiL3Rvb2xz L2xpYnhsL2xpYnhsX3N0cmVhbV93cml0ZS5jCkBAIC00OSw2ICs0OSwxMyBAQAogICogIC0gaWYg KGh2bSkKICAqICAgICAgLSBFbXVsYXRvciBjb250ZXh0IHJlY29yZAogICogIC0gQ2hlY2twb2lu dCBlbmQgcmVjb3JkCisgKgorICogRm9yIGJhY2sgY2hhbm5lbCBzdHJlYW06CisgKiAtIGxpYnhs X19zdHJlYW1fd3JpdGVfc3RhcnQoKQorICogICAgLSBTZXQgdXAgdGhlIHN0cmVhbSB0byBydW5u aW5nIHN0YXRlCisgKgorICogLSBVc2UgbGlieGxfX3N0cmVhbV93cml0ZV9jaGVja3BvaW50X3N0 YXRlIHRvIHdyaXRlIHRoZSByZWNvcmQuIFdoZW4gdGhlCisgKiAgIHJlY29yZCBpcyB3cml0dGVu IG91dCwgY2FsbCBzdHJlYW0tPmNoZWNrcG9pbnRfY2FsbGJhY2soKSB0byByZXR1cm4uCiAgKi8K IAogLyogU3VjY2Vzcy9lcnJvci9jbGVhbnVwIGhhbmRsaW5nLiAqLwpAQCAtOTEsNiArOTgsMTIg QEAgc3RhdGljIHZvaWQgd3JpdGVfY2hlY2twb2ludF9lbmRfcmVjb3JkKGxpYnhsX19lZ2MgKmVn YywKIHN0YXRpYyB2b2lkIGNoZWNrcG9pbnRfZW5kX3JlY29yZF9kb25lKGxpYnhsX19lZ2MgKmVn YywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX19zdHJlYW1f d3JpdGVfc3RhdGUgKnN0cmVhbSk7CiAKKy8qIGNoZWNrcG9pbnQgc3RhdGUgKi8KK3N0YXRpYyB2 b2lkIHdyaXRlX2NoZWNrcG9pbnRfc3RhdGVfZG9uZShsaWJ4bF9fZWdjICplZ2MsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfX3N0cmVhbV93cml0ZV9zdGF0 ZSAqc3RyZWFtKTsKK3N0YXRpYyB2b2lkIGNoZWNrcG9pbnRfc3RhdGVfZG9uZShsaWJ4bF9fZWdj ICplZ2MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfX3N0cmVhbV93 cml0ZV9zdGF0ZSAqc3RyZWFtLCBpbnQgcmMpOworCiAvKi0tLS0tIEhlbHBlcnMgLS0tLS0qLwog CiBzdGF0aWMgdm9pZCB3cml0ZV9kb25lKGxpYnhsX19lZ2MgKmVnYywKQEAgLTIyNSw2ICsyMzgs MTcgQEAgdm9pZCBsaWJ4bF9fc3RyZWFtX3dyaXRlX3N0YXJ0KGxpYnhsX19lZ2MgKmVnYywKIAog ICAgIHN0cmVhbS0+cnVubmluZyA9IHRydWU7CiAKKyAgICBkYy0+YW8gICAgICAgID0gYW87Cisg ICAgZGMtPnJlYWRmZCAgICA9IC0xOworICAgIGRjLT53cml0ZXdoYXQgPSAic3RyZWFtIGhlYWRl ciI7CisgICAgZGMtPmNvcHl3aGF0ICA9ICJzYXZlIHYyIHN0cmVhbSI7CisgICAgZGMtPndyaXRl ZmQgICA9IHN0cmVhbS0+ZmQ7CisgICAgZGMtPm1heHN6ICAgICA9IC0xOworICAgIGRjLT5jYWxs YmFjayAgPSBzdHJlYW1faGVhZGVyX2RvbmU7CisKKyAgICBpZiAoc3RyZWFtLT5iYWNrX2NoYW5u ZWwpCisgICAgICAgIHJldHVybjsKKwogICAgIGlmIChkc3MtPnR5cGUgPT0gTElCWExfRE9NQUlO X1RZUEVfSFZNKSB7CiAgICAgICAgIHN0cmVhbS0+ZGV2aWNlX21vZGVsX3ZlcnNpb24gPQogICAg ICAgICAgICAgbGlieGxfX2RldmljZV9tb2RlbF92ZXJzaW9uX3J1bm5pbmcoZ2MsIGRzcy0+ZG9t aWQpOwpAQCAtMjQ5LDE0ICsyNzMsNiBAQCB2b2lkIGxpYnhsX19zdHJlYW1fd3JpdGVfc3RhcnQo bGlieGxfX2VnYyAqZWdjLAogICAgICAgICBzdHJlYW0tPmVtdV9zdWJfaGRyLmluZGV4ID0gMDsK ICAgICB9CiAKLSAgICBkYy0+YW8gICAgICAgID0gYW87Ci0gICAgZGMtPnJlYWRmZCAgICA9IC0x OwotICAgIGRjLT53cml0ZXdoYXQgPSAic3RyZWFtIGhlYWRlciI7Ci0gICAgZGMtPmNvcHl3aGF0 ICA9ICJzYXZlIHYyIHN0cmVhbSI7Ci0gICAgZGMtPndyaXRlZmQgICA9IHN0cmVhbS0+ZmQ7Ci0g ICAgZGMtPm1heHN6ICAgICA9IC0xOwotICAgIGRjLT5jYWxsYmFjayAgPSBzdHJlYW1faGVhZGVy X2RvbmU7Ci0KICAgICByYyA9IGxpYnhsX19kYXRhY29waWVyX3N0YXJ0KGRjKTsKICAgICBpZiAo cmMpCiAgICAgICAgIGdvdG8gZXJyOwpAQCAtMjc5LDYgKzI5NSw3IEBAIHZvaWQgbGlieGxfX3N0 cmVhbV93cml0ZV9zdGFydF9jaGVja3BvaW50KGxpYnhsX19lZ2MgKmVnYywKIHsKICAgICBhc3Nl cnQoc3RyZWFtLT5ydW5uaW5nKTsKICAgICBhc3NlcnQoIXN0cmVhbS0+aW5fY2hlY2twb2ludCk7 CisgICAgYXNzZXJ0KCFzdHJlYW0tPmJhY2tfY2hhbm5lbCk7CiAgICAgc3RyZWFtLT5pbl9jaGVj a3BvaW50ID0gdHJ1ZTsKIAogICAgIHdyaXRlX2VtdWxhdG9yX3hlbnN0b3JlX3JlY29yZChlZ2Ms IHN0cmVhbSk7CkBAIC01NzcsNiArNTk0LDIxIEBAIHN0YXRpYyB2b2lkIHN0cmVhbV9jb21wbGV0 ZShsaWJ4bF9fZWdjICplZ2MsCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAgICBpZiAoc3Ry ZWFtLT5pbl9jaGVja3BvaW50X3N0YXRlKSB7CisgICAgICAgIGFzc2VydChyYyk7CisKKyAgICAg ICAgLyoKKyAgICAgICAgICogSWYgYW4gZXJyb3IgaXMgZW5jb3VudGVyZWQgd2hpbGUgaW4gYSBj aGVja3BvaW50LCBwYXNzIGl0CisgICAgICAgICAqIGJhY2sgdG8gbGlieGMuICBUaGUgZmFpbHVy ZSB3aWxsIGNvbWUgYmFjayBhcm91bmQgdG8gdXMgdmlhCisgICAgICAgICAqIDEuIG5vcm1hbCBz dHJlYW0KKyAgICAgICAgICogICAgbGlieGxfX3hjX2RvbWFpbl9zYXZlX2RvbmUoKQorICAgICAg ICAgKiAyLiBiYWNrX2NoYW5uZWwgc3RyZWFtCisgICAgICAgICAqICAgIGxpYnhsX19zdHJlYW1f d3JpdGVfYWJvcnQoKQorICAgICAgICAgKi8KKyAgICAgICAgY2hlY2twb2ludF9zdGF0ZV9kb25l KGVnYywgc3RyZWFtLCByYyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICBzdHJlYW1f ZG9uZShlZ2MsIHN0cmVhbSwgcmMpOwogfQogCkBAIC01ODQsMTMgKzYxNiwyNCBAQCBzdGF0aWMg dm9pZCBzdHJlYW1fZG9uZShsaWJ4bF9fZWdjICplZ2MsCiAgICAgICAgICAgICAgICAgICAgICAg ICBsaWJ4bF9fc3RyZWFtX3dyaXRlX3N0YXRlICpzdHJlYW0sIGludCByYykKIHsKICAgICBhc3Nl cnQoc3RyZWFtLT5ydW5uaW5nKTsKKyAgICBhc3NlcnQoIXN0cmVhbS0+aW5fY2hlY2twb2ludF9z dGF0ZSk7CiAgICAgc3RyZWFtLT5ydW5uaW5nID0gZmFsc2U7CiAKICAgICBpZiAoc3RyZWFtLT5l bXVfY2FyZWZkKQogICAgICAgICBsaWJ4bF9fY2FyZWZkX2Nsb3NlKHN0cmVhbS0+ZW11X2NhcmVm ZCk7CiAgICAgZnJlZShzdHJlYW0tPmVtdV9ib2R5KTsKIAotICAgIGNoZWNrX2FsbF9maW5pc2hl ZChlZ2MsIHN0cmVhbSwgcmMpOworICAgIGlmICghc3RyZWFtLT5iYWNrX2NoYW5uZWwpIHsKKyAg ICAgICAgLyoKKyAgICAgICAgICogMS4gSW4gc3RyZWFtX2RvbmUoKSwgc3RyZWFtLT5ydW5uaW5n IGlzIHNldCB0byBmYWxzZSwgc28KKyAgICAgICAgICogICAgdGhlIHN0cmVhbSBpdHNlbGYgaXMg bm90IGluIHVzZS4KKyAgICAgICAgICogMi4gV3JpdGUgc3RyZWFtIGlzIGEgYmFjayBjaGFubmVs IHN0cmVhbSwgdGhpcyBtZWFucyBpdAorICAgICAgICAgKiAgICBpcyBvbmx5IHVzZWQgYnkgc2Vj b25kYXJ5KHJlc3RvcmUgc2lkZSkgdG8gc2VuZCByZWNvcmRzCisgICAgICAgICAqICAgIGJhY2ss IHNvIGl0IGRvZXNuJ3QgaGF2ZSBzYXZlIGhlbHBlci4KKyAgICAgICAgICogU28gd2UgZG9uJ3Qg bmVlZCBpbnZva2UgY2hlY2tfYWxsX2ZpbmlzaGVkIGhlcmUKKyAgICAgICAgICovCisgICAgICAg ICBjaGVja19hbGxfZmluaXNoZWQoZWdjLCBzdHJlYW0sIHJjKTsKKyAgICB9CiB9CiAKIHN0YXRp YyB2b2lkIGNoZWNrcG9pbnRfZG9uZShsaWJ4bF9fZWdjICplZ2MsCkBAIC02NDIsNyArNjg1LDQz IEBAIHN0YXRpYyB2b2lkIGNoZWNrX2FsbF9maW5pc2hlZChsaWJ4bF9fZWdjICplZ2MsCiAgICAg ICAgIGxpYnhsX19zYXZlX2hlbHBlcl9pbnVzZSgmc3RyZWFtLT5zaHMpKQogICAgICAgICByZXR1 cm47CiAKLSAgICBzdHJlYW0tPmNvbXBsZXRpb25fY2FsbGJhY2soZWdjLCBzdHJlYW0sIHN0cmVh bS0+cmMpOworICAgIGlmIChzdHJlYW0tPmNvbXBsZXRpb25fY2FsbGJhY2spCisgICAgICAgIC8q IGJhY2sgY2hhbm5lbCBzdHJlYW0gZG9lc24ndCBoYXZlIGNvbXBsZXRpb25fY2FsbGJhY2soKSAq LworICAgICAgICBzdHJlYW0tPmNvbXBsZXRpb25fY2FsbGJhY2soZWdjLCBzdHJlYW0sIHN0cmVh bS0+cmMpOworfQorCisvKi0tLS0tIGNoZWNrcG9pbnQgc3RhdGUgLS0tLS0qLwordm9pZCBsaWJ4 bF9fc3RyZWFtX3dyaXRlX2NoZWNrcG9pbnRfc3RhdGUobGlieGxfX2VnYyAqZWdjLAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfX3N0cmVhbV93cml0ZV9z dGF0ZSAqc3RyZWFtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bGlieGxfc3JfY2hlY2twb2ludF9zdGF0ZSAqc3JjcykKK3sKKyAgICBzdHJ1Y3QgbGlieGxfX3Ny X3JlY19oZHIgcmVjOworCisgICAgYXNzZXJ0KHN0cmVhbS0+cnVubmluZyk7CisgICAgYXNzZXJ0 KCFzdHJlYW0tPmluX2NoZWNrcG9pbnQpOworICAgIGFzc2VydCghc3RyZWFtLT5pbl9jaGVja3Bv aW50X3N0YXRlKTsKKyAgICBzdHJlYW0tPmluX2NoZWNrcG9pbnRfc3RhdGUgPSB0cnVlOworCisg ICAgRklMTFpFUk8ocmVjKTsKKyAgICByZWMudHlwZSA9IFJFQ19UWVBFX0NIRUNLUE9JTlRfU1RB VEU7CisgICAgcmVjLmxlbmd0aCA9IHNpemVvZigqc3Jjcyk7CisKKyAgICBzZXR1cF93cml0ZShl Z2MsIHN0cmVhbSwgImNoZWNrcG9pbnQgc3RhdGUiLCAmcmVjLAorICAgICAgICAgICAgICAgIHNy Y3MsIHdyaXRlX2NoZWNrcG9pbnRfc3RhdGVfZG9uZSk7Cit9CisKK3N0YXRpYyB2b2lkIHdyaXRl X2NoZWNrcG9pbnRfc3RhdGVfZG9uZShsaWJ4bF9fZWdjICplZ2MsCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfX3N0cmVhbV93cml0ZV9zdGF0ZSAqc3RyZWFt KQoreworICAgIGNoZWNrcG9pbnRfc3RhdGVfZG9uZShlZ2MsIHN0cmVhbSwgMCk7Cit9CisKK3N0 YXRpYyB2b2lkIGNoZWNrcG9pbnRfc3RhdGVfZG9uZShsaWJ4bF9fZWdjICplZ2MsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlieGxfX3N0cmVhbV93cml0ZV9zdGF0ZSAqc3Ry ZWFtLCBpbnQgcmMpCit7CisgICAgYXNzZXJ0KHN0cmVhbS0+aW5fY2hlY2twb2ludF9zdGF0ZSk7 CisgICAgc3RyZWFtLT5pbl9jaGVja3BvaW50X3N0YXRlID0gZmFsc2U7CisgICAgc3RyZWFtLT5j aGVja3BvaW50X2NhbGxiYWNrKGVnYywgc3RyZWFtLCByYyk7CiB9CiAKIC8qCi0tIAoxLjkuMwoK CgoKX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRl dmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxAbGlzdHMueGVuLm9yZwpodHRwOi8vbGlzdHMueGVu Lm9yZy94ZW4tZGV2ZWwK