From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [216.205.24.124]) by mx.groups.io with SMTP id smtpd.web08.3936.1608154737860626420 for ; Wed, 16 Dec 2020 13:38:58 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=UkrcFBAN; spf=pass (domain: redhat.com, ip: 216.205.24.124, mailfrom: lersek@redhat.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1608154737; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=rOQybyegtcx142mU78I/QOOS59X6RpvO+8qXUTKMS7g=; b=UkrcFBANlzHbtHtogqpqE9NVixmNtS8zb82jmBEZWSmcgfdElwHPMPnYBMwP1ttrmlArsY tc2/U5jlLFFW+703qKqAfQaMUUhy1Nwohjtarr9w+zfbXEhEtC3j9/FJaBQspuWi1LKWrt /6vi79mG8kZJcoo0yZF0b4oeHcvRy7k= Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-321-9T45EBEAMRCPUmoD4cq_Lg-1; Wed, 16 Dec 2020 16:38:53 -0500 X-MC-Unique: 9T45EBEAMRCPUmoD4cq_Lg-1 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id DE0D4180A087; Wed, 16 Dec 2020 21:38:51 +0000 (UTC) Received: from lacos-laptop-7.usersys.redhat.com (ovpn-114-152.ams2.redhat.com [10.36.114.152]) by smtp.corp.redhat.com (Postfix) with ESMTP id 3566460C9C; Wed, 16 Dec 2020 21:38:47 +0000 (UTC) From: "Laszlo Ersek" To: devel@edk2.groups.io, virtio-fs@redhat.com, lersek@redhat.com Cc: Ard Biesheuvel , Jordan Justen , =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= Subject: [edk2 PATCH 13/48] OvmfPkg/VirtioFsDxe: add a shared wrapper for FUSE_FSYNC / FUSE_FSYNCDIR Date: Wed, 16 Dec 2020 22:10:50 +0100 Message-Id: <20201216211125.19496-14-lersek@redhat.com> In-Reply-To: <20201216211125.19496-1-lersek@redhat.com> References: <20201216211125.19496-1-lersek@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=lersek@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 VGhlIEZVU0VfRlNZTkMgYW5kIEZVU0VfRlNZTkNESVIgY29tbWFuZHMgb25seSBkaWZmZXIgaW4g dGhlIG9wY29kZS4gQWRkIGEKY29tbW9uIGZ1bmN0aW9uIGZvciB3cmFwcGluZyBib3RoLgoKQ2M6 IEFyZCBCaWVzaGV1dmVsIDxhcmQuYmllc2hldXZlbEBhcm0uY29tPgpDYzogSm9yZGFuIEp1c3Rl biA8am9yZGFuLmwuanVzdGVuQGludGVsLmNvbT4KQ2M6IFBoaWxpcHBlIE1hdGhpZXUtRGF1ZMOp IDxwaGlsbWRAcmVkaGF0LmNvbT4KUmVmOiBodHRwczovL2J1Z3ppbGxhLnRpYW5vY29yZS5vcmcv c2hvd19idWcuY2dpP2lkPTMwOTcKU2lnbmVkLW9mZi1ieTogTGFzemxvIEVyc2VrIDxsZXJzZWtA cmVkaGF0LmNvbT4KLS0tCiBPdm1mUGtnL0luY2x1ZGUvSW5kdXN0cnlTdGFuZGFyZC9WaXJ0aW9G cy5oIHwgIDExICsrCiBPdm1mUGtnL1ZpcnRpb0ZzRHhlL1ZpcnRpb0ZzRHhlLmluZiAgICAgICAg IHwgICAxICsKIE92bWZQa2cvVmlydGlvRnNEeGUvVmlydGlvRnNEeGUuaCAgICAgICAgICAgfCAg IDggKysKIE92bWZQa2cvVmlydGlvRnNEeGUvRnVzZUZzeW5jLmMgICAgICAgICAgICAgfCAxMjEg KysrKysrKysrKysrKysrKysrKysKIDQgZmlsZXMgY2hhbmdlZCwgMTQxIGluc2VydGlvbnMoKykK CmRpZmYgLS1naXQgYS9Pdm1mUGtnL0luY2x1ZGUvSW5kdXN0cnlTdGFuZGFyZC9WaXJ0aW9Gcy5o IGIvT3ZtZlBrZy9JbmNsdWRlL0luZHVzdHJ5U3RhbmRhcmQvVmlydGlvRnMuaAppbmRleCAwMjQx ZGFmMWU4ZDYuLjc5N2Q5NGEzOWEzOSAxMDA2NDQKLS0tIGEvT3ZtZlBrZy9JbmNsdWRlL0luZHVz dHJ5U3RhbmRhcmQvVmlydGlvRnMuaAorKysgYi9Pdm1mUGtnL0luY2x1ZGUvSW5kdXN0cnlTdGFu ZGFyZC9WaXJ0aW9Gcy5oCkBAIC04MiwxOSArODIsMjEgQEAgdHlwZWRlZiBzdHJ1Y3QgewogI2Rl ZmluZSBWSVJUSU9fRlNfRlVTRV9ST09UX0RJUl9OT0RFX0lEIDENCiANCiAvLw0KIC8vIEZVU0Ug b3BlcmF0aW9uIGNvZGVzLg0KIC8vDQogdHlwZWRlZiBlbnVtIHsNCiAgIFZpcnRpb0ZzRnVzZU9w Rm9yZ2V0ICAgICAgPSAgMiwNCiAgIFZpcnRpb0ZzRnVzZU9wUmVsZWFzZSAgICAgPSAxOCwNCisg IFZpcnRpb0ZzRnVzZU9wRnN5bmMgICAgICAgPSAyMCwNCiAgIFZpcnRpb0ZzRnVzZU9wSW5pdCAg ICAgICAgPSAyNiwNCiAgIFZpcnRpb0ZzRnVzZU9wT3BlbkRpciAgICAgPSAyNywNCiAgIFZpcnRp b0ZzRnVzZU9wUmVsZWFzZURpciAgPSAyOSwNCisgIFZpcnRpb0ZzRnVzZU9wRnN5bmNEaXIgICAg PSAzMCwNCiB9IFZJUlRJT19GU19GVVNFX09QQ09ERTsNCiANCiAjcHJhZ21hIHBhY2sgKDEpDQog Ly8NCiAvLyBSZXF1ZXN0LXJlc3BvbnNlIGhlYWRlcnMgY29tbW9uIHRvIGFsbCByZXF1ZXN0IHR5 cGVzLg0KIC8vDQogdHlwZWRlZiBzdHJ1Y3Qgew0KICAgVUlOVDMyIExlbjsNCkBAIC0xMjUsMTYg KzEyNywyNSBAQCB0eXBlZGVmIHN0cnVjdCB7CiAvLw0KIHR5cGVkZWYgc3RydWN0IHsNCiAgIFVJ TlQ2NCBGaWxlSGFuZGxlOw0KICAgVUlOVDMyIEZsYWdzOw0KICAgVUlOVDMyIFJlbGVhc2VGbGFn czsNCiAgIFVJTlQ2NCBMb2NrT3duZXI7DQogfSBWSVJUSU9fRlNfRlVTRV9SRUxFQVNFX1JFUVVF U1Q7DQogDQorLy8NCisvLyBIZWFkZXIgZm9yIFZpcnRpb0ZzRnVzZU9wRnN5bmMgYW5kIFZpcnRp b0ZzRnVzZU9wRnN5bmNEaXIuDQorLy8NCit0eXBlZGVmIHN0cnVjdCB7DQorICBVSU5UNjQgRmls ZUhhbmRsZTsNCisgIFVJTlQzMiBGc3luY0ZsYWdzOw0KKyAgVUlOVDMyIFBhZGRpbmc7DQorfSBW SVJUSU9fRlNfRlVTRV9GU1lOQ19SRVFVRVNUOw0KKw0KIC8vDQogLy8gSGVhZGVycyBmb3IgVmly dGlvRnNGdXNlT3BJbml0Lg0KIC8vDQogdHlwZWRlZiBzdHJ1Y3Qgew0KICAgVUlOVDMyIE1ham9y Ow0KICAgVUlOVDMyIE1pbm9yOw0KICAgVUlOVDMyIE1heFJlYWRhaGVhZDsNCiAgIFVJTlQzMiBG bGFnczsNCmRpZmYgLS1naXQgYS9Pdm1mUGtnL1ZpcnRpb0ZzRHhlL1ZpcnRpb0ZzRHhlLmluZiBi L092bWZQa2cvVmlydGlvRnNEeGUvVmlydGlvRnNEeGUuaW5mCmluZGV4IGJhZWI3NDFiZTE4Zi4u ODM5NjYwYTBmOTA0IDEwMDY0NAotLS0gYS9Pdm1mUGtnL1ZpcnRpb0ZzRHhlL1ZpcnRpb0ZzRHhl LmluZgorKysgYi9Pdm1mUGtnL1ZpcnRpb0ZzRHhlL1ZpcnRpb0ZzRHhlLmluZgpAQCAtNzgsMTYg Kzc4LDE3IEBAIFtEZWZpbmVzXQogDQogW1BhY2thZ2VzXQ0KICAgTWRlUGtnL01kZVBrZy5kZWMN CiAgIE92bWZQa2cvT3ZtZlBrZy5kZWMNCiANCiBbU291cmNlc10NCiAgIERyaXZlckJpbmRpbmcu Yw0KICAgRnVzZUZvcmdldC5jDQorICBGdXNlRnN5bmMuYw0KICAgRnVzZUluaXQuYw0KICAgRnVz ZU9wZW5EaXIuYw0KICAgRnVzZVJlbGVhc2UuYw0KICAgSGVscGVycy5jDQogICBTaW1wbGVGc0Ns b3NlLmMNCiAgIFNpbXBsZUZzRGVsZXRlLmMNCiAgIFNpbXBsZUZzRmx1c2guYw0KICAgU2ltcGxl RnNHZXRJbmZvLmMNCmRpZmYgLS1naXQgYS9Pdm1mUGtnL1ZpcnRpb0ZzRHhlL1ZpcnRpb0ZzRHhl LmggYi9Pdm1mUGtnL1ZpcnRpb0ZzRHhlL1ZpcnRpb0ZzRHhlLmgKaW5kZXggNjhlZDZjZDdlNmEx Li5hYzFmYjg5NjU0NzIgMTAwNjQ0Ci0tLSBhL092bWZQa2cvVmlydGlvRnNEeGUvVmlydGlvRnNE eGUuaAorKysgYi9Pdm1mUGtnL1ZpcnRpb0ZzRHhlL1ZpcnRpb0ZzRHhlLmgKQEAgLTIwNCwxNiAr MjA0LDI0IEBAIFZpcnRpb0ZzRnVzZUZvcmdldCAoCiBFRklfU1RBVFVTDQogVmlydGlvRnNGdXNl UmVsZWFzZUZpbGVPckRpciAoDQogICBJTiBPVVQgVklSVElPX0ZTICpWaXJ0aW9GcywNCiAgIElO ICAgICBVSU5UNjQgICAgTm9kZUlkLA0KICAgSU4gICAgIFVJTlQ2NCAgICBGdXNlSGFuZGxlLA0K ICAgSU4gICAgIEJPT0xFQU4gICBJc0Rpcg0KICAgKTsNCiANCitFRklfU1RBVFVTDQorVmlydGlv RnNGdXNlRnN5bmNGaWxlT3JEaXIgKA0KKyAgSU4gT1VUIFZJUlRJT19GUyAqVmlydGlvRnMsDQor ICBJTiAgICAgVUlOVDY0ICAgIE5vZGVJZCwNCisgIElOICAgICBVSU5UNjQgICAgRnVzZUhhbmRs ZSwNCisgIElOICAgICBCT09MRUFOICAgSXNEaXINCisgICk7DQorDQogRUZJX1NUQVRVUw0KIFZp cnRpb0ZzRnVzZUluaXRTZXNzaW9uICgNCiAgIElOIE9VVCBWSVJUSU9fRlMgKlZpcnRpb0ZzDQog ICApOw0KIA0KIEVGSV9TVEFUVVMNCiBWaXJ0aW9Gc0Z1c2VPcGVuRGlyICgNCiAgIElOIE9VVCBW SVJUSU9fRlMgKlZpcnRpb0ZzLA0KZGlmZiAtLWdpdCBhL092bWZQa2cvVmlydGlvRnNEeGUvRnVz ZUZzeW5jLmMgYi9Pdm1mUGtnL1ZpcnRpb0ZzRHhlL0Z1c2VGc3luYy5jCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZWExNDYzY2Q4MDczCi0tLSAvZGV2L251bGwKKysr IGIvT3ZtZlBrZy9WaXJ0aW9Gc0R4ZS9GdXNlRnN5bmMuYwpAQCAtMCwwICsxLDEyMSBAQAorLyoq IEBmaWxlDQorICBGVVNFX0ZTWU5DIC8gRlVTRV9GU1lOQ0RJUiB3cmFwcGVyIGZvciB0aGUgVmly dGlvIEZpbGVzeXN0ZW0gZGV2aWNlLg0KKw0KKyAgQ29weXJpZ2h0IChDKSAyMDIwLCBSZWQgSGF0 LCBJbmMuDQorDQorICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVu dA0KKyoqLw0KKw0KKyNpbmNsdWRlICJWaXJ0aW9Gc0R4ZS5oIg0KKw0KKy8qKg0KKyAgU3luY2hy b25pemUgdGhlIGluLWNvcmUgc3RhdGUgb2YgYSByZWd1bGFyIGZpbGUgb3IgYSBkaXJlY3Rvcnkg d2l0aCB0aGUNCisgIHN0b3JhZ2UgZGV2aWNlIG9uIHRoZSBob3N0LCBieSBzZW5kaW5nIHRoZSBG VVNFX0ZTWU5DIG9yIEZVU0VfRlNZTkNESVINCisgIHJlcXVlc3QgdG8gdGhlIFZpcnRpbyBGaWxl c3lzdGVtIGRldmljZS4NCisNCisgIFRoZSBmdW5jdGlvbiBtYXkgb25seSBiZSBjYWxsZWQgYWZ0 ZXIgVmlydGlvRnNGdXNlSW5pdFNlc3Npb24oKSByZXR1cm5zDQorICBzdWNjZXNzZnVsbHkgYW5k IGJlZm9yZSBWaXJ0aW9Gc1VuaW5pdCgpIGlzIGNhbGxlZC4NCisNCisgIEBwYXJhbVtpbixvdXRd IFZpcnRpb0ZzICBUaGUgVmlydGlvIEZpbGVzeXN0ZW0gZGV2aWNlIHRvIHNlbmQgdGhlIEZVU0Vf RlNZTkMNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAvIEZVU0VfRlNZTkNESVIgcmVxdWVz dCB0by4gT24gb3V0cHV0LCB0aGUgRlVTRQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHJl cXVlc3QgY291bnRlciAiVmlydGlvRnMtPlJlcXVlc3RJZCIgd2lsbCBoYXZlIGJlZW4NCisgICAg ICAgICAgICAgICAgICAgICAgICAgICBpbmNyZW1lbnRlZC4NCisNCisgIEBwYXJhbVtpbl0gTm9k ZUlkICAgICAgICBUaGUgaW5vZGUgbnVtYmVyIG9mIHRoZSBmaWxlIG9yIGRpcmVjdG9yeSB0byBz eW5jLg0KKw0KKyAgQHBhcmFtW2luXSBGdXNlSGFuZGxlICAgIFRoZSBvcGVuIGhhbmRsZSB0byB0 aGUgZmlsZSBvciBkaXJlY3RvcnkgdG8gc3luYy4NCisNCisgIEBwYXJhbVtpbl0gSXNEaXIgICAg ICAgICBUUlVFIGlmIE5vZGVJZCBhbmQgRnVzZUhhbmRsZSByZWZlciB0byBhIGRpcmVjdG9yeSwN CisgICAgICAgICAgICAgICAgICAgICAgICAgICBGQUxTRSBpZiBOb2RlSWQgYW5kIEZ1c2VIYW5k bGUgcmVmZXIgdG8gYSByZWd1bGFyDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS4N CisNCisgIEByZXR2YWwgRUZJX1NVQ0NFU1MgIFRoZSBmaWxlIG9yIGRpcmVjdG9yeSBoYXMgYmVl biBzeW5jaHJvbml6ZWQuDQorDQorICBAcmV0dXJuICAgICAgICAgICAgICBUaGUgImVycm5vIiB2 YWx1ZSBtYXBwZWQgdG8gYW4gRUZJX1NUQVRVUyBjb2RlLCBpZiB0aGUNCisgICAgICAgICAgICAg ICAgICAgICAgIFZpcnRpbyBGaWxlc3lzdGVtIGRldmljZSBleHBsaWNpdGx5IHJlcG9ydGVkIGFu IGVycm9yLg0KKw0KKyAgQHJldHVybiAgICAgICAgICAgICAgRXJyb3IgY29kZXMgcHJvcGFnYXRl ZCBmcm9tIFZpcnRpb0ZzU2dMaXN0c1ZhbGlkYXRlKCksDQorICAgICAgICAgICAgICAgICAgICAg ICBWaXJ0aW9Gc0Z1c2VOZXdSZXF1ZXN0KCksIFZpcnRpb0ZzU2dMaXN0c1N1Ym1pdCgpLA0KKyAg ICAgICAgICAgICAgICAgICAgICAgVmlydGlvRnNGdXNlQ2hlY2tSZXNwb25zZSgpLg0KKyoqLw0K K0VGSV9TVEFUVVMNCitWaXJ0aW9Gc0Z1c2VGc3luY0ZpbGVPckRpciAoDQorICBJTiBPVVQgVklS VElPX0ZTICpWaXJ0aW9GcywNCisgIElOICAgICBVSU5UNjQgICAgTm9kZUlkLA0KKyAgSU4gICAg IFVJTlQ2NCAgICBGdXNlSGFuZGxlLA0KKyAgSU4gICAgIEJPT0xFQU4gICBJc0Rpcg0KKyAgKQ0K K3sNCisgIFZJUlRJT19GU19GVVNFX1JFUVVFU1QgICAgICAgIENvbW1vblJlcTsNCisgIFZJUlRJ T19GU19GVVNFX0ZTWU5DX1JFUVVFU1QgIEZzeW5jUmVxOw0KKyAgVklSVElPX0ZTX0lPX1ZFQ1RP UiAgICAgICAgICAgUmVxSW9WZWNbMl07DQorICBWSVJUSU9fRlNfU0NBVFRFUl9HQVRIRVJfTElT VCBSZXFTZ0xpc3Q7DQorICBWSVJUSU9fRlNfRlVTRV9SRVNQT05TRSAgICAgICBDb21tb25SZXNw Ow0KKyAgVklSVElPX0ZTX0lPX1ZFQ1RPUiAgICAgICAgICAgUmVzcElvVmVjWzFdOw0KKyAgVklS VElPX0ZTX1NDQVRURVJfR0FUSEVSX0xJU1QgUmVzcFNnTGlzdDsNCisgIEVGSV9TVEFUVVMgICAg ICAgICAgICAgICAgICAgIFN0YXR1czsNCisNCisgIC8vDQorICAvLyBTZXQgdXAgdGhlIHNjYXR0 ZXItZ2F0aGVyIGxpc3RzLg0KKyAgLy8NCisgIFJlcUlvVmVjWzBdLkJ1ZmZlciA9ICZDb21tb25S ZXE7DQorICBSZXFJb1ZlY1swXS5TaXplICAgPSBzaXplb2YgQ29tbW9uUmVxOw0KKyAgUmVxSW9W ZWNbMV0uQnVmZmVyID0gJkZzeW5jUmVxOw0KKyAgUmVxSW9WZWNbMV0uU2l6ZSAgID0gc2l6ZW9m IEZzeW5jUmVxOw0KKyAgUmVxU2dMaXN0LklvVmVjICAgID0gUmVxSW9WZWM7DQorICBSZXFTZ0xp c3QuTnVtVmVjICAgPSBBUlJBWV9TSVpFIChSZXFJb1ZlYyk7DQorDQorICBSZXNwSW9WZWNbMF0u QnVmZmVyID0gJkNvbW1vblJlc3A7DQorICBSZXNwSW9WZWNbMF0uU2l6ZSAgID0gc2l6ZW9mIENv bW1vblJlc3A7DQorICBSZXNwU2dMaXN0LklvVmVjICAgID0gUmVzcElvVmVjOw0KKyAgUmVzcFNn TGlzdC5OdW1WZWMgICA9IEFSUkFZX1NJWkUgKFJlc3BJb1ZlYyk7DQorDQorICAvLw0KKyAgLy8g VmFsaWRhdGUgdGhlIHNjYXR0ZXItZ2F0aGVyIGxpc3RzOyBjYWxjdWxhdGUgdGhlIHRvdGFsIHRy YW5zZmVyIHNpemVzLg0KKyAgLy8NCisgIFN0YXR1cyA9IFZpcnRpb0ZzU2dMaXN0c1ZhbGlkYXRl IChWaXJ0aW9GcywgJlJlcVNnTGlzdCwgJlJlc3BTZ0xpc3QpOw0KKyAgaWYgKEVGSV9FUlJPUiAo U3RhdHVzKSkgew0KKyAgICByZXR1cm4gU3RhdHVzOw0KKyAgfQ0KKw0KKyAgLy8NCisgIC8vIFBv cHVsYXRlIHRoZSBjb21tb24gcmVxdWVzdCBoZWFkZXIuDQorICAvLw0KKyAgU3RhdHVzID0gVmly dGlvRnNGdXNlTmV3UmVxdWVzdCAoDQorICAgICAgICAgICAgIFZpcnRpb0ZzLA0KKyAgICAgICAg ICAgICAmQ29tbW9uUmVxLA0KKyAgICAgICAgICAgICBSZXFTZ0xpc3QuVG90YWxTaXplLA0KKyAg ICAgICAgICAgICBJc0RpciA/IFZpcnRpb0ZzRnVzZU9wRnN5bmNEaXIgOiBWaXJ0aW9Gc0Z1c2VP cEZzeW5jLA0KKyAgICAgICAgICAgICBOb2RlSWQNCisgICAgICAgICAgICAgKTsNCisgIGlmIChF RklfRVJST1IgKFN0YXR1cykpIHsNCisgICAgcmV0dXJuIFN0YXR1czsNCisgIH0NCisNCisgIC8v DQorICAvLyBQb3B1bGF0ZSB0aGUgRlVTRV9GU1lOQy0gLyBGVVNFX0ZTWU5DRElSLXNwZWNpZmlj IGZpZWxkcy4NCisgIC8vDQorICBGc3luY1JlcS5GaWxlSGFuZGxlID0gRnVzZUhhbmRsZTsNCisg IEZzeW5jUmVxLkZzeW5jRmxhZ3MgPSAwOw0KKyAgRnN5bmNSZXEuUGFkZGluZyAgICA9IDA7DQor DQorICAvLw0KKyAgLy8gU3VibWl0IHRoZSByZXF1ZXN0Lg0KKyAgLy8NCisgIFN0YXR1cyA9IFZp cnRpb0ZzU2dMaXN0c1N1Ym1pdCAoVmlydGlvRnMsICZSZXFTZ0xpc3QsICZSZXNwU2dMaXN0KTsN CisgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCisgICAgcmV0dXJuIFN0YXR1czsNCisgIH0N CisNCisgIC8vDQorICAvLyBWZXJpZnkgdGhlIHJlc3BvbnNlIChhbGwgcmVzcG9uc2UgYnVmZmVy cyBhcmUgZml4ZWQgc2l6ZSkuDQorICAvLw0KKyAgU3RhdHVzID0gVmlydGlvRnNGdXNlQ2hlY2tS ZXNwb25zZSAoJlJlc3BTZ0xpc3QsIENvbW1vblJlcS5VbmlxdWUsIE5VTEwpOw0KKyAgaWYgKFN0 YXR1cyA9PSBFRklfREVWSUNFX0VSUk9SKSB7DQorICAgIERFQlVHICgoREVCVUdfRVJST1IsICIl YTogTGFiZWw9XCIlc1wiIE5vZGVJZD0lTHUgRnVzZUhhbmRsZT0lTHUgIg0KKyAgICAgICJJc0Rp cj0lZCBFcnJubz0lZFxuIiwgX19GVU5DVElPTl9fLCBWaXJ0aW9Gcy0+TGFiZWwsIE5vZGVJZCwg RnVzZUhhbmRsZSwNCisgICAgICBJc0RpciwgQ29tbW9uUmVzcC5FcnJvcikpOw0KKyAgICBTdGF0 dXMgPSBWaXJ0aW9Gc0Vycm5vVG9FZmlTdGF0dXMgKENvbW1vblJlc3AuRXJyb3IpOw0KKyAgfQ0K KyAgcmV0dXJuIFN0YXR1czsNCit9DQotLSAKMi4xOS4xLjMuZzMwMjQ3YWE1ZDIwMQoKCg==