From mboxrd@z Thu Jan 1 00:00:00 1970 From: Stefano Stabellini Subject: [PULL 13/21] xen/9pfs: connect to the frontend Date: Fri, 21 Apr 2017 13:14:54 -0700 Message-ID: <1492805702-19690-13-git-send-email-sstabellini@kernel.org> References: <1492805702-19690-1-git-send-email-sstabellini@kernel.org> 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 1d1exq-0000GS-Tp for xen-devel@lists.xenproject.org; Fri, 21 Apr 2017 20:15:35 +0000 In-Reply-To: <1492805702-19690-1-git-send-email-sstabellini@kernel.org> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xen.org Sender: "Xen-devel" To: peter.maydell@linaro.org Cc: jgross@suse.com, sstabellini@kernel.org, stefanha@gmail.com, qemu-devel@nongnu.org, Greg Kurz , Stefano Stabellini , "Aneesh Kumar K.V" , stefanha@redhat.com, anthony.perard@citrix.com, xen-devel@lists.xenproject.org List-Id: xen-devel@lists.xenproject.org V3JpdGUgdGhlIGxpbWl0cyBvZiB0aGUgYmFja2VuZCB0byB4ZW5zdG9yZS4gQ29ubmVjdCB0byB0 aGUgZnJvbnRlbmQuClVwb24gY29ubmVjdGlvbiwgYWxsb2NhdGUgdGhlIHJpbmdzIGFjY29yZGlu ZyB0byB0aGUgcHJvdG9jb2wKc3BlY2lmaWNhdGlvbi4KCkluaXRpYWxpemUgYSBRRU1VQkggdG8g c2NoZWR1bGUgd29yayB1cG9uIHJlY2VpdmluZyBhbiBldmVudCBjaGFubmVsCm5vdGlmaWNhdGlv biBmcm9tIHRoZSBmcm9udGVuZC4KClNpZ25lZC1vZmYtYnk6IFN0ZWZhbm8gU3RhYmVsbGluaSA8 c3RlZmFub0BhcG9yZXRvLmNvbT4KQ0M6IGFudGhvbnkucGVyYXJkQGNpdHJpeC5jb20KQ0M6IGpn cm9zc0BzdXNlLmNvbQpDQzogQW5lZXNoIEt1bWFyIEsuViA8YW5lZXNoLmt1bWFyQGxpbnV4LnZu ZXQuaWJtLmNvbT4KQ0M6IEdyZWcgS3VyeiA8Z3JvdWdAa2FvZC5vcmc+Ci0tLQogaHcvOXBmcy94 ZW4tOXAtYmFja2VuZC5jIHwgMTgyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKystCiAxIGZpbGUgY2hhbmdlZCwgMTgxIGluc2VydGlvbnMoKyksIDEgZGVsZXRp b24oLSkKCmRpZmYgLS1naXQgYS9ody85cGZzL3hlbi05cC1iYWNrZW5kLmMgYi9ody85cGZzL3hl bi05cC1iYWNrZW5kLmMKaW5kZXggYjkwYWMzMS4uYmZjNmVjYSAxMDA2NDQKLS0tIGEvaHcvOXBm cy94ZW4tOXAtYmFja2VuZC5jCisrKyBiL2h3LzlwZnMveGVuLTlwLWJhY2tlbmQuYwpAQCAtMjAs OCArMjAsNDEgQEAKIAogREVGSU5FX1hFTl9GTEVYX1JJTkdfQU5EX0lOVEYoeGVuXzlwZnMpOwog CisjZGVmaW5lIFZFUlNJT05TICIxIgorI2RlZmluZSBNQVhfUklOR1MgOAorI2RlZmluZSBNQVhf UklOR19PUkRFUiA4CisKK3R5cGVkZWYgc3RydWN0IFhlbjlwZnNSaW5nIHsKKyAgICBzdHJ1Y3Qg WGVuOXBmc0RldiAqcHJpdjsKKworICAgIGludCByZWY7CisgICAgeGVuZXZ0Y2huX2hhbmRsZSAg ICpldnRjaG5kZXY7CisgICAgaW50IGV2dGNobjsKKyAgICBpbnQgbG9jYWxfcG9ydDsKKyAgICBp bnQgcmluZ19vcmRlcjsKKyAgICBzdHJ1Y3QgeGVuXzlwZnNfZGF0YV9pbnRmICppbnRmOworICAg IHVuc2lnbmVkIGNoYXIgKmRhdGE7CisgICAgc3RydWN0IHhlbl85cGZzX2RhdGEgcmluZzsKKwor ICAgIHN0cnVjdCBpb3ZlYyAqc2c7CisgICAgUUVNVUJIICpiaDsKKworICAgIC8qIGxvY2FsIGNv cGllcywgc28gdGhhdCB3ZSBjYW4gcmVhZC93cml0ZSBQRFUgZGF0YSBkaXJlY3RseSBmcm9tCisg ICAgICogdGhlIHJpbmcgKi8KKyAgICBSSU5HX0lEWCBvdXRfY29ucywgb3V0X3NpemUsIGluX2Nv bnM7CisgICAgYm9vbCBpbnByb2dyZXNzOworfSBYZW45cGZzUmluZzsKKwogdHlwZWRlZiBzdHJ1 Y3QgWGVuOXBmc0RldiB7CiAgICAgc3RydWN0IFhlbkRldmljZSB4ZW5kZXY7ICAvKiBtdXN0IGJl IGZpcnN0ICovCisgICAgVjlmc1N0YXRlIHN0YXRlOworICAgIGNoYXIgKnBhdGg7CisgICAgY2hh ciAqc2VjdXJpdHlfbW9kZWw7CisgICAgY2hhciAqdGFnOworICAgIGNoYXIgKmlkOworCisgICAg aW50IG51bV9yaW5nczsKKyAgICBYZW45cGZzUmluZyAqcmluZ3M7CiB9IFhlbjlwZnNEZXY7CiAK IHN0YXRpYyBzc2l6ZV90IHhlbl85cGZzX3BkdV92bWFyc2hhbChWOWZzUERVICpwZHUsCkBAIC03 MCwyMiArMTAzLDE2OSBAQCBzdGF0aWMgaW50IHhlbl85cGZzX2luaXQoc3RydWN0IFhlbkRldmlj ZSAqeGVuZGV2KQogICAgIHJldHVybiAwOwogfQogCitzdGF0aWMgdm9pZCB4ZW5fOXBmc19iaCh2 b2lkICpvcGFxdWUpCit7Cit9CisKK3N0YXRpYyB2b2lkIHhlbl85cGZzX2V2dGNobl9ldmVudCh2 b2lkICpvcGFxdWUpCit7Cit9CisKIHN0YXRpYyBpbnQgeGVuXzlwZnNfZnJlZShzdHJ1Y3QgWGVu RGV2aWNlICp4ZW5kZXYpCiB7Ci0gICAgcmV0dXJuIC0xOworICAgIGludCBpOworICAgIFhlbjlw ZnNEZXYgKnhlbl85cGRldiA9IGNvbnRhaW5lcl9vZih4ZW5kZXYsIFhlbjlwZnNEZXYsIHhlbmRl dik7CisKKyAgICBnX2ZyZWUoeGVuXzlwZGV2LT5pZCk7CisgICAgZ19mcmVlKHhlbl85cGRldi0+ dGFnKTsKKyAgICBnX2ZyZWUoeGVuXzlwZGV2LT5wYXRoKTsKKyAgICBnX2ZyZWUoeGVuXzlwZGV2 LT5zZWN1cml0eV9tb2RlbCk7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgeGVuXzlwZGV2LT5udW1f cmluZ3M7IGkrKykgeworICAgICAgICBpZiAoeGVuXzlwZGV2LT5yaW5nc1tpXS5kYXRhICE9IE5V TEwpIHsKKyAgICAgICAgICAgIHhlbmdudHRhYl91bm1hcCh4ZW5fOXBkZXYtPnhlbmRldi5nbnR0 YWJkZXYsCisgICAgICAgICAgICAgICAgICAgIHhlbl85cGRldi0+cmluZ3NbaV0uZGF0YSwKKyAg ICAgICAgICAgICAgICAgICAgKDEgPDwgeGVuXzlwZGV2LT5yaW5nc1tpXS5yaW5nX29yZGVyKSk7 CisgICAgICAgIH0KKyAgICAgICAgaWYgKHhlbl85cGRldi0+cmluZ3NbaV0uaW50ZiAhPSBOVUxM KSB7CisgICAgICAgICAgICB4ZW5nbnR0YWJfdW5tYXAoeGVuXzlwZGV2LT54ZW5kZXYuZ250dGFi ZGV2LAorICAgICAgICAgICAgICAgICAgICB4ZW5fOXBkZXYtPnJpbmdzW2ldLmludGYsCisgICAg ICAgICAgICAgICAgICAgIDEpOworICAgICAgICB9CisgICAgICAgIGlmICh4ZW5fOXBkZXYtPnJp bmdzW2ldLmV2dGNobmRldiA+IDApIHsKKyAgICAgICAgICAgIHFlbXVfc2V0X2ZkX2hhbmRsZXIo eGVuZXZ0Y2huX2ZkKHhlbl85cGRldi0+cmluZ3NbaV0uZXZ0Y2huZGV2KSwKKyAgICAgICAgICAg ICAgICAgICAgTlVMTCwgTlVMTCwgTlVMTCk7CisgICAgICAgICAgICB4ZW5ldnRjaG5fdW5iaW5k KHhlbl85cGRldi0+cmluZ3NbaV0uZXZ0Y2huZGV2LAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB4ZW5fOXBkZXYtPnJpbmdzW2ldLmxvY2FsX3BvcnQpOworICAgICAgICB9CisgICAgICAg IGlmICh4ZW5fOXBkZXYtPnJpbmdzW2ldLmJoICE9IE5VTEwpIHsKKyAgICAgICAgICAgIHFlbXVf YmhfZGVsZXRlKHhlbl85cGRldi0+cmluZ3NbaV0uYmgpOworICAgICAgICB9CisgICAgfQorICAg IGdfZnJlZSh4ZW5fOXBkZXYtPnJpbmdzKTsKKyAgICByZXR1cm4gMDsKIH0KIAogc3RhdGljIGlu dCB4ZW5fOXBmc19jb25uZWN0KHN0cnVjdCBYZW5EZXZpY2UgKnhlbmRldikKIHsKKyAgICBpbnQg aTsKKyAgICBYZW45cGZzRGV2ICp4ZW5fOXBkZXYgPSBjb250YWluZXJfb2YoeGVuZGV2LCBYZW45 cGZzRGV2LCB4ZW5kZXYpOworICAgIFY5ZnNTdGF0ZSAqcyA9ICZ4ZW5fOXBkZXYtPnN0YXRlOwor ICAgIFFlbXVPcHRzICpmc2RldjsKKworICAgIGlmICh4ZW5zdG9yZV9yZWFkX2ZlX2ludCgmeGVu XzlwZGV2LT54ZW5kZXYsICJudW0tcmluZ3MiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAmeGVuXzlwZGV2LT5udW1fcmluZ3MpID09IC0xIHx8CisgICAgICAgIHhlbl85cGRldi0+bnVt X3JpbmdzID4gTUFYX1JJTkdTIHx8IHhlbl85cGRldi0+bnVtX3JpbmdzIDwgMSkgeworICAgICAg ICByZXR1cm4gLTE7CisgICAgfQorCisgICAgeGVuXzlwZGV2LT5yaW5ncyA9IGdfbWFsbG9jMCh4 ZW5fOXBkZXYtPm51bV9yaW5ncyAqIHNpemVvZihYZW45cGZzUmluZykpOworICAgIGZvciAoaSA9 IDA7IGkgPCB4ZW5fOXBkZXYtPm51bV9yaW5nczsgaSsrKSB7CisgICAgICAgIGNoYXIgKnN0cjsK KyAgICAgICAgaW50IHJpbmdfb3JkZXI7CisKKyAgICAgICAgeGVuXzlwZGV2LT5yaW5nc1tpXS5w cml2ID0geGVuXzlwZGV2OworICAgICAgICB4ZW5fOXBkZXYtPnJpbmdzW2ldLmV2dGNobiA9IC0x OworICAgICAgICB4ZW5fOXBkZXYtPnJpbmdzW2ldLmxvY2FsX3BvcnQgPSAtMTsKKworICAgICAg ICBzdHIgPSBnX3N0cmR1cF9wcmludGYoInJpbmctcmVmJXUiLCBpKTsKKyAgICAgICAgaWYgKHhl bnN0b3JlX3JlYWRfZmVfaW50KCZ4ZW5fOXBkZXYtPnhlbmRldiwgc3RyLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgJnhlbl85cGRldi0+cmluZ3NbaV0ucmVmKSA9PSAtMSkgewor ICAgICAgICAgICAgZ290byBvdXQ7CisgICAgICAgIH0KKyAgICAgICAgZ19mcmVlKHN0cik7Cisg ICAgICAgIHN0ciA9IGdfc3RyZHVwX3ByaW50ZigiZXZlbnQtY2hhbm5lbC0ldSIsIGkpOworICAg ICAgICBpZiAoeGVuc3RvcmVfcmVhZF9mZV9pbnQoJnhlbl85cGRldi0+eGVuZGV2LCBzdHIsCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmeGVuXzlwZGV2LT5yaW5nc1tpXS5ldnRj aG4pID09IC0xKSB7CisgICAgICAgICAgICBnb3RvIG91dDsKKyAgICAgICAgfQorICAgICAgICBn X2ZyZWUoc3RyKTsKKworICAgICAgICB4ZW5fOXBkZXYtPnJpbmdzW2ldLmludGYgPSAgeGVuZ250 dGFiX21hcF9ncmFudF9yZWYoCisgICAgICAgICAgICAgICAgeGVuXzlwZGV2LT54ZW5kZXYuZ250 dGFiZGV2LAorICAgICAgICAgICAgICAgIHhlbl85cGRldi0+eGVuZGV2LmRvbSwKKyAgICAgICAg ICAgICAgICB4ZW5fOXBkZXYtPnJpbmdzW2ldLnJlZiwKKyAgICAgICAgICAgICAgICBQUk9UX1JF QUQgfCBQUk9UX1dSSVRFKTsKKyAgICAgICAgaWYgKCF4ZW5fOXBkZXYtPnJpbmdzW2ldLmludGYp IHsKKyAgICAgICAgICAgIGdvdG8gb3V0OworICAgICAgICB9CisgICAgICAgIHJpbmdfb3JkZXIg PSB4ZW5fOXBkZXYtPnJpbmdzW2ldLmludGYtPnJpbmdfb3JkZXI7CisgICAgICAgIGlmIChyaW5n X29yZGVyID4gTUFYX1JJTkdfT1JERVIpIHsKKyAgICAgICAgICAgIGdvdG8gb3V0OworICAgICAg ICB9CisgICAgICAgIHhlbl85cGRldi0+cmluZ3NbaV0ucmluZ19vcmRlciA9IHJpbmdfb3JkZXI7 CisgICAgICAgIHhlbl85cGRldi0+cmluZ3NbaV0uZGF0YSA9IHhlbmdudHRhYl9tYXBfZG9tYWlu X2dyYW50X3JlZnMoCisgICAgICAgICAgICAgICAgeGVuXzlwZGV2LT54ZW5kZXYuZ250dGFiZGV2 LAorICAgICAgICAgICAgICAgICgxIDw8IHJpbmdfb3JkZXIpLAorICAgICAgICAgICAgICAgIHhl bl85cGRldi0+eGVuZGV2LmRvbSwKKyAgICAgICAgICAgICAgICB4ZW5fOXBkZXYtPnJpbmdzW2ld LmludGYtPnJlZiwKKyAgICAgICAgICAgICAgICBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFKTsKKyAg ICAgICAgaWYgKCF4ZW5fOXBkZXYtPnJpbmdzW2ldLmRhdGEpIHsKKyAgICAgICAgICAgIGdvdG8g b3V0OworICAgICAgICB9CisgICAgICAgIHhlbl85cGRldi0+cmluZ3NbaV0ucmluZy5pbiA9IHhl bl85cGRldi0+cmluZ3NbaV0uZGF0YTsKKyAgICAgICAgeGVuXzlwZGV2LT5yaW5nc1tpXS5yaW5n Lm91dCA9IHhlbl85cGRldi0+cmluZ3NbaV0uZGF0YSArCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBYRU5fRkxFWF9SSU5HX1NJWkUocmluZ19vcmRlcik7CisKKyAgICAg ICAgeGVuXzlwZGV2LT5yaW5nc1tpXS5iaCA9IHFlbXVfYmhfbmV3KHhlbl85cGZzX2JoLCAmeGVu XzlwZGV2LT5yaW5nc1tpXSk7CisgICAgICAgIHhlbl85cGRldi0+cmluZ3NbaV0ub3V0X2NvbnMg PSAwOworICAgICAgICB4ZW5fOXBkZXYtPnJpbmdzW2ldLm91dF9zaXplID0gMDsKKyAgICAgICAg eGVuXzlwZGV2LT5yaW5nc1tpXS5pbnByb2dyZXNzID0gZmFsc2U7CisKKworICAgICAgICB4ZW5f OXBkZXYtPnJpbmdzW2ldLmV2dGNobmRldiA9IHhlbmV2dGNobl9vcGVuKE5VTEwsIDApOworICAg ICAgICBpZiAoeGVuXzlwZGV2LT5yaW5nc1tpXS5ldnRjaG5kZXYgPT0gTlVMTCkgeworICAgICAg ICAgICAgZ290byBvdXQ7CisgICAgICAgIH0KKyAgICAgICAgZmNudGwoeGVuZXZ0Y2huX2ZkKHhl bl85cGRldi0+cmluZ3NbaV0uZXZ0Y2huZGV2KSwgRl9TRVRGRCwgRkRfQ0xPRVhFQyk7CisgICAg ICAgIHhlbl85cGRldi0+cmluZ3NbaV0ubG9jYWxfcG9ydCA9IHhlbmV2dGNobl9iaW5kX2ludGVy ZG9tYWluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh4ZW5f OXBkZXYtPnJpbmdzW2ldLmV2dGNobmRldiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHhlbmRldi0+ZG9tLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgeGVuXzlwZGV2LT5yaW5nc1tpXS5ldnRjaG4pOworICAgICAgICBp ZiAoeGVuXzlwZGV2LT5yaW5nc1tpXS5sb2NhbF9wb3J0ID09IC0xKSB7CisgICAgICAgICAgICB4 ZW5fcHZfcHJpbnRmKHhlbmRldiwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgInhlbmV2 dGNobl9iaW5kX2ludGVyZG9tYWluIGZhaWxlZCBwb3J0PSVkXG4iLAorICAgICAgICAgICAgICAg ICAgICAgICAgICB4ZW5fOXBkZXYtPnJpbmdzW2ldLmV2dGNobik7CisgICAgICAgICAgICBnb3Rv IG91dDsKKyAgICAgICAgfQorICAgICAgICB4ZW5fcHZfcHJpbnRmKHhlbmRldiwgMiwgImJpbmQg ZXZ0Y2huIHBvcnQgJWRcbiIsIHhlbmRldi0+bG9jYWxfcG9ydCk7CisgICAgICAgIHFlbXVfc2V0 X2ZkX2hhbmRsZXIoeGVuZXZ0Y2huX2ZkKHhlbl85cGRldi0+cmluZ3NbaV0uZXZ0Y2huZGV2KSwK KyAgICAgICAgICAgICAgICB4ZW5fOXBmc19ldnRjaG5fZXZlbnQsIE5VTEwsICZ4ZW5fOXBkZXYt PnJpbmdzW2ldKTsKKyAgICB9CisKKyAgICB4ZW5fOXBkZXYtPnNlY3VyaXR5X21vZGVsID0geGVu c3RvcmVfcmVhZF9iZV9zdHIoeGVuZGV2LCAic2VjdXJpdHlfbW9kZWwiKTsKKyAgICB4ZW5fOXBk ZXYtPnBhdGggPSB4ZW5zdG9yZV9yZWFkX2JlX3N0cih4ZW5kZXYsICJwYXRoIik7CisgICAgeGVu XzlwZGV2LT5pZCA9IHMtPmZzY29uZi5mc2Rldl9pZCA9CisgICAgICAgIGdfc3RyZHVwX3ByaW50 ZigieGVuOXAlZCIsIHhlbmRldi0+ZGV2KTsKKyAgICB4ZW5fOXBkZXYtPnRhZyA9IHMtPmZzY29u Zi50YWcgPSB4ZW5zdG9yZV9yZWFkX2ZlX3N0cih4ZW5kZXYsICJ0YWciKTsKKyAgICB2OWZzX3Jl Z2lzdGVyX3RyYW5zcG9ydChzLCAmeGVuXzlwX3RyYW5zcG9ydCk7CisgICAgZnNkZXYgPSBxZW11 X29wdHNfY3JlYXRlKHFlbXVfZmluZF9vcHRzKCJmc2RldiIpLAorICAgICAgICAgICAgcy0+ZnNj b25mLnRhZywKKyAgICAgICAgICAgIDEsIE5VTEwpOworICAgIHFlbXVfb3B0X3NldChmc2Rldiwg ImZzZHJpdmVyIiwgImxvY2FsIiwgTlVMTCk7CisgICAgcWVtdV9vcHRfc2V0KGZzZGV2LCAicGF0 aCIsIHhlbl85cGRldi0+cGF0aCwgTlVMTCk7CisgICAgcWVtdV9vcHRfc2V0KGZzZGV2LCAic2Vj dXJpdHlfbW9kZWwiLCB4ZW5fOXBkZXYtPnNlY3VyaXR5X21vZGVsLCBOVUxMKTsKKyAgICBxZW11 X29wdHNfc2V0X2lkKGZzZGV2LCBzLT5mc2NvbmYuZnNkZXZfaWQpOworICAgIHFlbXVfZnNkZXZf YWRkKGZzZGV2KTsKKyAgICB2OWZzX2RldmljZV9yZWFsaXplX2NvbW1vbihzLCBOVUxMKTsKKwog ICAgIHJldHVybiAwOworCitvdXQ6CisgICAgeGVuXzlwZnNfZnJlZSh4ZW5kZXYpOworICAgIHJl dHVybiAtMTsKIH0KIAogc3RhdGljIHZvaWQgeGVuXzlwZnNfYWxsb2Moc3RydWN0IFhlbkRldmlj ZSAqeGVuZGV2KQogeworICAgIHhlbnN0b3JlX3dyaXRlX2JlX3N0cih4ZW5kZXYsICJ2ZXJzaW9u cyIsIFZFUlNJT05TKTsKKyAgICB4ZW5zdG9yZV93cml0ZV9iZV9pbnQoeGVuZGV2LCAibWF4LXJp bmdzIiwgTUFYX1JJTkdTKTsKKyAgICB4ZW5zdG9yZV93cml0ZV9iZV9pbnQoeGVuZGV2LCAibWF4 LXJpbmctcGFnZS1vcmRlciIsIE1BWF9SSU5HX09SREVSKTsKIH0KIAogc3RhdGljIHZvaWQgeGVu XzlwZnNfZGlzY29ubmVjdChzdHJ1Y3QgWGVuRGV2aWNlICp4ZW5kZXYpCiB7CisgICAgLyogRHlu YW1pYyBob3RwbHVnIG9mIFBWIGZpbGVzeXN0ZW1zIGF0IHJ1bnRpbWUgaXMgbm90IHN1cHBvcnRl ZC4gKi8KIH0KIAogc3RydWN0IFhlbkRldk9wcyB4ZW5fOXBmc19vcHMgPSB7Ci0tIAoxLjkuMQoK Cl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fClhlbi1kZXZl bCBtYWlsaW5nIGxpc3QKWGVuLWRldmVsQGxpc3RzLnhlbi5vcmcKaHR0cHM6Ly9saXN0cy54ZW4u b3JnL3hlbi1kZXZlbAo=