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=-9.6 required=3.0 tests=BAYES_00,DKIM_INVALID, DKIM_SIGNED,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH,MAILING_LIST_MULTI, SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS 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 D4290C433E7 for ; Mon, 12 Oct 2020 18:33:38 +0000 (UTC) Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (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 4BABA20797 for ; Mon, 12 Oct 2020 18:33:38 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (1024-bit key) header.d=redhat.com header.i=@redhat.com header.b="VkgtuoUd" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 4BABA20797 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Received: from localhost ([::1]:50202 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kS2dd-0007VB-6K for qemu-devel@archiver.kernel.org; Mon, 12 Oct 2020 14:33:37 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:39676) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kS2Yy-0003Wo-8J for qemu-devel@nongnu.org; Mon, 12 Oct 2020 14:28:48 -0400 Received: from us-smtp-delivery-124.mimecast.com ([216.205.24.124]:25208) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_CBC_SHA1:256) (Exim 4.90_1) (envelope-from ) id 1kS2Yt-00049Z-3x for qemu-devel@nongnu.org; Mon, 12 Oct 2020 14:28:47 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1602527320; 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=6FOt1nL4KIQbPzaVU3RYwjk5naKK4jPkJhRDXiaPl5k=; b=VkgtuoUdM4rWzUPgy4d+SZLaHMlHXph2qLshFSRiciGACYdGSjiP0eGoKJWZsqCoGsPgf1 wAUpr40GyEwiDww5ov70OQW6Ac9eb7EfN1ekgJf3K8mFmx5G9r0t7aM03+GkaoWEfluRgZ jOsmr8UYZZ9s+hk9uquEGESSJ6luR30= 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-217-22DR97QTMlCp5k2FqDYQFQ-1; Mon, 12 Oct 2020 14:28:38 -0400 X-MC-Unique: 22DR97QTMlCp5k2FqDYQFQ-1 Received: from smtp.corp.redhat.com (int-mx08.intmail.prod.int.phx2.redhat.com [10.5.11.23]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id ED703879517; Mon, 12 Oct 2020 18:28:36 +0000 (UTC) Received: from localhost (ovpn-115-4.ams2.redhat.com [10.36.115.4]) by smtp.corp.redhat.com (Postfix) with ESMTP id BB3A819C78; Mon, 12 Oct 2020 18:28:30 +0000 (UTC) From: Stefan Hajnoczi To: Peter Maydell , qemu-devel@nongnu.org Subject: [PULL v2 06/30] block/export: vhost-user block device backend server Date: Mon, 12 Oct 2020 19:27:36 +0100 Message-Id: <20201012182800.157697-7-stefanha@redhat.com> In-Reply-To: <20201012182800.157697-1-stefanha@redhat.com> References: <20201012182800.157697-1-stefanha@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.23 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=stefanha@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: base64 Received-SPF: pass client-ip=216.205.24.124; envelope-from=stefanha@redhat.com; helo=us-smtp-delivery-124.mimecast.com X-detected-operating-system: by eggs.gnu.org: First seen = 2020/10/11 23:52:29 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIMWL_WL_HIGH=-0.001, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H4=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Kevin Wolf , Laurent Vivier , Thomas Huth , =?UTF-8?q?Daniel=20P=2E=20Berrang=C3=A9?= , Eduardo Habkost , qemu-block@nongnu.org, Markus Armbruster , Coiby Xu , Max Reitz , =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= , Stefan Hajnoczi , Cleber Rosa , Paolo Bonzini , Fam Zheng , "Dr. David Alan Gilbert" Errors-To: qemu-devel-bounces+qemu-devel=archiver.kernel.org@nongnu.org Sender: "Qemu-devel" RnJvbTogQ29pYnkgWHUgPGNvaWJ5Lnh1QGdtYWlsLmNvbT4KCkJ5IG1ha2luZyB1c2Ugb2YgbGli dmhvc3QtdXNlciwgYmxvY2sgZGV2aWNlIGRyaXZlIGNhbiBiZSBzaGFyZWQgdG8KdGhlIGNvbm5l Y3RlZCB2aG9zdC11c2VyIGNsaWVudC4gT25seSBvbmUgY2xpZW50IGNhbiBjb25uZWN0IHRvIHRo ZQpzZXJ2ZXIgb25lIHRpbWUuCgpTaW5jZSB2aG9zdC11c2VyLXNlcnZlciBuZWVkcyBhIGJsb2Nr IGRyaXZlIHRvIGJlIGNyZWF0ZWQgZmlyc3QsIGRlbGF5CnRoZSBjcmVhdGlvbiBvZiB0aGlzIG9i amVjdC4KClN1Z2dlc3RlZC1ieTogS2V2aW4gV29sZiA8a3dvbGZAcmVkaGF0LmNvbT4KU2lnbmVk LW9mZi1ieTogU3RlZmFuIEhham5vY3ppIDxzdGVmYW5oYUByZWRoYXQuY29tPgpTaWduZWQtb2Zm LWJ5OiBDb2lieSBYdSA8Y29pYnkueHVAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogU3RlZmFuIEhh am5vY3ppIDxzdGVmYW5oYUByZWRoYXQuY29tPgpSZXZpZXdlZC1ieTogTWFyYy1BbmRyw6kgTHVy ZWF1IDxtYXJjYW5kcmUubHVyZWF1QHJlZGhhdC5jb20+Ck1lc3NhZ2UtaWQ6IDIwMjAwOTE4MDgw OTEyLjMyMTI5OS02LWNvaWJ5Lnh1QGdtYWlsLmNvbQpbU2hvcnRlbiAidmhvc3RfdXNlcl9ibGtf c2VydmVyIiBzdHJpbmcgdG8gInZob3N0X3VzZXJfYmxrIiB0byBhdm9pZCB0aGUKZm9sbG93aW5n IGNvbXBpbGVyIHdhcm5pbmc6Ci4uL2Jsb2NrL2V4cG9ydC92aG9zdC11c2VyLWJsay1zZXJ2ZXIu YzoxNzg6NTA6IGVycm9yOiDigJglc+KAmSBkaXJlY3RpdmUgb3V0cHV0IHRydW5jYXRlZCB3cml0 aW5nIDIxIGJ5dGVzIGludG8gYSByZWdpb24gb2Ygc2l6ZSAyMCBbLVdlcnJvcj1mb3JtYXQtdHJ1 bmNhdGlvbj1dCi0tU3RlZmFuXQpTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gSGFqbm9jemkgPHN0ZWZh bmhhQHJlZGhhdC5jb20+Ci0tLQogYmxvY2svZXhwb3J0L3Zob3N0LXVzZXItYmxrLXNlcnZlci5o IHwgIDM2ICsrCiBibG9jay9leHBvcnQvdmhvc3QtdXNlci1ibGstc2VydmVyLmMgfCA2NjEgKysr KysrKysrKysrKysrKysrKysrKysrKysrCiBzb2Z0bW11L3ZsLmMgICAgICAgICAgICAgICAgICAg ICAgICAgfCAgIDQgKwogYmxvY2svbWVzb24uYnVpbGQgICAgICAgICAgICAgICAgICAgIHwgICAx ICsKIDQgZmlsZXMgY2hhbmdlZCwgNzAyIGluc2VydGlvbnMoKykKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBibG9jay9leHBvcnQvdmhvc3QtdXNlci1ibGstc2VydmVyLmgKIGNyZWF0ZSBtb2RlIDEwMDY0 NCBibG9jay9leHBvcnQvdmhvc3QtdXNlci1ibGstc2VydmVyLmMKCmRpZmYgLS1naXQgYS9ibG9j ay9leHBvcnQvdmhvc3QtdXNlci1ibGstc2VydmVyLmggYi9ibG9jay9leHBvcnQvdmhvc3QtdXNl ci1ibGstc2VydmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMC4uZjA2 ZjM3YzRjOAotLS0gL2Rldi9udWxsCisrKyBiL2Jsb2NrL2V4cG9ydC92aG9zdC11c2VyLWJsay1z ZXJ2ZXIuaApAQCAtMCwwICsxLDM2IEBACisvKgorICogU2hhcmluZyBRRU1VIGJsb2NrIGRldmlj ZXMgdmlhIHZob3N0LXVzZXIgcHJvdG9jYWwKKyAqCisgKiBDb3B5cmlnaHQgKGMpIENvaWJ5IFh1 IDxjb2lieS54dUBnbWFpbC5jb20+LgorICogQ29weXJpZ2h0IChjKSAyMDIwIFJlZCBIYXQsIElu Yy4KKyAqCisgKiBUaGlzIHdvcmsgaXMgbGljZW5zZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBH TlUgR1BMLCB2ZXJzaW9uIDIgb3IKKyAqIGxhdGVyLiAgU2VlIHRoZSBDT1BZSU5HIGZpbGUgaW4g dGhlIHRvcC1sZXZlbCBkaXJlY3RvcnkuCisgKi8KKworI2lmbmRlZiBWSE9TVF9VU0VSX0JMS19T RVJWRVJfSAorI2RlZmluZSBWSE9TVF9VU0VSX0JMS19TRVJWRVJfSAorI2luY2x1ZGUgInV0aWwv dmhvc3QtdXNlci1zZXJ2ZXIuaCIKKwordHlwZWRlZiBzdHJ1Y3QgVnVCbG9ja0RldiBWdUJsb2Nr RGV2OworI2RlZmluZSBUWVBFX1ZIT1NUX1VTRVJfQkxLX1NFUlZFUiAidmhvc3QtdXNlci1ibGst c2VydmVyIgorI2RlZmluZSBWSE9TVF9VU0VSX0JMS19TRVJWRVIob2JqKSBcCisgICBPQkpFQ1Rf Q0hFQ0soVnVCbG9ja0Rldiwgb2JqLCBUWVBFX1ZIT1NUX1VTRVJfQkxLX1NFUlZFUikKKworLyog dmhvc3QgdXNlciBibG9jayBkZXZpY2UgKi8KK3N0cnVjdCBWdUJsb2NrRGV2IHsKKyAgICBPYmpl Y3QgcGFyZW50X29iajsKKyAgICBjaGFyICpub2RlX25hbWU7CisgICAgU29ja2V0QWRkcmVzcyAq YWRkcjsKKyAgICBBaW9Db250ZXh0ICpjdHg7CisgICAgVnVTZXJ2ZXIgdnVfc2VydmVyOworICAg IGJvb2wgcnVubmluZzsKKyAgICB1aW50MzJfdCBibGtfc2l6ZTsKKyAgICBCbG9ja0JhY2tlbmQg KmJhY2tlbmQ7CisgICAgUUlPQ2hhbm5lbFNvY2tldCAqc2lvYzsKKyAgICBRVEFJTFFfRU5UUlko VnVCbG9ja0RldikgbmV4dDsKKyAgICBzdHJ1Y3QgdmlydGlvX2Jsa19jb25maWcgYmxrY2ZnOwor ICAgIGJvb2wgd3JpdGFibGU7Cit9OworCisjZW5kaWYgLyogVkhPU1RfVVNFUl9CTEtfU0VSVkVS X0ggKi8KZGlmZiAtLWdpdCBhL2Jsb2NrL2V4cG9ydC92aG9zdC11c2VyLWJsay1zZXJ2ZXIuYyBi L2Jsb2NrL2V4cG9ydC92aG9zdC11c2VyLWJsay1zZXJ2ZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwMDAwLi5mYjc3NjRhNzMwCi0tLSAvZGV2L251bGwKKysrIGIvYmxvY2sv ZXhwb3J0L3Zob3N0LXVzZXItYmxrLXNlcnZlci5jCkBAIC0wLDAgKzEsNjYxIEBACisvKgorICog U2hhcmluZyBRRU1VIGJsb2NrIGRldmljZXMgdmlhIHZob3N0LXVzZXIgcHJvdG9jYWwKKyAqCisg KiBQYXJ0cyBvZiB0aGUgY29kZSBiYXNlZCBvbiBuYmQvc2VydmVyLmMuCisgKgorICogQ29weXJp Z2h0IChjKSBDb2lieSBYdSA8Y29pYnkueHVAZ21haWwuY29tPi4KKyAqIENvcHlyaWdodCAoYykg MjAyMCBSZWQgSGF0LCBJbmMuCisgKgorICogVGhpcyB3b3JrIGlzIGxpY2Vuc2VkIHVuZGVyIHRo ZSB0ZXJtcyBvZiB0aGUgR05VIEdQTCwgdmVyc2lvbiAyIG9yCisgKiBsYXRlci4gIFNlZSB0aGUg Q09QWUlORyBmaWxlIGluIHRoZSB0b3AtbGV2ZWwgZGlyZWN0b3J5LgorICovCisjaW5jbHVkZSAi cWVtdS9vc2RlcC5oIgorI2luY2x1ZGUgImJsb2NrL2Jsb2NrLmgiCisjaW5jbHVkZSAidmhvc3Qt dXNlci1ibGstc2VydmVyLmgiCisjaW5jbHVkZSAicWFwaS9lcnJvci5oIgorI2luY2x1ZGUgInFv bS9vYmplY3RfaW50ZXJmYWNlcy5oIgorI2luY2x1ZGUgInN5c2VtdS9ibG9jay1iYWNrZW5kLmgi CisjaW5jbHVkZSAidXRpbC9ibG9jay1oZWxwZXJzLmgiCisKK2VudW0geworICAgIFZIT1NUX1VT RVJfQkxLX01BWF9RVUVVRVMgPSAxLAorfTsKK3N0cnVjdCB2aXJ0aW9fYmxrX2luaGRyIHsKKyAg ICB1bnNpZ25lZCBjaGFyIHN0YXR1czsKK307CisKK3R5cGVkZWYgc3RydWN0IFZ1QmxvY2tSZXEg eworICAgIFZ1VmlydHFFbGVtZW50ICplbGVtOworICAgIGludDY0X3Qgc2VjdG9yX251bTsKKyAg ICBzaXplX3Qgc2l6ZTsKKyAgICBzdHJ1Y3QgdmlydGlvX2Jsa19pbmhkciAqaW47CisgICAgc3Ry dWN0IHZpcnRpb19ibGtfb3V0aGRyIG91dDsKKyAgICBWdVNlcnZlciAqc2VydmVyOworICAgIHN0 cnVjdCBWdVZpcnRxICp2cTsKK30gVnVCbG9ja1JlcTsKKworc3RhdGljIHZvaWQgdnVfYmxvY2tf cmVxX2NvbXBsZXRlKFZ1QmxvY2tSZXEgKnJlcSkKK3sKKyAgICBWdURldiAqdnVfZGV2ID0gJnJl cS0+c2VydmVyLT52dV9kZXY7CisKKyAgICAvKiBJTyBzaXplIHdpdGggMSBleHRyYSBzdGF0dXMg Ynl0ZSAqLworICAgIHZ1X3F1ZXVlX3B1c2godnVfZGV2LCByZXEtPnZxLCByZXEtPmVsZW0sIHJl cS0+c2l6ZSArIDEpOworICAgIHZ1X3F1ZXVlX25vdGlmeSh2dV9kZXYsIHJlcS0+dnEpOworCisg ICAgaWYgKHJlcS0+ZWxlbSkgeworICAgICAgICBmcmVlKHJlcS0+ZWxlbSk7CisgICAgfQorCisg ICAgZ19mcmVlKHJlcSk7Cit9CisKK3N0YXRpYyBWdUJsb2NrRGV2ICpnZXRfdnVfYmxvY2tfZGV2 aWNlX2J5X3NlcnZlcihWdVNlcnZlciAqc2VydmVyKQoreworICAgIHJldHVybiBjb250YWluZXJf b2Yoc2VydmVyLCBWdUJsb2NrRGV2LCB2dV9zZXJ2ZXIpOworfQorCitzdGF0aWMgaW50IGNvcm91 dGluZV9mbgordnVfYmxvY2tfZGlzY2FyZF93cml0ZV96ZXJvZXMoVnVCbG9ja1JlcSAqcmVxLCBz dHJ1Y3QgaW92ZWMgKmlvdiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90 IGlvdmNudCwgdWludDMyX3QgdHlwZSkKK3sKKyAgICBzdHJ1Y3QgdmlydGlvX2Jsa19kaXNjYXJk X3dyaXRlX3plcm9lcyBkZXNjOworICAgIHNzaXplX3Qgc2l6ZSA9IGlvdl90b19idWYoaW92LCBp b3ZjbnQsIDAsICZkZXNjLCBzaXplb2YoZGVzYykpOworICAgIGlmICh1bmxpa2VseShzaXplICE9 IHNpemVvZihkZXNjKSkpIHsKKyAgICAgICAgZXJyb3JfcmVwb3J0KCJJbnZhbGlkIHNpemUgJWxk LCBleHBlY3QgJWxkIiwgc2l6ZSwgc2l6ZW9mKGRlc2MpKTsKKyAgICAgICAgcmV0dXJuIC1FSU5W QUw7CisgICAgfQorCisgICAgVnVCbG9ja0RldiAqdmRldl9ibGsgPSBnZXRfdnVfYmxvY2tfZGV2 aWNlX2J5X3NlcnZlcihyZXEtPnNlcnZlcik7CisgICAgdWludDY0X3QgcmFuZ2VbMl0gPSB7IGxl NjRfdG9fY3B1KGRlc2Muc2VjdG9yKSA8PCA5LAorICAgICAgICAgICAgICAgICAgICAgICAgICBs ZTMyX3RvX2NwdShkZXNjLm51bV9zZWN0b3JzKSA8PCA5IH07CisgICAgaWYgKHR5cGUgPT0gVklS VElPX0JMS19UX0RJU0NBUkQpIHsKKyAgICAgICAgaWYgKGJsa19jb19wZGlzY2FyZCh2ZGV2X2Js ay0+YmFja2VuZCwgcmFuZ2VbMF0sIHJhbmdlWzFdKSA9PSAwKSB7CisgICAgICAgICAgICByZXR1 cm4gMDsKKyAgICAgICAgfQorICAgIH0gZWxzZSBpZiAodHlwZSA9PSBWSVJUSU9fQkxLX1RfV1JJ VEVfWkVST0VTKSB7CisgICAgICAgIGlmIChibGtfY29fcHdyaXRlX3plcm9lcyh2ZGV2X2Jsay0+ YmFja2VuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlWzBdLCByYW5n ZVsxXSwgMCkgPT0gMCkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICB9 CisKKyAgICByZXR1cm4gLUVJTlZBTDsKK30KKworc3RhdGljIHZvaWQgY29yb3V0aW5lX2ZuIHZ1 X2Jsb2NrX2ZsdXNoKFZ1QmxvY2tSZXEgKnJlcSkKK3sKKyAgICBWdUJsb2NrRGV2ICp2ZGV2X2Js ayA9IGdldF92dV9ibG9ja19kZXZpY2VfYnlfc2VydmVyKHJlcS0+c2VydmVyKTsKKyAgICBCbG9j a0JhY2tlbmQgKmJhY2tlbmQgPSB2ZGV2X2Jsay0+YmFja2VuZDsKKyAgICBibGtfY29fZmx1c2go YmFja2VuZCk7Cit9CisKK3N0cnVjdCByZXFfZGF0YSB7CisgICAgVnVTZXJ2ZXIgKnNlcnZlcjsK KyAgICBWdVZpcnRxICp2cTsKKyAgICBWdVZpcnRxRWxlbWVudCAqZWxlbTsKK307CisKK3N0YXRp YyB2b2lkIGNvcm91dGluZV9mbiB2dV9ibG9ja192aXJ0aW9fcHJvY2Vzc19yZXEodm9pZCAqb3Bh cXVlKQoreworICAgIHN0cnVjdCByZXFfZGF0YSAqZGF0YSA9IG9wYXF1ZTsKKyAgICBWdVNlcnZl ciAqc2VydmVyID0gZGF0YS0+c2VydmVyOworICAgIFZ1VmlydHEgKnZxID0gZGF0YS0+dnE7Cisg ICAgVnVWaXJ0cUVsZW1lbnQgKmVsZW0gPSBkYXRhLT5lbGVtOworICAgIHVpbnQzMl90IHR5cGU7 CisgICAgVnVCbG9ja1JlcSAqcmVxOworCisgICAgVnVCbG9ja0RldiAqdmRldl9ibGsgPSBnZXRf dnVfYmxvY2tfZGV2aWNlX2J5X3NlcnZlcihzZXJ2ZXIpOworICAgIEJsb2NrQmFja2VuZCAqYmFj a2VuZCA9IHZkZXZfYmxrLT5iYWNrZW5kOworCisgICAgc3RydWN0IGlvdmVjICppbl9pb3YgPSBl bGVtLT5pbl9zZzsKKyAgICBzdHJ1Y3QgaW92ZWMgKm91dF9pb3YgPSBlbGVtLT5vdXRfc2c7Cisg ICAgdW5zaWduZWQgaW5fbnVtID0gZWxlbS0+aW5fbnVtOworICAgIHVuc2lnbmVkIG91dF9udW0g PSBlbGVtLT5vdXRfbnVtOworICAgIC8qIHJlZmVyIHRvIGh3L2Jsb2NrL3ZpcnRpb19ibGsuYyAq LworICAgIGlmIChlbGVtLT5vdXRfbnVtIDwgMSB8fCBlbGVtLT5pbl9udW0gPCAxKSB7CisgICAg ICAgIGVycm9yX3JlcG9ydCgidmlydGlvLWJsayByZXF1ZXN0IG1pc3NpbmcgaGVhZGVycyIpOwor ICAgICAgICBmcmVlKGVsZW0pOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgcmVxID0g Z19uZXcwKFZ1QmxvY2tSZXEsIDEpOworICAgIHJlcS0+c2VydmVyID0gc2VydmVyOworICAgIHJl cS0+dnEgPSB2cTsKKyAgICByZXEtPmVsZW0gPSBlbGVtOworCisgICAgaWYgKHVubGlrZWx5KGlv dl90b19idWYob3V0X2lvdiwgb3V0X251bSwgMCwgJnJlcS0+b3V0LAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHNpemVvZihyZXEtPm91dCkpICE9IHNpemVvZihyZXEtPm91dCkpKSB7Cisg ICAgICAgIGVycm9yX3JlcG9ydCgidmlydGlvLWJsayByZXF1ZXN0IG91dGhkciB0b28gc2hvcnQi KTsKKyAgICAgICAgZ290byBlcnI7CisgICAgfQorCisgICAgaW92X2Rpc2NhcmRfZnJvbnQoJm91 dF9pb3YsICZvdXRfbnVtLCBzaXplb2YocmVxLT5vdXQpKTsKKworICAgIGlmIChpbl9pb3ZbaW5f bnVtIC0gMV0uaW92X2xlbiA8IHNpemVvZihzdHJ1Y3QgdmlydGlvX2Jsa19pbmhkcikpIHsKKyAg ICAgICAgZXJyb3JfcmVwb3J0KCJ2aXJ0aW8tYmxrIHJlcXVlc3QgaW5oZHIgdG9vIHNob3J0Iik7 CisgICAgICAgIGdvdG8gZXJyOworICAgIH0KKworICAgIC8qIFdlIGFsd2F5cyB0b3VjaCB0aGUg bGFzdCBieXRlLCBzbyBqdXN0IHNlZSBob3cgYmlnIGluX2lvdiBpcy4gICovCisgICAgcmVxLT5p biA9ICh2b2lkICopaW5faW92W2luX251bSAtIDFdLmlvdl9iYXNlCisgICAgICAgICAgICAgICsg aW5faW92W2luX251bSAtIDFdLmlvdl9sZW4KKyAgICAgICAgICAgICAgLSBzaXplb2Yoc3RydWN0 IHZpcnRpb19ibGtfaW5oZHIpOworICAgIGlvdl9kaXNjYXJkX2JhY2soaW5faW92LCAmaW5fbnVt LCBzaXplb2Yoc3RydWN0IHZpcnRpb19ibGtfaW5oZHIpKTsKKworICAgIHR5cGUgPSBsZTMyX3Rv X2NwdShyZXEtPm91dC50eXBlKTsKKyAgICBzd2l0Y2ggKHR5cGUgJiB+VklSVElPX0JMS19UX0JB UlJJRVIpIHsKKyAgICBjYXNlIFZJUlRJT19CTEtfVF9JTjoKKyAgICBjYXNlIFZJUlRJT19CTEtf VF9PVVQ6IHsKKyAgICAgICAgc3NpemVfdCByZXQgPSAwOworICAgICAgICBib29sIGlzX3dyaXRl ID0gdHlwZSAmIFZJUlRJT19CTEtfVF9PVVQ7CisgICAgICAgIHJlcS0+c2VjdG9yX251bSA9IGxl NjRfdG9fY3B1KHJlcS0+b3V0LnNlY3Rvcik7CisKKyAgICAgICAgaW50NjRfdCBvZmZzZXQgPSBy ZXEtPnNlY3Rvcl9udW0gKiB2ZGV2X2Jsay0+YmxrX3NpemU7CisgICAgICAgIFFFTVVJT1ZlY3Rv ciBxaW92OworICAgICAgICBpZiAoaXNfd3JpdGUpIHsKKyAgICAgICAgICAgIHFlbXVfaW92ZWNf aW5pdF9leHRlcm5hbCgmcWlvdiwgb3V0X2lvdiwgb3V0X251bSk7CisgICAgICAgICAgICByZXQg PSBibGtfY29fcHdyaXRldihiYWNrZW5kLCBvZmZzZXQsIHFpb3Yuc2l6ZSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICZxaW92LCAwKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAg ICAgICAgIHFlbXVfaW92ZWNfaW5pdF9leHRlcm5hbCgmcWlvdiwgaW5faW92LCBpbl9udW0pOwor ICAgICAgICAgICAgcmV0ID0gYmxrX2NvX3ByZWFkdihiYWNrZW5kLCBvZmZzZXQsIHFpb3Yuc2l6 ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnFpb3YsIDApOworICAgICAgICB9 CisgICAgICAgIGlmIChyZXQgPj0gMCkgeworICAgICAgICAgICAgcmVxLT5pbi0+c3RhdHVzID0g VklSVElPX0JMS19TX09LOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmVxLT5pbi0+ c3RhdHVzID0gVklSVElPX0JMS19TX0lPRVJSOworICAgICAgICB9CisgICAgICAgIGJyZWFrOwor ICAgIH0KKyAgICBjYXNlIFZJUlRJT19CTEtfVF9GTFVTSDoKKyAgICAgICAgdnVfYmxvY2tfZmx1 c2gocmVxKTsKKyAgICAgICAgcmVxLT5pbi0+c3RhdHVzID0gVklSVElPX0JMS19TX09LOworICAg ICAgICBicmVhazsKKyAgICBjYXNlIFZJUlRJT19CTEtfVF9HRVRfSUQ6IHsKKyAgICAgICAgc2l6 ZV90IHNpemUgPSBNSU4oaW92X3NpemUoJmVsZW0tPmluX3NnWzBdLCBpbl9udW0pLAorICAgICAg ICAgICAgICAgICAgICAgICAgICBWSVJUSU9fQkxLX0lEX0JZVEVTKTsKKyAgICAgICAgc25wcmlu dGYoZWxlbS0+aW5fc2dbMF0uaW92X2Jhc2UsIHNpemUsICIlcyIsICJ2aG9zdF91c2VyX2JsayIp OworICAgICAgICByZXEtPmluLT5zdGF0dXMgPSBWSVJUSU9fQkxLX1NfT0s7CisgICAgICAgIHJl cS0+c2l6ZSA9IGVsZW0tPmluX3NnWzBdLmlvdl9sZW47CisgICAgICAgIGJyZWFrOworICAgIH0K KyAgICBjYXNlIFZJUlRJT19CTEtfVF9ESVNDQVJEOgorICAgIGNhc2UgVklSVElPX0JMS19UX1dS SVRFX1pFUk9FUzogeworICAgICAgICBpbnQgcmM7CisgICAgICAgIHJjID0gdnVfYmxvY2tfZGlz Y2FyZF93cml0ZV96ZXJvZXMocmVxLCAmZWxlbS0+b3V0X3NnWzFdLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dF9udW0sIHR5cGUpOworICAgICAgICBpZiAo cmMgPT0gMCkgeworICAgICAgICAgICAgcmVxLT5pbi0+c3RhdHVzID0gVklSVElPX0JMS19TX09L OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgcmVxLT5pbi0+c3RhdHVzID0gVklSVElP X0JMS19TX0lPRVJSOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBkZWZh dWx0OgorICAgICAgICByZXEtPmluLT5zdGF0dXMgPSBWSVJUSU9fQkxLX1NfVU5TVVBQOworICAg ICAgICBicmVhazsKKyAgICB9CisKKyAgICB2dV9ibG9ja19yZXFfY29tcGxldGUocmVxKTsKKyAg ICByZXR1cm47CisKK2VycjoKKyAgICBmcmVlKGVsZW0pOworICAgIGdfZnJlZShyZXEpOworICAg IHJldHVybjsKK30KKworc3RhdGljIHZvaWQgdnVfYmxvY2tfcHJvY2Vzc192cShWdURldiAqdnVf ZGV2LCBpbnQgaWR4KQoreworICAgIFZ1U2VydmVyICpzZXJ2ZXI7CisgICAgVnVWaXJ0cSAqdnE7 CisgICAgc3RydWN0IHJlcV9kYXRhICpyZXFfZGF0YTsKKworICAgIHNlcnZlciA9IGNvbnRhaW5l cl9vZih2dV9kZXYsIFZ1U2VydmVyLCB2dV9kZXYpOworICAgIGFzc2VydChzZXJ2ZXIpOworCisg ICAgdnEgPSB2dV9nZXRfcXVldWUodnVfZGV2LCBpZHgpOworICAgIGFzc2VydCh2cSk7CisgICAg VnVWaXJ0cUVsZW1lbnQgKmVsZW07CisgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgZWxlbSA9IHZ1 X3F1ZXVlX3BvcCh2dV9kZXYsIHZxLCBzaXplb2YoVnVWaXJ0cUVsZW1lbnQpICsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihWdUJsb2NrUmVxKSk7CisgICAgICAg IGlmIChlbGVtKSB7CisgICAgICAgICAgICByZXFfZGF0YSA9IGdfbmV3MChzdHJ1Y3QgcmVxX2Rh dGEsIDEpOworICAgICAgICAgICAgcmVxX2RhdGEtPnNlcnZlciA9IHNlcnZlcjsKKyAgICAgICAg ICAgIHJlcV9kYXRhLT52cSA9IHZxOworICAgICAgICAgICAgcmVxX2RhdGEtPmVsZW0gPSBlbGVt OworICAgICAgICAgICAgQ29yb3V0aW5lICpjbyA9IHFlbXVfY29yb3V0aW5lX2NyZWF0ZSh2dV9i bG9ja192aXJ0aW9fcHJvY2Vzc19yZXEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIHJlcV9kYXRhKTsKKyAgICAgICAgICAgIGFpb19jb19lbnRlcihz ZXJ2ZXItPmlvYy0+Y3R4LCBjbyk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBicmVh azsKKyAgICAgICAgfQorICAgIH0KK30KKworc3RhdGljIHZvaWQgdnVfYmxvY2tfcXVldWVfc2V0 X3N0YXJ0ZWQoVnVEZXYgKnZ1X2RldiwgaW50IGlkeCwgYm9vbCBzdGFydGVkKQoreworICAgIFZ1 VmlydHEgKnZxOworCisgICAgYXNzZXJ0KHZ1X2Rldik7CisKKyAgICB2cSA9IHZ1X2dldF9xdWV1 ZSh2dV9kZXYsIGlkeCk7CisgICAgdnVfc2V0X3F1ZXVlX2hhbmRsZXIodnVfZGV2LCB2cSwgc3Rh cnRlZCA/IHZ1X2Jsb2NrX3Byb2Nlc3NfdnEgOiBOVUxMKTsKK30KKworc3RhdGljIHVpbnQ2NF90 IHZ1X2Jsb2NrX2dldF9mZWF0dXJlcyhWdURldiAqZGV2KQoreworICAgIHVpbnQ2NF90IGZlYXR1 cmVzOworICAgIFZ1U2VydmVyICpzZXJ2ZXIgPSBjb250YWluZXJfb2YoZGV2LCBWdVNlcnZlciwg dnVfZGV2KTsKKyAgICBWdUJsb2NrRGV2ICp2ZGV2X2JsayA9IGdldF92dV9ibG9ja19kZXZpY2Vf Ynlfc2VydmVyKHNlcnZlcik7CisgICAgZmVhdHVyZXMgPSAxdWxsIDw8IFZJUlRJT19CTEtfRl9T SVpFX01BWCB8CisgICAgICAgICAgICAgICAxdWxsIDw8IFZJUlRJT19CTEtfRl9TRUdfTUFYIHwK KyAgICAgICAgICAgICAgIDF1bGwgPDwgVklSVElPX0JMS19GX1RPUE9MT0dZIHwKKyAgICAgICAg ICAgICAgIDF1bGwgPDwgVklSVElPX0JMS19GX0JMS19TSVpFIHwKKyAgICAgICAgICAgICAgIDF1 bGwgPDwgVklSVElPX0JMS19GX0ZMVVNIIHwKKyAgICAgICAgICAgICAgIDF1bGwgPDwgVklSVElP X0JMS19GX0RJU0NBUkQgfAorICAgICAgICAgICAgICAgMXVsbCA8PCBWSVJUSU9fQkxLX0ZfV1JJ VEVfWkVST0VTIHwKKyAgICAgICAgICAgICAgIDF1bGwgPDwgVklSVElPX0JMS19GX0NPTkZJR19X Q0UgfAorICAgICAgICAgICAgICAgMXVsbCA8PCBWSVJUSU9fRl9WRVJTSU9OXzEgfAorICAgICAg ICAgICAgICAgMXVsbCA8PCBWSVJUSU9fUklOR19GX0lORElSRUNUX0RFU0MgfAorICAgICAgICAg ICAgICAgMXVsbCA8PCBWSVJUSU9fUklOR19GX0VWRU5UX0lEWCB8CisgICAgICAgICAgICAgICAx dWxsIDw8IFZIT1NUX1VTRVJfRl9QUk9UT0NPTF9GRUFUVVJFUzsKKworICAgIGlmICghdmRldl9i bGstPndyaXRhYmxlKSB7CisgICAgICAgIGZlYXR1cmVzIHw9IDF1bGwgPDwgVklSVElPX0JMS19G X1JPOworICAgIH0KKworICAgIHJldHVybiBmZWF0dXJlczsKK30KKworc3RhdGljIHVpbnQ2NF90 IHZ1X2Jsb2NrX2dldF9wcm90b2NvbF9mZWF0dXJlcyhWdURldiAqZGV2KQoreworICAgIHJldHVy biAxdWxsIDw8IFZIT1NUX1VTRVJfUFJPVE9DT0xfRl9DT05GSUcgfAorICAgICAgICAgICAxdWxs IDw8IFZIT1NUX1VTRVJfUFJPVE9DT0xfRl9JTkZMSUdIVF9TSE1GRDsKK30KKworc3RhdGljIGlu dAordnVfYmxvY2tfZ2V0X2NvbmZpZyhWdURldiAqdnVfZGV2LCB1aW50OF90ICpjb25maWcsIHVp bnQzMl90IGxlbikKK3sKKyAgICBWdVNlcnZlciAqc2VydmVyID0gY29udGFpbmVyX29mKHZ1X2Rl diwgVnVTZXJ2ZXIsIHZ1X2Rldik7CisgICAgVnVCbG9ja0RldiAqdmRldl9ibGsgPSBnZXRfdnVf YmxvY2tfZGV2aWNlX2J5X3NlcnZlcihzZXJ2ZXIpOworICAgIG1lbWNweShjb25maWcsICZ2ZGV2 X2Jsay0+YmxrY2ZnLCBsZW4pOworCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKK3Z1 X2Jsb2NrX3NldF9jb25maWcoVnVEZXYgKnZ1X2RldiwgY29uc3QgdWludDhfdCAqZGF0YSwKKyAg ICAgICAgICAgICAgICAgICAgdWludDMyX3Qgb2Zmc2V0LCB1aW50MzJfdCBzaXplLCB1aW50MzJf dCBmbGFncykKK3sKKyAgICBWdVNlcnZlciAqc2VydmVyID0gY29udGFpbmVyX29mKHZ1X2Rldiwg VnVTZXJ2ZXIsIHZ1X2Rldik7CisgICAgVnVCbG9ja0RldiAqdmRldl9ibGsgPSBnZXRfdnVfYmxv Y2tfZGV2aWNlX2J5X3NlcnZlcihzZXJ2ZXIpOworICAgIHVpbnQ4X3Qgd2NlOworCisgICAgLyog ZG9uJ3Qgc3VwcG9ydCBsaXZlIG1pZ3JhdGlvbiAqLworICAgIGlmIChmbGFncyAhPSBWSE9TVF9T RVRfQ09ORklHX1RZUEVfTUFTVEVSKSB7CisgICAgICAgIHJldHVybiAtRUlOVkFMOworICAgIH0K KworICAgIGlmIChvZmZzZXQgIT0gb2Zmc2V0b2Yoc3RydWN0IHZpcnRpb19ibGtfY29uZmlnLCB3 Y2UpIHx8CisgICAgICAgIHNpemUgIT0gMSkgeworICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAg ICB9CisKKyAgICB3Y2UgPSAqZGF0YTsKKyAgICB2ZGV2X2Jsay0+YmxrY2ZnLndjZSA9IHdjZTsK KyAgICBibGtfc2V0X2VuYWJsZV93cml0ZV9jYWNoZSh2ZGV2X2Jsay0+YmFja2VuZCwgd2NlKTsK KyAgICByZXR1cm4gMDsKK30KKworLyoKKyAqIFdoZW4gdGhlIGNsaWVudCBkaXNjb25uZWN0cywg aXQgc2VuZHMgYSBWSE9TVF9VU0VSX05PTkUgcmVxdWVzdAorICogYW5kIHZ1X3Byb2Nlc3NfbWVz c2FnZSB3aWxsIHNpbXBsZSBjYWxsIGV4aXQgd2hpY2ggY2F1c2UgdGhlIFZNCisgKiB0byBleGl0 IGFicnVwdGx5LgorICogVG8gYXZvaWQgdGhpcyBpc3N1ZSwgIHByb2Nlc3MgVkhPU1RfVVNFUl9O T05FIHJlcXVlc3QgYWhlYWQKKyAqIG9mIHZ1X3Byb2Nlc3NfbWVzc2FnZS4KKyAqCisgKi8KK3N0 YXRpYyBpbnQgdnVfYmxvY2tfcHJvY2Vzc19tc2coVnVEZXYgKmRldiwgVmhvc3RVc2VyTXNnICp2 bXNnLCBpbnQgKmRvX3JlcGx5KQoreworICAgIGlmICh2bXNnLT5yZXF1ZXN0ID09IFZIT1NUX1VT RVJfTk9ORSkgeworICAgICAgICBkZXYtPnBhbmljKGRldiwgImRpc2Nvbm5lY3QiKTsKKyAgICAg ICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworc3RhdGljIGNv bnN0IFZ1RGV2SWZhY2UgdnVfYmxvY2tfaWZhY2UgPSB7CisgICAgLmdldF9mZWF0dXJlcyAgICAg ICAgICA9IHZ1X2Jsb2NrX2dldF9mZWF0dXJlcywKKyAgICAucXVldWVfc2V0X3N0YXJ0ZWQgICAg ID0gdnVfYmxvY2tfcXVldWVfc2V0X3N0YXJ0ZWQsCisgICAgLmdldF9wcm90b2NvbF9mZWF0dXJl cyA9IHZ1X2Jsb2NrX2dldF9wcm90b2NvbF9mZWF0dXJlcywKKyAgICAuZ2V0X2NvbmZpZyAgICAg ICAgICAgID0gdnVfYmxvY2tfZ2V0X2NvbmZpZywKKyAgICAuc2V0X2NvbmZpZyAgICAgICAgICAg ID0gdnVfYmxvY2tfc2V0X2NvbmZpZywKKyAgICAucHJvY2Vzc19tc2cgICAgICAgICAgID0gdnVf YmxvY2tfcHJvY2Vzc19tc2csCit9OworCitzdGF0aWMgdm9pZCBibGtfYWlvX2F0dGFjaGVkKEFp b0NvbnRleHQgKmN0eCwgdm9pZCAqb3BhcXVlKQoreworICAgIFZ1QmxvY2tEZXYgKnZ1Yl9kZXYg PSBvcGFxdWU7CisgICAgYWlvX2NvbnRleHRfYWNxdWlyZShjdHgpOworICAgIHZob3N0X3VzZXJf c2VydmVyX3NldF9haW9fY29udGV4dCgmdnViX2Rldi0+dnVfc2VydmVyLCBjdHgpOworICAgIGFp b19jb250ZXh0X3JlbGVhc2UoY3R4KTsKK30KKworc3RhdGljIHZvaWQgYmxrX2Fpb19kZXRhY2go dm9pZCAqb3BhcXVlKQoreworICAgIFZ1QmxvY2tEZXYgKnZ1Yl9kZXYgPSBvcGFxdWU7CisgICAg QWlvQ29udGV4dCAqY3R4ID0gdnViX2Rldi0+dnVfc2VydmVyLmN0eDsKKyAgICBhaW9fY29udGV4 dF9hY3F1aXJlKGN0eCk7CisgICAgdmhvc3RfdXNlcl9zZXJ2ZXJfc2V0X2Fpb19jb250ZXh0KCZ2 dWJfZGV2LT52dV9zZXJ2ZXIsIE5VTEwpOworICAgIGFpb19jb250ZXh0X3JlbGVhc2UoY3R4KTsK K30KKworc3RhdGljIHZvaWQKK3Z1X2Jsb2NrX2luaXRpYWxpemVfY29uZmlnKEJsb2NrRHJpdmVy U3RhdGUgKmJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHZpcnRpb19ibGtf Y29uZmlnICpjb25maWcsIHVpbnQzMl90IGJsa19zaXplKQoreworICAgIGNvbmZpZy0+Y2FwYWNp dHkgPSBiZHJ2X2dldGxlbmd0aChicykgPj4gQkRSVl9TRUNUT1JfQklUUzsKKyAgICBjb25maWct PmJsa19zaXplID0gYmxrX3NpemU7CisgICAgY29uZmlnLT5zaXplX21heCA9IDA7CisgICAgY29u ZmlnLT5zZWdfbWF4ID0gMTI4IC0gMjsKKyAgICBjb25maWctPm1pbl9pb19zaXplID0gMTsKKyAg ICBjb25maWctPm9wdF9pb19zaXplID0gMTsKKyAgICBjb25maWctPm51bV9xdWV1ZXMgPSBWSE9T VF9VU0VSX0JMS19NQVhfUVVFVUVTOworICAgIGNvbmZpZy0+bWF4X2Rpc2NhcmRfc2VjdG9ycyA9 IDMyNzY4OworICAgIGNvbmZpZy0+bWF4X2Rpc2NhcmRfc2VnID0gMTsKKyAgICBjb25maWctPmRp c2NhcmRfc2VjdG9yX2FsaWdubWVudCA9IGNvbmZpZy0+YmxrX3NpemUgPj4gOTsKKyAgICBjb25m aWctPm1heF93cml0ZV96ZXJvZXNfc2VjdG9ycyA9IDMyNzY4OworICAgIGNvbmZpZy0+bWF4X3dy aXRlX3plcm9lc19zZWcgPSAxOworfQorCitzdGF0aWMgVnVCbG9ja0RldiAqdnVfYmxvY2tfaW5p dChWdUJsb2NrRGV2ICp2dV9ibG9ja19kZXZpY2UsIEVycm9yICoqZXJycCkKK3sKKworICAgIEJs b2NrQmFja2VuZCAqYmxrOworICAgIEVycm9yICpsb2NhbF9lcnJvciA9IE5VTEw7CisgICAgY29u c3QgY2hhciAqbm9kZV9uYW1lID0gdnVfYmxvY2tfZGV2aWNlLT5ub2RlX25hbWU7CisgICAgYm9v bCB3cml0YWJsZSA9IHZ1X2Jsb2NrX2RldmljZS0+d3JpdGFibGU7CisgICAgdWludDY0X3QgcGVy bSA9IEJMS19QRVJNX0NPTlNJU1RFTlRfUkVBRDsKKyAgICBpbnQgcmV0OworCisgICAgQWlvQ29u dGV4dCAqY3R4OworCisgICAgQmxvY2tEcml2ZXJTdGF0ZSAqYnMgPSBiZHJ2X2xvb2t1cF9icyhu b2RlX25hbWUsIG5vZGVfbmFtZSwgJmxvY2FsX2Vycm9yKTsKKworICAgIGlmICghYnMpIHsKKyAg ICAgICAgZXJyb3JfcHJvcGFnYXRlKGVycnAsIGxvY2FsX2Vycm9yKTsKKyAgICAgICAgcmV0dXJu IE5VTEw7CisgICAgfQorCisgICAgaWYgKGJkcnZfaXNfcmVhZF9vbmx5KGJzKSkgeworICAgICAg ICB3cml0YWJsZSA9IGZhbHNlOworICAgIH0KKworICAgIGlmICh3cml0YWJsZSkgeworICAgICAg ICBwZXJtIHw9IEJMS19QRVJNX1dSSVRFOworICAgIH0KKworICAgIGN0eCA9IGJkcnZfZ2V0X2Fp b19jb250ZXh0KGJzKTsKKyAgICBhaW9fY29udGV4dF9hY3F1aXJlKGN0eCk7CisgICAgYmRydl9p bnZhbGlkYXRlX2NhY2hlKGJzLCBOVUxMKTsKKyAgICBhaW9fY29udGV4dF9yZWxlYXNlKGN0eCk7 CisKKyAgICAvKgorICAgICAqIERvbid0IGFsbG93IHJlc2l6ZSB3aGlsZSB0aGUgdmhvc3QgdXNl ciBzZXJ2ZXIgaXMgcnVubmluZywKKyAgICAgKiBvdGhlcndpc2Ugd2UgZG9uJ3QgY2FyZSB3aGF0 IGhhcHBlbnMgd2l0aCB0aGUgbm9kZS4KKyAgICAgKi8KKyAgICBibGsgPSBibGtfbmV3KGJkcnZf Z2V0X2Fpb19jb250ZXh0KGJzKSwgcGVybSwKKyAgICAgICAgICAgICAgICAgIEJMS19QRVJNX0NP TlNJU1RFTlRfUkVBRCB8IEJMS19QRVJNX1dSSVRFX1VOQ0hBTkdFRCB8CisgICAgICAgICAgICAg ICAgICBCTEtfUEVSTV9XUklURSB8IEJMS19QRVJNX0dSQVBIX01PRCk7CisgICAgcmV0ID0gYmxr X2luc2VydF9icyhibGssIGJzLCBlcnJwKTsKKworICAgIGlmIChyZXQgPCAwKSB7CisgICAgICAg IGdvdG8gZmFpbDsKKyAgICB9CisKKyAgICBibGtfc2V0X2VuYWJsZV93cml0ZV9jYWNoZShibGss IGZhbHNlKTsKKworICAgIGJsa19zZXRfYWxsb3dfYWlvX2NvbnRleHRfY2hhbmdlKGJsaywgdHJ1 ZSk7CisKKyAgICB2dV9ibG9ja19kZXZpY2UtPmJsa2NmZy53Y2UgPSAwOworICAgIHZ1X2Jsb2Nr X2RldmljZS0+YmFja2VuZCA9IGJsazsKKyAgICBpZiAoIXZ1X2Jsb2NrX2RldmljZS0+YmxrX3Np emUpIHsKKyAgICAgICAgdnVfYmxvY2tfZGV2aWNlLT5ibGtfc2l6ZSA9IEJEUlZfU0VDVE9SX1NJ WkU7CisgICAgfQorICAgIHZ1X2Jsb2NrX2RldmljZS0+YmxrY2ZnLmJsa19zaXplID0gdnVfYmxv Y2tfZGV2aWNlLT5ibGtfc2l6ZTsKKyAgICBibGtfc2V0X2d1ZXN0X2Jsb2NrX3NpemUoYmxrLCB2 dV9ibG9ja19kZXZpY2UtPmJsa19zaXplKTsKKyAgICB2dV9ibG9ja19pbml0aWFsaXplX2NvbmZp ZyhicywgJnZ1X2Jsb2NrX2RldmljZS0+YmxrY2ZnLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICB2dV9ibG9ja19kZXZpY2UtPmJsa19zaXplKTsKKyAgICByZXR1cm4gdnVfYmxv Y2tfZGV2aWNlOworCitmYWlsOgorICAgIGJsa191bnJlZihibGspOworICAgIHJldHVybiBOVUxM OworfQorCitzdGF0aWMgdm9pZCB2dV9ibG9ja19kZWluaXQoVnVCbG9ja0RldiAqdnVfYmxvY2tf ZGV2aWNlKQoreworICAgIGlmICh2dV9ibG9ja19kZXZpY2UtPmJhY2tlbmQpIHsKKyAgICAgICAg YmxrX3JlbW92ZV9haW9fY29udGV4dF9ub3RpZmllcih2dV9ibG9ja19kZXZpY2UtPmJhY2tlbmQs IGJsa19haW9fYXR0YWNoZWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgYmxrX2Fpb19kZXRhY2gsIHZ1X2Jsb2NrX2RldmljZSk7CisgICAgfQorCisgICAgYmxrX3Vu cmVmKHZ1X2Jsb2NrX2RldmljZS0+YmFja2VuZCk7Cit9CisKK3N0YXRpYyB2b2lkIHZob3N0X3Vz ZXJfYmxrX3NlcnZlcl9zdG9wKFZ1QmxvY2tEZXYgKnZ1X2Jsb2NrX2RldmljZSkKK3sKKyAgICB2 aG9zdF91c2VyX3NlcnZlcl9zdG9wKCZ2dV9ibG9ja19kZXZpY2UtPnZ1X3NlcnZlcik7CisgICAg dnVfYmxvY2tfZGVpbml0KHZ1X2Jsb2NrX2RldmljZSk7Cit9CisKK3N0YXRpYyB2b2lkIHZob3N0 X3VzZXJfYmxrX3NlcnZlcl9zdGFydChWdUJsb2NrRGV2ICp2dV9ibG9ja19kZXZpY2UsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXJyb3IgKiplcnJwKQoreworICAg IEFpb0NvbnRleHQgKmN0eDsKKyAgICBTb2NrZXRBZGRyZXNzICphZGRyID0gdnVfYmxvY2tfZGV2 aWNlLT5hZGRyOworCisgICAgaWYgKCF2dV9ibG9ja19pbml0KHZ1X2Jsb2NrX2RldmljZSwgZXJy cCkpIHsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGN0eCA9IGJkcnZfZ2V0X2Fpb19j b250ZXh0KGJsa19icyh2dV9ibG9ja19kZXZpY2UtPmJhY2tlbmQpKTsKKworICAgIGlmICghdmhv c3RfdXNlcl9zZXJ2ZXJfc3RhcnQoJnZ1X2Jsb2NrX2RldmljZS0+dnVfc2VydmVyLCBhZGRyLCBj dHgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWSE9TVF9VU0VSX0JMS19NQVhf UVVFVUVTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgJnZ1X2Jsb2Nr X2lmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJycCkpIHsKKyAgICAg ICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICBibGtfYWRkX2Fpb19jb250ZXh0X25vdGlmaWVy KHZ1X2Jsb2NrX2RldmljZS0+YmFja2VuZCwgYmxrX2Fpb19hdHRhY2hlZCwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGJsa19haW9fZGV0YWNoLCB2dV9ibG9ja19kZXZpY2UpOwor ICAgIHZ1X2Jsb2NrX2RldmljZS0+cnVubmluZyA9IHRydWU7CisgICAgcmV0dXJuOworCisgZXJy b3I6CisgICAgdnVfYmxvY2tfZGVpbml0KHZ1X2Jsb2NrX2RldmljZSk7Cit9CisKK3N0YXRpYyBi b29sIHZ1X3Byb3BfbW9kaWZpYWJsZShWdUJsb2NrRGV2ICp2dXMsIEVycm9yICoqZXJycCkKK3sK KyAgICBpZiAodnVzLT5ydW5uaW5nKSB7CisgICAgICAgICAgICBlcnJvcl9zZXRnKGVycnAsICJU aGUgcHJvcGVydHkgY2FuJ3QgYmUgbW9kaWZpZWQgIgorICAgICAgICAgICAgICAgICAgICAgICAi d2hpbGUgdGhlIHNlcnZlciBpcyBydW5uaW5nIik7CisgICAgICAgICAgICByZXR1cm4gZmFsc2U7 CisgICAgfQorICAgIHJldHVybiB0cnVlOworfQorCitzdGF0aWMgdm9pZCB2dV9zZXRfbm9kZV9u YW1lKE9iamVjdCAqb2JqLCBjb25zdCBjaGFyICp2YWx1ZSwgRXJyb3IgKiplcnJwKQoreworICAg IFZ1QmxvY2tEZXYgKnZ1cyA9IFZIT1NUX1VTRVJfQkxLX1NFUlZFUihvYmopOworCisgICAgaWYg KCF2dV9wcm9wX21vZGlmaWFibGUodnVzLCBlcnJwKSkgeworICAgICAgICByZXR1cm47CisgICAg fQorCisgICAgaWYgKHZ1cy0+bm9kZV9uYW1lKSB7CisgICAgICAgIGdfZnJlZSh2dXMtPm5vZGVf bmFtZSk7CisgICAgfQorCisgICAgdnVzLT5ub2RlX25hbWUgPSBnX3N0cmR1cCh2YWx1ZSk7Cit9 CisKK3N0YXRpYyBjaGFyICp2dV9nZXRfbm9kZV9uYW1lKE9iamVjdCAqb2JqLCBFcnJvciAqKmVy cnApCit7CisgICAgVnVCbG9ja0RldiAqdnVzID0gVkhPU1RfVVNFUl9CTEtfU0VSVkVSKG9iaik7 CisgICAgcmV0dXJuIGdfc3RyZHVwKHZ1cy0+bm9kZV9uYW1lKTsKK30KKworc3RhdGljIHZvaWQg ZnJlZV9zb2NrZXRfYWRkcihTb2NrZXRBZGRyZXNzICphZGRyKQoreworICAgICAgICBnX2ZyZWUo YWRkci0+dS5xX3VuaXgucGF0aCk7CisgICAgICAgIGdfZnJlZShhZGRyKTsKK30KKworc3RhdGlj IHZvaWQgdnVfc2V0X3VuaXhfc29ja2V0KE9iamVjdCAqb2JqLCBjb25zdCBjaGFyICp2YWx1ZSwK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFcnJvciAqKmVycnApCit7CisgICAgVnVC bG9ja0RldiAqdnVzID0gVkhPU1RfVVNFUl9CTEtfU0VSVkVSKG9iaik7CisKKyAgICBpZiAoIXZ1 X3Byb3BfbW9kaWZpYWJsZSh2dXMsIGVycnApKSB7CisgICAgICAgIHJldHVybjsKKyAgICB9CisK KyAgICBpZiAodnVzLT5hZGRyKSB7CisgICAgICAgIGZyZWVfc29ja2V0X2FkZHIodnVzLT5hZGRy KTsKKyAgICB9CisKKyAgICBTb2NrZXRBZGRyZXNzICphZGRyID0gZ19uZXcwKFNvY2tldEFkZHJl c3MsIDEpOworICAgIGFkZHItPnR5cGUgPSBTT0NLRVRfQUREUkVTU19UWVBFX1VOSVg7CisgICAg YWRkci0+dS5xX3VuaXgucGF0aCA9IGdfc3RyZHVwKHZhbHVlKTsKKyAgICB2dXMtPmFkZHIgPSBh ZGRyOworfQorCitzdGF0aWMgY2hhciAqdnVfZ2V0X3VuaXhfc29ja2V0KE9iamVjdCAqb2JqLCBF cnJvciAqKmVycnApCit7CisgICAgVnVCbG9ja0RldiAqdnVzID0gVkhPU1RfVVNFUl9CTEtfU0VS VkVSKG9iaik7CisgICAgcmV0dXJuIGdfc3RyZHVwKHZ1cy0+YWRkci0+dS5xX3VuaXgucGF0aCk7 Cit9CisKK3N0YXRpYyBib29sIHZ1X2dldF9ibG9ja193cml0YWJsZShPYmplY3QgKm9iaiwgRXJy b3IgKiplcnJwKQoreworICAgIFZ1QmxvY2tEZXYgKnZ1cyA9IFZIT1NUX1VTRVJfQkxLX1NFUlZF UihvYmopOworICAgIHJldHVybiB2dXMtPndyaXRhYmxlOworfQorCitzdGF0aWMgdm9pZCB2dV9z ZXRfYmxvY2tfd3JpdGFibGUoT2JqZWN0ICpvYmosIGJvb2wgdmFsdWUsIEVycm9yICoqZXJycCkK K3sKKyAgICBWdUJsb2NrRGV2ICp2dXMgPSBWSE9TVF9VU0VSX0JMS19TRVJWRVIob2JqKTsKKwor ICAgIGlmICghdnVfcHJvcF9tb2RpZmlhYmxlKHZ1cywgZXJycCkpIHsKKyAgICAgICAgICAgIHJl dHVybjsKKyAgICB9CisKKyAgICB2dXMtPndyaXRhYmxlID0gdmFsdWU7Cit9CisKK3N0YXRpYyB2 b2lkIHZ1X2dldF9ibGtfc2l6ZShPYmplY3QgKm9iaiwgVmlzaXRvciAqdiwgY29uc3QgY2hhciAq bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpvcGFxdWUsIEVycm9yICoq ZXJycCkKK3sKKyAgICBWdUJsb2NrRGV2ICp2dXMgPSBWSE9TVF9VU0VSX0JMS19TRVJWRVIob2Jq KTsKKyAgICB1aW50MzJfdCB2YWx1ZSA9IHZ1cy0+YmxrX3NpemU7CisKKyAgICB2aXNpdF90eXBl X3VpbnQzMih2LCBuYW1lLCAmdmFsdWUsIGVycnApOworfQorCitzdGF0aWMgdm9pZCB2dV9zZXRf YmxrX3NpemUoT2JqZWN0ICpvYmosIFZpc2l0b3IgKnYsIGNvbnN0IGNoYXIgKm5hbWUsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqb3BhcXVlLCBFcnJvciAqKmVycnApCit7Cisg ICAgVnVCbG9ja0RldiAqdnVzID0gVkhPU1RfVVNFUl9CTEtfU0VSVkVSKG9iaik7CisKKyAgICBF cnJvciAqbG9jYWxfZXJyID0gTlVMTDsKKyAgICB1aW50MzJfdCB2YWx1ZTsKKworICAgIGlmICgh dnVfcHJvcF9tb2RpZmlhYmxlKHZ1cywgZXJycCkpIHsKKyAgICAgICAgICAgIHJldHVybjsKKyAg ICB9CisKKyAgICB2aXNpdF90eXBlX3VpbnQzMih2LCBuYW1lLCAmdmFsdWUsICZsb2NhbF9lcnIp OworICAgIGlmIChsb2NhbF9lcnIpIHsKKyAgICAgICAgZ290byBvdXQ7CisgICAgfQorCisgICAg Y2hlY2tfYmxvY2tfc2l6ZShvYmplY3RfZ2V0X3R5cGVuYW1lKG9iaiksIG5hbWUsIHZhbHVlLCAm bG9jYWxfZXJyKTsKKyAgICBpZiAobG9jYWxfZXJyKSB7CisgICAgICAgIGdvdG8gb3V0OworICAg IH0KKworICAgIHZ1cy0+YmxrX3NpemUgPSB2YWx1ZTsKKworb3V0OgorICAgIGVycm9yX3Byb3Bh Z2F0ZShlcnJwLCBsb2NhbF9lcnIpOworfQorCitzdGF0aWMgdm9pZCB2aG9zdF91c2VyX2Jsa19z ZXJ2ZXJfaW5zdGFuY2VfZmluYWxpemUoT2JqZWN0ICpvYmopCit7CisgICAgVnVCbG9ja0RldiAq dnViID0gVkhPU1RfVVNFUl9CTEtfU0VSVkVSKG9iaik7CisKKyAgICB2aG9zdF91c2VyX2Jsa19z ZXJ2ZXJfc3RvcCh2dWIpOworCisgICAgLyoKKyAgICAgKiBVbmxpa2Ugb2JqZWN0X3Byb3BlcnR5 X2FkZF9zdHIsIG9iamVjdF9jbGFzc19wcm9wZXJ0eV9hZGRfc3RyCisgICAgICogZG9lc24ndCBo YXZlIGEgcmVsZWFzZSBtZXRob2QuIFRodXMgbWFudWFsIG1lbW9yeSBmcmVlaW5nIGlzCisgICAg ICogbmVlZGVkLgorICAgICAqLworICAgIGZyZWVfc29ja2V0X2FkZHIodnViLT5hZGRyKTsKKyAg ICBnX2ZyZWUodnViLT5ub2RlX25hbWUpOworfQorCitzdGF0aWMgdm9pZCB2aG9zdF91c2VyX2Js a19zZXJ2ZXJfY29tcGxldGUoVXNlckNyZWF0YWJsZSAqb2JqLCBFcnJvciAqKmVycnApCit7Cisg ICAgVnVCbG9ja0RldiAqdnViID0gVkhPU1RfVVNFUl9CTEtfU0VSVkVSKG9iaik7CisKKyAgICB2 aG9zdF91c2VyX2Jsa19zZXJ2ZXJfc3RhcnQodnViLCBlcnJwKTsKK30KKworc3RhdGljIHZvaWQg dmhvc3RfdXNlcl9ibGtfc2VydmVyX2NsYXNzX2luaXQoT2JqZWN0Q2xhc3MgKmtsYXNzLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdm9pZCAqY2xhc3NfZGF0 YSkKK3sKKyAgICBVc2VyQ3JlYXRhYmxlQ2xhc3MgKnVjYyA9IFVTRVJfQ1JFQVRBQkxFX0NMQVNT KGtsYXNzKTsKKyAgICB1Y2MtPmNvbXBsZXRlID0gdmhvc3RfdXNlcl9ibGtfc2VydmVyX2NvbXBs ZXRlOworCisgICAgb2JqZWN0X2NsYXNzX3Byb3BlcnR5X2FkZF9ib29sKGtsYXNzLCAid3JpdGFi bGUiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2dV9nZXRfYmxvY2tfd3Jp dGFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZ1X3NldF9ibG9ja193 cml0YWJsZSk7CisKKyAgICBvYmplY3RfY2xhc3NfcHJvcGVydHlfYWRkX3N0cihrbGFzcywgIm5v ZGUtbmFtZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnVfZ2V0X25vZGVf bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2dV9zZXRfbm9kZV9uYW1l KTsKKworICAgIG9iamVjdF9jbGFzc19wcm9wZXJ0eV9hZGRfc3RyKGtsYXNzLCAidW5peC1zb2Nr ZXQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZ1X2dldF91bml4X3NvY2tl dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2dV9zZXRfdW5peF9zb2NrZXQp OworCisgICAgb2JqZWN0X2NsYXNzX3Byb3BlcnR5X2FkZChrbGFzcywgImxvZ2ljYWwtYmxvY2st c2l6ZSIsICJ1aW50MzIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnVfZ2V0X2Js a19zaXplLCB2dV9zZXRfYmxrX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBO VUxMLCBOVUxMKTsKK30KKworc3RhdGljIGNvbnN0IFR5cGVJbmZvIHZob3N0X3VzZXJfYmxrX3Nl cnZlcl9pbmZvID0geworICAgIC5uYW1lID0gVFlQRV9WSE9TVF9VU0VSX0JMS19TRVJWRVIsCisg ICAgLnBhcmVudCA9IFRZUEVfT0JKRUNULAorICAgIC5pbnN0YW5jZV9zaXplID0gc2l6ZW9mKFZ1 QmxvY2tEZXYpLAorICAgIC5pbnN0YW5jZV9maW5hbGl6ZSA9IHZob3N0X3VzZXJfYmxrX3NlcnZl cl9pbnN0YW5jZV9maW5hbGl6ZSwKKyAgICAuY2xhc3NfaW5pdCA9IHZob3N0X3VzZXJfYmxrX3Nl cnZlcl9jbGFzc19pbml0LAorICAgIC5pbnRlcmZhY2VzID0gKEludGVyZmFjZUluZm9bXSkgewor ICAgICAgICB7VFlQRV9VU0VSX0NSRUFUQUJMRX0sCisgICAgICAgIHt9CisgICAgfSwKK307CisK K3N0YXRpYyB2b2lkIHZob3N0X3VzZXJfYmxrX3NlcnZlcl9yZWdpc3Rlcl90eXBlcyh2b2lkKQor eworICAgIHR5cGVfcmVnaXN0ZXJfc3RhdGljKCZ2aG9zdF91c2VyX2Jsa19zZXJ2ZXJfaW5mbyk7 Cit9CisKK3R5cGVfaW5pdCh2aG9zdF91c2VyX2Jsa19zZXJ2ZXJfcmVnaXN0ZXJfdHlwZXMpCmRp ZmYgLS1naXQgYS9zb2Z0bW11L3ZsLmMgYi9zb2Z0bW11L3ZsLmMKaW5kZXggNWExMWE2MmY3OC4u OWEwMWE0NzFmYiAxMDA2NDQKLS0tIGEvc29mdG1tdS92bC5jCisrKyBiL3NvZnRtbXUvdmwuYwpA QCAtMjUzOSw2ICsyNTM5LDEwIEBAIHN0YXRpYyBib29sIG9iamVjdF9jcmVhdGVfaW5pdGlhbChj b25zdCBjaGFyICp0eXBlLCBRZW11T3B0cyAqb3B0cykKICAgICB9CiAjZW5kaWYKIAorICAgIC8q IFJlYXNvbjogdmhvc3QtdXNlci1ibGstc2VydmVyIHByb3BlcnR5ICJub2RlLW5hbWUiICovCisg ICAgaWYgKGdfc3RyX2VxdWFsKHR5cGUsICJ2aG9zdC11c2VyLWJsay1zZXJ2ZXIiKSkgeworICAg ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogICAgIC8qCiAgICAgICogUmVhc29uOiBmaWx0ZXIt KiBwcm9wZXJ0eSAibmV0ZGV2IiBldGMuCiAgICAgICovCmRpZmYgLS1naXQgYS9ibG9jay9tZXNv bi5idWlsZCBiL2Jsb2NrL21lc29uLmJ1aWxkCmluZGV4IDc4ZThiMjUyMzIuLjZlNmMxZGM0Nzkg MTAwNjQ0Ci0tLSBhL2Jsb2NrL21lc29uLmJ1aWxkCisrKyBiL2Jsb2NrL21lc29uLmJ1aWxkCkBA IC02MCw2ICs2MCw3IEBAIGJsb2NrX3NzLmFkZCh3aGVuOiAnQ09ORklHX1dJTjMyJywgaWZfdHJ1 ZTogZmlsZXMoJ2ZpbGUtd2luMzIuYycsICd3aW4zMi1haW8uYycpCiBibG9ja19zcy5hZGQod2hl bjogJ0NPTkZJR19QT1NJWCcsIGlmX3RydWU6IFtmaWxlcygnZmlsZS1wb3NpeC5jJyksIGNvcmVm LCBpb2tpdF0pCiBibG9ja19zcy5hZGQod2hlbjogJ0NPTkZJR19MSUJJU0NTSScsIGlmX3RydWU6 IGZpbGVzKCdpc2NzaS1vcHRzLmMnKSkKIGJsb2NrX3NzLmFkZCh3aGVuOiAnQ09ORklHX0xJTlVY JywgaWZfdHJ1ZTogZmlsZXMoJ252bWUuYycpKQorYmxvY2tfc3MuYWRkKHdoZW46ICdDT05GSUdf TElOVVgnLCBpZl90cnVlOiBmaWxlcygnZXhwb3J0L3Zob3N0LXVzZXItYmxrLXNlcnZlci5jJywg Jy4uL2NvbnRyaWIvbGlidmhvc3QtdXNlci9saWJ2aG9zdC11c2VyLmMnKSkKIGJsb2NrX3NzLmFk ZCh3aGVuOiAnQ09ORklHX1JFUExJQ0FUSU9OJywgaWZfdHJ1ZTogZmlsZXMoJ3JlcGxpY2F0aW9u LmMnKSkKIGJsb2NrX3NzLmFkZCh3aGVuOiAnQ09ORklHX1NIRUVQRE9HJywgaWZfdHJ1ZTogZmls ZXMoJ3NoZWVwZG9nLmMnKSkKIGJsb2NrX3NzLmFkZCh3aGVuOiBbJ0NPTkZJR19MSU5VWF9BSU8n LCBsaWJhaW9dLCBpZl90cnVlOiBmaWxlcygnbGludXgtYWlvLmMnKSkKLS0gCjIuMjYuMgoK