From mboxrd@z Thu Jan 1 00:00:00 1970 From: Anthony PERARD Subject: Re: [PATCH v5 03/15] libxl_qmp: Implement fd callback and read data [and 1 more messages] Date: Mon, 29 Oct 2018 15:52:31 +0000 Message-ID: <20181029155231.GC6481@perard.uk.xensource.com> References: <20181015151630.3887-1-ian.jackson@eu.citrix.com> <20180907151104.32306-1-anthony.perard@citrix.com> <20180907151104.32306-4-anthony.perard@citrix.com> <23486.7932.781238.747508@mariner.uk.xensource.com> <20181011140604.GH1331@perard.uk.xensource.com> <23492.49624.248349.953540@mariner.uk.xensource.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from us1-rack-dfw2.inumbo.com ([104.130.134.6]) by lists.xenproject.org with esmtp (Exim 4.89) (envelope-from ) id 1gH9qL-0005Eq-IE for xen-devel@lists.xenproject.org; Mon, 29 Oct 2018 15:52:41 +0000 Content-Disposition: inline In-Reply-To: <23492.49624.248349.953540@mariner.uk.xensource.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Errors-To: xen-devel-bounces@lists.xenproject.org Sender: "Xen-devel" To: Ian Jackson Cc: xen-devel@lists.xenproject.org, Wei Liu List-Id: xen-devel@lists.xenproject.org T24gTW9uLCBPY3QgMTUsIDIwMTggYXQgMDU6MzU6MzZQTSArMDEwMCwgSWFuIEphY2tzb24gd3Jv dGU6Cj4gPiArc3RhdGljIGludCBxbXBfZXJyb3JfY2xhc3NfdG9fbGlieGxfZXJyb3JfY29kZShj b25zdCBsaWJ4bF9fcW1wX2Vycm9yX2NsYXNzIGMpCj4gPiArewo+ID4gKyAgICBzd2l0Y2ggKGMp IHsKPiA+ICsgICAgY2FzZSBMSUJYTF9fUU1QX0VSUk9SX0NMQVNTX0dFTkVSSUNFUlJPUjoKPiA+ ICsgICAgICAgIHJldHVybiBFUlJPUl9RTVBfR0VORVJJQ19FUlJPUjsKPiA+ICsgICAgY2FzZSBM SUJYTF9fUU1QX0VSUk9SX0NMQVNTX0NPTU1BTkROT1RGT1VORDoKPiA+ICsgICAgICAgIHJldHVy biBFUlJPUl9RTVBfQ09NTUFORF9OT1RfRk9VTkQ7Cj4gPiArICAgIGNhc2UgTElCWExfX1FNUF9F UlJPUl9DTEFTU19ERVZJQ0VOT1RGT1VORDoKPiA+ICsgICAgICAgIHJldHVybiBFUlJPUl9RTVBf REVWSUNFX05PVF9GT1VORDsKPiAKPiBVcmdoLiAgVGhlIHNsaWdodGx5IGRpZmZlcmVudCBuYW1l cyBtZWFucyB0aGF0IHRoaXMgY2FuJ3QgYmUKPiBtYWNyby1pZmllZC4gIFdpdGhvdXQgdGhhdCwg aXQgd291bGQgYmUgcmVhbGx5IGVhc3kgZm9yIHNvbWVvbmUgaW4gdGhlCj4gZnV0dXJlIHRvIGFj Y2lkZW50YWxseSB3cml0ZSBzb21ldGhpbmcgbGlrZSB0aGlzOgo+Cj4gPiArICAgIGNhc2UgTElC WExfX1FNUF9FUlJPUl9DTEFTU19HRU5FUklDRVJST1I6Cj4gPiArICAgICAgICByZXR1cm4gRVJS T1JfUU1QX0dFTkVSSUNfRVJST1I7Cj4gPiArICAgIGNhc2UgTElCWExfX1FNUF9FUlJPUl9DTEFT U19DT01NQU5ETk9URk9VTkQ6Cj4gPiArICAgICAgICByZXR1cm4gRVJST1JfUU1QX0dFTkVSSUNf RVJST1I7Cj4gPiArICAgIGNhc2UgTElCWExfX1FNUF9FUlJPUl9DTEFTU19ERVZJQ0VOT1RGT1VO RDoKPiA+ICsgICAgICAgIHJldHVybiBFUlJPUl9RTVBfREVWSUNFX05PVF9GT1VORDsKPiAKPiBh bmQgaXQncyBoYXJkIHRvIHNwb3QuCj4gCj4gV2hhdCBhcmUgTElCWExfX1FNUF9FUlJPUl9DTEFT U2VzIGFuZCB3aHkgYXJlIHRoZXkgZXZlbiBkaWZmZXJlbnQgZnJvbQo+IEVSUk9SXyogdmFsdWVz ID8gIE1heWJlIG9uZSBvZiB0aGVtIGlzIHRoZSBRTVAgaW50ZWdlciB2YWx1ZXMgYW5kIG9uZQo+ IG9mIHRoZW0gaXMgdGhlIGNvcnJlc3BvbmRpbmcgbGlieGwgaW50ZWdlciB2YWx1ZXMgPwoKVGhl IGlzc3VlIGhlcmUgaXMgdGhhdCwgaW4gUU1QLCB0aGUgZXJyb3IgaXMgYSBzdHJpbmcgYW5kIGlu IGNhbWVsIGNhc2UsCmUuZy4gIkdlbmVyaWNFcnJvciIuICBJJ3ZlIHVzZSB0aGUgaWRsIHRvIGdl bmVyYXRlIGFuIGVudW0gZnJvbSB0aGUKZGlmZmVyZW50IGVycm9yIHN0cmluZ3MuCgo+IEFueXdh eSwgY2FuIHdlIG5vdCBtYWtlIHRoaXMgbGVzcyBvcGVuLWNvZGVkIHNvbWVob3cuCgpJIGNvdWxk IHJlbW92ZSBzb21lIHVuZGVyc2NvcmVzICdfJyBmcm9tIHRoZSBsaWJ4bCBFUlJPUl8qIGludGVn ZXIKdmFsdWVzLCBlLmcuIEVSUk9SX1FNUF9HRU5FUklDRVJST1IuIEJ1dCBpZiB5b3UgaGF2ZSBh IGJldHRlciBzdWdnZXN0aW9uCm9uIGhvdyB0byB0cmFuc2Zvcm0gIkNvbW1hbmROb3RGb3VuZCIg aW50byBhIEVSUk9SX1FNUF8qLCBJJ2xsIHRha2UgaXQuCgo+ID4gKyAgICBkZWZhdWx0Ogo+ID4g KyAgICAgICAgYWJvcnQoKTsKPiAKPiBCdXQgd2hhdCBoYXBwZW5zIGlmIHFlbXUgaW52ZW50cyBh IG5ldyBlcnJvciBjb2RlID8gIEkgZG9uJ3QgdGhpbmsKPiBhYm9ydGluZyBpcyBsaWtlbHkgdG8g YmUgcmlnaHQuCgpJZiBxZW11IGludmVudCBhIG5ldyBlcnJvciBjb2RlLCBsaWJ4bCBzaG91bGQg bm90IGNhbGwKcW1wX2Vycm9yX2NsYXNzX3RvX2xpYnhsX2Vycm9yX2NvZGUoKSwgYmVjYXVzZSBs aWJ4bCB3b3VsZCBub3QgaGF2ZSBiZWVuCmFibGUgdG8gZ2VuZXJhdGUgYSBsaWJ4bF9fcW1wX2Vy cm9yX2NsYXNzIGZyb20gdGhlIG5ldyBlcnJvciBjb2RlLgoKQnV0IEkgY291bGQgYWRkIGFuIGFz c2VydChmYWxzZSkgYW5kIHJldHVybiBFUlJPUl9GQUlMIGluc3RlYWQgb2YgdGhlCmFib3J0LgoK PiA+ICsvKiByZXR1cm4gMSB3aGVuIGEgdXNlciBjYWxsYmFjayBhcyBiZWVuIGNhbGxlZCAqLwo+ ID4gK3N0YXRpYyBpbnQgcW1wX2V2X2hhbmRsZV9yZXNwb25zZShsaWJ4bF9fZWdjICplZ2MsCj4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhsX19ldl9xbXAgKmV2LAo+ ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBsaWJ4bF9fanNvbl9v YmplY3QgKnJlc3AsCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnhs X19xbXBfbWVzc2FnZV90eXBlIHR5cGUpCj4gPiArewo+ID4gKyAgICBFR0NfR0M7Cj4gPiArICAg IGNvbnN0IGxpYnhsX19qc29uX29iamVjdCAqcmVzcG9uc2U7Cj4gPiArICAgIGNvbnN0IGxpYnhs X19qc29uX29iamVjdCAqbzsKPiA+ICsgICAgaW50IHJjOwo+ID4gKyAgICBpbnQgaWQ7Cj4gPiAr Cj4gPiArICAgIG8gPSBsaWJ4bF9fanNvbl9tYXBfZ2V0KCJpZCIsIHJlc3AsIEpTT05fSU5URUdF Uik7Cj4gPiArICAgIGlmICghbykgewo+ID4gKyAgICAgICAgY29uc3QgY2hhciAqZXJyb3JfZGVz YzsKPiA+ICsKPiA+ICsgICAgICAgIC8qIHVuZXhwZWN0ZWQgbWVzc2FnZSwgYXR0ZW1wdCB0byBm aW5kIGFuIGVycm9yIGRlc2NyaXB0aW9uICovCj4gPiArICAgICAgICBvID0gbGlieGxfX2pzb25f bWFwX2dldCgiZXJyb3IiLCByZXNwLCBKU09OX01BUCk7Cj4gPiArICAgICAgICBvID0gbGlieGxf X2pzb25fbWFwX2dldCgiZGVzYyIsIG8sIEpTT05fU1RSSU5HKTsKPiAKPiBXaGF0IGlzIHRoZSBk ZWFkIHN0b3JlIGZyb20gImVycm9yIiBkb2luZyA/CgpJdCdzIG5vdCBkZWFkLCBJIHJldXNlICJv IiwgYXMgSSBnZXQgImRlc2MiIGZyb20gIm8iLgpJIGNvdWxkIGp1c3QgY3JlYXRlIG5ldyB2YXJp YWJsZXMgaGVyZSBpbnN0ZWFkIG9mIHJldXNpbmcgdGhlIHNhbWUgb25lCihvKSBvdmVyIGFuZCBv dmVyIGFnYWluLCBlLmcuIG9ial9pZCwgb2JqX2Vycm9yLCBvYmpfZGVzYy4KClNob3VsZCBJIGFk ZCBoZXJlIHRoYXQgd2UgYXJlIHBhcnNpbmc6IHsiZXJyb3IiOnsiZGVzYyI6IFggfX0gPwoKPiA+ ICsgICAgc3dpdGNoICh0eXBlKSB7Cj4gPiArICAgIGNhc2UgTElCWExfX1FNUF9NRVNTQUdFX1RZ UEVfUkVUVVJOOiB7Cj4gPiArICAgICAgICByZXNwb25zZSA9IGxpYnhsX19qc29uX21hcF9nZXQo InJldHVybiIsIHJlc3AsIEpTT05fQU5ZKTsKPiA+ICsgICAgICAgIHJjID0gMDsKPiA+ICsgICAg ICAgIGJyZWFrOwo+ID4gKyAgICB9Cj4gPiArICAgIGNhc2UgTElCWExfX1FNUF9NRVNTQUdFX1RZ UEVfRVJST1I6IHsKPiA+ICsgICAgICAgIGNvbnN0IGNoYXIgKnM7Cj4gPiArICAgICAgICBjb25z dCBsaWJ4bF9fanNvbl9vYmplY3QgKmVycjsKPiA+ICsgICAgICAgIGxpYnhsX19xbXBfZXJyb3Jf Y2xhc3MgZXJyb3JfY2xhc3M7Cj4gPiArCj4gPiArICAgICAgICByYyA9IEVSUk9SX0ZBSUw7Cj4g PiArICAgICAgICByZXNwb25zZSA9IE5VTEw7Cj4gPiArCj4gPiArICAgICAgICBlcnIgPSBsaWJ4 bF9fanNvbl9tYXBfZ2V0KCJlcnJvciIsIHJlc3AsIEpTT05fTUFQKTsKPiA+ICsgICAgICAgIG8g PSBsaWJ4bF9fanNvbl9tYXBfZ2V0KCJjbGFzcyIsIGVyciwgSlNPTl9TVFJJTkcpOwo+ID4gKyAg ICAgICAgcyA9IGxpYnhsX19qc29uX29iamVjdF9nZXRfc3RyaW5nKG8pOwo+ID4gKyAgICAgICAg aWYgKHMgJiYgIWxpYnhsX19xbXBfZXJyb3JfY2xhc3NfZnJvbV9zdHJpbmcocywgJmVycm9yX2Ns YXNzKSkKPiA+ICsgICAgICAgICAgICByYyA9IHFtcF9lcnJvcl9jbGFzc190b19saWJ4bF9lcnJv cl9jb2RlKGVycm9yX2NsYXNzKTsKPiA+ICsKPiA+ICsgICAgICAgIG8gPSBsaWJ4bF9fanNvbl9t YXBfZ2V0KCJkZXNjIiwgZXJyLCBKU09OX1NUUklORyk7Cj4gPiArICAgICAgICBzID0gbGlieGxf X2pzb25fb2JqZWN0X2dldF9zdHJpbmcobyk7Cj4gPiArICAgICAgICBpZiAocykKPiA+ICsgICAg ICAgICAgICBMT0dEKEVSUk9SLCBldi0+ZG9taWQsICIlcyIsIHMpOwo+ID4gKwo+ID4gKyAgICAg ICAgYnJlYWs7Cj4gCj4gU3VyZWx5IHRoaXMgc2hvdWxkIHByaW50IG1vcmUgZGVidWdnaW5nIChv ciBtYXliZSBldmVuIGVycm9yIGxvZwo+IG1lc3NhZ2VzKSBpZiB0aGUgZXJyb3IganNvbiBkb2N1 bWVudCB3YXMgbm90IGluIHRoZSBleHBlY3RlZCBmb3JtID8KCkRvIHlvdSBtZWFuIHRoYXQgaWYg dGhlIFFNUCBzZXJ2ZXIgZG9lc24ndCByZXNwZWN0IHRoZSBRTVAgcHJvdG9jb2wsIEkKc2hvdWxk IHByaW50IG1vcmUgZGVidWcgaGVyZT8KCklmIHdlIGFyZSBhdCB0aGlzIHBvaW50IGluIHRoZSBw cm9ncmFtbWUsIHdlIGtub3cgdGhhdCB0aGUgc2VydmVyIHNlbnQ6CnsiZXJyb3IiOiBYIH0KCkkn bSB0ZW1wdGVkIHRvIHNheSB0aGF0IGlmICJjbGFzcyIgb3IgImRlc2MiIGlzbid0IHByZXNlbnQs IHdlIGNvdWxkIHNheQpzbyBhbmQgZGVjbGFyZSB0aGUgc2VydmVyIGJyb2tlbiAoYW5kIGRpc2Nv bm5lY3QpLgoKPiA+ICsgICAgICAgIC8qIEZpbmRvdXQgaG93IG11Y2ggY2FuIGJlIHBhcnNlZCAq Lwo+ID4gKyAgICAgICAgc2l6ZV90IGxlbiA9IGVuZCAtIHM7Cj4gPiArCj4gPiArICAgICAgICBM T0dfUU1QKCJwYXJzaW5nICVsdUI6ICclLipzJyIsIGxlbiwgKGludClsZW4sIHMpOwo+ID4gKwo+ ID4gKyAgICAgICAgLyogUmVwbGFjZSBcbiBieSBcMCBzbyB0aGF0IGxpYnhsX19qc29uX3BhcnNl IGNhbiB1c2Ugc3RybGVuICovCj4gPiArICAgICAgICBzW2xlbiAtIDFdID0gJ1wwJzsKPiAKPiBE b2Vzbid0IHRoaXMgZmVlZCB0aGUgXHIgdG8gbGlieGxfX2pzb25fcGFyc2UgPwo+IAo+IEFsc28s IHdoeSBkb2VzIHRoaXMgaGF2ZSB0byBiZSBhIGxvb3AgPyAgRG9lcyBxZW11IHJlYWxseSBzZW5k Cj4gbXVsdGlwbGUganNvbiBkb2N1bWVudHMgZW5kIHRvIGVuZCwgYW5kIG9ubHkgc29tZXRpbWVz IHdpdGgKPiBpbnRlcnZlbmluZyBcclxuID8gIERvZXMgaXQgZXZlciBzZW5kIGEganNvbiBkb2N1 bWVudCB3aXRob3V0IFxyXG4gYXQKPiB0aGUgZW5kIGFuZCB0aGVuIHN0b3Agc3BlYWtpbmcgZm9y IGEgd2hpbGUgPwoKUUVNVSB3aWxsIHNlbmQgdHdvIG1lc3NhZ2VzIGF0IG9uY2UsIGUuZy4gd2hl biBhc2tpbmcgdG8gZWplY3Qgb3IgY2hhbmdlCnRoZSBjZHJvbSwgUUVNVSB3aWxsIG9mdGVuIHNl bmQgdGhlIHJlc3BvbnNlIHRvIG91ciBjb21tYW5kIGFuZCBhbiBldmVudAphdCB0aGUgc2FtZSB0 aW1lLiBTbyB3ZSBuZWVkIGEgbG9vcCB0byBwYXJzZSBhbGwgbWVzc2FnZXMgcmVjZWl2ZWQuCgpC dXQgdGhlcmUgaXMgYWx3YXlzIGEgXHJcbiBhdCB0aGUgZW5kIG9mIGV2ZXJ5IGNvbW1hbmRzLgoK PiA+ICsgICAgICAgIGV2LT5idWZfY29uc3VtZWQgKz0gbGVuOwo+ID4gKwo+ID4gKyAgICAgICAg aWYgKGV2LT5idWZfY29uc3VtZWQgPj0gZXYtPmJ1Zl91c2VkKSB7Cj4gPiArICAgICAgICAgICAg ZnJlZShldi0+cnhfYnVmKTsKPiAKPiBTdXJlbHkgYnVmX2NvbnN1bWVkIDw9IGJ1Zl91c2VkID8g IE1heWJlIHlvdSBzaG91bGQgYXNzZXJ0IHRoYXQuCgpJJ20gYXR0ZW1wdGluZyB0byBkZXRlY3Qg aGVyZSBpZiB0aGVyZSdzIHNvbWV0aGluZyBsZWZ0IGluIHRoZSBidWZmZXIKdGhhdCBoYXNuJ3Qg YmVlbiBwYXJzZWQgeWV0LiBJZiB0aGVyZSBpcyBub3RoaW5nIGxlZnQsIHdlIGNhbiBmcmVlIHRo ZQpidWZmZXIuCgpPciBkbyB5b3UgbWVhbiB0aGF0IHRoZSBjb25kaXRpb24gc2hvdWxkIGJlIGJ1 Zl9jb25zdW1lZCA9PSBidWZfdXNlZCA/Cgo+ID4gK3N0YXRpYyBpbnQgcW1wX2V2X2NhbGxiYWNr X3dyaXRhYmxlKGxpYnhsX19nYyAqZ2MsIGxpYnhsX19ldl9xbXAgKmV2LCBpbnQgZmQpCj4gPiAr ewo+ID4gKyAgICBpbnQgcmM7Cj4gPiArICAgIGNoYXIgKmJ1ZjsKPiA+ICsgICAgc2l6ZV90IGxl bjsKPiA+ICsgICAgaW50IHNlbmRfZmQgPSAtMTsKPiA+ICsKPiA+ICsgICAgLyogTm8gbmVlZCB0 byBjYWxsIHFtcF9ldl9jYWxsYmFja193cml0YWJsZSBhZ2FpbiwgZXZlcnl0aGluZyB0aGF0IG5l ZWRzIHRvCj4gPiArICAgICAqIGJlIHNlbmQgZm9yIG5vdyB3aWxsIGJlIGluIHRoaXMgY2FsbC4g Ki8KPiAKPiBTbyB5b3UgZ3VhcmFudGVlIG5ldmVyIHRvIHNlbmQgYW55IG1lc3NhZ2Ugd2hpY2gg aXMgdG9vIGxhcmdlIHRvIGZpdAo+IGludG8gYSBzb2NrZXQgYnVmZmVyID8gIERvIHlvdSBrbm93 IHdoYXQgdGhhdCBsZW5ndGggaXMgPwoKSSdtIHVzaW5nIGxpYnhsX3dyaXRlX2V4YWN0bHkoKS4K Ck9uIHRoZSBvdGhlciBlbmQsIEkndmUganVzdCByZWFsaXplIHRoYXQgSSdtIGFsc28gdXNpbmcK bGlieGxfX3NlbmRtc2dfZmRzKCksIHdoaWNoIEkgZ3Vlc3MgbWF5IG5vdCBzZW5kIGV2ZXJ5dGhp bmcuIEJ1dCB0aGUKZnVuY3Rpb24gYWxzbyBkb2Vzbid0IHNlZW1zIHRvIHRoZSBjYWxsZXIga25v dyBob3cgbXVjaCBoYXZlIGJlZW4gc2VudC4KClNob3VsZCBJIGtlZXAgdXNpbmcgbGlieGxfd3Jp dGVfZXhhY3RseSgpID8KSSdtIGdvaW5nIHRvIG5lZWQgdG8gYmUgYWJsZSB0byB0cmFjayBob3cg bXVjaCBkYXRhIGhhdmUgYmVlbiBzZW50IGZvcgphdCBsZWFzdCBzZW5kbXNnKCkgYW55d2F5LCBh bmQgdHJ5IGFnYWluIGxhdGVyLgoKPiA+ICtzdGF0aWMgdm9pZCBxbXBfZXZfY2FsbGJhY2tfZXJy b3IobGlieGxfX2VnYyAqZWdjLCBsaWJ4bF9fZXZfcW1wICpldikKPiA+ICt7Cj4gPiArICAgIEVH Q19HQzsKPiA+ICsKPiA+ICsgICAgTE9HRChFUlJPUiwgZXYtPmRvbWlkLCAiRXJyb3IgaGFwcGVu ZCB3aXRoIHRoZSBRTVAgY29ubmVjdGlvbiB0byBRRU1VIik7Cj4gPiArCj4gPiArICAgIC8qIE9u IGVycm9yLCBkZWFsbG9jYXRlIGFsbCBwcml2YXRlIHJlc3NvdXJjZXMgKi8KPiA+ICsgICAgbGli eGxfX2V2X3FtcF9kaXNwb3NlKGdjLCBldik7Cj4gCj4gVGhpcyBzdXJlbHkgbmVlZHMgdG8gc2V0 IHRoZSBzdGF0ZS4gIFByZXN1bWFibHkgdGhhdCBzaG91bGQgYmUgZG9uZSBpbgo+IGxpYnhsX19l dl9xbXBfZGlzcG9zZSBidXQgQUZBSUNUIGl0IGlzbid0LgoKSXQgaXMgZG9uZSBieSBsaWJ4bF9f ZXZfcW1wX2luaXQsIHdoaWNoIF9kaXNwb3NlIGNhbGxzLCBpdG4ndCB0aGF0CmVub3VnaD8KCj4g PiArdm9pZCBsaWJ4bF9fZXZfcW1wX2luaXQobGlieGxfX2V2X3FtcCAqZXYpCj4gPiArewo+ID4g KyAgICBldi0+aWQgPSAtMTsKPiA+ICsKPiA+ICsgICAgZXYtPnFtcF9jZmQgPSBOVUxMOwo+ID4g KyAgICBsaWJ4bF9fZXZfZmRfaW5pdCgmZXYtPnFtcF9lZmQpOwo+ID4gKyAgICBldi0+cW1wX3N0 YXRlID0gcW1wX3N0YXRlX2Rpc2Nvbm5lY3RlZDsKPiA+ICsgICAgZXYtPmxhc3RfaWRfdXNlZCA9 IFFNUF9DQVBBQklMSVRZX05FR09USUFUSU9OX01TR0lEICsgMTsKPiAKPiBHb2luZyBiYWNrIGEg Yml0LCBlYXJsaWVyIHdlIGhhZDoKPiAKPiA+ICsjZGVmaW5lIFFNUF9DQVBBQklMSVRZX05FR09U SUFUSU9OX01TR0lEIDEKPiAKPiBJIHJlY29tbWVuZCB1c2luZyBhIGRpZmZlcmVudCB2YWx1ZS4g IENhbiB3ZSBzYWZlbHkgbGV0IHRoaXMgd3JhcCA/Cj4gSWYgc28gbWF5YmUgd2UgY291bGQgdXNl IDB4Nzg2YzcxMDAgd2hpY2ggc3BlbGxzICJ4bHFcMCIgb3Igc29tZXRoaW5nLgo+IFRoaXMgY2Fu IG1ha2UgaXQgZWFzaWVyIHRvIHNlZSB3aGVyZSByb2d1ZSB2YWx1ZXMgYXJlIGNvbWluZyBmcm9t LCB0bwo+IGRpc3Rpbmd1aXNoIGFyZ3VtZW50cyBpbiBkZWJ1ZyBvdXRwdXQsIGV0Yy4KCklEIGNh biBiZSBzdHJpbmcsIG9yIGFueSBqc29uIHZhbHVlLiBNYXliZSB3ZSBjb3VsZCBoYXZlCnsibGli eGwtaWQiOiBudW1iZXJ9IGFzICJpZCI/CkJ1dCAweDc4NmM3MTAwIGFzIHN0YXJ0aW5nIHBvaW50 IHdvdWxkIHdvcmsgZmluZSBhcyB3ZWxsLgpJIGRvbid0IHRoaW5rIGl0IG1hdHRlciBpZiB0aGUg dmFsdWUgd3JhcC4gQmVzaWRlIGFkZGluZyAxIHRvIGdlbmVyYXRlIGEKbmV3IGlkLCBhbmQgY29t cGFyZSwgSSBkb24ndCB0aGluayB0aGUgaWQgc2hvdWxkIGJlIHVzZSBmb3IgYW55dGhpbmcKZWxz ZS4KClRoYW5rcywKCi0tIApBbnRob255IFBFUkFSRAoKX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX18KWGVuLWRldmVsIG1haWxpbmcgbGlzdApYZW4tZGV2ZWxA bGlzdHMueGVucHJvamVjdC5vcmcKaHR0cHM6Ly9saXN0cy54ZW5wcm9qZWN0Lm9yZy9tYWlsbWFu L2xpc3RpbmZvL3hlbi1kZXZlbA==