From mboxrd@z Thu Jan 1 00:00:00 1970 From: Gustavo Padovan Subject: Re: [PATCH 2/2] drm/amdgpu: add the interface of waiting multiple fences (v4) Date: Tue, 8 Nov 2016 09:36:40 +0900 Message-ID: <20161108003640.GM3327@joana> References: <1478290570-30982-1-git-send-email-alexander.deucher@amd.com> <1478290570-30982-2-git-send-email-alexander.deucher@amd.com> <20161107011045.GJ3327@joana> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Content-Disposition: inline In-Reply-To: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Christian =?iso-8859-1?Q?K=F6nig?= Cc: Junwei Zhang , Alex Deucher , dri-devel@lists.freedesktop.org, amd-gfx@lists.freedesktop.org List-Id: amd-gfx.lists.freedesktop.org MjAxNi0xMS0wNyBDaHJpc3RpYW4gS8O2bmlnIDxkZWF0aHNpbXBsZUB2b2RhZm9uZS5kZT46Cgo+ IEFtIDA3LjExLjIwMTYgdW0gMDI6MTAgc2NocmllYiBHdXN0YXZvIFBhZG92YW46Cj4gPiBIaSBB bGV4LAo+ID4gCj4gPiAyMDE2LTExLTA0IEFsZXggRGV1Y2hlciA8YWxleGRldWNoZXJAZ21haWwu Y29tPjoKPiA+IAo+ID4gPiBGcm9tOiBKdW53ZWkgWmhhbmcgPEplcnJ5LlpoYW5nQGFtZC5jb20+ Cj4gPiA+IAo+ID4gPiB2MjogYWdkOiByZWJhc2UgYW5kIHNxdWFzaCBpbiBhbGwgdGhlIHByZXZp b3VzIG9wdGltaXphdGlvbnMgYW5kCj4gPiA+IGNoYW5nZXMgc28gZXZlcnl0aGluZyBjb21waWxl cy4KPiA+ID4gdjM6IHNxdWFzaCBpbiBTbGF2YSdzIDMyYml0IGJ1aWxkIGZpeAo+ID4gPiB2NDog cmViYXNlIG9uIGRybS1uZXh0IChmZW5jZSAtPiBkbWFfZmVuY2UpLAo+ID4gPiAgICAgIHNxdWFz aCBpbiBNb25rJ3MgaW9jdGwgdXBkYXRlIHBhdGNoCj4gPiA+IAo+ID4gPiBTaWduZWQtb2ZmLWJ5 OiBKdW53ZWkgWmhhbmcgPEplcnJ5LlpoYW5nQGFtZC5jb20+Cj4gPiA+IFJldmlld2VkLWJ5OiBN b25rIExpdSA8bW9uay5saXVAYW1kLmNvbT4KPiA+ID4gUmV2aWV3ZWQtYnk6IEphbW15IFpob3Ug PEphbW15Llpob3VAYW1kLmNvbT4KPiA+ID4gU2lnbmVkLW9mZi1ieTogQWxleCBEZXVjaGVyIDxh bGV4YW5kZXIuZGV1Y2hlckBhbWQuY29tPgo+ID4gPiAtLS0KPiA+ID4gICBkcml2ZXJzL2dwdS9k cm0vYW1kL2FtZGdwdS9hbWRncHUuaCAgICAgfCAgIDIgKwo+ID4gPiAgIGRyaXZlcnMvZ3B1L2Ry bS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jICB8IDE3MyArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKwo+ID4gPiAgIGRyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9rbXMuYyB8 ICAgMSArCj4gPiA+ICAgZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X3NhLmMgIHwg ICAyICstCj4gPiA+ICAgaW5jbHVkZS91YXBpL2RybS9hbWRncHVfZHJtLmggICAgICAgICAgIHwg IDI4ICsrKysrKwo+ID4gPiAgIDUgZmlsZXMgY2hhbmdlZCwgMjA1IGluc2VydGlvbnMoKyksIDEg ZGVsZXRpb24oLSkKPiA+ID4gCj4gPiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vYW1k L2FtZGdwdS9hbWRncHUuaCBiL2RyaXZlcnMvZ3B1L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oCj4g PiA+IGluZGV4IGRjOThjZWIuLjdhOTRhM2MgMTAwNjQ0Cj4gPiA+IC0tLSBhL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdS5oCj4gPiA+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9hbWQv YW1kZ3B1L2FtZGdwdS5oCj4gPiA+IEBAIC0xMjEyLDYgKzEyMTIsOCBAQCBpbnQgYW1kZ3B1X2dl bV9vcF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ID4gPiAgIAkJ CXN0cnVjdCBkcm1fZmlsZSAqZmlscCk7Cj4gPiA+ICAgaW50IGFtZGdwdV9jc19pb2N0bChzdHJ1 Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbHApOwo+ ID4gPiAgIGludCBhbWRncHVfY3Nfd2FpdF9pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2 b2lkICpkYXRhLCBzdHJ1Y3QgZHJtX2ZpbGUgKmZpbHApOwo+ID4gPiAraW50IGFtZGdwdV9jc193 YWl0X2ZlbmNlc19pb2N0bChzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LCB2b2lkICpkYXRhLAo+ID4g PiArCQkJCXN0cnVjdCBkcm1fZmlsZSAqZmlscCk7Cj4gPiA+ICAgaW50IGFtZGdwdV9nZW1fbWV0 YWRhdGFfaW9jdGwoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgdm9pZCAqZGF0YSwKPiA+ID4gICAJ CQkJc3RydWN0IGRybV9maWxlICpmaWxwKTsKPiA+ID4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS9hbWQvYW1kZ3B1L2FtZGdwdV9jcy5jIGIvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUv YW1kZ3B1X2NzLmMKPiA+ID4gaW5kZXggMjcyODgwNS4uMjAwNDgzNiAxMDA2NDQKPiA+ID4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmMKPiA+ID4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2FtZC9hbWRncHUvYW1kZ3B1X2NzLmMKPiA+ID4gQEAgLTExMzAsNiArMTEz MCwxNzkgQEAgaW50IGFtZGdwdV9jc193YWl0X2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYs IHZvaWQgKmRhdGEsCj4gPiA+ICAgfQo+ID4gPiAgIC8qKgo+ID4gPiArICogYW1kZ3B1X2NzX2dl dF9mZW5jZSAtIGhlbHBlciB0byBnZXQgZmVuY2UgZnJvbSBkcm1fYW1kZ3B1X2ZlbmNlCj4gPiA+ ICsgKgo+ID4gPiArICogQGFkZXY6IGFtZGdwdSBkZXZpY2UKPiA+ID4gKyAqIEBmaWxwOiBmaWxl IHByaXZhdGUKPiA+ID4gKyAqIEB1c2VyOiBkcm1fYW1kZ3B1X2ZlbmNlIGNvcGllZCBmcm9tIHVz ZXIgc3BhY2UKPiA+ID4gKyAqLwo+ID4gPiArc3RhdGljIHN0cnVjdCBkbWFfZmVuY2UgKmFtZGdw dV9jc19nZXRfZmVuY2Uoc3RydWN0IGFtZGdwdV9kZXZpY2UgKmFkZXYsCj4gPiA+ICsJCQkJCSAg ICAgc3RydWN0IGRybV9maWxlICpmaWxwLAo+ID4gPiArCQkJCQkgICAgIHN0cnVjdCBkcm1fYW1k Z3B1X2ZlbmNlICp1c2VyKQo+ID4gPiArewo+ID4gPiArCXN0cnVjdCBhbWRncHVfcmluZyAqcmlu ZzsKPiA+ID4gKwlzdHJ1Y3QgYW1kZ3B1X2N0eCAqY3R4Owo+ID4gPiArCXN0cnVjdCBkbWFfZmVu Y2UgKmZlbmNlOwo+ID4gPiArCWludCByOwo+ID4gPiArCj4gPiA+ICsJciA9IGFtZGdwdV9jc19n ZXRfcmluZyhhZGV2LCB1c2VyLT5pcF90eXBlLCB1c2VyLT5pcF9pbnN0YW5jZSwKPiA+ID4gKwkJ CSAgICAgICB1c2VyLT5yaW5nLCAmcmluZyk7Cj4gPiA+ICsJaWYgKHIpCj4gPiA+ICsJCXJldHVy biBFUlJfUFRSKHIpOwo+ID4gPiArCj4gPiA+ICsJY3R4ID0gYW1kZ3B1X2N0eF9nZXQoZmlscC0+ ZHJpdmVyX3ByaXYsIHVzZXItPmN0eF9pZCk7Cj4gPiA+ICsJaWYgKGN0eCA9PSBOVUxMKQo+ID4g PiArCQlyZXR1cm4gRVJSX1BUUigtRUlOVkFMKTsKPiA+ID4gKwo+ID4gPiArCWZlbmNlID0gYW1k Z3B1X2N0eF9nZXRfZmVuY2UoY3R4LCByaW5nLCB1c2VyLT5zZXFfbm8pOwo+ID4gPiArCWFtZGdw dV9jdHhfcHV0KGN0eCk7Cj4gPiA+ICsKPiA+ID4gKwlyZXR1cm4gZmVuY2U7Cj4gPiA+ICt9Cj4g PiA+ICsKPiA+ID4gKy8qKgo+ID4gPiArICogYW1kZ3B1X2NzX3dhaXRfYWxsX2ZlbmNlIC0gd2Fp dCBvbiBhbGwgZmVuY2VzIHRvIHNpZ25hbAo+ID4gPiArICoKPiA+ID4gKyAqIEBhZGV2OiBhbWRn cHUgZGV2aWNlCj4gPiA+ICsgKiBAZmlscDogZmlsZSBwcml2YXRlCj4gPiA+ICsgKiBAd2FpdDog d2FpdCBwYXJhbWV0ZXJzCj4gPiA+ICsgKiBAZmVuY2VzOiBhcnJheSBvZiBkcm1fYW1kZ3B1X2Zl bmNlCj4gPiA+ICsgKi8KPiA+ID4gK3N0YXRpYyBpbnQgYW1kZ3B1X2NzX3dhaXRfYWxsX2ZlbmNl cyhzdHJ1Y3QgYW1kZ3B1X2RldmljZSAqYWRldiwKPiA+ID4gKwkJCQkgICAgIHN0cnVjdCBkcm1f ZmlsZSAqZmlscCwKPiA+ID4gKwkJCQkgICAgIHVuaW9uIGRybV9hbWRncHVfd2FpdF9mZW5jZXMg KndhaXQsCj4gPiA+ICsJCQkJICAgICBzdHJ1Y3QgZHJtX2FtZGdwdV9mZW5jZSAqZmVuY2VzKQo+ ID4gPiArewo+ID4gPiArCXVpbnQzMl90IGZlbmNlX2NvdW50ID0gd2FpdC0+aW4uZmVuY2VfY291 bnQ7Cj4gPiA+ICsJdW5zaWduZWQgaTsKPiA+ID4gKwlsb25nIHIgPSAxOwo+ID4gPiArCj4gPiA+ ICsJZm9yIChpID0gMDsgaSA8IGZlbmNlX2NvdW50OyBpKyspIHsKPiA+ID4gKwkJc3RydWN0IGRt YV9mZW5jZSAqZmVuY2U7Cj4gPiA+ICsJCXVuc2lnbmVkIGxvbmcgdGltZW91dCA9IGFtZGdwdV9n ZW1fdGltZW91dCh3YWl0LT5pbi50aW1lb3V0X25zKTsKPiA+ID4gKwo+ID4gPiArCQlmZW5jZSA9 IGFtZGdwdV9jc19nZXRfZmVuY2UoYWRldiwgZmlscCwgJmZlbmNlc1tpXSk7Cj4gPiA+ICsJCWlm IChJU19FUlIoZmVuY2UpKQo+ID4gPiArCQkJcmV0dXJuIFBUUl9FUlIoZmVuY2UpOwo+ID4gPiAr CQllbHNlIGlmICghZmVuY2UpCj4gPiA+ICsJCQljb250aW51ZTsKPiA+ID4gKwo+ID4gPiArCQly ID0gZG1hX2ZlbmNlX3dhaXRfdGltZW91dChmZW5jZSwgdHJ1ZSwgdGltZW91dCk7Cj4gPiA+ICsJ CWlmIChyIDwgMCkKPiA+ID4gKwkJCXJldHVybiByOwo+ID4gPiArCj4gPiA+ICsJCWlmIChyID09 IDApCj4gPiA+ICsJCQlicmVhazsKPiA+ID4gKwl9Cj4gPiA+ICsKPiA+ID4gKwltZW1zZXQod2Fp dCwgMCwgc2l6ZW9mKCp3YWl0KSk7Cj4gPiA+ICsJd2FpdC0+b3V0LnN0YXR1cyA9IChyID4gMCk7 Cj4gPiA+ICsKPiA+ID4gKwlyZXR1cm4gMDsKPiA+ID4gK30KPiA+ID4gKwo+ID4gPiArLyoqCj4g PiA+ICsgKiBhbWRncHVfY3Nfd2FpdF9hbnlfZmVuY2UgLSB3YWl0IG9uIGFueSBmZW5jZSB0byBz aWduYWwKPiA+ID4gKyAqCj4gPiA+ICsgKiBAYWRldjogYW1kZ3B1IGRldmljZQo+ID4gPiArICog QGZpbHA6IGZpbGUgcHJpdmF0ZQo+ID4gPiArICogQHdhaXQ6IHdhaXQgcGFyYW1ldGVycwo+ID4g PiArICogQGZlbmNlczogYXJyYXkgb2YgZHJtX2FtZGdwdV9mZW5jZQo+ID4gPiArICovCj4gPiA+ ICtzdGF0aWMgaW50IGFtZGdwdV9jc193YWl0X2FueV9mZW5jZShzdHJ1Y3QgYW1kZ3B1X2Rldmlj ZSAqYWRldiwKPiA+ID4gKwkJCQkgICAgc3RydWN0IGRybV9maWxlICpmaWxwLAo+ID4gPiArCQkJ CSAgICB1bmlvbiBkcm1fYW1kZ3B1X3dhaXRfZmVuY2VzICp3YWl0LAo+ID4gPiArCQkJCSAgICBz dHJ1Y3QgZHJtX2FtZGdwdV9mZW5jZSAqZmVuY2VzKQo+ID4gPiArewo+ID4gPiArCXVuc2lnbmVk IGxvbmcgdGltZW91dCA9IGFtZGdwdV9nZW1fdGltZW91dCh3YWl0LT5pbi50aW1lb3V0X25zKTsK PiA+ID4gKwl1aW50MzJfdCBmZW5jZV9jb3VudCA9IHdhaXQtPmluLmZlbmNlX2NvdW50Owo+ID4g PiArCXVpbnQzMl90IGZpcnN0ID0gfjA7Cj4gPiA+ICsJc3RydWN0IGRtYV9mZW5jZSAqKmFycmF5 Owo+ID4gPiArCXVuc2lnbmVkIGk7Cj4gPiA+ICsJbG9uZyByOwo+ID4gPiArCj4gPiA+ICsJLyog UHJlcGFyZSB0aGUgZmVuY2UgYXJyYXkgKi8KPiA+ID4gKwlhcnJheSA9IChzdHJ1Y3QgZG1hX2Zl bmNlICoqKWtjYWxsb2MoZmVuY2VfY291bnQsIHNpemVvZihzdHJ1Y3QgZG1hX2ZlbmNlICopLAo+ ID4gPiArCQkJR0ZQX0tFUk5FTCk7Cj4gPiA+ICsJaWYgKGFycmF5ID09IE5VTEwpCj4gPiA+ICsJ CXJldHVybiAtRU5PTUVNOwo+ID4gPiArCj4gPiA+ICsJZm9yIChpID0gMDsgaSA8IGZlbmNlX2Nv dW50OyBpKyspIHsKPiA+ID4gKwkJc3RydWN0IGRtYV9mZW5jZSAqZmVuY2U7Cj4gPiA+ICsKPiA+ ID4gKwkJZmVuY2UgPSBhbWRncHVfY3NfZ2V0X2ZlbmNlKGFkZXYsIGZpbHAsICZmZW5jZXNbaV0p Owo+ID4gPiArCQlpZiAoSVNfRVJSKGZlbmNlKSkgewo+ID4gPiArCQkJciA9IFBUUl9FUlIoZmVu Y2UpOwo+ID4gPiArCQkJZ290byBlcnJfZnJlZV9mZW5jZV9hcnJheTsKPiA+ID4gKwkJfSBlbHNl IGlmIChmZW5jZSkgewo+ID4gPiArCQkJYXJyYXlbaV0gPSBmZW5jZTsKPiA+ID4gKwkJfSBlbHNl IHsgLyogTlVMTCwgdGhlIGZlbmNlIGhhcyBiZWVuIGFscmVhZHkgc2lnbmFsZWQgKi8KPiA+ID4g KwkJCXIgPSAxOwo+ID4gPiArCQkJZ290byBvdXQ7Cj4gPiA+ICsJCX0KPiA+ID4gKwl9Cj4gPiA+ ICsKPiA+ID4gKwlyID0gZG1hX2ZlbmNlX3dhaXRfYW55X3RpbWVvdXQoYXJyYXksIGZlbmNlX2Nv dW50LCB0cnVlLCB0aW1lb3V0LCAmZmlyc3QpOwo+ID4gPiArCWlmIChyIDwgMCkKPiA+ID4gKwkJ Z290byBlcnJfZnJlZV9mZW5jZV9hcnJheTsKPiA+ID4gKwo+ID4gPiArb3V0Ogo+ID4gPiArCW1l bXNldCh3YWl0LCAwLCBzaXplb2YoKndhaXQpKTsKPiA+ID4gKwl3YWl0LT5vdXQuc3RhdHVzID0g KHIgPiAwKTsKPiA+ID4gKwl3YWl0LT5vdXQuZmlyc3Rfc2lnbmFsZWQgPSBmaXJzdDsKPiA+ID4g KwkvKiBzZXQgcmV0dXJuIHZhbHVlIDAgdG8gaW5kaWNhdGUgc3VjY2VzcyAqLwo+ID4gPiArCXIg PSAwOwo+ID4gPiArCj4gPiA+ICtlcnJfZnJlZV9mZW5jZV9hcnJheToKPiA+ID4gKwlmb3IgKGkg PSAwOyBpIDwgZmVuY2VfY291bnQ7IGkrKykKPiA+ID4gKwkJZG1hX2ZlbmNlX3B1dChhcnJheVtp XSk7Cj4gPiA+ICsJa2ZyZWUoYXJyYXkpOwo+ID4gPiArCj4gPiA+ICsJcmV0dXJuIHI7Cj4gPiA+ ICt9Cj4gPiA+ICsKPiA+ID4gKy8qKgo+ID4gPiArICogYW1kZ3B1X2NzX3dhaXRfZmVuY2VzX2lv Y3RsIC0gd2FpdCBmb3IgbXVsdGlwbGUgY29tbWFuZCBzdWJtaXNzaW9ucyB0byBmaW5pc2gKPiA+ ID4gKyAqCj4gPiA+ICsgKiBAZGV2OiBkcm0gZGV2aWNlCj4gPiA+ICsgKiBAZGF0YTogZGF0YSBm cm9tIHVzZXJzcGFjZQo+ID4gPiArICogQGZpbHA6IGZpbGUgcHJpdmF0ZQo+ID4gPiArICovCj4g PiA+ICtpbnQgYW1kZ3B1X2NzX3dhaXRfZmVuY2VzX2lvY3RsKHN0cnVjdCBkcm1fZGV2aWNlICpk ZXYsIHZvaWQgKmRhdGEsCj4gPiA+ICsJCQkJc3RydWN0IGRybV9maWxlICpmaWxwKQo+ID4gPiAr ewo+ID4gPiArCXN0cnVjdCBhbWRncHVfZGV2aWNlICphZGV2ID0gZGV2LT5kZXZfcHJpdmF0ZTsK PiA+ID4gKwl1bmlvbiBkcm1fYW1kZ3B1X3dhaXRfZmVuY2VzICp3YWl0ID0gZGF0YTsKPiA+ID4g Kwl1aW50MzJfdCBmZW5jZV9jb3VudCA9IHdhaXQtPmluLmZlbmNlX2NvdW50Owo+ID4gPiArCXN0 cnVjdCBkcm1fYW1kZ3B1X2ZlbmNlICpmZW5jZXNfdXNlcjsKPiA+ID4gKwlzdHJ1Y3QgZHJtX2Ft ZGdwdV9mZW5jZSAqZmVuY2VzOwo+ID4gPiArCWludCByOwo+ID4gPiArCj4gPiA+ICsJLyogR2V0 IHRoZSBmZW5jZXMgZnJvbSB1c2Vyc3BhY2UgKi8KPiA+ID4gKwlmZW5jZXMgPSBrbWFsbG9jX2Fy cmF5KGZlbmNlX2NvdW50LCBzaXplb2Yoc3RydWN0IGRybV9hbWRncHVfZmVuY2UpLAo+ID4gPiAr CQkJR0ZQX0tFUk5FTCk7Cj4gPiA+ICsJaWYgKGZlbmNlcyA9PSBOVUxMKQo+ID4gPiArCQlyZXR1 cm4gLUVOT01FTTsKPiA+ID4gKwo+ID4gPiArCWZlbmNlc191c2VyID0gKHZvaWQgX191c2VyICop KHVuc2lnbmVkIGxvbmcpKHdhaXQtPmluLmZlbmNlcyk7Cj4gPiA+ICsJaWYgKGNvcHlfZnJvbV91 c2VyKGZlbmNlcywgZmVuY2VzX3VzZXIsCj4gPiA+ICsJCXNpemVvZihzdHJ1Y3QgZHJtX2FtZGdw dV9mZW5jZSkgKiBmZW5jZV9jb3VudCkpIHsKPiA+ID4gKwkJciA9IC1FRkFVTFQ7Cj4gPiA+ICsJ CWdvdG8gZXJyX2ZyZWVfZmVuY2VzOwo+ID4gPiArCX0KPiA+ID4gKwo+ID4gPiArCWlmICh3YWl0 LT5pbi53YWl0X2FsbCkKPiA+ID4gKwkJciA9IGFtZGdwdV9jc193YWl0X2FsbF9mZW5jZXMoYWRl diwgZmlscCwgd2FpdCwgZmVuY2VzKTsKPiA+ID4gKwllbHNlCj4gPiA+ICsJCXIgPSBhbWRncHVf Y3Nfd2FpdF9hbnlfZmVuY2UoYWRldiwgZmlscCwgd2FpdCwgZmVuY2VzKTsKPiA+IEkgd29uZGVy IGlmIGl0IHdvdWxkbid0IGJlIGJldHRlciBpZiB3ZSB1c2UgZmVuY2VfYXJyYXkgaGVyZSBhbmQK PiA+IHJlZ2lzdGVyIGNhbGxiYWNrcyB0byBnZXQgbm90ZmllZCBvZiB0aGUgZmlyc3Qgc2lnbmFs ZWQgZmVuY2UgdGhlICJhbnkiIGNhc2UuCj4gPiBJdCBzZWVtcyB0byBtZSB0aGF0IHdlIGNvdWxk IHNpbXBsaWZ5IHRoaXMgY29kZSBieSB1c2luZyBhIGZlbmNlX2FycmF5Lgo+IAo+IEkgaGFkIHRo aXMgY29kZSBpbiBtaW5kIGFzIHdlbGwgd2hlbiB3b3JraW5nIG9uIHRoZSBmZW5jZV9hcnJheS4K PiAKPiBCdXQgdGhpcyBjb2RlIGFjdHVhbGx5IHByZWNlZGVzIHRoZSBmZW5jZV9hcnJheSBpbXBs ZW1lbnRhdGlvbiwgc28gSSB3b3VsZAo+IGxpa2UgdG8gcHVzaCBpdCB1cHN0cmVhbSB1bmNoYW5n ZWQgYW5kIHRoZW4gY2xlYW4gaXQgdXAgdG8gdXNlIHRoZSBmZW5jZQo+IGFycmF5Lgo+IAo+IFRo YXQgd291bGQgbWFrZSBvdXIgYmFja3BvcnRpbmcgZWZmb3J0cyBhIGJpdCBlYXNpZXIgYW5kIHNo b3VsZG4ndCBhZmZlY3QKPiB1cHN0cmVhbSB0byBtdWNoIGluIGFueSB3YXkuCgpUaGF0IHNvdW5k cyBnb29kIHRvIG1lLiBTaG91bGQgYWRkIGFuIGV4dHJhIHBhdGNoIHRvIHRoaXMKcGF0Y2hzZXQg dG8gZG8gdGhlIGNvbnZlcnNpb24gcmlnaHQgYXdheT8KCkd1c3Rhdm8KCl9fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCmRyaS1kZXZlbCBtYWlsaW5nIGxpc3QK ZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZwpodHRwczovL2xpc3RzLmZyZWVkZXNrdG9w Lm9yZy9tYWlsbWFuL2xpc3RpbmZvL2RyaS1kZXZlbAo=