From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-13.8 required=3.0 tests=BAYES_00, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id C6033C11F64 for ; Mon, 28 Jun 2021 19:27:19 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 89B0061C97 for ; Mon, 28 Jun 2021 19:27:19 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 89B0061C97 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=intel.com Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=intel-gfx-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 1008C6E526; Mon, 28 Jun 2021 19:27:19 +0000 (UTC) Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) by gabe.freedesktop.org (Postfix) with ESMTPS id 6DA8F6E526; Mon, 28 Jun 2021 19:27:18 +0000 (UTC) X-IronPort-AV: E=McAfee;i="6200,9189,10029"; a="207839447" X-IronPort-AV: E=Sophos;i="5.83,306,1616482800"; d="scan'208";a="207839447" Received: from orsmga006.jf.intel.com ([10.7.209.51]) by fmsmga103.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 28 Jun 2021 12:27:17 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.83,306,1616482800"; d="scan'208";a="407862002" Received: from irsmsx605.ger.corp.intel.com ([163.33.146.138]) by orsmga006.jf.intel.com with ESMTP; 28 Jun 2021 12:27:16 -0700 Received: from orsmsx611.amr.corp.intel.com (10.22.229.24) by IRSMSX605.ger.corp.intel.com (163.33.146.138) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2242.4; Mon, 28 Jun 2021 20:27:15 +0100 Received: from orsmsx611.amr.corp.intel.com ([10.22.229.24]) by ORSMSX611.amr.corp.intel.com ([10.22.229.24]) with mapi id 15.01.2242.008; Mon, 28 Jun 2021 12:27:13 -0700 From: "Ruhl, Michael J" To: =?utf-8?B?VGhvbWFzIEhlbGxzdHLDtm0=?= , "intel-gfx@lists.freedesktop.org" , "dri-devel@lists.freedesktop.org" Thread-Topic: [Intel-gfx] [PATCH v3 2/5] drm/i915/gem: Introduce a selftest for the gem object migrate functionality Thread-Index: AQHXbCx2h4vTIXdAe0CmFOHUE8JUOqspxM0QgAB76oD//43pcA== Date: Mon, 28 Jun 2021 19:27:13 +0000 Message-ID: <661d41530ae0406b89d07286e0cb384e@intel.com> References: <20210628144626.76126-1-thomas.hellstrom@linux.intel.com> <20210628144626.76126-3-thomas.hellstrom@linux.intel.com> <1cd06e51484c44a985e4a467007d1752@intel.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-reaction: no-action dlp-version: 11.6.0.76 x-originating-ip: [10.1.200.100] MIME-Version: 1.0 Subject: Re: [Intel-gfx] [PATCH v3 2/5] drm/i915/gem: Introduce a selftest for the gem object migrate functionality X-BeenThere: intel-gfx@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Intel graphics driver community testing & development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Auld, Matthew" Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: intel-gfx-bounces@lists.freedesktop.org Sender: "Intel-gfx" Pi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+RnJvbTogVGhvbWFzIEhlbGxzdHLDtm0gPHRo b21hcy5oZWxsc3Ryb21AbGludXguaW50ZWwuY29tPg0KPlNlbnQ6IE1vbmRheSwgSnVuZSAyOCwg MjAyMSAzOjE1IFBNDQo+VG86IFJ1aGwsIE1pY2hhZWwgSiA8bWljaGFlbC5qLnJ1aGxAaW50ZWwu Y29tPjsgaW50ZWwtDQo+Z2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZzsgZHJpLWRldmVsQGxpc3Rz LmZyZWVkZXNrdG9wLm9yZw0KPkNjOiBBdWxkLCBNYXR0aGV3IDxtYXR0aGV3LmF1bGRAaW50ZWwu Y29tPg0KPlN1YmplY3Q6IFJlOiBbSW50ZWwtZ2Z4XSBbUEFUQ0ggdjMgMi81XSBkcm0vaTkxNS9n ZW06IEludHJvZHVjZSBhIHNlbGZ0ZXN0IGZvcg0KPnRoZSBnZW0gb2JqZWN0IG1pZ3JhdGUgZnVu Y3Rpb25hbGl0eQ0KPg0KPk9uIE1vbiwgMjAyMS0wNi0yOCBhdCAxODo1MyArMDAwMCwgUnVobCwg TWljaGFlbCBKIHdyb3RlOg0KPj4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPj4gPiBG cm9tOiBJbnRlbC1nZnggPGludGVsLWdmeC1ib3VuY2VzQGxpc3RzLmZyZWVkZXNrdG9wLm9yZz4g T24gQmVoYWxmDQo+PiA+IE9mDQo+PiA+IFRob21hcyBIZWxsc3Ryw7ZtDQo+PiA+IFNlbnQ6IE1v bmRheSwgSnVuZSAyOCwgMjAyMSAxMDo0NiBBTQ0KPj4gPiBUbzogaW50ZWwtZ2Z4QGxpc3RzLmZy ZWVkZXNrdG9wLm9yZzsNCj4+ID4gZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9yZw0KPj4g PiBDYzogVGhvbWFzIEhlbGxzdHLDtm0gPHRob21hcy5oZWxsc3Ryb21AbGludXguaW50ZWwuY29t PjsgQXVsZCwNCj4+ID4gTWF0dGhldw0KPj4gPiA8bWF0dGhldy5hdWxkQGludGVsLmNvbT4NCj4+ ID4gU3ViamVjdDogW0ludGVsLWdmeF0gW1BBVENIIHYzIDIvNV0gZHJtL2k5MTUvZ2VtOiBJbnRy b2R1Y2UgYQ0KPj4gPiBzZWxmdGVzdCBmb3IgdGhlDQo+PiA+IGdlbSBvYmplY3QgbWlncmF0ZSBm dW5jdGlvbmFsaXR5DQo+PiA+DQo+PiA+IEZyb206IE1hdHRoZXcgQXVsZCA8bWF0dGhldy5hdWxk QGludGVsLmNvbT4NCj4+ID4NCj4+ID4gQSBzZWxmdGVzdCBmb3IgdGhlIGdlbSBvYmplY3QgbWln cmF0ZSBmdW5jdGlvbmFsaXR5LiBTbGlnaHRseQ0KPj4gPiBhZGFwdGVkDQo+PiA+IGZyb20gdGhl IG9yaWdpbmFsIGJ5IE1hdHRoZXcgdG8gdGhlIG5ldyBpbnRlcmZhY2UgYW5kIG5ldyBmaWxsIGJs aXQNCj4+ID4gY29kZS4NCj4+ID4NCj4+ID4gQ28tZGV2ZWxvcGVkLWJ5OiBUaG9tYXMgSGVsbHN0 csO2bQ0KPj4gPiA8dGhvbWFzLmhlbGxzdHJvbUBsaW51eC5pbnRlbC5jb20+DQo+PiA+IFNpZ25l ZC1vZmYtYnk6IFRob21hcyBIZWxsc3Ryw7ZtIDx0aG9tYXMuaGVsbHN0cm9tQGxpbnV4LmludGVs LmNvbT4NCj4+ID4gU2lnbmVkLW9mZi1ieTogTWF0dGhldyBBdWxkIDxtYXR0aGV3LmF1bGRAaW50 ZWwuY29tPg0KPj4gPiAtLS0NCj4+ID4gZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL2k5MTVfZ2Vt X29iamVjdC5jwqDCoMKgIHzCoMKgIDEgKw0KPj4gPiAuLi4vZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0 cy9pOTE1X2dlbV9taWdyYXRlLmMgfCAyMzcNCj4+ID4gKysrKysrKysrKysrKysrKysrDQo+PiA+ IC4uLi9kcm0vaTkxNS9zZWxmdGVzdHMvaTkxNV9saXZlX3NlbGZ0ZXN0cy5owqAgfMKgwqAgMSAr DQo+PiA+IDMgZmlsZXMgY2hhbmdlZCwgMjM5IGluc2VydGlvbnMoKykNCj4+ID4gY3JlYXRlIG1v ZGUgMTAwNjQ0DQo+PiA+IGRyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9n ZW1fbWlncmF0ZS5jDQo+PiA+DQo+PiA+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9nZW0vaTkxNV9nZW1fb2JqZWN0LmMNCj4+ID4gYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0v aTkxNV9nZW1fb2JqZWN0LmMNCj4+ID4gaW5kZXggMWMxOGJlMDY3YjU4Li5mZjE0N2ZkNTk4NzQg MTAwNjQ0DQo+PiA+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9vYmpl Y3QuYw0KPj4gPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fb2JqZWN0 LmMNCj4+ID4gQEAgLTY0OSw2ICs2NDksNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9nZW1f b2JqZWN0X2Z1bmNzDQo+PiA+IGk5MTVfZ2VtX29iamVjdF9mdW5jcyA9IHsNCj4+ID4gI2lmIElT X0VOQUJMRUQoQ09ORklHX0RSTV9JOTE1X1NFTEZURVNUKQ0KPj4gPiAjaW5jbHVkZSAic2VsZnRl c3RzL2h1Z2VfZ2VtX29iamVjdC5jIg0KPj4gPiAjaW5jbHVkZSAic2VsZnRlc3RzL2h1Z2VfcGFn ZXMuYyINCj4+ID4gKyNpbmNsdWRlICJzZWxmdGVzdHMvaTkxNV9nZW1fbWlncmF0ZS5jIg0KPj4g PiAjaW5jbHVkZSAic2VsZnRlc3RzL2k5MTVfZ2VtX29iamVjdC5jIg0KPj4gPiAjaW5jbHVkZSAi c2VsZnRlc3RzL2k5MTVfZ2VtX2NvaGVyZW5jeS5jIg0KPj4gPiAjZW5kaWYNCj4+ID4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxmdGVzdHMvaTkxNV9nZW1fbWlncmF0 ZS5jDQo+PiA+IGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3NlbGZ0ZXN0cy9pOTE1X2dlbV9t aWdyYXRlLmMNCj4+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4+ID4gaW5kZXggMDAwMDAwMDAw MDAwLi5hNDM3YjY2ZjY0ZDkNCj4+ID4gLS0tIC9kZXYvbnVsbA0KPj4gPiArKysgYi9kcml2ZXJz L2dwdS9kcm0vaTkxNS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX21pZ3JhdGUuYw0KPj4gPiBAQCAt MCwwICsxLDIzNyBAQA0KPj4gPiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVA0KPj4g PiArLyoNCj4+ID4gKyAqIENvcHlyaWdodCDCqSAyMDIwLTIwMjEgSW50ZWwgQ29ycG9yYXRpb24N Cj4+ID4gKyAqLw0KPj4gPiArDQo+PiA+ICsjaW5jbHVkZSAiZ3QvaW50ZWxfbWlncmF0ZS5oIg0K Pj4gPiArDQo+PiA+ICtzdGF0aWMgaW50IGlndF9zbWVtX2NyZWF0ZV9taWdyYXRlKHZvaWQgKmFy ZykNCj4+ID4gK3sNCj4+ID4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IGludGVsX2d0ICpndCA9IGFy ZzsNCj4+ID4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IGRybV9pOTE1X3ByaXZhdGUgKmk5MTUgPSBn dC0+aTkxNTsNCj4+ID4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3Qg Km9iajsNCj4+ID4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IGk5MTVfZ2VtX3d3X2N0eCB3dzsNCj4+ ID4gK8KgwqDCoMKgwqDCoMKgaW50IGVyciA9IDA7DQo+PiA+ICsNCj4+ID4gK8KgwqDCoMKgwqDC oMKgLyogU3dpdGNoIG9iamVjdCBiYWNraW5nLXN0b3JlIG9uIGNyZWF0ZSAqLw0KPj4gPiArwqDC oMKgwqDCoMKgwqBvYmogPSBpOTE1X2dlbV9vYmplY3RfY3JlYXRlX2xtZW0oaTkxNSwgUEFHRV9T SVpFLCAwKTsNCj4+ID4gK8KgwqDCoMKgwqDCoMKgaWYgKElTX0VSUihvYmopKQ0KPj4gPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIFBUUl9FUlIob2JqKTsNCj4+ID4gKw0K Pj4gPiArwqDCoMKgwqDCoMKgwqBmb3JfaTkxNV9nZW1fd3coJnd3LCBlcnIsIHRydWUpIHsNCj4+ ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGVyciA9IGk5MTVfZ2VtX29iamVjdF9s b2NrKG9iaiwgJnd3KTsNCj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChl cnIpDQo+PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg Y29udGludWU7DQo+PiA+ICsNCj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlm ICghaTkxNV9nZW1fb2JqZWN0X2Nhbl9taWdyYXRlKG9iaiwNCj4+ID4gSU5URUxfUkVHSU9OX1NN RU0pKSB7DQo+PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgZXJyID0gLUVJTlZBTDsNCj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBjb250aW51ZTsNCj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoH0NCj4+ID4gKw0KPj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZXJyID0g aTkxNV9nZW1fb2JqZWN0X21pZ3JhdGUob2JqLCAmd3csDQo+PiA+IElOVEVMX1JFR0lPTl9TTUVN KTsNCj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChlcnIpDQo+PiA+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY29udGludWU7DQo+ PiA+ICsNCj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGVyciA9IGk5MTVfZ2Vt X29iamVjdF9waW5fcGFnZXMob2JqKTsNCj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGlmIChlcnIpDQo+PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgY29udGludWU7DQo+PiA+ICsNCj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoGlmIChpOTE1X2dlbV9vYmplY3RfY2FuX21pZ3JhdGUob2JqLA0KPj4gPiBJTlRFTF9S RUdJT05fTE1FTSkpDQo+PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgZXJyID0gLUVJTlZBTDsNCj4+ID4gKw0KPj4gPiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgaTkxNV9nZW1fb2JqZWN0X3VucGluX3BhZ2VzKG9iaik7DQo+PiA+ICvCoMKg wqDCoMKgwqDCoH0NCj4+ID4gK8KgwqDCoMKgwqDCoMKgaTkxNV9nZW1fb2JqZWN0X3B1dChvYmop Ow0KPj4gPiArDQo+PiA+ICvCoMKgwqDCoMKgwqDCoHJldHVybiBlcnI7DQo+PiA+ICt9DQo+PiA+ ICsNCj4+ID4gK3N0YXRpYyBpbnQgaWd0X2xtZW1fY3JlYXRlX21pZ3JhdGUodm9pZCAqYXJnKQ0K Pj4gPiArew0KPj4gPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgaW50ZWxfZ3QgKmd0ID0gYXJnOw0K Pj4gPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgZHJtX2k5MTVfcHJpdmF0ZSAqaTkxNSA9IGd0LT5p OTE1Ow0KPj4gPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2Jq Ow0KPj4gPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgaTkxNV9nZW1fd3dfY3R4IHd3Ow0KPj4gPiAr wqDCoMKgwqDCoMKgwqBpbnQgZXJyID0gMDsNCj4+ID4gKw0KPj4gPiArwqDCoMKgwqDCoMKgwqAv KiBTd2l0Y2ggb2JqZWN0IGJhY2tpbmctc3RvcmUgb24gY3JlYXRlICovDQo+PiA+ICvCoMKgwqDC oMKgwqDCoG9iaiA9IGk5MTVfZ2VtX29iamVjdF9jcmVhdGVfc2htZW0oaTkxNSwgUEFHRV9TSVpF KTsNCj4+ID4gK8KgwqDCoMKgwqDCoMKgaWYgKElTX0VSUihvYmopKQ0KPj4gPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgcmV0dXJuIFBUUl9FUlIob2JqKTsNCj4+ID4gKw0KPj4gPiAr wqDCoMKgwqDCoMKgwqBmb3JfaTkxNV9nZW1fd3coJnd3LCBlcnIsIHRydWUpIHsNCj4+ID4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGVyciA9IGk5MTVfZ2VtX29iamVjdF9sb2NrKG9i aiwgJnd3KTsNCj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChlcnIpDQo+ PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY29udGlu dWU7DQo+PiA+ICsNCj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmICghaTkx NV9nZW1fb2JqZWN0X2Nhbl9taWdyYXRlKG9iaiwNCj4+ID4gSU5URUxfUkVHSU9OX0xNRU0pKSB7 DQo+PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZXJy ID0gLUVJTlZBTDsNCj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBjb250aW51ZTsNCj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoH0N Cj4+ID4gKw0KPj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZXJyID0gaTkxNV9n ZW1fb2JqZWN0X21pZ3JhdGUob2JqLCAmd3csDQo+PiA+IElOVEVMX1JFR0lPTl9MTUVNKTsNCj4+ ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChlcnIpDQo+PiA+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgY29udGludWU7DQo+PiA+ICsN Cj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGVyciA9IGk5MTVfZ2VtX29iamVj dF9waW5fcGFnZXMob2JqKTsNCj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlm IChlcnIpDQo+PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgY29udGludWU7DQo+PiA+ICsNCj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGlmIChpOTE1X2dlbV9vYmplY3RfY2FuX21pZ3JhdGUob2JqLA0KPj4gPiBJTlRFTF9SRUdJT05f U01FTSkpDQo+PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgZXJyID0gLUVJTlZBTDsNCj4+ID4gKw0KPj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgaTkxNV9nZW1fb2JqZWN0X3VucGluX3BhZ2VzKG9iaik7DQo+PiA+ICvCoMKgwqDCoMKg wqDCoH0NCj4+ID4gK8KgwqDCoMKgwqDCoMKgaTkxNV9nZW1fb2JqZWN0X3B1dChvYmopOw0KPj4g PiArDQo+PiA+ICvCoMKgwqDCoMKgwqDCoHJldHVybiBlcnI7DQo+PiA+ICt9DQo+PiA+ICsNCj4+ ID4gK3N0YXRpYyBpbnQgbG1lbV9wYWdlc19taWdyYXRlX29uZShzdHJ1Y3QgaTkxNV9nZW1fd3df Y3R4ICp3dywNCj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9iaikN Cj4+ID4gK3sNCj4+ID4gK8KgwqDCoMKgwqDCoMKgaW50IGVycjsNCj4+ID4gKw0KPj4gPiArwqDC oMKgwqDCoMKgwqBlcnIgPSBpOTE1X2dlbV9vYmplY3RfbG9jayhvYmosIHd3KTsNCj4+ID4gK8Kg wqDCoMKgwqDCoMKgaWYgKGVycikNCj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oHJldHVybiBlcnI7DQo+PiA+ICsNCj4+ID4gK8KgwqDCoMKgwqDCoMKgZXJyID0gaTkxNV9nZW1f b2JqZWN0X3dhaXQob2JqLA0KPj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEk5MTVfV0FJVF9JTlRFUlJVUFRJQkxF IHwNCj4+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBJOTE1X1dBSVRfUFJJT1JJVFkgfA0KPj4gPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IEk5MTVfV0FJVF9BTEwsDQo+PiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgTUFYX1NDSEVEVUxFX1RJTUVPVVQpOw0K Pj4gPiArwqDCoMKgwqDCoMKgwqBpZiAoZXJyKQ0KPj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgcmV0dXJuIGVycjsNCj4+ID4gKw0KPj4gPiArwqDCoMKgwqDCoMKgwqBpZiAoaTkx NV9nZW1fb2JqZWN0X2lzX2xtZW0ob2JqKSkgew0KPj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgaWYgKCFpOTE1X2dlbV9vYmplY3RfY2FuX21pZ3JhdGUob2JqLA0KPj4gPiBJTlRF TF9SRUdJT05fU01FTSkpIHsNCj4+DQo+PiBJIGRvbid0IHNlZSBhbnnCoCB0ZXN0aW5nIG9mIHRo ZSBwYXJhbWV0ZXIgbnVtX2FsbG93ZWQuDQo+Pg0KPj4gSXMgdGhhdCBkb25lIHNvbWV3aGVyZSBl bHNlPw0KPj4NCj4+IE1pa2UNCj4NCj5UaGF0J3MgYSB1c2VyLXNwYWNlIHN1Ym1pdHRlZCBwYXJh bWV0ZXIgb25seSwgZGljdGF0aW5nIHdoYXQgcmVnaW9uIHRoZQ0KPm9iamVjdCBpcyBhbGxvd2Vk IGluIHdoZW4gYm91bmQgdG8gdGhlIEdQVS4gSXQncyBub3QgZXhlcmNpc2VkIGluIHRoaXMNCj5z ZWxmdGVzdC4NCg0KR290IGl0Lg0KDQpSZXZpZXdlZC1ieTogTWljaGFlbCBKLiBSdWhsIDxtaWNo YWVsLmoucnVobEBpbnRlbC5jb20+DQoNCk0NCg0KPlRoYW5rcywNCj5UaG9tYXMNCj4NCg0KX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KSW50ZWwtZ2Z4IG1h aWxpbmcgbGlzdApJbnRlbC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlzdHMu ZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vaW50ZWwtZ2Z4Cg==