From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [63.128.21.124]) by mx.groups.io with SMTP id smtpd.web11.15135.1609774971991679839 for ; Mon, 04 Jan 2021 07:42:52 -0800 Authentication-Results: mx.groups.io; dkim=pass header.i=@redhat.com header.s=mimecast20190719 header.b=ElIIE79D; spf=pass (domain: redhat.com, ip: 63.128.21.124, mailfrom: lersek@redhat.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1609774971; 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=HLwyKelwti6TLJYrwotFJvplQ5ak2Z+P5jKHappjUQo=; b=ElIIE79D9c8du38DVIq3kre7PEfSpJIo0vWYw769oYr7SUEtzWUFHgxeGWVhJE96SLochD qx8HtB+NhXWJDZ31nhyGtJo4Z+rqI4cGXGOIlpWYUe41PMinF2+V3U4TKFv1vmUGPYKOYe x/TIHRA4DobKRFTXxCUuNn1VG0+ZbyU= 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-250-oUcqXsOCPzybhC8EZcl_Nw-1; Mon, 04 Jan 2021 10:42:49 -0500 X-MC-Unique: oUcqXsOCPzybhC8EZcl_Nw-1 Received: from smtp.corp.redhat.com (int-mx07.intmail.prod.int.phx2.redhat.com [10.5.11.22]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 3F136145528; Mon, 4 Jan 2021 15:42:48 +0000 (UTC) Received: from lacos-laptop-7.usersys.redhat.com (ovpn-113-80.ams2.redhat.com [10.36.113.80]) by smtp.corp.redhat.com (Postfix) with ESMTP id E4E13100239A; Mon, 4 Jan 2021 15:42:46 +0000 (UTC) From: "Laszlo Ersek" To: edk2-devel-groups-io Cc: =?UTF-8?q?Philippe=20Mathieu-Daud=C3=A9?= , Ray Ni , Zhichao Gao Subject: [PATCH 4/8] ShellPkg/ShellCommandLib: add ShellSortFileList() Date: Mon, 4 Jan 2021 16:42:31 +0100 Message-Id: <20210104154235.31785-5-lersek@redhat.com> In-Reply-To: <20210104154235.31785-1-lersek@redhat.com> References: <20210104154235.31785-1-lersek@redhat.com> MIME-Version: 1.0 X-Scanned-By: MIMEDefang 2.84 on 10.5.11.22 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 SW50cm9kdWNlIHRoZSBTaGVsbFNvcnRGaWxlTGlzdCgpIGZ1bmN0aW9uLCBmb3Igc29ydGluZyBh bgpFRklfU0hFTExfRklMRV9JTkZPIGxpc3QsIGJ5IEZpbGVOYW1lIG9yIGJ5IEZ1bGxOYW1lLgoK RHVwbGljYXRlcyBjYW4gYmUga2VwdCBpbiB0aGUgc2FtZSBsaXN0LCBvciBzZXBhcmF0ZWQgb3V0 IHRvIGEgbmV3IGxpc3QuCkluIGVpdGhlciBjYXNlLCB0aGUgcmVsYXRpdmUgb3JkZXIgYmV0d2Vl biBkdXBsaWNhdGVzIGRvZXMgbm90IGNoYW5nZSAodGhlCnNvcnRpbmcgaXMgc3RhYmxlKS4KCkZv ciB0aGUgc29ydGluZywgdXNlIE9yZGVyZWRDb2xsZWN0aW9uTGliIHJhdGhlciB0aGFuIFNvcnRM aWI6CgotIFRoZSBQZXJmb3JtUXVpY2tTb3J0KCkgZnVuY3Rpb24gZnJvbSB0aGUgbGF0dGVyIGhh cyBxdWFkcmF0aWMgd29yc3QtY2FzZQogIHRpbWUgY29tcGxleGl0eSwgcGx1cyBpdCBpcyBpbXBs ZW1lbnRlZCByZWN1cnNpdmVseSAoc2VlCiAgIk1kZU1vZHVsZVBrZy9MaWJyYXJ5L1VlZmlTb3J0 TGliL1VlZmlTb3J0TGliLmMiKS4gSXQgY2FuIGFsc28gbm90CiAgcmV0dXJuIGFuIGVycm9yIG9u IG1lbW9yeSBhbGxvY2F0aW9uIGZhaWx1cmUuCgotIEluIGNvbXBhcmlzb24sIHRoZSBSZWQtQmxh Y2sgVHJlZSBpbnN0YW5jZSBvZiBPcmRlcmVkQ29sbGVjdGlvbkxpYiBzb3J0cwogIGluIE8obips b2cobikpIHdvcnN0LWNhc2UgdGltZSwgY29udGFpbnMgbm8gcmVjdXJzaW9uIHdpdGggdGhlIGRl ZmF1bHQKICBQY2RWYWxpZGF0ZU9yZGVyZWRDb2xsZWN0aW9uPUZBTFNFIHNldHRpbmcsIGFuZCB0 aGUgT3JkZXJlZENvbGxlY3Rpb25MaWIKICBjbGFzcyBBUElzIHJldHVybiBlcnJvcnMgYXBwcm9w cmlhdGVseS4KClRoZSBPcmRlcmVkQ29sbGVjdGlvbkxpYiBBUElzIGRvIG5vdCBwZXJtaXQgZHVw bGljYXRlcyBuYXRpdmVseSwgYnV0IGJ5CnVzaW5nIGxpc3RzIGFzIGNvbGxlY3Rpb24gZW50cmll cywgc3RhYmxlIHNvcnRpbmcgb2YgZHVwbGljYXRlcyBjYW4gYmUKYWNoaWV2ZWQuCgpDYzogUGhp bGlwcGUgTWF0aGlldS1EYXVkw6kgPHBoaWxtZEByZWRoYXQuY29tPgpDYzogUmF5IE5pIDxyYXku bmlAaW50ZWwuY29tPgpDYzogWmhpY2hhbyBHYW8gPHpoaWNoYW8uZ2FvQGludGVsLmNvbT4KUmVm OiBodHRwczovL2J1Z3ppbGxhLnRpYW5vY29yZS5vcmcvc2hvd19idWcuY2dpP2lkPTMxNTEKU2ln bmVkLW9mZi1ieTogTGFzemxvIEVyc2VrIDxsZXJzZWtAcmVkaGF0LmNvbT4KLS0tCiBTaGVsbFBr Zy9TaGVsbFBrZy5kc2MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAg IDEgKwogU2hlbGxQa2cvSW5jbHVkZS9MaWJyYXJ5L1NoZWxsQ29tbWFuZExpYi5oICAgICAgICAg ICAgICAgICAgIHwgIDgxICsrKysrCiBTaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbENvbW1hbmRM aWIvVWVmaVNoZWxsQ29tbWFuZExpYi5pbmYgfCAgIDEgKwogU2hlbGxQa2cvTGlicmFyeS9VZWZp U2hlbGxDb21tYW5kTGliL1VlZmlTaGVsbENvbW1hbmRMaWIuaCAgIHwgIDE5ICsrCiBTaGVsbFBr Zy9MaWJyYXJ5L1VlZmlTaGVsbENvbW1hbmRMaWIvVWVmaVNoZWxsQ29tbWFuZExpYi5jICAgfCAz MTIgKysrKysrKysrKysrKysrKysrKysKIDUgZmlsZXMgY2hhbmdlZCwgNDE0IGluc2VydGlvbnMo KykKCmRpZmYgLS1naXQgYS9TaGVsbFBrZy9TaGVsbFBrZy5kc2MgYi9TaGVsbFBrZy9TaGVsbFBr Zy5kc2MKaW5kZXggYzQyYmM5NDY0YTBmLi5hOGI2ZGUzMzQyODQgMTAwNjQ0Ci0tLSBhL1NoZWxs UGtnL1NoZWxsUGtnLmRzYworKysgYi9TaGVsbFBrZy9TaGVsbFBrZy5kc2MKQEAgLTQ3LDYgKzQ3 LDcgQEAgW0xpYnJhcnlDbGFzc2VzLmNvbW1vbl0KICAgU2hlbGxDb21tYW5kTGlifFNoZWxsUGtn L0xpYnJhcnkvVWVmaVNoZWxsQ29tbWFuZExpYi9VZWZpU2hlbGxDb21tYW5kTGliLmluZg0KICAg U2hlbGxDRW50cnlMaWJ8U2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxDRW50cnlMaWIvVWVmaVNo ZWxsQ0VudHJ5TGliLmluZg0KICAgSGFuZGxlUGFyc2luZ0xpYnxTaGVsbFBrZy9MaWJyYXJ5L1Vl ZmlIYW5kbGVQYXJzaW5nTGliL1VlZmlIYW5kbGVQYXJzaW5nTGliLmluZg0KKyAgT3JkZXJlZENv bGxlY3Rpb25MaWJ8TWRlUGtnL0xpYnJhcnkvQmFzZU9yZGVyZWRDb2xsZWN0aW9uUmVkQmxhY2tU cmVlTGliL0Jhc2VPcmRlcmVkQ29sbGVjdGlvblJlZEJsYWNrVHJlZUxpYi5pbmYNCiANCiAgIFBl Q29mZkdldEVudHJ5UG9pbnRMaWJ8TWRlUGtnL0xpYnJhcnkvQmFzZVBlQ29mZkdldEVudHJ5UG9p bnRMaWIvQmFzZVBlQ29mZkdldEVudHJ5UG9pbnRMaWIuaW5mDQogICBCY2ZnQ29tbWFuZExpYnxT aGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbEJjZmdDb21tYW5kTGliL1VlZmlTaGVsbEJjZmdDb21t YW5kTGliLmluZg0KZGlmZiAtLWdpdCBhL1NoZWxsUGtnL0luY2x1ZGUvTGlicmFyeS9TaGVsbENv bW1hbmRMaWIuaCBiL1NoZWxsUGtnL0luY2x1ZGUvTGlicmFyeS9TaGVsbENvbW1hbmRMaWIuaApp bmRleCA2M2ZjYWM4MmEyZGUuLmJjMWFmZWQ1ZTdmNSAxMDA2NDQKLS0tIGEvU2hlbGxQa2cvSW5j bHVkZS9MaWJyYXJ5L1NoZWxsQ29tbWFuZExpYi5oCisrKyBiL1NoZWxsUGtnL0luY2x1ZGUvTGli cmFyeS9TaGVsbENvbW1hbmRMaWIuaApAQCAtNzE0LDQgKzcxNCw4NSBAQCBDYXRTRHVtcEhleCAo CiAgIElOIFVJTlROICAgRGF0YVNpemUsDQogICBJTiBWT0lEICAgICpVc2VyRGF0YQ0KICAgKTsN CisNCisvLw0KKy8vIERldGVybWluZXMgdGhlIG9yZGVyaW5nIG9wZXJhdGlvbiBmb3IgU2hlbGxT b3J0RmlsZUxpc3QoKS4NCisvLw0KK3R5cGVkZWYgZW51bSB7DQorICAvLw0KKyAgLy8gU29ydCB0 aGUgRUZJX1NIRUxMX0ZJTEVfSU5GTyBvYmplY3RzIGJ5IHRoZSBGaWxlTmFtZSBmaWVsZCwgaW4g aW5jcmVhc2luZw0KKyAgLy8gb3JkZXIsIHVzaW5nIGdVbmljb2RlQ29sbGF0aW9uLT5TdHJpQ29s bCgpLg0KKyAgLy8NCisgIFNoZWxsU29ydEZpbGVMaXN0QnlGaWxlTmFtZSwNCisgIC8vDQorICAv LyBTb3J0IHRoZSBFRklfU0hFTExfRklMRV9JTkZPIG9iamVjdHMgYnkgdGhlIEZ1bGxOYW1lIGZp ZWxkLCBpbiBpbmNyZWFzaW5nDQorICAvLyBvcmRlciwgdXNpbmcgZ1VuaWNvZGVDb2xsYXRpb24t PlN0cmlDb2xsKCkuDQorICAvLw0KKyAgU2hlbGxTb3J0RmlsZUxpc3RCeUZ1bGxOYW1lLA0KKyAg U2hlbGxTb3J0RmlsZUxpc3RNYXgNCit9IFNIRUxMX1NPUlRfRklMRV9MSVNUOw0KKw0KKy8qKg0K KyAgU29ydCBhbiBFRklfU0hFTExfRklMRV9JTkZPIGxpc3QsIG9wdGlvbmFsbHkgbW92aW5nIGR1 cGxpY2F0ZXMgdG8gYSBzZXBhcmF0ZQ0KKyAgbGlzdC4NCisNCisgIEBwYXJhbVtpbixvdXRdIEZp bGVMaXN0ICBUaGUgbGlzdCBvZiBFRklfU0hFTExfRklMRV9JTkZPIG9iamVjdHMgdG8gc29ydC4N CisNCisgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiBGaWxlTGlzdCBpcyBOVUxMIG9uIGlu cHV0LCB0aGVuIEZpbGVMaXN0IGlzDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc2lk ZXJlZCBhbiBlbXB0eSwgaGVuY2UgYWxyZWFkeSBzb3J0ZWQsIGxpc3QuDQorDQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgT3RoZXJ3aXNlLCBpZiAoKkZpbGVMaXN0KSBpcyBOVUxMIG9uIGlu cHV0LCB0aGVuDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgRUZJX0lOVkFMSURfUEFSQU1F VEVSIGlzIHJldHVybmVkLg0KKw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE90aGVyd2lz ZSwgdGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSBmb3IgaGF2aW5nDQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgaW5pdGlhbGl6ZWQgKCpGaWxlTGlzdCktPkxpbmsgd2l0aA0KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIEluaXRpYWxpemVMaXN0SGVhZCgpLiBObyBvdGhlciBmaWVsZHMg aW4gdGhlDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgKCoqRmlsZUxpc3QpIGhlYWQgZWxl bWVudCBhcmUgYWNjZXNzZWQgYnkgdGhpcw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1 bmN0aW9uLg0KKw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIE9uIG91dHB1dCwgKCpGaWxl TGlzdCkgaXMgc29ydGVkIGFjY29yZGluZyB0byBPcmRlci4NCisgICAgICAgICAgICAgICAgICAg ICAgICAgICBJZiBEdXBsaWNhdGVzIGlzIE5VTEwgb24gaW5wdXQsIHRoZW4gZHVwbGljYXRlDQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbWVudHMgYXJlIHByZXNlcnZlZCwgc29ydGVk IHN0YWJseSwgb24NCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoKkZpbGVMaXN0KS4gSWYg RHVwbGljYXRlcyBpcyBub3QgTlVMTCBvbiBpbnB1dCwNCisgICAgICAgICAgICAgICAgICAgICAg ICAgICB0aGVuIGR1cGxpY2F0ZXMgYXJlIG1vdmVkIChzdGFibHkgc29ydGVkKSB0byB0aGUNCisg ICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcsIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCAoKkR1 cGxpY2F0ZXMpIGxpc3QuDQorDQorICBAcGFyYW1bb3V0XSBEdXBsaWNhdGVzICAgSWYgRHVwbGlj YXRlcyBpcyBOVUxMIG9uIGlucHV0LCAoKkZpbGVMaXN0KSB3aWxsIGJlDQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgYSBtb25vdG9uaWNhbGx5IG9yZGVyZWQgbGlzdCBvbiBvdXRwdXQsIHdp dGgNCisgICAgICAgICAgICAgICAgICAgICAgICAgICBkdXBsaWNhdGVzIHN0YWJseSBzb3J0ZWQu DQorDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgRHVwbGljYXRlcyBpcyBub3QgTlVM TCBvbiBpbnB1dCwgKCpGaWxlTGlzdCkgd2lsbA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg IGJlIGEgc3RyaWN0bHkgbW9ub3RvbmljYWxseSBvcmVkZXJlZCBsaXN0IG9uIG91dHB1dCwNCisg ICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIGR1cGxpY2F0ZXMgc2VwYXJhdGVkIChzdGFi bHkgc29ydGVkKSB0bw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICgqRHVwbGljYXRlcyku IEFsbCBmaWVsZHMgZXhjZXB0IExpbmsgd2lsbCBiZQ0KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIHplcm8taW5pdGlhbGl6ZWQgaW4gdGhlICgqKkR1cGxpY2F0ZXMpIGhlYWQgZWxlbWVudC4N CisgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiBubyBkdXBsaWNhdGVzIGV4aXN0LCB0aGVu ICgqRHVwbGljYXRlcykgaXMgc2V0IHRvDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVM TCBvbiBvdXRwdXQuDQorDQorICBAcGFyYW1baW5dIE9yZGVyICAgICAgICAgRGV0ZXJtaW5lcyB0 aGUgY29tcGFyaXNvbiBvcGVyYXRpb24gYmV0d2Vlbg0KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgIEVGSV9TSEVMTF9GSUxFX0lORk8gb2JqZWN0cy4NCisNCisgIEByZXR2YWwgRUZJX0lOVkFM SURfUEFSQU1FVEVSICAoVUlOVE4pT3JkZXIgaXMgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvDQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFVJTlROKVNoZWxsU29ydEZpbGVMaXN0 TWF4LiBOZWl0aGVyIHRoZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgqRmls ZUxpc3QpIG5vciB0aGUgKCpEdXBsaWNhdGVzKSBsaXN0IGhhcw0KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGJlZW4gbW9kaWZpZWQuDQorDQorICBAcmV0dmFsIEVGSV9JTlZBTElE X1BBUkFNRVRFUiAgKCpGaWxlTGlzdCkgd2FzIE5VTEwgb24gaW5wdXQuIE5laXRoZXIgdGhlDQor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCpGaWxlTGlzdCkgbm9yIHRoZSAoKkR1 cGxpY2F0ZXMpIGxpc3QgaGFzDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVl biBtb2RpZmllZC4NCisNCisgIEByZXR2YWwgRUZJX09VVF9PRl9SRVNPVVJDRVMgICBNZW1vcnkg YWxsb2NhdGlvbiBmYWlsZWQuIE5laXRoZXIgdGhlDQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKCpGaWxlTGlzdCkgbm9yIHRoZSAoKkR1cGxpY2F0ZXMpIGxpc3QgaGFzDQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmVlbiBtb2RpZmllZC4NCisNCisgIEByZXR2 YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgICBTb3J0aW5nIHN1Y2Nlc3NmdWwsIGluY2x1ZGluZyB0 aGUgY2FzZSB3aGVuDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmlsZUxpc3Qg aXMgTlVMTCBvbiBpbnB1dC4NCisqKi8NCitFRklfU1RBVFVTDQorRUZJQVBJDQorU2hlbGxTb3J0 RmlsZUxpc3QgKA0KKyAgSU4gT1VUIEVGSV9TSEVMTF9GSUxFX0lORk8gICoqRmlsZUxpc3QsDQor ICAgICBPVVQgRUZJX1NIRUxMX0ZJTEVfSU5GTyAgKipEdXBsaWNhdGVzIE9QVElPTkFMLA0KKyAg SU4gICAgIFNIRUxMX1NPUlRfRklMRV9MSVNUIE9yZGVyDQorICApOw0KICNlbmRpZiAvL19TSEVM TF9DT01NQU5EX0xJQl8NCmRpZmYgLS1naXQgYS9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlTaGVsbENv bW1hbmRMaWIvVWVmaVNoZWxsQ29tbWFuZExpYi5pbmYgYi9TaGVsbFBrZy9MaWJyYXJ5L1VlZmlT aGVsbENvbW1hbmRMaWIvVWVmaVNoZWxsQ29tbWFuZExpYi5pbmYKaW5kZXggYTFiNTYwMWM5NmI2 Li4wOGNhN2NiNzg4NDIgMTAwNjQ0Ci0tLSBhL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQ29t bWFuZExpYi9VZWZpU2hlbGxDb21tYW5kTGliLmluZgorKysgYi9TaGVsbFBrZy9MaWJyYXJ5L1Vl ZmlTaGVsbENvbW1hbmRMaWIvVWVmaVNoZWxsQ29tbWFuZExpYi5pbmYKQEAgLTQyLDYgKzQyLDcg QEAgW0xpYnJhcnlDbGFzc2VzXQogICBTaGVsbExpYg0KICAgSGlpTGliDQogICBIYW5kbGVQYXJz aW5nTGliDQorICBPcmRlcmVkQ29sbGVjdGlvbkxpYg0KIA0KIFtQcm90b2NvbHNdDQogICBnRWZp VW5pY29kZUNvbGxhdGlvbjJQcm90b2NvbEd1aWQgICAgICAgICAgICAgICAgICAgICAgICMjIENP TlNVTUVTDQpkaWZmIC0tZ2l0IGEvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxDb21tYW5kTGli L1VlZmlTaGVsbENvbW1hbmRMaWIuaCBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQ29tbWFu ZExpYi9VZWZpU2hlbGxDb21tYW5kTGliLmgKaW5kZXggOGVjYzJmNmJmNWEyLi4wY2EyOTFlNGY5 YmYgMTAwNjQ0Ci0tLSBhL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQ29tbWFuZExpYi9VZWZp U2hlbGxDb21tYW5kTGliLmgKKysrIGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxDb21tYW5k TGliL1VlZmlTaGVsbENvbW1hbmRMaWIuaApAQCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgPExp YnJhcnkvSGlpTGliLmg+DQogI2luY2x1ZGUgPExpYnJhcnkvVWVmaUJvb3RTZXJ2aWNlc1RhYmxl TGliLmg+DQogI2luY2x1ZGUgPExpYnJhcnkvVWVmaUxpYi5oPg0KKyNpbmNsdWRlIDxMaWJyYXJ5 L09yZGVyZWRDb2xsZWN0aW9uTGliLmg+DQogDQogdHlwZWRlZiBzdHJ1Y3R7DQogICBMSVNUX0VO VFJZICAgICAgICAgICAgICAgICAgTGluazsNCkBAIC02MCw2ICs2MSwyNCBAQCB0eXBlZGVmIHN0 cnVjdCB7CiAgIENIQVIxNiAgICAgICAgICAgICpQYXRoOw0KIH0gU0hFTExfQ09NTUFORF9GSUxF X0hBTkRMRTsNCiANCisvLw0KKy8vIENvbGxlY3RzIG11bHRpcGxlIEVGSV9TSEVMTF9GSUxFX0lO Rk8gb2JqZWN0cyB0aGF0IHNoYXJlIHRoZSBzYW1lIG5hbWUuDQorLy8NCit0eXBlZGVmIHN0cnVj dCB7DQorICAvLw0KKyAgLy8gQSBzdHJpbmcgdGhhdCBjb21wYXJlcyBlcXVhbCB0byBlaXRoZXIg dGhlIEZpbGVOYW1lIG9yIHRoZSBGdWxsTmFtZSBmaWVsZHMNCisgIC8vIG9mIGFsbCBFRklfU0hF TExfRklMRV9JTkZPIG9iamVjdHMgb24gU2FtZU5hbWVMaXN0LCBhY2NvcmRpbmcgdG8NCisgIC8v IGdVbmljb2RlQ29sbGF0aW9uLT5TdHJpQ29sbCgpLiBUaGUgc3RyaW5nIGlzIG5vdCBkeW5hbWlj YWxseSBhbGxvY2F0ZWQ7DQorICAvLyBpbnN0ZWFkLCBpdCAqYWxpYXNlcyogdGhlIEZpbGVOYW1l IG9yIEZ1bGxOYW1lIGZpZWxkIG9mIHRoZQ0KKyAgLy8gRUZJX1NIRUxMX0ZJTEVfSU5GTyBvYmpl Y3QgdGhhdCB3YXMgZmlyc3QgZW5jb3VudGVyZWQgd2l0aCB0aGlzIG5hbWUuDQorICAvLw0KKyAg Q09OU1QgQ0hBUjE2ICpBbGlhczsNCisgIC8vDQorICAvLyBBIGxpc3Qgb2YgRUZJX1NIRUxMX0ZJ TEVfSU5GTyBvYmplY3RzIHdob3NlIEZpbGVOYW1lIG9yIEZ1bGxOYW1lIGZpZWxkcw0KKyAgLy8g Y29tcGFyZSBlcXVhbCB0byBBbGlhcywgYWNjb3JkaW5nIHRvIGdVbmljb2RlQ29sbGF0aW9uLT5T dHJpQ29sbCgpLg0KKyAgLy8NCisgIExJU1RfRU5UUlkgU2FtZU5hbWVMaXN0Ow0KK30gU0hFTExf U09SVF9VTklRVUVfTkFNRTsNCiANCiAjZW5kaWYgLy9fVUVGSV9DT01NQU5EX0xJQl9JTlRFUk5B TF9IRUFERVJfDQogDQpkaWZmIC0tZ2l0IGEvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxDb21t YW5kTGliL1VlZmlTaGVsbENvbW1hbmRMaWIuYyBiL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxs Q29tbWFuZExpYi9VZWZpU2hlbGxDb21tYW5kTGliLmMKaW5kZXggMzQ1ODA4YTFlYWM2Li5iMDZk MjI1OTJkMzMgMTAwNjQ0Ci0tLSBhL1NoZWxsUGtnL0xpYnJhcnkvVWVmaVNoZWxsQ29tbWFuZExp Yi9VZWZpU2hlbGxDb21tYW5kTGliLmMKKysrIGIvU2hlbGxQa2cvTGlicmFyeS9VZWZpU2hlbGxD b21tYW5kTGliL1VlZmlTaGVsbENvbW1hbmRMaWIuYwpAQCAtMTkwOSwzICsxOTA5LDMxNSBAQCBD YXRTRHVtcEhleCAoCiANCiAgIHJldHVybiBSZXRWYWw7DQogfQ0KKw0KKy8qKg0KKyAgT1JERVJF RF9DT0xMRUNUSU9OX1VTRVJfQ09NUEFSRSBmdW5jdGlvbiBmb3IgU0hFTExfU09SVF9VTklRVUVf TkFNRSBvYmplY3RzLg0KKw0KKyAgQHBhcmFtW2luXSBVbmlxdWUxQXNWb2lkICBUaGUgZmlyc3Qg U0hFTExfU09SVF9VTklRVUVfTkFNRSBvYmplY3QgKFVuaXF1ZTEpLA0KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICBwYXNzZWQgaW4gYXMgYSBwb2ludGVyLXRvLVZPSUQuDQorDQorICBAcGFy YW1baW5dIFVuaXF1ZTJBc1ZvaWQgIFRoZSBzZWNvbmQgU0hFTExfU09SVF9VTklRVUVfTkFNRSBv YmplY3QgKFVuaXF1ZTIpLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzZWQgaW4g YXMgYSBwb2ludGVyLXRvLVZPSUQuDQorDQorICBAcmV0dmFsIDwwICBJZiBVbmlxdWUxIGNvbXBh cmVzIGxlc3MgdGhhbiBVbmlxdWUyLg0KKw0KKyAgQHJldHZhbCAgMCAgSWYgVW5pcXVlMSBjb21w YXJlcyBlcXVhbCB0byBVbmlxdWUyLg0KKw0KKyAgQHJldHZhbCA+MCAgSWYgVW5pcXVlMSBjb21w YXJlcyBncmVhdGVyIHRoYW4gVW5pcXVlMi4NCisqKi8NCitTVEFUSUMNCitJTlRODQorRUZJQVBJ DQorVW5pcXVlTmFtZUNvbXBhcmUgKA0KKyAgSU4gQ09OU1QgVk9JRCAqVW5pcXVlMUFzVm9pZCwN CisgIElOIENPTlNUIFZPSUQgKlVuaXF1ZTJBc1ZvaWQNCisgICkNCit7DQorICBDT05TVCBTSEVM TF9TT1JUX1VOSVFVRV9OQU1FICpVbmlxdWUxOw0KKyAgQ09OU1QgU0hFTExfU09SVF9VTklRVUVf TkFNRSAqVW5pcXVlMjsNCisNCisgIFVuaXF1ZTEgPSBVbmlxdWUxQXNWb2lkOw0KKyAgVW5pcXVl MiA9IFVuaXF1ZTJBc1ZvaWQ7DQorDQorICAvLw0KKyAgLy8gV2UgbmVlZCB0byBjYXN0IGF3YXkg Q09OU1QgZm9yIEVGSV9VTklDT0RFX0NPTExBVElPTl9TVFJJQ09MTC4NCisgIC8vDQorICByZXR1 cm4gZ1VuaWNvZGVDb2xsYXRpb24tPlN0cmlDb2xsICgNCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBnVW5pY29kZUNvbGxhdGlvbiwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoQ0hBUjE2ICopVW5pcXVlMS0+QWxpYXMsDQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKENIQVIxNiAqKVVuaXF1ZTItPkFsaWFzDQorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKTsNCit9DQorDQorLyoqDQorICBPUkRFUkVEX0NPTExFQ1RJT05fS0VZX0NPTVBBUkUgZnVu Y3Rpb24gZm9yIFNIRUxMX1NPUlRfVU5JUVVFX05BTUUgb2JqZWN0cy4NCisNCisgIEBwYXJhbVtp bl0gVW5pcXVlQWxpYXNBc1ZvaWQgIFRoZSBDSEFSMTYgc3RyaW5nIFVuaXF1ZUFsaWFzLCBwYXNz ZWQgaW4gYXMgYQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9pbnRlci10by1W T0lELg0KKw0KKyAgQHBhcmFtW2luXSBVbmlxdWVBc1ZvaWQgICAgICAgVGhlIFNIRUxMX1NPUlRf VU5JUVVFX05BTUUgb2JqZWN0IChVbmlxdWUpLA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcGFzc2VkIGluIGFzIGEgcG9pbnRlci10by1WT0lELg0KKw0KKyAgQHJldHZhbCA8MCAg SWYgVW5pcXVlQWxpYXMgY29tcGFyZXMgbGVzcyB0aGFuIFVuaXF1ZS0+QWxpYXMuDQorDQorICBA cmV0dmFsICAwICBJZiBVbmlxdWVBbGlhcyBjb21wYXJlcyBlcXVhbCB0byBVbmlxdWUtPkFsaWFz Lg0KKw0KKyAgQHJldHZhbCA+MCAgSWYgVW5pcXVlQWxpYXMgY29tcGFyZXMgZ3JlYXRlciB0aGFu IFVuaXF1ZS0+QWxpYXMuDQorKiovDQorU1RBVElDDQorSU5UTg0KK0VGSUFQSQ0KK1VuaXF1ZU5h bWVBbGlhc0NvbXBhcmUgKA0KKyAgSU4gQ09OU1QgVk9JRCAqVW5pcXVlQWxpYXNBc1ZvaWQsDQor ICBJTiBDT05TVCBWT0lEICpVbmlxdWVBc1ZvaWQNCisgICkNCit7DQorICBDT05TVCBDSEFSMTYg ICAgICAgICAgICAgICAgICpVbmlxdWVBbGlhczsNCisgIENPTlNUIFNIRUxMX1NPUlRfVU5JUVVF X05BTUUgKlVuaXF1ZTsNCisNCisgIFVuaXF1ZUFsaWFzID0gVW5pcXVlQWxpYXNBc1ZvaWQ7DQor ICBVbmlxdWUgICAgICA9IFVuaXF1ZUFzVm9pZDsNCisNCisgIC8vDQorICAvLyBXZSBuZWVkIHRv IGNhc3QgYXdheSBDT05TVCBmb3IgRUZJX1VOSUNPREVfQ09MTEFUSU9OX1NUUklDT0xMLg0KKyAg Ly8NCisgIHJldHVybiBnVW5pY29kZUNvbGxhdGlvbi0+U3RyaUNvbGwgKA0KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGdVbmljb2RlQ29sbGF0aW9uLA0KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChDSEFSMTYgKilVbmlxdWVBbGlhcywNCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAoQ0hBUjE2ICopVW5pcXVlLT5BbGlhcw0KKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICk7DQorfQ0KKw0KKy8qKg0KKyAgU29ydCBhbiBFRklfU0hFTExfRklMRV9JTkZP IGxpc3QsIG9wdGlvbmFsbHkgbW92aW5nIGR1cGxpY2F0ZXMgdG8gYSBzZXBhcmF0ZQ0KKyAgbGlz dC4NCisNCisgIEBwYXJhbVtpbixvdXRdIEZpbGVMaXN0ICBUaGUgbGlzdCBvZiBFRklfU0hFTExf RklMRV9JTkZPIG9iamVjdHMgdG8gc29ydC4NCisNCisgICAgICAgICAgICAgICAgICAgICAgICAg ICBJZiBGaWxlTGlzdCBpcyBOVUxMIG9uIGlucHV0LCB0aGVuIEZpbGVMaXN0IGlzDQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc2lkZXJlZCBhbiBlbXB0eSwgaGVuY2UgYWxyZWFkeSBz b3J0ZWQsIGxpc3QuDQorDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgT3RoZXJ3aXNlLCBp ZiAoKkZpbGVMaXN0KSBpcyBOVUxMIG9uIGlucHV0LCB0aGVuDQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgRUZJX0lOVkFMSURfUEFSQU1FVEVSIGlzIHJldHVybmVkLg0KKw0KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgIE90aGVyd2lzZSwgdGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSBm b3IgaGF2aW5nDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbGl6ZWQgKCpGaWxl TGlzdCktPkxpbmsgd2l0aA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEluaXRpYWxpemVM aXN0SGVhZCgpLiBObyBvdGhlciBmaWVsZHMgaW4gdGhlDQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgKCoqRmlsZUxpc3QpIGhlYWQgZWxlbWVudCBhcmUgYWNjZXNzZWQgYnkgdGhpcw0KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uLg0KKw0KKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIE9uIG91dHB1dCwgKCpGaWxlTGlzdCkgaXMgc29ydGVkIGFjY29yZGluZyB0byBP cmRlci4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiBEdXBsaWNhdGVzIGlzIE5VTEwg b24gaW5wdXQsIHRoZW4gZHVwbGljYXRlDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxl bWVudHMgYXJlIHByZXNlcnZlZCwgc29ydGVkIHN0YWJseSwgb24NCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAoKkZpbGVMaXN0KS4gSWYgRHVwbGljYXRlcyBpcyBub3QgTlVMTCBvbiBpbnB1 dCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuIGR1cGxpY2F0ZXMgYXJlIG1vdmVk IChzdGFibHkgc29ydGVkKSB0byB0aGUNCisgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXcs IGR5bmFtaWNhbGx5IGFsbG9jYXRlZCAoKkR1cGxpY2F0ZXMpIGxpc3QuDQorDQorICBAcGFyYW1b b3V0XSBEdXBsaWNhdGVzICAgSWYgRHVwbGljYXRlcyBpcyBOVUxMIG9uIGlucHV0LCAoKkZpbGVM aXN0KSB3aWxsIGJlDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgYSBtb25vdG9uaWNhbGx5 IG9yZGVyZWQgbGlzdCBvbiBvdXRwdXQsIHdpdGgNCisgICAgICAgICAgICAgICAgICAgICAgICAg ICBkdXBsaWNhdGVzIHN0YWJseSBzb3J0ZWQuDQorDQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgSWYgRHVwbGljYXRlcyBpcyBub3QgTlVMTCBvbiBpbnB1dCwgKCpGaWxlTGlzdCkgd2lsbA0K KyAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlIGEgc3RyaWN0bHkgbW9ub3RvbmljYWxseSBv cmVkZXJlZCBsaXN0IG9uIG91dHB1dCwNCisgICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRo IGR1cGxpY2F0ZXMgc2VwYXJhdGVkIChzdGFibHkgc29ydGVkKSB0bw0KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICgqRHVwbGljYXRlcykuIEFsbCBmaWVsZHMgZXhjZXB0IExpbmsgd2lsbCBi ZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHplcm8taW5pdGlhbGl6ZWQgaW4gdGhlICgq KkR1cGxpY2F0ZXMpIGhlYWQgZWxlbWVudC4NCisgICAgICAgICAgICAgICAgICAgICAgICAgICBJ ZiBubyBkdXBsaWNhdGVzIGV4aXN0LCB0aGVuICgqRHVwbGljYXRlcykgaXMgc2V0IHRvDQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCBvbiBvdXRwdXQuDQorDQorICBAcGFyYW1baW5d IE9yZGVyICAgICAgICAgRGV0ZXJtaW5lcyB0aGUgY29tcGFyaXNvbiBvcGVyYXRpb24gYmV0d2Vl bg0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEVGSV9TSEVMTF9GSUxFX0lORk8gb2JqZWN0 cy4NCisNCisgIEByZXR2YWwgRUZJX0lOVkFMSURfUEFSQU1FVEVSICAoVUlOVE4pT3JkZXIgaXMg Z3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKFVJTlROKVNoZWxsU29ydEZpbGVMaXN0TWF4LiBOZWl0aGVyIHRoZQ0KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICgqRmlsZUxpc3QpIG5vciB0aGUgKCpEdXBsaWNhdGVzKSBs aXN0IGhhcw0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlZW4gbW9kaWZpZWQu DQorDQorICBAcmV0dmFsIEVGSV9JTlZBTElEX1BBUkFNRVRFUiAgKCpGaWxlTGlzdCkgd2FzIE5V TEwgb24gaW5wdXQuIE5laXRoZXIgdGhlDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKCpGaWxlTGlzdCkgbm9yIHRoZSAoKkR1cGxpY2F0ZXMpIGxpc3QgaGFzDQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYmVlbiBtb2RpZmllZC4NCisNCisgIEByZXR2YWwgRUZJ X09VVF9PRl9SRVNPVVJDRVMgICBNZW1vcnkgYWxsb2NhdGlvbiBmYWlsZWQuIE5laXRoZXIgdGhl DQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCpGaWxlTGlzdCkgbm9yIHRoZSAo KkR1cGxpY2F0ZXMpIGxpc3QgaGFzDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg YmVlbiBtb2RpZmllZC4NCisNCisgIEByZXR2YWwgRUZJX1NVQ0NFU1MgICAgICAgICAgICBTb3J0 aW5nIHN1Y2Nlc3NmdWwsIGluY2x1ZGluZyB0aGUgY2FzZSB3aGVuDQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgRmlsZUxpc3QgaXMgTlVMTCBvbiBpbnB1dC4NCisqKi8NCitFRklf U1RBVFVTDQorRUZJQVBJDQorU2hlbGxTb3J0RmlsZUxpc3QgKA0KKyAgSU4gT1VUIEVGSV9TSEVM TF9GSUxFX0lORk8gICoqRmlsZUxpc3QsDQorICAgICBPVVQgRUZJX1NIRUxMX0ZJTEVfSU5GTyAg KipEdXBsaWNhdGVzIE9QVElPTkFMLA0KKyAgSU4gICAgIFNIRUxMX1NPUlRfRklMRV9MSVNUIE9y ZGVyDQorICApDQorew0KKyAgTElTVF9FTlRSWSAgICAgICAgICAgICAgICpGaWxlc0hlYWQ7DQor ICBPUkRFUkVEX0NPTExFQ1RJT04gICAgICAgKlNvcnQ7DQorICBMSVNUX0VOVFJZICAgICAgICAg ICAgICAgKkZpbGVFbnRyeTsNCisgIEVGSV9TSEVMTF9GSUxFX0lORk8gICAgICAqRmlsZUluZm87 DQorICBTSEVMTF9TT1JUX1VOSVFVRV9OQU1FICAgKlVuaXF1ZTsNCisgIEVGSV9TVEFUVVMgICAg ICAgICAgICAgICBTdGF0dXM7DQorICBFRklfU0hFTExfRklMRV9JTkZPICAgICAgKkR1cGVzOw0K KyAgTElTVF9FTlRSWSAgICAgICAgICAgICAgICpOZXh0RmlsZUVudHJ5Ow0KKyAgQ09OU1QgQ0hB UjE2ICAgICAgICAgICAgICpBbGlhczsNCisgIE9SREVSRURfQ09MTEVDVElPTl9FTlRSWSAqU29y dEVudHJ5Ow0KKyAgTElTVF9FTlRSWSAgICAgICAgICAgICAgICpUYXJnZXRGaWxlTGlzdDsNCisg IE9SREVSRURfQ09MTEVDVElPTl9FTlRSWSAqTmV4dFNvcnRFbnRyeTsNCisgIFZPSUQgICAgICAg ICAgICAgICAgICAgICAqVW5pcXVlQXNWb2lkOw0KKw0KKyAgaWYgKChVSU5UTilPcmRlciA+PSAo VUlOVE4pU2hlbGxTb3J0RmlsZUxpc3RNYXgpIHsNCisgICAgcmV0dXJuIEVGSV9JTlZBTElEX1BB UkFNRVRFUjsNCisgIH0NCisNCisgIGlmIChGaWxlTGlzdCA9PSBOVUxMKSB7DQorICAgIC8vDQor ICAgIC8vIEZpbGVMaXN0IGlzIGNvbnNpZGVyZWQgZW1wdHksIGhlbmNlIGFscmVhZHkgc29ydGVk LCB3aXRoIG5vIGR1cGxpY2F0ZXMuDQorICAgIC8vDQorICAgIGlmIChEdXBsaWNhdGVzICE9IE5V TEwpIHsNCisgICAgICAqRHVwbGljYXRlcyA9IE5VTEw7DQorICAgIH0NCisgICAgcmV0dXJuIEVG SV9TVUNDRVNTOw0KKyAgfQ0KKw0KKyAgaWYgKCpGaWxlTGlzdCA9PSBOVUxMKSB7DQorICAgIHJl dHVybiBFRklfSU5WQUxJRF9QQVJBTUVURVI7DQorICB9DQorICBGaWxlc0hlYWQgPSAmKCpGaWxl TGlzdCktPkxpbms7DQorDQorICAvLw0KKyAgLy8gQ29sbGVjdCBhbGwgdGhlIHVuaXF1ZSBuYW1l cy4NCisgIC8vDQorICBTb3J0ID0gT3JkZXJlZENvbGxlY3Rpb25Jbml0IChVbmlxdWVOYW1lQ29t cGFyZSwgVW5pcXVlTmFtZUFsaWFzQ29tcGFyZSk7DQorICBpZiAoU29ydCA9PSBOVUxMKSB7DQor ICAgIHJldHVybiBFRklfT1VUX09GX1JFU09VUkNFUzsNCisgIH0NCisNCisgIEJBU0VfTElTVF9G T1JfRUFDSCAoRmlsZUVudHJ5LCBGaWxlc0hlYWQpIHsNCisgICAgRmlsZUluZm8gPSAoRUZJX1NI RUxMX0ZJTEVfSU5GTyAqKUZpbGVFbnRyeTsNCisNCisgICAgLy8NCisgICAgLy8gVHJ5IHRvIHJl Y29yZCB0aGUgbmFtZSBvZiB0aGlzIGZpbGUgYXMgYSB1bmlxdWUgbmFtZS4NCisgICAgLy8NCisg ICAgVW5pcXVlID0gQWxsb2NhdGVQb29sIChzaXplb2YgKCpVbmlxdWUpKTsNCisgICAgaWYgKFVu aXF1ZSA9PSBOVUxMKSB7DQorICAgICAgU3RhdHVzID0gRUZJX09VVF9PRl9SRVNPVVJDRVM7DQor ICAgICAgZ290byBVbmluaXRTb3J0Ow0KKyAgICB9DQorICAgIFVuaXF1ZS0+QWxpYXMgPSAoKE9y ZGVyID09IFNoZWxsU29ydEZpbGVMaXN0QnlGaWxlTmFtZSkgPw0KKyAgICAgICAgICAgICAgICAg ICAgIEZpbGVJbmZvLT5GaWxlTmFtZSA6DQorICAgICAgICAgICAgICAgICAgICAgRmlsZUluZm8t PkZ1bGxOYW1lKTsNCisgICAgSW5pdGlhbGl6ZUxpc3RIZWFkICgmVW5pcXVlLT5TYW1lTmFtZUxp c3QpOw0KKw0KKyAgICBTdGF0dXMgPSBPcmRlcmVkQ29sbGVjdGlvbkluc2VydCAoU29ydCwgTlVM TCwgVW5pcXVlKTsNCisgICAgaWYgKEVGSV9FUlJPUiAoU3RhdHVzKSkgew0KKyAgICAgIC8vDQor ICAgICAgLy8gT25seSB0d28gZXJyb3JzIGFyZSBwb3NzaWJsZTogbWVtb3J5IGFsbG9jYXRpb24g ZmFpbGVkLCBvciB0aGlzIG5hbWUNCisgICAgICAvLyBoYXMgYmVlbiBlbmNvdW50ZXJlZCBiZWZv cmUuIEluIGVpdGhlciBjYXNlLCB0aGUNCisgICAgICAvLyBTSEVMTF9TT1JUX1VOSVFVRV9OQU1F IG9iamVjdCBiZWluZyBjb25zdHJ1Y3RlZCBoYXMgdG8gYmUgcmVsZWFzZWQuDQorICAgICAgLy8N CisgICAgICBGcmVlUG9vbCAoVW5pcXVlKTsNCisgICAgICAvLw0KKyAgICAgIC8vIE1lbW9yeSBh bGxvY2F0aW9uIGZhaWx1cmUgaXMgZmF0YWwsIHdoaWxlIGhhdmluZyBzZWVuIHRoZSBzYW1lIG5h bWUNCisgICAgICAvLyBiZWZvcmUgaXMgbm9ybWFsLg0KKyAgICAgIC8vDQorICAgICAgaWYgKFN0 YXR1cyA9PSBFRklfT1VUX09GX1JFU09VUkNFUykgew0KKyAgICAgICAgZ290byBVbmluaXRTb3J0 Ow0KKyAgICAgIH0NCisgICAgICBBU1NFUlQgKFN0YXR1cyA9PSBFRklfQUxSRUFEWV9TVEFSVEVE KTsNCisgICAgfQ0KKyAgfQ0KKw0KKyAgLy8NCisgIC8vIElmIHNlcGFyYXRpb24gb2YgZHVwbGlj YXRlcyBoYXMgYmVlbiByZXF1ZXN0ZWQsIGFsbG9jYXRlIHRoZSBsaXN0IGZvcg0KKyAgLy8gdGhl bS4NCisgIC8vDQorICBpZiAoRHVwbGljYXRlcyAhPSBOVUxMKSB7DQorICAgIER1cGVzID0gQWxs b2NhdGVaZXJvUG9vbCAoc2l6ZW9mICgqRHVwZXMpKTsNCisgICAgaWYgKER1cGVzID09IE5VTEwp IHsNCisgICAgICBTdGF0dXMgPSBFRklfT1VUX09GX1JFU09VUkNFUzsNCisgICAgICBnb3RvIFVu aW5pdFNvcnQ7DQorICAgIH0NCisgICAgSW5pdGlhbGl6ZUxpc3RIZWFkICgmRHVwZXMtPkxpbmsp Ow0KKyAgfQ0KKw0KKyAgLy8NCisgIC8vIE5vIG1lbW9yeSBhbGxvY2F0aW9uIGJleW9uZCB0aGlz IHBvaW50OyB0aHVzLCBubyBjaGFuY2UgdG8gZmFpbC4gV2UgY2FuDQorICAvLyBub3cgbWlncmF0 ZSB0aGUgRUZJX1NIRUxMX0ZJTEVfSU5GTyBvYmplY3RzIGZyb20gKCpGaWxlTGlzdCkgdG8gU29y dC4NCisgIC8vDQorICBCQVNFX0xJU1RfRk9SX0VBQ0hfU0FGRSAoRmlsZUVudHJ5LCBOZXh0Rmls ZUVudHJ5LCBGaWxlc0hlYWQpIHsNCisgICAgRmlsZUluZm8gPSAoRUZJX1NIRUxMX0ZJTEVfSU5G TyAqKUZpbGVFbnRyeTsNCisgICAgLy8NCisgICAgLy8gTG9vayB1cCB0aGUgU0hFTExfU09SVF9V TklRVUVfTkFNRSB0aGF0IG1hdGNoZXMgRmlsZUluZm8ncyBuYW1lLg0KKyAgICAvLw0KKyAgICBB bGlhcyA9ICgoT3JkZXIgPT0gU2hlbGxTb3J0RmlsZUxpc3RCeUZpbGVOYW1lKSA/DQorICAgICAg ICAgICAgIEZpbGVJbmZvLT5GaWxlTmFtZSA6DQorICAgICAgICAgICAgIEZpbGVJbmZvLT5GdWxs TmFtZSk7DQorICAgIFNvcnRFbnRyeSA9IE9yZGVyZWRDb2xsZWN0aW9uRmluZCAoU29ydCwgQWxp YXMpOw0KKyAgICBBU1NFUlQgKFNvcnRFbnRyeSAhPSBOVUxMKTsNCisgICAgVW5pcXVlID0gT3Jk ZXJlZENvbGxlY3Rpb25Vc2VyU3RydWN0IChTb3J0RW50cnkpOw0KKyAgICAvLw0KKyAgICAvLyBN b3ZlIEZpbGVJbmZvIGZyb20gKCpGaWxlTGlzdCkgdG8gdGhlIGVuZCBvZiB0aGUgbGlzdCBvZiBm aWxlcyB3aG9zZQ0KKyAgICAvLyBuYW1lcyBhbGwgY29tcGFyZSBpZGVudGljYWwgdG8gRmlsZUlu Zm8ncyBuYW1lLg0KKyAgICAvLw0KKyAgICBSZW1vdmVFbnRyeUxpc3QgKCZGaWxlSW5mby0+TGlu ayk7DQorICAgIEluc2VydFRhaWxMaXN0ICgmVW5pcXVlLT5TYW1lTmFtZUxpc3QsICZGaWxlSW5m by0+TGluayk7DQorICB9DQorDQorICAvLw0KKyAgLy8gQWxsIEVGSV9TSEVMTF9GSUxFX0lORk8g b2JqZWN0cyBvcmlnaW5hbGx5IGluICgqRmlsZUxpc3QpIGhhdmUgYmVlbg0KKyAgLy8gZGlzdHJp YnV0ZWQgdG8gU29ydC4gTm93IG1pZ3JhdGUgdGhlbSBiYWNrIHRvICgqRmlsZUxpc3QpLCBhZHZh bmNpbmcgaW4NCisgIC8vIHVuaXF1ZSBuYW1lIG9yZGVyLg0KKyAgLy8NCisgIGZvciAoU29ydEVu dHJ5ID0gT3JkZXJlZENvbGxlY3Rpb25NaW4gKFNvcnQpOw0KKyAgICAgICBTb3J0RW50cnkgIT0g TlVMTDsNCisgICAgICAgU29ydEVudHJ5ID0gT3JkZXJlZENvbGxlY3Rpb25OZXh0IChTb3J0RW50 cnkpKSB7DQorICAgIFVuaXF1ZSA9IE9yZGVyZWRDb2xsZWN0aW9uVXNlclN0cnVjdCAoU29ydEVu dHJ5KTsNCisgICAgLy8NCisgICAgLy8gVGhlIGZpcnN0IEZpbGVJbmZvIGVuY291bnRlcmVkIGZv ciBlYWNoIHVuaXF1ZSBuYW1lIGdvZXMgYmFjayBvbg0KKyAgICAvLyAoKkZpbGVMaXN0KSB1bmNv bmRpdGlvbmFsbHkuIEZ1cnRoZXIgRmlsZUluZm8gaW5zdGFuY2VzIGZvciB0aGUgc2FtZQ0KKyAg ICAvLyB1bmlxdWUgbmFtZSAtLSB0aGF0IGlzLCBkdXBsaWNhdGVzIC0tIGFyZSBlaXRoZXIgcmV0 dXJuZWQgdG8gKCpGaWxlTGlzdCkNCisgICAgLy8gb3Igc2VwYXJhdGVkLCBkZXBlbmRlbnQgb24g dGhlIGNhbGxlcidzIHJlcXVlc3QuDQorICAgIC8vDQorICAgIFRhcmdldEZpbGVMaXN0ID0gRmls ZXNIZWFkOw0KKyAgICBCQVNFX0xJU1RfRk9SX0VBQ0hfU0FGRSAoRmlsZUVudHJ5LCBOZXh0Rmls ZUVudHJ5LCAmVW5pcXVlLT5TYW1lTmFtZUxpc3QpIHsNCisgICAgICBSZW1vdmVFbnRyeUxpc3Qg KEZpbGVFbnRyeSk7DQorICAgICAgSW5zZXJ0VGFpbExpc3QgKFRhcmdldEZpbGVMaXN0LCBGaWxl RW50cnkpOw0KKyAgICAgIGlmIChEdXBsaWNhdGVzICE9IE5VTEwpIHsNCisgICAgICAgIFRhcmdl dEZpbGVMaXN0ID0gJkR1cGVzLT5MaW5rOw0KKyAgICAgIH0NCisgICAgfQ0KKyAgfQ0KKw0KKyAg Ly8NCisgIC8vIFdlJ3JlIGRvbmUuIElmIHNlcGFyYXRpb24gb2YgZHVwbGljYXRlcyBoYXMgYmVl biByZXF1ZXN0ZWQsIG91dHB1dCB0aGUNCisgIC8vIGxpc3Qgb2YgZHVwbGljYXRlcyAtLSBhbmQg ZnJlZSB0aGF0IGxpc3QgYXQgb25jZSwgaWYgaXQncyBlbXB0eSAoaS5lLiwgaWYNCisgIC8vIG5v IGR1cGxpY2F0ZXMgaGF2ZSBiZWVuIGZvdW5kKS4NCisgIC8vDQorICBpZiAoRHVwbGljYXRlcyAh PSBOVUxMKSB7DQorICAgIGlmIChJc0xpc3RFbXB0eSAoJkR1cGVzLT5MaW5rKSkgew0KKyAgICAg IEZyZWVQb29sIChEdXBlcyk7DQorICAgICAgKkR1cGxpY2F0ZXMgPSBOVUxMOw0KKyAgICB9IGVs c2Ugew0KKyAgICAgICpEdXBsaWNhdGVzID0gRHVwZXM7DQorICAgIH0NCisgIH0NCisgIFN0YXR1 cyA9IEVGSV9TVUNDRVNTOw0KKw0KKyAgLy8NCisgIC8vIEZhbGwgdGhyb3VnaC4NCisgIC8vDQor VW5pbml0U29ydDoNCisgIGZvciAoU29ydEVudHJ5ID0gT3JkZXJlZENvbGxlY3Rpb25NaW4gKFNv cnQpOw0KKyAgICAgICBTb3J0RW50cnkgIT0gTlVMTDsNCisgICAgICAgU29ydEVudHJ5ID0gTmV4 dFNvcnRFbnRyeSkgew0KKyAgICBOZXh0U29ydEVudHJ5ID0gT3JkZXJlZENvbGxlY3Rpb25OZXh0 IChTb3J0RW50cnkpOw0KKyAgICBPcmRlcmVkQ29sbGVjdGlvbkRlbGV0ZSAoU29ydCwgU29ydEVu dHJ5LCAmVW5pcXVlQXNWb2lkKTsNCisgICAgVW5pcXVlID0gVW5pcXVlQXNWb2lkOw0KKyAgICBB U1NFUlQgKElzTGlzdEVtcHR5ICgmVW5pcXVlLT5TYW1lTmFtZUxpc3QpKTsNCisgICAgRnJlZVBv b2wgKFVuaXF1ZSk7DQorICB9DQorICBPcmRlcmVkQ29sbGVjdGlvblVuaW5pdCAoU29ydCk7DQor DQorICByZXR1cm4gU3RhdHVzOw0KK30NCi0tIAoyLjE5LjEuMy5nMzAyNDdhYTVkMjAxCgoK