From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tvrtko Ursulin Subject: Re: [PATCH v4] drm/i915/guc: Clean up locks in GuC Date: Fri, 22 Jan 2016 10:54:42 +0000 Message-ID: <56A20A72.6060202@linux.intel.com> References: <1448319778-29282-1-git-send-email-yu.dai@intel.com> <1449104189-27591-1-git-send-email-yu.dai@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: Received: from mga11.intel.com (mga11.intel.com [192.55.52.93]) by gabe.freedesktop.org (Postfix) with ESMTP id 29E396E2DE for ; Fri, 22 Jan 2016 02:54:44 -0800 (PST) In-Reply-To: <1449104189-27591-1-git-send-email-yu.dai@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: yu.dai@intel.com, intel-gfx@lists.freedesktop.org List-Id: intel-gfx@lists.freedesktop.org Ck9uIDAzLzEyLzE1IDAwOjU2LCB5dS5kYWlAaW50ZWwuY29tIHdyb3RlOgo+IEZyb206IEFsZXgg RGFpIDx5dS5kYWlAaW50ZWwuY29tPgo+IAo+IEZvciBub3csIHJlbW92ZSB0aGUgc3BpbmxvY2tz IHRoYXQgcHJvdGVjdGVkIHRoZSBHdUMncwo+IHN0YXRpc3RpY3MgYmxvY2sgYW5kIHdvcmsgcXVl dWU7IHRoZXkgYXJlIG9ubHkgYWNjZXNzZWQKPiBieSBjb2RlIHRoYXQgYWxyZWFkeSBob2xkcyB0 aGUgZ2xvYmFsIHN0cnVjdF9tdXRleCwgYW5kCj4gc28gYXJlIHJlZHVuZGFudCAodW50aWwgdGhl IGJpZyBzdHJ1Y3RfbXV0ZXggcmV3cml0ZSEpLgo+IAo+IFRoZSBzcGVjaWZpYyBwcm9ibGVtIHRo YXQgdGhlIHNwaW5sb2NrcyBjYXVzZWQgd2FzIHRoYXQKPiBpZiB0aGUgd29yayBxdWV1ZSB3YXMg ZnVsbCwgdGhlIGRyaXZlciB3b3VsZCB0cnkgdG8KPiBzcGlud2FpdCBmb3Igb25lIGppZmZ5LCBi dXQgd2l0aCBpbnRlcnJ1cHRzIGRpc2FibGVkIHRoZQo+IGppZmZ5IGNvdW50IHdvdWxkIG5vdCBh ZHZhbmNlLCBsZWFkaW5nIHRvIGEgc3lzdGVtIGhhbmcuCj4gVGhlIGlzc3VlIHdhcyBmb3VuZCB1 c2luZyB0ZXN0IGNhc2UgaWd0L2dlbV9jbG9zZV9yYWNlLgo+IAo+IFRoZSBuZXcgdmVyc2lvbiB3 aWxsIHVzbGVlcCgpIGluc3RlYWQsIHN0aWxsIGhvbGRpbmcKPiB0aGUgc3RydWN0X211dGV4IGJ1 dCB3aXRob3V0IGFueSBzcGlubG9ja3MuCj4gCj4gdjQ6IFJlb3JnYW5pemUgY29tbWl0IG1lc3Nh Z2UgKERhdmUgR29yZG9uKQo+IHYzOiBSZW1vdmUgdW5uZWNlc3Nhcnkgd2hpdGVzcGFjZSBjaHVy bgo+IHYyOiBDbGVhbiB1cCB3cV9sb2NrIHRvbwo+IHYxOiBDbGVhbiB1cCBob3N0Mmd1YyBsb2Nr IGFzIHdlbGwKPiAKPiBTaWduZWQtb2ZmLWJ5OiBBbGV4IERhaSA8eXUuZGFpQGludGVsLmNvbT4K PiAtLS0KPiAgIGRyaXZlcnMvZ3B1L2RybS9pOTE1L2k5MTVfZGVidWdmcy5jICAgICAgICB8IDEy ICsrKysrKy0tLS0tLQo+ICAgZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlzc2lv bi5jIHwgMzEgKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4gICBkcml2ZXJzL2dwdS9k cm0vaTkxNS9pbnRlbF9ndWMuaCAgICAgICAgICAgfCAgNCAtLS0tCj4gICAzIGZpbGVzIGNoYW5n ZWQsIDEyIGluc2VydGlvbnMoKyksIDM1IGRlbGV0aW9ucygtKQo+IAo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYyBiL2RyaXZlcnMvZ3B1L2RybS9pOTE1 L2k5MTVfZGVidWdmcy5jCj4gaW5kZXggYTcyOGZmMS4uZDZiNzgxNyAxMDA2NDQKPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vaTkxNS9pOTE1X2RlYnVnZnMuYwo+ICsrKyBiL2RyaXZlcnMvZ3B1L2Ry bS9pOTE1L2k5MTVfZGVidWdmcy5jCj4gQEAgLTI0NzMsMTUgKzI0NzMsMTUgQEAgc3RhdGljIGlu dCBpOTE1X2d1Y19pbmZvKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqZGF0YSkKPiAgIAlpZiAo IUhBU19HVUNfU0NIRUQoZGV2X3ByaXYtPmRldikpCj4gICAJCXJldHVybiAwOwo+ICAgCj4gKwlp ZiAobXV0ZXhfbG9ja19pbnRlcnJ1cHRpYmxlKCZkZXYtPnN0cnVjdF9tdXRleCkpCj4gKwkJcmV0 dXJuIDA7Cj4gKwo+ICAgCS8qIFRha2UgYSBsb2NhbCBjb3B5IG9mIHRoZSBHdUMgZGF0YSwgc28g d2UgY2FuIGR1bXAgaXQgYXQgbGVpc3VyZSAqLwo+IC0Jc3Bpbl9sb2NrKCZkZXZfcHJpdi0+Z3Vj Lmhvc3QyZ3VjX2xvY2spOwo+ICAgCWd1YyA9IGRldl9wcml2LT5ndWM7Cj4gLQlpZiAoZ3VjLmV4 ZWNidWZfY2xpZW50KSB7Cj4gLQkJc3Bpbl9sb2NrKCZndWMuZXhlY2J1Zl9jbGllbnQtPndxX2xv Y2spOwo+ICsJaWYgKGd1Yy5leGVjYnVmX2NsaWVudCkKPiAgIAkJY2xpZW50ID0gKmd1Yy5leGVj YnVmX2NsaWVudDsKPiAtCQlzcGluX3VubG9jaygmZ3VjLmV4ZWNidWZfY2xpZW50LT53cV9sb2Nr KTsKPiAtCX0KPiAtCXNwaW5fdW5sb2NrKCZkZXZfcHJpdi0+Z3VjLmhvc3QyZ3VjX2xvY2spOwo+ ICsKPiArCW11dGV4X3VubG9jaygmZGV2LT5zdHJ1Y3RfbXV0ZXgpOwo+ICAgCj4gICAJc2VxX3By aW50ZihtLCAiR3VDIHRvdGFsIGFjdGlvbiBjb3VudDogJWxsdVxuIiwgZ3VjLmFjdGlvbl9jb3Vu dCk7Cj4gICAJc2VxX3ByaW50ZihtLCAiR3VDIGFjdGlvbiBmYWlsdXJlIGNvdW50OiAldVxuIiwg Z3VjLmFjdGlvbl9mYWlsKTsKPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkx NV9ndWNfc3VibWlzc2lvbi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvaTkxNV9ndWNfc3VibWlz c2lvbi5jCj4gaW5kZXggZWQ5ZjEwMC4uYTdmOTc4NSAxMDA2NDQKPiAtLS0gYS9kcml2ZXJzL2dw dS9kcm0vaTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMKPiArKysgYi9kcml2ZXJzL2dwdS9kcm0v aTkxNS9pOTE1X2d1Y19zdWJtaXNzaW9uLmMKPiBAQCAtODYsNyArODYsNiBAQCBzdGF0aWMgaW50 IGhvc3QyZ3VjX2FjdGlvbihzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsIHUzMiAqZGF0YSwgdTMyIGxl bikKPiAgIAkJcmV0dXJuIC1FSU5WQUw7Cj4gICAKPiAgIAlpbnRlbF91bmNvcmVfZm9yY2V3YWtl X2dldChkZXZfcHJpdiwgRk9SQ0VXQUtFX0FMTCk7Cj4gLQlzcGluX2xvY2soJmRldl9wcml2LT5n dWMuaG9zdDJndWNfbG9jayk7Cj4gICAKPiAgIAlkZXZfcHJpdi0+Z3VjLmFjdGlvbl9jb3VudCAr PSAxOwo+ICAgCWRldl9wcml2LT5ndWMuYWN0aW9uX2NtZCA9IGRhdGFbMF07Cj4gQEAgLTExOSw3 ICsxMTgsNiBAQCBzdGF0aWMgaW50IGhvc3QyZ3VjX2FjdGlvbihzdHJ1Y3QgaW50ZWxfZ3VjICpn dWMsIHUzMiAqZGF0YSwgdTMyIGxlbikKPiAgIAl9Cj4gICAJZGV2X3ByaXYtPmd1Yy5hY3Rpb25f c3RhdHVzID0gc3RhdHVzOwo+ICAgCj4gLQlzcGluX3VubG9jaygmZGV2X3ByaXYtPmd1Yy5ob3N0 Mmd1Y19sb2NrKTsKPiAgIAlpbnRlbF91bmNvcmVfZm9yY2V3YWtlX3B1dChkZXZfcHJpdiwgRk9S Q0VXQUtFX0FMTCk7Cj4gICAKPiAgIAlyZXR1cm4gcmV0Owo+IEBAIC0yOTIsMTYgKzI5MCwxMiBA QCBzdGF0aWMgdWludDMyX3Qgc2VsZWN0X2Rvb3JiZWxsX2NhY2hlbGluZShzdHJ1Y3QgaW50ZWxf Z3VjICpndWMpCj4gICAJY29uc3QgdWludDMyX3QgY2FjaGVsaW5lX3NpemUgPSBjYWNoZV9saW5l X3NpemUoKTsKPiAgIAl1aW50MzJfdCBvZmZzZXQ7Cj4gICAKPiAtCXNwaW5fbG9jaygmZ3VjLT5o b3N0Mmd1Y19sb2NrKTsKPiAtCj4gICAJLyogRG9vcmJlbGwgdXNlcyBhIHNpbmdsZSBjYWNoZSBs aW5lIHdpdGhpbiBhIHBhZ2UgKi8KPiAgIAlvZmZzZXQgPSBvZmZzZXRfaW5fcGFnZShndWMtPmRi X2NhY2hlbGluZSk7Cj4gICAKPiAgIAkvKiBNb3ZpbmcgdG8gbmV4dCBjYWNoZSBsaW5lIHRvIHJl ZHVjZSBjb250ZW50aW9uICovCj4gICAJZ3VjLT5kYl9jYWNoZWxpbmUgKz0gY2FjaGVsaW5lX3Np emU7Cj4gICAKPiAtCXNwaW5fdW5sb2NrKCZndWMtPmhvc3QyZ3VjX2xvY2spOwo+IC0KPiAgIAlE Uk1fREVCVUdfRFJJVkVSKCJzZWxlY3RlZCBkb29yYmVsbCBjYWNoZWxpbmUgMHgleCwgbmV4dCAw eCV4LCBsaW5lc2l6ZSAldVxuIiwKPiAgIAkJCW9mZnNldCwgZ3VjLT5kYl9jYWNoZWxpbmUsIGNh Y2hlbGluZV9zaXplKTsKPiAgIAo+IEBAIC0zMjIsMTMgKzMxNiwxMSBAQCBzdGF0aWMgdWludDE2 X3QgYXNzaWduX2Rvb3JiZWxsKHN0cnVjdCBpbnRlbF9ndWMgKmd1YywgdWludDMyX3QgcHJpb3Jp dHkpCj4gICAJY29uc3QgdWludDE2X3QgZW5kID0gc3RhcnQgKyBoYWxmOwo+ICAgCXVpbnQxNl90 IGlkOwo+ICAgCj4gLQlzcGluX2xvY2soJmd1Yy0+aG9zdDJndWNfbG9jayk7Cj4gICAJaWQgPSBm aW5kX25leHRfemVyb19iaXQoZ3VjLT5kb29yYmVsbF9iaXRtYXAsIGVuZCwgc3RhcnQpOwo+ICAg CWlmIChpZCA9PSBlbmQpCj4gICAJCWlkID0gR1VDX0lOVkFMSURfRE9PUkJFTExfSUQ7Cj4gICAJ ZWxzZQo+ICAgCQliaXRtYXBfc2V0KGd1Yy0+ZG9vcmJlbGxfYml0bWFwLCBpZCwgMSk7Cj4gLQlz cGluX3VubG9jaygmZ3VjLT5ob3N0Mmd1Y19sb2NrKTsKPiAgIAo+ICAgCURSTV9ERUJVR19EUklW RVIoImFzc2lnbmVkICVzIHByaW9yaXR5IGRvb3JiZWxsIGlkIDB4JXhcbiIsCj4gICAJCQloaV9w cmkgPyAiaGlnaCIgOiAibm9ybWFsIiwgaWQpOwo+IEBAIC0zMzgsOSArMzMwLDcgQEAgc3RhdGlj IHVpbnQxNl90IGFzc2lnbl9kb29yYmVsbChzdHJ1Y3QgaW50ZWxfZ3VjICpndWMsIHVpbnQzMl90 IHByaW9yaXR5KQo+ICAgCj4gICBzdGF0aWMgdm9pZCByZWxlYXNlX2Rvb3JiZWxsKHN0cnVjdCBp bnRlbF9ndWMgKmd1YywgdWludDE2X3QgaWQpCj4gICB7Cj4gLQlzcGluX2xvY2soJmd1Yy0+aG9z dDJndWNfbG9jayk7Cj4gICAJYml0bWFwX2NsZWFyKGd1Yy0+ZG9vcmJlbGxfYml0bWFwLCBpZCwg MSk7Cj4gLQlzcGluX3VubG9jaygmZ3VjLT5ob3N0Mmd1Y19sb2NrKTsKPiAgIH0KPiAgIAo+ICAg LyoKPiBAQCAtNDg3LDE2ICs0NzcsMTMgQEAgc3RhdGljIGludCBndWNfZ2V0X3dvcmtxdWV1ZV9z cGFjZShzdHJ1Y3QgaTkxNV9ndWNfY2xpZW50ICpnYywgdTMyICpvZmZzZXQpCj4gICAJc3RydWN0 IGd1Y19wcm9jZXNzX2Rlc2MgKmRlc2M7Cj4gICAJdm9pZCAqYmFzZTsKPiAgIAl1MzIgc2l6ZSA9 IHNpemVvZihzdHJ1Y3QgZ3VjX3dxX2l0ZW0pOwo+IC0JaW50IHJldCA9IDAsIHRpbWVvdXRfY291 bnRlciA9IDIwMDsKPiArCWludCByZXQgPSAtRVRJTUVET1VULCB0aW1lb3V0X2NvdW50ZXIgPSAy MDA7Cj4gICAKPiAgIAliYXNlID0ga21hcF9hdG9taWMoaTkxNV9nZW1fb2JqZWN0X2dldF9wYWdl KGdjLT5jbGllbnRfb2JqLCAwKSk7Cj4gICAJZGVzYyA9IGJhc2UgKyBnYy0+cHJvY19kZXNjX29m ZnNldDsKPiAgIAo+ICAgCXdoaWxlICh0aW1lb3V0X2NvdW50ZXItLSA+IDApIHsKPiAtCQlyZXQg PSB3YWl0X2Zvcl9hdG9taWMoQ0lSQ19TUEFDRShnYy0+d3FfdGFpbCwgZGVzYy0+aGVhZCwKPiAt CQkJCWdjLT53cV9zaXplKSA+PSBzaXplLCAxKTsKPiAtCj4gLQkJaWYgKCFyZXQpIHsKPiArCQlp ZiAoQ0lSQ19TUEFDRShnYy0+d3FfdGFpbCwgZGVzYy0+aGVhZCwgZ2MtPndxX3NpemUpID49IHNp emUpIHsKPiAgIAkJCSpvZmZzZXQgPSBnYy0+d3FfdGFpbDsKPiAgIAo+ICAgCQkJLyogYWR2YW5j ZSB0aGUgdGFpbCBmb3IgbmV4dCB3b3JrcXVldWUgaXRlbSAqLwo+IEBAIC01MDUsNyArNDkyLDEx IEBAIHN0YXRpYyBpbnQgZ3VjX2dldF93b3JrcXVldWVfc3BhY2Uoc3RydWN0IGk5MTVfZ3VjX2Ns aWVudCAqZ2MsIHUzMiAqb2Zmc2V0KQo+ICAgCj4gICAJCQkvKiB0aGlzIHdpbGwgYnJlYWsgdGhl IGxvb3AgKi8KPiAgIAkJCXRpbWVvdXRfY291bnRlciA9IDA7Cj4gKwkJCXJldCA9IDA7Cj4gICAJ CX0KPiArCj4gKwkJaWYgKHRpbWVvdXRfY291bnRlcikKPiArCQkJdXNsZWVwX3JhbmdlKDEwMDAs IDIwMDApOwoKU2xlZXBpbmcgaXMgaWxsZWdhbCB3aGlsZSBob2xkaW5nIGttYXBfYXRvbWljIG1h cHBpbmc6CgpbICAgMzQuMDk4Nzk4XSBCVUc6IHNjaGVkdWxpbmcgd2hpbGUgYXRvbWljOiBnZW1f Y2xvc2VfcmFjZS8xOTQxLzB4MDAwMDAwMDIKWyAgIDM0LjA5ODgyMl0gTW9kdWxlcyBsaW5rZWQg aW46IGhpZF9nZW5lcmljIHVzYmhpZCBpOTE1IGFzaXggdXNibmV0IGxpYnBoeSBtaWkgaTJjX2Fs Z29fYml0IGRybV9rbXNfaGVscGVyIGNmYmZpbGxyZWN0IHN5c2NvcHlhcmVhIGNmYmltZ2JsdCBz eXNmaWxscmVjdCBzeXNpbWdibHQgZmJfc3lzX2ZvcHMgY2ZiY29weWFyZWEgZHJtIGNvcmV0ZW1w IGkyY19oaWQgaGlkIHZpZGVvIHBpbmN0cmxfc3VucmlzZXBvaW50IHBpbmN0cmxfaW50ZWwgYWNw aV9wYWQgbmxzX2lzbzg4NTlfMSBlMTAwMGUgcHRwIHBzbW91c2UgcHBzX2NvcmUgYWhjaSBsaWJh aGNpClsgICAzNC4wOTg4MjRdIENQVTogMCBQSUQ6IDE5NDEgQ29tbTogZ2VtX2Nsb3NlX3JhY2Ug VGFpbnRlZDogRyAgICAgVSAgICAgICAgICA0LjQuMC0xNjAxMjErICMxMjMKWyAgIDM0LjA5ODgy NF0gSGFyZHdhcmUgbmFtZTogSW50ZWwgQ29ycG9yYXRpb24gU2t5bGFrZSBDbGllbnQgcGxhdGZv cm0vU2t5bGFrZSBBSU8gRERSM0wgUlZQMTAsIEJJT1MgU0tMU0UyUjEuUjAwLlgxMDAuQjAxLjE1 MDkyMjA1NTEgMDkvMjIvMjAxNQpbICAgMzQuMDk4ODI1XSAgMDAwMDAwMDAwMDAxM2U0MCBmZmZm ODgwMTY2YzI3YTc4IGZmZmZmZmZmODEyODBkMDIgZmZmZjg4MDE3MmMxM2U0MApbICAgMzQuMDk4 ODI2XSAgZmZmZjg4MDE2NmMyN2E4OCBmZmZmZmZmZjgxMGMyMDNhIGZmZmY4ODAxNjZjMjdhYzgg ZmZmZmZmZmY4MTRlYzgwOApbICAgMzQuMDk4ODI3XSAgZmZmZjg4MDE2YjdjNjAwMCBmZmZmODgw MTY2YzI4MDAwIDAwMDAwMDAwMDAwZjQyNDAgMDAwMDAwMDAwMDAwMDAwMQpbICAgMzQuMDk4ODI3 XSBDYWxsIFRyYWNlOgpbICAgMzQuMDk4ODMxXSAgWzxmZmZmZmZmZjgxMjgwZDAyPl0gZHVtcF9z dGFjaysweDRiLzB4NzkKWyAgIDM0LjA5ODgzM10gIFs8ZmZmZmZmZmY4MTBjMjAzYT5dIF9fc2No ZWR1bGVfYnVnKzB4NDEvMHg0ZgpbICAgMzQuMDk4ODM0XSAgWzxmZmZmZmZmZjgxNGVjODA4Pl0g X19zY2hlZHVsZSsweDVhOC8weDY5MApbICAgMzQuMDk4ODM1XSAgWzxmZmZmZmZmZjgxNGVjOTI3 Pl0gc2NoZWR1bGUrMHgzNy8weDgwClsgICAzNC4wOTg4MzZdICBbPGZmZmZmZmZmODE0ZWYzZmQ+ XSBzY2hlZHVsZV9ocnRpbWVvdXRfcmFuZ2VfY2xvY2srMHhhZC8weDEzMApbICAgMzQuMDk4ODM3 XSAgWzxmZmZmZmZmZjgxMDkwYmUwPl0gPyBocnRpbWVyX2luaXQrMHgxMC8weDEwClsgICAzNC4w OTg4MzhdICBbPGZmZmZmZmZmODE0ZWYzZjE+XSA/IHNjaGVkdWxlX2hydGltZW91dF9yYW5nZV9j bG9jaysweGExLzB4MTMwClsgICAzNC4wOTg4MzldICBbPGZmZmZmZmZmODE0ZWY0OGU+XSBzY2hl ZHVsZV9ocnRpbWVvdXRfcmFuZ2UrMHhlLzB4MTAKWyAgIDM0LjA5ODg0MF0gIFs8ZmZmZmZmZmY4 MTRlZWY5Yj5dIHVzbGVlcF9yYW5nZSsweDNiLzB4NDAKWyAgIDM0LjA5ODg1M10gIFs8ZmZmZmZm ZmZhMDFlYzEwOT5dIGk5MTVfZ3VjX3dxX2NoZWNrX3NwYWNlKzB4MTE5LzB4MjEwIFtpOTE1XQpb ICAgMzQuMDk4ODYxXSAgWzxmZmZmZmZmZmEwMWRhNDdjPl0gaW50ZWxfbG9naWNhbF9yaW5nX2Fs bG9jX3JlcXVlc3RfZXh0cmFzKzB4NWMvMHg3MCBbaTkxNV0KWyAgIDM0LjA5ODg2OV0gIFs8ZmZm ZmZmZmZhMDFjZGJmMT5dIGk5MTVfZ2VtX3JlcXVlc3RfYWxsb2MrMHg5MS8weDE3MCBbaTkxNV0K WyAgIDM0LjA5ODg3NV0gIFs8ZmZmZmZmZmZhMDFjMWMwNz5dIGk5MTVfZ2VtX2RvX2V4ZWNidWZm ZXIuaXNyYS4yNSsweGJjNy8weDEyYTAgW2k5MTVdClsgICAzNC4wOTg4ODJdICBbPGZmZmZmZmZm YTAxY2I3ODU+XSA/IGk5MTVfZ2VtX29iamVjdF9nZXRfcGFnZXNfZ3R0KzB4MjI1LzB4M2MwIFtp OTE1XQpbICAgMzQuMDk4ODg5XSAgWzxmZmZmZmZmZmEwMWQxZmI2Pl0gPyBpOTE1X2dlbV9wd3Jp dGVfaW9jdGwrMHhkNi8weDlmMCBbaTkxNV0KWyAgIDM0LjA5ODg5NV0gIFs8ZmZmZmZmZmZhMDFj MmU2OD5dIGk5MTVfZ2VtX2V4ZWNidWZmZXIyKzB4YTgvMHgyNTAgW2k5MTVdClsgICAzNC4wOTg5 MDBdICBbPGZmZmZmZmZmYTAwZjY1ZDg+XSBkcm1faW9jdGwrMHgyNTgvMHg0ZjAgW2RybV0KWyAg IDM0LjA5ODkwNl0gIFs8ZmZmZmZmZmZhMDFjMmRjMD5dID8gaTkxNV9nZW1fZXhlY2J1ZmZlcisw eDM0MC8weDM0MCBbaTkxNV0KWyAgIDM0LjA5ODkwOF0gIFs8ZmZmZmZmZmY4MTExNTkwZD5dIGRv X3Zmc19pb2N0bCsweDJjZC8weDRhMApbICAgMzQuMDk4OTA5XSAgWzxmZmZmZmZmZjgxMTFlYWMy Pl0gPyBfX2ZnZXQrMHg3Mi8weGIwClsgICAzNC4wOTg5MTBdICBbPGZmZmZmZmZmODExMTViMWM+ XSBTeVNfaW9jdGwrMHgzYy8weDcwClsgICAzNC4wOTg5MTFdICBbPGZmZmZmZmZmODE0ZWZmZDc+ XSBlbnRyeV9TWVNDQUxMXzY0X2Zhc3RwYXRoKzB4MTIvMHg2YQpbICAgMzQuMTAwMjA4XSAtLS0t LS0tLS0tLS1bIGN1dCBoZXJlIF0tLS0tLS0tLS0tLS0KCkkgZG9uJ3Qga25vdyB0aGUgY29kZSB3 ZWxsIGVub3VnaCB0byBzdWdnZXN0IGEgc3VpdGFibGUgZml4LgoKbWRlbGF5IGNlcnRhaW5seSBz ZWVtcyBvdXQgb2YgdGhlIHF1ZXN0aW9uLiBTbyBtYXliZSBtb3ZlIHRoZSBrbWFwIHNvIGl0IGhv bGRzCnRoZSBtYXBwaW5nIGFjcm9zcyB0aGUgbGlmZXRpbWUgb2YgdGhlIHBhZ2UgaXQgaXMgbWFw cGluZywgb3Igd2hldGhldmVyIGl0IGlzCmNvbnZlbmllbnQ/CgpSZWdhcmRzLAoKVHZydGtvCgoK X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4 IG1haWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHA6Ly9saXN0 cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9pbnRlbC1nZngK