From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Antoine, Peter" Subject: Re: [PATCH i-g-t] tests/drm_hw_lock: Tests for hw_lock fixes. Date: Wed, 13 May 2015 06:35:17 +0000 Message-ID: <1431498913.9733.21.camel@peterant-linux> References: <1429798025-18940-1-git-send-email-peter.antoine@intel.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <1429798025-18940-1-git-send-email-peter.antoine@intel.com> Content-Language: en-US Content-ID: <56483CF333C3BF47ABD38C714C0B62B2@intel.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" To: "intel-gfx@lists.freedesktop.org" Cc: "airlied@redhat.com" , "dri-devel@lists.freedesktop.org" , "daniel.vetter@ffwll.ch" List-Id: intel-gfx@lists.freedesktop.org UGxlYXNlIGlnbm9yZSB0aGlzIHRlc3QgYXMgZml4ZXMgYXJlIGJlaW5nIGltcGxlbWVudGVkIGRp ZmZlcmVudGx5Lg0KDQpPbiBUaHUsIDIwMTUtMDQtMjMgYXQgMTU6MDcgKzAxMDAsIFBldGVyIEFu dG9pbmUgd3JvdGU6DQo+IFRoZXJlIGFyZSBzZXZlcmFsIGlzc3VlcyB3aXRoIHRoZSBoYXJkd2Fy ZSBsb2NrcyBmdW5jdGlvbnMgdGhhdCBzdHJldGNoDQo+IGZyb20ga2VybmVsIGNyYXNoZXMgdG8g cHJpb3JpdHkgZXNjYWxhdGlvbnMuIFRoaXMgbmV3IHRlc3Qgd2lsbCB0ZXN0IHRoZQ0KPiB0aGUg Zml4ZXMgZm9yIHRoZXNlIGZlYXR1cmVzLg0KPiANCj4gVGhpcyB0ZXN0IHdpbGwgY2F1c2UgYSBk cml2ZXIva2VybmVsIGNyYXNoIG9uIHVuLXBhdGNoZWQga2VybmVscywgdGhlDQo+IGZvbGxvd2lu ZyBwYXRjaGVzIHNob3VsZCBiZSBhcHBsaWVkIHRvIHN0b3AgdGhlIGNyYXNoZXM6DQo+IA0KPiAg IGRybTogS2VybmVsIENyYXNoIGluIGRybV91bmxvY2sNCj4gICBkcm06IEZpeGVzIHVuc2FmZSBk ZWZlcmVuY2UgaW4gbG9ja3MuDQo+IA0KPiBJc3N1ZTogVklaLTU0ODUNCj4gU2lnbmVkLW9mZi1i eTogUGV0ZXIgQW50b2luZSA8cGV0ZXIuYW50b2luZUBpbnRlbC5jb20+DQo+IC0tLQ0KPiAgbGli L2lvY3RsX3dyYXBwZXJzLmMgICB8ICAxOSArKysrKw0KPiAgbGliL2lvY3RsX3dyYXBwZXJzLmgg ICB8ICAgMSArDQo+ICB0ZXN0cy9NYWtlZmlsZS5zb3VyY2VzIHwgICAxICsNCj4gIHRlc3RzL2Ry bV9od19sb2NrLmMgICAgfCAyMDcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKysrKw0KPiAgNCBmaWxlcyBjaGFuZ2VkLCAyMjggaW5zZXJ0aW9ucygrKQ0KPiAg Y3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RzL2RybV9od19sb2NrLmMNCj4gDQo+IGRpZmYgLS1naXQg YS9saWIvaW9jdGxfd3JhcHBlcnMuYyBiL2xpYi9pb2N0bF93cmFwcGVycy5jDQo+IGluZGV4IDAw MGQzOTQuLmFkOGIzZDMgMTAwNjQ0DQo+IC0tLSBhL2xpYi9pb2N0bF93cmFwcGVycy5jDQo+ICsr KyBiL2xpYi9pb2N0bF93cmFwcGVycy5jDQo+IEBAIC05NjQsNiArOTY0LDI1IEBAIGJvb2wgZ2Vt X2hhc19ic2QyKGludCBmZCkNCj4gIHsNCj4gIAlyZXR1cm4gZ2VtX2hhc19lbmFibGVfcmluZyhm ZCxMT0NBTF9JOTE1X1BBUkFNX0hBU19CU0QyKTsNCj4gIH0NCj4gKyNkZWZpbmUgSTkxNV9QQVJB TV9IQVNfTEVHQUNZX0NPTlRFWFQJIDM1DQo+ICtib29sIGRybV9oYXNfbGVnYWN5X2NvbnRleHQo aW50IGZkKQ0KPiArew0KPiArCWludCB0bXAgPSAwOw0KPiArCWRybV9pOTE1X2dldHBhcmFtX3Qg Z3A7DQo+ICsNCj4gKwltZW1zZXQoJmdwLCAwLCBzaXplb2YoZ3ApKTsNCj4gKwlncC52YWx1ZSA9 ICZ0bXA7DQo+ICsJZ3AucGFyYW0gPSBJOTE1X1BBUkFNX0hBU19MRUdBQ1lfQ09OVEVYVDsNCj4g Kw0KPiArCS8qDQo+ICsJICogaWYgbGVnYWN5IGNvbnRleHQgcGFyYW0gaXMgbm90IHN1cHBvcnRl ZCwgdGhlbiBpdCdzIG9sZCBhbmQgd2UNCj4gKwkgKiBjYW4gYXNzdW1lIHRoYXQgdGhlIEhXX0xP Q0tTIGFyZSBzdXBwb3J0ZWQuDQo+ICsJICovDQo+ICsJaWYgKGRybUlvY3RsKGZkLCBEUk1fSU9D VExfSTkxNV9HRVRQQVJBTSwgJmdwKSAhPSAwKQ0KPiArCQlyZXR1cm4gdHJ1ZTsNCj4gKw0KPiAr CXJldHVybiB0bXAgPT0gMTsNCj4gK30NCj4gIC8qKg0KPiAgICogZ2VtX2F2YWlsYWJsZV9hcGVy dHVyZV9zaXplOg0KPiAgICogQGZkOiBvcGVuIGk5MTUgZHJtIGZpbGUgZGVzY3JpcHRvcg0KPiBk aWZmIC0tZ2l0IGEvbGliL2lvY3RsX3dyYXBwZXJzLmggYi9saWIvaW9jdGxfd3JhcHBlcnMuaA0K PiBpbmRleCBjZWQ3ZWYzLi4zYWRjNzAwIDEwMDY0NA0KPiAtLS0gYS9saWIvaW9jdGxfd3JhcHBl cnMuaA0KPiArKysgYi9saWIvaW9jdGxfd3JhcHBlcnMuaA0KPiBAQCAtMTIwLDYgKzEyMCw3IEBA IGJvb2wgZ2VtX2hhc19ic2QoaW50IGZkKTsNCj4gIGJvb2wgZ2VtX2hhc19ibHQoaW50IGZkKTsN Cj4gIGJvb2wgZ2VtX2hhc192ZWJveChpbnQgZmQpOw0KPiAgYm9vbCBnZW1faGFzX2JzZDIoaW50 IGZkKTsNCj4gK2Jvb2wgZHJtX2hhc19sZWdhY3lfY29udGV4dChpbnQgZmQpOw0KPiAgYm9vbCBn ZW1fdXNlc19hbGlhc2luZ19wcGd0dChpbnQgZmQpOw0KPiAgaW50IGdlbV9hdmFpbGFibGVfZmVu Y2VzKGludCBmZCk7DQo+ICB1aW50NjRfdCBnZW1fYXZhaWxhYmxlX2FwZXJ0dXJlX3NpemUoaW50 IGZkKTsNCj4gZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLnNvdXJjZXMgYi90ZXN0cy9NYWtl ZmlsZS5zb3VyY2VzDQo+IGluZGV4IDcxZGU2ZGUuLjJmNjlhZmMgMTAwNjQ0DQo+IC0tLSBhL3Rl c3RzL01ha2VmaWxlLnNvdXJjZXMNCj4gKysrIGIvdGVzdHMvTWFrZWZpbGUuc291cmNlcw0KPiBA QCAtODQsNiArODQsNyBAQCBURVNUU19wcm9nc19NID0gXA0KPiAgCXBtX3NzZXUgXA0KPiAgCXBy aW1lX3NlbGZfaW1wb3J0IFwNCj4gIAl0ZW1wbGF0ZSBcDQo+ICsJZHJtX2h3X2xvY2sgXA0KPiAg CSQoTlVMTCkNCj4gIA0KPiAgVEVTVFNfcHJvZ3MgPSBcDQo+IGRpZmYgLS1naXQgYS90ZXN0cy9k cm1faHdfbG9jay5jIGIvdGVzdHMvZHJtX2h3X2xvY2suYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0 NA0KPiBpbmRleCAwMDAwMDAwLi5hYWQ1MGJhDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvdGVz dHMvZHJtX2h3X2xvY2suYw0KPiBAQCAtMCwwICsxLDIwNyBAQA0KPiArLyoNCj4gKyAqIENvcHly aWdodCDCqSAyMDE1IEludGVsIENvcnBvcmF0aW9uDQo+ICsgKg0KPiArICogUGVybWlzc2lvbiBp cyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5n IGENCj4gKyAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0 aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksDQo+ICsgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2Fy ZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uDQo+ICsg KiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJp YnV0ZSwgc3VibGljZW5zZSwNCj4gKyAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdh cmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQ0KPiArICogU29mdHdhcmUgaXMg ZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoN Cj4gKyAqDQo+ICsgKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNz aW9uIG5vdGljZSAoaW5jbHVkaW5nIHRoZSBuZXh0DQo+ICsgKiBwYXJhZ3JhcGgpIHNoYWxsIGJl IGluY2x1ZGVkIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlDQo+ ICsgKiBTb2Z0d2FyZS4NCj4gKyAqDQo+ICsgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFT IElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUg0KPiArICogSU1Q TElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJD SEFOVEFCSUxJVFksDQo+ICsgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQg Tk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwNCj4gKyAqIFRIRSBBVVRIT1JTIE9S IENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9U SEVSDQo+ICsgKiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBU T1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORw0KPiArICogRlJPTSwgT1VUIE9GIE9SIElOIENPTk5F Q1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUw0KPiAr ICogSU4gVEhFIFNPRlRXQVJFLg0KPiArICoNCj4gKyAqIEF1dGhvcnM6DQo+ICsgKiAgICBQZXRl ciBBbnRvaW5lIDxwZXRlci5hbnRvaW5lQGludGVsLmNvbT4NCj4gKyAqLw0KPiArDQo+ICsvKg0K PiArICogVGVzdGNhc2U6IFRlc3QgdGhlIEhXX0xPQ0tzIGZvciBjb3JyZWN0IHN1cHBvcnQgYW5k IG5vbi1jcmFzaGluZy4NCj4gKyAqDQo+ICsgKiBUaGlzIHRlc3Qgd2lsbCBjaGVjayB0aGF0IGhl IGh3X2xvY2tzIGFyZSBvbmx5IGdfc3VwcG9ydGVkIGZvciBkcml2ZXJzIHRoYXQNCj4gKyAqIHJl cXVpcmUgdGhhdCBzdXBwb3J0LiBJZiBpdCBpcyBub3QgZ19zdXBwb3J0ZWQgdGhlbiB0aGUgZnVu Y3Rpb25zIGFsbCByZXR1cm4NCj4gKyAqIHRoZSBjb3JyZWN0IGVycm9yIGNvZGUuDQo+ICsgKg0K PiArICogSWYgZ19zdXBwb3J0ZWQgaXQgd2lsbCBjaGVjayB0aGF0IHRoZSBmdW5jdGlvbnMgZG8g bm90IGNyYXNoIHdoZW4gdGhlIGNyYXNoDQo+ICsgKiB0ZXN0cyBhcmUgdXNlZCwgYWxzbyB0aGF0 IG9uZSBvZiB0aGUgdGVzdHMgaXMgYSBzZWN1cml0eSBsZXZlbCBlc2NhbGF0aW9uDQo+ICsgKiB0 aGF0IHNob3VsZCBiZSByZWplY3RlZC4NCj4gKyAqLw0KPiArI2luY2x1ZGUgPHN0ZGxpYi5oPg0K PiArI2luY2x1ZGUgPHNpZ25hbC5oPg0KPiArI2luY2x1ZGUgPHN5cy9pb2N0bC5oPg0KPiArI2lu Y2x1ZGUgPGRybS5oPg0KPiArI2luY2x1ZGUgImRybXRlc3QuaCINCj4gKyNpbmNsdWRlICJpZ3Rf Y29yZS5oIg0KPiArI2luY2x1ZGUgImlvY3RsX3dyYXBwZXJzLmgiDQo+ICsNCj4gKyNpZm5kZWYg RFJNX0tFUk5FTF9DT05URVhUDQo+ICsjCWRlZmluZSBEUk1fS0VSTkVMX0NPTlRFWFQJKDApDQo+ ICsjZW5kaWYNCj4gKw0KPiArI2lmbmRlZiBfRFJNX0xPQ0tfSEVMRA0KPiArIwlkZWZpbmUgX0RS TV9MT0NLX0hFTEQJMHg4MDAwMDAwMFUgLyoqPCBIYXJkd2FyZSBsb2NrIGlzIGhlbGQgKi8NCj4g KyNlbmRpZg0KPiArDQo+ICsjaWZuZGVmIF9EUk1fTE9DS19DT05UDQo+ICsjCWRlZmluZSBfRFJN X0xPQ0tfQ09OVAkweDQwMDAwMDAwVSAvKio8IEhhcmR3YXJlIGxvY2sgaXMgY29udGVuZGVkICov DQo+ICsjZW5kaWYNCj4gKw0KPiArc3RhdGljIGJvb2wJZ19zaWdfZmlyZWQ7DQo+ICtzdGF0aWMg Ym9vbAlnX3N1cHBvcnRlZDsNCj4gK3N0YXRpYyBzdHJ1Y3Qgc2lnYWN0aW9uIG9sZF9hY3Rpb247 DQo+ICsNCj4gK3N0YXRpYyB2b2lkIHNpZ190ZXJtX2hhbmRsZXIoaW50IHZhbHVlKQ0KPiArew0K PiArCWdfc2lnX2ZpcmVkID0gdHJ1ZTsNCj4gK30NCj4gKw0KPiArc3RhdGljIGJvb2wgc2V0X3Rl cm1faGFuZGxlcih2b2lkKQ0KPiArew0KPiArCXN0YXRpYyBzdHJ1Y3Qgc2lnYWN0aW9uIG5ld19h Y3Rpb247DQo+ICsNCj4gKwluZXdfYWN0aW9uLnNhX2hhbmRsZXIgPSBzaWdfdGVybV9oYW5kbGVy Ow0KPiArCXNpZ2VtcHR5c2V0KCZuZXdfYWN0aW9uLnNhX21hc2spOw0KPiArCW5ld19hY3Rpb24u c2FfZmxhZ3MgPSAwOw0KPiArDQo+ICsJaWd0X2Fzc2VydChzaWdhY3Rpb24oU0lHVEVSTSwgJm5l d19hY3Rpb24sICZvbGRfYWN0aW9uKSA9PSAwKTsNCj4gKw0KPiArCWlmIChvbGRfYWN0aW9uLnNh X2hhbmRsZXIgIT0gU0lHX0lHTikNCj4gKwkJcmV0dXJuIHRydWU7DQo+ICsJZWxzZQ0KPiArCQly ZXR1cm4gZmFsc2U7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyB2b2lkIHJlc3RvcmVfdGVybV9oYW5k bGVyKHZvaWQpDQo+ICt7DQo+ICsJc2lnYWN0aW9uKFNJR1RFUk0sICZvbGRfYWN0aW9uLCBOVUxM KTsNCj4gK30NCj4gKw0KPiArc3RhdGljIHZvaWQgZG9lc19sb2NrX2NyYXNoKGludCBmZCkNCj4g K3sNCj4gKwlzdHJ1Y3QgZHJtX2xvY2sJcnViYmlzaDsNCj4gKwlpbnQgcmV0Ow0KPiArDQo+ICsJ bWVtc2V0KCZydWJiaXNoLCAnQScsIHNpemVvZihzdHJ1Y3QgZHJtX2xvY2spKTsNCj4gKw0KPiAr CWdfc2lnX2ZpcmVkID0gZmFsc2U7DQo+ICsJaWd0X2Fzc2VydChzZXRfdGVybV9oYW5kbGVyKCkp Ow0KPiArDQo+ICsJcmV0ID0gaW9jdGwoZmQsIERSTV9JT0NUTF9MT0NLLCAmcnViYmlzaCk7DQo+ ICsNCj4gKwlpZ3RfYXNzZXJ0KHJldCA9PSAtMSAmJiAoIWdfc3VwcG9ydGVkIHx8IGdfc2lnX2Zp cmVkKSk7DQo+ICsJaWd0X2Fzc2VydChyZXQgPT0gLTEgJiYgKGdfc3VwcG9ydGVkIHx8IGVycm5v ID09IEVJTlZBTCkpOw0KPiArDQo+ICsJcmVzdG9yZV90ZXJtX2hhbmRsZXIoKTsNCj4gK30NCj4g Kw0KPiArc3RhdGljIHZvaWQgZG9lc191bmxvY2tfY3Jhc2goaW50IGZkKQ0KPiArew0KPiArCXN0 cnVjdCBkcm1fbG9jawlydWJiaXNoOw0KPiArCWludCByZXQ7DQo+ICsNCj4gKwlnX3NpZ19maXJl ZCA9IGZhbHNlOw0KPiArCWlndF9hc3NlcnQoc2V0X3Rlcm1faGFuZGxlcigpKTsNCj4gKw0KPiAr CW1lbXNldCgmcnViYmlzaCwgJ0EnLCBzaXplb2Yoc3RydWN0IGRybV9sb2NrKSk7DQo+ICsNCj4g KwlyZXQgPSBpb2N0bChmZCwgRFJNX0lPQ1RMX1VOTE9DSywgJnJ1YmJpc2gpOw0KPiArDQo+ICsJ aWd0X2Fzc2VydChyZXQgPT0gLTEgJiYgKCFnX3N1cHBvcnRlZCB8fCBnX3NpZ19maXJlZCkpOw0K PiArCWlndF9hc3NlcnQocmV0ID09IC0xICYmIChnX3N1cHBvcnRlZCB8fCBlcnJubyA9PSBFSU5W QUwpKTsNCj4gKw0KPiArCXJlc3RvcmVfdGVybV9oYW5kbGVyKCk7DQo+ICt9DQo+ICsNCj4gK3N0 YXRpYyB2b2lkIHByaW9yaXR5X2VzY2FsYXRpb24oaW50IGZkKQ0KPiArew0KPiArCXN0cnVjdCBk cm1fbG9jawlydWJiaXNoOw0KPiArCWludCByZXQ7DQo+ICsNCj4gKwlnX3NpZ19maXJlZCA9IGZh bHNlOw0KPiArCWlndF9hc3NlcnQoc2V0X3Rlcm1faGFuZGxlcigpKTsNCj4gKw0KPiArCS8qIHRo aXMgc2hvdWxkIGJlIHJlamVjdGVkICovDQo+ICsJcnViYmlzaC5jb250ZXh0ID0gRFJNX0tFUk5F TF9DT05URVhUOw0KPiArCXJldCA9IGlvY3RsKGZkLCBEUk1fSU9DVExfTE9DSywgJnJ1YmJpc2gp Ow0KPiArCWlndF9hc3NlcnQocmV0ID09IC0xICYmICghZ19zdXBwb3J0ZWQgfHwgZXJybm8gPT0g RVBFUk0pKTsNCj4gKwlpZ3RfYXNzZXJ0KHJldCA9PSAtMSAmJiAoZ19zdXBwb3J0ZWQgfHwgZXJy bm8gPT0gRUlOVkFMKSk7DQo+ICsNCj4gKwkvKiB0aGlzIHNob3VsZCBhbHNvIGJlIHJlamVjdGVk ICovDQo+ICsJcnViYmlzaC5jb250ZXh0ID0gX0RSTV9MT0NLX0hFTEQgfCBEUk1fS0VSTkVMX0NP TlRFWFQ7DQo+ICsJZ19zaWdfZmlyZWQgPSBmYWxzZTsNCj4gKwlyZXQgPSBpb2N0bChmZCwgRFJN X0lPQ1RMX0xPQ0ssICZydWJiaXNoKTsNCj4gKwlpZ3RfYXNzZXJ0KHJldCA9PSAtMSAmJiAoIWdf c3VwcG9ydGVkIHx8IGVycm5vID09IEVQRVJNKSk7DQo+ICsJaWd0X2Fzc2VydChyZXQgPT0gLTEg JiYgKGdfc3VwcG9ydGVkIHx8IGVycm5vID09IEVJTlZBTCkpOw0KPiArDQo+ICsJLyogdGhpcyBz aG91bGQgYWxzbyBiZSByZWplY3RlZCAqLw0KPiArCXJ1YmJpc2guY29udGV4dCA9IF9EUk1fTE9D S19DT05UIHwgRFJNX0tFUk5FTF9DT05URVhUOw0KPiArCWdfc2lnX2ZpcmVkID0gZmFsc2U7DQo+ ICsJcmV0ID0gaW9jdGwoZmQsIERSTV9JT0NUTF9MT0NLLCAmcnViYmlzaCk7DQo+ICsJaWd0X2Fz c2VydChyZXQgPT0gLTEgJiYgKCFnX3N1cHBvcnRlZCB8fCBlcnJubyA9PSBFUEVSTSkpOw0KPiAr CWlndF9hc3NlcnQocmV0ID09IC0xICYmIChnX3N1cHBvcnRlZCB8fCBlcnJubyA9PSBFSU5WQUwp KTsNCj4gKw0KPiArCS8qIHRoaXMgc2hvdWxkIGJlIHJlamVjdGVkICovDQo+ICsJcnViYmlzaC5j b250ZXh0ID0gRFJNX0tFUk5FTF9DT05URVhUOw0KPiArCWdfc2lnX2ZpcmVkID0gZmFsc2U7DQo+ ICsJcmV0ID0gaW9jdGwoZmQsIERSTV9JT0NUTF9VTkxPQ0ssICZydWJiaXNoKTsNCj4gKwlpZ3Rf YXNzZXJ0KHJldCA9PSAtMSAmJiAoIWdfc3VwcG9ydGVkIHx8IGVycm5vID09IEVQRVJNKSk7DQo+ ICsJaWd0X2Fzc2VydChyZXQgPT0gLTEgJiYgKGdfc3VwcG9ydGVkIHx8IGVycm5vID09IEVJTlZB TCkpOw0KPiArDQo+ICsJLyogdGhpcyBzaG91bGQgYWxzbyBiZSByZWplY3RlZCAqLw0KPiArCXJ1 YmJpc2guY29udGV4dCA9IF9EUk1fTE9DS19IRUxEIHwgRFJNX0tFUk5FTF9DT05URVhUOw0KPiAr CWdfc2lnX2ZpcmVkID0gZmFsc2U7DQo+ICsJcmV0ID0gaW9jdGwoZmQsIERSTV9JT0NUTF9VTkxP Q0ssICZydWJiaXNoKTsNCj4gKwlpZ3RfYXNzZXJ0KHJldCA9PSAtMSAmJiAoIWdfc3VwcG9ydGVk IHx8IGVycm5vID09IEVQRVJNKSk7DQo+ICsJaWd0X2Fzc2VydChyZXQgPT0gLTEgJiYgKGdfc3Vw cG9ydGVkIHx8IGVycm5vID09IEVJTlZBTCkpOw0KPiArDQo+ICsJLyogdGhpcyBzaG91bGQgYWxz byBiZSByZWplY3RlZCAqLw0KPiArCXJ1YmJpc2guY29udGV4dCA9IF9EUk1fTE9DS19DT05UIHwg RFJNX0tFUk5FTF9DT05URVhUOw0KPiArCWdfc2lnX2ZpcmVkID0gZmFsc2U7DQo+ICsJcmV0ID0g aW9jdGwoZmQsIERSTV9JT0NUTF9VTkxPQ0ssICZydWJiaXNoKTsNCj4gKwlpZ3RfYXNzZXJ0KHJl dCA9PSAtMSAmJiAoIWdfc3VwcG9ydGVkIHx8IGVycm5vID09IEVQRVJNKSk7DQo+ICsJaWd0X2Fz c2VydChyZXQgPT0gLTEgJiYgKGdfc3VwcG9ydGVkIHx8IGVycm5vID09IEVJTlZBTCkpOw0KPiAr DQo+ICsJcmVzdG9yZV90ZXJtX2hhbmRsZXIoKTsNCj4gK30NCj4gKw0KPiAraWd0X21haW4NCj4g K3sNCj4gKwlpbnQgZmQgPSAtMTsNCj4gKw0KPiArCWdfc2lnX2ZpcmVkID0gZmFsc2U7DQo+ICsJ Z19zdXBwb3J0ZWQgPSBmYWxzZTsNCj4gKw0KPiArCWlndF9maXh0dXJlIHsNCj4gKwkJZmQgPSBk cm1fb3Blbl9hbnkoKTsNCj4gKwkJaWd0X2Fzc2VydChmZCA+PSAwKTsNCj4gKwl9DQo+ICsNCj4g KwlnX3N1cHBvcnRlZCA9IGRybV9oYXNfbGVnYWN5X2NvbnRleHQoZmQpOw0KPiArDQo+ICsJaWd0 X2luZm8oIkhXIExPQ0sgU3VwcG9ydGVkOiAlc1xuIiwgZ19zdXBwb3J0ZWQ/IlllcyI6Ik5vIik7 DQo+ICsNCj4gKwlpZ3Rfc3VidGVzdCgibG9jay1jcmFzaCIpIHsNCj4gKwkJZG9lc19sb2NrX2Ny YXNoKGZkKTsNCj4gKwl9DQo+ICsNCj4gKwlpZ3Rfc3VidGVzdCgidW5sb2NrLWNyYXNoIikgew0K PiArCQlkb2VzX3VubG9ja19jcmFzaChmZCk7DQo+ICsJfQ0KPiArDQo+ICsJaWd0X3N1YnRlc3Qo InByaW9yaXR5LWVzY2FsYXRpb24iKSB7DQo+ICsJCXByaW9yaXR5X2VzY2FsYXRpb24oZmQpOw0K PiArCX0NCj4gKw0KPiArCWlndF9maXh0dXJlDQo+ICsJCWNsb3NlKGZkKTsNCj4gK30NCj4gKw0K DQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpJbnRlbC1n ZnggbWFpbGluZyBsaXN0CkludGVsLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cDovL2xp c3RzLmZyZWVkZXNrdG9wLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2ludGVsLWdmeAo=