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.web11.4163.1608155874754002091 for ; Wed, 16 Dec 2020 13:57:54 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=Z1uXoxHY; 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=1608155873; 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=fYRSExkseKXUUNhrxebpN3104CUdtioJ5gUlW/zMQ0M=; b=Z1uXoxHYCoSv4UCb8CBsD1NOjdb0/6u4gtAVwbPhdPVW/btGXvSIYx8xkwaUo6C2KtGAon 7TPZUUr6vSsQScAO7uEQiCDqq2zceX5QS3FGsu7Sll1W0bRMeb5UrlD20VD1LQnjqGdEHZ Po9O0IqIiTAygc6bqJO1QEGFoH9GcLM= 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-565-XP4Iw0RqOtiCkFJ1J10QLw-1; Wed, 16 Dec 2020 16:57:52 -0500 X-MC-Unique: XP4Iw0RqOtiCkFJ1J10QLw-1 Received: from smtp.corp.redhat.com (int-mx04.intmail.prod.int.phx2.redhat.com [10.5.11.14]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 87594801817; Wed, 16 Dec 2020 21:57:50 +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 69F2E5D9C0; Wed, 16 Dec 2020 21:57:45 +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 22/48] OvmfPkg/VirtioFsDxe: implement the wrapper function for FUSE_LOOKUP Date: Wed, 16 Dec 2020 22:10:59 +0100 Message-Id: <20201216211125.19496-23-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.14 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 QWRkIHRoZSBWaXJ0aW9Gc0Z1c2VMb29rdXAoKSBmdW5jdGlvbiwgZm9yIHNlbmRpbmcgdGhlIEZV U0VfTE9PS1VQIGNvbW1hbmQKdG8gdGhlIFZpcnRpbyBGaWxlc3lzdGVtIGRldmljZS4KCkNjOiBB cmQgQmllc2hldXZlbCA8YXJkLmJpZXNoZXV2ZWxAYXJtLmNvbT4KQ2M6IEpvcmRhbiBKdXN0ZW4g PGpvcmRhbi5sLmp1c3RlbkBpbnRlbC5jb20+CkNjOiBQaGlsaXBwZSBNYXRoaWV1LURhdWTDqSA8 cGhpbG1kQHJlZGhhdC5jb20+ClJlZjogaHR0cHM6Ly9idWd6aWxsYS50aWFub2NvcmUub3JnL3No b3dfYnVnLmNnaT9pZD0zMDk3ClNpZ25lZC1vZmYtYnk6IExhc3psbyBFcnNlayA8bGVyc2VrQHJl ZGhhdC5jb20+Ci0tLQogT3ZtZlBrZy9JbmNsdWRlL0luZHVzdHJ5U3RhbmRhcmQvVmlydGlvRnMu aCB8ICAgNiArCiBPdm1mUGtnL1ZpcnRpb0ZzRHhlL1ZpcnRpb0ZzRHhlLmluZiAgICAgICAgIHwg ICAxICsKIE92bWZQa2cvVmlydGlvRnNEeGUvVmlydGlvRnNEeGUuaCAgICAgICAgICAgfCAgIDkg KysKIE92bWZQa2cvVmlydGlvRnNEeGUvRnVzZUxvb2t1cC5jICAgICAgICAgICAgfCAxNDggKysr KysrKysrKysrKysrKysrKysKIDQgZmlsZXMgY2hhbmdlZCwgMTY0IGluc2VydGlvbnMoKykKCmRp ZmYgLS1naXQgYS9Pdm1mUGtnL0luY2x1ZGUvSW5kdXN0cnlTdGFuZGFyZC9WaXJ0aW9Gcy5oIGIv T3ZtZlBrZy9JbmNsdWRlL0luZHVzdHJ5U3RhbmRhcmQvVmlydGlvRnMuaAppbmRleCA1ZDFkOTkw YTJkODMuLjhhMDdiM2QyZWI5MyAxMDA2NDQKLS0tIGEvT3ZtZlBrZy9JbmNsdWRlL0luZHVzdHJ5 U3RhbmRhcmQvVmlydGlvRnMuaAorKysgYi9Pdm1mUGtnL0luY2x1ZGUvSW5kdXN0cnlTdGFuZGFy ZC9WaXJ0aW9Gcy5oCkBAIC03NiwxNiArNzYsMjEgQEAgdHlwZWRlZiBzdHJ1Y3QgewogI2RlZmlu ZSBWSVJUSU9fRlNfRlVTRV9NQUpPUiAgNw0KICNkZWZpbmUgVklSVElPX0ZTX0ZVU0VfTUlOT1Ig MzENCiANCiAvLw0KIC8vIFRoZSBpbm9kZSBudW1iZXIgb2YgdGhlIHJvb3QgZGlyZWN0b3J5Lg0K IC8vDQogI2RlZmluZSBWSVJUSU9fRlNfRlVTRV9ST09UX0RJUl9OT0RFX0lEIDENCiANCisvLw0K Ky8vIERpc3Rpbmd1aXNoZWQgZXJybm8gdmFsdWVzLg0KKy8vDQorI2RlZmluZSBWSVJUSU9fRlNf RlVTRV9FUlJOT19FTk9FTlQgKC0yKQ0KKw0KIC8vDQogLy8gRmlsZSBtb2RlIGJpdG1hc2tzLg0K IC8vDQogI2RlZmluZSBWSVJUSU9fRlNfRlVTRV9NT0RFX1RZUEVfTUFTSyAwMTcwMDAwdQ0KICNk ZWZpbmUgVklSVElPX0ZTX0ZVU0VfTU9ERV9UWVBFX1JFRyAgMDEwMDAwMHUNCiAjZGVmaW5lIFZJ UlRJT19GU19GVVNFX01PREVfVFlQRV9ESVIgIDAwNDAwMDB1DQogI2RlZmluZSBWSVJUSU9fRlNf RlVTRV9NT0RFX1BFUk1fUldYVSAwMDAwNzAwdQ0KICNkZWZpbmUgVklSVElPX0ZTX0ZVU0VfTU9E RV9QRVJNX1JVU1IgMDAwMDQwMHUNCkBAIC0xMDIsMTYgKzEwNywxNyBAQCB0eXBlZGVmIHN0cnVj dCB7CiAvLw0KICNkZWZpbmUgVklSVElPX0ZTX0ZVU0VfT1BFTl9SRVFfRl9SRE9OTFkgMA0KICNk ZWZpbmUgVklSVElPX0ZTX0ZVU0VfT1BFTl9SRVFfRl9SRFdSICAgMg0KIA0KIC8vDQogLy8gRlVT RSBvcGVyYXRpb24gY29kZXMuDQogLy8NCiB0eXBlZGVmIGVudW0gew0KKyAgVmlydGlvRnNGdXNl T3BMb29rdXAgICAgICA9ICAxLA0KICAgVmlydGlvRnNGdXNlT3BGb3JnZXQgICAgICA9ICAyLA0K ICAgVmlydGlvRnNGdXNlT3BNa0RpciAgICAgICA9ICA5LA0KICAgVmlydGlvRnNGdXNlT3BPcGVu ICAgICAgICA9IDE0LA0KICAgVmlydGlvRnNGdXNlT3BSZWxlYXNlICAgICA9IDE4LA0KICAgVmly dGlvRnNGdXNlT3BGc3luYyAgICAgICA9IDIwLA0KICAgVmlydGlvRnNGdXNlT3BGbHVzaCAgICAg ICA9IDI1LA0KICAgVmlydGlvRnNGdXNlT3BJbml0ICAgICAgICA9IDI2LA0KICAgVmlydGlvRnNG dXNlT3BPcGVuRGlyICAgICA9IDI3LA0KZGlmZiAtLWdpdCBhL092bWZQa2cvVmlydGlvRnNEeGUv VmlydGlvRnNEeGUuaW5mIGIvT3ZtZlBrZy9WaXJ0aW9Gc0R4ZS9WaXJ0aW9Gc0R4ZS5pbmYKaW5k ZXggN2Q3MjcyMTg4NDY1Li4zNTUyZWNlNmI5NDUgMTAwNjQ0Ci0tLSBhL092bWZQa2cvVmlydGlv RnNEeGUvVmlydGlvRnNEeGUuaW5mCisrKyBiL092bWZQa2cvVmlydGlvRnNEeGUvVmlydGlvRnNE eGUuaW5mCkBAIC04MiwxNiArODIsMTcgQEAgW1BhY2thZ2VzXQogICBPdm1mUGtnL092bWZQa2cu ZGVjDQogDQogW1NvdXJjZXNdDQogICBEcml2ZXJCaW5kaW5nLmMNCiAgIEZ1c2VGbHVzaC5jDQog ICBGdXNlRm9yZ2V0LmMNCiAgIEZ1c2VGc3luYy5jDQogICBGdXNlSW5pdC5jDQorICBGdXNlTG9v a3VwLmMNCiAgIEZ1c2VNa0Rpci5jDQogICBGdXNlT3Blbi5jDQogICBGdXNlT3BlbkRpci5jDQog ICBGdXNlT3Blbk9yQ3JlYXRlLmMNCiAgIEZ1c2VSZWxlYXNlLmMNCiAgIEhlbHBlcnMuYw0KICAg U2ltcGxlRnNDbG9zZS5jDQogICBTaW1wbGVGc0RlbGV0ZS5jDQpkaWZmIC0tZ2l0IGEvT3ZtZlBr Zy9WaXJ0aW9Gc0R4ZS9WaXJ0aW9Gc0R4ZS5oIGIvT3ZtZlBrZy9WaXJ0aW9Gc0R4ZS9WaXJ0aW9G c0R4ZS5oCmluZGV4IDZjYzUyNTdiYWI0MC4uYjJlNGFkY2UwOThiIDEwMDY0NAotLS0gYS9Pdm1m UGtnL1ZpcnRpb0ZzRHhlL1ZpcnRpb0ZzRHhlLmgKKysrIGIvT3ZtZlBrZy9WaXJ0aW9Gc0R4ZS9W aXJ0aW9Gc0R4ZS5oCkBAIC0yMzEsMTYgKzIzMSwyNSBAQCBWaXJ0aW9Gc0Z1c2VBdHRyVG9FZmlG aWxlSW5mbyAoCiAgIElOICAgICBWSVJUSU9fRlNfRlVTRV9BVFRSSUJVVEVTX1JFU1BPTlNFICpG dXNlQXR0ciwNCiAgICAgIE9VVCBFRklfRklMRV9JTkZPICAgICAgICAgICAgICAgICAgICAgICpG aWxlSW5mbw0KICAgKTsNCiANCiAvLw0KIC8vIFdyYXBwZXIgZnVuY3Rpb25zIGZvciBGVVNFIGNv bW1hbmRzIChwcmltaXRpdmVzKS4NCiAvLw0KIA0KK0VGSV9TVEFUVVMNCitWaXJ0aW9Gc0Z1c2VM b29rdXAgKA0KKyAgSU4gT1VUIFZJUlRJT19GUyAgICAgICAgICAgICAgICAgICAgICAgICAgKlZp cnRpb0ZzLA0KKyAgSU4gICAgIFVJTlQ2NCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGly Tm9kZUlkLA0KKyAgSU4gICAgIENIQVI4ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKk5h bWUsDQorICAgICBPVVQgVUlOVDY0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqTm9kZUlk LA0KKyAgICAgT1VUIFZJUlRJT19GU19GVVNFX0FUVFJJQlVURVNfUkVTUE9OU0UgKkZ1c2VBdHRy DQorICApOw0KKw0KIEVGSV9TVEFUVVMNCiBWaXJ0aW9Gc0Z1c2VGb3JnZXQgKA0KICAgSU4gT1VU IFZJUlRJT19GUyAqVmlydGlvRnMsDQogICBJTiAgICAgVUlOVDY0ICAgIE5vZGVJZA0KICAgKTsN CiANCiBFRklfU1RBVFVTDQogVmlydGlvRnNGdXNlTWtEaXIgKA0KZGlmZiAtLWdpdCBhL092bWZQ a2cvVmlydGlvRnNEeGUvRnVzZUxvb2t1cC5jIGIvT3ZtZlBrZy9WaXJ0aW9Gc0R4ZS9GdXNlTG9v a3VwLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwLi41YzlhODI1ZTE3 MjUKLS0tIC9kZXYvbnVsbAorKysgYi9Pdm1mUGtnL1ZpcnRpb0ZzRHhlL0Z1c2VMb29rdXAuYwpA QCAtMCwwICsxLDE0OCBAQAorLyoqIEBmaWxlDQorICBGVVNFX0xPT0tVUCB3cmFwcGVyIGZvciB0 aGUgVmlydGlvIEZpbGVzeXN0ZW0gZGV2aWNlLg0KKw0KKyAgQ29weXJpZ2h0IChDKSAyMDIwLCBS ZWQgSGF0LCBJbmMuDQorDQorICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNl LVBhdGVudA0KKyoqLw0KKw0KKyNpbmNsdWRlIDxMaWJyYXJ5L0Jhc2VMaWIuaD4gLy8gQXNjaWlT dHJTaXplKCkNCisNCisjaW5jbHVkZSAiVmlydGlvRnNEeGUuaCINCisNCisvKioNCisgIFNlbmQg YSBGVVNFX0xPT0tVUCByZXF1ZXN0IHRvIHRoZSBWaXJ0aW8gRmlsZXN5c3RlbSBkZXZpY2UsIGZv ciByZXNvbHZpbmcgYQ0KKyAgZmlsZW5hbWUgdG8gYW4gaW5vZGUuDQorDQorICBUaGUgZnVuY3Rp b24gcmV0dXJucyBFRklfTk9UX0ZPVU5EIGV4Y2x1c2l2ZWx5IGlmIHRoZSBWaXJ0aW8gRmlsZXN5 c3RlbQ0KKyAgZGV2aWNlIGV4cGxpY2l0bHkgcmVzcG9uZHMgd2l0aCBFTk9FTlQgLS0gIk5vIHN1 Y2ggZmlsZSBvciBkaXJlY3RvcnkiLg0KKw0KKyAgVGhlIGZ1bmN0aW9uIG1heSBvbmx5IGJlIGNh bGxlZCBhZnRlciBWaXJ0aW9Gc0Z1c2VJbml0U2Vzc2lvbigpIHJldHVybnMNCisgIHN1Y2Nlc3Nm dWxseSBhbmQgYmVmb3JlIFZpcnRpb0ZzVW5pbml0KCkgaXMgY2FsbGVkLg0KKw0KKyAgQHBhcmFt W2luLG91dF0gVmlydGlvRnMgIFRoZSBWaXJ0aW8gRmlsZXN5c3RlbSBkZXZpY2UgdG8gc2VuZCB0 aGUgRlVTRV9MT09LVVANCisgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0IHRvLiBP biBvdXRwdXQsIHRoZSBGVVNFIHJlcXVlc3QgY291bnRlcg0KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICJWaXJ0aW9Gcy0+UmVxdWVzdElkIiB3aWxsIGhhdmUgYmVlbiBpbmNyZW1lbnRlZC4N CisNCisgIEBwYXJhbVtpbl0gRGlyTm9kZUlkICAgICBUaGUgaW5vZGUgbnVtYmVyIG9mIHRoZSBk aXJlY3RvcnkgaW4gd2hpY2ggTmFtZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNob3Vs ZCBiZSByZXNvbHZlZCB0byBhbiBpbm9kZS4NCisNCisgIEBwYXJhbVtpbl0gTmFtZSAgICAgICAg ICBUaGUgc2luZ2xlLWNvbXBvbmVudCBmaWxlbmFtZSB0byByZXNvbHZlIGluIHRoZQ0KKyAgICAg ICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSBpZGVudGlmaWVkIGJ5IERpck5vZGVJZC4N CisNCisgIEBwYXJhbVtvdXRdIE5vZGVJZCAgICAgICBUaGUgaW5vZGUgbnVtYmVyIHdoaWNoIE5h bWUgaGFzIGJlZW4gcmVzb2x2ZWQgdG8uDQorDQorICBAcGFyYW1bb3V0XSBGdXNlQXR0ciAgICAg VGhlIFZJUlRJT19GU19GVVNFX0FUVFJJQlVURVNfUkVTUE9OU0Ugb2JqZWN0DQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgZGVzY3JpYmluZyB0aGUgcHJvcGVydGllcyBvZiB0aGUgcmVzb2x2 ZWQgaW5vZGUuDQorDQorICBAcmV0dmFsIEVGSV9TVUNDRVNTICAgIEZpbGVuYW1lIHRvIGlub2Rl IHJlc29sdXRpb24gc3VjY2Vzc2Z1bC4NCisNCisgIEByZXR2YWwgRUZJX05PVF9GT1VORCAgVGhl IFZpcnRpbyBGaWxlc3lzdGVtIGRldmljZSBleHBsaWNpdGx5IHJlcG9ydGVkDQorICAgICAgICAg ICAgICAgICAgICAgICAgIEVOT0VOVCAtLSAiTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeSIuDQor DQorICBAcmV0dXJuICAgICAgICAgICAgICAgIFRoZSAiZXJybm8iIHZhbHVlIG1hcHBlZCB0byBh biBFRklfU1RBVFVTIGNvZGUsIGlmIHRoZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICBWaXJ0 aW8gRmlsZXN5c3RlbSBkZXZpY2UgZXhwbGljaXRseSByZXBvcnRlZCBhbiBlcnJvcg0KKyAgICAg ICAgICAgICAgICAgICAgICAgICBkaWZmZXJlbnQgZnJvbSBFTk9FTlQuIElmIHNhaWQgbWFwcGlu ZyByZXN1bHRlZCBpbg0KKyAgICAgICAgICAgICAgICAgICAgICAgICBFRklfTk9UX0ZPVU5ELCBp dCBpcyByZW1hcHBlZCB0byBFRklfREVWSUNFX0VSUk9SLg0KKw0KKyAgQHJldHVybiAgICAgICAg ICAgICAgICBFcnJvciBjb2RlcyBwcm9wYWdhdGVkIGZyb20gVmlydGlvRnNTZ0xpc3RzVmFsaWRh dGUoKSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgVmlydGlvRnNGdXNlTmV3UmVxdWVzdCgp LCBWaXJ0aW9Gc1NnTGlzdHNTdWJtaXQoKSwNCisgICAgICAgICAgICAgICAgICAgICAgICAgVmly dGlvRnNGdXNlQ2hlY2tSZXNwb25zZSgpLiBFRklfTk9UX0ZPVU5EIGlzIHJlbWFwcGVkDQorICAg ICAgICAgICAgICAgICAgICAgICAgIHRvIEVGSV9ERVZJQ0VfRVJST1IuDQorKiovDQorRUZJX1NU QVRVUw0KK1ZpcnRpb0ZzRnVzZUxvb2t1cCAoDQorICBJTiBPVVQgVklSVElPX0ZTICAgICAgICAg ICAgICAgICAgICAgICAgICAqVmlydGlvRnMsDQorICBJTiAgICAgVUlOVDY0ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBEaXJOb2RlSWQsDQorICBJTiAgICAgQ0hBUjggICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAqTmFtZSwNCisgICAgIE9VVCBVSU5UNjQgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICpOb2RlSWQsDQorICAgICBPVVQgVklSVElPX0ZTX0ZVU0VfQVRUUklCVVRF U19SRVNQT05TRSAqRnVzZUF0dHINCisgICkNCit7DQorICBWSVJUSU9fRlNfRlVTRV9SRVFVRVNU ICAgICAgICBDb21tb25SZXE7DQorICBWSVJUSU9fRlNfSU9fVkVDVE9SICAgICAgICAgICBSZXFJ b1ZlY1syXTsNCisgIFZJUlRJT19GU19TQ0FUVEVSX0dBVEhFUl9MSVNUIFJlcVNnTGlzdDsNCisg IFZJUlRJT19GU19GVVNFX1JFU1BPTlNFICAgICAgIENvbW1vblJlc3A7DQorICBWSVJUSU9fRlNf RlVTRV9OT0RFX1JFU1BPTlNFICBOb2RlUmVzcDsNCisgIFZJUlRJT19GU19JT19WRUNUT1IgICAg ICAgICAgIFJlc3BJb1ZlY1szXTsNCisgIFZJUlRJT19GU19TQ0FUVEVSX0dBVEhFUl9MSVNUIFJl c3BTZ0xpc3Q7DQorICBFRklfU1RBVFVTICAgICAgICAgICAgICAgICAgICBTdGF0dXM7DQorDQor ICAvLw0KKyAgLy8gU2V0IHVwIHRoZSBzY2F0dGVyLWdhdGhlciBsaXN0cy4NCisgIC8vDQorICBS ZXFJb1ZlY1swXS5CdWZmZXIgPSAmQ29tbW9uUmVxOw0KKyAgUmVxSW9WZWNbMF0uU2l6ZSAgID0g c2l6ZW9mIENvbW1vblJlcTsNCisgIFJlcUlvVmVjWzFdLkJ1ZmZlciA9IE5hbWU7DQorICBSZXFJ b1ZlY1sxXS5TaXplICAgPSBBc2NpaVN0clNpemUgKE5hbWUpOw0KKyAgUmVxU2dMaXN0LklvVmVj ICAgID0gUmVxSW9WZWM7DQorICBSZXFTZ0xpc3QuTnVtVmVjICAgPSBBUlJBWV9TSVpFIChSZXFJ b1ZlYyk7DQorDQorICBSZXNwSW9WZWNbMF0uQnVmZmVyID0gJkNvbW1vblJlc3A7DQorICBSZXNw SW9WZWNbMF0uU2l6ZSAgID0gc2l6ZW9mIENvbW1vblJlc3A7DQorICBSZXNwSW9WZWNbMV0uQnVm ZmVyID0gJk5vZGVSZXNwOw0KKyAgUmVzcElvVmVjWzFdLlNpemUgICA9IHNpemVvZiBOb2RlUmVz cDsNCisgIFJlc3BJb1ZlY1syXS5CdWZmZXIgPSBGdXNlQXR0cjsNCisgIFJlc3BJb1ZlY1syXS5T aXplICAgPSBzaXplb2YgKkZ1c2VBdHRyOw0KKyAgUmVzcFNnTGlzdC5Jb1ZlYyAgICA9IFJlc3BJ b1ZlYzsNCisgIFJlc3BTZ0xpc3QuTnVtVmVjICAgPSBBUlJBWV9TSVpFIChSZXNwSW9WZWMpOw0K Kw0KKyAgLy8NCisgIC8vIFZhbGlkYXRlIHRoZSBzY2F0dGVyLWdhdGhlciBsaXN0czsgY2FsY3Vs YXRlIHRoZSB0b3RhbCB0cmFuc2ZlciBzaXplcy4NCisgIC8vDQorICBTdGF0dXMgPSBWaXJ0aW9G c1NnTGlzdHNWYWxpZGF0ZSAoVmlydGlvRnMsICZSZXFTZ0xpc3QsICZSZXNwU2dMaXN0KTsNCisg IGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCisgICAgZ290byBGYWlsOw0KKyAgfQ0KKw0KKyAg Ly8NCisgIC8vIFBvcHVsYXRlIHRoZSBjb21tb24gcmVxdWVzdCBoZWFkZXIuDQorICAvLw0KKyAg U3RhdHVzID0gVmlydGlvRnNGdXNlTmV3UmVxdWVzdCAoVmlydGlvRnMsICZDb21tb25SZXEsIFJl cVNnTGlzdC5Ub3RhbFNpemUsDQorICAgICAgICAgICAgIFZpcnRpb0ZzRnVzZU9wTG9va3VwLCBE aXJOb2RlSWQpOw0KKyAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KKyAgICBnb3RvIEZhaWw7 DQorICB9DQorDQorICAvLw0KKyAgLy8gU3VibWl0IHRoZSByZXF1ZXN0Lg0KKyAgLy8NCisgIFN0 YXR1cyA9IFZpcnRpb0ZzU2dMaXN0c1N1Ym1pdCAoVmlydGlvRnMsICZSZXFTZ0xpc3QsICZSZXNw U2dMaXN0KTsNCisgIGlmIChFRklfRVJST1IgKFN0YXR1cykpIHsNCisgICAgZ290byBGYWlsOw0K KyAgfQ0KKw0KKyAgLy8NCisgIC8vIFZlcmlmeSB0aGUgcmVzcG9uc2UgKGFsbCByZXNwb25zZSBi dWZmZXJzIGFyZSBmaXhlZCBzaXplKS4NCisgIC8vDQorICBTdGF0dXMgPSBWaXJ0aW9Gc0Z1c2VD aGVja1Jlc3BvbnNlICgmUmVzcFNnTGlzdCwgQ29tbW9uUmVxLlVuaXF1ZSwgTlVMTCk7DQorICBp ZiAoRUZJX0VSUk9SIChTdGF0dXMpKSB7DQorICAgIGlmIChTdGF0dXMgPT0gRUZJX0RFVklDRV9F UlJPUikgew0KKyAgICAgIERFQlVHICgoDQorICAgICAgICAoKENvbW1vblJlc3AuRXJyb3IgPT0g VklSVElPX0ZTX0ZVU0VfRVJSTk9fRU5PRU5UKSA/DQorICAgICAgICAgREVCVUdfVkVSQk9TRSA6 DQorICAgICAgICAgREVCVUdfRVJST1IpLA0KKyAgICAgICAgIiVhOiBMYWJlbD1cIiVzXCIgRGly Tm9kZUlkPSVMdSBOYW1lPVwiJWFcIiBFcnJubz0lZFxuIiwNCisgICAgICAgIF9fRlVOQ1RJT05f XywNCisgICAgICAgIFZpcnRpb0ZzLT5MYWJlbCwNCisgICAgICAgIERpck5vZGVJZCwNCisgICAg ICAgIE5hbWUsDQorICAgICAgICBDb21tb25SZXNwLkVycm9yDQorICAgICAgICApKTsNCisgICAg ICBpZiAoQ29tbW9uUmVzcC5FcnJvciA9PSBWSVJUSU9fRlNfRlVTRV9FUlJOT19FTk9FTlQpIHsN CisgICAgICAgIHJldHVybiBFRklfTk9UX0ZPVU5EOw0KKyAgICAgIH0NCisgICAgICBTdGF0dXMg PSBWaXJ0aW9Gc0Vycm5vVG9FZmlTdGF0dXMgKENvbW1vblJlc3AuRXJyb3IpOw0KKyAgICB9DQor ICAgIGdvdG8gRmFpbDsNCisgIH0NCisNCisgIC8vDQorICAvLyBPdXRwdXQgdGhlIE5vZGVJZCB0 byB3aGljaCBOYW1lIGhhcyBiZWVuIHJlc29sdmVkIHRvLg0KKyAgLy8NCisgICpOb2RlSWQgPSBO b2RlUmVzcC5Ob2RlSWQ7DQorICByZXR1cm4gRUZJX1NVQ0NFU1M7DQorDQorRmFpbDoNCisgIHJl dHVybiAoU3RhdHVzID09IEVGSV9OT1RfRk9VTkQpID8gRUZJX0RFVklDRV9FUlJPUiA6IFN0YXR1 czsNCit9DQotLSAKMi4xOS4xLjMuZzMwMjQ3YWE1ZDIwMQoKCg==