Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w9TkJ-001TAH-21 for pgsql-hackers@arkaria.postgresql.org; Sun, 05 Apr 2026 20:07:00 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w9TkI-004sY0-0P for pgsql-hackers@arkaria.postgresql.org; Sun, 05 Apr 2026 20:06:58 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w9TkH-004sXs-1T for pgsql-hackers@lists.postgresql.org; Sun, 05 Apr 2026 20:06:58 +0000 Received: from lahtoruutu.iki.fi ([2a0b:5c81:1c1::37]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1w9Tk8-00000000mVs-1rrk for pgsql-hackers@postgresql.org; Sun, 05 Apr 2026 20:06:57 +0000 Received: from [10.0.2.15] (unknown [130.41.208.1]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange x25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: hlinnaka) by lahtoruutu.iki.fi (Postfix) with ESMTPSA id 4fpk4b26wPz49Pxf; Sun, 05 Apr 2026 23:06:39 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=iki.fi; s=lahtoruutu; t=1775419602; 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: in-reply-to:in-reply-to:references:references; bh=rZrMs+qAy6e7ZU+12T4lCapHioTExt1W7VVPKRqwidk=; b=c/oBfgcLYvMdBsoI0csZhz+Onv3V2686l39ePoctIMFkGG44FckgrKsZtwBIRkAPWQjQwM yBGMwIZZu8wClan5ZY6q7A3/SV9sDx7/8KTeZBd+iclftOB58ss53Nt0qwo/PEWRcdKzT8 /h3RQ6KVV636Hn4/EAj44Aa4uUejWo9CrrHZh9fe/wfd2IzJ7De2yPzNZ1+XpxmEtz1gdx M+hC5diqO6wX86iWfWDnc/cecbGCBYymcBXEyQl5kl2QfYA4l5xCa3YHhGPdQoAJkcQ0xg 5Jgr7bgKG6uZcMnWVbaTwhA1iFd4MmXyDMYN2koyO8d+5WUtxNZq4UpW4GeCpg== ARC-Seal: i=1; a=rsa-sha256; d=iki.fi; s=lahtoruutu; cv=none; t=1775419602; b=GtsCQ30eOKR8oZzYEExOv+YsqiJv9/TkpiLBFdID5YEQl3ieAZ+5Z9VtTvqdZ76zFv39nb J22NPnlJnHy2M1kmeCvwrj5snU3yBgq1fUDM+T56IofGykbbVfDUMwUpyU16uGIywZc3st zZHgM+0Sy4q131VQXI2Cpt75B26QBxlkAa2kzays2R5ExhvoK6lLr3R/4B4s1fHwTulpbI O1y6fOsuw6IwvcN1JzCqoYP+Sz7pqghsFh93tzZX8zqgC4l3ZOljsyGkpqeHChYBBgdU68 nPhsmbvFo8d6xSYMw2TQWebgODOQsQLI/fWqrwZc4X2gfrF6oIF96MTCUYe6ew== ARC-Authentication-Results: i=1; ORIGINATING; auth=pass smtp.auth=hlinnaka smtp.mailfrom=hlinnaka@iki.fi ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=iki.fi; s=lahtoruutu; t=1775419602; 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: in-reply-to:in-reply-to:references:references; bh=rZrMs+qAy6e7ZU+12T4lCapHioTExt1W7VVPKRqwidk=; b=l1kd616b1RlJnkx9z4e8kRGnTd9vaBpkS9QAchEL31M0RgkrCbBPokkwthAXqUTW/bASeb s3h5/D+EowzPKi3HTd2ADZHsgJuMwTNnkLyY+ex4uen2pEbO2myw+FLNsPZglMGKR8PDmo vG+XDm6it+hjuhrMOgDrrtt53T+0lmssveQSIb+WtsDvUuYp9ChDgdPfioW34sYf1JL6ap QO/C3uGHXInoIaFXuAKEn40Y3YEsIpivH7GKEuvZoiVnSPOpIx5LRcfw/TMWHUfU2GIMut n+ruMSWQU0m2Nq8bc353cxHIFxD4cuKsndxFmmkseWCuhjWZrJW6l6d6e9VwGw== Content-Type: multipart/mixed; boundary="------------DjaUCGyXkgmfSYE7E2Or3PMa" Message-ID: Date: Sun, 5 Apr 2026 23:06:38 +0300 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: Better shared data structure management and resizable shared data structures To: Matthias van de Meent , Ashutosh Bapat Cc: Robert Haas , Andres Freund , pgsql-hackers , chaturvedipalak1911@gmail.com References: <113724ab-0028-493f-9605-6e8570f0939f@iki.fi> <791c3f18-f4de-4d84-ac6b-c7ccc074dd38@iki.fi> <9d919bd9-94dd-4bda-8ccf-ebced4178c53@iki.fi> <7d3ba240-9350-4dfc-bbe1-be6584aee236@iki.fi> <1c3a07a7-158d-4800-927c-2641c73277d8@iki.fi> Content-Language: en-US From: Heikki Linnakangas In-Reply-To: List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk This is a multi-part message in MIME format. --------------DjaUCGyXkgmfSYE7E2Or3PMa Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit Here's patch version 12 [*]. I believe I've addressed all the feedback, and I feel this is in pretty good shape now. There hasn't been any big design changes lately. One notable change is that I replaced the separate {request|init|attach}_fn_arg fields in ShmemCallbacks with a single 'opaque_arg' field, and added a brief comment to it. You both commented on whether we need that at all, and maybe you're right that we don't, but at least it's now just one field rather than three. As before, callers can simply ignore it if they don't need it. [*] also available at https://github.com/hlinnaka/postgres/tree/shmem-init-refactor-12 - Heikki --------------DjaUCGyXkgmfSYE7E2Or3PMa Content-Type: text/x-patch; charset=UTF-8; name="v12-0001-Move-some-code-from-shmem.c-and-shmem.h.patch" Content-Disposition: attachment; filename="v12-0001-Move-some-code-from-shmem.c-and-shmem.h.patch" Content-Transfer-Encoding: base64 RnJvbSA3Y2UzNzk2NjQ3YTg3MTAwNGZhOWUyOWVjNmZhYjg4OTA3MDFmNzQ5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFN1biwgNSBBcHIgMjAyNiAxOTo0MDozMCArMDMwMApT dWJqZWN0OiBbUEFUQ0ggdjEyIDAxLzEzXSBNb3ZlIHNvbWUgY29kZSBmcm9tIHNobWVtLmMg YW5kIHNobWVtLmgKCkEgbGl0dGxlIHJlZmFjdG9yaW5nIGluIHByZXBhcmF0aW9uIGZvciB0 aGUgbmV4dCBjb21taXQsIHRvIG1ha2UgdGhlCm1hdGVyaWFsIGNoYW5nZXMgaW4gdGhhdCBj b21taXQgbW9yZSBjbGVhci4KClJldmlld2VkLWJ5OiBBc2h1dG9zaCBCYXBhdCA8YXNodXRv c2guYmFwYXQub3NzQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IE1hdHRoaWFzIHZhbiBkZSBN ZWVudCA8Ym9la2V3dXJtK3Bvc3RncmVzQGdtYWlsLmNvbT4KRGlzY3Vzc2lvbjogaHR0cHM6 Ly93d3cucG9zdGdyZXNxbC5vcmcvbWVzc2FnZS1pZC9DQUV4SFc1dk0xYm5lTFlmZzB3R2VB YT01MlVpSjN6NHZLZDNBSjcyWDhGdzZrM0tLcmdAbWFpbC5nbWFpbC5jb20KLS0tCiBzcmMv YmFja2VuZC9wb3N0bWFzdGVyL2xhdW5jaF9iYWNrZW5kLmMgfCAgIDEgKwogc3JjL2JhY2tl bmQvc3RvcmFnZS9pcGMvTWFrZWZpbGUgICAgICAgIHwgICAxICsKIHNyYy9iYWNrZW5kL3N0 b3JhZ2UvaXBjL2lwY2kuYyAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9zdG9yYWdl L2lwYy9tZXNvbi5idWlsZCAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMv c2htZW0uYyAgICAgICAgIHwgMTE5ICstLS0tLS0tLS0tLS0tLS0tLS0tCiBzcmMvYmFja2Vu ZC9zdG9yYWdlL2lwYy9zaG1lbV9oYXNoLmMgICAgfCAxNDEgKysrKysrKysrKysrKysrKysr KysrKysrCiBzcmMvaW5jbHVkZS9zdG9yYWdlL3NobWVtLmggICAgICAgICAgICAgfCAgMjkg KystLS0KIHNyYy9pbmNsdWRlL3N0b3JhZ2Uvc2htZW1faW50ZXJuYWwuaCAgICB8ICA0MSAr KysrKysrCiA4IGZpbGVzIGNoYW5nZWQsIDE5NiBpbnNlcnRpb25zKCspLCAxMzggZGVsZXRp b25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2ht ZW1faGFzaC5jCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2luY2x1ZGUvc3RvcmFnZS9zaG1l bV9pbnRlcm5hbC5oCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9sYXVu Y2hfYmFja2VuZC5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9sYXVuY2hfYmFja2VuZC5j CmluZGV4IDQzNGUwNjQzMDIyLi4xNWIxMzZlYTI5ZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvcG9zdG1hc3Rlci9sYXVuY2hfYmFja2VuZC5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3Rt YXN0ZXIvbGF1bmNoX2JhY2tlbmQuYwpAQCAtNTAsNiArNTAsNyBAQAogI2luY2x1ZGUgInN0 b3JhZ2UvZHNtLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pb193b3JrZXIuaCIKICNpbmNsdWRl ICJzdG9yYWdlL3BnX3NobWVtLmgiCisjaW5jbHVkZSAic3RvcmFnZS9zaG1lbV9pbnRlcm5h bC5oIgogI2luY2x1ZGUgInRjb3AvYmFja2VuZF9zdGFydHVwLmgiCiAjaW5jbHVkZSAidXRp bHMvbWVtdXRpbHMuaCIKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMv TWFrZWZpbGUgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9NYWtlZmlsZQppbmRleCA5YTA3 ZjZlMWQ5Mi4uZjcxNjUzYmJlNDggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv aXBjL01ha2VmaWxlCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL01ha2VmaWxlCkBA IC0yMiw2ICsyMiw3IEBAIE9CSlMgPSBcCiAJc2htX21xLm8gXAogCXNobV90b2MubyBcCiAJ c2htZW0ubyBcCisJc2htZW1faGFzaC5vIFwKIAlzaWduYWxmdW5jcy5vIFwKIAlzaW52YWwu byBcCiAJc2ludmFsYWR0Lm8gXApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9p cGMvaXBjaS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvaXBjaS5jCmluZGV4IDdhYWI1 ZGEzMzg2Li5jYTRlNDcyNzQ4OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9p cGMvaXBjaS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYwpAQCAtNTAs NiArNTAsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3Jh Z2UvcHJvY2FycmF5LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jc2lnbmFsLmgiCisjaW5j bHVkZSAic3RvcmFnZS9zaG1lbV9pbnRlcm5hbC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc2lu dmFsYWR0LmgiCiAjaW5jbHVkZSAidXRpbHMvZ3VjLmgiCiAjaW5jbHVkZSAidXRpbHMvaW5q ZWN0aW9uX3BvaW50LmgiCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9t ZXNvbi5idWlsZCBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL21lc29uLmJ1aWxkCmluZGV4 IDljMWNhOTU0ZDlkLi5iOGMzMWUyOTk2NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3Rv cmFnZS9pcGMvbWVzb24uYnVpbGQKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvbWVz b24uYnVpbGQKQEAgLTE0LDYgKzE0LDcgQEAgYmFja2VuZF9zb3VyY2VzICs9IGZpbGVzKAog ICAnc2htX21xLmMnLAogICAnc2htX3RvYy5jJywKICAgJ3NobWVtLmMnLAorICAnc2htZW1f aGFzaC5jJywKICAgJ3NpZ25hbGZ1bmNzLmMnLAogICAnc2ludmFsLmMnLAogICAnc2ludmFs YWR0LmMnLApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htZW0uYyBi L3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVtLmMKaW5kZXggM2NiNTFhZDYyZjguLmU5 MWM0N2Q0ZDk3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5j CisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVtLmMKQEAgLTcwLDYgKzcwLDcg QEAKICNpbmNsdWRlICJzdG9yYWdlL2x3bG9jay5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcGdf c2htZW0uaCIKICNpbmNsdWRlICJzdG9yYWdlL3NobWVtLmgiCisjaW5jbHVkZSAic3RvcmFn ZS9zaG1lbV9pbnRlcm5hbC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc3Bpbi5oIgogI2luY2x1 ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRpbHMvdHVwbGVzdG9yZS5oIgpA QCAtOTYsOSArOTcsNiBAQCB0eXBlZGVmIHN0cnVjdCBTaG1lbUFsbG9jYXRvckRhdGEKIAog I2RlZmluZSBTaG1lbUluZGV4TG9jayAoJlNobWVtQWxsb2NhdG9yLT5pbmRleF9sb2NrKQog Ci1zdGF0aWMgSFRBQiAqc2htZW1faGFzaF9jcmVhdGUodm9pZCAqbG9jYXRpb24sIHNpemVf dCBzaXplLCBib29sIGZvdW5kLAotCQkJCQkJCSAgIGNvbnN0IGNoYXIgKm5hbWUsIGludDY0 IG5lbGVtcywgSEFTSENUTCAqaW5mb1AsIGludCBoYXNoX2ZsYWdzKTsKLXN0YXRpYyB2b2lk ICpTaG1lbUhhc2hBbGxvYyhTaXplIHNpemUsIHZvaWQgKmFsbG9jX2FyZyk7CiBzdGF0aWMg dm9pZCAqU2htZW1BbGxvY1JhdyhTaXplIHNpemUsIFNpemUgKmFsbG9jYXRlZF9zaXplKTsK IAogLyogc2hhcmVkIG1lbW9yeSBnbG9iYWwgdmFyaWFibGVzICovCkBAIC0xMTUsMTYgKzEx Myw2IEBAIHN0YXRpYyBib29sIGZpcnN0TnVtYVRvdWNoID0gdHJ1ZTsKIAogRGF0dW0JCXBn X251bWFfYXZhaWxhYmxlKFBHX0ZVTkNUSU9OX0FSR1MpOwogCi0vKgotICogQSB2ZXJ5IHNp bXBsZSBhbGxvY2F0b3IgdXNlZCB0byBjYXJ2ZSBvdXQgZGlmZmVyZW50IHBhcnRzIG9mIGEg aGFzaCB0YWJsZQotICogZnJvbSBhIHByZXZpb3VzbHkgYWxsb2NhdGVkIGNvbnRpZ3VvdXMg c2hhcmVkIG1lbW9yeSBhcmVhLgotICovCi10eXBlZGVmIHN0cnVjdCBzaG1lbV9oYXNoX2Fs bG9jYXRvcgotewotCWNoYXIJICAgKm5leHQ7CQkJLyogc3RhcnQgb2YgZnJlZSBzcGFjZSBp biB0aGUgYXJlYSAqLwotCWNoYXIJICAgKmVuZDsJCQkvKiBlbmQgb2YgdGhlIHNobWVtIGFy ZWEgKi8KLX0gc2htZW1faGFzaF9hbGxvY2F0b3I7Ci0KIC8qCiAgKglJbml0U2htZW1BbGxv Y2F0b3IoKSAtLS0gc2V0IHVwIGJhc2ljIHBvaW50ZXJzIHRvIHNoYXJlZCBtZW1vcnkuCiAg KgpAQCAtMjU3LDI5ICsyNDUsNiBAQCBTaG1lbUFsbG9jTm9FcnJvcihTaXplIHNpemUpCiAJ cmV0dXJuIFNobWVtQWxsb2NSYXcoc2l6ZSwgJmFsbG9jYXRlZF9zaXplKTsKIH0KIAotLyoK LSAqIFNobWVtSGFzaEFsbG9jIC0tIGFsbG9jIGNhbGxiYWNrIGZvciBzaGFyZWQgbWVtb3J5 IGhhc2ggdGFibGVzCi0gKgotICogQ2FydmUgb3V0IHRoZSBhbGxvY2F0aW9uIGZyb20gYSBw cmUtYWxsb2NhdGVkIHJlZ2lvbi4gIEFsbCBzaGFyZWQgbWVtb3J5Ci0gKiBoYXNoIHRhYmxl cyBhcmUgaW5pdGlhbGl6ZWQgd2l0aCBIQVNIX0ZJWEVEX1NJWkUsIHNvIGFsbCB0aGUgYWxs b2NhdGlvbnMKLSAqIGhhcHBlbiB1cGZyb250IGR1cmluZyBpbml0aWFsaXphdGlvbiBhbmQg bm8gbG9ja2luZyBpcyByZXF1aXJlZC4KLSAqLwotc3RhdGljIHZvaWQgKgotU2htZW1IYXNo QWxsb2MoU2l6ZSBzaXplLCB2b2lkICphbGxvY19hcmcpCi17Ci0Jc2htZW1faGFzaF9hbGxv Y2F0b3IgKmFsbG9jYXRvciA9IChzaG1lbV9oYXNoX2FsbG9jYXRvciAqKSBhbGxvY19hcmc7 Ci0Jdm9pZAkgICAqcmVzdWx0OwotCi0Jc2l6ZSA9IE1BWEFMSUdOKHNpemUpOwotCi0JaWYg KGFsbG9jYXRvci0+ZW5kIC0gYWxsb2NhdG9yLT5uZXh0IDwgc2l6ZSkKLQkJcmV0dXJuIE5V TEw7Ci0JcmVzdWx0ID0gYWxsb2NhdG9yLT5uZXh0OwotCWFsbG9jYXRvci0+bmV4dCArPSBz aXplOwotCi0JcmV0dXJuIHJlc3VsdDsKLX0KLQogLyoKICAqIFNobWVtQWxsb2NSYXcgLS0g YWxsb2NhdGUgYWxpZ24gY2h1bmsgYW5kIHJldHVybiBhbGxvY2F0ZWQgc2l6ZQogICoKQEAg LTM0MSw4OCArMzA2LDYgQEAgU2htZW1BZGRySXNWYWxpZChjb25zdCB2b2lkICphZGRyKQog CXJldHVybiAoYWRkciA+PSBTaG1lbUJhc2UpICYmIChhZGRyIDwgU2htZW1FbmQpOwogfQog Ci0vKgotICogU2htZW1Jbml0SGFzaCAtLSBDcmVhdGUgYW5kIGluaXRpYWxpemUsIG9yIGF0 dGFjaCB0bywgYQotICoJCXNoYXJlZCBtZW1vcnkgaGFzaCB0YWJsZS4KLSAqCi0gKiBXZSBh c3N1bWUgY2FsbGVyIGlzIGRvaW5nIHNvbWUga2luZCBvZiBzeW5jaHJvbml6YXRpb24KLSAq IHNvIHRoYXQgdHdvIHByb2Nlc3NlcyBkb24ndCB0cnkgdG8gY3JlYXRlL2luaXRpYWxpemUg dGhlIHNhbWUKLSAqIHRhYmxlIGF0IG9uY2UuICAoSW4gcHJhY3RpY2UsIGFsbCBjcmVhdGlv bnMgYXJlIGRvbmUgaW4gdGhlIHBvc3RtYXN0ZXIKLSAqIHByb2Nlc3M7IGNoaWxkIHByb2Nl c3NlcyBzaG91bGQgYWx3YXlzIGJlIGF0dGFjaGluZyB0byBleGlzdGluZyB0YWJsZXMuKQot ICoKLSAqIG5lbGVtcyBpcyB0aGUgbWF4aW11bSBudW1iZXIgb2YgaGFzaHRhYmxlIGVudHJp ZXMuCi0gKgotICogKmluZm9QIGFuZCBoYXNoX2ZsYWdzIG11c3Qgc3BlY2lmeSBhdCBsZWFz dCB0aGUgZW50cnkgc2l6ZXMgYW5kIGtleQotICogY29tcGFyaXNvbiBzZW1hbnRpY3MgKHNl ZSBoYXNoX2NyZWF0ZSgpKS4gIEZsYWcgYml0cyBhbmQgdmFsdWVzIHNwZWNpZmljCi0gKiB0 byBzaGFyZWQtbWVtb3J5IGhhc2ggdGFibGVzIGFyZSBhZGRlZCBoZXJlLCBleGNlcHQgdGhh dCBjYWxsZXJzIG1heQotICogY2hvb3NlIHRvIHNwZWNpZnkgSEFTSF9QQVJUSVRJT04uCi0g KgotICogTm90ZTogYmVmb3JlIFBvc3RncmVzIDkuMCwgdGhpcyBmdW5jdGlvbiByZXR1cm5l ZCBOVUxMIGZvciBzb21lIGZhaWx1cmUKLSAqIGNhc2VzLiAgTm93LCBpdCBhbHdheXMgdGhy b3dzIGVycm9yIGluc3RlYWQsIHNvIGNhbGxlcnMgbmVlZCBub3QgY2hlY2sKLSAqIGZvciBO VUxMLgotICovCi1IVEFCICoKLVNobWVtSW5pdEhhc2goY29uc3QgY2hhciAqbmFtZSwJCS8q IHRhYmxlIHN0cmluZyBuYW1lIGZvciBzaG1lbSBpbmRleCAqLwotCQkJICBpbnQ2NCBuZWxl bXMsCQkvKiBzaXplIG9mIHRoZSB0YWJsZSAqLwotCQkJICBIQVNIQ1RMICppbmZvUCwJLyog aW5mbyBhYm91dCBrZXkgYW5kIGJ1Y2tldCBzaXplICovCi0JCQkgIGludCBoYXNoX2ZsYWdz KQkvKiBpbmZvIGFib3V0IGluZm9QICovCi17Ci0JYm9vbAkJZm91bmQ7Ci0Jc2l6ZV90CQlz aXplOwotCXZvaWQJICAgKmxvY2F0aW9uOwotCi0Jc2l6ZSA9IGhhc2hfZXN0aW1hdGVfc2l6 ZShuZWxlbXMsIGluZm9QLT5lbnRyeXNpemUpOwotCi0JLyogbG9vayBpdCB1cCBpbiB0aGUg c2htZW0gaW5kZXggb3IgYWxsb2NhdGUgKi8KLQlsb2NhdGlvbiA9IFNobWVtSW5pdFN0cnVj dChuYW1lLCBzaXplLCAmZm91bmQpOwotCi0JcmV0dXJuIHNobWVtX2hhc2hfY3JlYXRlKGxv Y2F0aW9uLCBzaXplLCBmb3VuZCwKLQkJCQkJCQkgbmFtZSwgbmVsZW1zLCBpbmZvUCwgaGFz aF9mbGFncyk7Ci19Ci0KLS8qCi0gKiBJbml0aWFsaXplIG9yIGF0dGFjaCB0byBhIHNoYXJl ZCBoYXNoIHRhYmxlIGluIHRoZSBnaXZlbiBzaG1lbSByZWdpb24uCi0gKgotICogVGhpcyBp cyBleHRyYWN0ZWQgZnJvbSBTaG1lbUluaXRIYXNoKCkgdG8gYWxsb3cgSW5pdFNobWVtQWxs b2NhdG9yKCkgdG8KLSAqIHNoYXJlIHRoZSBsb2dpYyBmb3IgYm9vdHN0cmFwcGluZyB0aGUg U2htZW1JbmRleCBoYXNoIHRhYmxlLgotICovCi1zdGF0aWMgSFRBQiAqCi1zaG1lbV9oYXNo X2NyZWF0ZSh2b2lkICpsb2NhdGlvbiwgc2l6ZV90IHNpemUsIGJvb2wgZm91bmQsCi0JCQkJ ICBjb25zdCBjaGFyICpuYW1lLCBpbnQ2NCBuZWxlbXMsIEhBU0hDVEwgKmluZm9QLCBpbnQg aGFzaF9mbGFncykKLXsKLQlzaG1lbV9oYXNoX2FsbG9jYXRvciBhbGxvY2F0b3I7Ci0KLQkv KgotCSAqIEhhc2ggdGFibGVzIGFsbG9jYXRlZCBpbiBzaGFyZWQgbWVtb3J5IGhhdmUgYSBm aXhlZCBkaXJlY3RvcnkgYW5kIGhhdmUKLQkgKiBhbGwgZWxlbWVudHMgYWxsb2NhdGVkIHVw ZnJvbnQuICBXZSBkb24ndCBzdXBwb3J0IGdyb3dpbmcgYmVjYXVzZSB3ZSdkCi0JICogbmVl ZCB0byBncm93IHRoZSB1bmRlcmx5aW5nIHNobWVtIHJlZ2lvbiB3aXRoIGl0LgotCSAqCi0J ICogVGhlIHNoYXJlZCBtZW1vcnkgYWxsb2NhdG9yIG11c3QgYmUgc3BlY2lmaWVkIHRvby4K LQkgKi8KLQlpbmZvUC0+YWxsb2MgPSBTaG1lbUhhc2hBbGxvYzsKLQlpbmZvUC0+YWxsb2Nf YXJnID0gTlVMTDsKLQloYXNoX2ZsYWdzIHw9IEhBU0hfU0hBUkVEX01FTSB8IEhBU0hfQUxM T0MgfCBIQVNIX0ZJWEVEX1NJWkU7Ci0KLQkvKgotCSAqIGlmIGl0IGFscmVhZHkgZXhpc3Rz LCBhdHRhY2ggdG8gaXQgcmF0aGVyIHRoYW4gYWxsb2NhdGUgYW5kIGluaXRpYWxpemUKLQkg KiBuZXcgc3BhY2UKLQkgKi8KLQlpZiAoIWZvdW5kKQotCXsKLQkJYWxsb2NhdG9yLm5leHQg PSAoY2hhciAqKSBsb2NhdGlvbjsKLQkJYWxsb2NhdG9yLmVuZCA9IChjaGFyICopIGxvY2F0 aW9uICsgc2l6ZTsKLQkJaW5mb1AtPmFsbG9jX2FyZyA9ICZhbGxvY2F0b3I7Ci0JfQotCWVs c2UKLQl7Ci0JCS8qIFBhc3MgbG9jYXRpb24gb2YgaGFzaHRhYmxlIGhlYWRlciB0byBoYXNo X2NyZWF0ZSAqLwotCQlpbmZvUC0+aGN0bCA9IChIQVNISERSICopIGxvY2F0aW9uOwotCQlo YXNoX2ZsYWdzIHw9IEhBU0hfQVRUQUNIOwotCX0KLQotCXJldHVybiBoYXNoX2NyZWF0ZShu YW1lLCBuZWxlbXMsIGluZm9QLCBoYXNoX2ZsYWdzKTsKLX0KLQogLyoKICAqIFNobWVtSW5p dFN0cnVjdCAtLSBDcmVhdGUvYXR0YWNoIHRvIGEgc3RydWN0dXJlIGluIHNoYXJlZCBtZW1v cnkuCiAgKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htZW1faGFz aC5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htZW1faGFzaC5jCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi43MjFkZWM1YzE3ZgotLS0gL2Rldi9udWxs CisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVtX2hhc2guYwpAQCAtMCwwICsx LDE0MSBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogc2htZW1faGFzaC5jCisg KgkgIGhhc2ggdGFibGUgaW1wbGVtZW50YXRpb24gaW4gc2hhcmVkIG1lbW9yeQorICoKKyAq IFBvcnRpb25zIENvcHlyaWdodCAoYykgMTk5Ni0yMDI2LCBQb3N0Z3JlU1FMIEdsb2JhbCBE ZXZlbG9wbWVudCBHcm91cAorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk0LCBSZWdl bnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEKKyAqCisgKiBBIHNoYXJlZCBt ZW1vcnkgaGFzaCB0YWJsZSBpbXBsZW1lbnRhdGlvbiBvbiB0b3Agb2YgdGhlIG5hbWVkLCBm aXhlZC1zaXplCisgKiBzaGFyZWQgbWVtb3J5IGFyZWFzIG1hbmFnZWQgYnkgc2htZW0uYy4g IEhhc2ggdGFibGVzIGhhdmUgYSBmaXhlZCBtYXhpbXVtCisgKiBzaXplLCBidXQgdGhlaXIg YWN0dWFsIHNpemUgY2FuIHZhcnkgZHluYW1pY2FsbHkuICBXaGVuIGVudHJpZXMgYXJlIGFk ZGVkCisgKiB0byB0aGUgdGFibGUsIG1vcmUgc3BhY2UgaXMgYWxsb2NhdGVkLiAgRWFjaCBz aGFyZWQgZGF0YSBzdHJ1Y3R1cmUgYW5kIGhhc2gKKyAqIGhhcyBhIHN0cmluZyBuYW1lIHRv IGlkZW50aWZ5IGl0LgorICoKKyAqIElERU5USUZJQ0FUSU9OCisgKgkgIHNyYy9iYWNrZW5k L3N0b3JhZ2UvaXBjL3NobWVtX2hhc2guYworICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor ICovCisKKyNpbmNsdWRlICJwb3N0Z3Jlcy5oIgorCisjaW5jbHVkZSAic3RvcmFnZS9zaG1l bS5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvc2htZW1faW50ZXJuYWwuaCIKKworLyoKKyAqIEEg dmVyeSBzaW1wbGUgYWxsb2NhdG9yIHVzZWQgdG8gY2FydmUgb3V0IGRpZmZlcmVudCBwYXJ0 cyBvZiBhIGhhc2ggdGFibGUKKyAqIGZyb20gYSBwcmV2aW91c2x5IGFsbG9jYXRlZCBjb250 aWd1b3VzIHNoYXJlZCBtZW1vcnkgYXJlYS4KKyAqLwordHlwZWRlZiBzdHJ1Y3Qgc2htZW1f aGFzaF9hbGxvY2F0b3IKK3sKKwljaGFyCSAgICpuZXh0OwkJCS8qIHN0YXJ0IG9mIGZyZWUg c3BhY2UgaW4gdGhlIGFyZWEgKi8KKwljaGFyCSAgICplbmQ7CQkJLyogZW5kIG9mIHRoZSBz aG1lbSBhcmVhICovCit9IHNobWVtX2hhc2hfYWxsb2NhdG9yOworCitzdGF0aWMgdm9pZCAq U2htZW1IYXNoQWxsb2MoU2l6ZSBzaXplLCB2b2lkICphbGxvY19hcmcpOworCisvKgorICog U2htZW1Jbml0SGFzaCAtLSBDcmVhdGUgYW5kIGluaXRpYWxpemUsIG9yIGF0dGFjaCB0bywg YQorICoJCXNoYXJlZCBtZW1vcnkgaGFzaCB0YWJsZS4KKyAqCisgKiBXZSBhc3N1bWUgY2Fs bGVyIGlzIGRvaW5nIHNvbWUga2luZCBvZiBzeW5jaHJvbml6YXRpb24KKyAqIHNvIHRoYXQg dHdvIHByb2Nlc3NlcyBkb24ndCB0cnkgdG8gY3JlYXRlL2luaXRpYWxpemUgdGhlIHNhbWUK KyAqIHRhYmxlIGF0IG9uY2UuICAoSW4gcHJhY3RpY2UsIGFsbCBjcmVhdGlvbnMgYXJlIGRv bmUgaW4gdGhlIHBvc3RtYXN0ZXIKKyAqIHByb2Nlc3M7IGNoaWxkIHByb2Nlc3NlcyBzaG91 bGQgYWx3YXlzIGJlIGF0dGFjaGluZyB0byBleGlzdGluZyB0YWJsZXMuKQorICoKKyAqIG5l bGVtcyBpcyB0aGUgbWF4aW11bSBudW1iZXIgb2YgaGFzaHRhYmxlIGVudHJpZXMuCisgKgor ICogKmluZm9QIGFuZCBoYXNoX2ZsYWdzIG11c3Qgc3BlY2lmeSBhdCBsZWFzdCB0aGUgZW50 cnkgc2l6ZXMgYW5kIGtleQorICogY29tcGFyaXNvbiBzZW1hbnRpY3MgKHNlZSBoYXNoX2Ny ZWF0ZSgpKS4gIEZsYWcgYml0cyBhbmQgdmFsdWVzIHNwZWNpZmljCisgKiB0byBzaGFyZWQt bWVtb3J5IGhhc2ggdGFibGVzIGFyZSBhZGRlZCBoZXJlLCBleGNlcHQgdGhhdCBjYWxsZXJz IG1heQorICogY2hvb3NlIHRvIHNwZWNpZnkgSEFTSF9QQVJUSVRJT04uCisgKgorICogTm90 ZTogYmVmb3JlIFBvc3RncmVzIDkuMCwgdGhpcyBmdW5jdGlvbiByZXR1cm5lZCBOVUxMIGZv ciBzb21lIGZhaWx1cmUKKyAqIGNhc2VzLiAgTm93LCBpdCBhbHdheXMgdGhyb3dzIGVycm9y IGluc3RlYWQsIHNvIGNhbGxlcnMgbmVlZCBub3QgY2hlY2sKKyAqIGZvciBOVUxMLgorICov CitIVEFCICoKK1NobWVtSW5pdEhhc2goY29uc3QgY2hhciAqbmFtZSwJCS8qIHRhYmxlIHN0 cmluZyBuYW1lIGZvciBzaG1lbSBpbmRleCAqLworCQkJICBpbnQ2NCBuZWxlbXMsCQkvKiBz aXplIG9mIHRoZSB0YWJsZSAqLworCQkJICBIQVNIQ1RMICppbmZvUCwJLyogaW5mbyBhYm91 dCBrZXkgYW5kIGJ1Y2tldCBzaXplICovCisJCQkgIGludCBoYXNoX2ZsYWdzKQkvKiBpbmZv IGFib3V0IGluZm9QICovCit7CisJYm9vbAkJZm91bmQ7CisJc2l6ZV90CQlzaXplOworCXZv aWQJICAgKmxvY2F0aW9uOworCisJc2l6ZSA9IGhhc2hfZXN0aW1hdGVfc2l6ZShuZWxlbXMs IGluZm9QLT5lbnRyeXNpemUpOworCisJLyogbG9vayBpdCB1cCBpbiB0aGUgc2htZW0gaW5k ZXggb3IgYWxsb2NhdGUgKi8KKwlsb2NhdGlvbiA9IFNobWVtSW5pdFN0cnVjdChuYW1lLCBz aXplLCAmZm91bmQpOworCisJcmV0dXJuIHNobWVtX2hhc2hfY3JlYXRlKGxvY2F0aW9uLCBz aXplLCBmb3VuZCwKKwkJCQkJCQkgbmFtZSwgbmVsZW1zLCBpbmZvUCwgaGFzaF9mbGFncyk7 Cit9CisKKy8qCisgKiBJbml0aWFsaXplIG9yIGF0dGFjaCB0byBhIHNoYXJlZCBoYXNoIHRh YmxlIGluIHRoZSBnaXZlbiBzaG1lbSByZWdpb24uCisgKgorICogVGhpcyBpcyBleHRyYWN0 ZWQgZnJvbSBTaG1lbUluaXRIYXNoKCkgdG8gYWxsb3cgSW5pdFNobWVtQWxsb2NhdG9yKCkg dG8KKyAqIHNoYXJlIHRoZSBsb2dpYyBmb3IgYm9vdHN0cmFwcGluZyB0aGUgU2htZW1JbmRl eCBoYXNoIHRhYmxlLgorICovCitIVEFCICoKK3NobWVtX2hhc2hfY3JlYXRlKHZvaWQgKmxv Y2F0aW9uLCBzaXplX3Qgc2l6ZSwgYm9vbCBmb3VuZCwKKwkJCQkgIGNvbnN0IGNoYXIgKm5h bWUsIGludDY0IG5lbGVtcywgSEFTSENUTCAqaW5mb1AsIGludCBoYXNoX2ZsYWdzKQorewor CXNobWVtX2hhc2hfYWxsb2NhdG9yIGFsbG9jYXRvcjsKKworCS8qCisJICogSGFzaCB0YWJs ZXMgYWxsb2NhdGVkIGluIHNoYXJlZCBtZW1vcnkgaGF2ZSBhIGZpeGVkIGRpcmVjdG9yeSBh bmQgaGF2ZQorCSAqIGFsbCBlbGVtZW50cyBhbGxvY2F0ZWQgdXBmcm9udC4gIFdlIGRvbid0 IHN1cHBvcnQgZ3Jvd2luZyBiZWNhdXNlIHdlJ2QKKwkgKiBuZWVkIHRvIGdyb3cgdGhlIHVu ZGVybHlpbmcgc2htZW0gcmVnaW9uIHdpdGggaXQuCisJICoKKwkgKiBUaGUgc2hhcmVkIG1l bW9yeSBhbGxvY2F0b3IgbXVzdCBiZSBzcGVjaWZpZWQgdG9vLgorCSAqLworCWluZm9QLT5h bGxvYyA9IFNobWVtSGFzaEFsbG9jOworCWluZm9QLT5hbGxvY19hcmcgPSBOVUxMOworCWhh c2hfZmxhZ3MgfD0gSEFTSF9TSEFSRURfTUVNIHwgSEFTSF9BTExPQyB8IEhBU0hfRklYRURf U0laRTsKKworCS8qCisJICogaWYgaXQgYWxyZWFkeSBleGlzdHMsIGF0dGFjaCB0byBpdCBy YXRoZXIgdGhhbiBhbGxvY2F0ZSBhbmQgaW5pdGlhbGl6ZQorCSAqIG5ldyBzcGFjZQorCSAq LworCWlmICghZm91bmQpCisJeworCQlhbGxvY2F0b3IubmV4dCA9IChjaGFyICopIGxvY2F0 aW9uOworCQlhbGxvY2F0b3IuZW5kID0gKGNoYXIgKikgbG9jYXRpb24gKyBzaXplOworCQlp bmZvUC0+YWxsb2NfYXJnID0gJmFsbG9jYXRvcjsKKwl9CisJZWxzZQorCXsKKwkJLyogUGFz cyBsb2NhdGlvbiBvZiBoYXNodGFibGUgaGVhZGVyIHRvIGhhc2hfY3JlYXRlICovCisJCWlu Zm9QLT5oY3RsID0gKEhBU0hIRFIgKikgbG9jYXRpb247CisJCWhhc2hfZmxhZ3MgfD0gSEFT SF9BVFRBQ0g7CisJfQorCisJcmV0dXJuIGhhc2hfY3JlYXRlKG5hbWUsIG5lbGVtcywgaW5m b1AsIGhhc2hfZmxhZ3MpOworfQorCisvKgorICogU2htZW1IYXNoQWxsb2MgLS0gYWxsb2Mg Y2FsbGJhY2sgZm9yIHNoYXJlZCBtZW1vcnkgaGFzaCB0YWJsZXMKKyAqCisgKiBDYXJ2ZSBv dXQgdGhlIGFsbG9jYXRpb24gZnJvbSBhIHByZS1hbGxvY2F0ZWQgcmVnaW9uLiAgQWxsIHNo YXJlZCBtZW1vcnkKKyAqIGhhc2ggdGFibGVzIGFyZSBpbml0aWFsaXplZCB3aXRoIEhBU0hf RklYRURfU0laRSwgc28gYWxsIHRoZSBhbGxvY2F0aW9ucworICogaGFwcGVuIHVwZnJvbnQg ZHVyaW5nIGluaXRpYWxpemF0aW9uIGFuZCBubyBsb2NraW5nIGlzIHJlcXVpcmVkLgorICov CitzdGF0aWMgdm9pZCAqCitTaG1lbUhhc2hBbGxvYyhTaXplIHNpemUsIHZvaWQgKmFsbG9j X2FyZykKK3sKKwlzaG1lbV9oYXNoX2FsbG9jYXRvciAqYWxsb2NhdG9yID0gKHNobWVtX2hh c2hfYWxsb2NhdG9yICopIGFsbG9jX2FyZzsKKwl2b2lkCSAgICpyZXN1bHQ7CisKKwlzaXpl ID0gTUFYQUxJR04oc2l6ZSk7CisKKwlpZiAoYWxsb2NhdG9yLT5lbmQgLSBhbGxvY2F0b3It Pm5leHQgPCBzaXplKQorCQlyZXR1cm4gTlVMTDsKKwlyZXN1bHQgPSBhbGxvY2F0b3ItPm5l eHQ7CisJYWxsb2NhdG9yLT5uZXh0ICs9IHNpemU7CisKKwlyZXR1cm4gcmVzdWx0OworfQpk aWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9zaG1lbS5oIGIvc3JjL2luY2x1ZGUv c3RvcmFnZS9zaG1lbS5oCmluZGV4IGEyZWI0OTlkNjNjLi44MWQwNTM4MWY4ZiAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9zaG1lbS5oCisrKyBiL3NyYy9pbmNsdWRlL3N0 b3JhZ2Uvc2htZW0uaApAQCAtMyw2ICszLDExIEBACiAgKiBzaG1lbS5oCiAgKgkgIHNoYXJl ZCBtZW1vcnkgbWFuYWdlbWVudCBzdHJ1Y3R1cmVzCiAgKgorICogVGhpcyBmaWxlIGNvbnRh aW5zIHB1YmxpYyBmdW5jdGlvbnMgZm9yIG90aGVyIGNvcmUgc3Vic3lzdGVtcyBhbmQKKyAq IGV4dGVuc2lvbnMgdG8gYWxsb2NhdGUgc2hhcmVkIG1lbW9yeS4gIEludGVybmFsIGZ1bmN0 aW9ucyBmb3IgdGhlIHNobWVtCisgKiBhbGxvY2F0b3IgaXRzZWxmIGFuZCBob29raW5nIGl0 IHRvIHRoZSByZXN0IG9mIHRoZSBzeXN0ZW0gYXJlIGluCisgKiBzaG1lbV9pbnRlcm5hbC5o CisgKgogICogSGlzdG9yaWNhbCBub3RlOgogICogQSBsb25nIHRpbWUgYWdvLCBQb3N0Z3Jl cycgc2hhcmVkIG1lbW9yeSByZWdpb24gd2FzIGFsbG93ZWQgdG8gYmUgbWFwcGVkCiAgKiBh dCBhIGRpZmZlcmVudCBhZGRyZXNzIGluIGVhY2ggcHJvY2VzcywgYW5kIHNoYXJlZCBtZW1v cnkgInBvaW50ZXJzIiB3ZXJlCkBAIC0yNSwzNiArMzAsMjAgQEAKIAogCiAvKiBzaG1lbS5j ICovCi10eXBlZGVmIHN0cnVjdCBQR1NobWVtSGVhZGVyIFBHU2htZW1IZWFkZXI7IC8qIGF2 b2lkIGluY2x1ZGluZwotCQkJCQkJCQkJCQkgKiBzdG9yYWdlL3BnX3NobWVtLmggaGVyZSAq LwotZXh0ZXJuIHZvaWQgSW5pdFNobWVtQWxsb2NhdG9yKFBHU2htZW1IZWFkZXIgKnNlZ2hk cik7CiBleHRlcm4gdm9pZCAqU2htZW1BbGxvYyhTaXplIHNpemUpOwogZXh0ZXJuIHZvaWQg KlNobWVtQWxsb2NOb0Vycm9yKFNpemUgc2l6ZSk7CiBleHRlcm4gYm9vbCBTaG1lbUFkZHJJ c1ZhbGlkKGNvbnN0IHZvaWQgKmFkZHIpOwotZXh0ZXJuIEhUQUIgKlNobWVtSW5pdEhhc2go Y29uc3QgY2hhciAqbmFtZSwgaW50NjQgbmVsZW1zLAotCQkJCQkJICAgSEFTSENUTCAqaW5m b1AsIGludCBoYXNoX2ZsYWdzKTsKIGV4dGVybiB2b2lkICpTaG1lbUluaXRTdHJ1Y3QoY29u c3QgY2hhciAqbmFtZSwgU2l6ZSBzaXplLCBib29sICpmb3VuZFB0cik7CiBleHRlcm4gU2l6 ZSBhZGRfc2l6ZShTaXplIHMxLCBTaXplIHMyKTsKIGV4dGVybiBTaXplIG11bF9zaXplKFNp emUgczEsIFNpemUgczIpOwogCiBleHRlcm4gUEdETExJTVBPUlQgU2l6ZSBwZ19nZXRfc2ht ZW1fcGFnZXNpemUodm9pZCk7CiAKKy8qIHNobWVtX2hhc2guYyAqLworZXh0ZXJuIEhUQUIg KlNobWVtSW5pdEhhc2goY29uc3QgY2hhciAqbmFtZSwgaW50NjQgbmVsZW1zLAorCQkJCQkJ ICAgSEFTSENUTCAqaW5mb1AsIGludCBoYXNoX2ZsYWdzKTsKKwogLyogaXBjaS5jICovCiBl eHRlcm4gdm9pZCBSZXF1ZXN0QWRkaW5TaG1lbVNwYWNlKFNpemUgc2l6ZSk7CiAKLS8qIHNp emUgY29uc3RhbnRzIGZvciB0aGUgc2htZW0gaW5kZXggdGFibGUgKi8KLSAvKiBtYXggc2l6 ZSBvZiBkYXRhIHN0cnVjdHVyZSBzdHJpbmcgbmFtZSAqLwotI2RlZmluZSBTSE1FTV9JTkRF WF9LRVlTSVpFCQkgKDQ4KQotIC8qIG1heCBudW1iZXIgb2YgbmFtZWQgc2htZW0gc3RydWN0 dXJlcyBhbmQgaGFzaCB0YWJsZXMgKi8KLSNkZWZpbmUgU0hNRU1fSU5ERVhfU0laRQkJICgy NTYpCi0KLS8qIHRoaXMgaXMgYSBoYXNoIGJ1Y2tldCBpbiB0aGUgc2htZW0gaW5kZXggdGFi bGUgKi8KLXR5cGVkZWYgc3RydWN0Ci17Ci0JY2hhcgkJa2V5W1NITUVNX0lOREVYX0tFWVNJ WkVdOwkvKiBzdHJpbmcgbmFtZSAqLwotCXZvaWQJICAgKmxvY2F0aW9uOwkJLyogbG9jYXRp b24gaW4gc2hhcmVkIG1lbSAqLwotCVNpemUJCXNpemU7CQkJLyogIyBieXRlcyByZXF1ZXN0 ZWQgZm9yIHRoZSBzdHJ1Y3R1cmUgKi8KLQlTaXplCQlhbGxvY2F0ZWRfc2l6ZTsgLyogIyBi eXRlcyBhY3R1YWxseSBhbGxvY2F0ZWQgKi8KLX0gU2htZW1JbmRleEVudDsKLQogI2VuZGlm CQkJCQkJCS8qIFNITUVNX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uv c2htZW1faW50ZXJuYWwuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc2htZW1faW50ZXJuYWwu aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZTA2MzgxMzU2MzkK LS0tIC9kZXYvbnVsbAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3NobWVtX2ludGVybmFs LmgKQEAgLTAsMCArMSw0MSBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogc2ht ZW1faW50ZXJuYWwuaAorICoJICBJbnRlcm5hbCBmdW5jdGlvbnMgcmVsYXRlZCB0byBzaG1l bSBhbGxvY2F0aW9uCisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk2LTIwMjYs IFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKiBQb3J0aW9ucyBDb3B5 cmlnaHQgKGMpIDE5OTQsIFJlZ2VudHMgb2YgdGhlIFVuaXZlcnNpdHkgb2YgQ2FsaWZvcm5p YQorICoKKyAqIHNyYy9pbmNsdWRlL3N0b3JhZ2Uvc2htZW1faW50ZXJuYWwuaAorICoKKyAq LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjaWZuZGVmIFNITUVNX0lOVEVSTkFMX0gKKyNk ZWZpbmUgU0hNRU1fSU5URVJOQUxfSAorCisjaW5jbHVkZSAic3RvcmFnZS9zaG1lbS5oIgor I2luY2x1ZGUgInV0aWxzL2hzZWFyY2guaCIKKwordHlwZWRlZiBzdHJ1Y3QgUEdTaG1lbUhl YWRlciBQR1NobWVtSGVhZGVyOyAvKiBhdm9pZCBpbmNsdWRpbmcKKwkJCQkJCQkJCQkJICog c3RvcmFnZS9wZ19zaG1lbS5oIGhlcmUgKi8KK2V4dGVybiB2b2lkIEluaXRTaG1lbUFsbG9j YXRvcihQR1NobWVtSGVhZGVyICpzZWdoZHIpOworCitleHRlcm4gSFRBQiAqc2htZW1faGFz aF9jcmVhdGUodm9pZCAqbG9jYXRpb24sIHNpemVfdCBzaXplLCBib29sIGZvdW5kLAorCQkJ CQkJCSAgIGNvbnN0IGNoYXIgKm5hbWUsIGludDY0IG5lbGVtcywgSEFTSENUTCAqaW5mb1As IGludCBoYXNoX2ZsYWdzKTsKKworLyogc2l6ZSBjb25zdGFudHMgZm9yIHRoZSBzaG1lbSBp bmRleCB0YWJsZSAqLworIC8qIG1heCBzaXplIG9mIGRhdGEgc3RydWN0dXJlIHN0cmluZyBu YW1lICovCisjZGVmaW5lIFNITUVNX0lOREVYX0tFWVNJWkUJCSAoNDgpCisgLyogbWF4IG51 bWJlciBvZiBuYW1lZCBzaG1lbSBzdHJ1Y3R1cmVzIGFuZCBoYXNoIHRhYmxlcyAqLworI2Rl ZmluZSBTSE1FTV9JTkRFWF9TSVpFCQkgKDI1NikKKworLyogdGhpcyBpcyBhIGhhc2ggYnVj a2V0IGluIHRoZSBzaG1lbSBpbmRleCB0YWJsZSAqLwordHlwZWRlZiBzdHJ1Y3QKK3sKKwlj aGFyCQlrZXlbU0hNRU1fSU5ERVhfS0VZU0laRV07CS8qIHN0cmluZyBuYW1lICovCisJdm9p ZAkgICAqbG9jYXRpb247CQkvKiBsb2NhdGlvbiBpbiBzaGFyZWQgbWVtICovCisJU2l6ZQkJ c2l6ZTsJCQkvKiAjIGJ5dGVzIHJlcXVlc3RlZCBmb3IgdGhlIHN0cnVjdHVyZSAqLworCVNp emUJCWFsbG9jYXRlZF9zaXplOyAvKiAjIGJ5dGVzIGFjdHVhbGx5IGFsbG9jYXRlZCAqLwor fSBTaG1lbUluZGV4RW50OworCisjZW5kaWYJCQkJCQkJLyogU0hNRU1fSU5URVJOQUxfSCAq LwotLSAKMi40Ny4zCgo= --------------DjaUCGyXkgmfSYE7E2Or3PMa Content-Type: text/x-patch; charset=UTF-8; name="v12-0002-Introduce-a-new-mechanism-for-registering-shared.patch" Content-Disposition: attachment; filename*0="v12-0002-Introduce-a-new-mechanism-for-registering-shared.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAxMDY1NDIwMjQ2ZDNkMzg4NWE0ZmE4NTA5MTZhOGEzNTg0OGQ1YzliIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFN1biwgNSBBcHIgMjAyNiAyMzowMzoyMCArMDMwMApT dWJqZWN0OiBbUEFUQ0ggdjEyIDAyLzEzXSBJbnRyb2R1Y2UgYSBuZXcgbWVjaGFuaXNtIGZv ciByZWdpc3RlcmluZyBzaGFyZWQKIG1lbW9yeSBhcmVhcwoKVGhpcyByZXBsYWNlcyB0aGUg W1N1YnN5c3RlbV1TaG1lbVNpemUoKSBhbmQgW1N1YnN5c3RlbV1TaG1lbUluaXQoKQpmdW5j dGlvbnMgY2FsbGVkIGF0IHBvc3RtYXN0ZXIgc3RhcnR1cCB3aXRoIGEgbmV3IHNldCBvZgpj YWxsYmFja3MuIFRoZSBuZXcgbWVjaGFuaXNtIGlzIGRlc2lnbmVkIHRvIGJlIG1vcmUKZXJn b25vbWljLiBOb3RhYmx5LCB0aGUgc2l6ZSBvZiBlYWNoIHNobWVtIGFyZWEgaXMgc3BlY2lm aWVkIGluIHRoZQpzYW1lIFNobWVtUmVxdWVzdFN0cnVjdCgpIGNhbGwsIHRvZ2V0aGVyIHdp dGggaXRzIG5hbWUuIFRoZSBzYW1lCm1lY2hhbmlzbSBpcyB1c2VkIGluIGV4dGVuc2lvbnMs IHJlcGxhY2luZyB0aGUKc2htZW1fe3JlcXVlc3Qvc3RhcnR1cH1faG9va3MuCgpTaG1lbUlu aXRTdHJ1Y3QoKSBhbmQgU2htZW1Jbml0SGFzaCgpIGJlY29tZSBiYWNrd2FyZHMtY29tcGF0 aWJpbGl0eQp3cmFwcGVycyBhcm91bmQgdGhlIG5ldyBmdW5jdGlvbnMuIEluIGZ1dHVyZSBj b21taXRzLCBJIHdpbGwgcmVwbGFjZQphbGwgU2htZW1Jbml0U3RydWN0KCkgYW5kIFNobWVt SW5pdEhhc2goKSBjYWxscyB3aXRoIHRoZSBuZXcKZnVuY3Rpb25zLCBhbHRob3VnaCB3ZSds bCBzdGlsbCBuZWVkIHRvIGtlZXAgdGhlbSBhcm91bmQgZm9yCmV4dGVuc2lvbnMuCgpDby1h dXRob3JlZC1ieTogQXNodXRvc2ggQmFwYXQgPGFzaHV0b3NoLmJhcGF0Lm9zc0BnbWFpbC5j b20+ClJldmlld2VkLWJ5OiBNYXR0aGlhcyB2YW4gZGUgTWVlbnQgPGJvZWtld3VybStwb3N0 Z3Jlc0BnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBac29sdCBQYXJyYWdpIDx6c29sdC5wYXJy YWdpQHBlcmNvbmEuY29tPgpSZXZpZXdlZC1ieTogUm9iZXJ0IEhhYXMgPHJvYmVydG1oYWFz QGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IERhbmllbCBHdXN0YWZzc29uIDxkYW5pZWxAeWVz cWwuc2U+CkRpc2N1c3Npb246IGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2Ut aWQvQ0FFeEhXNXZNMWJuZUxZZmcwd0dlQWE9NTJVaUozejR2S2QzQUo3Mlg4Rnc2azNLS3Jn QG1haWwuZ21haWwuY29tCi0tLQogZG9jL3NyYy9zZ21sL3N5c3RlbS12aWV3cy5zZ21sICAg ICAgICAgIHwgICA0ICstCiBkb2Mvc3JjL3NnbWwveGZ1bmMuc2dtbCAgICAgICAgICAgICAg ICAgfCAxNjIgKysrLS0KIHNyYy9iYWNrZW5kL2Jvb3RzdHJhcC9ib290c3RyYXAuYyAgICAg ICB8ICAgMiArCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL2xhdW5jaF9iYWNrZW5kLmMgfCAg IDQgKwogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wb3N0bWFzdGVyLmMgICAgIHwgIDE5ICst CiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9pcGNpLmMgICAgICAgICAgfCAgMjkgKy0KIHNy Yy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVtLmMgICAgICAgICB8IDgyNiArKysrKysrKysr KysrKysrKysrKystLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVtX2hhc2guYyAg ICB8ICA4NSArKy0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMgICAgICAgICB8 ICAgMyArCiBzcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgICAgICAgICAgICAgfCAgMTAg Ky0KIHNyYy9iYWNrZW5kL3V0aWxzL2hhc2gvZHluYWhhc2guYyAgICAgICB8ICAgNCArLQog c3JjL2luY2x1ZGUvc3RvcmFnZS9zaG1lbS5oICAgICAgICAgICAgIHwgMTYwICsrKystCiBz cmMvaW5jbHVkZS9zdG9yYWdlL3NobWVtX2ludGVybmFsLmggICAgfCAgNDEgKy0KIHNyYy90 b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICAgICB8ICAgOSArLQogMTQgZmlsZXMg Y2hhbmdlZCwgMTE1NSBpbnNlcnRpb25zKCspLCAyMDMgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvZG9jL3NyYy9zZ21sL3N5c3RlbS12aWV3cy5zZ21sIGIvZG9jL3NyYy9zZ21sL3N5 c3RlbS12aWV3cy5zZ21sCmluZGV4IDllZTFhMmJmYzZhLi4yZWJlYzY5MjhkNSAxMDA2NDQK LS0tIGEvZG9jL3NyYy9zZ21sL3N5c3RlbS12aWV3cy5zZ21sCisrKyBiL2RvYy9zcmMvc2dt bC9zeXN0ZW0tdmlld3Muc2dtbApAQCAtNDI1NCw4ICs0MjU0LDggQEAgU0VMRUNUICogRlJP TSBwZ19sb2NrcyBwbCBMRUZUIEpPSU4gcGdfcHJlcGFyZWRfeGFjdHMgcHB4CiAgIDxwYXJh PgogICAgQW5vbnltb3VzIGFsbG9jYXRpb25zIGFyZSBhbGxvY2F0aW9ucyB0aGF0IGhhdmUg YmVlbiBtYWRlCiAgICB3aXRoIDxsaXRlcmFsPlNobWVtQWxsb2MoKTwvbGl0ZXJhbD4gZGly ZWN0bHksIHJhdGhlciB0aGFuIHZpYQotICAgPGxpdGVyYWw+U2htZW1Jbml0U3RydWN0KCk8 L2xpdGVyYWw+IG9yCi0gICA8bGl0ZXJhbD5TaG1lbUluaXRIYXNoKCk8L2xpdGVyYWw+Lgor ICAgPGxpdGVyYWw+U2htZW1SZXF1ZXN0U3RydWN0KCk8L2xpdGVyYWw+IG9yCisgICA8bGl0 ZXJhbD5TaG1lbVJlcXVlc3RIYXNoKCk8L2xpdGVyYWw+LgogICA8L3BhcmE+CiAKICAgPHBh cmE+CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwveGZ1bmMuc2dtbCBiL2RvYy9zcmMvc2dt bC94ZnVuYy5zZ21sCmluZGV4IDcwZTgxNWI4YTJjLi5hZWQzZjJmMDA3MSAxMDA2NDQKLS0t IGEvZG9jL3NyYy9zZ21sL3hmdW5jLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3hmdW5jLnNn bWwKQEAgLTM2MjgsNzEgKzM2MjgsMTMyIEBAIENSRUFURSBGVU5DVElPTiBtYWtlX2FycmF5 KGFueWVsZW1lbnQpIFJFVFVSTlMgYW55YXJyYXkKICAgICAgIEFkZC1pbnMgY2FuIHJlc2Vy dmUgc2hhcmVkIG1lbW9yeSBvbiBzZXJ2ZXIgc3RhcnR1cC4gIFRvIGRvIHNvLCB0aGUKICAg ICAgIGFkZC1pbidzIHNoYXJlZCBsaWJyYXJ5IG11c3QgYmUgcHJlbG9hZGVkIGJ5IHNwZWNp ZnlpbmcgaXQgaW4KICAgICAgIDx4cmVmIGxpbmtlbmQ9Imd1Yy1zaGFyZWQtcHJlbG9hZC1s aWJyYXJpZXMiLz48aW5kZXh0ZXJtPjxwcmltYXJ5PnNoYXJlZF9wcmVsb2FkX2xpYnJhcmll czwvcHJpbWFyeT48L2luZGV4dGVybT4uCi0gICAgICBUaGUgc2hhcmVkIGxpYnJhcnkgc2hv dWxkIGFsc28gcmVnaXN0ZXIgYQotICAgICAgPGxpdGVyYWw+c2htZW1fcmVxdWVzdF9ob29r PC9saXRlcmFsPiBpbiBpdHMKLSAgICAgIDxmdW5jdGlvbj5fUEdfaW5pdDwvZnVuY3Rpb24+ IGZ1bmN0aW9uLiAgVGhpcwotICAgICAgPGxpdGVyYWw+c2htZW1fcmVxdWVzdF9ob29rPC9s aXRlcmFsPiBjYW4gcmVzZXJ2ZSBzaGFyZWQgbWVtb3J5IGJ5Ci0gICAgICBjYWxsaW5nOgor ICAgICAgVGhlIHNoYXJlZCBsaWJyYXJ5IHNob3VsZCByZWdpc3RlciBjYWxsYmFja3MgaW4K KyAgICAgIGl0cyA8ZnVuY3Rpb24+X1BHX2luaXQ8L2Z1bmN0aW9uPiBmdW5jdGlvbiwgd2hp Y2ggdGhlbiBnZXQgY2FsbGVkIGF0IHRoZQorICAgICAgcmlnaHQgc3RhZ2VzIG9mIHRoZSBz eXN0ZW0gc3RhcnR1cCB0byBpbml0aWFsaXplIHRoZSBzaGFyZWQgbWVtb3J5LgorICAgICAg SGVyZSBpcyBhbiBleGFtcGxlOgogPHByb2dyYW1saXN0aW5nPgotdm9pZCBSZXF1ZXN0QWRk aW5TaG1lbVNwYWNlKFNpemUgc2l6ZSkKLTwvcHJvZ3JhbWxpc3Rpbmc+Ci0gICAgICBFYWNo IGJhY2tlbmQgc2hvdWxkIG9idGFpbiBhIHBvaW50ZXIgdG8gdGhlIHJlc2VydmVkIHNoYXJl ZCBtZW1vcnkgYnkKLSAgICAgIGNhbGxpbmc6Ci08cHJvZ3JhbWxpc3Rpbmc+Ci12b2lkICpT aG1lbUluaXRTdHJ1Y3QoY29uc3QgY2hhciAqbmFtZSwgU2l6ZSBzaXplLCBib29sICpmb3Vu ZFB0cikKLTwvcHJvZ3JhbWxpc3Rpbmc+Ci0gICAgICBJZiB0aGlzIGZ1bmN0aW9uIHNldHMg PGxpdGVyYWw+Zm91bmRQdHI8L2xpdGVyYWw+IHRvCi0gICAgICA8bGl0ZXJhbD5mYWxzZTwv bGl0ZXJhbD4sIHRoZSBjYWxsZXIgc2hvdWxkIHByb2NlZWQgdG8gaW5pdGlhbGl6ZSB0aGUK LSAgICAgIGNvbnRlbnRzIG9mIHRoZSByZXNlcnZlZCBzaGFyZWQgbWVtb3J5LiAgSWYgPGxp dGVyYWw+Zm91bmRQdHI8L2xpdGVyYWw+Ci0gICAgICBpcyBzZXQgdG8gPGxpdGVyYWw+dHJ1 ZTwvbGl0ZXJhbD4sIHRoZSBzaGFyZWQgbWVtb3J5IHdhcyBhbHJlYWR5Ci0gICAgICBpbml0 aWFsaXplZCBieSBhbm90aGVyIGJhY2tlbmQsIGFuZCB0aGUgY2FsbGVyIG5lZWQgbm90IGlu aXRpYWxpemUKLSAgICAgIGZ1cnRoZXIuCi0gICAgIDwvcGFyYT4KK3R5cGVkZWYgc3RydWN0 IE15U2htZW1EYXRhIHsKKyAgICBMV0xvY2sgICAgICBsb2NrOyAgICAvKiBwcm90ZWN0cyB0 aGUgZmllbGRzIGJlbG93ICovCiAKLSAgICAgPHBhcmE+Ci0gICAgICBUbyBhdm9pZCByYWNl IGNvbmRpdGlvbnMsIGVhY2ggYmFja2VuZCBzaG91bGQgdXNlIHRoZSBMV0xvY2sKLSAgICAg IDxmdW5jdGlvbj5BZGRpblNobWVtSW5pdExvY2s8L2Z1bmN0aW9uPiB3aGVuIGluaXRpYWxp emluZyBpdHMgYWxsb2NhdGlvbgotICAgICAgb2Ygc2hhcmVkIG1lbW9yeSwgYXMgc2hvd24g aGVyZToKLTxwcm9ncmFtbGlzdGluZz4KLXN0YXRpYyBteXN0cnVjdCAqcHRyID0gTlVMTDsK LWJvb2wgICAgICAgIGZvdW5kOworICAgIC4uLiBzaGFyZWQgbWVtb3J5IGNvbnRlbnRzIC4u LgorfSBNeVNobWVtRGF0YTsKKworc3RhdGljIE15U2htZW1EYXRhICpNeVNobWVtOyAgICAv KiBwb2ludGVyIHRvIHRoZSBzdHJ1Y3QgaW4gc2hhcmVkIG1lbW9yeSAqLworCitzdGF0aWMg dm9pZCBteV9zaG1lbV9yZXF1ZXN0KHZvaWQgKmFyZyk7CitzdGF0aWMgdm9pZCBteV9zaG1l bV9pbml0KHZvaWQgKmFyZyk7CisKK2NvbnN0IFNobWVtQ2FsbGJhY2tzIG15X3NobWVtX2Nh bGxiYWNrcyA9IHsKKyAgICAucmVxdWVzdF9mbiA9IG15X3NobWVtX3JlcXVlc3QsCisgICAg LmluaXRfZm4gPSBteV9zaG1lbV9pbml0LAorfTsKKworLyoKKyAqIE1vZHVsZSBsb2FkIGNh bGxiYWNrCisgKi8KK3ZvaWQKK19QR19pbml0KHZvaWQpCit7CisgICAgLyoKKyAgICAgKiBJ biBvcmRlciB0byBjcmVhdGUgb3VyIHNoYXJlZCBtZW1vcnkgYXJlYSwgd2UgaGF2ZSB0byBi ZSBsb2FkZWQgdmlhCisgICAgICogc2hhcmVkX3ByZWxvYWRfbGlicmFyaWVzLgorICAgICAq LworICAgIGlmICghcHJvY2Vzc19zaGFyZWRfcHJlbG9hZF9saWJyYXJpZXNfaW5fcHJvZ3Jl c3MpCisgICAgICAgIHJldHVybjsKKworICAgIC8qIFJlZ2lzdGVyIG91ciBzaGFyZWQgbWVt b3J5IG5lZWRzICovCisgICAgUmVnaXN0ZXJTaG1lbUNhbGxiYWNrcygmYW1wO215X3NobWVt X2NhbGxiYWNrcyk7Cit9CisKKy8qIGNhbGxiYWNrIHRvIHJlcXVlc3QgICovCitzdGF0aWMg dm9pZAorbXlfc2htZW1fcmVxdWVzdCh2b2lkICphcmcpCit7CisgICAgLyogQSBwZXJzaXN0 ZW50IGhhbmRsZSB0byB0aGUgc2hhcmVkIG1lbW9yeSBhcmVhIGluIHRoaXMgYmFja2VuZCAq LworICAgIHN0YXRpYyBTaG1lbVN0cnVjdERlc2MgTXlTaG1lbURlc2M7CisKKyAgICBTaG1l bVJlcXVlc3RTdHJ1Y3QoJmFtcDtNeVNobWVtRGVzYywKKyAgICAgICAgICAgICAgICAgICAg ICAgLm5hbWUgPSAiTXkgc2htZW0gYXJlYSIsCisgICAgICAgICAgICAgICAgICAgICAgIC5z aXplID0gc2l6ZW9mKE15U2htZW1EYXRhKSwKKyAgICAgICAgICAgICAgICAgICAgICAgLnB0 ciA9ICh2b2lkICoqKSAmYW1wO015U2htZW0sCisgICAgICAgICk7Cit9CiAKLUxXTG9ja0Fj cXVpcmUoQWRkaW5TaG1lbUluaXRMb2NrLCBMV19FWENMVVNJVkUpOwotcHRyID0gU2htZW1J bml0U3RydWN0KCJteSBzdHJ1Y3QgbmFtZSIsIHNpemUsICZhbXA7Zm91bmQpOwotaWYgKCFm b3VuZCkKKy8qIGNhbGxiYWNrIHRvIGluaXRpYWxpemUgdGhlIGNvbnRlbnRzIG9mIHRoZSBN eVNobWVtIGFyZWEgYXQgc3RhcnR1cCAqLworc3RhdGljIHZvaWQKK215X3NobWVtX2luaXQo dm9pZCAqYXJnKQogewotICAgIC4uLiBpbml0aWFsaXplIGNvbnRlbnRzIG9mIHNoYXJlZCBt ZW1vcnkgLi4uCi0gICAgcHRyLT5sb2NrcyA9IEdldE5hbWVkTFdMb2NrVHJhbmNoZSgibXkg dHJhbmNoZSBuYW1lIik7CisgICAgaW50ICAgICAgICAgdHJhbmNoZV9pZDsKKworICAgIC8q IEluaXRpYWxpemUgdGhlIGxvY2sgKi8KKyAgICB0cmFuY2hlX2lkID0gTFdMb2NrTmV3VHJh bmNoZUlkKCJteSB0cmFuY2hlIG5hbWUiKTsKKyAgICBMV0xvY2tJbml0aWFsaXplKCZhbXA7 TXlTaG1lbS0+bG9jaywgdHJhbmNoZV9pZCk7CisKKyAgICAuLi4gaW5pdGlhbGl6ZSB0aGUg cmVzdCBvZiBNeVNobWVtIGZpZWxkcyAuLi4KIH0KLUxXTG9ja1JlbGVhc2UoQWRkaW5TaG1l bUluaXRMb2NrKTsKKwogPC9wcm9ncmFtbGlzdGluZz4KLSAgICAgIDxsaXRlcmFsPnNobWVt X3N0YXJ0dXBfaG9vazwvbGl0ZXJhbD4gcHJvdmlkZXMgYSBjb252ZW5pZW50IHBsYWNlIGZv ciB0aGUKLSAgICAgIGluaXRpYWxpemF0aW9uIGNvZGUsIGJ1dCBpdCBpcyBub3Qgc3RyaWN0 bHkgcmVxdWlyZWQgdGhhdCBhbGwgc3VjaCBjb2RlCi0gICAgICBiZSBwbGFjZWQgaW4gdGhp cyBob29rLiAgT24gV2luZG93cyAoYW5kIGFueXdoZXJlIGVsc2Ugd2hlcmUKLSAgICAgIDxs aXRlcmFsPkVYRUNfQkFDS0VORDwvbGl0ZXJhbD4gaXMgZGVmaW5lZCksIGVhY2ggYmFja2Vu ZCBleGVjdXRlcyB0aGUKLSAgICAgIHJlZ2lzdGVyZWQgPGxpdGVyYWw+c2htZW1fc3RhcnR1 cF9ob29rPC9saXRlcmFsPiBzaG9ydGx5IGFmdGVyIGl0Ci0gICAgICBhdHRhY2hlcyB0byBz aGFyZWQgbWVtb3J5LCBzbyBhZGQtaW5zIHNob3VsZCBzdGlsbCBhY3F1aXJlCi0gICAgICA8 ZnVuY3Rpb24+QWRkaW5TaG1lbUluaXRMb2NrPC9mdW5jdGlvbj4gd2l0aGluIHRoaXMgaG9v aywgYXMgc2hvd24gaW4gdGhlCi0gICAgICBleGFtcGxlIGFib3ZlLiAgT24gb3RoZXIgcGxh dGZvcm1zLCBvbmx5IHRoZSBwb3N0bWFzdGVyIHByb2Nlc3MgZXhlY3V0ZXMKLSAgICAgIHRo ZSA8bGl0ZXJhbD5zaG1lbV9zdGFydHVwX2hvb2s8L2xpdGVyYWw+LCBhbmQgZWFjaCBiYWNr ZW5kIGF1dG9tYXRpY2FsbHkKLSAgICAgIGluaGVyaXRzIHRoZSBwb2ludGVycyB0byBzaGFy ZWQgbWVtb3J5LgorICAgICAgVGhlIDxmdW5jdGlvbj5yZXF1ZXN0X2ZuPC9mdW5jdGlvbj4g Y2FsbGJhY2sgaXMgY2FsbGVkIGR1cmluZyBzeXN0ZW0KKyAgICAgIHN0YXJ0dXAsIGJlZm9y ZSB0aGUgc2hhcmVkIG1lbW9yeSBoYXMgYmVlbiBhbGxvY2F0ZWQuIEl0IHNob3VsZCBjYWxs CisgICAgICA8ZnVuY3Rpb24+U2htZW1SZXF1ZXN0U3RydWN0KCk8L2Z1bmN0aW9uPiB0byBy ZWdpc3RlciB0aGUgYWRkLWluJ3MKKyAgICAgIHNoYXJlZCBtZW1vcnkgbmVlZHMuIE5vdGUg dGhhdCA8ZnVuY3Rpb24+U2htZW1SZXF1ZXN0U3RydWN0KCk8L2Z1bmN0aW9uPgorICAgICAg ZG9lc24ndCBpbW1lZGlhdGVseSBhbGxvY2F0ZSBvciBpbml0aWFsaXplIHRoZSBtZW1vcnks IGl0IG1lcmVseQorICAgICAgcmVnaXN0ZXJzIHRoZSBzcGFjZSB0byBiZSBhbGxvY2F0ZWQg bGF0ZXIgaW4gdGhlIHN0YXJ0dXAgc2VxdWVuY2UuICBXaGVuCisgICAgICB0aGUgbWVtb3J5 IGlzIGFsbG9jYXRlZCwgaXQgaXMgaW5pdGlhbGl6ZWQgdG8gemVyby4gIEZvciBhbnkgbW9y ZQorICAgICAgY29tcGxleCBpbml0aWFsaXphdGlvbiwgc2V0IHRoZSA8ZnVuY3Rpb24+aW5p dF9mbigpPC9mdW5jdGlvbj4gY2FsbGJhY2ssCisgICAgICB3aGljaCB3aWxsIGJlIGNhbGxl ZCBhZnRlciB0aGUgbWVtb3J5IGhhcyBiZWVuIGFsbG9jYXRlZCBhbmQgaW5pdGlhbGl6ZWQK KyAgICAgIHRvIHplcm8sIGJ1dCBiZWZvcmUgYW55IG90aGVyIHByb2Nlc3NlcyBhcmUgcnVu bmluZywgYW5kIHRodXMgbm8gbG9ja2luZworICAgICAgaXMgcmVxdWlyZWQuCiAgICAgIDwv cGFyYT4KLQogICAgICA8cGFyYT4KLSAgICAgIEFuIGV4YW1wbGUgb2YgYSA8bGl0ZXJhbD5z aG1lbV9yZXF1ZXN0X2hvb2s8L2xpdGVyYWw+IGFuZAotICAgICAgPGxpdGVyYWw+c2htZW1f c3RhcnR1cF9ob29rPC9saXRlcmFsPiBjYW4gYmUgZm91bmQgaW4KKyAgICAgIE9uIFdpbmRv d3MsIHRoZSA8ZnVuY3Rpb24+YXR0YWNoX2ZuPC9mdW5jdGlvbj4gY2FsbGJhY2ssIGlmIGFu eSwgaXMKKyAgICAgIGFkZGl0aW9uYWxseSBjYWxsZWQgYXQgZXZlcnkgYmFja2VuZCBzdGFy dHVwLiAgSXQgY2FuIGJlIHVzZWQgdG8KKyAgICAgIGluaXRpYWxpemUgYWRkaXRpb25hbCBw ZXItYmFja2VuZCBzdGF0ZSByZWxhdGVkIHRvIHRoZSBzaGFyZWQgbWVtb3J5CisgICAgICBh cmVhIHRoYXQgaXMgaW5oZXJpdGVkIHZpYSA8ZnVuY3Rpb24+Zm9yaygpPC9mdW5jdGlvbj4g b24gb3RoZXIgc3lzdGVtcy4KKyAgICAgPC9wYXJhPgorICAgICA8cGFyYT4KKyAgICAgIEFu IGV4YW1wbGUgb2YgYWxsb2NhdGluZyBzaGFyZWQgbWVtb3J5IGNhbiBiZSBmb3VuZCBpbgog ICAgICAgPGZpbGVuYW1lPmNvbnRyaWIvcGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3Rh dGVtZW50cy5jPC9maWxlbmFtZT4gaW4KICAgICAgIHRoZSA8cHJvZHVjdG5hbWU+UG9zdGdy ZVNRTDwvcHJvZHVjdG5hbWU+IHNvdXJjZSB0cmVlLgogICAgICA8L3BhcmE+CiAgICAgPC9z ZWN0Mz4KIAogICAgIDxzZWN0MyBpZD0ieGZ1bmMtc2hhcmVkLWFkZGluLWFmdGVyLXN0YXJ0 dXAiPgotICAgICA8dGl0bGU+UmVxdWVzdGluZyBTaGFyZWQgTWVtb3J5IEFmdGVyIFN0YXJ0 dXA8L3RpdGxlPgorICAgICA8dGl0bGU+UmVxdWVzdGluZyBTaGFyZWQgTWVtb3J5IEFmdGVy IFN0YXJ0dXAgd2l0aCA8ZnVuY3Rpb24+U2htZW1SZXF1ZXN0U3RydWN0PC9mdW5jdGlvbj48 L3RpdGxlPgorCisgICAgIDxwYXJhPgorICAgICAgVGhlIDxmdW5jdGlvbj5TaG1lbVJlcXVl c3RTdHJ1Y3QoKTwvZnVuY3Rpb24+IGNhbiBhbHNvIGJlIGNhbGxlZCBhZnRlcgorICAgICAg c3lzdGVtIHN0YXJ0dXAsIHdoaWNoIGlzIHVzZWZ1bCB0byBhbGxvdyBzbWFsbCBhbGxvY2F0 aW9ucyBpbiBhZGQtaW4KKyAgICAgIGxpYnJhcmllcyB0aGF0IGFyZSBub3Qgc3BlY2lmaWVk IGluCisgICAgICA8eHJlZiBsaW5rZW5kPSJndWMtc2hhcmVkLXByZWxvYWQtbGlicmFyaWVz Ii8+PGluZGV4dGVybT48cHJpbWFyeT5zaGFyZWRfcHJlbG9hZF9saWJyYXJpZXM8L3ByaW1h cnk+PC9pbmRleHRlcm0+LgorICAgICAgSG93ZXZlciwgYWZ0ZXIgc3RhcnR1cCB0aGUgYWxs b2NhdGlvbiBjYW4gZmFpbCBpZiB0aGVyZSBpcyBub3QgZW5vdWdoCisgICAgICBzaGFyZWQg bWVtb3J5IGF2YWlsYWJsZS4gVGhlIHN5c3RlbSByZXNlcnZlcyBzb21lIG1lbW9yeSBmb3Ig YWxsb2NhdGlvbnMKKyAgICAgIGFmdGVyIHN0YXJ0dXAsIGJ1dCB0aGF0IHJlc2VydmF0aW9u IGlzIHNtYWxsLgorICAgICA8L3BhcmE+CisgICAgIDxwYXJhPgorICAgICAgQnkgZGVmYXVs dCwgPGZ1bmN0aW9uPlJlZ2lzdGVyU2htZW1DYWxsYmFja3MoKTwvZnVuY3Rpb24+IGZhaWxz IHdpdGggYW4KKyAgICAgIGVycm9yIGlmIGNhbGxlZCBhZnRlciBzeXN0ZW0gc3RhcnR1cC4g VG8gdXNlIGl0IGFmdGVyIHN0YXJ0dXAsIHlvdSBtdXN0CisgICAgICBzZXQgdGhlIDxsaXRl cmFsPlNITUVNX0NBTExCQUNLU19BTExPV19BRlRFUl9TVEFSVFVQPC9saXRlcmFsPiBmbGFn IGluCisgICAgICB0aGUgYXJndW1lbnQgPHN0cnVjdG5hbWU+U2htZW1DYWxsYmFja3M8L3N0 cnVjdG5hbWU+IHN0cnVjdCB0bworICAgICAgYWNrbm93bGVkZ2UgdGhlIHJpc2suCisgICAg IDwvcGFyYT4KKyAgICAgPHBhcmE+CisgICAgICBXaGVuIDxmdW5jdGlvbj5SZWdpc3RlclNo bWVtQ2FsbGJhY2tzKCk8L2Z1bmN0aW9uPiBpcyBjYWxsZWQgYWZ0ZXIKKyAgICAgIHN0YXJ0 dXAsIGl0IHdpbGwgaW1tZWRpYXRlbHkgY2FsbCB0aGUgYXBwcm9wcmlhdGUgY2FsbGJhY2tz LCBkZXBlbmRpbmcKKyAgICAgIG9uIHdoZXRoZXIgdGhlIHJlcXVlc3RlZCBtZW1vcnkgYXJl YXMgd2VyZSBhbHJlYWR5IGluaXRpYWxpemVkIGJ5CisgICAgICBhbm90aGVyIGJhY2tlbmQu IFRoZSBjYWxsYmFja3Mgd2lsbCBiZSBjYWxsZWQgd2hpbGUgaG9sZGluZyBhbiBpbnRlcm5h bAorICAgICAgbG9jaywgd2hpY2ggcHJldmVudHMgY29uY3VycmVudCB0d28gYmFja2VuZHMg ZnJvbSBpbml0aWFsaXphdGluZyB0aGUKKyAgICAgIG1lbW9yeSBhcmVhIGNvbmN1cnJlbnRs eS4KKyAgICAgPC9wYXJhPgorICAgIDwvc2VjdDM+CisKKyAgICA8c2VjdDMgaWQ9InhmdW5j LXNoYXJlZC1hZGRpbi1keW5hbWljIj4KKyAgICAgPHRpdGxlPkFsbG9jYXRpbmcgRHluYW1p YyBTaGFyZWQgTWVtb3J5IEFmdGVyIFN0YXJ0dXA8L3RpdGxlPgogCiAgICAgIDxwYXJhPgog ICAgICAgVGhlcmUgaXMgYW5vdGhlciwgbW9yZSBmbGV4aWJsZSBtZXRob2Qgb2YgcmVzZXJ2 aW5nIHNoYXJlZCBtZW1vcnkgdGhhdAotICAgICAgY2FuIGJlIGRvbmUgYWZ0ZXIgc2VydmVy IHN0YXJ0dXAgYW5kIG91dHNpZGUgYQotICAgICAgPGxpdGVyYWw+c2htZW1fcmVxdWVzdF9o b29rPC9saXRlcmFsPi4gIFRvIGRvIHNvLCBlYWNoIGJhY2tlbmQgdGhhdCB3aWxsCisgICAg ICBjYW4gYmUgZG9uZSBhZnRlciBzZXJ2ZXIgc3RhcnR1cC4gIFRvIGRvIHNvLCBlYWNoIGJh Y2tlbmQgdGhhdCB3aWxsCiAgICAgICB1c2UgdGhlIHNoYXJlZCBtZW1vcnkgc2hvdWxkIG9i dGFpbiBhIHBvaW50ZXIgdG8gaXQgYnkgY2FsbGluZzoKIDxwcm9ncmFtbGlzdGluZz4KIHZv aWQgKkdldE5hbWVkRFNNU2VnbWVudChjb25zdCBjaGFyICpuYW1lLCBzaXplX3Qgc2l6ZSwK QEAgLTM3MTEsMTAgKzM3NzIsNyBAQCB2b2lkICpHZXROYW1lZERTTVNlZ21lbnQoY29uc3Qg Y2hhciAqbmFtZSwgc2l6ZV90IHNpemUsCiAgICAgIDwvcGFyYT4KIAogICAgICA8cGFyYT4K LSAgICAgIFVubGlrZSBzaGFyZWQgbWVtb3J5IHJlc2VydmVkIGF0IHNlcnZlciBzdGFydHVw LCB0aGVyZSBpcyBubyBuZWVkIHRvCi0gICAgICBhY3F1aXJlIDxmdW5jdGlvbj5BZGRpblNo bWVtSW5pdExvY2s8L2Z1bmN0aW9uPiBvciBvdGhlcndpc2UgdGFrZSBhY3Rpb24KLSAgICAg IHRvIGF2b2lkIHJhY2UgY29uZGl0aW9ucyB3aGVuIHJlc2VydmluZyBzaGFyZWQgbWVtb3J5 IHdpdGgKLSAgICAgIDxmdW5jdGlvbj5HZXROYW1lZERTTVNlZ21lbnQ8L2Z1bmN0aW9uPi4g IFRoaXMgZnVuY3Rpb24gZW5zdXJlcyB0aGF0IG9ubHkKKyAgICAgIDxmdW5jdGlvbj5HZXRO YW1lZERTTVNlZ21lbnQ8L2Z1bmN0aW9uPiBlbnN1cmVzIHRoYXQgb25seQogICAgICAgb25l IGJhY2tlbmQgYWxsb2NhdGVzIGFuZCBpbml0aWFsaXplcyB0aGUgc2VnbWVudCBhbmQgdGhh dCBhbGwgb3RoZXIKICAgICAgIGJhY2tlbmRzIHJlY2VpdmUgYSBwb2ludGVyIHRvIHRoZSBm dWxseSBhbGxvY2F0ZWQgYW5kIGluaXRpYWxpemVkCiAgICAgICBzZWdtZW50LgpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvYm9vdHN0cmFwL2Jvb3RzdHJhcC5jIGIvc3JjL2JhY2tlbmQv Ym9vdHN0cmFwL2Jvb3RzdHJhcC5jCmluZGV4IGViZDQxMTc2Yjk0Li4zNzY2ZDgyMzFhYyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYm9vdHN0cmFwL2Jvb3RzdHJhcC5jCisrKyBiL3Ny Yy9iYWNrZW5kL2Jvb3RzdHJhcC9ib290c3RyYXAuYwpAQCAtMzksNiArMzksNyBAQAogI2lu Y2x1ZGUgInN0b3JhZ2UvZmQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgogI2luY2x1 ZGUgInN0b3JhZ2UvcHJvYy5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvc2htZW1faW50ZXJuYWwu aCIKICNpbmNsdWRlICJ1dGlscy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL2ZtZ3Jv aWRzLmgiCiAjaW5jbHVkZSAidXRpbHMvZ3VjLmgiCkBAIC0zNzMsNiArMzc0LDcgQEAgQm9v dHN0cmFwTW9kZU1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSwgYm9vbCBjaGVja19vbmx5 KQogCiAJSW5pdGlhbGl6ZUZhc3RQYXRoTG9ja3MoKTsKIAorCVNobWVtQ2FsbFJlcXVlc3RD YWxsYmFja3MoKTsKIAlDcmVhdGVTaGFyZWRNZW1vcnlBbmRTZW1hcGhvcmVzKCk7CiAKIAkv KgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9sYXVuY2hfYmFja2VuZC5j IGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9sYXVuY2hfYmFja2VuZC5jCmluZGV4IDE1YjEz NmVhMjlkLi4wOTczMDEwYjdkYyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rl ci9sYXVuY2hfYmFja2VuZC5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvbGF1bmNo X2JhY2tlbmQuYwpAQCAtNDksNiArNDksNyBAQAogI2luY2x1ZGUgInJlcGxpY2F0aW9uL3dh bHJlY2VpdmVyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9kc20uaCIKICNpbmNsdWRlICJzdG9y YWdlL2lvX3dvcmtlci5oIgorI2luY2x1ZGUgInN0b3JhZ2UvaXBjLmgiCiAjaW5jbHVkZSAi c3RvcmFnZS9wZ19zaG1lbS5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc2htZW1faW50ZXJuYWwu aCIKICNpbmNsdWRlICJ0Y29wL2JhY2tlbmRfc3RhcnR1cC5oIgpAQCAtNjczLDcgKzY3NCwx MCBAQCBTdWJQb3N0bWFzdGVyTWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCiAJLyog UmVzdG9yZSBiYXNpYyBzaGFyZWQgbWVtb3J5IHBvaW50ZXJzICovCiAJaWYgKFVzZWRTaG1l bVNlZ0FkZHIgIT0gTlVMTCkKKwl7CiAJCUluaXRTaG1lbUFsbG9jYXRvcihVc2VkU2htZW1T ZWdBZGRyKTsKKwkJU2htZW1DYWxsUmVxdWVzdENhbGxiYWNrcygpOworCX0KIAogCS8qCiAJ ICogUnVuIHRoZSBhcHByb3ByaWF0ZSBNYWluIGZ1bmN0aW9uCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0 ZXIvcG9zdG1hc3Rlci5jCmluZGV4IGViNGYzZWI3MmQ0Li43YThlZTE5YmRhZiAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wb3N0bWFzdGVyLmMKKysrIGIvc3JjL2Jh Y2tlbmQvcG9zdG1hc3Rlci9wb3N0bWFzdGVyLmMKQEAgLTExNSw2ICsxMTUsNyBAQAogI2lu Y2x1ZGUgInN0b3JhZ2UvaXBjLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wbXNpZ25hbC5oIgog I2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvc2htZW1faW50 ZXJuYWwuaCIKICNpbmNsdWRlICJ0Y29wL2JhY2tlbmRfc3RhcnR1cC5oIgogI2luY2x1ZGUg InRjb3AvdGNvcHByb3QuaCIKICNpbmNsdWRlICJ1dGlscy9kYXRldGltZS5oIgpAQCAtOTUx LDcgKzk1MiwxNCBAQCBQb3N0bWFzdGVyTWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQog CUluaXRpYWxpemVGYXN0UGF0aExvY2tzKCk7CiAKIAkvKgotCSAqIEdpdmUgcHJlbG9hZGVk IGxpYnJhcmllcyBhIGNoYW5jZSB0byByZXF1ZXN0IGFkZGl0aW9uYWwgc2hhcmVkIG1lbW9y eS4KKwkgKiBBc2sgYWxsIHN1YnN5c3RlbXMsIGluY2x1ZGluZyBwcmVsb2FkZWQgbGlicmFy aWVzLCB0byByZWdpc3RlciB0aGVpcgorCSAqIHNoYXJlZCBtZW1vcnkgbmVlZHMuCisJICov CisJU2htZW1DYWxsUmVxdWVzdENhbGxiYWNrcygpOworCisJLyoKKwkgKiBBbHNvIGNhbGwg YW55IGxlZ2FjeSBzaG1lbSByZXF1ZXN0IGhvb2tzIHRoYXQgbWlnaHQndmUgYmVlbiBpbnN0 YWxsZWQKKwkgKiBieSBwcmVsb2FkZWQgbGlicmFyaWVzLgogCSAqLwogCXByb2Nlc3Nfc2ht ZW1fcmVxdWVzdHMoKTsKIApAQCAtMzIzMiw3ICszMjQwLDE0IEBAIFBvc3RtYXN0ZXJTdGF0 ZU1hY2hpbmUodm9pZCkKIAkJLyogcmUtcmVhZCBjb250cm9sIGZpbGUgaW50byBsb2NhbCBt ZW1vcnkgKi8KIAkJTG9jYWxQcm9jZXNzQ29udHJvbEZpbGUodHJ1ZSk7CiAKLQkJLyogcmUt Y3JlYXRlIHNoYXJlZCBtZW1vcnkgYW5kIHNlbWFwaG9yZXMgKi8KKwkJLyoKKwkJICogUmUt aW5pdGlhbGl6ZSBzaGFyZWQgbWVtb3J5IGFuZCBzZW1hcGhvcmVzLiAgTm90ZTogV2UgZG9u J3QgY2FsbAorCQkgKiBSZWdpc3RlckJ1aWx0aW5TaG1lbUNhbGxiYWNrcygpLCB3ZSBrZWVw IHRoZSBvbGQgcmVnaXN0cmF0aW9ucy4gIEluCisJCSAqIG9yZGVyIHRvIHJlLXJlZ2lzdGVy IHN0cnVjdHMgaW4gZXh0ZW5zaW9ucywgd2UnZCBuZWVkIHRvIHJlbG9hZAorCQkgKiBzaGFy ZWQgcHJlbG9hZCBsaWJyYXJpZXMsIGFuZCB3ZSBkb24ndCB3YW50IHRvIGRvIHRoYXQuCisJ CSAqLworCQlSZXNldFNobWVtQWxsb2NhdG9yKCk7CisJCVNobWVtQ2FsbFJlcXVlc3RDYWxs YmFja3MoKTsKIAkJQ3JlYXRlU2hhcmVkTWVtb3J5QW5kU2VtYXBob3JlcygpOwogCiAJCVVw ZGF0ZVBNU3RhdGUoUE1fU1RBUlRVUCk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9y YWdlL2lwYy9pcGNpLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9pcGNpLmMKaW5kZXgg Y2E0ZTQ3Mjc0ODkuLjI0NDIyYTgwYWIzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9y YWdlL2lwYy9pcGNpLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvaXBjaS5jCkBA IC0xMDEsOCArMTAxLDkgQEAgQ2FsY3VsYXRlU2htZW1TaXplKHZvaWQpCiAJICogZHVyaW5n IHRoZSBhY3R1YWwgYWxsb2NhdGlvbiBwaGFzZS4KIAkgKi8KIAlzaXplID0gMTAwMDAwOwot CXNpemUgPSBhZGRfc2l6ZShzaXplLCBoYXNoX2VzdGltYXRlX3NpemUoU0hNRU1fSU5ERVhf U0laRSwKLQkJCQkJCQkJCQkJIHNpemVvZihTaG1lbUluZGV4RW50KSkpOworCXNpemUgPSBh ZGRfc2l6ZShzaXplLCBTaG1lbUdldFJlcXVlc3RlZFNpemUoKSk7CisKKwkvKiBsZWdhY3kg c3Vic3lzdGVtcyAqLwogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBkc21fZXN0aW1hdGVfc2l6 ZSgpKTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgRFNNUmVnaXN0cnlTaG1lbVNpemUoKSk7 CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIEJ1ZmZlck1hbmFnZXJTaG1lbVNpemUoKSk7CkBA IC0xNzcsNiArMTc4LDEzIEBAIEF0dGFjaFNoYXJlZE1lbW9yeVN0cnVjdHModm9pZCkKIAkg Ki8KIAlJbml0aWFsaXplRmFzdFBhdGhMb2NrcygpOwogCisJLyoKKwkgKiBBdHRhY2ggdG8g TFdMb2NrcyBmaXJzdC4gVGhleSBhcmUgbmVlZGVkIGJ5IG1vc3Qgb3RoZXIgc3Vic3lzdGVt cy4KKwkgKi8KKwlMV0xvY2tTaG1lbUluaXQoKTsKKworCS8qIEVzdGFibGlzaCBwb2ludGVy cyB0byBhbGwgc2hhcmVkIG1lbW9yeSBhcmVhcyBpbiB0aGlzIGJhY2tlbmQgKi8KKwlTaG1l bUF0dGFjaFJlcXVlc3RlZCgpOwogCUNyZWF0ZU9yQXR0YWNoU2htZW1TdHJ1Y3RzKCk7CiAK IAkvKgpAQCAtMjIxLDcgKzIyOSwxNyBAQCBDcmVhdGVTaGFyZWRNZW1vcnlBbmRTZW1hcGhv cmVzKHZvaWQpCiAJICovCiAJSW5pdFNobWVtQWxsb2NhdG9yKHNlZ2hkcik7CiAKLQkvKiBJ bml0aWFsaXplIHN1YnN5c3RlbXMgKi8KKwkvKgorCSAqIEluaXRpYWxpemUgTFdMb2NrcyBm aXJzdCwgaW4gY2FzZSBhbnkgb2YgdGhlIHNobWVtIGluaXQgZnVuY3Rpb24gdXNlCisJICog TFdMb2Nrcy4gIChOb3RoaW5nIGVsc2UgY2FuIGJlIHJ1bm5pbmcgZHVyaW5nIHN0YXJ0dXAs IHNvIHRoZXkgZG9uJ3QKKwkgKiBuZWVkIHRvIGRvIGFueSBsb2NraW5nIHlldCwgYnV0IHdl IG5ldmVydGhlbGVzcyBhbGxvdyBpdC4pCisJICovCisJTFdMb2NrU2htZW1Jbml0KCk7CisK KwkvKiBJbml0aWFsaXplIGFsbCBzaG1lbSBhcmVhcyAqLworCVNobWVtSW5pdFJlcXVlc3Rl ZCgpOworCisJLyogSW5pdGlhbGl6ZSBsZWdhY3kgc3Vic3lzdGVtcyAqLwogCUNyZWF0ZU9y QXR0YWNoU2htZW1TdHJ1Y3RzKCk7CiAKIAkvKiBJbml0aWFsaXplIGR5bmFtaWMgc2hhcmVk IG1lbW9yeSBmYWNpbGl0aWVzLiAqLwpAQCAtMjUyLDExICsyNzAsNiBAQCBDcmVhdGVTaGFy ZWRNZW1vcnlBbmRTZW1hcGhvcmVzKHZvaWQpCiBzdGF0aWMgdm9pZAogQ3JlYXRlT3JBdHRh Y2hTaG1lbVN0cnVjdHModm9pZCkKIHsKLQkvKgotCSAqIFNldCB1cCBMV0xvY2tzLiAgVGhl eSBhcmUgbmVlZGVkIGJ5IG1vc3Qgb3RoZXIgc3Vic3lzdGVtcy4KLQkgKi8KLQlMV0xvY2tT aG1lbUluaXQoKTsKLQogCWRzbV9zaG1lbV9pbml0KCk7CiAJRFNNUmVnaXN0cnlTaG1lbUlu aXQoKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htZW0uYyBi L3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVtLmMKaW5kZXggZTkxYzQ3ZDRkOTcuLjVj N2NhZjU5MzYwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5j CisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVtLmMKQEAgLTE5LDQzICsxOSwx MTAgQEAKICAqIG1ldGhvZHMpLiAgVGhlIHJvdXRpbmVzIGluIHRoaXMgZmlsZSBhcmUgdXNl ZCBmb3IgYWxsb2NhdGluZyBhbmQKICAqIGJpbmRpbmcgdG8gc2hhcmVkIG1lbW9yeSBkYXRh IHN0cnVjdHVyZXMuCiAgKgotICogTk9URVM6Ci0gKgkJKGEpIFRoZXJlIGFyZSB0aHJlZSBr aW5kcyBvZiBzaGFyZWQgbWVtb3J5IGRhdGEgc3RydWN0dXJlcwotICoJYXZhaWxhYmxlIHRv IFBPU1RHUkVTOiBmaXhlZC1zaXplIHN0cnVjdHVyZXMsIHF1ZXVlcyBhbmQgaGFzaAotICoJ dGFibGVzLiAgRml4ZWQtc2l6ZSBzdHJ1Y3R1cmVzIGNvbnRhaW4gdGhpbmdzIGxpa2UgZ2xv YmFsIHZhcmlhYmxlcwotICoJZm9yIGEgbW9kdWxlIGFuZCBzaG91bGQgbmV2ZXIgYmUgYWxs b2NhdGVkIGFmdGVyIHRoZSBzaGFyZWQgbWVtb3J5Ci0gKglpbml0aWFsaXphdGlvbiBwaGFz ZS4gIEhhc2ggdGFibGVzIGhhdmUgYSBmaXhlZCBtYXhpbXVtIHNpemUgYW5kCi0gKgljYW5u b3QgZ3JvdyBiZXlvbmQgdGhhdC4gIFF1ZXVlcyBsaW5rIGRhdGEgc3RydWN0dXJlcwotICoJ dGhhdCBoYXZlIGJlZW4gYWxsb2NhdGVkIGVpdGhlciB3aXRoaW4gZml4ZWQtc2l6ZSBzdHJ1 Y3R1cmVzIG9yIGFzIGhhc2gKLSAqCWJ1Y2tldHMuICBFYWNoIHNoYXJlZCBkYXRhIHN0cnVj dHVyZSBoYXMgYSBzdHJpbmcgbmFtZSB0byBpZGVudGlmeQotICoJaXQgKGFzc2lnbmVkIGlu IHRoZSBtb2R1bGUgdGhhdCBkZWNsYXJlcyBpdCkuCi0gKgotICoJCShiKSBEdXJpbmcgaW5p dGlhbGl6YXRpb24sIGVhY2ggbW9kdWxlIGxvb2tzIGZvciBpdHMKLSAqCXNoYXJlZCBkYXRh IHN0cnVjdHVyZXMgaW4gYSBoYXNoIHRhYmxlIGNhbGxlZCB0aGUgIlNobWVtIEluZGV4Ii4K LSAqCUlmIHRoZSBkYXRhIHN0cnVjdHVyZSBpcyBub3QgcHJlc2VudCwgdGhlIGNhbGxlciBj YW4gYWxsb2NhdGUKLSAqCWEgbmV3IG9uZSBhbmQgaW5pdGlhbGl6ZSBpdC4gIElmIHRoZSBk YXRhIHN0cnVjdHVyZSBpcyBwcmVzZW50LAotICoJdGhlIGNhbGxlciAiYXR0YWNoZXMiIHRv IHRoZSBzdHJ1Y3R1cmUgYnkgaW5pdGlhbGl6aW5nIGEgcG9pbnRlcgotICoJaW4gdGhlIGxv Y2FsIGFkZHJlc3Mgc3BhY2UuCi0gKgkJVGhlIHNobWVtIGluZGV4IGhhcyB0d28gcHVycG9z ZXM6IGZpcnN0LCBpdCBnaXZlcyB1cwotICoJYSBzaW1wbGUgbW9kZWwgb2YgaG93IHRoZSB3 b3JsZCBsb29rcyB3aGVuIGEgYmFja2VuZCBwcm9jZXNzCi0gKglpbml0aWFsaXplcy4gIElm IHNvbWV0aGluZyBpcyBwcmVzZW50IGluIHRoZSBzaG1lbSBpbmRleCwKLSAqCWl0IGlzIGlu aXRpYWxpemVkLiAgSWYgaXQgaXMgbm90LCBpdCBpcyB1bmluaXRpYWxpemVkLiAgU2Vjb25k LAotICoJdGhlIHNobWVtIGluZGV4IGFsbG93cyB1cyB0byBhbGxvY2F0ZSBzaGFyZWQgbWVt b3J5IG9uIGRlbWFuZAotICoJaW5zdGVhZCBvZiB0cnlpbmcgdG8gcHJlYWxsb2NhdGUgc3Ry dWN0dXJlcyBhbmQgaGFyZC13aXJlIHRoZQotICoJc2l6ZXMgYW5kIGxvY2F0aW9ucyBpbiBo ZWFkZXIgZmlsZXMuICBJZiB5b3UgYXJlIHVzaW5nIGEgbG90Ci0gKglvZiBzaGFyZWQgbWVt b3J5IGluIGEgbG90IG9mIGRpZmZlcmVudCBwbGFjZXMgKGFuZCBjaGFuZ2luZwotICoJdGhp bmdzIGR1cmluZyBkZXZlbG9wbWVudCksIHRoaXMgaXMgaW1wb3J0YW50LgotICoKLSAqCQko YykgSW4gc3RhbmRhcmQgVW5peC1pc2ggZW52aXJvbm1lbnRzLCBpbmRpdmlkdWFsIGJhY2tl bmRzIGRvIG5vdAotICoJbmVlZCB0byByZS1lc3RhYmxpc2ggdGhlaXIgbG9jYWwgcG9pbnRl cnMgaW50byBzaGFyZWQgbWVtb3J5LCBiZWNhdXNlCi0gKgl0aGV5IGluaGVyaXQgY29ycmVj dCB2YWx1ZXMgb2YgdGhvc2UgdmFyaWFibGVzIHZpYSBmb3JrKCkgZnJvbSB0aGUKLSAqCXBv c3RtYXN0ZXIuICBIb3dldmVyLCB0aGlzIGRvZXMgbm90IHdvcmsgaW4gdGhlIEVYRUNfQkFD S0VORCBjYXNlLgotICoJSW4gcG9ydHMgdXNpbmcgRVhFQ19CQUNLRU5ELCBuZXcgYmFja2Vu ZHMgaGF2ZSB0byBzZXQgdXAgdGhlaXIgbG9jYWwKLSAqCXBvaW50ZXJzIHVzaW5nIHRoZSBt ZXRob2QgZGVzY3JpYmVkIGluIChiKSBhYm92ZS4KLSAqCi0gKgkJKGQpIG1lbW9yeSBhbGxv Y2F0aW9uIG1vZGVsOiBzaGFyZWQgbWVtb3J5IGNhbiBuZXZlciBiZQotICoJZnJlZWQsIG9u Y2UgYWxsb2NhdGVkLiAgIEVhY2ggaGFzaCB0YWJsZSBoYXMgaXRzIG93biBmcmVlIGxpc3Qs Ci0gKglzbyBoYXNoIGJ1Y2tldHMgY2FuIGJlIHJldXNlZCB3aGVuIGFuIGl0ZW0gaXMgZGVs ZXRlZC4KKyAqIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGZhY2lsaXRpZXMgdG8gYWxsb2NhdGUg Zml4ZWQtc2l6ZSBzdHJ1Y3R1cmVzIGluIHNoYXJlZAorICogbWVtb3J5LCBmb3IgdGhpbmdz IGxpa2UgdmFyaWFibGVzIHNoYXJlZCBiZXR3ZWVuIGFsbCBiYWNrZW5kIHByb2Nlc3Nlcy4K KyAqIEVhY2ggc3VjaCBzdHJ1Y3R1cmUgaGFzIGEgc3RyaW5nIG5hbWUgdG8gaWRlbnRpZnkg aXQsIHNwZWNpZmllZCB3aGVuIGl0IGlzCisgKiByZXF1ZXN0ZWQuICBzaG1lbV9oYXNoLmMg cHJvdmlkZXMgYSBzaGFyZWQgaGFzaCB0YWJsZSBpbXBsZW1lbnRhdGlvbiBvbiB0b3AKKyAq IG9mIHRoYXQuCisgKgorICogU2hhcmVkIG1lbW9yeSBhcmVhcyBzaG91bGQgdXN1YWxseSBu b3QgYmUgYWxsb2NhdGVkIGFmdGVyIHBvc3RtYXN0ZXIKKyAqIHN0YXJ0dXAsIGFsdGhvdWdo IHdlIGRvIGFsbG93IHNtYWxsIGFsbG9jYXRpb25zIGxhdGVyIGZvciB0aGUgYmVuZWZpdCBv ZgorICogZXh0ZW5zaW9uIG1vZHVsZXMgdGhhdCBhcmUgbG9hZGVkIGFmdGVyIHN0YXJ0dXAu ICBEZXNwaXRlIHRoYXQgYWxsb3dhbmNlLAorICogZXh0ZW5zaW9ucyB0aGF0IG5lZWQgc2hh cmVkIG1lbW9yeSBzaG91bGQgYmUgYWRkZWQgaW4KKyAqIHNoYXJlZF9wcmVsb2FkX2xpYnJh cmllcywgYmVjYXVzZSB0aGUgYWxsb3dhbmNlIGlzIHF1aXRlIHNtYWxsIGFuZCB0aGVyZSBp cworICogbm8gZ3VhcmFudGVlIHRoYXQgYW55IG1lbW9yeSBpcyBhdmFpbGFibGUgYWZ0ZXIg c3RhcnR1cC4KKyAqCisgKiBOb3dhZGF5cywgdGhlcmUgaXMgYWxzbyBhbm90aGVyIHdheSB0 byBhbGxvY2F0ZSBzaGFyZWQgbWVtb3J5IGNhbGxlZAorICogRHluYW1pYyBTaGFyZWQgTWVt b3J5LiAgU2VlIGRzbS5jIGZvciB0aGF0IGZhY2lsaXR5LiAgT25lIGJpZyBkaWZmZXJlbmNl CisgKiBiZXR3ZWVuIHRyYWRpdGlvbmFsIHNoYXJlZCBtZW1vcnkgaGFuZGxlZCBieSBzaG1l bS5jIGFuZCBkeW5hbWljIHNoYXJlZAorICogbWVtb3J5IGlzIHRoYXQgdHJhZGl0aW9uYWwg c2hhcmVkIG1lbW9yeSBhcmVhcyBhcmUgbWFwcGVkIHRvIHRoZSBzYW1lCisgKiBhZGRyZXNz IGluIGFsbCBwcm9jZXNzZXMsIHNvIHlvdSBjYW4gdXNlIG5vcm1hbCBwb2ludGVycyBpbiBz aGFyZWQgbWVtb3J5CisgKiBzdHJ1Y3RzLiAgV2l0aCBEeW5hbWljIFNoYXJlZCBNZW1vcnks IHlvdSBtdXN0IHVzZSBvZmZzZXRzIG9yIERTQSBwb2ludGVycworICogaW5zdGVhZC4KKyAq CisgKiBTaGFyZWQgbWVtb3J5IG1hbmFnZWQgYnkgc2htZW0uYyBjYW4gbmV2ZXIgYmUgZnJl ZWQsIG9uY2UgYWxsb2NhdGVkLiAgRWFjaAorICogaGFzaCB0YWJsZSBoYXMgaXRzIG93biBm cmVlIGxpc3QsIHNvIGhhc2ggYnVja2V0cyBjYW4gYmUgcmV1c2VkIHdoZW4gYW4KKyAqIGl0 ZW0gaXMgZGVsZXRlZC4KKyAqCisgKiBVc2FnZQorICogLS0tLS0KKyAqCisgKiBUbyBhbGxv Y2F0ZSBzaGFyZWQgbWVtb3J5LCB5b3UgbmVlZCB0byByZWdpc3RlciBhIHNldCBvZiBjYWxs YmFjayBmdW5jdGlvbnMKKyAqIHdoaWNoIGhhbmRsZSB0aGUgbGlmZWN5Y2xlIG9mIHRoZSBh bGxvY2F0aW9uLiAgSW4gdGhlIHJlcXVlc3RfZm4gY2FsbGJhY2ssCisgKiBmaWxsIGluIGEg U2htZW1SZXF1ZXN0U3RydWN0T3B0cyBzdHJ1Y3Qgd2l0aCB0aGUgbmFtZSwgc2l6ZSwgYW5k IGFueSBvdGhlcgorICogb3B0aW9ucywgYW5kIGNhbGwgU2htZW1SZXF1ZXN0U3RydWN0KCku ICBMZWF2ZSBhbnkgdW51c2VkIGZpZWxkcyBhcyB6ZXJvcy4KKyAqCisgKgl0eXBlZGVmIHN0 cnVjdCBNeVNobWVtRGF0YSB7CisgKgkJLi4uCisgKgl9IE15U2htZW1EYXRhOworICoKKyAq CXN0YXRpYyBNeVNobWVtRGF0YSAqTXlTaG1lbTsKKyAqCisgKglzdGF0aWMgdm9pZCBteV9z aG1lbV9yZXF1ZXN0KHZvaWQgKmFyZyk7CisgKglzdGF0aWMgdm9pZCBteV9zaG1lbV9pbml0 KHZvaWQgKmFyZyk7CisgKgorICogIGNvbnN0IFNobWVtQ2FsbGJhY2tzIE15U2htZW1DYWxs YmFja3MgPSB7CisgKgkJLnJlcXVlc3RfZm4gPSBteV9zaG1lbV9yZXF1ZXN0LAorICoJCS5p bml0X2ZuID0gbXlfc2htZW1faW5pdCwKKyAqCX07CisgKgorICoJc3RhdGljIHZvaWQKKyAq CW15X3NobWVtX3JlcXVlc3Qodm9pZCAqYXJnKQorICoJeworICoJCXN0YXRpYyBTaG1lbVN0 cnVjdERlc2MgTXlTaG1lbURlc2M7CisgKgorICoJCVNobWVtUmVxdWVzdFN0cnVjdCgmTXlT aG1lbURlc2MsICYoU2htZW1SZXF1ZXN0U3RydWN0T3B0cykgeworICoJCQkubmFtZSA9ICJN eSBzaG1lbSBhcmVhIiwKKyAqCQkJLnNpemUgPSBzaXplb2YoTXlTaG1lbURhdGEpLAorICoJ CQkucHRyID0gKHZvaWQgKiopICZNeVNobWVtLAorICoJCX0pOworICoJfQorICoKKyAqIFJl Z2lzdGVyIHRoZSBjYWxsYmFja3MgYnkgY2FsbGluZyBSZWdpc3RlclNobWVtQ2FsbGJhY2tz KCZNeVNobWVtQ2FsbGJhY2tzKQorICogaW4gdGhlIGV4dGVuc2lvbidzIF9QR19pbml0KCkg ZnVuY3Rpb24uCisgKgorICogTGlmZWN5Y2xlCisgKiAtLS0tLS0tLS0KKyAqCisgKiBJbml0 aWFsaXppbmcgc2hhcmVkIG1lbW9yeSBoYXBwZW5zIGluIG11bHRpcGxlIHBoYXNlcy4gSW4g dGhlIGZpcnN0IHBoYXNlLAorICogZHVyaW5nIHBvc3RtYXN0ZXIgc3RhcnR1cCwgYWxsIHRo ZSByZXF1ZXN0X2ZuIGNhbGxiYWNrcyBhcmUgY2FsbGVkLiAgT25seQorICogYWZ0ZXIgYWxs IHRoZSByZXF1ZXN0X2ZuIGNhbGxiYWNrcyBoYXZlIGJlZW4gY2FsbGVkIGFuZCBhbGwgdGhl IHNobWVtIGFyZWFzCisgKiBoYXZlIGJlZW4gcmVxdWVzdGVkIGJ5IHRoZSBTaG1lbVJlcXVl c3RTdHJ1Y3QoKSBjYWxscyB3ZSBrbm93IGhvdyBtdWNoCisgKiBzaGFyZWQgbWVtb3J5IHdl IG5lZWQgaW4gdG90YWwuIEFmdGVyIHRoYXQsIHBvc3RtYXN0ZXIgYWxsb2NhdGVzIGdsb2Jh bAorICogc2hhcmVkIG1lbW9yeSBzZWdtZW50LCBhbmQgY2FsbHMgYWxsIHRoZSBpbml0X2Zu IGNhbGxiYWNrcyB0byBpbml0aWFsaXplCisgKiBhbGwgdGhlIHJlcXVlc3RlZCBzaG1lbSBh cmVhcy4KKyAqCisgKiBJbiBzdGFuZGFyZCBVbml4LWlzaCBlbnZpcm9ubWVudHMsIGluZGl2 aWR1YWwgYmFja2VuZHMgZG8gbm90IG5lZWQgdG8KKyAqIHJlLWVzdGFibGlzaCB0aGVpciBs b2NhbCBwb2ludGVycyBpbnRvIHNoYXJlZCBtZW1vcnksIGJlY2F1c2UgdGhleSBpbmhlcml0 CisgKiBjb3JyZWN0IHZhbHVlcyBvZiB0aG9zZSB2YXJpYWJsZXMgdmlhIGZvcmsoKSBmcm9t IHRoZSBwb3N0bWFzdGVyLiAgSG93ZXZlciwKKyAqIHRoaXMgZG9lcyBub3Qgd29yayBpbiB0 aGUgRVhFQ19CQUNLRU5EIGNhc2UuICBJbiBwb3J0cyB1c2luZyBFWEVDX0JBQ0tFTkQsCisg KiBiYWNrZW5kIHN0YXJ0dXAgYWxzbyBjYWxscyB0aGUgc2htZW1fcmVxdWVzdCBjYWxsYmFj a3MgdG8gcmUtZXN0YWJsaXNoIHRoZQorICoga25vd2xlZGdlIGFib3V0IGVhY2ggc2hhcmVk IG1lbW9yeSBhcmVhLCBzZXRzIHRoZSBwb2ludGVyIHZhcmlhYmxlcworICogKCpTaG1lbVN0 cnVjdERlc2MtPnB0ciksIGFuZCBjYWxscyB0aGUgYXR0YWNoX2ZuIGNhbGxiYWNrLCBpZiBh bnksIGZvcgorICogYWRkaXRpb25hbCBwZXItYmFja2VuZCBzZXR1cC4KKyAqCisgKiBMZWdh Y3kgU2htZW1Jbml0U3RydWN0KCkvU2htZW1Jbml0SGFzaCgpIGZ1bmN0aW9ucworICogLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisg KiBTaG1lbUluaXRTdHJ1Y3QoKS9TaG1lbUluaXRIYXNoKCkgaXMgYW5vdGhlciB3YXkgb2Yg cmVnaXN0ZXJpbmcgc2htZW0KKyAqIGFyZWFzLiAgSXQgcHJlLWRhdGVzIHRoZSBTaG1lbVJl cXVlc3RTdHJ1Y3QoKS9TaG1lbVJlcXVlc3RIYXNoKCkgZnVuY3Rpb25zLAorICogYW5kIHNo b3VsZCBub3QgYmUgdXNlZCBpbiBuZXcgY29kZSwgYnV0IGFzIG9mIHRoaXMgd3JpdGluZyBp dCBpcyBzdGlsbAorICogd2lkZWx5IHVzZWQgaW4gZXh0ZW5zaW9ucy4KKyAqCisgKiBUbyBh bGxvY2F0ZSBhIHNobWVtIGFyZWEgd2l0aCBTaG1lbUluaXRTdHJ1Y3QoKSwgeW91IG5lZWQg dG8gc2VwYXJhdGVseQorICogcmVnaXN0ZXIgdGhlIHNpemUgbmVlZGVkIGZvciB0aGUgYXJl YSBieSBjYWxsaW5nIFJlcXVlc3RBZGRpblNobWVtU3BhY2UoKQorICogZnJvbSB0aGUgZXh0 ZW5zaW9uJ3Mgc2htZW1fcmVxdWVzdF9ob29rLCBhbmQgYWxsb2NhdGUgdGhlIGFyZWEgYnkg Y2FsbGluZworICogU2htZW1Jbml0U3RydWN0KCkgZnJvbSB0aGUgZXh0ZW5zaW9uJ3Mgc2ht ZW1fc3RhcnR1cF9ob29rLiAgVGhlcmUgYXJlIG5vCisgKiBpbml0L2F0dGFjaCBjYWxsYmFj a3MuICBJbnN0ZWFkLCB0aGUgY2FsbGVyIG9mIFNobWVtSW5pdFN0cnVjdCgpIG11c3QgY2hl Y2sKKyAqIHRoZSByZXR1cm4gc3RhdHVzIG9mIFNobWVtSW5pdFN0cnVjdCgpIGFuZCBpbml0 aWFsaXplIHRoZSBzdHJ1Y3QgaWYgaXQgd2FzCisgKiBub3QgcHJldmlvdXNseSBpbml0aWFs aXplZC4KKyAqCisgKiBDYWxsaW5nIFNobWVtQWxsb2MoKSBkaXJlY3RseQorICogLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiBUaGVyZSdzIGEgbW9yZSBsb3ctbGV2 ZWwgd2F5IG9mIGFsbG9jYXRpbmcgc2hhcmVkIG1lbW9yeSB0b286IHlvdSBjYW4gY2FsbAor ICogU2htZW1BbGxvYygpIGRpcmVjdGx5LiAgSXQncyB1c2VkIHRvIGltcGxlbWVudCB0aGUg aGlnaGVyIGxldmVsIG1lY2hhbmlzbXMsCisgKiBhbmQgc2hvdWxkIGdlbmVyYWxseSBub3Qg YmUgY2FsbGVkIGRpcmVjdGx5LgogICovCiAKICNpbmNsdWRlICJwb3N0Z3Jlcy5oIgpAQCAt NzUsNiArMTQyLDc1IEBACiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRl ICJ1dGlscy90dXBsZXN0b3JlLmgiCiAKKy8qCisgKiBSZWdpc3RlcmVkIGNhbGxiYWNrcy4K KyAqCisgKiBEdXJpbmcgcG9zdG1hc3RlciBzdGFydHVwLCB3ZSBhY2N1bXVsYXRlIHRoZSBj YWxsYmFja3MgZnJvbSBhbGwgc3Vic3lzdGVtcworICogaW4gdGhpcyBsaXN0LgorICoKKyAq IFRoaXMgaXMgaW4gcHJvY2VzcyBwcml2YXRlIG1lbW9yeSwgYWx0aG91Z2ggb24gVW5peC1s aWtlIHN5c3RlbXMsIHdlIGV4cGVjdAorICogYWxsIHRoZSByZWdpc3RyYXRpb25zIHRvIGhh cHBlbiBhdCBwb3N0bWFzdGVyIHN0YXJ0dXAgdGltZSBhbmQgYmUgaW5oZXJpdGVkCisgKiBi eSBhbGwgdGhlIGNoaWxkIHByb2Nlc3NlcyB2aWEgZm9yaygpLgorICovCitzdGF0aWMgTGlz dCAqcmVnaXN0ZXJlZF9zaG1lbV9jYWxsYmFja3M7CisKKy8qCisgKiBJbiB0aGUgc2htZW0g cmVxdWVzdCBwaGFzZSwgYWxsIHRoZSBzaG1lbSBhcmVhcyByZXF1ZXN0ZWQgd2l0aCB0aGUK KyAqIFNobWVtUmVxdWVzdCooKSBmdW5jdGlvbnMgYXJlIGFjY3VtdWxhdGVkIGhlcmUuCisg Ki8KK3R5cGVkZWYgc3RydWN0Cit7CisJU2htZW1TdHJ1Y3RPcHRzICpvcHRpb25zOworCVNo bWVtUmVxdWVzdEtpbmQga2luZDsKK30gU2htZW1SZXF1ZXN0OworCitzdGF0aWMgTGlzdCAq cGVuZGluZ19zaG1lbV9yZXF1ZXN0czsKKworLyoKKyAqIFBlci1wcm9jZXNzIHN0YXRlIG1h Y2hpbmUsIGZvciBzYW5pdHkgY2hlY2tpbmcgdGhhdCB3ZSBkbyB0aGluZ3MgaW4gdGhlCisg KiByaWdodCBvcmRlci4KKyAqCisgKiBQb3N0bWFzdGVyOgorICogICBJTklUSUFMIC0+IFJF UVVFU1RJTkcgLT4gSU5JVElBTElaSU5HIC0+IERPTkUKKyAqCisgKiBCYWNrZW5kcyBpbiBF WEVDX0JBQ0tFTkQgbW9kZToKKyAqICAgSU5JVElBTCAtPiBSRVFVRVNUSU5HIC0+IEFUVEFD SElORyAtPiBET05FCisgKgorICogTGF0ZSByZXF1ZXN0OgorICogICBET05FIC0+IFJFUVVF U1RJTkcgLT4gQUZURVJfU1RBUlRVUF9BVFRBQ0hfT1JfSU5JVCAtPiBET05FCisgKi8KK2Vu dW0gc2htZW1fcmVxdWVzdF9zdGF0ZQoreworCS8qIEluaXRpYWwgc3RhdGUgKi8KKwlTUlNf SU5JVElBTCwKKworCS8qCisJICogV2hlbiB3ZSBzdGFydCBjYWxsaW5nIHRoZSBzaG1lbV9y ZXF1ZXN0IGNhbGxiYWNrcywgd2UgZW50ZXIgdGhlCisJICogU1JTX1JFUVVFU1RJTkcgcGhh c2UuICBBbGwgU2htZW1SZXF1ZXN0U3RydWN0IGNhbGxzIGhhcHBlbiBpbiB0aGlzCisJICog c3RhdGUuCisJICovCisJU1JTX1JFUVVFU1RJTkcsCisKKwkvKgorCSAqIFBvc3RtYXN0ZXIg aGFzIGZpbmlzaGVkIGFsbCBzaG1lbSByZXF1ZXN0cywgYW5kIGlzIG5vdyBpbml0aWFsaXpp bmcgdGhlCisJICogc2hhcmVkIG1lbW9yeSBzZWdtZW50LiAgaW5pdF9mbiBjYWxsYmFja3Mg YXJlIGNhbGxlZCBpbiB0aGlzIHN0YXRlLgorCSAqLworCVNSU19JTklUSUFMSVpJTkcsCisK KwkvKgorCSAqIEEgcG9zdG1hc3RlciBjaGlsZCBwcm9jZXNzIGlzIHN0YXJ0aW5nIHVwLiAg YXR0YWNoX2ZuIGNhbGxiYWNrcyBhcmUKKwkgKiBjYWxsZWQgaW4gdGhpcyBzdGF0ZS4KKwkg Ki8KKwlTUlNfQVRUQUNISU5HLAorCisJLyogQW4gYWZ0ZXItc3RhcnR1cCBhbGxvY2F0aW9u IG9yIGF0dGFjaG1lbnQgaXMgaW4gcHJvZ3Jlc3MuICovCisJU1JTX0FGVEVSX1NUQVJUVVBf QVRUQUNIX09SX0lOSVQsCisKKwkvKiBOb3JtYWwgc3RhdGUgYWZ0ZXIgc2htZW0gaW5pdGlh bGl6YXRpb24gLyBhdHRhY2htZW50ICovCisJU1JTX0RPTkUsCit9Oworc3RhdGljIGVudW0g c2htZW1fcmVxdWVzdF9zdGF0ZSBzaG1lbV9yZXF1ZXN0X3N0YXRlID0gU1JTX0lOSVRJQUw7 CisKIC8qCiAgKiBUaGlzIGlzIHRoZSBmaXJzdCBkYXRhIHN0cnVjdHVyZSBzdG9yZWQgaW4g dGhlIHNoYXJlZCBtZW1vcnkgc2VnbWVudCwgYXQKICAqIHRoZSBvZmZzZXQgdGhhdCBQR1No bWVtSGVhZGVyLT5jb250ZW50X29mZnNldCBwb2ludHMgdG8uICBBbGxvY2F0aW9ucyBieQpA QCAtMTA2LDI1ICsyNDIsMzgxIEBAIHN0YXRpYyB2b2lkICpTaG1lbUJhc2U7CQkJLyogc3Rh cnQgYWRkcmVzcyBvZiBzaGFyZWQgbWVtb3J5ICovCiBzdGF0aWMgdm9pZCAqU2htZW1FbmQ7 CQkJLyogZW5kKzEgYWRkcmVzcyBvZiBzaGFyZWQgbWVtb3J5ICovCiAKIHN0YXRpYyBTaG1l bUFsbG9jYXRvckRhdGEgKlNobWVtQWxsb2NhdG9yOwotc3RhdGljIEhUQUIgKlNobWVtSW5k ZXggPSBOVUxMOyAvKiBwcmltYXJ5IGluZGV4IGhhc2h0YWJsZSBmb3Igc2htZW0gKi8KKwor LyoKKyAqIFNobWVtSW5kZXggaXMgYSBnbG9iYWwgZGlyZWN0b3J5IG9mIHNobWVtIGFyZWFz LCBpdHNlbGYgYWxzbyBzdG9yZWQgaW4gdGhlCisgKiBzaGFyZWQgbWVtb3J5LgorICovCitz dGF0aWMgSFRBQiAqU2htZW1JbmRleDsKKworIC8qIG1heCBzaXplIG9mIGRhdGEgc3RydWN0 dXJlIHN0cmluZyBuYW1lICovCisjZGVmaW5lIFNITUVNX0lOREVYX0tFWVNJWkUJCSAoNDgp CisKKy8qCisgKiAjIG9mIGFkZGl0aW9uYWwgZW50cmllcyB0byByZXNlcnZlIGluIHRoZSBz aG1lbSBpbmRleCB0YWJsZSwgZm9yCisgKiBhbGxvY2F0aW9ucyBhZnRlciBwb3N0bWFzdGVy IHN0YXJ0dXAuICAoVGhpcyBpcyBub3QgYSBoYXJkIGxpbWl0LCB0aGUgaGFzaAorICogdGFi bGUgY2FuIGdyb3cgbGFyZ2VyIHRoYW4gdGhhdCBpZiB0aGVyZSBpcyBzaGFyZWQgbWVtb3J5 IGF2YWlsYWJsZSkKKyAqLworI2RlZmluZSBTSE1FTV9JTkRFWF9BRERJVElPTkFMX1NJWkUJ CSAoMTI4KQorCisvKiB0aGlzIGlzIGEgaGFzaCBidWNrZXQgaW4gdGhlIHNobWVtIGluZGV4 IHRhYmxlICovCit0eXBlZGVmIHN0cnVjdAoreworCWNoYXIJCWtleVtTSE1FTV9JTkRFWF9L RVlTSVpFXTsJLyogc3RyaW5nIG5hbWUgKi8KKwl2b2lkCSAgICpsb2NhdGlvbjsJCS8qIGxv Y2F0aW9uIGluIHNoYXJlZCBtZW0gKi8KKwlTaXplCQlzaXplOwkJCS8qICMgYnl0ZXMgcmVx dWVzdGVkIGZvciB0aGUgc3RydWN0dXJlICovCisJU2l6ZQkJYWxsb2NhdGVkX3NpemU7IC8q ICMgYnl0ZXMgYWN0dWFsbHkgYWxsb2NhdGVkICovCit9IFNobWVtSW5kZXhFbnQ7CiAKIC8q IFRvIGdldCByZWxpYWJsZSByZXN1bHRzIGZvciBOVU1BIGlucXVpcnkgd2UgbmVlZCB0byAi dG91Y2ggcGFnZXMiIG9uY2UgKi8KIHN0YXRpYyBib29sIGZpcnN0TnVtYVRvdWNoID0gdHJ1 ZTsKIAorc3RhdGljIHZvaWQgQ2FsbFNobWVtQ2FsbGJhY2tzQWZ0ZXJTdGFydHVwKGNvbnN0 IFNobWVtQ2FsbGJhY2tzICpjYWxsYmFja3MpOworc3RhdGljIHZvaWQgSW5pdFNobWVtSW5k ZXhFbnRyeShTaG1lbVJlcXVlc3QgKnJlcXVlc3QpOworc3RhdGljIGJvb2wgQXR0YWNoU2ht ZW1JbmRleEVudHJ5KFNobWVtUmVxdWVzdCAqcmVxdWVzdCwgYm9vbCBtaXNzaW5nX29rKTsK KwogRGF0dW0JCXBnX251bWFfYXZhaWxhYmxlKFBHX0ZVTkNUSU9OX0FSR1MpOwogCisvKgor ICoJU2htZW1SZXF1ZXN0U3RydWN0KCkgLS0tIHJlcXVlc3QgYSBuYW1lZCBzaGFyZWQgbWVt b3J5IGFyZWEKKyAqCisgKiBTdWJzeXN0ZW1zIGNhbGwgdGhpcyB0byByZWdpc3RlciB0aGVp ciBzaGFyZWQgbWVtb3J5IG5lZWRzLiAgVGhpcyBpcworICogdXN1YWxseSBkb25lIGVhcmx5 IGluIHBvc3RtYXN0ZXIgc3RhcnR1cCwgYmVmb3JlIHRoZSBzaGFyZWQgbWVtb3J5IHNlZ21l bnQKKyAqIGhhcyBiZWVuIGNyZWF0ZWQsIHNvIHRoYXQgdGhlIHNpemUgY2FuIGJlIGluY2x1 ZGVkIGluIHRoZSBlc3RpbWF0ZSBmb3IKKyAqIHRvdGFsIGFtb3VudCBvZiBzaGFyZWQgbWVt b3J5IG5lZWRlZC4gIFdlIHNldCBhc2lkZSBhIHNtYWxsIGFtb3VudCBvZgorICogbWVtb3J5 IGZvciBhbGxvY2F0aW9ucyB0aGF0IGhhcHBlbiBsYXRlciwgZm9yIHRoZSBiZW5lZml0IG9m IG5vbi1wcmVsb2FkZWQKKyAqIGV4dGVuc2lvbnMsIGJ1dCB0aGF0IHNob3VsZCBub3QgYmUg cmVsaWVkIHVwb24uCisgKgorICogVGhpcyBkb2VzIG5vdCB5ZXQgYWxsb2NhdGUgdGhlIG1l bW9yeSwgYnV0IG1lcmVseSByZWdpc3RlcnMgdGhlIG5lZWQgZm9yCisgKiBpdC4gIFRoZSBh Y3R1YWwgYWxsb2NhdGlvbiBoYXBwZW5zIGxhdGVyIGluIHRoZSBwb3N0bWFzdGVyIHN0YXJ0 dXAKKyAqIHNlcXVlbmNlLgorICoKKyAqIFRoaXMgbXVzdCBiZSBjYWxsZWQgZnJvbSBhIHNo bWVtX3JlcXVlc3QgY2FsbGJhY2sgZnVuY3Rpb24sIHJlZ2lzdGVyZWQgd2l0aAorICogUmVn aXN0ZXJTaG1lbUNhbGxiYWNrcygpLiAgVGhpcyBlbmZvcmNlcyBhIGNvZGluZyBwYXR0ZXJu IHRoYXQgd29ya3MgdGhlCisgKiBzYW1lIGluIG5vcm1hbCBVbml4IHN5c3RlbXMgYW5kIHdp dGggRVhFQ19CQUNLRU5ELiAgT24gVW5peCBzeXN0ZW1zLCB0aGUKKyAqIHNobWVtX3JlcXVl c3QgY2FsbGJhY2tzIGFyZSBjYWxsZWQgb25jZSwgZWFybHkgaW4gcG9zdG1hc3RlciBzdGFy dHVwLCBhbmQKKyAqIHRoZSBjaGlsZCBwcm9jZXNzZXMgaW5oZXJpdCB0aGUgc3RydWN0IGRl c2NyaXB0b3JzIGFuZCBhbnkgb3RoZXIKKyAqIHBlci1wcm9jZXNzIHN0YXRlIGZyb20gdGhl IHBvc3RtYXN0ZXIuICBJbiBFWEVDX0JBQ0tFTkQgbW9kZSwgc2htZW1fcmVxdWVzdAorICog Y2FsbGJhY2tzIGFyZSAqYWxzbyogY2FsbGVkIGluIGVhY2ggYmFja2VuZCwgYXQgYmFja2Vu ZCBzdGFydHVwLCB0bworICogcmUtZXN0YWJsaXNoIHRoZSBzdHJ1Y3QgZGVzY3JpcHRvcnMu ICBCeSBjYWxsaW5nIHRoZSBzYW1lIGZ1bmN0aW9uIGluIGJvdGgKKyAqIGNhc2VzLCB3ZSBl bnN1cmUgdGhhdCBhbGwgdGhlIHNobWVtIGFyZWFzIGFyZSByZWdpc3RlcmVkIHRoZSBzYW1l IHdheSBpbgorICogYWxsIHByb2Nlc3Nlcy4KKyAqCisgKiAnZGVzYycgaXMgYSBiYWNrZW5k LXByaXZhdGUgaGFuZGxlIGZvciB0aGUgc2hhcmVkIG1lbW9yeSBhcmVhLgorICoKKyAqICdv cHRpb25zJyBkZWZpbmVzIHRoZSBuYW1lIGFuZCBzaXplIG9mIHRoZSBhcmVhLCBhbmQgYW55 IG90aGVyIG9wdGlvbmFsCisgKiBmZWF0dXJlcy4gIExlYXZlIHVudXNlZCBvcHRpb25zIGFz IHplcm9zLiAgVGhlIG9wdGlvbnMgYXJlIGNvcGllZCB0bworICogbG9uZ2VyLWxpdmVkIG1l bW9yeSwgc28gaXQgZG9lc24ndCBuZWVkIHRvIGxpdmUgYWZ0ZXIgdGhlCisgKiBTaG1lbVJl cXVlc3RTdHJ1Y3QoKSBjYWxsIGFuZCBjYW4gcG9pbnQgdG8gYSBsb2NhbCB2YXJpYWJsZSBp biB0aGUgY2FsbGluZworICogZnVuY3Rpb24uICBUaGUgJ25hbWUnIG11c3QgcG9pbnQgdG8g YSBsb25nLWxpdmVkIHN0cmluZyB0aG91Z2gsIG9ubHkgdGhlCisgKiBwb2ludGVyIHRvIGl0 IGlzIGNvcGllZC4KKyAqLwordm9pZAorU2htZW1SZXF1ZXN0U3RydWN0V2l0aE9wdHMoY29u c3QgU2htZW1TdHJ1Y3RPcHRzICpvcHRpb25zKQoreworCVNobWVtU3RydWN0T3B0cyAqb3B0 aW9uc19jb3B5OworCisJb3B0aW9uc19jb3B5ID0gTWVtb3J5Q29udGV4dEFsbG9jKFRvcE1l bW9yeUNvbnRleHQsCisJCQkJCQkJCQkgIHNpemVvZihTaG1lbVN0cnVjdE9wdHMpKTsKKwlt ZW1jcHkob3B0aW9uc19jb3B5LCBvcHRpb25zLCBzaXplb2YoU2htZW1TdHJ1Y3RPcHRzKSk7 CisKKwlTaG1lbVJlcXVlc3RJbnRlcm5hbChvcHRpb25zX2NvcHksIFNITUVNX0tJTkRfU1RS VUNUKTsKK30KKworLyoKKyAqIEludGVybmFsIHdvcmtob3JzZSBvZiBTaG1lbVJlcXVlc3RT dHJ1Y3QoKSBhbmQgU2htZW1SZXF1ZXN0SGFzaCgpLgorICoKKyAqIE5vdGU6ICdkZXNjJyBh bmQgJ29wdGlvbnMnIG11c3QgbGl2ZSB1bnRpbCB0aGUgaW5pdC9hdHRhY2ggY2FsbGJhY2tz IGhhdmUKKyAqIGJlZW4gY2FsbGVkLiAgVW5saWtlIGluIHRoZSBwdWJsaWMgU2htZW1SZXF1 ZXN0U3RydWN0KCkgYW5kCisgKiBTaG1lbVJlcXVlc3RIYXNoKCkgZnVuY3Rpb25zLCAnb3B0 aW9ucycgaXMgKm5vdCogY29waWVkLiAgVGhpcyBhbGxvd3MKKyAqIFNobWVtUmVxdWVzdEhh c2goKSB0byBwYXNzIGEgcG9pbnRlciB0byB0aGUgZXh0ZW5kZWQgU2htZW1SZXF1ZXN0SGFz aE9wdHMKKyAqIHN0cnVjdCBpbnN0ZWFkLgorICovCit2b2lkCitTaG1lbVJlcXVlc3RJbnRl cm5hbChTaG1lbVN0cnVjdE9wdHMgKm9wdGlvbnMsIFNobWVtUmVxdWVzdEtpbmQga2luZCkK K3sKKwlTaG1lbVJlcXVlc3QgKnJlcXVlc3Q7CisKKwlpZiAob3B0aW9ucy0+bmFtZSA9PSBO VUxMKQorCQllbG9nKEVSUk9SLCAic2hhcmVkIG1lbW9yeSByZXF1ZXN0IGlzIG1pc3Npbmcg J25hbWUnIG9wdGlvbiIpOworCisJaWYgKElzVW5kZXJQb3N0bWFzdGVyKQorCXsKKwkJaWYg KG9wdGlvbnMtPnNpemUgPD0gMCAmJiBvcHRpb25zLT5zaXplICE9IFNITUVNX0FUVEFDSF9V TktOT1dOX1NJWkUpCisJCQllbG9nKEVSUk9SLCAiaW52YWxpZCBzaXplICV6ZCBmb3Igc2hh cmVkIG1lbW9yeSByZXF1ZXN0IGZvciBcIiVzXCIiLAorCQkJCSBvcHRpb25zLT5zaXplLCBv cHRpb25zLT5uYW1lKTsKKwl9CisJZWxzZQorCXsKKwkJaWYgKG9wdGlvbnMtPnNpemUgPT0g U0hNRU1fQVRUQUNIX1VOS05PV05fU0laRSkKKwkJCWVsb2coRVJST1IsICJTSE1FTV9BVFRB Q0hfVU5LTk9XTl9TSVpFIGNhbm5vdCBiZSB1c2VkIGR1cmluZyBzdGFydHVwIik7CisJCWlm IChvcHRpb25zLT5zaXplIDw9IDApCisJCQllbG9nKEVSUk9SLCAiaW52YWxpZCBzaXplICV6 ZCBmb3Igc2hhcmVkIG1lbW9yeSByZXF1ZXN0IGZvciBcIiVzXCIiLAorCQkJCSBvcHRpb25z LT5zaXplLCBvcHRpb25zLT5uYW1lKTsKKwl9CisKKwlpZiAoc2htZW1fcmVxdWVzdF9zdGF0 ZSAhPSBTUlNfUkVRVUVTVElORykKKwkJZWxvZyhFUlJPUiwgIlNobWVtUmVxdWVzdFN0cnVj dCBjYW4gb25seSBiZSBjYWxsZWQgZnJvbSBhIHNobWVtX3JlcXVlc3QgY2FsbGJhY2siKTsK KworCS8qIENoZWNrIHRoYXQgaXQncyBub3QgYWxyZWFkeSByZWdpc3RlcmVkIGluIHRoaXMg cHJvY2VzcyAqLworCWZvcmVhY2hfcHRyKFNobWVtUmVxdWVzdCwgZXhpc3RpbmcsIHBlbmRp bmdfc2htZW1fcmVxdWVzdHMpCisJeworCQlpZiAoc3RyY21wKGV4aXN0aW5nLT5vcHRpb25z LT5uYW1lLCBvcHRpb25zLT5uYW1lKSA9PSAwKQorCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJ KGVycm1zZygic2hhcmVkIG1lbW9yeSBzdHJ1Y3QgXCIlc1wiIGlzIGFscmVhZHkgcmVnaXN0 ZXJlZCIsCisJCQkJCQkJb3B0aW9ucy0+bmFtZSkpKTsKKwl9CisKKwkvKiBSZXF1ZXN0IGxv b2tzIHZhbGlkLCByZW1lbWJlciBpdCAqLworCXJlcXVlc3QgPSBwYWxsb2Moc2l6ZW9mKFNo bWVtUmVxdWVzdCkpOworCXJlcXVlc3QtPm9wdGlvbnMgPSBvcHRpb25zOworCXJlcXVlc3Qt PmtpbmQgPSBraW5kOworCXBlbmRpbmdfc2htZW1fcmVxdWVzdHMgPSBsYXBwZW5kKHBlbmRp bmdfc2htZW1fcmVxdWVzdHMsIHJlcXVlc3QpOworfQorCisvKgorICoJU2htZW1HZXRSZXF1 ZXN0ZWRTaXplKCkgLS0tIGVzdGltYXRlIHRoZSB0b3RhbCBzaXplIG9mIGFsbCByZWdpc3Rl cmVkIHNoYXJlZAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW1vcnkgc3Ry dWN0dXJlcy4KKyAqCisgKiBUaGlzIGlzIGNhbGxlZCBhdCBwb3N0bWFzdGVyIHN0YXJ0dXAs IGJlZm9yZSB0aGUgc2hhcmVkIG1lbW9yeSBzZWdtZW50IGhhcworICogYmVlbiBjcmVhdGVk LgorICovCitzaXplX3QKK1NobWVtR2V0UmVxdWVzdGVkU2l6ZSh2b2lkKQoreworCXNpemVf dAkJc2l6ZTsKKworCS8qIG1lbW9yeSBuZWVkZWQgZm9yIHRoZSBTaG1lbUluZGV4ICovCisJ c2l6ZSA9IGhhc2hfZXN0aW1hdGVfc2l6ZShsaXN0X2xlbmd0aChwZW5kaW5nX3NobWVtX3Jl cXVlc3RzKSArIFNITUVNX0lOREVYX0FERElUSU9OQUxfU0laRSwKKwkJCQkJCQkgIHNpemVv ZihTaG1lbUluZGV4RW50KSk7CisJc2l6ZSA9IENBQ0hFTElORUFMSUdOKHNpemUpOworCisJ LyogbWVtb3J5IG5lZWRlZCBmb3IgYWxsIHRoZSByZXF1ZXN0ZWQgYXJlYXMgKi8KKwlmb3Jl YWNoX3B0cihTaG1lbVJlcXVlc3QsIHJlcXVlc3QsIHBlbmRpbmdfc2htZW1fcmVxdWVzdHMp CisJeworCQlzaXplID0gYWRkX3NpemUoc2l6ZSwgcmVxdWVzdC0+b3B0aW9ucy0+c2l6ZSk7 CisJCS8qIGNhbGN1bGF0ZSBhbGlnbm1lbnQgcGFkZGluZyBsaWtlIFNobWVtQWxsb2NSYXco KSBkb2VzICovCisJCXNpemUgPSBDQUNIRUxJTkVBTElHTihzaXplKTsKKwl9CisKKwlyZXR1 cm4gc2l6ZTsKK30KKworLyoKKyAqCVNobWVtSW5pdFJlcXVlc3RlZCgpIC0tLSBhbGxvY2F0 ZSBhbmQgaW5pdGlhbGl6ZSByZXF1ZXN0ZWQgc2hhcmVkIG1lbW9yeQorICogICAgICAgICAg ICAgICAgICAgICAgICAgICAgc3RydWN0dXJlcy4KKyAqCisgKiBUaGlzIGlzIGNhbGxlZCBv bmNlIGF0IHBvc3RtYXN0ZXIgc3RhcnR1cCwgYWZ0ZXIgdGhlIHNoYXJlZCBtZW1vcnkgc2Vn bWVudAorICogaGFzIGJlZW4gY3JlYXRlZC4KKyAqLwordm9pZAorU2htZW1Jbml0UmVxdWVz dGVkKHZvaWQpCit7CisJLyogU2hvdWxkIGJlIGNhbGxlZCBvbmx5IGJ5IHRoZSBwb3N0bWFz dGVyIG9yIGEgc3RhbmRhbG9uZSBiYWNrZW5kLiAqLworCUFzc2VydCghSXNVbmRlclBvc3Rt YXN0ZXIpOworCUFzc2VydChzaG1lbV9yZXF1ZXN0X3N0YXRlID09IFNSU19JTklUSUFMSVpJ TkcpOworCisJLyoKKwkgKiBJbml0aWFsaXplIHRoZSBTaG1lbUluZGV4IGVudHJpZXMgYW5k IHBlcmZvcm0gYmFzaWMgaW5pdGlhbGl6YXRpb24gb2YKKwkgKiBhbGwgdGhlIHJlcXVlc3Rl ZCBtZW1vcnkgYXJlYXMuICBUaGVyZSBhcmUgbm8gY29uY3VycmVudCBwcm9jZXNzZXMgeWV0 LAorCSAqIHNvIG5vIG5lZWQgZm9yIGxvY2tpbmcuCisJICovCisJZm9yZWFjaF9wdHIoU2ht ZW1SZXF1ZXN0LCByZXF1ZXN0LCBwZW5kaW5nX3NobWVtX3JlcXVlc3RzKQorCXsKKwkJSW5p dFNobWVtSW5kZXhFbnRyeShyZXF1ZXN0KTsKKwl9CisJbGlzdF9mcmVlX2RlZXAocGVuZGlu Z19zaG1lbV9yZXF1ZXN0cyk7CisJcGVuZGluZ19zaG1lbV9yZXF1ZXN0cyA9IE5JTDsKKwor CS8qCisJICogQ2FsbCB0aGUgc3Vic3lzdGVtLXNwZWNpZmljIGluaXQgY2FsbGJhY2tzIHRv IGZpbmlzaCBpbml0aWFsaXphdGlvbiBvZgorCSAqIGFsbCB0aGUgYXJlYXMuCisJICovCisJ Zm9yZWFjaF9wdHIoY29uc3QgU2htZW1DYWxsYmFja3MsIGNhbGxiYWNrcywgcmVnaXN0ZXJl ZF9zaG1lbV9jYWxsYmFja3MpCisJeworCQlpZiAoY2FsbGJhY2tzLT5pbml0X2ZuKQorCQkJ Y2FsbGJhY2tzLT5pbml0X2ZuKGNhbGxiYWNrcy0+b3BhcXVlX2FyZyk7CisJfQorCisJc2ht ZW1fcmVxdWVzdF9zdGF0ZSA9IFNSU19ET05FOworfQorCisvKgorICogUmUtZXN0YWJsaXNo IHByb2Nlc3MgcHJpdmF0ZSBzdGF0ZSByZWxhdGVkIHRvIHNobWVtIGFyZWFzLgorICoKKyAq IFRoaXMgaXMgY2FsbGVkIGF0IGJhY2tlbmQgc3RhcnR1cCBpbiBFWEVDX0JBQ0tFTkQgbW9k ZSwgaW4gZXZlcnkgYmFja2VuZC4KKyAqLworI2lmZGVmIEVYRUNfQkFDS0VORAordm9pZAor U2htZW1BdHRhY2hSZXF1ZXN0ZWQodm9pZCkKK3sKKwlMaXN0Q2VsbCAgICpsYzsKKworCS8q IE11c3QgYmUgaW5pdGlhbGl6aW5nIGEgKG5vbi1zdGFuZGFsb25lKSBiYWNrZW5kICovCisJ QXNzZXJ0KElzVW5kZXJQb3N0bWFzdGVyKTsKKwlBc3NlcnQoU2htZW1BbGxvY2F0b3ItPmlu ZGV4ICE9IE5VTEwpOworCUFzc2VydChzaG1lbV9yZXF1ZXN0X3N0YXRlID09IFNSU19SRVFV RVNUSU5HKTsKKwlzaG1lbV9yZXF1ZXN0X3N0YXRlID0gU1JTX0FUVEFDSElORzsKKworCUxX TG9ja0FjcXVpcmUoU2htZW1JbmRleExvY2ssIExXX1NIQVJFRCk7CisKKwkvKgorCSAqIEF0 dGFjaCB0byBhbGwgdGhlIHJlcXVlc3RlZCBtZW1vcnkgYXJlYXMuCisJICovCisJZm9yZWFj aF9wdHIoU2htZW1SZXF1ZXN0LCByZXF1ZXN0LCBwZW5kaW5nX3NobWVtX3JlcXVlc3RzKQor CXsKKwkJQXR0YWNoU2htZW1JbmRleEVudHJ5KHJlcXVlc3QsIGZhbHNlKTsKKwl9CisJbGlz dF9mcmVlX2RlZXAocGVuZGluZ19zaG1lbV9yZXF1ZXN0cyk7CisJcGVuZGluZ19zaG1lbV9y ZXF1ZXN0cyA9IE5JTDsKKworCS8qIENhbGwgYXR0YWNoIGNhbGxiYWNrcyAqLworCWZvcmVh Y2gobGMsIHJlZ2lzdGVyZWRfc2htZW1fY2FsbGJhY2tzKQorCXsKKwkJY29uc3QgU2htZW1D YWxsYmFja3MgKmNhbGxiYWNrcyA9IChjb25zdCBTaG1lbUNhbGxiYWNrcyAqKSBsZmlyc3Qo bGMpOworCisJCWlmIChjYWxsYmFja3MtPmF0dGFjaF9mbikKKwkJCWNhbGxiYWNrcy0+YXR0 YWNoX2ZuKGNhbGxiYWNrcy0+YXR0YWNoX2ZuX2FyZyk7CisJfQorCisJTFdMb2NrUmVsZWFz ZShTaG1lbUluZGV4TG9jayk7CisKKwlzaG1lbV9yZXF1ZXN0X3N0YXRlID0gU1JTX0RPTkU7 Cit9CisjZW5kaWYKKworLyoKKyAqIEluc2VydCByZXF1ZXN0ZWQgc2htZW0gYXJlYSBpbnRv IHRoZSBzaGFyZWQgbWVtb3J5IGluZGV4IGFuZCBpbml0aWFsaXplIGl0LgorICoKKyAqIE5v dGUgdGhhdCB0aGlzIG9ubHkgZG9lcyBwZXJmb3JtcyBiYXNpYyBpbml0aWFsaXphdGlvbiBk ZXBlbmRpbmcgb24KKyAqIFNobWVtUmVxdWVzdEtpbmQsIGxpa2Ugc2V0dGluZyB0aGUgZ2xv YmFsIHBvaW50ZXIgdmFyaWFibGUgdG8gdGhlIGFyZWEgZm9yCisgKiBTSE1FTV9LSU5EX1NU UlVDVCBvciBzZXR0aW5nIHVwIHRoZSBiYWNrZW5kLXByaXZhdGUgSFRBQiBjb250cm9sIHN0 cnVjdC4KKyAqIFRoaXMgZG9lcyAqbm90KiBjYWxsIHRoZSBzdWJzeXN0ZW0tc3BlY2lmaWMg aW5pdCBjYWxsYmFja3MuICBUaGF0J3MgZG9uZQorICogbGF0ZXIgYWZ0ZXIgYWxsIHRoZSBz aG1lbSBhcmVhcyBoYXZlIGJlZW4gaW5pdGlhbGl6ZWQgb3IgYXR0YWNoZWQgdG8uCisgKi8K K3N0YXRpYyB2b2lkCitJbml0U2htZW1JbmRleEVudHJ5KFNobWVtUmVxdWVzdCAqcmVxdWVz dCkKK3sKKwljb25zdCBjaGFyICpuYW1lID0gcmVxdWVzdC0+b3B0aW9ucy0+bmFtZTsKKwlT aG1lbUluZGV4RW50ICppbmRleF9lbnRyeTsKKwlib29sCQlmb3VuZDsKKwlzaXplX3QJCWFs bG9jYXRlZF9zaXplOworCXZvaWQJICAgKnN0cnVjdFB0cjsKKworCS8qIGxvb2sgaXQgdXAg aW4gdGhlIHNobWVtIGluZGV4ICovCisJaW5kZXhfZW50cnkgPSAoU2htZW1JbmRleEVudCAq KQorCQloYXNoX3NlYXJjaChTaG1lbUluZGV4LCBuYW1lLCBIQVNIX0VOVEVSX05VTEwsICZm b3VuZCk7CisJaWYgKGZvdW5kKQorCQllbG9nKEVSUk9SLCAic2hhcmVkIG1lbW9yeSBzdHJ1 Y3QgXCIlc1wiIGlzIGFscmVhZHkgaW5pdGlhbGl6ZWQiLCBuYW1lKTsKKwlpZiAoIWluZGV4 X2VudHJ5KQorCXsKKwkJLyogdHJpZWQgdG8gYWRkIGl0IHRvIHRoZSBoYXNoIHRhYmxlLCBi dXQgdGhlcmUgd2FzIG5vIHNwYWNlICovCisJCWVyZXBvcnQoRVJST1IsCisJCQkJKGVycmNv ZGUoRVJSQ09ERV9PVVRfT0ZfTUVNT1JZKSwKKwkJCQkgZXJybXNnKCJjb3VsZCBub3QgY3Jl YXRlIFNobWVtSW5kZXggZW50cnkgZm9yIGRhdGEgc3RydWN0dXJlIFwiJXNcIiIsCisJCQkJ CQluYW1lKSkpOworCX0KKworCS8qCisJICogV2UgaW5zZXJ0ZWQgdGhlIGVudHJ5IHRvIHRo ZSBzaGFyZWQgbWVtb3J5IGluZGV4LiAgQWxsb2NhdGUgcmVxdWVzdGVkCisJICogYW1vdW50 IG9mIHNoYXJlZCBtZW1vcnkgZm9yIGl0LCBhbmQgaW5pdGlhbGl6ZSB0aGUgaW5kZXggZW50 cnkuCisJICovCisJc3RydWN0UHRyID0gU2htZW1BbGxvY1JhdyhyZXF1ZXN0LT5vcHRpb25z LT5zaXplLCAmYWxsb2NhdGVkX3NpemUpOworCWlmIChzdHJ1Y3RQdHIgPT0gTlVMTCkKKwl7 CisJCS8qIG91dCBvZiBtZW1vcnk7IHJlbW92ZSB0aGUgZmFpbGVkIFNobWVtSW5kZXggZW50 cnkgKi8KKwkJaGFzaF9zZWFyY2goU2htZW1JbmRleCwgbmFtZSwgSEFTSF9SRU1PVkUsIE5V TEwpOworCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJjb2RlKEVSUkNPREVfT1VUX09GX01F TU9SWSksCisJCQkJIGVycm1zZygibm90IGVub3VnaCBzaGFyZWQgbWVtb3J5IGZvciBkYXRh IHN0cnVjdHVyZSIKKwkJCQkJCSIgXCIlc1wiICglenUgYnl0ZXMgcmVxdWVzdGVkKSIsCisJ CQkJCQluYW1lLCByZXF1ZXN0LT5vcHRpb25zLT5zaXplKSkpOworCX0KKwlpbmRleF9lbnRy eS0+c2l6ZSA9IHJlcXVlc3QtPm9wdGlvbnMtPnNpemU7CisJaW5kZXhfZW50cnktPmFsbG9j YXRlZF9zaXplID0gYWxsb2NhdGVkX3NpemU7CisJaW5kZXhfZW50cnktPmxvY2F0aW9uID0g c3RydWN0UHRyOworCisJLyogSW5pdGlhbGl6ZSBkZXBlbmRpbmcgb24gdGhlIGtpbmQgb2Yg c2htZW0gYXJlYSBpdCBpcyAqLworCXN3aXRjaCAocmVxdWVzdC0+a2luZCkKKwl7CisJCWNh c2UgU0hNRU1fS0lORF9TVFJVQ1Q6CisJCQlpZiAocmVxdWVzdC0+b3B0aW9ucy0+cHRyKQor CQkJCSoocmVxdWVzdC0+b3B0aW9ucy0+cHRyKSA9IGluZGV4X2VudHJ5LT5sb2NhdGlvbjsK KwkJCWJyZWFrOworCQljYXNlIFNITUVNX0tJTkRfSEFTSDoKKwkJCXNobWVtX2hhc2hfaW5p dChzdHJ1Y3RQdHIsIHJlcXVlc3QtPm9wdGlvbnMpOworCQkJYnJlYWs7CisJfQorfQorCisv KgorICogTG9vayB1cCBhIG5hbWVkIHNobWVtIGFyZWEgaW4gdGhlIHNoYXJlZCBtZW1vcnkg aW5kZXggYW5kIGF0dGFjaCB0byBpdC4KKyAqCisgKiBOb3RlIHRoYXQgdGhpcyBvbmx5IHBl cmZvcm1zIHRoZSBiYXNpYyBhdHRhY2htZW50IGFjdGlvbnMgZGVwZW5kaW5nIG9uCisgKiBT aG1lbVJlcXVlc3RLaW5kLCBsaWtlIHNldHRpbmcgdGhlIGdsb2JhbCBwb2ludGVyIHZhcmlh YmxlIHRvIHRoZSBhcmVhIGZvcgorICogU0hNRU1fS0lORF9TVFJVQ1Qgb3Igc2V0dGluZyB1 cCB0aGUgYmFja2VuZC1wcml2YXRlIEhUQUIgY29udHJvbCBzdHJ1Y3QuCisgKiBUaGlzIGRv ZXMgKm5vdCogY2FsbCB0aGUgc3Vic3lzdGVtLXNwZWNpZmljIGF0dGFjaCBjYWxsYmFja3Mu ICBUaGF0J3MgZG9uZQorICogbGF0ZXIgYWZ0ZXIgYWxsIHRoZSBzaG1lbSBhcmVhcyBoYXZl IGJlZW4gaW5pdGlhbGl6ZWQgb3IgYXR0YWNoZWQgdG8uCisgKi8KK3N0YXRpYyBib29sCitB dHRhY2hTaG1lbUluZGV4RW50cnkoU2htZW1SZXF1ZXN0ICpyZXF1ZXN0LCBib29sIG1pc3Np bmdfb2spCit7CisJY29uc3QgY2hhciAqbmFtZSA9IHJlcXVlc3QtPm9wdGlvbnMtPm5hbWU7 CisJU2htZW1JbmRleEVudCAqaW5kZXhfZW50cnk7CisKKwkvKiBsb29rIGl0IHVwIGluIHRo ZSBzaG1lbSBpbmRleCAqLworCWluZGV4X2VudHJ5ID0gKFNobWVtSW5kZXhFbnQgKikKKwkJ aGFzaF9zZWFyY2goU2htZW1JbmRleCwgbmFtZSwgSEFTSF9GSU5ELCBOVUxMKTsKKwlpZiAo IWluZGV4X2VudHJ5KQorCXsKKwkJaWYgKCFtaXNzaW5nX29rKQorCQkJZXJlcG9ydChFUlJP UiwKKwkJCQkJKGVycm1zZygiY291bGQgbm90IGZpbmQgU2htZW1JbmRleCBlbnRyeSBmb3Ig ZGF0YSBzdHJ1Y3R1cmUgXCIlc1wiIiwKKwkJCQkJCQlyZXF1ZXN0LT5vcHRpb25zLT5uYW1l KSkpOworCQlyZXR1cm4gZmFsc2U7CisJfQorCisJLyogQ2hlY2sgdGhhdCB0aGUgc2l6ZSBp biB0aGUgaW5kZXggbWF0Y2hlcyB0aGUgcmVxdWVzdC4gKi8KKwlpZiAoaW5kZXhfZW50cnkt PnNpemUgIT0gcmVxdWVzdC0+b3B0aW9ucy0+c2l6ZSAmJgorCQlyZXF1ZXN0LT5vcHRpb25z LT5zaXplICE9IFNITUVNX0FUVEFDSF9VTktOT1dOX1NJWkUpCisJeworCQllcmVwb3J0KEVS Uk9SLAorCQkJCShlcnJtc2coInNoYXJlZCBtZW1vcnkgc3RydWN0IFwiJXNcIiB3YXMgY3Jl YXRlZCB3aXRoIiBcCisJCQkJCQkiIGRpZmZlcmVudCBzaXplOiBleGlzdGluZyAlenUsIHJl cXVlc3RlZCAlenUiLAorCQkJCQkJbmFtZSwgaW5kZXhfZW50cnktPnNpemUsIHJlcXVlc3Qt Pm9wdGlvbnMtPnNpemUpKSk7CisJfQorCisJLyoKKwkgKiBSZS1lc3RhYmxpc2ggdGhlIGNh bGxlcidzIHBvaW50ZXIgdmFyaWFibGUsIG9yIGRvIG90aGVyIGFjdGlvbnMgdG8KKwkgKiBh dHRhY2ggZGVwZW5kaW5nIG9uIHRoZSBraW5kIG9mIHNobWVtIGFyZWEgaXQgaXMuCisJICov CisJc3dpdGNoIChyZXF1ZXN0LT5raW5kKQorCXsKKwkJY2FzZSBTSE1FTV9LSU5EX1NUUlVD VDoKKwkJCWlmIChyZXF1ZXN0LT5vcHRpb25zLT5wdHIpCisJCQkJKihyZXF1ZXN0LT5vcHRp b25zLT5wdHIpID0gaW5kZXhfZW50cnktPmxvY2F0aW9uOworCQkJYnJlYWs7CisJCWNhc2Ug U0hNRU1fS0lORF9IQVNIOgorCQkJc2htZW1faGFzaF9hdHRhY2goaW5kZXhfZW50cnktPmxv Y2F0aW9uLCByZXF1ZXN0LT5vcHRpb25zKTsKKwkJCWJyZWFrOworCX0KKworCXJldHVybiB0 cnVlOworfQorCiAvKgogICoJSW5pdFNobWVtQWxsb2NhdG9yKCkgLS0tIHNldCB1cCBiYXNp YyBwb2ludGVycyB0byBzaGFyZWQgbWVtb3J5LgogICoKICAqIENhbGxlZCBhdCBwb3N0bWFz dGVyIG9yIHN0YW5kLWFsb25lIGJhY2tlbmQgc3RhcnR1cCwgdG8gaW5pdGlhbGl6ZSB0aGUK ICAqIGFsbG9jYXRvcidzIGRhdGEgc3RydWN0dXJlIGluIHRoZSBzaGFyZWQgbWVtb3J5IHNl Z21lbnQuICBJbiBFWEVDX0JBQ0tFTkQsCi0gKiB0aGlzIGlzIGFsc28gY2FsbGVkIGF0IGJh Y2tlbmQgc3RhcnR1cCwgdG8gc2V0IHVwIHBvaW50ZXJzIHRvIHRoZSBzaGFyZWQKLSAqIG1l bW9yeSBhcmVhcy4KKyAqIHRoaXMgaXMgYWxzbyBjYWxsZWQgYXQgYmFja2VuZCBzdGFydHVw LCB0byBzZXQgdXAgcG9pbnRlcnMgdG8gdGhlCisgKiBhbHJlYWR5LWluaXRpYWxpemVkIGRh dGEgc3RydWN0dXJlLgogICovCiB2b2lkCiBJbml0U2htZW1BbGxvY2F0b3IoUEdTaG1lbUhl YWRlciAqc2VnaGRyKQogewogCVNpemUJCW9mZnNldDsKKwlpbnQ2NAkJaGFzaF9uZWxlbXM7 CiAJSEFTSENUTAkJaW5mbzsKIAlpbnQJCQloYXNoX2ZsYWdzOwogCkBAIC0xMzMsNiArNjI1 LDE2IEBAIEluaXRTaG1lbUFsbG9jYXRvcihQR1NobWVtSGVhZGVyICpzZWdoZHIpCiAjZW5k aWYKIAlBc3NlcnQoc2VnaGRyICE9IE5VTEwpOwogCisJaWYgKElzVW5kZXJQb3N0bWFzdGVy KQorCXsKKwkJQXNzZXJ0KHNobWVtX3JlcXVlc3Rfc3RhdGUgPT0gU1JTX0lOSVRJQUwpOwor CX0KKwllbHNlCisJeworCQlBc3NlcnQoc2htZW1fcmVxdWVzdF9zdGF0ZSA9PSBTUlNfUkVR VUVTVElORyk7CisJCXNobWVtX3JlcXVlc3Rfc3RhdGUgPSBTUlNfSU5JVElBTElaSU5HOwor CX0KKwogCS8qCiAJICogV2UgYXNzdW1lIHRoZSBwb2ludGVyIGFuZCBvZmZzZXQgYXJlIE1B WEFMSUdOLiAgTm90IGEgaGFyZCByZXF1aXJlbWVudCwKIAkgKiBidXQgaXQncyB0cnVlIHRv ZGF5IGFuZCBrZWVwcyB0aGUgbWF0aCBiZWxvdyBzaW1wbGVyLgpAQCAtMTc3LDE5ICs2Nzks MjEgQEAgSW5pdFNobWVtQWxsb2NhdG9yKFBHU2htZW1IZWFkZXIgKnNlZ2hkcikKIAkgKiB1 c2UgU2htZW1Jbml0SGFzaCgpIGhlcmUgYmVjYXVzZSBpdCByZWxpZXMgb24gU2htZW1JbmRl eCBiZWluZyBhbHJlYWR5CiAJICogaW5pdGlhbGl6ZWQuCiAJICovCisJaGFzaF9uZWxlbXMg PSBsaXN0X2xlbmd0aChwZW5kaW5nX3NobWVtX3JlcXVlc3RzKSArIFNITUVNX0lOREVYX0FE RElUSU9OQUxfU0laRTsKKwogCWluZm8ua2V5c2l6ZSA9IFNITUVNX0lOREVYX0tFWVNJWkU7 CiAJaW5mby5lbnRyeXNpemUgPSBzaXplb2YoU2htZW1JbmRleEVudCk7CiAJaGFzaF9mbGFn cyA9IEhBU0hfRUxFTSB8IEhBU0hfU1RSSU5HUyB8IEhBU0hfRklYRURfU0laRTsKIAogCWlm ICghSXNVbmRlclBvc3RtYXN0ZXIpCiAJewotCQlTaG1lbUFsbG9jYXRvci0+aW5kZXhfc2l6 ZSA9IGhhc2hfZXN0aW1hdGVfc2l6ZShTSE1FTV9JTkRFWF9TSVpFLCBpbmZvLmVudHJ5c2l6 ZSk7CisJCVNobWVtQWxsb2NhdG9yLT5pbmRleF9zaXplID0gaGFzaF9lc3RpbWF0ZV9zaXpl KGhhc2hfbmVsZW1zLCBpbmZvLmVudHJ5c2l6ZSk7CiAJCVNobWVtQWxsb2NhdG9yLT5pbmRl eCA9IChIQVNISERSICopIFNobWVtQWxsb2MoU2htZW1BbGxvY2F0b3ItPmluZGV4X3NpemUp OwogCX0KIAlTaG1lbUluZGV4ID0gc2htZW1faGFzaF9jcmVhdGUoU2htZW1BbGxvY2F0b3It PmluZGV4LAogCQkJCQkJCQkgICBTaG1lbUFsbG9jYXRvci0+aW5kZXhfc2l6ZSwKIAkJCQkJ CQkJICAgSXNVbmRlclBvc3RtYXN0ZXIsCi0JCQkJCQkJCSAgICJTaG1lbUluZGV4IiwgU0hN RU1fSU5ERVhfU0laRSwKKwkJCQkJCQkJICAgIlNobWVtSW5kZXgiLCBoYXNoX25lbGVtcywK IAkJCQkJCQkJICAgJmluZm8sIGhhc2hfZmxhZ3MpOwogCUFzc2VydChTaG1lbUluZGV4ICE9 IE5VTEwpOwogCkBAIC0yMTAsNiArNzE0LDIzIEBAIEluaXRTaG1lbUFsbG9jYXRvcihQR1No bWVtSGVhZGVyICpzZWdoZHIpCiAJfQogfQogCisvKgorICogUmVzZXQgc3RhdGUgb24gcG9z dG1hc3RlciBjcmFzaCByZXN0YXJ0LgorICovCit2b2lkCitSZXNldFNobWVtQWxsb2NhdG9y KHZvaWQpCit7CisJQXNzZXJ0KCFJc1VuZGVyUG9zdG1hc3Rlcik7CisJc2htZW1fcmVxdWVz dF9zdGF0ZSA9IFNSU19JTklUSUFMOworCisJcGVuZGluZ19zaG1lbV9yZXF1ZXN0cyA9IE5J TDsKKworCS8qCisJICogTm90ZSB0aGF0IHdlIGRvbid0IGNsZWFyIHRoZSByZWdpc3RlcmVk IGNhbGxiYWNrcy4gIFdlIHdpbGwgbmVlZCB0bworCSAqIGNhbGwgdGhlbSBhZ2FpbiBhcyB3 ZSByZXN0YXJ0CisJICovCit9CisKIC8qCiAgKiBTaG1lbUFsbG9jIC0tIGFsbG9jYXRlIG1h eC1hbGlnbmVkIGNodW5rIGZyb20gc2hhcmVkIG1lbW9yeQogICoKQEAgLTMwNyw5MiArODI4 LDE5MSBAQCBTaG1lbUFkZHJJc1ZhbGlkKGNvbnN0IHZvaWQgKmFkZHIpCiB9CiAKIC8qCi0g KiBTaG1lbUluaXRTdHJ1Y3QgLS0gQ3JlYXRlL2F0dGFjaCB0byBhIHN0cnVjdHVyZSBpbiBz aGFyZWQgbWVtb3J5LgorICogUmVnaXN0ZXIgY2FsbGJhY2tzIHRoYXQgZGVmaW5lIGEgc2hh cmVkIG1lbW9yeSBhcmVhIChvciBtdWx0aXBsZSBhcmVhcykuCiAgKgotICoJCVRoaXMgaXMg Y2FsbGVkIGR1cmluZyBpbml0aWFsaXphdGlvbiB0byBmaW5kIG9yIGFsbG9jYXRlCi0gKgkJ YSBkYXRhIHN0cnVjdHVyZSBpbiBzaGFyZWQgbWVtb3J5LiAgSWYgbm8gb3RoZXIgcHJvY2Vz cwotICoJCWhhcyBjcmVhdGVkIHRoZSBzdHJ1Y3R1cmUsIHRoaXMgcm91dGluZSBhbGxvY2F0 ZXMgc3BhY2UKLSAqCQlmb3IgaXQuICBJZiBpdCBleGlzdHMgYWxyZWFkeSwgYSBwb2ludGVy IHRvIHRoZSBleGlzdGluZwotICoJCXN0cnVjdHVyZSBpcyByZXR1cm5lZC4KKyAqIFRoZSBz eXN0ZW0gd2lsbCBjYWxsIHRoZSBjYWxsYmFja3MgYXQgZGlmZmVyZW50IHN0YWdlcyBvZiBw b3N0bWFzdGVyIG9yCisgKiBiYWNrZW5kIHN0YXJ0dXAsIHRvIGFsbG9jYXRlIGFuZCBpbml0 aWFsaXplIHRoZSBhcmVhLgogICoKLSAqCVJldHVybnM6IHBvaW50ZXIgdG8gdGhlIG9iamVj dC4gICpmb3VuZFB0ciBpcyBzZXQgdHJ1ZSBpZiB0aGUgb2JqZWN0IHdhcwotICoJCWFscmVh ZHkgaW4gdGhlIHNobWVtIGluZGV4IChoZW5jZSwgYWxyZWFkeSBpbml0aWFsaXplZCkuCisg KiBUaGlzIGlzIG5vcm1hbGx5IGNhbGxlZCBlYXJseSBkdXJpbmcgcG9zdG1hc3RlciBzdGFy dHVwLCBidXQgaWYgdGhlCisgKiBTSE1FTV9DQUxMQkFDS1NfQUxMT1dfQUZURVJfU1RBUlRV UCBpcyBzZXQsIHRoaXMgY2FuIGFsc28gYmUgdXNlZCBhZnRlcgorICogc3RhcnR1cCwgYWx0 aG91Z2ggYWZ0ZXIgc3RhcnR1cCB0aGVyZSdzIG5vIGd1YXJhbnRlZSB0aGF0IHRoZXJlJ3Mg ZW5vdWdoCisgKiBzaGFyZWQgbWVtb3J5IGF2YWlsYWJsZS4gIFdoZW4gY2FsbGVkIGFmdGVy IHN0YXJ0dXAsIHRoaXMgaW1tZWRpYXRlbHkgY2FsbHMKKyAqIHRoZSByaWdodCBjYWxsYmFj a3MgZGVwZW5kaW5nIG9uIHdoZXRoZXIgYW5vdGhlciBiYWNrZW5kIGhhZCBhbHJlYWR5Cisg KiBpbml0aWFsaXplZCB0aGUgYXJlYS4KICAqCi0gKglOb3RlOiBiZWZvcmUgUG9zdGdyZXMg OS4wLCB0aGlzIGZ1bmN0aW9uIHJldHVybmVkIE5VTEwgZm9yIHNvbWUgZmFpbHVyZQotICoJ Y2FzZXMuICBOb3csIGl0IGFsd2F5cyB0aHJvd3MgZXJyb3IgaW5zdGVhZCwgc28gY2FsbGVy cyBuZWVkIG5vdCBjaGVjawotICoJZm9yIE5VTEwuCisgKiBOb3RlOiBJbiBFWEVDX0JBQ0tF TkQgbW9kZSwgdGhpcyBuZWVkcyB0byBiZSBjYWxsZWQgaW4gZXZlcnkgYmFja2VuZAorICog cHJvY2Vzcy4gIFRoYXQncyBuZWVkZWQgYmVjYXVzZSB3ZSBjYW5ub3QgcGFzcyBkb3duIHRo ZSBjYWxsYmFjayBmdW5jdGlvbgorICogcG9pbnRlcnMgZnJvbSB0aGUgcG9zdG1hc3RlciBw cm9jZXNzLCBiZWNhdXNlIGRpZmZlcmVudCBwcm9jZXNzZXMgbWF5IGhhdmUKKyAqIGxvYWRl ZCBsaWJyYXJpZXMgdG8gZGlmZmVyZW50IGFkZHJlc3Nlcy4KICAqLwotdm9pZCAqCi1TaG1l bUluaXRTdHJ1Y3QoY29uc3QgY2hhciAqbmFtZSwgU2l6ZSBzaXplLCBib29sICpmb3VuZFB0 cikKK3ZvaWQKK1JlZ2lzdGVyU2htZW1DYWxsYmFja3MoY29uc3QgU2htZW1DYWxsYmFja3Mg KmNhbGxiYWNrcykKIHsKLQlTaG1lbUluZGV4RW50ICpyZXN1bHQ7Ci0Jdm9pZAkgICAqc3Ry dWN0UHRyOworCWlmIChzaG1lbV9yZXF1ZXN0X3N0YXRlID09IFNSU19ET05FICYmIElzVW5k ZXJQb3N0bWFzdGVyKQorCXsKKwkJLyoKKwkJICogQWZ0ZXItc3RhcnR1cCBpbml0aWFsaXph dGlvbiBvciBhdHRhY2htZW50LiAgQ2FsbCB0aGUgYXBwcm9wcmlhdGUKKwkJICogY2FsbGJh Y2tzIGltbW1lZGlhdGVseS4KKwkJICovCisJCWlmICgoY2FsbGJhY2tzLT5mbGFncyAmIFNI TUVNX0NBTExCQUNLU19BTExPV19BRlRFUl9TVEFSVFVQKSA9PSAwKQorCQkJZWxvZyhFUlJP UiwgImNhbm5vdCByZXF1ZXN0IHNoYXJlZCBtZW1vcnkgYXQgdGhpcyB0aW1lIik7CiAKLQlB c3NlcnQoU2htZW1JbmRleCAhPSBOVUxMKTsKKwkJQ2FsbFNobWVtQ2FsbGJhY2tzQWZ0ZXJT dGFydHVwKGNhbGxiYWNrcyk7CisJfQorCWVsc2UKKwl7CisJCS8qIFJlbWVtYmVyIHRoZSBj YWxsYmFja3MgZm9yIGxhdGVyICovCisJCXJlZ2lzdGVyZWRfc2htZW1fY2FsbGJhY2tzID0g bGFwcGVuZChyZWdpc3RlcmVkX3NobWVtX2NhbGxiYWNrcywKKwkJCQkJCQkJCQkJICh2b2lk ICopIGNhbGxiYWNrcyk7CisJfQorfQogCisvKgorICogUmVnaXN0ZXIgYSBzaG1lbSBhcmVh IChvciBtdWx0aXBsZSBhcmVhcykgYWZ0ZXIgc3RhcnR1cC4KKyAqLworc3RhdGljIHZvaWQK K0NhbGxTaG1lbUNhbGxiYWNrc0FmdGVyU3RhcnR1cChjb25zdCBTaG1lbUNhbGxiYWNrcyAq Y2FsbGJhY2tzKQoreworCWJvb2wJCWZvdW5kX2FueTsKKwlib29sCQlub3Rmb3VuZF9hbnk7 CisKKwlBc3NlcnQoc2htZW1fcmVxdWVzdF9zdGF0ZSA9PSBTUlNfRE9ORSk7CisJc2htZW1f cmVxdWVzdF9zdGF0ZSA9IFNSU19SRVFVRVNUSU5HOworCisJLyoKKwkgKiBDYWxsIHRoZSBy ZXF1ZXN0IGNhbGxiYWNrIGZpcnN0LiBUaGUgY2FsbGJhY2sgbWFrZSBTaG1lbVJlcXVlc3Qq KCkKKwkgKiBjYWxscyBmb3IgZWFjaCBzaG1lbSBhcmVhLCBhZGRpbmcgdGhlbSB0byBwZW5k aW5nX3NobWVtX3JlcXVlc3RzLgorCSAqLworCUFzc2VydChwZW5kaW5nX3NobWVtX3JlcXVl c3RzID09IE5JTCk7CisJaWYgKGNhbGxiYWNrcy0+cmVxdWVzdF9mbikKKwkJY2FsbGJhY2tz LT5yZXF1ZXN0X2ZuKGNhbGxiYWNrcy0+b3BhcXVlX2FyZyk7CisJc2htZW1fcmVxdWVzdF9z dGF0ZSA9IFNSU19BRlRFUl9TVEFSVFVQX0FUVEFDSF9PUl9JTklUOworCisJaWYgKHBlbmRp bmdfc2htZW1fcmVxdWVzdHMgPT0gTklMKQorCXsKKwkJc2htZW1fcmVxdWVzdF9zdGF0ZSA9 IFNSU19ET05FOworCQlyZXR1cm47CisJfQorCisJLyogSG9sZCBTaG1lbUluZGV4TG9jayB3 aGlsZSB3ZSBhbGxvY2F0ZSBhbGwgdGhlIHNobWVtIGVudHJpZXMgKi8KIAlMV0xvY2tBY3F1 aXJlKFNobWVtSW5kZXhMb2NrLCBMV19FWENMVVNJVkUpOwogCi0JLyogbG9vayBpdCB1cCBp biB0aGUgc2htZW0gaW5kZXggKi8KLQlyZXN1bHQgPSAoU2htZW1JbmRleEVudCAqKQotCQlo YXNoX3NlYXJjaChTaG1lbUluZGV4LCBuYW1lLCBIQVNIX0VOVEVSX05VTEwsIGZvdW5kUHRy KTsKKwkvKgorCSAqIENoZWNrIGlmIHRoZSByZXF1ZXN0ZWQgc2hhcmVkIG1lbW9yeSBhcmVh cyBoYXZlIGFscmVhZHkgYmVlbgorCSAqIGluaXRpYWxpemVkLiAgV2UgYXNzdW1lIGFsbCB0 aGUgYXJlYXMgcmVxdWVzdGVkIGJ5IHRoZSByZXF1ZXN0IGNhbGxiYWNrCisJICogdG8gZm9y bSBhIGNvaGVyZW50IHVuaXQgc3VjaCB0aGF0IHRoZXkncmUgYWxsIGFscmVhZHkgaW5pdGlh bGl6ZWQgb3IKKwkgKiBub25lLiAgT3RoZXJ3aXNlIGl0IHdvdWxkIGJlIGFtYmlndW91cyB3 aGljaCBjYWxsYmFjaywgaW5pdCBvciBhdHRhY2gsCisJICogdG8gY2FsbGJhY2sgYWZ0ZXJ3 YXJkcy4KKwkgKi8KKwlmb3VuZF9hbnkgPSBub3Rmb3VuZF9hbnkgPSBmYWxzZTsKKwlmb3Jl YWNoX3B0cihTaG1lbVJlcXVlc3QsIHJlcXVlc3QsIHBlbmRpbmdfc2htZW1fcmVxdWVzdHMp CisJeworCQlpZiAoaGFzaF9zZWFyY2goU2htZW1JbmRleCwgcmVxdWVzdC0+b3B0aW9ucy0+ bmFtZSwgSEFTSF9GSU5ELCBOVUxMKSkKKwkJCWZvdW5kX2FueSA9IHRydWU7CisJCWVsc2UK KwkJCW5vdGZvdW5kX2FueSA9IHRydWU7CisJfQorCWlmIChmb3VuZF9hbnkgJiYgbm90Zm91 bmRfYW55KQorCQllbG9nKEVSUk9SLCAiZm91bmQgc29tZSBidXQgbm90IGFsbCIpOwogCi0J aWYgKCFyZXN1bHQpCisJLyoKKwkgKiBBbGxvY2F0ZSBvciBhdHRhY2ggYWxsIHRoZSBzaG1l bSBhcmVhcyByZXF1ZXN0ZWQgYnkgdGhlIHJlcXVlc3RfZm4KKwkgKiBjYWxsYmFjay4KKwkg Ki8KKwlmb3JlYWNoX3B0cihTaG1lbVJlcXVlc3QsIHJlcXVlc3QsIHBlbmRpbmdfc2htZW1f cmVxdWVzdHMpCiAJewotCQlMV0xvY2tSZWxlYXNlKFNobWVtSW5kZXhMb2NrKTsKLQkJZXJl cG9ydChFUlJPUiwKLQkJCQkoZXJyY29kZShFUlJDT0RFX09VVF9PRl9NRU1PUlkpLAotCQkJ CSBlcnJtc2coImNvdWxkIG5vdCBjcmVhdGUgU2htZW1JbmRleCBlbnRyeSBmb3IgZGF0YSBz dHJ1Y3R1cmUgXCIlc1wiIiwKLQkJCQkJCW5hbWUpKSk7CisJCWlmIChmb3VuZF9hbnkpCisJ CQlBdHRhY2hTaG1lbUluZGV4RW50cnkocmVxdWVzdCwgZmFsc2UpOworCQllbHNlCisJCQlJ bml0U2htZW1JbmRleEVudHJ5KHJlcXVlc3QpOwogCX0KKwlsaXN0X2ZyZWVfZGVlcChwZW5k aW5nX3NobWVtX3JlcXVlc3RzKTsKKwlwZW5kaW5nX3NobWVtX3JlcXVlc3RzID0gTklMOwog Ci0JaWYgKCpmb3VuZFB0cikKKwkvKiBGaW5pc2ggYnkgY2FsbGluZyB0aGUgYXBwcm9wcmlh dGUgc3Vic3lzdGVtLXNwZWNpZmljIGNhbGxiYWNrICovCisJaWYgKGZvdW5kX2FueSkKIAl7 Ci0JCS8qCi0JCSAqIFN0cnVjdHVyZSBpcyBpbiB0aGUgc2htZW0gaW5kZXggc28gc29tZW9u ZSBlbHNlIGhhcyBhbGxvY2F0ZWQgaXQKLQkJICogYWxyZWFkeS4gIFRoZSBzaXplIGJldHRl ciBiZSB0aGUgc2FtZSBhcyB0aGUgc2l6ZSB3ZSBhcmUgdHJ5aW5nIHRvCi0JCSAqIGluaXRp YWxpemUgdG8sIG9yIHRoZXJlIGlzIGEgbmFtZSBjb25mbGljdCAob3Igd29yc2UpLgotCQkg Ki8KLQkJaWYgKHJlc3VsdC0+c2l6ZSAhPSBzaXplKQotCQl7Ci0JCQlMV0xvY2tSZWxlYXNl KFNobWVtSW5kZXhMb2NrKTsKLQkJCWVyZXBvcnQoRVJST1IsCi0JCQkJCShlcnJtc2coIlNo bWVtSW5kZXggZW50cnkgc2l6ZSBpcyB3cm9uZyBmb3IgZGF0YSBzdHJ1Y3R1cmUiCi0JCQkJ CQkJIiBcIiVzXCI6IGV4cGVjdGVkICV6dSwgYWN0dWFsICV6dSIsCi0JCQkJCQkJbmFtZSwg c2l6ZSwgcmVzdWx0LT5zaXplKSkpOwotCQl9Ci0JCXN0cnVjdFB0ciA9IHJlc3VsdC0+bG9j YXRpb247CisJCWlmIChjYWxsYmFja3MtPmF0dGFjaF9mbikKKwkJCWNhbGxiYWNrcy0+YXR0 YWNoX2ZuKGNhbGxiYWNrcy0+b3BhcXVlX2FyZyk7CiAJfQogCWVsc2UKIAl7Ci0JCVNpemUJ CWFsbG9jYXRlZF9zaXplOwotCi0JCS8qIEl0IGlzbid0IGluIHRoZSB0YWJsZSB5ZXQuIGFs bG9jYXRlIGFuZCBpbml0aWFsaXplIGl0ICovCi0JCXN0cnVjdFB0ciA9IFNobWVtQWxsb2NS YXcoc2l6ZSwgJmFsbG9jYXRlZF9zaXplKTsKLQkJaWYgKHN0cnVjdFB0ciA9PSBOVUxMKQot CQl7Ci0JCQkvKiBvdXQgb2YgbWVtb3J5OyByZW1vdmUgdGhlIGZhaWxlZCBTaG1lbUluZGV4 IGVudHJ5ICovCi0JCQloYXNoX3NlYXJjaChTaG1lbUluZGV4LCBuYW1lLCBIQVNIX1JFTU9W RSwgTlVMTCk7Ci0JCQlMV0xvY2tSZWxlYXNlKFNobWVtSW5kZXhMb2NrKTsKLQkJCWVyZXBv cnQoRVJST1IsCi0JCQkJCShlcnJjb2RlKEVSUkNPREVfT1VUX09GX01FTU9SWSksCi0JCQkJ CSBlcnJtc2coIm5vdCBlbm91Z2ggc2hhcmVkIG1lbW9yeSBmb3IgZGF0YSBzdHJ1Y3R1cmUi Ci0JCQkJCQkJIiBcIiVzXCIgKCV6dSBieXRlcyByZXF1ZXN0ZWQpIiwKLQkJCQkJCQluYW1l LCBzaXplKSkpOwotCQl9Ci0JCXJlc3VsdC0+c2l6ZSA9IHNpemU7Ci0JCXJlc3VsdC0+YWxs b2NhdGVkX3NpemUgPSBhbGxvY2F0ZWRfc2l6ZTsKLQkJcmVzdWx0LT5sb2NhdGlvbiA9IHN0 cnVjdFB0cjsKKwkJaWYgKGNhbGxiYWNrcy0+aW5pdF9mbikKKwkJCWNhbGxiYWNrcy0+aW5p dF9mbihjYWxsYmFja3MtPm9wYXF1ZV9hcmcpOwogCX0KIAogCUxXTG9ja1JlbGVhc2UoU2ht ZW1JbmRleExvY2spOworCXNobWVtX3JlcXVlc3Rfc3RhdGUgPSBTUlNfRE9ORTsKK30KKwor LyoKKyAqIENhbGwgYWxsIHNobWVtIHJlcXVlc3QgY2FsbGJhY2tzLgorICovCit2b2lkCitT aG1lbUNhbGxSZXF1ZXN0Q2FsbGJhY2tzKHZvaWQpCit7CisJTGlzdENlbGwgICAqbGM7CiAK LQlBc3NlcnQoU2htZW1BZGRySXNWYWxpZChzdHJ1Y3RQdHIpKTsKKwlBc3NlcnQoc2htZW1f cmVxdWVzdF9zdGF0ZSA9PSBTUlNfSU5JVElBTCk7CisJc2htZW1fcmVxdWVzdF9zdGF0ZSA9 IFNSU19SRVFVRVNUSU5HOwogCi0JQXNzZXJ0KHN0cnVjdFB0ciA9PSAodm9pZCAqKSBDQUNI RUxJTkVBTElHTihzdHJ1Y3RQdHIpKTsKKwlmb3JlYWNoKGxjLCByZWdpc3RlcmVkX3NobWVt X2NhbGxiYWNrcykKKwl7CisJCWNvbnN0IFNobWVtQ2FsbGJhY2tzICpjYWxsYmFja3MgPSAo Y29uc3QgU2htZW1DYWxsYmFja3MgKikgbGZpcnN0KGxjKTsKIAotCXJldHVybiBzdHJ1Y3RQ dHI7CisJCWlmIChjYWxsYmFja3MtPnJlcXVlc3RfZm4pCisJCQljYWxsYmFja3MtPnJlcXVl c3RfZm4oY2FsbGJhY2tzLT5vcGFxdWVfYXJnKTsKKwl9CiB9CiAKKy8qCisgKiBTaG1lbUlu aXRTdHJ1Y3QgLS0gQ3JlYXRlL2F0dGFjaCB0byBhIHN0cnVjdHVyZSBpbiBzaGFyZWQgbWVt b3J5LgorICoKKyAqCQlUaGlzIGlzIGNhbGxlZCBkdXJpbmcgaW5pdGlhbGl6YXRpb24gdG8g ZmluZCBvciBhbGxvY2F0ZQorICoJCWEgZGF0YSBzdHJ1Y3R1cmUgaW4gc2hhcmVkIG1lbW9y eS4gIElmIG5vIG90aGVyIHByb2Nlc3MKKyAqCQloYXMgY3JlYXRlZCB0aGUgc3RydWN0dXJl LCB0aGlzIHJvdXRpbmUgYWxsb2NhdGVzIHNwYWNlCisgKgkJZm9yIGl0LiAgSWYgaXQgZXhp c3RzIGFscmVhZHksIGEgcG9pbnRlciB0byB0aGUgZXhpc3RpbmcKKyAqCQlzdHJ1Y3R1cmUg aXMgcmV0dXJuZWQuCisgKgorICoJUmV0dXJuczogcG9pbnRlciB0byB0aGUgb2JqZWN0LiAg KmZvdW5kUHRyIGlzIHNldCB0cnVlIGlmIHRoZSBvYmplY3Qgd2FzCisgKgkJYWxyZWFkeSBp biB0aGUgc2htZW0gaW5kZXggKGhlbmNlLCBhbHJlYWR5IGluaXRpYWxpemVkKS4KKyAqCisg KiBOb3RlOiBUaGlzIGlzIGEgbGVnYWN5IGludGVyZmFjZSwga2VwdCBmb3IgYmFja3dhcmRz IGNvbXBhdGliaWxpdHkgd2l0aAorICogZXh0ZW5zaW9ucy4gIFVzZSBTaG1lbVJlcXVlc3RT dHJ1Y3QoKSBpbiBuZXcgY29kZSEKKyAqLwordm9pZCAqCitTaG1lbUluaXRTdHJ1Y3QoY29u c3QgY2hhciAqbmFtZSwgU2l6ZSBzaXplLCBib29sICpmb3VuZFB0cikKK3sKKwl2b2lkCSAg ICpwdHIgPSBOVUxMOworCVNobWVtU3RydWN0T3B0cyBvcHRpb25zID0geworCQkubmFtZSA9 IG5hbWUsCisJCS5zaXplID0gc2l6ZSwKKwkJLnB0ciA9ICZwdHIsCisJfTsKKwlTaG1lbVJl cXVlc3QgcmVxdWVzdCA9IHsmb3B0aW9ucywgU0hNRU1fS0lORF9TVFJVQ1R9OworCisJQXNz ZXJ0KHNobWVtX3JlcXVlc3Rfc3RhdGUgPT0gU1JTX0RPTkUgfHwKKwkJICAgc2htZW1fcmVx dWVzdF9zdGF0ZSA9PSBTUlNfSU5JVElBTElaSU5HIHx8CisJCSAgIHNobWVtX3JlcXVlc3Rf c3RhdGUgPT0gU1JTX1JFUVVFU1RJTkcpOworCisJTFdMb2NrQWNxdWlyZShTaG1lbUluZGV4 TG9jaywgTFdfRVhDTFVTSVZFKTsKKworCS8qCisJICogRHVyaW5nIHBvc3RtYXN0ZXIgc3Rh cnR1cCwgbG9vayB1cCB0aGUgZXhpc3RpbmcgZW50cnkgaWYgYW55LgorCSAqLworCSpmb3Vu ZFB0ciA9IGZhbHNlOworCWlmIChJc1VuZGVyUG9zdG1hc3RlcikKKwkJKmZvdW5kUHRyID0g QXR0YWNoU2htZW1JbmRleEVudHJ5KCZyZXF1ZXN0LCB0cnVlKTsKKworCS8qIEluaXRpYWxp emUgaXQgaWYgbm90IGZvdW5kICovCisJaWYgKCEqZm91bmRQdHIpCisJCUluaXRTaG1lbUlu ZGV4RW50cnkoJnJlcXVlc3QpOworCisJTFdMb2NrUmVsZWFzZShTaG1lbUluZGV4TG9jayk7 CisKKwlBc3NlcnQocHRyICE9IE5VTEwpOworCXJldHVybiBwdHI7Cit9CiAKIC8qCiAgKiBB ZGQgdHdvIFNpemUgdmFsdWVzLCBjaGVja2luZyBmb3Igb3ZlcmZsb3cKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVtX2hhc2guYyBiL3NyYy9iYWNrZW5kL3N0 b3JhZ2UvaXBjL3NobWVtX2hhc2guYwppbmRleCA3MjFkZWM1YzE3Zi4uYzI4ZDY3M2NiZDIg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVtX2hhc2guYworKysg Yi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbV9oYXNoLmMKQEAgLTcsMTAgKzcsOCBA QAogICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAxOTk0LCBSZWdlbnRzIG9mIHRoZSBVbml2 ZXJzaXR5IG9mIENhbGlmb3JuaWEKICAqCiAgKiBBIHNoYXJlZCBtZW1vcnkgaGFzaCB0YWJs ZSBpbXBsZW1lbnRhdGlvbiBvbiB0b3Agb2YgdGhlIG5hbWVkLCBmaXhlZC1zaXplCi0gKiBz aGFyZWQgbWVtb3J5IGFyZWFzIG1hbmFnZWQgYnkgc2htZW0uYy4gIEhhc2ggdGFibGVzIGhh dmUgYSBmaXhlZCBtYXhpbXVtCi0gKiBzaXplLCBidXQgdGhlaXIgYWN0dWFsIHNpemUgY2Fu IHZhcnkgZHluYW1pY2FsbHkuICBXaGVuIGVudHJpZXMgYXJlIGFkZGVkCi0gKiB0byB0aGUg dGFibGUsIG1vcmUgc3BhY2UgaXMgYWxsb2NhdGVkLiAgRWFjaCBzaGFyZWQgZGF0YSBzdHJ1 Y3R1cmUgYW5kIGhhc2gKLSAqIGhhcyBhIHN0cmluZyBuYW1lIHRvIGlkZW50aWZ5IGl0Lgor ICogc2hhcmVkIG1lbW9yeSBhcmVhcyBtYW5hZ2VkIGJ5IHNobWVtLmMuICBFYWNoIGhhc2gg dGFibGUgaGFzIGl0cyBvd24gZnJlZQorICogbGlzdCwgc28gaGFzaCBidWNrZXRzIGNhbiBi ZSByZXVzZWQgd2hlbiBhbiBpdGVtIGlzIGRlbGV0ZWQuCiAgKgogICogSURFTlRJRklDQVRJ T04KICAqCSAgc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htZW1faGFzaC5jCkBAIC0yMiw2 ICsyMCw3IEBACiAKICNpbmNsdWRlICJzdG9yYWdlL3NobWVtLmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9zaG1lbV9pbnRlcm5hbC5oIgorI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAK IC8qCiAgKiBBIHZlcnkgc2ltcGxlIGFsbG9jYXRvciB1c2VkIHRvIGNhcnZlIG91dCBkaWZm ZXJlbnQgcGFydHMgb2YgYSBoYXNoIHRhYmxlCkBAIC0zNSw2ICszNCw2NiBAQCB0eXBlZGVm IHN0cnVjdCBzaG1lbV9oYXNoX2FsbG9jYXRvcgogCiBzdGF0aWMgdm9pZCAqU2htZW1IYXNo QWxsb2MoU2l6ZSBzaXplLCB2b2lkICphbGxvY19hcmcpOwogCisvKgorICogU2htZW1SZXF1 ZXN0SGFzaCAtLSBSZXF1ZXN0IGEgc2hhcmVkIG1lbW9yeSBoYXNoIHRhYmxlLgorICoKKyAq IFNpbWlsYXIgdG8gU2htZW1SZXF1ZXN0U3RydWN0KCksIGJ1dCByZXF1ZXN0cyBhIGhhc2gg dGFibGUgaW5zdGVhZCBvZiBhbgorICogb3BhcXVlIGFyZWEuCisgKi8KK3ZvaWQKK1NobWVt UmVxdWVzdEhhc2hXaXRoT3B0cyhjb25zdCBTaG1lbUhhc2hPcHRzICpvcHRpb25zKQorewor CVNobWVtSGFzaE9wdHMgKm9wdGlvbnNfY29weTsKKworCUFzc2VydChvcHRpb25zLT5uYW1l ICE9IE5VTEwpOworCisJb3B0aW9uc19jb3B5ID0gTWVtb3J5Q29udGV4dEFsbG9jKFRvcE1l bW9yeUNvbnRleHQsCisJCQkJCQkJCQkgIHNpemVvZihTaG1lbUhhc2hPcHRzKSk7CisJbWVt Y3B5KG9wdGlvbnNfY29weSwgb3B0aW9ucywgc2l6ZW9mKFNobWVtSGFzaE9wdHMpKTsKKwor CS8qIFNldCBvcHRpb25zIGZvciB0aGUgZml4ZWQtc2l6ZSBhcmVhIGhvbGRpbmcgdGhlIGhh c2ggdGFibGUgKi8KKwlvcHRpb25zX2NvcHktPmJhc2UubmFtZSA9IG9wdGlvbnMtPm5hbWU7 CisJb3B0aW9uc19jb3B5LT5iYXNlLnNpemUgPSBoYXNoX2VzdGltYXRlX3NpemUob3B0aW9u c19jb3B5LT5uZWxlbXMsCisJCQkJCQkJCQkJCQkgb3B0aW9uc19jb3B5LT5oYXNoX2luZm8u ZW50cnlzaXplKTsKKworCVNobWVtUmVxdWVzdEludGVybmFsKCZvcHRpb25zX2NvcHktPmJh c2UsIFNITUVNX0tJTkRfSEFTSCk7Cit9CisKK3ZvaWQKK3NobWVtX2hhc2hfaW5pdCh2b2lk ICpsb2NhdGlvbiwgU2htZW1TdHJ1Y3RPcHRzICpiYXNlX29wdGlvbnMpCit7CisJU2htZW1I YXNoT3B0cyAqb3B0aW9ucyA9IChTaG1lbUhhc2hPcHRzICopIGJhc2Vfb3B0aW9uczsKKwlp bnQJCQloYXNoX2ZsYWdzID0gb3B0aW9ucy0+aGFzaF9mbGFnczsKKwlIVEFCCSAgICpodGFi OworCisJb3B0aW9ucy0+aGFzaF9pbmZvLmhjdGwgPSBsb2NhdGlvbjsKKwlodGFiID0gc2ht ZW1faGFzaF9jcmVhdGUobG9jYXRpb24sIG9wdGlvbnMtPmJhc2Uuc2l6ZSwgZmFsc2UsCisJ CQkJCQkJIG9wdGlvbnMtPm5hbWUsCisJCQkJCQkJIG9wdGlvbnMtPm5lbGVtcywgJm9wdGlv bnMtPmhhc2hfaW5mbywgaGFzaF9mbGFncyk7CisKKwlpZiAob3B0aW9ucy0+cHRyKQorCQkq b3B0aW9ucy0+cHRyID0gaHRhYjsKK30KKwordm9pZAorc2htZW1faGFzaF9hdHRhY2godm9p ZCAqbG9jYXRpb24sIFNobWVtU3RydWN0T3B0cyAqYmFzZV9vcHRpb25zKQoreworCVNobWVt SGFzaE9wdHMgKm9wdGlvbnMgPSAoU2htZW1IYXNoT3B0cyAqKSBiYXNlX29wdGlvbnM7CisJ aW50CQkJaGFzaF9mbGFncyA9IG9wdGlvbnMtPmhhc2hfZmxhZ3M7CisJSFRBQgkgICAqaHRh YjsKKworCS8qIGF0dGFjaCB0byBpdCByYXRoZXIgdGhhbiBhbGxvY2F0ZSBhbmQgaW5pdGlh bGl6ZSBuZXcgc3BhY2UgKi8KKwloYXNoX2ZsYWdzIHw9IEhBU0hfQVRUQUNIOworCW9wdGlv bnMtPmhhc2hfaW5mby5oY3RsID0gbG9jYXRpb247CisJQXNzZXJ0KG9wdGlvbnMtPmhhc2hf aW5mby5oY3RsICE9IE5VTEwpOworCWh0YWIgPSBzaG1lbV9oYXNoX2NyZWF0ZShsb2NhdGlv biwgb3B0aW9ucy0+YmFzZS5zaXplLCB0cnVlLAorCQkJCQkJCSBvcHRpb25zLT5uYW1lLAor CQkJCQkJCSBvcHRpb25zLT5uZWxlbXMsICZvcHRpb25zLT5oYXNoX2luZm8sIGhhc2hfZmxh Z3MpOworCisJaWYgKG9wdGlvbnMtPnB0cikKKwkJKm9wdGlvbnMtPnB0ciA9IGh0YWI7Cit9 CisKIC8qCiAgKiBTaG1lbUluaXRIYXNoIC0tIENyZWF0ZSBhbmQgaW5pdGlhbGl6ZSwgb3Ig YXR0YWNoIHRvLCBhCiAgKgkJc2hhcmVkIG1lbW9yeSBoYXNoIHRhYmxlLgpAQCAtNTEsOSAr MTEwLDggQEAgc3RhdGljIHZvaWQgKlNobWVtSGFzaEFsbG9jKFNpemUgc2l6ZSwgdm9pZCAq YWxsb2NfYXJnKTsKICAqIHRvIHNoYXJlZC1tZW1vcnkgaGFzaCB0YWJsZXMgYXJlIGFkZGVk IGhlcmUsIGV4Y2VwdCB0aGF0IGNhbGxlcnMgbWF5CiAgKiBjaG9vc2UgdG8gc3BlY2lmeSBI QVNIX1BBUlRJVElPTi4KICAqCi0gKiBOb3RlOiBiZWZvcmUgUG9zdGdyZXMgOS4wLCB0aGlz IGZ1bmN0aW9uIHJldHVybmVkIE5VTEwgZm9yIHNvbWUgZmFpbHVyZQotICogY2FzZXMuICBO b3csIGl0IGFsd2F5cyB0aHJvd3MgZXJyb3IgaW5zdGVhZCwgc28gY2FsbGVycyBuZWVkIG5v dCBjaGVjawotICogZm9yIE5VTEwuCisgKiBOb3RlOiBUaGlzIGlzIGEgbGVnYWN5IGludGVy ZmFjZSwga2VwdCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgd2l0aAorICogZXh0ZW5z aW9ucy4gIFVzZSBTaG1lbVJlcXVlc3RIYXNoKCkgaW4gbmV3IGNvZGUhCiAgKi8KIEhUQUIg KgogU2htZW1Jbml0SGFzaChjb25zdCBjaGFyICpuYW1lLAkJLyogdGFibGUgc3RyaW5nIG5h bWUgZm9yIHNobWVtIGluZGV4ICovCkBAIC02Nyw3ICsxMjUsMTQgQEAgU2htZW1Jbml0SGFz aChjb25zdCBjaGFyICpuYW1lLAkJLyogdGFibGUgc3RyaW5nIG5hbWUgZm9yIHNobWVtIGlu ZGV4ICovCiAKIAlzaXplID0gaGFzaF9lc3RpbWF0ZV9zaXplKG5lbGVtcywgaW5mb1AtPmVu dHJ5c2l6ZSk7CiAKLQkvKiBsb29rIGl0IHVwIGluIHRoZSBzaG1lbSBpbmRleCBvciBhbGxv Y2F0ZSAqLworCS8qCisJICogTG9vayBpdCB1cCBpbiB0aGUgc2htZW0gaW5kZXggb3IgYWxs b2NhdGUuCisJICoKKwkgKiBOT1RFOiBUaGUgYXJlYSBpcyByZXF1ZXN0ZWQgaW50ZXJuYWxs eSBhcyBTSE1FTV9LSU5EX1NUUlVDVCBpbnN0ZWFkIG9mCisJICogU0hNRU1fS0lORF9IQVNI LiAgVGhhdCdzIGNvcnJlY3QgYmVjYXVzZSB3ZSBkbyB0aGUgaGFzaCB0YWJsZQorCSAqIGlu aXRpYWxpemF0aW9uIGJ5IGNhbGxpbmcgc2htZW1faGFzaF9jcmVhdGUoKSBvdXJzZWx2ZXMu ICAoV2UgZG9uJ3QKKwkgKiBleHBvc2UgdGhlIHJlcXVlc3Qga2luZCB0byB1c2VyczsgaWYg d2UgZGlkLCB0aGF0IHdvdWxkIGJlIGNvbmZ1c2luZy4pCisJICovCiAJbG9jYXRpb24gPSBT aG1lbUluaXRTdHJ1Y3QobmFtZSwgc2l6ZSwgJmZvdW5kKTsKIAogCXJldHVybiBzaG1lbV9o YXNoX2NyZWF0ZShsb2NhdGlvbiwgc2l6ZSwgZm91bmQsCkBAIC03Nyw4ICsxNDIsOCBAQCBT aG1lbUluaXRIYXNoKGNvbnN0IGNoYXIgKm5hbWUsCQkvKiB0YWJsZSBzdHJpbmcgbmFtZSBm b3Igc2htZW0gaW5kZXggKi8KIC8qCiAgKiBJbml0aWFsaXplIG9yIGF0dGFjaCB0byBhIHNo YXJlZCBoYXNoIHRhYmxlIGluIHRoZSBnaXZlbiBzaG1lbSByZWdpb24uCiAgKgotICogVGhp cyBpcyBleHRyYWN0ZWQgZnJvbSBTaG1lbUluaXRIYXNoKCkgdG8gYWxsb3cgSW5pdFNobWVt QWxsb2NhdG9yKCkgdG8KLSAqIHNoYXJlIHRoZSBsb2dpYyBmb3IgYm9vdHN0cmFwcGluZyB0 aGUgU2htZW1JbmRleCBoYXNoIHRhYmxlLgorICogVGhpcyBpcyBleHBvc2VkIHRvIGFsbG93 IEluaXRTaG1lbUFsbG9jYXRvcigpIHRvIHNoYXJlIHRoZSBsb2dpYyBmb3IKKyAqIGJvb3Rz dHJhcHBpbmcgdGhlIFNobWVtSW5kZXggaGFzaCB0YWJsZS4KICAqLwogSFRBQiAqCiBzaG1l bV9oYXNoX2NyZWF0ZSh2b2lkICpsb2NhdGlvbiwgc2l6ZV90IHNpemUsIGJvb2wgZm91bmQs CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5jIGIvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYwppbmRleCA1YzQ3Y2YxMzQ3My4uOWI4ODBhNmFm NjUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcm9jLmMKKysrIGIv c3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYwpAQCAtMTIxLDYgKzEyMSw5IEBAIEZh c3RQYXRoTG9ja1NobWVtU2l6ZSh2b2lkKQogCiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIG11 bF9zaXplKFRvdGFsUHJvY3MsIChmcExvY2tCaXRzU2l6ZSArIGZwUmVsSWRTaXplKSkpOwog CisJQXNzZXJ0KFRvdGFsUHJvY3MgPiAwKTsKKwlBc3NlcnQoc2l6ZSA+IDApOworCiAJcmV0 dXJuIHNpemU7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMu YyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwppbmRleCAxMGJlNjAwMTFhZC4uOTM4 NTEyNjllNDMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYworKysg Yi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKQEAgLTY3LDYgKzY3LDcgQEAKICNpbmNs dWRlICJzdG9yYWdlL3Btc2lnbmFsLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAj aW5jbHVkZSAic3RvcmFnZS9wcm9jc2lnbmFsLmgiCisjaW5jbHVkZSAic3RvcmFnZS9zaG1l bV9pbnRlcm5hbC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc2ludmFsLmgiCiAjaW5jbHVkZSAi c3RvcmFnZS9zdGFuZGJ5LmgiCiAjaW5jbHVkZSAidGNvcC9iYWNrZW5kX3N0YXJ0dXAuaCIK QEAgLTQxNTUsNyArNDE1NiwxNCBAQCBQb3N0Z3Jlc1NpbmdsZVVzZXJNYWluKGludCBhcmdj LCBjaGFyICphcmd2W10sCiAJSW5pdGlhbGl6ZUZhc3RQYXRoTG9ja3MoKTsKIAogCS8qCi0J ICogR2l2ZSBwcmVsb2FkZWQgbGlicmFyaWVzIGEgY2hhbmNlIHRvIHJlcXVlc3QgYWRkaXRp b25hbCBzaGFyZWQgbWVtb3J5LgorCSAqIEJlZm9yZSBjb21wdXRpbmcgdGhlIHRvdGFsIHNp emUgbmVlZGVkLCBnaXZlIGFsbCBzdWJzeXN0ZW1zLCBpbmNsdWRpbmcKKwkgKiBhZGQtaW5z LCBhIGNoYW5jZSB0byBjaGFuY2UgdG8gYWRqdXN0IHRoZWlyIHJlcXVlc3RlZCBzaG1lbSBz aXplcy4KKwkgKi8KKwlTaG1lbUNhbGxSZXF1ZXN0Q2FsbGJhY2tzKCk7CisKKwkvKgorCSAq IEFsc28gY2FsbCBhbnkgbGVnYWN5IHNobWVtIHJlcXVlc3QgaG9va3MgdGhhdCBtaWdodCdi ZSBiZWVuIGluc3RhbGxlZAorCSAqIGJ5IHByZWxvYWRlZCBsaWJyYXJpZXMuCiAJICovCiAJ cHJvY2Vzc19zaG1lbV9yZXF1ZXN0cygpOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91 dGlscy9oYXNoL2R5bmFoYXNoLmMgYi9zcmMvYmFja2VuZC91dGlscy9oYXNoL2R5bmFoYXNo LmMKaW5kZXggZDQ5YTdhOTJjNjQuLmNiOTVhZDRlZjJhIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC91dGlscy9oYXNoL2R5bmFoYXNoLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvaGFz aC9keW5haGFzaC5jCkBAIC0xMTksOCArMTE5LDggQEAKICAqIGNob3NlbiBhdCBjcmVhdGlv biBiYXNlZCBvbiB0aGUgaW5pdGlhbCBudW1iZXIgb2YgZWxlbWVudHMsIHNvIGV2ZW4gdGhv dWdoCiAgKiB3ZSBzdXBwb3J0IGFsbG9jYXRpbmcgbW9yZSBlbGVtZW50cyBsYXRlciwgcGVy Zm9ybWFuY2Ugd2lsbCBzdWZmZXIgaWYgdGhlCiAgKiB0YWJsZSBncm93cyBtdWNoIGJleW9u ZCB0aGUgaW5pdGlhbCBzaXplLiAgKEN1cnJlbnRseSwgc2hhcmVkIG1lbW9yeSBoYXNoCi0g KiB0YWJsZXMgYXJlIG9ubHkgY3JlYXRlZCBieSBTaG1lbUluaXRIYXNoKCkgdGhvdWdoLCB3 aGljaCBkb2Vzbid0IHN1cHBvcnQKLSAqIGdyb3dpbmcgYXQgYWxsLikKKyAqIHRhYmxlcyBh cmUgb25seSBjcmVhdGVkIGJ5IFNobWVtUmVxdWVzdEhhc2goKS9TaG1lbUluaXRIYXNoKCkg dGhvdWdoLCB3aGljaAorICogZG9lc24ndCBzdXBwb3J0IGdyb3dpbmcgYXQgYWxsLikKICAq LwogI2RlZmluZSBIQVNIX1NFR1NJWkUJCQkgICAyNTYKICNkZWZpbmUgSEFTSF9TRUdTSVpF X1NISUZUCSAgIDgJLyogbXVzdCBiZSBsb2cyKEhBU0hfU0VHU0laRSkgKi8KZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc2htZW0uaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uv c2htZW0uaAppbmRleCA4MWQwNTM4MWY4Zi4uOGUwZmMyOWRjYWMgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL3N0b3JhZ2Uvc2htZW0uaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3No bWVtLmgKQEAgLTI4LDIxICsyOCwxNjcgQEAKIAogI2luY2x1ZGUgInV0aWxzL2hzZWFyY2gu aCIKIAorLyoKKyAqIE9wdGlvbnMgZm9yIFNobWVtUmVxdWVzdFN0cnVjdCgpCisgKgorICog J25hbWUnIGFuZCAnc2l6ZScgYXJlIHJlcXVpcmVkLiAgSW5pdGlhbGl6ZSBhbnkgb3B0aW9u YWwgZmllbGRzIHRoYXQgeW91CisgKiBkb24ndCB1c2UgdG8gemVyb3MuCisgKgorICogQWZ0 ZXIgcmVnaXN0cmF0aW9uLCB0aGUgc2htZW0gbWFjaGluZXJ5IHJlc2VydmVzIG1lbW9yeSBm b3IgdGhlIGFyZWEsIHNldHMKKyAqICcqcHRyJyB0byBwb2ludCB0byB0aGUgYWxsb2NhdGlv biwgYW5kIGNhbGxzIHRoZSBjYWxsYmFja3MgYXQgdGhlIHJpZ2h0CisgKiBtb21lbnRzLgor ICovCit0eXBlZGVmIHN0cnVjdCBTaG1lbVN0cnVjdE9wdHMKK3sKKwljb25zdCBjaGFyICpu YW1lOwogCi0vKiBzaG1lbS5jICovCi1leHRlcm4gdm9pZCAqU2htZW1BbGxvYyhTaXplIHNp emUpOwotZXh0ZXJuIHZvaWQgKlNobWVtQWxsb2NOb0Vycm9yKFNpemUgc2l6ZSk7CisJLyoK KwkgKiBSZXF1ZXN0ZWQgc2l6ZSBvZiB0aGUgc2htZW0gYWxsb2NhdGlvbi4KKwkgKgorCSAq IFdoZW4gYXR0YWNoaW5nIHRvIGFuIGV4aXN0aW5nIGFsbG9jYXRpb24sIHRoZSBzaXplIG11 c3QgbWF0Y2ggdGhlIHNpemUKKwkgKiBnaXZlbiB3aGVuIHRoZSBzaG1lbSByZWdpb24gd2Fz IGFsbG9jYXRlZC4gIFRoaXMgY3Jvc3MtY2hlY2sgY2FuIGJlCisJICogZGlzYWJsZWQgc3Bl Y2lmeWluZyBTSE1FTV9BVFRBQ0hfVU5LTk9XTl9TSVpFLgorCSAqLworCXNzaXplX3QJCXNp emU7CisKKwkvKgorCSAqIFdoZW4gdGhlIHNobWVtIGFyZWEgaXMgaW5pdGlhbGl6ZWQgb3Ig YXR0YWNoZWQgdG8sIHBvaW50ZXIgdG8gaXQgaXMKKwkgKiBzdG9yZWQgaW4gKnB0ci4gIEl0 IHVzdWFsbHkgcG9pbnRzIHRvIGEgZ2xvYmFsIHZhcmlhYmxlLCB1c2VkIHRvIGFjY2Vzcwor CSAqIHRoZSBzaGFyZWQgbWVtb3J5IGFyZWEgbGF0ZXIuICAqcHRyIGlzIHNldCBiZWZvcmUg dGhlIGluaXRfZm4gb3IKKwkgKiBhdHRhY2hfZm4gY2FsbGJhY2sgaXMgY2FsbGVkLgorCSAq LworCXZvaWQJICAqKnB0cjsKK30gU2htZW1TdHJ1Y3RPcHRzOworCisjZGVmaW5lIFNITUVN X0FUVEFDSF9VTktOT1dOX1NJWkUgKC0xKQorCisvKgorICogT3B0aW9ucyBmb3IgU2htZW1S ZXF1ZXN0SGFzaCgpCisgKgorICogRWFjaCBoYXNoIHRhYmxlIGlzIGJhY2tlZCBieSBhbiBh bGxvY2F0ZWQgYXJlYSwgYnV0IGlmICdtYXhfc2l6ZScgaXMKKyAqIGdyZWF0ZXIgdGhhbiAn aW5pdF9zaXplJywgaXQgY2FuIGFsc28gZ3JvdyBiZXlvbmQgdGhlIGluaXRpYWwgYWxsb2Nh dGVkCisgKiBhcmVhIGJ5IGFsbG9jYXRpbmcgbW9yZSBoYXNoIGVudHJpZXMgZnJvbSB0aGUg Z2xvYmFsIHVucmVzZXJ2ZWQgc3BhY2UuCisgKi8KK3R5cGVkZWYgc3RydWN0IFNobWVtSGFz aE9wdHMKK3sKKwlTaG1lbVN0cnVjdE9wdHMgYmFzZTsKKworCS8qCisJICogTmFtZSBvZiB0 aGUgc2hhcmVkIG1lbW9yeSBhcmVhLiAgUmVxdWlyZWQuICBNdXN0IGJlIHVuaXF1ZSBhY3Jv c3MgdGhlCisJICogc3lzdGVtLgorCSAqLworCWNvbnN0IGNoYXIgKm5hbWU7CisKKwkvKgor CSAqICduZWxlbXMnIGlzIHRoZSBtYXggbnVtYmVyIG9mIGVsZW1lbnRzIGZvciB0aGUgaGFz aCB0YWJsZS4KKwkgKi8KKwlpbnQ2NAkJbmVsZW1zOworCisJLyoKKwkgKiBIYXNoIHRhYmxl IG9wdGlvbnMgcGFzc2VkIHRvIGhhc2hfY3JlYXRlKCkKKwkgKgorCSAqIGhhc2hfaW5mbyBh bmQgaGFzaF9mbGFncyBtdXN0IHNwZWNpZnkgYXQgbGVhc3QgdGhlIGVudHJ5IHNpemVzIGFu ZCBrZXkKKwkgKiBjb21wYXJpc29uIHNlbWFudGljcyAoc2VlIGhhc2hfY3JlYXRlKCkpLiAg RmxhZyBiaXRzIGFuZCB2YWx1ZXMKKwkgKiBzcGVjaWZpYyB0byBzaGFyZWQtbWVtb3J5IGhh c2ggdGFibGVzIGFyZSBhZGRlZCBpbXBsaWNpdGx5IGluCisJICogU2htZW1SZXF1ZXN0SGFz aCgpLCBleGNlcHQgdGhhdCBjYWxsZXJzIG1heSBjaG9vc2UgdG8gc3BlY2lmeQorCSAqIEhB U0hfUEFSVElUSU9OIGFuZC9vciBIQVNIX0ZJWEVEX1NJWkUuCisJICovCisJSEFTSENUTAkJ aGFzaF9pbmZvOworCWludAkJCWhhc2hfZmxhZ3M7CisKKwkvKgorCSAqIFdoZW4gdGhlIGhh c2ggdGFibGUgaXMgaW5pdGlhbGl6ZWQgb3IgYXR0YWNoZWQgdG8sIHBvaW50ZXIgdG8gaXRz CisJICogYmFja2VuZC1wcml2YXRlIGhhbmRsZSBpcyBzdG9yZWQgaW4gKnB0ci4gIEl0IHVz dWFsbHkgcG9pbnRzIHRvIGEKKwkgKiBnbG9iYWwgdmFyaWFibGUsIHVzZWQgdG8gYWNjZXNz IHRoZSBoYXNoIHRhYmxlIGxhdGVyLgorCSAqLworCUhUQUIJICAqKnB0cjsKK30gU2htZW1I YXNoT3B0czsKKwordHlwZWRlZiB2b2lkICgqU2htZW1SZXF1ZXN0Q2FsbGJhY2spICh2b2lk ICpvcGFxdWVfYXJnKTsKK3R5cGVkZWYgdm9pZCAoKlNobWVtSW5pdENhbGxiYWNrKSAodm9p ZCAqb3BhcXVlX2FyZyk7Cit0eXBlZGVmIHZvaWQgKCpTaG1lbUF0dGFjaENhbGxiYWNrKSAo dm9pZCAqb3BhcXVlX2FyZyk7CisKKy8qCisgKiBTaGFyZWQgbWVtb3J5IGlzIHJlc2VydmVk IGFuZCBhbGxvY2F0ZWQgaW4gc3RhZ2VzIGF0IHBvc3RtYXN0ZXIgc3RhcnR1cCwKKyAqIGFu ZCBpbiBFWEVDX0JBQ0tFTkQgbW9kZSwgdGhlcmUncyBzb21lIGV4dHJhIHdvcmsgZG9uZSB0 byAiYXR0YWNoIiB0byB0aGVtCisgKiBhdCBiYWNrZW5kIHN0YXJ0dXAuICBTaG1lbUNhbGxi YWNrcyBob2xkcyBjYWxsYmFjayBmdW5jdGlvbnMgdGhhdCBhcmUKKyAqIGNhbGxlZCBhdCBk aWZmZXJlbnQgc3RhZ2VzLgorICovCit0eXBlZGVmIHN0cnVjdCBTaG1lbUNhbGxiYWNrcwor eworCS8qIFNITUVNX0NBTExCQUNLU18qIGZsYWdzICovCisJaW50CQkJZmxhZ3M7CisKKwkv KgorCSAqICdyZXF1ZXN0X2ZuJyBpcyBjYWxsZWQgZHVyaW5nIHBvc3RtYXN0ZXIgc3RhcnR1 cCwgYmVmb3JlIHRoZSBzaGFyZWQKKwkgKiBtZW1vcnkgaGFzIGJlZW4gYWxsb2NhdGVkLiAg VGhlIGZ1bmN0aW9uIHNob3VsZCBjYWxsCisJICogUmVxdWVzdFNobWVtU3RydWN0KCkgYW5k IFJlcXVlc3RTaG1lbUhhc2goKSB0byByZWdpc3RlciB0aGUgc3Vic3lzdGVtJ3MKKwkgKiBz aGFyZWQgbWVtb3J5IG5lZWRzLgorCSAqLworCVNobWVtUmVxdWVzdENhbGxiYWNrIHJlcXVl c3RfZm47CisKKwkvKgorCSAqIEluaXRpYWxpemF0aW9uIGNhbGxiYWNrIGZ1bmN0aW9uLiAg VGhpcyBpcyBjYWxsZWQgYWZ0ZXIgdGhlIHNoYXJlZAorCSAqIG1lbW9yeSBhcmVhIGhhcyBi ZWVuIGFsbG9jYXRlZCwgdXN1YWxseSBhdCBwb3N0bWFzdGVyIHN0YXJ0dXAuCisJICovCisJ U2htZW1Jbml0Q2FsbGJhY2sgaW5pdF9mbjsKKworCS8qCisJICogQXR0YWNobWVudCBjYWxs YmFjayBmdW5jdGlvbi4gIEluIEVYRUNfQkFDS0VORCBtb2RlLCB0aGlzIGlzIGNhbGxlZCBh dAorCSAqIHN0YXJ0dXAgb2YgZWFjaCBiYWNrZW5kLiAgSW4gIUVYRUNfQkFDS0VORCBtb2Rl LCB0aGlzIGlzIG9ubHkgY2FsbGVkIGlmCisJICogdGhlIHNoYXJlZCBtZW1vcnkgYXJlYSBp cyByZWdpc3RlcmVkIGFmdGVyIHBvc3RtYXN0ZXIgc3RhcnR1cCAoc2VlCisJICogU0hNRU1f Q0FMTEJBQ0tTX0FMTE9XX0FGVEVSX1NUQVJUVVApLgorCSAqLworCVNobWVtQXR0YWNoQ2Fs bGJhY2sgYXR0YWNoX2ZuOworCisJLyoKKwkgKiBBcmd1bWVudCBwYXNzZWQgdG8gdGhlIGNh bGxiYWNrcy4gIFRoaXMgaXMgb3BhcXVlIHRvIHRoZSBzaG1lbSBzeXN0ZW0sCisJICogY2Fs bGJhY2tzIGNhbiB1c2UgaXQgZm9yIHRoZWlyIG93biBwdXJwb3Nlcy4KKwkgKi8KKwl2b2lk CSAgICpvcGFxdWVfYXJnOworfSBTaG1lbUNhbGxiYWNrczsKKworLyoKKyAqIEZsYWdzIHRv IGNvbnRyb2wgdGhlIGJlaGF2aW9yIG9mIFJlZ2lzdGVyU2htZW1DYWxsYmFja3MoKS4KKyAq CisgKiBTSE1FTV9DQUxMQkFDS1NfQUxMT1dfQUZURVJfU1RBUlRVUDogTm9ybWFsbHksIGNh bGxpbmcKKyAqIFJlZ2lzdGVyU2htZW1DYWxsYmFja3MoKSBhZnRlciBwb3N0bWFzdGVyIHN0 YXJ0dXAsIGUuZy4gaW4gYW4gYWRkLWluCisgKiBsaWJyYXJ5IGxvYWRlZCBvbi1kZW1hbmQg aW4gYSBiYWNrZW5kLCByZXN1bHRzIGluIGFuIGVycm9yLCBiZWNhdXNlIHNoYXJlZAorICog bWVtb3J5IHNob3VsZCBnZW5lcmFsbHkgYmUgcmVxdWVzdGVkIGF0IHBvc3RtYXN0ZXIgc3Rh cnR1cCB0aW1lLiAgQnV0IGlmCisgKiB0aGlzIGZsYWcgaXMgc2V0LCBpdCBpcyBhbGxvd2Vk IGFuZCB0aGUgY2FsbGJhY2tzIGFyZSBjYWxsZWQgaW1tZWRpYXRlbHkgdG8KKyAqIGluaXRp YWxpemUgb3IgYXR0YWNoIHRvIHRoZSByZXF1ZXN0ZWQgc2hhcmVkIG1lbW9yeSBhcmVhcy4g IFRoaXMgaXMgbm90CisgKiB1c2VkIGJ5IGFueSBidWlsdC1pbiBzdWJzeXN0ZW1zLCBidXQg ZXh0ZW5zaW9ucyBtYXkgZmluZCBpdCB1c2VmdWwuCisgKi8KKyNkZWZpbmUgU0hNRU1fQ0FM TEJBQ0tTX0FMTE9XX0FGVEVSX1NUQVJUVVAJCTB4MDAwMDAwMDEKKworZXh0ZXJuIHZvaWQg UmVnaXN0ZXJTaG1lbUNhbGxiYWNrcyhjb25zdCBTaG1lbUNhbGxiYWNrcyAqY2FsbGJhY2tz KTsKIGV4dGVybiBib29sIFNobWVtQWRkcklzVmFsaWQoY29uc3Qgdm9pZCAqYWRkcik7CisK Ky8qCisgKiBUaGVzZSBtYWNyb3MgcHJvdmlkZSBzeW50YWN0aWMgc3VnYXIgZm9yIGNhbGxp bmcgdGhlIHVuZGVybHlpbmcgZnVuY3Rpb25zCisgKiB3aXRoIG5hbWVkIGFyZ3VtZW50cyAt bGlrZSBzeW50YXguCisgKi8KKyNkZWZpbmUgU2htZW1SZXF1ZXN0U3RydWN0KC4uLikgIFwK KwlTaG1lbVJlcXVlc3RTdHJ1Y3RXaXRoT3B0cygmKFNobWVtU3RydWN0T3B0cyl7X19WQV9B UkdTX199KQorCisjZGVmaW5lIFNobWVtUmVxdWVzdEhhc2goLi4uKSAgXAorCVNobWVtUmVx dWVzdEhhc2hXaXRoT3B0cygmKFNobWVtSGFzaE9wdHMpe19fVkFfQVJHU19ffSkKKworZXh0 ZXJuIHZvaWQgU2htZW1SZXF1ZXN0U3RydWN0V2l0aE9wdHMoY29uc3QgU2htZW1TdHJ1Y3RP cHRzICpvcHRpb25zKTsKK2V4dGVybiB2b2lkIFNobWVtUmVxdWVzdEhhc2hXaXRoT3B0cyhj b25zdCBTaG1lbUhhc2hPcHRzICpvcHRpb25zKTsKKworLyogbGVnYWN5IHNobWVtIGFsbG9j YXRpb24gZnVuY3Rpb25zICovCiBleHRlcm4gdm9pZCAqU2htZW1Jbml0U3RydWN0KGNvbnN0 IGNoYXIgKm5hbWUsIFNpemUgc2l6ZSwgYm9vbCAqZm91bmRQdHIpOworZXh0ZXJuIEhUQUIg KlNobWVtSW5pdEhhc2goY29uc3QgY2hhciAqbmFtZSwgaW50NjQgbmVsZW1zLAorCQkJCQkJ ICAgSEFTSENUTCAqaW5mb1AsIGludCBoYXNoX2ZsYWdzKTsKK2V4dGVybiB2b2lkICpTaG1l bUFsbG9jKFNpemUgc2l6ZSk7CitleHRlcm4gdm9pZCAqU2htZW1BbGxvY05vRXJyb3IoU2l6 ZSBzaXplKTsKKwogZXh0ZXJuIFNpemUgYWRkX3NpemUoU2l6ZSBzMSwgU2l6ZSBzMik7CiBl eHRlcm4gU2l6ZSBtdWxfc2l6ZShTaXplIHMxLCBTaXplIHMyKTsKIAogZXh0ZXJuIFBHRExM SU1QT1JUIFNpemUgcGdfZ2V0X3NobWVtX3BhZ2VzaXplKHZvaWQpOwogCi0vKiBzaG1lbV9o YXNoLmMgKi8KLWV4dGVybiBIVEFCICpTaG1lbUluaXRIYXNoKGNvbnN0IGNoYXIgKm5hbWUs IGludDY0IG5lbGVtcywKLQkJCQkJCSAgIEhBU0hDVEwgKmluZm9QLCBpbnQgaGFzaF9mbGFn cyk7Ci0KIC8qIGlwY2kuYyAqLwogZXh0ZXJuIHZvaWQgUmVxdWVzdEFkZGluU2htZW1TcGFj ZShTaXplIHNpemUpOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3NobWVt X2ludGVybmFsLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3NobWVtX2ludGVybmFsLmgKaW5k ZXggZTA2MzgxMzU2MzkuLmZlMTJiZjMzNDM5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9z dG9yYWdlL3NobWVtX2ludGVybmFsLmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9zaG1l bV9pbnRlcm5hbC5oCkBAIC0xNiwyNiArMTYsMzcgQEAKICNpbmNsdWRlICJzdG9yYWdlL3No bWVtLmgiCiAjaW5jbHVkZSAidXRpbHMvaHNlYXJjaC5oIgogCisvKiBEaWZmZXJlbnQga2lu ZHMgb2Ygc2htZW0gYXJlYXMuICovCit0eXBlZGVmIGVudW0KK3sKKwlTSE1FTV9LSU5EX1NU UlVDVCA9IDAsCQkvKiBwbGFpbiwgY29udGlndW91cyBhcmVhIG9mIG1lbW9yeSAqLworCVNI TUVNX0tJTkRfSEFTSCwJCQkvKiBhIGhhc2ggdGFibGUgKi8KK30gU2htZW1SZXF1ZXN0S2lu ZDsKKworLyogc2htZW0uYyAqLwogdHlwZWRlZiBzdHJ1Y3QgUEdTaG1lbUhlYWRlciBQR1No bWVtSGVhZGVyOyAvKiBhdm9pZCBpbmNsdWRpbmcKIAkJCQkJCQkJCQkJICogc3RvcmFnZS9w Z19zaG1lbS5oIGhlcmUgKi8KK2V4dGVybiB2b2lkIFNobWVtQ2FsbFJlcXVlc3RDYWxsYmFj a3Modm9pZCk7CiBleHRlcm4gdm9pZCBJbml0U2htZW1BbGxvY2F0b3IoUEdTaG1lbUhlYWRl ciAqc2VnaGRyKTsKKyNpZmRlZiBFWEVDX0JBQ0tFTkQKK2V4dGVybiB2b2lkIEF0dGFjaFNo bWVtQWxsb2NhdG9yKFBHU2htZW1IZWFkZXIgKnNlZ2hkcik7CisjZW5kaWYKK2V4dGVybiB2 b2lkIFJlc2V0U2htZW1BbGxvY2F0b3Iodm9pZCk7CiAKLWV4dGVybiBIVEFCICpzaG1lbV9o YXNoX2NyZWF0ZSh2b2lkICpsb2NhdGlvbiwgc2l6ZV90IHNpemUsIGJvb2wgZm91bmQsCi0J CQkJCQkJICAgY29uc3QgY2hhciAqbmFtZSwgaW50NjQgbmVsZW1zLCBIQVNIQ1RMICppbmZv UCwgaW50IGhhc2hfZmxhZ3MpOworZXh0ZXJuIHZvaWQgU2htZW1SZXF1ZXN0SW50ZXJuYWwo U2htZW1TdHJ1Y3RPcHRzICpvcHRpb25zLCBTaG1lbVJlcXVlc3RLaW5kIGtpbmQpOwogCi0v KiBzaXplIGNvbnN0YW50cyBmb3IgdGhlIHNobWVtIGluZGV4IHRhYmxlICovCi0gLyogbWF4 IHNpemUgb2YgZGF0YSBzdHJ1Y3R1cmUgc3RyaW5nIG5hbWUgKi8KLSNkZWZpbmUgU0hNRU1f SU5ERVhfS0VZU0laRQkJICg0OCkKLSAvKiBtYXggbnVtYmVyIG9mIG5hbWVkIHNobWVtIHN0 cnVjdHVyZXMgYW5kIGhhc2ggdGFibGVzICovCi0jZGVmaW5lIFNITUVNX0lOREVYX1NJWkUJ CSAoMjU2KQorZXh0ZXJuIHNpemVfdCBTaG1lbUdldFJlcXVlc3RlZFNpemUodm9pZCk7Citl eHRlcm4gdm9pZCBTaG1lbUluaXRSZXF1ZXN0ZWQodm9pZCk7CisjaWZkZWYgRVhFQ19CQUNL RU5ECitleHRlcm4gdm9pZCBTaG1lbUF0dGFjaFJlcXVlc3RlZCh2b2lkKTsKKyNlbmRpZgog Ci0vKiB0aGlzIGlzIGEgaGFzaCBidWNrZXQgaW4gdGhlIHNobWVtIGluZGV4IHRhYmxlICov Ci10eXBlZGVmIHN0cnVjdAotewotCWNoYXIJCWtleVtTSE1FTV9JTkRFWF9LRVlTSVpFXTsJ Lyogc3RyaW5nIG5hbWUgKi8KLQl2b2lkCSAgICpsb2NhdGlvbjsJCS8qIGxvY2F0aW9uIGlu IHNoYXJlZCBtZW0gKi8KLQlTaXplCQlzaXplOwkJCS8qICMgYnl0ZXMgcmVxdWVzdGVkIGZv ciB0aGUgc3RydWN0dXJlICovCi0JU2l6ZQkJYWxsb2NhdGVkX3NpemU7IC8qICMgYnl0ZXMg YWN0dWFsbHkgYWxsb2NhdGVkICovCi19IFNobWVtSW5kZXhFbnQ7CitleHRlcm4gUEdETExJ TVBPUlQgU2l6ZSBwZ19nZXRfc2htZW1fcGFnZXNpemUodm9pZCk7CisKKy8qIHNobWVtX2hh c2guYyAqLworZXh0ZXJuIEhUQUIgKnNobWVtX2hhc2hfY3JlYXRlKHZvaWQgKmxvY2F0aW9u LCBzaXplX3Qgc2l6ZSwgYm9vbCBmb3VuZCwKKwkJCQkJCQkgICBjb25zdCBjaGFyICpuYW1l LCBpbnQ2NCBuZWxlbXMsIEhBU0hDVEwgKmluZm9QLCBpbnQgaGFzaF9mbGFncyk7CitleHRl cm4gdm9pZCBzaG1lbV9oYXNoX2luaXQodm9pZCAqbG9jYXRpb24sIFNobWVtU3RydWN0T3B0 cyAqb3B0aW9ucyk7CitleHRlcm4gdm9pZCBzaG1lbV9oYXNoX2F0dGFjaCh2b2lkICpsb2Nh dGlvbiwgU2htZW1TdHJ1Y3RPcHRzICpvcHRpb25zKTsKIAogI2VuZGlmCQkJCQkJCS8qIFNI TUVNX0lOVEVSTkFMX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBl ZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggMGM1 NDkzYmQ0N2YuLmQ1MjdkYjgyNGExIDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQv dHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApA QCAtMjg2NSw5ICsyODY1LDE2IEBAIFNoYXJlZFR5cG1vZFRhYmxlRW50cnkKIFNoYXJlZHNv cnQKIFNoZWxsVHlwZUluZm8KIFNoaXBwYWJsZUNhY2hlRW50cnkKLVNobWVtQWxsb2NhdG9y RGF0YQogU2hpcHBhYmxlQ2FjaGVLZXkKK1NobWVtQWxsb2NhdG9yRGF0YQorU2htZW1DYWxs YmFja3MKIFNobWVtSW5kZXhFbnQKK1NobWVtSGFzaERlc2MKK1NobWVtSGFzaE9wdHMKK1No bWVtUmVxdWVzdAorU2htZW1SZXF1ZXN0S2luZAorU2htZW1TdHJ1Y3REZXNjCitTaG1lbVN0 cnVjdE9wdHMKIFNodXRkb3duRm9yZWlnblNjYW5fZnVuY3Rpb24KIFNodXRkb3duSW5mb3Jt YXRpb24KIFNodXRkb3duTW9kZQotLSAKMi40Ny4zCgo= --------------DjaUCGyXkgmfSYE7E2Or3PMa Content-Type: text/x-patch; charset=UTF-8; name="v12-0003-Add-test-module-to-test-after-startup-shmem-allo.patch" Content-Disposition: attachment; filename*0="v12-0003-Add-test-module-to-test-after-startup-shmem-allo.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBlZGQ4Y2FiZWE4YWM4MTE0OTc4OTU5ZmM5YjI4NjQ1NjBhNjMxNDdlIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFN1biwgNSBBcHIgMjAyNiAxOTo1MDoxNSArMDMwMApT dWJqZWN0OiBbUEFUQ0ggdjEyIDAzLzEzXSBBZGQgdGVzdCBtb2R1bGUgdG8gdGVzdCBhZnRl ci1zdGFydHVwIHNobWVtCiBhbGxvY2F0aW9ucwoKVGhlIG9sZCBTaG1lbUluaXR7U3RydWN0 L0hhc2h9KCkgZnVuY3Rpb25zIGNvdWxkIGJlIHVzZWQgYWZ0ZXIKcG9zdG1hc3RlciBzdGF0 dXAsIGFzIGxvbmcgYXMgdGhlIGFsbG9jYXRpb24gaXMgc21hbGwgZW5vdWdoIHRvIGZpdCBp bgpzcGFyZSBzaG1lbSByZXNlcnZlZCBhdCBzdGFydHVwLiBJIGJlbGlldmUgc29tZSBleHRl bnNpb25zIGRvIHRoYXQsCmFsdGhvdWdoIHdlIGhhZG4ndCByZWFsbHkgZG9jdW1lbnRlZCBp dC4gIEhvd2V2ZXIsIHdlIGRpZG4ndCBoYXZlIGFueQp0ZXN0IGNvdmVyYWdlIGZvciB0aGF0 IHVzYWdlLiBUaGUgbmV3IHRlc3QgbW9kdWxlIGNvdmVycyB0aGF0CmFmdGVyLXN0YXJ0dXAg dXNhZ2Ugd2l0aCB0aGUgbmV3IFNobWVtUmVxdWVzdFN0cnVjdCgpIGZ1bmN0aW9ucy4KClJl dmlld2VkLWJ5OiBBc2h1dG9zaCBCYXBhdCA8YXNodXRvc2guYmFwYXQub3NzQGdtYWlsLmNv bT4KUmV2aWV3ZWQtYnk6IE1hdHRoaWFzIHZhbiBkZSBNZWVudCA8Ym9la2V3dXJtK3Bvc3Rn cmVzQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IERhbmllbCBHdXN0YWZzc29uIDxkYW5pZWxA eWVzcWwuc2U+CkRpc2N1c3Npb246IGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3Nh Z2UtaWQvQ0FFeEhXNXZNMWJuZUxZZmcwd0dlQWE9NTJVaUozejR2S2QzQUo3Mlg4Rnc2azNL S3JnQG1haWwuZ21haWwuY29tCi0tLQogc3JjL3Rlc3QvbW9kdWxlcy9NYWtlZmlsZSAgICAg ICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy90ZXN0L21vZHVsZXMvbWVzb24uYnVpbGQg ICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htZW0v TWFrZWZpbGUgICAgICAgICAgfCAgMjQgKysrKysKIHNyYy90ZXN0L21vZHVsZXMvdGVzdF9z aG1lbS9tZXNvbi5idWlsZCAgICAgICB8ICAzMyArKysrKysKIC4uLi90ZXN0X3NobWVtL3Qv MDAxX2xhdGVfc2htZW1fYWxsb2MucGwgICAgICB8ICA0OSArKysrKysrKysKIC4uLi9tb2R1 bGVzL3Rlc3Rfc2htZW0vdGVzdF9zaG1lbS0tMS4wLnNxbCAgICB8ICAgOSArKwogc3JjL3Rl c3QvbW9kdWxlcy90ZXN0X3NobWVtL3Rlc3Rfc2htZW0uYyAgICAgIHwgMTAxICsrKysrKysr KysrKysrKysrKwogLi4uL21vZHVsZXMvdGVzdF9zaG1lbS90ZXN0X3NobWVtLmNvbnRyb2wg ICAgIHwgICAzICsKIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICAgICAg ICAgICB8ICAgMSArCiA5IGZpbGVzIGNoYW5nZWQsIDIyMiBpbnNlcnRpb25zKCspCiBjcmVh dGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobWVtL01ha2VmaWxlCiBj cmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobWVtL21lc29uLmJ1 aWxkCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobWVtL3Qv MDAxX2xhdGVfc2htZW1fYWxsb2MucGwKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9t b2R1bGVzL3Rlc3Rfc2htZW0vdGVzdF9zaG1lbS0tMS4wLnNxbAogY3JlYXRlIG1vZGUgMTAw NjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1lbS90ZXN0X3NobWVtLmMKIGNyZWF0ZSBt b2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htZW0vdGVzdF9zaG1lbS5jb250 cm9sCgpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9NYWtlZmlsZSBiL3NyYy90ZXN0 L21vZHVsZXMvTWFrZWZpbGUKaW5kZXggODY0YjQwN2FiY2YuLmYxYjA0Yzk5OTY5IDEwMDY0 NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL01ha2VmaWxlCisrKyBiL3NyYy90ZXN0L21vZHVs ZXMvTWFrZWZpbGUKQEAgLTQ4LDYgKzQ4LDcgQEAgU1VCRElSUyA9IFwKIAkJICB0ZXN0X3Jl c293bmVyIFwKIAkJICB0ZXN0X3Jsc19ob29rcyBcCiAJCSAgdGVzdF9zYXNscHJlcCBcCisJ CSAgdGVzdF9zaG1lbSBcCiAJCSAgdGVzdF9zaG1fbXEgXAogCQkgIHRlc3Rfc2xydSBcCiAJ CSAgdGVzdF90aWRzdG9yZSBcCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL21lc29u LmJ1aWxkIGIvc3JjL3Rlc3QvbW9kdWxlcy9tZXNvbi5idWlsZAppbmRleCBlNWFjYWNkNTA4 My4uZmM5OTU1MmQ5YWIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvbWVzb24uYnVp bGQKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9tZXNvbi5idWlsZApAQCAtNDksNiArNDksNyBA QCBzdWJkaXIoJ3Rlc3RfcmVnZXgnKQogc3ViZGlyKCd0ZXN0X3Jlc293bmVyJykKIHN1YmRp cigndGVzdF9ybHNfaG9va3MnKQogc3ViZGlyKCd0ZXN0X3Nhc2xwcmVwJykKK3N1YmRpcign dGVzdF9zaG1lbScpCiBzdWJkaXIoJ3Rlc3Rfc2htX21xJykKIHN1YmRpcigndGVzdF9zbHJ1 JykKIHN1YmRpcigndGVzdF90aWRzdG9yZScpCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1 bGVzL3Rlc3Rfc2htZW0vTWFrZWZpbGUgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htZW0v TWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjI0MDdm NzQ2MmZlCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobWVt L01ha2VmaWxlCkBAIC0wLDAgKzEsMjQgQEAKKyMgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3No bWVtL01ha2VmaWxlCisKK1BHRklMRURFU0MgPSAidGVzdF9zaG1lbSAtIHRlc3QgY29kZSBm b3Igc2htZW0gYWxsb2NhdGlvbnMiCisKK01PRFVMRV9iaWcgPSB0ZXN0X3NobWVtCitPQkpT ID0gXAorCSQoV0lOMzJSRVMpIFwKKwl0ZXN0X3NobWVtLm8KKworRVhURU5TSU9OID0gdGVz dF9zaG1lbQorREFUQSA9IHRlc3Rfc2htZW0tLTEuMC5zcWwKKworVEFQX1RFU1RTID0gMQor CitpZmRlZiBVU0VfUEdYUworUEdfQ09ORklHID0gcGdfY29uZmlnCitQR1hTIDo9ICQoc2hl bGwgJChQR19DT05GSUcpIC0tcGd4cykKK2luY2x1ZGUgJChQR1hTKQorZWxzZQorc3ViZGly ID0gc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobWVtCit0b3BfYnVpbGRkaXIgPSAuLi8uLi8u Li8uLgoraW5jbHVkZSAkKHRvcF9idWlsZGRpcikvc3JjL01ha2VmaWxlLmdsb2JhbAoraW5j bHVkZSAkKHRvcF9zcmNkaXIpL2NvbnRyaWIvY29udHJpYi1nbG9iYWwubWsKK2VuZGlmCmRp ZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htZW0vbWVzb24uYnVpbGQgYi9z cmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htZW0vbWVzb24uYnVpbGQKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLmZiNGJmMzI4YjhmCi0tLSAvZGV2L251bGwKKysr IGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobWVtL21lc29uLmJ1aWxkCkBAIC0wLDAgKzEs MzMgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDI0LTIwMjYsIFBvc3RncmVTUUwgR2xvYmFsIERl dmVsb3BtZW50IEdyb3VwCisKK3Rlc3Rfc2htZW1fc291cmNlcyA9IGZpbGVzKAorICAndGVz dF9zaG1lbS5jJywKKykKKworaWYgaG9zdF9zeXN0ZW0gPT0gJ3dpbmRvd3MnCisgIHRlc3Rf c2htZW1fc291cmNlcyArPSByY19saWJfZ2VuLnByb2Nlc3Mod2luMzJ2ZXJfcmMsIGV4dHJh X2FyZ3M6IFsKKyAgICAnLS1OQU1FJywgJ3Rlc3Rfc2htZW0nLAorICAgICctLUZJTEVERVND JywgJ3Rlc3Rfc2htZW0gLSB0ZXN0IGNvZGUgZm9yIHNobWVtIGFsbG9jYXRpb25zJyxdKQor ZW5kaWYKKwordGVzdF9zaG1lbSA9IHNoYXJlZF9tb2R1bGUoJ3Rlc3Rfc2htZW0nLAorICB0 ZXN0X3NobWVtX3NvdXJjZXMsCisgIGt3YXJnczogcGdfdGVzdF9tb2RfYXJncywKKykKK3Rl c3RfaW5zdGFsbF9saWJzICs9IHRlc3Rfc2htZW0KKwordGVzdF9pbnN0YWxsX2RhdGEgKz0g ZmlsZXMoCisgICd0ZXN0X3NobWVtLmNvbnRyb2wnLAorICAndGVzdF9zaG1lbS0tMS4wLnNx bCcsCispCisKK3Rlc3RzICs9IHsKKyAgJ25hbWUnOiAndGVzdF9zaG1lbScsCisgICdzZCc6 IG1lc29uLmN1cnJlbnRfc291cmNlX2RpcigpLAorICAnYmQnOiBtZXNvbi5jdXJyZW50X2J1 aWxkX2RpcigpLAorICAndGFwJzogeworICAgICd0ZXN0cyc6IFsKKyAgICAgICd0LzAwMV9s YXRlX3NobWVtX2FsbG9jLnBsJywKKyAgICBdLAorICB9LAorfQpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X3NobWVtL3QvMDAxX2xhdGVfc2htZW1fYWxsb2MucGwgYi9z cmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htZW0vdC8wMDFfbGF0ZV9zaG1lbV9hbGxvYy5wbApu ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYzE1NGY1NzY4MmEKLS0t IC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htZW0vdC8wMDFfbGF0 ZV9zaG1lbV9hbGxvYy5wbApAQCAtMCwwICsxLDQ5IEBACisjIENvcHlyaWdodCAoYykgMjAy NS0yMDI2LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorCit1c2Ugc3Ry aWN0OwordXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOworCit1c2UgUG9zdGdyZVNRTDo6 VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKK3VzZSBUZXN0 OjpNb3JlOworCisjIyMKKyMgVGVzdCBhbGxvY2F0aW5nIG1lbW9yeSBhZnRlciBzdGFydHVw LCBpLmUuIHdoZW4gdGhlIGxpYnJhcnkgaXMgbm90CisjIGluIHNoYXJlZF9wcmVsb2FkX2xp YnJhcmllcworIyMjCitteSAkbm9kZSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5l dygnbWFpbicpOworJG5vZGUtPmluaXQ7Ciskbm9kZS0+c3RhcnQ7CisKKworJG5vZGUtPnNh ZmVfcHNxbCgicG9zdGdyZXMiLCAiQ1JFQVRFIEVYVEVOU0lPTiB0ZXN0X3NobWVtOyIpOwor CisjIENoZWNrIHRoYXQgdGhlIGF0dGFjaCBjb3VudGVyIGlzIGluY3JlbWVudGVkIG9uIGEg bmV3IGNvbm5lY3Rpb24KK215ICRhdHRhY2hfY291bnQxID0gJG5vZGUtPnNhZmVfcHNxbCgi cG9zdGdyZXMiLCAiU0VMRUNUIGdldF90ZXN0X3NobWVtX2F0dGFjaF9jb3VudCgpOyIpOwor bXkgJGF0dGFjaF9jb3VudDIgPSAkbm9kZS0+c2FmZV9wc3FsKCJwb3N0Z3JlcyIsICJTRUxF Q1QgZ2V0X3Rlc3Rfc2htZW1fYXR0YWNoX2NvdW50KCk7Iik7CitjbXBfb2soJGF0dGFjaF9j b3VudDIsICc+JywgJGF0dGFjaF9jb3VudDEsICJhdHRhY2ggY2FsbGJhY2sgaXMgY2FsbGVk IGluIGVhY2ggYmFja2VuZCIpOworJG5vZGUtPnN0b3A7CisKKyMjIworIyBUZXN0IHRoYXQg bG9hZGluZyB2aWEgc2hhcmVkX3ByZWxvYWRfbGlicmFyaWVzIGFsc28gd29ya3MKKyMjIwor JG5vZGUtPmFwcGVuZF9jb25mKCdwb3N0Z3Jlc3FsLmNvbmYnLCAic2hhcmVkX3ByZWxvYWRf bGlicmFyaWVzID0gJ3Rlc3Rfc2htZW0nIik7Ciskbm9kZS0+c3RhcnQ7CisKKyMgV2hlbiBs b2FkZWQgdmlhIHNoYXJlZF9wcmVsb2FkX2xpYnJhcmllcywgdGhlIGF0dGFjaCBjYWxsYmFj ayBpcworIyBjYWxsZWQgb3Igbm90LCBkZXBlbmRpbmcgb24gd2hldGhlciB0aGlzIGlzIGFu IEVYRUNfQkFDS0VORCBidWlsZC4KK215ICRleGVjX2JhY2tlbmQgPSAkbm9kZS0+c2FmZV9w c3FsKCJwb3N0Z3JlcyIsICJTSE9XIGRlYnVnX2V4ZWNfYmFja2VuZDsiKSBlcSAnb24nOwor JGF0dGFjaF9jb3VudDEgPSAkbm9kZS0+c2FmZV9wc3FsKCJwb3N0Z3JlcyIsICJTRUxFQ1Qg Z2V0X3Rlc3Rfc2htZW1fYXR0YWNoX2NvdW50KCk7Iik7CiskYXR0YWNoX2NvdW50MiA9ICRu b2RlLT5zYWZlX3BzcWwoInBvc3RncmVzIiwgIlNFTEVDVCBnZXRfdGVzdF9zaG1lbV9hdHRh Y2hfY291bnQoKTsiKTsKKworaWYgKCRleGVjX2JhY2tlbmQpCit7CisgICBjbXBfb2soJGF0 dGFjaF9jb3VudDIsICc+JywgJGF0dGFjaF9jb3VudDEsICJhdHRhY2ggY2FsbGJhY2sgaXMg Y2FsbGVkIGluIGVhY2ggYmFja2VuZCB3aGVuIGxvYWRlZCB2aWEgc2hhcmVkX3ByZWxvYWRf bGlicmFyaWVzIik7Cit9CitlbHNlCit7CisgICBvaygkYXR0YWNoX2NvdW50MSA9PSAwICYm ICRhdHRhY2hfY291bnQyID09IDAsICJhdHRhY2ggY2FsbGJhY2sgaXMgbm90IGNhbGxlZCB3 aGVuIGxvYWRlZCB2aWEgc2hhcmVkX3ByZWxvYWRfbGlicmFyaWVzIik7Cit9CisKKyRub2Rl LT5zdG9wOworZG9uZV90ZXN0aW5nKCk7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVz L3Rlc3Rfc2htZW0vdGVzdF9zaG1lbS0tMS4wLnNxbCBiL3NyYy90ZXN0L21vZHVsZXMvdGVz dF9zaG1lbS90ZXN0X3NobWVtLS0xLjAuc3FsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAwMDAwLi4yZDAxZmQ5MjU2YwotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0 L21vZHVsZXMvdGVzdF9zaG1lbS90ZXN0X3NobWVtLS0xLjAuc3FsCkBAIC0wLDAgKzEsOSBA QAorLyogc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NobWVtL3Rlc3Rfc2htZW0tLTEuMC5zcWwg Ki8KKworLS0gY29tcGxhaW4gaWYgc2NyaXB0IGlzIHNvdXJjZWQgaW4gcHNxbCwgcmF0aGVy IHRoYW4gdmlhIENSRUFURSBFWFRFTlNJT04KK1xlY2hvIFVzZSAiQ1JFQVRFIEVYVEVOU0lP TiB0ZXN0X3NobWVtIiB0byBsb2FkIHRoaXMgZmlsZS4gXHF1aXQKKworCitDUkVBVEUgRlVO Q1RJT04gZ2V0X3Rlc3Rfc2htZW1fYXR0YWNoX2NvdW50KCkKK1JFVFVSTlMgcGdfY2F0YWxv Zy5pbnQ0IFNUUklDVAorQVMgJ01PRFVMRV9QQVRITkFNRScgTEFOR1VBR0UgQzsKZGlmZiAt LWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1lbS90ZXN0X3NobWVtLmMgYi9zcmMv dGVzdC9tb2R1bGVzL3Rlc3Rfc2htZW0vdGVzdF9zaG1lbS5jCm5ldyBmaWxlIG1vZGUgMTAw NjQ0CmluZGV4IDAwMDAwMDAwMDAwLi45YmQ0MDEyYjQzNQotLS0gL2Rldi9udWxsCisrKyBi L3NyYy90ZXN0L21vZHVsZXMvdGVzdF9zaG1lbS90ZXN0X3NobWVtLmMKQEAgLTAsMCArMSwx MDEgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIHRlc3Rfc2htZW0uYworICoJ CUhlbHBlcnMgdG8gdGVzdCBzaG1lbSBhbGxvY2F0aW9uIHJvdXRpbmVzCisgKgorICogVGVz dCBiYXNpYyBtZW1vcnkgYWxsb2NhdGlvbiBpbiBhbiBleHRlbnNpb24gbW9kdWxlLiBPbmUg bm90YWJsZSBmZWF0dXJlCisgKiB0aGF0IGlzIG5vdCBleGVyY2lzZWQgYnkgYW55IG90aGVy IG1vZHVsZSBpbiB0aGUgcmVwb3NpdG9yeSBpcyB0aGUKKyAqIGFsbG9jYXRpbmcgKG5vbi1E U00pIHNoYXJlZCBtZW1vcnkgYWZ0ZXIgcG9zdG1hc3RlciBzdGFydHVwLgorICoKKyAqIENv cHlyaWdodCAoYykgMjAyMC0yMDI2LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBH cm91cAorICoKKyAqIElERU5USUZJQ0FUSU9OCisgKgkgIHNyYy90ZXN0L21vZHVsZXMvdGVz dF9zaG1lbS90ZXN0X3NobWVtLmMKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLwor CisjaW5jbHVkZSAicG9zdGdyZXMuaCIKKworI2luY2x1ZGUgImZtZ3IuaCIKKyNpbmNsdWRl ICJtaXNjYWRtaW4uaCIKKyNpbmNsdWRlICJzdG9yYWdlL3NobWVtLmgiCisKKworUEdfTU9E VUxFX01BR0lDOworCit0eXBlZGVmIHN0cnVjdCBUZXN0U2htZW1EYXRhCit7CisJaW50CQkJ dmFsdWU7CisJYm9vbAkJaW5pdGlhbGl6ZWQ7CisJaW50CQkJYXR0YWNoX2NvdW50OworfSBU ZXN0U2htZW1EYXRhOworCitzdGF0aWMgVGVzdFNobWVtRGF0YSAqVGVzdFNobWVtOworCitz dGF0aWMgYm9vbCBhdHRhY2hlZF9vcl9pbml0aWFsaXplZCA9IGZhbHNlOworCitzdGF0aWMg dm9pZCB0ZXN0X3NobWVtX3JlcXVlc3Qodm9pZCAqYXJnKTsKK3N0YXRpYyB2b2lkIHRlc3Rf c2htZW1faW5pdCh2b2lkICphcmcpOworc3RhdGljIHZvaWQgdGVzdF9zaG1lbV9hdHRhY2go dm9pZCAqYXJnKTsKKworc3RhdGljIGNvbnN0IFNobWVtQ2FsbGJhY2tzIFRlc3RTaG1lbUNh bGxiYWNrcyA9IHsKKwkuZmxhZ3MgPSBTSE1FTV9DQUxMQkFDS1NfQUxMT1dfQUZURVJfU1RB UlRVUCwKKwkucmVxdWVzdF9mbiA9IHRlc3Rfc2htZW1fcmVxdWVzdCwKKwkuaW5pdF9mbiA9 IHRlc3Rfc2htZW1faW5pdCwKKwkuYXR0YWNoX2ZuID0gdGVzdF9zaG1lbV9hdHRhY2gsCit9 OworCitzdGF0aWMgdm9pZAordGVzdF9zaG1lbV9yZXF1ZXN0KHZvaWQgKmFyZykKK3sKKwll bG9nKExPRywgInRlc3Rfc2htZW1fcmVxdWVzdCBjYWxsYmFjayBjYWxsZWQiKTsKKworCVNo bWVtUmVxdWVzdFN0cnVjdCgubmFtZSA9ICJ0ZXN0X3NobWVtIGFyZWEiLAorCQkJCQkgICAu c2l6ZSA9IHNpemVvZihUZXN0U2htZW1EYXRhKSwKKwkJCQkJICAgLnB0ciA9ICh2b2lkICoq KSAmVGVzdFNobWVtKTsKK30KKworc3RhdGljIHZvaWQKK3Rlc3Rfc2htZW1faW5pdCh2b2lk ICphcmcpCit7CisJZWxvZyhMT0csICJpbml0IGNhbGxiYWNrIGNhbGxlZCIpOworCWlmIChU ZXN0U2htZW0tPmluaXRpYWxpemVkKQorCQllbG9nKEVSUk9SLCAic2htZW0gYXJlYSBhbHJl YWR5IGluaXRpYWxpemVkIik7CisJVGVzdFNobWVtLT5pbml0aWFsaXplZCA9IHRydWU7CisK KwlpZiAoYXR0YWNoZWRfb3JfaW5pdGlhbGl6ZWQpCisJCWVsb2coRVJST1IsICJhdHRhY2gg b3IgaW5pdGlhbGl6ZSBhbHJlYWR5IGNhbGxlZCBpbiB0aGlzIHByb2Nlc3MiKTsKKwlhdHRh Y2hlZF9vcl9pbml0aWFsaXplZCA9IHRydWU7Cit9CisKK3N0YXRpYyB2b2lkCit0ZXN0X3No bWVtX2F0dGFjaCh2b2lkICphcmcpCit7CisJZWxvZyhMT0csICJ0ZXN0X3NobWVtX2F0dGFj aCBjYWxsYmFjayBjYWxsZWQiKTsKKwlpZiAoIVRlc3RTaG1lbS0+aW5pdGlhbGl6ZWQpCisJ CWVsb2coRVJST1IsICJzaG1lbSBhcmVhIG5vdCB5ZXQgaW5pdGlhbGl6ZWQiKTsKKwlUZXN0 U2htZW0tPmF0dGFjaF9jb3VudCsrOworCisJaWYgKGF0dGFjaGVkX29yX2luaXRpYWxpemVk KQorCQllbG9nKEVSUk9SLCAiYXR0YWNoIG9yIGluaXRpYWxpemUgYWxyZWFkeSBjYWxsZWQg aW4gdGhpcyBwcm9jZXNzIik7CisJYXR0YWNoZWRfb3JfaW5pdGlhbGl6ZWQgPSB0cnVlOwor fQorCit2b2lkCitfUEdfaW5pdCh2b2lkKQoreworCWVsb2coTE9HLCAidGVzdF9zaG1lbSBt b2R1bGUncyBfUEdfaW5pdCBjYWxsZWQiKTsKKwlSZWdpc3RlclNobWVtQ2FsbGJhY2tzKCZU ZXN0U2htZW1DYWxsYmFja3MpOworfQorCitQR19GVU5DVElPTl9JTkZPX1YxKGdldF90ZXN0 X3NobWVtX2F0dGFjaF9jb3VudCk7CitEYXR1bQorZ2V0X3Rlc3Rfc2htZW1fYXR0YWNoX2Nv dW50KFBHX0ZVTkNUSU9OX0FSR1MpCit7CisJaWYgKCFhdHRhY2hlZF9vcl9pbml0aWFsaXpl ZCkKKwkJZWxvZyhFUlJPUiwgInNobWVtIGFyZWEgbm90IGF0dGFjaGVkIG9yIGluaXRpYWxp emVkIGluIHRoaXMgcHJvY2VzcyIpOworCWlmICghVGVzdFNobWVtLT5pbml0aWFsaXplZCkK KwkJZWxvZyhFUlJPUiwgInNobWVtIGFyZWEgbm90IHlldCBpbml0aWFsaXplZCIpOworCVBH X1JFVFVSTl9JTlQzMihUZXN0U2htZW0tPmF0dGFjaF9jb3VudCk7Cit9CmRpZmYgLS1naXQg YS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htZW0vdGVzdF9zaG1lbS5jb250cm9sIGIvc3Jj L3Rlc3QvbW9kdWxlcy90ZXN0X3NobWVtL3Rlc3Rfc2htZW0uY29udHJvbApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZjJmMjZmNDUzN2EKLS0tIC9kZXYvbnVs bAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rfc2htZW0vdGVzdF9zaG1lbS5jb250cm9s CkBAIC0wLDAgKzEsMyBAQAorY29tbWVudCA9ICdUZXN0IGNvZGUgZm9yIHNobWVtIGFsbG9j YXRpb25zJworZGVmYXVsdF92ZXJzaW9uID0gJzEuMCcKK21vZHVsZV9wYXRobmFtZSA9ICck bGliZGlyL3Rlc3Rfc2htZW0nCmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlw ZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IGQ1 MjdkYjgyNGExLi4zNDljZjRlOWYxMiAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50 L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QK QEAgLTMxNDgsNiArMzE0OCw3IEBAIFRlc3REU01SZWdpc3RyeUhhc2hFbnRyeQogVGVzdERT TVJlZ2lzdHJ5U3RydWN0CiBUZXN0RGVjb2RpbmdEYXRhCiBUZXN0RGVjb2RpbmdUeG5EYXRh CitUZXN0U2htZW1EYXRhCiBUZXN0U3BlYwogVGVzdFZhbHVlVHlwZQogVGV4dEZyZXEKLS0g CjIuNDcuMwoK --------------DjaUCGyXkgmfSYE7E2Or3PMa Content-Type: text/x-patch; charset=UTF-8; name="v12-0004-Convert-pg_stat_statements-to-use-the-new-shmem-.patch" Content-Disposition: attachment; filename*0="v12-0004-Convert-pg_stat_statements-to-use-the-new-shmem-.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAzNDFmZjQ4M2Q1ZmEzN2IzYTkyYjNiMDhmMTE0ZTg3ZmVmMTlkOTg4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFN1biwgNSBBcHIgMjAyNiAxOTo1MjoyMCArMDMwMApT dWJqZWN0OiBbUEFUQ0ggdjEyIDA0LzEzXSBDb252ZXJ0IHBnX3N0YXRfc3RhdGVtZW50cyB0 byB1c2UgdGhlIG5ldyBzaG1lbQogYWxsb2NhdGlvbiBmdW5jdGlvbnMKCkFzIHBhcnQgb2Yg dGhpcywgZW1iZWQgdGhlIExXTG9jayBpdCBuZWVkcyBpbiB0aGUgc2hhcmVkIG1lbW9yeSBz dHJ1Y3QKaXRzZWxmLCBzbyB0aGF0IHdlIGRvbid0IG5lZWQgdG8gdXNlIFJlcXVlc3ROYW1l ZExXTG9ja1RyYW5jaGUoKQphbnltb3JlLiBMV0xvY2tOZXdUcmFuY2hlSWQrTFdMb2NrSW5p dGlhbGl6ZSBpcyBtb3JlIGNvbnZlbmllbnQgdG8gdXNlCmluIGV4dGVuc2lvbnMuCgpSZXZp ZXdlZC1ieTogQXNodXRvc2ggQmFwYXQgPGFzaHV0b3NoLmJhcGF0Lm9zc0BnbWFpbC5jb20+ ClJldmlld2VkLWJ5OiBNYXR0aGlhcyB2YW4gZGUgTWVlbnQgPGJvZWtld3VybStwb3N0Z3Jl c0BnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBEYW5pZWwgR3VzdGFmc3NvbiA8ZGFuaWVsQHll c3FsLnNlPgpEaXNjdXNzaW9uOiBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdl LWlkL0NBRXhIVzV2TTFibmVMWWZnMHdHZUFhPTUyVWlKM3o0dktkM0FKNzJYOEZ3NmszS0ty Z0BtYWlsLmdtYWlsLmNvbQotLS0KIC4uLi9wZ19zdGF0X3N0YXRlbWVudHMvcGdfc3RhdF9z dGF0ZW1lbnRzLmMgICB8IDE3MyArKysrKysrKy0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2Vk LCA3NyBpbnNlcnRpb25zKCspLCA5NiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9jb250 cmliL3BnX3N0YXRfc3RhdGVtZW50cy9wZ19zdGF0X3N0YXRlbWVudHMuYyBiL2NvbnRyaWIv cGdfc3RhdF9zdGF0ZW1lbnRzL3BnX3N0YXRfc3RhdGVtZW50cy5jCmluZGV4IDU0OTRkNDFk Y2ExLi5mMDc4YjRmZTcxYiAxMDA2NDQKLS0tIGEvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVu dHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmMKKysrIGIvY29udHJpYi9wZ19zdGF0X3N0YXRlbWVu dHMvcGdfc3RhdF9zdGF0ZW1lbnRzLmMKQEAgLTI0OSw3ICsyNDksNyBAQCB0eXBlZGVmIHN0 cnVjdCBwZ3NzRW50cnkKICAqLwogdHlwZWRlZiBzdHJ1Y3QgcGdzc1NoYXJlZFN0YXRlCiB7 Ci0JTFdMb2NrCSAgICpsb2NrOwkJCS8qIHByb3RlY3RzIGhhc2h0YWJsZSBzZWFyY2gvbW9k aWZpY2F0aW9uICovCisJTFdMb2NrUGFkZGVkIGxvY2s7CQkJLyogcHJvdGVjdHMgaGFzaHRh YmxlIHNlYXJjaC9tb2RpZmljYXRpb24gKi8KIAlkb3VibGUJCWN1cl9tZWRpYW5fdXNhZ2U7 CS8qIGN1cnJlbnQgbWVkaWFuIHVzYWdlIGluIGhhc2h0YWJsZSAqLwogCVNpemUJCW1lYW5f cXVlcnlfbGVuOyAvKiBjdXJyZW50IG1lYW4gZW50cnkgdGV4dCBsZW5ndGggKi8KIAlzbG9j a190CQltdXRleDsJCQkvKiBwcm90ZWN0cyBmb2xsb3dpbmcgZmllbGRzIG9ubHk6ICovCkBA IC0yNTksMTQgKzI1OSwyNCBAQCB0eXBlZGVmIHN0cnVjdCBwZ3NzU2hhcmVkU3RhdGUKIAlw Z3NzR2xvYmFsU3RhdHMgc3RhdHM7CQkvKiBnbG9iYWwgc3RhdGlzdGljcyBmb3IgcGdzcyAq LwogfSBwZ3NzU2hhcmVkU3RhdGU7CiAKKy8qIExpbmtzIHRvIHNoYXJlZCBtZW1vcnkgc3Rh dGUgKi8KK3N0YXRpYyBwZ3NzU2hhcmVkU3RhdGUgKnBnc3M7CitzdGF0aWMgSFRBQiAqcGdz c19oYXNoOworCitzdGF0aWMgdm9pZCBwZ3NzX3NobWVtX3JlcXVlc3Qodm9pZCAqYXJnKTsK K3N0YXRpYyB2b2lkIHBnc3Nfc2htZW1faW5pdCh2b2lkICphcmcpOworCitzdGF0aWMgY29u c3QgU2htZW1DYWxsYmFja3MgcGdzc19zaG1lbV9jYWxsYmFja3MgPSB7CisJLnJlcXVlc3Rf Zm4gPSBwZ3NzX3NobWVtX3JlcXVlc3QsCisJLmluaXRfZm4gPSBwZ3NzX3NobWVtX2luaXQs Cit9OworCiAvKi0tLS0gTG9jYWwgdmFyaWFibGVzIC0tLS0qLwogCiAvKiBDdXJyZW50IG5l c3RpbmcgZGVwdGggb2YgcGxhbm5lci9FeGVjdXRvclJ1bi9Qcm9jZXNzVXRpbGl0eSBjYWxs cyAqLwogc3RhdGljIGludAluZXN0aW5nX2xldmVsID0gMDsKIAogLyogU2F2ZWQgaG9vayB2 YWx1ZXMgKi8KLXN0YXRpYyBzaG1lbV9yZXF1ZXN0X2hvb2tfdHlwZSBwcmV2X3NobWVtX3Jl cXVlc3RfaG9vayA9IE5VTEw7Ci1zdGF0aWMgc2htZW1fc3RhcnR1cF9ob29rX3R5cGUgcHJl dl9zaG1lbV9zdGFydHVwX2hvb2sgPSBOVUxMOwogc3RhdGljIHBvc3RfcGFyc2VfYW5hbHl6 ZV9ob29rX3R5cGUgcHJldl9wb3N0X3BhcnNlX2FuYWx5emVfaG9vayA9IE5VTEw7CiBzdGF0 aWMgcGxhbm5lcl9ob29rX3R5cGUgcHJldl9wbGFubmVyX2hvb2sgPSBOVUxMOwogc3RhdGlj IEV4ZWN1dG9yU3RhcnRfaG9va190eXBlIHByZXZfRXhlY3V0b3JTdGFydCA9IE5VTEw7CkBA IC0yNzUsMTAgKzI4NSw2IEBAIHN0YXRpYyBFeGVjdXRvckZpbmlzaF9ob29rX3R5cGUgcHJl dl9FeGVjdXRvckZpbmlzaCA9IE5VTEw7CiBzdGF0aWMgRXhlY3V0b3JFbmRfaG9va190eXBl IHByZXZfRXhlY3V0b3JFbmQgPSBOVUxMOwogc3RhdGljIFByb2Nlc3NVdGlsaXR5X2hvb2tf dHlwZSBwcmV2X1Byb2Nlc3NVdGlsaXR5ID0gTlVMTDsKIAotLyogTGlua3MgdG8gc2hhcmVk IG1lbW9yeSBzdGF0ZSAqLwotc3RhdGljIHBnc3NTaGFyZWRTdGF0ZSAqcGdzcyA9IE5VTEw7 Ci1zdGF0aWMgSFRBQiAqcGdzc19oYXNoID0gTlVMTDsKLQogLyotLS0tIEdVQyB2YXJpYWJs ZXMgLS0tLSovCiAKIHR5cGVkZWYgZW51bQpAQCAtMzMxLDggKzMzNyw2IEBAIFBHX0ZVTkNU SU9OX0lORk9fVjEocGdfc3RhdF9zdGF0ZW1lbnRzXzFfMTMpOwogUEdfRlVOQ1RJT05fSU5G T19WMShwZ19zdGF0X3N0YXRlbWVudHMpOwogUEdfRlVOQ1RJT05fSU5GT19WMShwZ19zdGF0 X3N0YXRlbWVudHNfaW5mbyk7CiAKLXN0YXRpYyB2b2lkIHBnc3Nfc2htZW1fcmVxdWVzdCh2 b2lkKTsKLXN0YXRpYyB2b2lkIHBnc3Nfc2htZW1fc3RhcnR1cCh2b2lkKTsKIHN0YXRpYyB2 b2lkIHBnc3Nfc2htZW1fc2h1dGRvd24oaW50IGNvZGUsIERhdHVtIGFyZyk7CiBzdGF0aWMg dm9pZCBwZ3NzX3Bvc3RfcGFyc2VfYW5hbHl6ZShQYXJzZVN0YXRlICpwc3RhdGUsIFF1ZXJ5 ICpxdWVyeSwKIAkJCQkJCQkJCUp1bWJsZVN0YXRlICpqc3RhdGUpOwpAQCAtMzY2LDcgKzM3 MCw2IEBAIHN0YXRpYyB2b2lkIHBnc3Nfc3RvcmUoY29uc3QgY2hhciAqcXVlcnksIGludDY0 IHF1ZXJ5SWQsCiBzdGF0aWMgdm9pZCBwZ19zdGF0X3N0YXRlbWVudHNfaW50ZXJuYWwoRnVu Y3Rpb25DYWxsSW5mbyBmY2luZm8sCiAJCQkJCQkJCQkJcGdzc1ZlcnNpb24gYXBpX3ZlcnNp b24sCiAJCQkJCQkJCQkJYm9vbCBzaG93dGV4dCk7Ci1zdGF0aWMgU2l6ZSBwZ3NzX21lbXNp emUodm9pZCk7CiBzdGF0aWMgcGdzc0VudHJ5ICplbnRyeV9hbGxvYyhwZ3NzSGFzaEtleSAq a2V5LCBTaXplIHF1ZXJ5X29mZnNldCwgaW50IHF1ZXJ5X2xlbiwKIAkJCQkJCQkgIGludCBl bmNvZGluZywgYm9vbCBzdGlja3kpOwogc3RhdGljIHZvaWQgZW50cnlfZGVhbGxvYyh2b2lk KTsKQEAgLTQ3MSwxMyArNDc0LDE0IEBAIF9QR19pbml0KHZvaWQpCiAKIAlNYXJrR1VDUHJl Zml4UmVzZXJ2ZWQoInBnX3N0YXRfc3RhdGVtZW50cyIpOwogCisJLyoKKwkgKiBSZWdpc3Rl ciBvdXIgc2hhcmVkIG1lbW9yeSBuZWVkcy4KKwkgKi8KKwlSZWdpc3RlclNobWVtQ2FsbGJh Y2tzKCZwZ3NzX3NobWVtX2NhbGxiYWNrcyk7CisKIAkvKgogCSAqIEluc3RhbGwgaG9va3Mu CiAJICovCi0JcHJldl9zaG1lbV9yZXF1ZXN0X2hvb2sgPSBzaG1lbV9yZXF1ZXN0X2hvb2s7 Ci0Jc2htZW1fcmVxdWVzdF9ob29rID0gcGdzc19zaG1lbV9yZXF1ZXN0OwotCXByZXZfc2ht ZW1fc3RhcnR1cF9ob29rID0gc2htZW1fc3RhcnR1cF9ob29rOwotCXNobWVtX3N0YXJ0dXBf aG9vayA9IHBnc3Nfc2htZW1fc3RhcnR1cDsKIAlwcmV2X3Bvc3RfcGFyc2VfYW5hbHl6ZV9o b29rID0gcG9zdF9wYXJzZV9hbmFseXplX2hvb2s7CiAJcG9zdF9wYXJzZV9hbmFseXplX2hv b2sgPSBwZ3NzX3Bvc3RfcGFyc2VfYW5hbHl6ZTsKIAlwcmV2X3BsYW5uZXJfaG9vayA9IHBs YW5uZXJfaG9vazsKQEAgLTQ5NSwzMCArNDk5LDQyIEBAIF9QR19pbml0KHZvaWQpCiB9CiAK IC8qCi0gKiBzaG1lbV9yZXF1ZXN0IGhvb2s6IHJlcXVlc3QgYWRkaXRpb25hbCBzaGFyZWQg cmVzb3VyY2VzLiAgV2UnbGwgYWxsb2NhdGUgb3IKLSAqIGF0dGFjaCB0byB0aGUgc2hhcmVk IHJlc291cmNlcyBpbiBwZ3NzX3NobWVtX3N0YXJ0dXAoKS4KKyAqIHNobWVtIHJlcXVlc3Qg Y2FsbGJhY2s6IFJlcXVlc3Qgc2hhcmVkIG1lbW9yeSByZXNvdXJjZXMuCisgKgorICogVGhp cyBpcyBjYWxsZWQgYXQgcG9zdG1hc3RlciBzdGFydHVwLiAgTm90ZSB0aGF0IHRoZSBzaGFy ZWQgbWVtb3J5IGlzbid0CisgKiBhbGxvY2F0ZWQgaGVyZSB5ZXQsIHRoaXMgbWVyZWx5IHJl Z2lzdGVyIG91ciBuZWVkcy4KKyAqCisgKiBJbiBFWEVDX0JBQ0tFTkQgbW9kZSwgdGhpcyBp cyBhbHNvIGNhbGxlZCBpbiBlYWNoIGJhY2tlbmQsIHRvIHJlLWF0dGFjaCB0bworICogdGhl IHNoYXJlZCBtZW1vcnkgYXJlYSB0aGF0IHdhcyBhbHJlYWR5IGluaXRpYWxpemVkLgogICov CiBzdGF0aWMgdm9pZAotcGdzc19zaG1lbV9yZXF1ZXN0KHZvaWQpCitwZ3NzX3NobWVtX3Jl cXVlc3Qodm9pZCAqYXJnKQogewotCWlmIChwcmV2X3NobWVtX3JlcXVlc3RfaG9vaykKLQkJ cHJldl9zaG1lbV9yZXF1ZXN0X2hvb2soKTsKLQotCVJlcXVlc3RBZGRpblNobWVtU3BhY2Uo cGdzc19tZW1zaXplKCkpOwotCVJlcXVlc3ROYW1lZExXTG9ja1RyYW5jaGUoInBnX3N0YXRf c3RhdGVtZW50cyIsIDEpOworCVNobWVtUmVxdWVzdEhhc2goLm5hbWUgPSAicGdfc3RhdF9z dGF0ZW1lbnRzIGhhc2giLAorCQkJCQkgLm5lbGVtcyA9IHBnc3NfbWF4LAorCQkJCQkgLmhh c2hfaW5mby5rZXlzaXplID0gc2l6ZW9mKHBnc3NIYXNoS2V5KSwKKwkJCQkJIC5oYXNoX2lu Zm8uZW50cnlzaXplID0gc2l6ZW9mKHBnc3NFbnRyeSksCisJCQkJCSAuaGFzaF9mbGFncyA9 IEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMsCisJCQkJCSAucHRyID0gJnBnc3NfaGFzaCwKKwkJ KTsKKwlTaG1lbVJlcXVlc3RTdHJ1Y3QoLm5hbWUgPSAicGdfc3RhdF9zdGF0ZW1lbnRzIiwK KwkJCQkJICAgLnNpemUgPSBzaXplb2YocGdzc1NoYXJlZFN0YXRlKSwKKwkJCQkJICAgLnB0 ciA9ICh2b2lkICoqKSAmcGdzcywKKwkJKTsKIH0KIAogLyoKLSAqIHNobWVtX3N0YXJ0dXAg aG9vazogYWxsb2NhdGUgb3IgYXR0YWNoIHRvIHNoYXJlZCBtZW1vcnksCi0gKiB0aGVuIGxv YWQgYW55IHByZS1leGlzdGluZyBzdGF0aXN0aWNzIGZyb20gZmlsZS4KLSAqIEFsc28gY3Jl YXRlIGFuZCBsb2FkIHRoZSBxdWVyeS10ZXh0cyBmaWxlLCB3aGljaCBpcyBleHBlY3RlZCB0 byBleGlzdAotICogKGV2ZW4gaWYgZW1wdHkpIHdoaWxlIHRoZSBtb2R1bGUgaXMgZW5hYmxl ZC4KKyAqIHNobWVtIGluaXQgY2FsbGJhY2s6IEluaXRpYWxpemUgb3VyIHNoYXJlZCBtZW1v cnkgZGF0YSBzdHJ1Y3R1cmVzIGF0CisgKiBwb3N0bWFzdGVyIHN0YXJ0dXAuCisgKgorICog TG9hZCBhbnkgcHJlLWV4aXN0aW5nIHN0YXRpc3RpY3MgZnJvbSBmaWxlLiAgQWxzbyBjcmVh dGUgYW5kIGxvYWQgdGhlCisgKiBxdWVyeS10ZXh0cyBmaWxlLCB3aGljaCBpcyBleHBlY3Rl ZCB0byBleGlzdCAoZXZlbiBpZiBlbXB0eSkgd2hpbGUgdGhlCisgKiBtb2R1bGUgaXMgZW5h YmxlZC4KICAqLwogc3RhdGljIHZvaWQKLXBnc3Nfc2htZW1fc3RhcnR1cCh2b2lkKQorcGdz c19zaG1lbV9pbml0KHZvaWQgKmFyZykKIHsKLQlib29sCQlmb3VuZDsKLQlIQVNIQ1RMCQlp bmZvOworCWludAkJCXRyYW5jaGVfaWQ7CiAJRklMRQkgICAqZmlsZSA9IE5VTEw7CiAJRklM RQkgICAqcWZpbGUgPSBOVUxMOwogCXVpbnQzMgkJaGVhZGVyOwpAQCAtNTI4LDU5ICs1NDQs MzggQEAgcGdzc19zaG1lbV9zdGFydHVwKHZvaWQpCiAJaW50CQkJYnVmZmVyX3NpemU7CiAJ Y2hhcgkgICAqYnVmZmVyID0gTlVMTDsKIAotCWlmIChwcmV2X3NobWVtX3N0YXJ0dXBfaG9v aykKLQkJcHJldl9zaG1lbV9zdGFydHVwX2hvb2soKTsKLQotCS8qIHJlc2V0IGluIGNhc2Ug dGhpcyBpcyBhIHJlc3RhcnQgd2l0aGluIHRoZSBwb3N0bWFzdGVyICovCi0JcGdzcyA9IE5V TEw7Ci0JcGdzc19oYXNoID0gTlVMTDsKLQogCS8qCi0JICogQ3JlYXRlIG9yIGF0dGFjaCB0 byB0aGUgc2hhcmVkIG1lbW9yeSBzdGF0ZSwgaW5jbHVkaW5nIGhhc2ggdGFibGUKKwkgKiBX ZSBhbHJlYWR5IGNoZWNrZWQgdGhhdCB3ZSdyZSBsb2FkZWQgZnJvbSBzaGFyZWRfcHJlbG9h ZF9saWJyYXJpZXMgaW4KKwkgKiBfUEdfaW5pdCgpLCBzbyB3ZSBzaG91bGQgbm90IGdldCBo ZXJlIGFmdGVyIHBvc3RtYXN0ZXIgc3RhcnR1cC4KIAkgKi8KLQlMV0xvY2tBY3F1aXJlKEFk ZGluU2htZW1Jbml0TG9jaywgTFdfRVhDTFVTSVZFKTsKLQotCXBnc3MgPSBTaG1lbUluaXRT dHJ1Y3QoInBnX3N0YXRfc3RhdGVtZW50cyIsCi0JCQkJCQkgICBzaXplb2YocGdzc1NoYXJl ZFN0YXRlKSwKLQkJCQkJCSAgICZmb3VuZCk7Ci0KLQlpZiAoIWZvdW5kKQotCXsKLQkJLyog Rmlyc3QgdGltZSB0aHJvdWdoIC4uLiAqLwotCQlwZ3NzLT5sb2NrID0gJihHZXROYW1lZExX TG9ja1RyYW5jaGUoInBnX3N0YXRfc3RhdGVtZW50cyIpKS0+bG9jazsKLQkJcGdzcy0+Y3Vy X21lZGlhbl91c2FnZSA9IEFTU1VNRURfTUVESUFOX0lOSVQ7Ci0JCXBnc3MtPm1lYW5fcXVl cnlfbGVuID0gQVNTVU1FRF9MRU5HVEhfSU5JVDsKLQkJU3BpbkxvY2tJbml0KCZwZ3NzLT5t dXRleCk7Ci0JCXBnc3MtPmV4dGVudCA9IDA7Ci0JCXBnc3MtPm5fd3JpdGVycyA9IDA7Ci0J CXBnc3MtPmdjX2NvdW50ID0gMDsKLQkJcGdzcy0+c3RhdHMuZGVhbGxvYyA9IDA7Ci0JCXBn c3MtPnN0YXRzLnN0YXRzX3Jlc2V0ID0gR2V0Q3VycmVudFRpbWVzdGFtcCgpOwotCX0KLQot CWluZm8ua2V5c2l6ZSA9IHNpemVvZihwZ3NzSGFzaEtleSk7Ci0JaW5mby5lbnRyeXNpemUg PSBzaXplb2YocGdzc0VudHJ5KTsKLQlwZ3NzX2hhc2ggPSBTaG1lbUluaXRIYXNoKCJwZ19z dGF0X3N0YXRlbWVudHMgaGFzaCIsCi0JCQkJCQkJICBwZ3NzX21heCwKLQkJCQkJCQkgICZp bmZvLAotCQkJCQkJCSAgSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyk7Ci0KLQlMV0xvY2tSZWxl YXNlKEFkZGluU2htZW1Jbml0TG9jayk7CisJQXNzZXJ0KCFJc1VuZGVyUG9zdG1hc3Rlcik7 CiAKIAkvKgotCSAqIElmIHdlJ3JlIGluIHRoZSBwb3N0bWFzdGVyIChvciBhIHN0YW5kYWxv bmUgYmFja2VuZC4uLiksIHNldCB1cCBhIHNobWVtCi0JICogZXhpdCBob29rIHRvIGR1bXAg dGhlIHN0YXRpc3RpY3MgdG8gZGlzay4KKwkgKiBJbml0aWFsaXplIHRoZSBzaG1lbSBhcmVh IHdpdGggbm8gc3RhdGlzdGljcy4KIAkgKi8KLQlpZiAoIUlzVW5kZXJQb3N0bWFzdGVyKQot CQlvbl9zaG1lbV9leGl0KHBnc3Nfc2htZW1fc2h1dGRvd24sIChEYXR1bSkgMCk7CisJdHJh bmNoZV9pZCA9IExXTG9ja05ld1RyYW5jaGVJZCgicGdfc3RhdF9zdGF0ZW1lbnRzIik7CisJ TFdMb2NrSW5pdGlhbGl6ZSgmcGdzcy0+bG9jay5sb2NrLCB0cmFuY2hlX2lkKTsKKwlwZ3Nz LT5jdXJfbWVkaWFuX3VzYWdlID0gQVNTVU1FRF9NRURJQU5fSU5JVDsKKwlwZ3NzLT5tZWFu X3F1ZXJ5X2xlbiA9IEFTU1VNRURfTEVOR1RIX0lOSVQ7CisJU3BpbkxvY2tJbml0KCZwZ3Nz LT5tdXRleCk7CisJcGdzcy0+ZXh0ZW50ID0gMDsKKwlwZ3NzLT5uX3dyaXRlcnMgPSAwOwor CXBnc3MtPmdjX2NvdW50ID0gMDsKKwlwZ3NzLT5zdGF0cy5kZWFsbG9jID0gMDsKKwlwZ3Nz LT5zdGF0cy5zdGF0c19yZXNldCA9IEdldEN1cnJlbnRUaW1lc3RhbXAoKTsKKworCS8qIFRo ZSBoYXNoIHRhYmxlIG11c3QndmUgYWxzbyBiZWVuIGluaXRpYWxpemVkIGJ5IG5vdyAqLwor CUFzc2VydChwZ3NzX2hhc2ggIT0gTlVMTCk7CiAKIAkvKgotCSAqIERvbmUgaWYgc29tZSBv dGhlciBwcm9jZXNzIGFscmVhZHkgY29tcGxldGVkIG91ciBpbml0aWFsaXphdGlvbi4KKwkg KiBTZXQgdXAgYSBzaG1lbSBleGl0IGhvb2sgdG8gZHVtcCB0aGUgc3RhdGlzdGljcyB0byBk aXNrIG9uIHBvc3RtYXN0ZXIKKwkgKiAob3Igc3RhbmRhbG9uZSBiYWNrZW5kKSBleGl0Lgog CSAqLwotCWlmIChmb3VuZCkKLQkJcmV0dXJuOworCW9uX3NobWVtX2V4aXQocGdzc19zaG1l bV9zaHV0ZG93biwgKERhdHVtKSAwKTsKIAogCS8qCisJICogTG9hZCBhbnkgcHJlLWV4aXN0 aW5nIHN0YXRpc3RpY3MgZnJvbSBmaWxlLgorCSAqCiAJICogTm90ZTogd2UgZG9uJ3QgYm90 aGVyIHdpdGggbG9ja3MgaGVyZSwgYmVjYXVzZSB0aGVyZSBzaG91bGQgYmUgbm8gb3RoZXIK IAkgKiBwcm9jZXNzZXMgcnVubmluZyB3aGVuIHRoaXMgY29kZSBpcyByZWFjaGVkLgogCSAq LwpAQCAtMTMzOSw3ICsxMzM0LDcgQEAgcGdzc19zdG9yZShjb25zdCBjaGFyICpxdWVyeSwg aW50NjQgcXVlcnlJZCwKIAlrZXkudG9wbGV2ZWwgPSAobmVzdGluZ19sZXZlbCA9PSAwKTsK IAogCS8qIExvb2t1cCB0aGUgaGFzaCB0YWJsZSBlbnRyeSB3aXRoIHNoYXJlZCBsb2NrLiAq LwotCUxXTG9ja0FjcXVpcmUocGdzcy0+bG9jaywgTFdfU0hBUkVEKTsKKwlMV0xvY2tBY3F1 aXJlKCZwZ3NzLT5sb2NrLmxvY2ssIExXX1NIQVJFRCk7CiAKIAllbnRyeSA9IChwZ3NzRW50 cnkgKikgaGFzaF9zZWFyY2gocGdzc19oYXNoLCAma2V5LCBIQVNIX0ZJTkQsIE5VTEwpOwog CkBAIC0xMzYwLDExICsxMzU1LDExIEBAIHBnc3Nfc3RvcmUoY29uc3QgY2hhciAqcXVlcnks IGludDY0IHF1ZXJ5SWQsCiAJCSAqLwogCQlpZiAoanN0YXRlKQogCQl7Ci0JCQlMV0xvY2tS ZWxlYXNlKHBnc3MtPmxvY2spOworCQkJTFdMb2NrUmVsZWFzZSgmcGdzcy0+bG9jay5sb2Nr KTsKIAkJCW5vcm1fcXVlcnkgPSBnZW5lcmF0ZV9ub3JtYWxpemVkX3F1ZXJ5KGpzdGF0ZSwg cXVlcnksCiAJCQkJCQkJCQkJCQkgICBxdWVyeV9sb2NhdGlvbiwKIAkJCQkJCQkJCQkJCSAg ICZxdWVyeV9sZW4pOwotCQkJTFdMb2NrQWNxdWlyZShwZ3NzLT5sb2NrLCBMV19TSEFSRUQp OworCQkJTFdMb2NrQWNxdWlyZSgmcGdzcy0+bG9jay5sb2NrLCBMV19TSEFSRUQpOwogCQl9 CiAKIAkJLyogQXBwZW5kIG5ldyBxdWVyeSB0ZXh0IHRvIGZpbGUgd2l0aCBvbmx5IHNoYXJl ZCBsb2NrIGhlbGQgKi8KQEAgLTEzNzksOCArMTM3NCw4IEBAIHBnc3Nfc3RvcmUoY29uc3Qg Y2hhciAqcXVlcnksIGludDY0IHF1ZXJ5SWQsCiAJCWRvX2djID0gbmVlZF9nY19xdGV4dHMo KTsKIAogCQkvKiBOZWVkIGV4Y2x1c2l2ZSBsb2NrIHRvIG1ha2UgYSBuZXcgaGFzaHRhYmxl IGVudHJ5IC0gcHJvbW90ZSAqLwotCQlMV0xvY2tSZWxlYXNlKHBnc3MtPmxvY2spOwotCQlM V0xvY2tBY3F1aXJlKHBnc3MtPmxvY2ssIExXX0VYQ0xVU0lWRSk7CisJCUxXTG9ja1JlbGVh c2UoJnBnc3MtPmxvY2subG9jayk7CisJCUxXTG9ja0FjcXVpcmUoJnBnc3MtPmxvY2subG9j aywgTFdfRVhDTFVTSVZFKTsKIAogCQkvKgogCQkgKiBBIGdhcmJhZ2UgY29sbGVjdGlvbiBt YXkgaGF2ZSBvY2N1cnJlZCB3aGlsZSB3ZSB3ZXJlbid0IGhvbGRpbmcgdGhlCkBAIC0xNTE5 LDcgKzE1MTQsNyBAQCBwZ3NzX3N0b3JlKGNvbnN0IGNoYXIgKnF1ZXJ5LCBpbnQ2NCBxdWVy eUlkLAogCX0KIAogZG9uZToKLQlMV0xvY2tSZWxlYXNlKHBnc3MtPmxvY2spOworCUxXTG9j a1JlbGVhc2UoJnBnc3MtPmxvY2subG9jayk7CiAKIAkvKiBXZSBwb3N0cG9uZSB0aGlzIGNs ZWFuLXVwIHVudGlsIHdlJ3JlIG91dCBvZiB0aGUgbG9jayAqLwogCWlmIChub3JtX3F1ZXJ5 KQpAQCAtMTgwOCw3ICsxODAzLDcgQEAgcGdfc3RhdF9zdGF0ZW1lbnRzX2ludGVybmFsKEZ1 bmN0aW9uQ2FsbEluZm8gZmNpbmZvLAogCSAqIHdlIG5lZWQgdG8gcGFydGl0aW9uIHRoZSBo YXNoIHRhYmxlIHRvIGxpbWl0IHRoZSB0aW1lIHNwZW50IGhvbGRpbmcgYW55CiAJICogb25l IGxvY2suCiAJICovCi0JTFdMb2NrQWNxdWlyZShwZ3NzLT5sb2NrLCBMV19TSEFSRUQpOwor CUxXTG9ja0FjcXVpcmUoJnBnc3MtPmxvY2subG9jaywgTFdfU0hBUkVEKTsKIAogCWlmIChz aG93dGV4dCkKIAl7CkBAIC0yMDQ2LDcgKzIwNDEsNyBAQCBwZ19zdGF0X3N0YXRlbWVudHNf aW50ZXJuYWwoRnVuY3Rpb25DYWxsSW5mbyBmY2luZm8sCiAJCXR1cGxlc3RvcmVfcHV0dmFs dWVzKHJzaW5mby0+c2V0UmVzdWx0LCByc2luZm8tPnNldERlc2MsIHZhbHVlcywgbnVsbHMp OwogCX0KIAotCUxXTG9ja1JlbGVhc2UocGdzcy0+bG9jayk7CisJTFdMb2NrUmVsZWFzZSgm cGdzcy0+bG9jay5sb2NrKTsKIAogCWlmIChxYnVmZmVyKQogCQlwZnJlZShxYnVmZmVyKTsK QEAgLTIwODYsMjAgKzIwODEsNiBAQCBwZ19zdGF0X3N0YXRlbWVudHNfaW5mbyhQR19GVU5D VElPTl9BUkdTKQogCVBHX1JFVFVSTl9EQVRVTShIZWFwVHVwbGVHZXREYXR1bShoZWFwX2Zv cm1fdHVwbGUodHVwZGVzYywgdmFsdWVzLCBudWxscykpKTsKIH0KIAotLyoKLSAqIEVzdGlt YXRlIHNoYXJlZCBtZW1vcnkgc3BhY2UgbmVlZGVkLgotICovCi1zdGF0aWMgU2l6ZQotcGdz c19tZW1zaXplKHZvaWQpCi17Ci0JU2l6ZQkJc2l6ZTsKLQotCXNpemUgPSBNQVhBTElHTihz aXplb2YocGdzc1NoYXJlZFN0YXRlKSk7Ci0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIGhhc2hf ZXN0aW1hdGVfc2l6ZShwZ3NzX21heCwgc2l6ZW9mKHBnc3NFbnRyeSkpKTsKLQotCXJldHVy biBzaXplOwotfQotCiAvKgogICogQWxsb2NhdGUgYSBuZXcgaGFzaHRhYmxlIGVudHJ5Lgog ICogY2FsbGVyIG11c3QgaG9sZCBhbiBleGNsdXNpdmUgbG9jayBvbiBwZ3NzLT5sb2NrCkBA IC0yNzMwLDcgKzI3MTEsNyBAQCBlbnRyeV9yZXNldChPaWQgdXNlcmlkLCBPaWQgZGJpZCwg aW50NjQgcXVlcnlpZCwgYm9vbCBtaW5tYXhfb25seSkKIAkJCQkoZXJyY29kZShFUlJDT0RF X09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKIAkJCQkgZXJybXNnKCJwZ19z dGF0X3N0YXRlbWVudHMgbXVzdCBiZSBsb2FkZWQgdmlhIFwic2hhcmVkX3ByZWxvYWRfbGli cmFyaWVzXCIiKSkpOwogCi0JTFdMb2NrQWNxdWlyZShwZ3NzLT5sb2NrLCBMV19FWENMVVNJ VkUpOworCUxXTG9ja0FjcXVpcmUoJnBnc3MtPmxvY2subG9jaywgTFdfRVhDTFVTSVZFKTsK IAludW1fZW50cmllcyA9IGhhc2hfZ2V0X251bV9lbnRyaWVzKHBnc3NfaGFzaCk7CiAKIAlz dGF0c19yZXNldCA9IEdldEN1cnJlbnRUaW1lc3RhbXAoKTsKQEAgLTI4MjQsNyArMjgwNSw3 IEBAIGRvbmU6CiAJcmVjb3JkX2djX3F0ZXh0cygpOwogCiByZWxlYXNlX2xvY2s6Ci0JTFdM b2NrUmVsZWFzZShwZ3NzLT5sb2NrKTsKKwlMV0xvY2tSZWxlYXNlKCZwZ3NzLT5sb2NrLmxv Y2spOwogCiAJcmV0dXJuIHN0YXRzX3Jlc2V0OwogfQotLSAKMi40Ny4zCgo= --------------DjaUCGyXkgmfSYE7E2Or3PMa Content-Type: text/x-patch; charset=UTF-8; name="v12-0005-Introduce-registry-of-built-in-subsystems.patch" Content-Disposition: attachment; filename="v12-0005-Introduce-registry-of-built-in-subsystems.patch" Content-Transfer-Encoding: base64 RnJvbSAzMjUzMWU2OTdiMWM2NTNiOWFmOWE0Yjk4YjA5MjM4OTQzMThiYTBjIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFN1biwgNSBBcHIgMjAyNiAxOTo1MjoyOCArMDMwMApT dWJqZWN0OiBbUEFUQ0ggdjEyIDA1LzEzXSBJbnRyb2R1Y2UgcmVnaXN0cnkgb2YgYnVpbHQt aW4gc3Vic3lzdGVtcwoKVG8gYWRkIGEgbmV3IGJ1aWx0LWluIHN1YnN5c3RlbSwgYWRkIGl0 IHRvIHN1YnN5c3RlbXNsaXN0LmguIFRoYXQKaG9va3MgdXAgaXRzIHNobWVtIGNhbGxiYWNr cyBzbyB0aGF0IHRoZXkgZ2V0IGNhbGxlZCBhdCB0aGUgcmlnaHQKdGltZXMgZHVyaW5nIHBv c3RtYXN0ZXIgc3RhcnR1cC4gRm9yIG5vdyB0aGlzIGlzIHVudXNlZCwgYnV0IHdpbGwKcmVw bGFjZSB0aGUgY3VycmVudCBTdWJzeXN0ZW1TaG1lbVNpemUoKSBhbmQgU3Vic3lzdGVtU2ht ZW1Jbml0KCkKY2FsbHMgaW4gdGhlIG5leHQgY29tbWl0cy4KClJldmlld2VkLWJ5OiBBc2h1 dG9zaCBCYXBhdCA8YXNodXRvc2guYmFwYXQub3NzQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6 IE1hdHRoaWFzIHZhbiBkZSBNZWVudCA8Ym9la2V3dXJtK3Bvc3RncmVzQGdtYWlsLmNvbT4K UmV2aWV3ZWQtYnk6IERhbmllbCBHdXN0YWZzc29uIDxkYW5pZWxAeWVzcWwuc2U+CkRpc2N1 c3Npb246IGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQvQ0FFeEhXNXZN MWJuZUxZZmcwd0dlQWE9NTJVaUozejR2S2QzQUo3Mlg4Rnc2azNLS3JnQG1haWwuZ21haWwu Y29tCi0tLQogc3JjL2JhY2tlbmQvYm9vdHN0cmFwL2Jvb3RzdHJhcC5jICAgICAgIHwgIDIg KysKIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvbGF1bmNoX2JhY2tlbmQuYyB8ICAyICsrCiBz cmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYyAgICAgfCAgNSArKysrKwogc3Jj L2JhY2tlbmQvc3RvcmFnZS9pcGMvaXBjaS5jICAgICAgICAgIHwgMjEgKysrKysrKysrKysr KysrKysKIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVtLmMgICAgICAgICB8ICA2ICsr Ky0tCiBzcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMgICAgICAgICAgICAgfCAgMyArKysK IHNyYy9pbmNsdWRlL3N0b3JhZ2UvaXBjLmggICAgICAgICAgICAgICB8ICAxICsKIHNyYy9p bmNsdWRlL3N0b3JhZ2Uvc3Vic3lzdGVtbGlzdC5oICAgICB8IDIzICsrKysrKysrKysrKysr KysrKysKIHNyYy9pbmNsdWRlL3N0b3JhZ2Uvc3Vic3lzdGVtcy5oICAgICAgICB8IDMwICsr KysrKysrKysrKysrKysrKysrKysrKysKIHNyYy90b29scy9wZ2luY2x1ZGUvaGVhZGVyc2No ZWNrICAgICAgICB8ICAxICsKIDEwIGZpbGVzIGNoYW5nZWQsIDkyIGluc2VydGlvbnMoKyks IDIgZGVsZXRpb25zKC0pCiBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2luY2x1ZGUvc3RvcmFn ZS9zdWJzeXN0ZW1saXN0LmgKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvaW5jbHVkZS9zdG9y YWdlL3N1YnN5c3RlbXMuaAoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Jvb3RzdHJhcC9i b290c3RyYXAuYyBiL3NyYy9iYWNrZW5kL2Jvb3RzdHJhcC9ib290c3RyYXAuYwppbmRleCAz NzY2ZDgyMzFhYy4uNjMzNzhhYjNkOGMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2Jvb3Rz dHJhcC9ib290c3RyYXAuYworKysgYi9zcmMvYmFja2VuZC9ib290c3RyYXAvYm9vdHN0cmFw LmMKQEAgLTM2Myw2ICszNjMsOCBAQCBCb290c3RyYXBNb2RlTWFpbihpbnQgYXJnYywgY2hh ciAqYXJndltdLCBib29sIGNoZWNrX29ubHkpCiAJU2V0UHJvY2Vzc2luZ01vZGUoQm9vdHN0 cmFwUHJvY2Vzc2luZyk7CiAJSWdub3JlU3lzdGVtSW5kZXhlcyA9IHRydWU7CiAKKwlSZWdp c3RlckJ1aWx0aW5TaG1lbUNhbGxiYWNrcygpOworCiAJSW5pdGlhbGl6ZU1heEJhY2tlbmRz KCk7CiAKIAkvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9sYXVuY2hf YmFja2VuZC5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9sYXVuY2hfYmFja2VuZC5jCmlu ZGV4IDA5NzMwMTBiN2RjLi5lZDBmNGYyZDIzNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cG9zdG1hc3Rlci9sYXVuY2hfYmFja2VuZC5jCisrKyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0 ZXIvbGF1bmNoX2JhY2tlbmQuYwpAQCAtNjY0LDYgKzY2NCw4IEBAIFN1YlBvc3RtYXN0ZXJN YWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJICovCiAJTG9jYWxQcm9jZXNzQ29udHJv bEZpbGUoZmFsc2UpOwogCisJUmVnaXN0ZXJCdWlsdGluU2htZW1DYWxsYmFja3MoKTsKKwog CS8qCiAJICogUmVsb2FkIGFueSBsaWJyYXJpZXMgdGhhdCB3ZXJlIHByZWxvYWRlZCBieSB0 aGUgcG9zdG1hc3Rlci4gIFNpbmNlIHdlCiAJICogZXhlYydkIHRoaXMgcHJvY2VzcywgdGhv c2UgbGlicmFyaWVzIGRpZG4ndCBjb21lIGFsb25nIHdpdGggdXM7IGJ1dCB3ZQpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wb3N0bWFzdGVyLmMgYi9zcmMvYmFja2Vu ZC9wb3N0bWFzdGVyL3Bvc3RtYXN0ZXIuYwppbmRleCA3YThlZTE5YmRhZi4uYTJkZTk2YTlh OGUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcG9zdG1hc3Rlci5jCisr KyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcG9zdG1hc3Rlci5jCkBAIC05MjIsNiArOTIy LDExIEBAIFBvc3RtYXN0ZXJNYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJICovCiAJ QXBwbHlMYXVuY2hlclJlZ2lzdGVyKCk7CiAKKwkvKgorCSAqIFJlZ2lzdGVyIHRoZSBzaGFy ZWQgbWVtb3J5IG5lZWRzIG9mIGFsbCBjb3JlIHN1YnN5c3RlbXMuCisJICovCisJUmVnaXN0 ZXJCdWlsdGluU2htZW1DYWxsYmFja3MoKTsKKwogCS8qCiAJICogcHJvY2VzcyBhbnkgbGli cmFyaWVzIHRoYXQgc2hvdWxkIGJlIHByZWxvYWRlZCBhdCBwb3N0bWFzdGVyIHN0YXJ0CiAJ ICovCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9pcGNpLmMgYi9zcmMv YmFja2VuZC9zdG9yYWdlL2lwYy9pcGNpLmMKaW5kZXggMjQ0MjJhODBhYjMuLmU0YTZhNTJm MTJkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9pcGNpLmMKKysrIGIv c3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvaXBjaS5jCkBAIC01Miw2ICs1Miw3IEBACiAjaW5j bHVkZSAic3RvcmFnZS9wcm9jc2lnbmFsLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zaG1lbV9p bnRlcm5hbC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc2ludmFsYWR0LmgiCisjaW5jbHVkZSAi c3RvcmFnZS9zdWJzeXN0ZW1zLmgiCiAjaW5jbHVkZSAidXRpbHMvZ3VjLmgiCiAjaW5jbHVk ZSAidXRpbHMvaW5qZWN0aW9uX3BvaW50LmgiCiAjaW5jbHVkZSAidXRpbHMvd2FpdF9ldmVu dC5oIgpAQCAtMjUyLDYgKzI1MywyNiBAQCBDcmVhdGVTaGFyZWRNZW1vcnlBbmRTZW1hcGhv cmVzKHZvaWQpCiAJCXNobWVtX3N0YXJ0dXBfaG9vaygpOwogfQogCisvKgorICogRWFybHkg aW5pdGlhbGl6YXRpb24gb2YgdmFyaW91cyBzdWJzeXN0ZW1zLCBnaXZpbmcgdGhlbSBhIGNo YW5jZSB0bworICogcmVnaXN0ZXIgdGhlaXIgc2hhcmVkIG1lbW9yeSBuZWVkcyBiZWZvcmUg dGhlIHNoYXJlZCBtZW1vcnkgc2VnbWVudCBpcworICogYWxsb2NhdGVkLgorICovCit2b2lk CitSZWdpc3RlckJ1aWx0aW5TaG1lbUNhbGxiYWNrcyh2b2lkKQoreworCS8qCisJICogQ2Fs bCBSZWdpc3RlclNobWVtQ2FsbGJhY2tzKC4uLikgb24gZWFjaCBzdWJzeXN0ZW0gbGlzdGVk IGluCisJICogc3Vic3lzdGVtc2xpc3QuaAorCSAqLworI2RlZmluZSBQR19TSE1FTV9TVUJT WVNURU0oc3Vic3lzdGVtX2NhbGxiYWNrcykgXAorCVJlZ2lzdGVyU2htZW1DYWxsYmFja3Mo JihzdWJzeXN0ZW1fY2FsbGJhY2tzKSk7CisKKyNpbmNsdWRlICJzdG9yYWdlL3N1YnN5c3Rl bWxpc3QuaCIKKworI3VuZGVmIFBHX1NITUVNX1NVQlNZU1RFTQorfQorCiAvKgogICogSW5p dGlhbGl6ZSB2YXJpb3VzIHN1YnN5c3RlbXMsIHNldHRpbmcgdXAgdGhlaXIgZGF0YSBzdHJ1 Y3R1cmVzIGluCiAgKiBzaGFyZWQgbWVtb3J5LgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv c3RvcmFnZS9pcGMvc2htZW0uYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVtLmMK aW5kZXggNWM3Y2FmNTkzNjAuLjYwMWM2MThkODZjIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9zdG9yYWdlL2lwYy9zaG1lbS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3No bWVtLmMKQEAgLTc4LDggKzc4LDEwIEBACiAgKgkJfSk7CiAgKgl9CiAgKgotICogUmVnaXN0 ZXIgdGhlIGNhbGxiYWNrcyBieSBjYWxsaW5nIFJlZ2lzdGVyU2htZW1DYWxsYmFja3MoJk15 U2htZW1DYWxsYmFja3MpCi0gKiBpbiB0aGUgZXh0ZW5zaW9uJ3MgX1BHX2luaXQoKSBmdW5j dGlvbi4KKyAqIEluIGJ1aWx0aW4gUG9zdGdyZVNRTCBjb2RlLCBhZGQgdGhlIGNhbGxiYWNr cyB0byB0aGUgbGlzdCBpbgorICogc3JjL2luY2x1ZGUvc3RvcmFnZS9zdWJzeXN0ZW1saXN0 LmguICBJbiBhbiBhZGQtaW4gbW9kdWxlLCB5b3UgY2FuIHJlZ2lzdGVyCisgKiB0aGUgY2Fs bGJhY2tzIGJ5IGNhbGxpbmcgUmVnaXN0ZXJTaG1lbUNhbGxiYWNrcygmTXlTaG1lbUNhbGxi YWNrcykgaW4gdGhlCisgKiBleHRlbnNpb24ncyBfUEdfaW5pdCgpIGZ1bmN0aW9uLgogICoK ICAqIExpZmVjeWNsZQogICogLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC90 Y29wL3Bvc3RncmVzLmMgYi9zcmMvYmFja2VuZC90Y29wL3Bvc3RncmVzLmMKaW5kZXggOTM4 NTEyNjllNDMuLjZhOWZmM2FkMjI1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC90Y29wL3Bv c3RncmVzLmMKKysrIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCkBAIC00MTM4LDYg KzQxMzgsOSBAQCBQb3N0Z3Jlc1NpbmdsZVVzZXJNYWluKGludCBhcmdjLCBjaGFyICphcmd2 W10sCiAJLyogcmVhZCBjb250cm9sIGZpbGUgKGVycm9yIGNoZWNraW5nIGFuZCBjb250YWlu cyBjb25maWcgKSAqLwogCUxvY2FsUHJvY2Vzc0NvbnRyb2xGaWxlKGZhbHNlKTsKIAorCS8q IFJlZ2lzdGVyIHRoZSBzaGFyZWQgbWVtb3J5IG5lZWRzIG9mIGFsbCBjb3JlIHN1YnN5c3Rl bXMuICovCisJUmVnaXN0ZXJCdWlsdGluU2htZW1DYWxsYmFja3MoKTsKKwogCS8qCiAJICog cHJvY2VzcyBhbnkgbGlicmFyaWVzIHRoYXQgc2hvdWxkIGJlIHByZWxvYWRlZCBhdCBwb3N0 bWFzdGVyIHN0YXJ0CiAJICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL2lw Yy5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9pcGMuaAppbmRleCBkYTMyNzg3YWI1MS4uYjIw NWIwMGU3YTEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvaXBjLmgKKysrIGIv c3JjL2luY2x1ZGUvc3RvcmFnZS9pcGMuaApAQCAtNzcsNiArNzcsNyBAQCBleHRlcm4gdm9p ZCBjaGVja19vbl9zaG1lbV9leGl0X2xpc3RzX2FyZV9lbXB0eSh2b2lkKTsKIC8qIGlwY2ku YyAqLwogZXh0ZXJuIFBHRExMSU1QT1JUIHNobWVtX3N0YXJ0dXBfaG9va190eXBlIHNobWVt X3N0YXJ0dXBfaG9vazsKIAorZXh0ZXJuIHZvaWQgUmVnaXN0ZXJCdWlsdGluU2htZW1DYWxs YmFja3Modm9pZCk7CiBleHRlcm4gU2l6ZSBDYWxjdWxhdGVTaG1lbVNpemUodm9pZCk7CiBl eHRlcm4gdm9pZCBDcmVhdGVTaGFyZWRNZW1vcnlBbmRTZW1hcGhvcmVzKHZvaWQpOwogI2lm ZGVmIEVYRUNfQkFDS0VORApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9zdWJz eXN0ZW1saXN0LmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3N1YnN5c3RlbWxpc3QuaApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uZWQ0M2M5MGJjYzMKLS0tIC9k ZXYvbnVsbAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3N1YnN5c3RlbWxpc3QuaApAQCAt MCwwICsxLDIzIEBACisvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogc3Vic3lzdGVtbGlz dC5oCisgKgorICogTGlzdCBvZiBpbml0aWFsaXphdGlvbiBjYWxsYmFja3Mgb2YgYnVpbHQt aW4gc3Vic3lzdGVtcy4gVGhpcyBpcyBrZXB0IGluCisgKiBpdHMgb3duIHNvdXJjZSBmaWxl IGZvciBwb3NzaWJsZSB1c2UgYnkgYXV0b21hdGljIHRvb2xzLgorICogUEdfU0hNRU1fU1VC U1lTVEVNIGlzIGRlZmluZWQgaW4gdGhlIGNhbGxlcnMgZGVwZW5kaW5nIG9uIGhvdyB0aGUg bGlzdCBpcworICogdXNlZC4KKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5OTYt MjAyNiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRpb25z IENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBDYWxp Zm9ybmlhCisgKgorICogc3JjL2luY2x1ZGUvc3RvcmFnZS9zdWJzeXN0ZW1saXN0LmgKKyAq LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworLyogdGhlcmUgaXMgZGVsaWJlcmF0ZWx5 IG5vdCBhbiAjaWZuZGVmIFNVQlNZU1RFTUxJU1RfSCBoZXJlICovCisKKy8qCisgKiBOb3Rl OiB0aGVyZSBhcmUgc29tZSBpbnRlci1kZXBlbmRlbmNpZXMgYmV0d2VlbiB0aGVzZSwgc28g dGhlIG9yZGVyIG9mIHNvbWUKKyAqIG9mIHRoZXNlIG1hdHRlci4KKyAqLworCisvKiBUT0RP OiBlbXB0eSBmb3Igbm93ICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3N1 YnN5c3RlbXMuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc3Vic3lzdGVtcy5oCm5ldyBmaWxl IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4zOGI3MzViZWM2NwotLS0gL2Rldi9u dWxsCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc3Vic3lzdGVtcy5oCkBAIC0wLDAgKzEs MzAgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIHN1YnN5c3RlbXMuaAorICoJ ICBQcm92aWRlIGV4dGVybiBkZWNsYXJhdGlvbnMgZm9yIGFsbCB0aGUgYnVpbHQtaW4gc3Vi c3lzdGVtIGNhbGxiYWNrcworICoKKyAqCisgKiBQb3J0aW9ucyBDb3B5cmlnaHQgKGMpIDE5 OTYtMjAyNiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqIFBvcnRp b25zIENvcHlyaWdodCAoYykgMTk5NCwgUmVnZW50cyBvZiB0aGUgVW5pdmVyc2l0eSBvZiBD YWxpZm9ybmlhCisgKgorICogc3JjL2luY2x1ZGUvc3RvcmFnZS9zdWJzeXN0ZW1zLmgKKyAq CisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworI2lmbmRlZiBTVUJTWVNURU1TX0gKKyNk ZWZpbmUgU1VCU1lTVEVNU19ICisKKyNpbmNsdWRlICJzdG9yYWdlL3NobWVtLmgiCisKKy8q CisgKiBFeHRlcm4gZGVjbGFyYXRpb25zIG9mIGFsbCB0aGUgYnVpbHQtaW4gc3Vic3lzdGVt IGNhbGxiYWNrcworICoKKyAqIFRoZSBhY3R1YWwgbGlzdCBpcyBpbiBzdWJzeXN0ZW1saXN0 LmgsIHNvIHRoYXQgdGhlIHNhbWUgbGlzdCBjYW4gYmUgdXNlZAorICogZm9yIG90aGVyIHB1 cnBvc2VzLgorICovCisjZGVmaW5lIFBHX1NITUVNX1NVQlNZU1RFTShjYWxsYmFja3MpIFwK KwlleHRlcm4gY29uc3QgU2htZW1DYWxsYmFja3MgY2FsbGJhY2tzOworI2luY2x1ZGUgInN0 b3JhZ2Uvc3Vic3lzdGVtbGlzdC5oIgorI3VuZGVmIFBHX1NITUVNX1NVQlNZU1RFTQorCisj ZW5kaWYJCQkJCQkJLyogU1VCU1lTVEVNU19IICovCmRpZmYgLS1naXQgYS9zcmMvdG9vbHMv cGdpbmNsdWRlL2hlYWRlcnNjaGVjayBiL3NyYy90b29scy9wZ2luY2x1ZGUvaGVhZGVyc2No ZWNrCmluZGV4IDE0YzQ2NmNjMjM3Li4yNGY3NDE2MTg1ZSAxMDA3NTUKLS0tIGEvc3JjL3Rv b2xzL3BnaW5jbHVkZS9oZWFkZXJzY2hlY2sKKysrIGIvc3JjL3Rvb2xzL3BnaW5jbHVkZS9o ZWFkZXJzY2hlY2sKQEAgLTEzMSw2ICsxMzEsNyBAQCBkbwogCXRlc3QgIiRmIiA9IHNyYy9p bmNsdWRlL3Bvc3RtYXN0ZXIvcHJvY3R5cGVsaXN0LmggJiYgY29udGludWUKIAl0ZXN0ICIk ZiIgPSBzcmMvaW5jbHVkZS9yZWdleC9yZWdlcnJzLmggJiYgY29udGludWUKIAl0ZXN0ICIk ZiIgPSBzcmMvaW5jbHVkZS9zdG9yYWdlL2x3bG9ja2xpc3QuaCAmJiBjb250aW51ZQorCXRl c3QgIiRmIiA9IHNyYy9pbmNsdWRlL3N0b3JhZ2Uvc3Vic3lzdGVtbGlzdC5oICYmIGNvbnRp bnVlCiAJdGVzdCAiJGYiID0gc3JjL2luY2x1ZGUvdGNvcC9jbWR0YWdsaXN0LmggJiYgY29u dGludWUKIAl0ZXN0ICIkZiIgPSBzcmMvaW50ZXJmYWNlcy9lY3BnL3ByZXByb2MvY19rd2xp c3QuaCAmJiBjb250aW51ZQogCXRlc3QgIiRmIiA9IHNyYy9pbnRlcmZhY2VzL2VjcGcvcHJl cHJvYy9lY3BnX2t3bGlzdC5oICYmIGNvbnRpbnVlCi0tIAoyLjQ3LjMKCg== --------------DjaUCGyXkgmfSYE7E2Or3PMa Content-Type: text/x-patch; charset=UTF-8; name="v12-0006-Convert-lwlock.c-to-use-the-new-shmem-allocation.patch" Content-Disposition: attachment; filename*0="v12-0006-Convert-lwlock.c-to-use-the-new-shmem-allocation.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAyMzlmNDQ1YjA1ZTFhMDE0ZTUzM2Y1MWRhNTcxZDZiMmNiZGMzMjc5IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFN1biwgNSBBcHIgMjAyNiAxOTo1Mjo0OCArMDMwMApT dWJqZWN0OiBbUEFUQ0ggdjEyIDA2LzEzXSBDb252ZXJ0IGx3bG9jay5jIHRvIHVzZSB0aGUg bmV3IHNobWVtIGFsbG9jYXRpb24KIGZ1bmN0aW9ucwoKSXQgc2VlbXMgbGlrZSBhIGdvb2Qg Y2FuZGlkYXRlIHRvIGNvbnZlcnQgZmlyc3QgYmVjYXVzZSBpdCBuZWVkcyB0bwppbml0aWFs aXplZCBiZWZvcmUgYW55IG90aGVyIHN1YnN5c3RlbSwgYnV0IG90aGVyIHRoYW4gdGhhdCBp dCdzCm5vdGhpbmcgc3BlY2lhbC4KClJldmlld2VkLWJ5OiBBc2h1dG9zaCBCYXBhdCA8YXNo dXRvc2guYmFwYXQub3NzQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IE1hdHRoaWFzIHZhbiBk ZSBNZWVudCA8Ym9la2V3dXJtK3Bvc3RncmVzQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IERh bmllbCBHdXN0YWZzc29uIDxkYW5pZWxAeWVzcWwuc2U+CkRpc2N1c3Npb246IGh0dHBzOi8v d3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQvQ0FFeEhXNXZNMWJuZUxZZmcwd0dlQWE9 NTJVaUozejR2S2QzQUo3Mlg4Rnc2azNLS3JnQG1haWwuZ21haWwuY29tCi0tLQogc3JjL2Jh Y2tlbmQvcG9zdG1hc3Rlci9wb3N0bWFzdGVyLmMgfCAgMTYgKysrLS0KIHNyYy9iYWNrZW5k L3N0b3JhZ2UvaXBjL2lwY2kuYyAgICAgIHwgIDEzIC0tLS0KIHNyYy9iYWNrZW5kL3N0b3Jh Z2UvbG1nci9sd2xvY2suYyAgIHwgMTAwICsrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0K IHNyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYyAgICAgICAgIHwgIDE2ICsrKy0tCiBzcmMv aW5jbHVkZS9zdG9yYWdlL2x3bG9jay5oICAgICAgICB8ICAgMiAtCiBzcmMvaW5jbHVkZS9z dG9yYWdlL3N1YnN5c3RlbWxpc3QuaCB8ICAgOSArKy0KIDYgZmlsZXMgY2hhbmdlZCwgNzUg aW5zZXJ0aW9ucygrKSwgODEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvcG9zdG1hc3Rlci9wb3N0bWFzdGVyLmMgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bv c3RtYXN0ZXIuYwppbmRleCBhMmRlOTZhOWE4ZS4uNmYxM2U4ZjQwYTAgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcG9zdG1hc3Rlci5jCisrKyBiL3NyYy9iYWNrZW5k L3Bvc3RtYXN0ZXIvcG9zdG1hc3Rlci5jCkBAIC05NTYsMTggKzk1NiwyMiBAQCBQb3N0bWFz dGVyTWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCSAqLwogCUluaXRpYWxpemVGYXN0 UGF0aExvY2tzKCk7CiAKLQkvKgotCSAqIEFzayBhbGwgc3Vic3lzdGVtcywgaW5jbHVkaW5n IHByZWxvYWRlZCBsaWJyYXJpZXMsIHRvIHJlZ2lzdGVyIHRoZWlyCi0JICogc2hhcmVkIG1l bW9yeSBuZWVkcy4KLQkgKi8KLQlTaG1lbUNhbGxSZXF1ZXN0Q2FsbGJhY2tzKCk7Ci0KIAkv KgogCSAqIEFsc28gY2FsbCBhbnkgbGVnYWN5IHNobWVtIHJlcXVlc3QgaG9va3MgdGhhdCBt aWdodCd2ZSBiZWVuIGluc3RhbGxlZAogCSAqIGJ5IHByZWxvYWRlZCBsaWJyYXJpZXMuCisJ ICoKKwkgKiBOb3RlOiB0aGlzIG11c3QgYmUgZG9uZSBiZWZvcmUgU2htZW1DYWxsUmVxdWVz dENhbGxiYWNrcygpLCBiZWNhdXNlIHRoZQorCSAqIGhvb2tzIG1heSByZXF1ZXN0IExXTG9j a3Mgd2l0aCBSZXF1ZXN0TmFtZWRMV0xvY2tUcmFuY2hlKCksIHdoaWNoIGluCisJICogdHVy biBhZmZlY3RzIHRoZSBzaXplIG9mIHRoZSBMV0xvY2sgYXJyYXkgY2FsY3VsYXRlZCBpbiBs d2xvY2suYy4KIAkgKi8KIAlwcm9jZXNzX3NobWVtX3JlcXVlc3RzKCk7CiAKKwkvKgorCSAq IEFzayBhbGwgc3Vic3lzdGVtcywgaW5jbHVkaW5nIHByZWxvYWRlZCBsaWJyYXJpZXMsIHRv IHJlZ2lzdGVyIHRoZWlyCisJICogc2hhcmVkIG1lbW9yeSBuZWVkcy4KKwkgKi8KKwlTaG1l bUNhbGxSZXF1ZXN0Q2FsbGJhY2tzKCk7CisKIAkvKgogCSAqIE5vdyB0aGF0IGxvYWRhYmxl IG1vZHVsZXMgaGF2ZSBoYWQgdGhlaXIgY2hhbmNlIHRvIHJlcXVlc3QgYWRkaXRpb25hbAog CSAqIHNoYXJlZCBtZW1vcnksIGRldGVybWluZSB0aGUgdmFsdWUgb2YgYW55IHJ1bnRpbWUt Y29tcHV0ZWQgR1VDcyB0aGF0CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lw Yy9pcGNpLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9pcGNpLmMKaW5kZXggZTRhNmE1 MmYxMmQuLmRlNjVhOWVmMzNjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lw Yy9pcGNpLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvaXBjaS5jCkBAIC0xMjEs NyArMTIxLDYgQEAgQ2FsY3VsYXRlU2htZW1TaXplKHZvaWQpCiAJc2l6ZSA9IGFkZF9zaXpl KHNpemUsIFR3b1BoYXNlU2htZW1TaXplKCkpOwogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBC YWNrZ3JvdW5kV29ya2VyU2htZW1TaXplKCkpOwogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBN dWx0aVhhY3RTaG1lbVNpemUoKSk7Ci0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIExXTG9ja1No bWVtU2l6ZSgpKTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgUHJvY0FycmF5U2htZW1TaXpl KCkpOwogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBCYWNrZW5kU3RhdHVzU2htZW1TaXplKCkp OwogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBTaGFyZWRJbnZhbFNobWVtU2l6ZSgpKTsKQEAg LTE3OSwxMSArMTc4LDYgQEAgQXR0YWNoU2hhcmVkTWVtb3J5U3RydWN0cyh2b2lkKQogCSAq LwogCUluaXRpYWxpemVGYXN0UGF0aExvY2tzKCk7CiAKLQkvKgotCSAqIEF0dGFjaCB0byBM V0xvY2tzIGZpcnN0LiBUaGV5IGFyZSBuZWVkZWQgYnkgbW9zdCBvdGhlciBzdWJzeXN0ZW1z LgotCSAqLwotCUxXTG9ja1NobWVtSW5pdCgpOwotCiAJLyogRXN0YWJsaXNoIHBvaW50ZXJz IHRvIGFsbCBzaGFyZWQgbWVtb3J5IGFyZWFzIGluIHRoaXMgYmFja2VuZCAqLwogCVNobWVt QXR0YWNoUmVxdWVzdGVkKCk7CiAJQ3JlYXRlT3JBdHRhY2hTaG1lbVN0cnVjdHMoKTsKQEAg LTIzMCwxMyArMjI0LDYgQEAgQ3JlYXRlU2hhcmVkTWVtb3J5QW5kU2VtYXBob3Jlcyh2b2lk KQogCSAqLwogCUluaXRTaG1lbUFsbG9jYXRvcihzZWdoZHIpOwogCi0JLyoKLQkgKiBJbml0 aWFsaXplIExXTG9ja3MgZmlyc3QsIGluIGNhc2UgYW55IG9mIHRoZSBzaG1lbSBpbml0IGZ1 bmN0aW9uIHVzZQotCSAqIExXTG9ja3MuICAoTm90aGluZyBlbHNlIGNhbiBiZSBydW5uaW5n IGR1cmluZyBzdGFydHVwLCBzbyB0aGV5IGRvbid0Ci0JICogbmVlZCB0byBkbyBhbnkgbG9j a2luZyB5ZXQsIGJ1dCB3ZSBuZXZlcnRoZWxlc3MgYWxsb3cgaXQuKQotCSAqLwotCUxXTG9j a1NobWVtSW5pdCgpOwotCiAJLyogSW5pdGlhbGl6ZSBhbGwgc2htZW0gYXJlYXMgKi8KIAlT aG1lbUluaXRSZXF1ZXN0ZWQoKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFn ZS9sbWdyL2x3bG9jay5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL2x3bG9jay5jCmlu ZGV4IDk4MTM4Y2IwOWQxLi5iMWFkMzk2YmE3OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv c3RvcmFnZS9sbWdyL2x3bG9jay5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9s d2xvY2suYwpAQCAtODQsNiArODQsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY2xpc3Qu aCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2NudW1iZXIuaCIKICNpbmNsdWRlICJzdG9yYWdl L3NwaW4uaCIKKyNpbmNsdWRlICJzdG9yYWdlL3N1YnN5c3RlbXMuaCIKICNpbmNsdWRlICJ1 dGlscy9tZW11dGlscy5oIgogI2luY2x1ZGUgInV0aWxzL3dhaXRfZXZlbnQuaCIKIApAQCAt MTg5LDkgKzE5MCw2IEBAIHR5cGVkZWYgc3RydWN0IExXTG9ja1RyYW5jaGVTaG1lbURhdGEK IAlpbnQJCQludW1fdXNlcl9kZWZpbmVkOwkvKiAndXNlcl9kZWZpbmVkJyBlbnRyaWVzIGlu IHVzZSAqLwogCiAJc2xvY2tfdAkJbG9jazsJCQkvKiBwcm90ZWN0cyB0aGUgYWJvdmUgKi8K LQotCS8qIFNpemUgb2YgTWFpbkxXTG9ja0FycmF5ICovCi0JaW50CQkJbnVtX21haW5fYXJy YXlfbG9ja3M7CiB9IExXTG9ja1RyYW5jaGVTaG1lbURhdGE7CiAKIHN0YXRpYyBMV0xvY2tU cmFuY2hlU2htZW1EYXRhICpMV0xvY2tUcmFuY2hlczsKQEAgLTIxMiw3ICsyMTAsMTggQEAg dHlwZWRlZiBzdHJ1Y3QgTmFtZWRMV0xvY2tUcmFuY2hlUmVxdWVzdAogCiBzdGF0aWMgTGlz dCAqTmFtZWRMV0xvY2tUcmFuY2hlUmVxdWVzdHMgPSBOSUw7CiAKLXN0YXRpYyB2b2lkIElu aXRpYWxpemVMV0xvY2tzKGludCBudW1Mb2Nrcyk7CisvKiBTaXplIG9mIE1haW5MV0xvY2tB cnJheS4gIE9ubHkgdmFsaWQgaW4gcG9zdG1hc3Rlci4gKi8KK3N0YXRpYyBpbnQJbnVtX21h aW5fYXJyYXlfbG9ja3M7CisKK3N0YXRpYyB2b2lkIExXTG9ja1NobWVtUmVxdWVzdCh2b2lk ICphcmcpOworc3RhdGljIHZvaWQgTFdMb2NrU2htZW1Jbml0KHZvaWQgKmFyZyk7CisKK2Nv bnN0IFNobWVtQ2FsbGJhY2tzIExXTG9ja0NhbGxiYWNrcyA9IHsKKwkucmVxdWVzdF9mbiA9 IExXTG9ja1NobWVtUmVxdWVzdCwKKwkuaW5pdF9mbiA9IExXTG9ja1NobWVtSW5pdCwKK307 CisKKwogc3RhdGljIGlubGluZSB2b2lkIExXTG9ja1JlcG9ydFdhaXRTdGFydChMV0xvY2sg KmxvY2spOwogc3RhdGljIGlubGluZSB2b2lkIExXTG9ja1JlcG9ydFdhaXRFbmQodm9pZCk7 CiBzdGF0aWMgY29uc3QgY2hhciAqR2V0TFdUcmFuY2hlTmFtZSh1aW50MTYgdHJhbmNoZUlk KTsKQEAgLTQwMSw2OCArNDEwLDUzIEBAIE51bUxXTG9ja3NGb3JOYW1lZFRyYW5jaGVzKHZv aWQpCiB9CiAKIC8qCi0gKiBDb21wdXRlIHNobWVtIHNwYWNlIG5lZWRlZCBmb3IgdXNlci1k ZWZpbmVkIHRyYW5jaGVzIGFuZCB0aGUgbWFpbiBMV0xvY2sKLSAqIGFycmF5LgorICogUmVx dWVzdCBzaG1lbSBzcGFjZSBmb3IgdXNlci1kZWZpbmVkIHRyYW5jaGVzIGFuZCB0aGUgbWFp biBMV0xvY2sgYXJyYXkuCiAgKi8KLVNpemUKLUxXTG9ja1NobWVtU2l6ZSh2b2lkKQorc3Rh dGljIHZvaWQKK0xXTG9ja1NobWVtUmVxdWVzdCh2b2lkICphcmcpCiB7Ci0JU2l6ZQkJc2l6 ZTsKLQlpbnQJCQludW1Mb2NrczsKKwlzaXplX3QJCXNpemU7CiAKIAkvKiBTcGFjZSBmb3Ig dXNlci1kZWZpbmVkIHRyYW5jaGVzICovCi0Jc2l6ZSA9IHNpemVvZihMV0xvY2tUcmFuY2hl U2htZW1EYXRhKTsKKwlTaG1lbVJlcXVlc3RTdHJ1Y3QoLm5hbWUgPSAiTFdMb2NrIHRyYW5j aGVzIiwKKwkJCQkJICAgLnNpemUgPSBzaXplb2YoTFdMb2NrVHJhbmNoZVNobWVtRGF0YSks CisJCQkJCSAgIC5wdHIgPSAodm9pZCAqKikgJkxXTG9ja1RyYW5jaGVzLAorCQkpOwogCiAJ LyogU3BhY2UgZm9yIHRoZSBMV0xvY2sgYXJyYXkgKi8KLQludW1Mb2NrcyA9IE5VTV9GSVhF RF9MV0xPQ0tTICsgTnVtTFdMb2Nrc0Zvck5hbWVkVHJhbmNoZXMoKTsKLQlzaXplID0gYWRk X3NpemUoc2l6ZSwgbXVsX3NpemUobnVtTG9ja3MsIHNpemVvZihMV0xvY2tQYWRkZWQpKSk7 Ci0KLQlyZXR1cm4gc2l6ZTsKLX0KLQotLyoKLSAqIEFsbG9jYXRlIHNobWVtIHNwYWNlIGZv ciB1c2VyLWRlZmluZWQgdHJhbmNoZXMgYW5kIHRoZSBtYWluIExXTG9jayBhcnJheSwKLSAq IGFuZCBpbml0aWFsaXplIGl0LgotICovCi12b2lkCi1MV0xvY2tTaG1lbUluaXQodm9pZCkK LXsKLQlpbnQJCQludW1Mb2NrczsKLQlib29sCQlmb3VuZDsKLQotCUxXTG9ja1RyYW5jaGVz ID0gKExXTG9ja1RyYW5jaGVTaG1lbURhdGEgKikKLQkJU2htZW1Jbml0U3RydWN0KCJMV0xv Y2sgdHJhbmNoZXMiLCBzaXplb2YoTFdMb2NrVHJhbmNoZVNobWVtRGF0YSksICZmb3VuZCk7 Ci0JaWYgKCFmb3VuZCkKKwlpZiAoIUlzVW5kZXJQb3N0bWFzdGVyKQogCXsKLQkJLyogQ2Fs Y3VsYXRlIHRvdGFsIG51bWJlciBvZiBsb2NrcyBuZWVkZWQgaW4gdGhlIG1haW4gYXJyYXkg Ki8KLQkJTFdMb2NrVHJhbmNoZXMtPm51bV9tYWluX2FycmF5X2xvY2tzID0KLQkJCU5VTV9G SVhFRF9MV0xPQ0tTICsgTnVtTFdMb2Nrc0Zvck5hbWVkVHJhbmNoZXMoKTsKLQotCQkvKiBJ bml0aWFsaXplIHRoZSBkeW5hbWljLWFsbG9jYXRpb24gY291bnRlciBmb3IgdHJhbmNoZXMg Ki8KLQkJTFdMb2NrVHJhbmNoZXMtPm51bV91c2VyX2RlZmluZWQgPSAwOwotCi0JCVNwaW5M b2NrSW5pdCgmTFdMb2NrVHJhbmNoZXMtPmxvY2spOworCQludW1fbWFpbl9hcnJheV9sb2Nr cyA9IE5VTV9GSVhFRF9MV0xPQ0tTICsgTnVtTFdMb2Nrc0Zvck5hbWVkVHJhbmNoZXMoKTsK KwkJc2l6ZSA9IG51bV9tYWluX2FycmF5X2xvY2tzICogc2l6ZW9mKExXTG9ja1BhZGRlZCk7 CiAJfQorCWVsc2UKKwkJc2l6ZSA9IFNITUVNX0FUVEFDSF9VTktOT1dOX1NJWkU7CiAKLQkv KiBBbGxvY2F0ZSBhbmQgaW5pdGlhbGl6ZSB0aGUgbWFpbiBhcnJheSAqLwotCW51bUxvY2tz ID0gTFdMb2NrVHJhbmNoZXMtPm51bV9tYWluX2FycmF5X2xvY2tzOwotCU1haW5MV0xvY2tB cnJheSA9IChMV0xvY2tQYWRkZWQgKikKLQkJU2htZW1Jbml0U3RydWN0KCJNYWluIExXTG9j ayBhcnJheSIsIG51bUxvY2tzICogc2l6ZW9mKExXTG9ja1BhZGRlZCksICZmb3VuZCk7Ci0J aWYgKCFmb3VuZCkKLQl7Ci0JCS8qIEluaXRpYWxpemUgYWxsIExXTG9ja3MgKi8KLQkJSW5p dGlhbGl6ZUxXTG9ja3MobnVtTG9ja3MpOwotCX0KKwlTaG1lbVJlcXVlc3RTdHJ1Y3QoLm5h bWUgPSAiTWFpbiBMV0xvY2sgYXJyYXkiLAorCQkJCQkgICAuc2l6ZSA9IHNpemUsCisJCQkJ CSAgIC5wdHIgPSAodm9pZCAqKikgJk1haW5MV0xvY2tBcnJheSwKKwkJKTsKIH0KIAogLyoK LSAqIEluaXRpYWxpemUgTFdMb2NrcyBmb3IgYnVpbHQtaW4gdHJhbmNoZXMgYW5kIHRob3Nl IHJlcXVlc3RlZCB3aXRoCi0gKiBSZXF1ZXN0TmFtZWRMV0xvY2tUcmFuY2hlKCkuCisgKiBJ bml0aWFsaXplIHNobWVtIHNwYWNlIGZvciB1c2VyLWRlZmluZWQgdHJhbmNoZXMgYW5kIHRo ZSBtYWluIExXTG9jayBhcnJheS4KICAqLwogc3RhdGljIHZvaWQKLUluaXRpYWxpemVMV0xv Y2tzKGludCBudW1Mb2NrcykKK0xXTG9ja1NobWVtSW5pdCh2b2lkICphcmcpCiB7Ci0JaW50 CQkJcG9zID0gMDsKKwlpbnQJCQlwb3M7CisKKwkvKiBJbml0aWFsaXplIHRoZSBkeW5hbWlj LWFsbG9jYXRpb24gY291bnRlciBmb3IgdHJhbmNoZXMgKi8KKwlMV0xvY2tUcmFuY2hlcy0+ bnVtX3VzZXJfZGVmaW5lZCA9IDA7CisKKwlTcGluTG9ja0luaXQoJkxXTG9ja1RyYW5jaGVz LT5sb2NrKTsKKworCS8qCisJICogQWxsb2NhdGUgYW5kIGluaXRpYWxpemUgYWxsIExXTG9j a3MgaW4gdGhlIG1haW4gYXJyYXkuICBJdCBpbmNsdWRlcyBhbGwKKwkgKiBMV0xvY2tzIGZv ciBidWlsdC1pbiB0cmFuY2hlcyBhbmQgdGhvc2UgcmVxdWVzdGVkIHdpdGgKKwkgKiBSZXF1 ZXN0TmFtZWRMV0xvY2tUcmFuY2hlKCkuCisJICovCisJcG9zID0gMDsKIAogCS8qIEluaXRp YWxpemUgYWxsIGluZGl2aWR1YWwgTFdMb2NrcyBpbiBtYWluIGFycmF5ICovCiAJZm9yIChp bnQgaWQgPSAwOyBpZCA8IE5VTV9JTkRJVklEVUFMX0xXTE9DS1M7IGlkKyspCkBAIC01MDEs OCArNDk1LDggQEAgSW5pdGlhbGl6ZUxXTG9ja3MoaW50IG51bUxvY2tzKQogCQkJTFdMb2Nr SW5pdGlhbGl6ZSgmTWFpbkxXTG9ja0FycmF5W3BvcysrXS5sb2NrLCBMV1RSQU5DSEVfRklS U1RfVVNFUl9ERUZJTkVEICsgaWR4KTsKIAl9CiAKLQkvKiBDcm9zcy1jaGVjayB0aGF0IHdl IGFncmVlIG9uIHRoZSB0b3RhbCBzaXplIHdpdGggdGhlIGNhbGxlciAqLwotCUFzc2VydChw b3MgPT0gbnVtTG9ja3MpOworCS8qIENyb3NzLWNoZWNrIHRoYXQgd2UgYWdyZWUgb24gdGhl IHRvdGFsIHNpemUgd2l0aCBMV0xvY2tTaG1lbVJlcXVlc3QoKSAqLworCUFzc2VydChwb3Mg PT0gbnVtX21haW5fYXJyYXlfbG9ja3MpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvdGNvcC9wb3N0Z3Jlcy5jIGIvc3JjL2JhY2tlbmQvdGNvcC9wb3N0Z3Jlcy5jCmlu ZGV4IDZhOWZmM2FkMjI1Li45NTQ5NjY1NDcxNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv dGNvcC9wb3N0Z3Jlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3Rjb3AvcG9zdGdyZXMuYwpAQCAt NDE1OCwxOCArNDE1OCwyMiBAQCBQb3N0Z3Jlc1NpbmdsZVVzZXJNYWluKGludCBhcmdjLCBj aGFyICphcmd2W10sCiAJLyogSW5pdGlhbGl6ZSBzaXplIG9mIGZhc3QtcGF0aCBsb2NrIGNh Y2hlLiAqLwogCUluaXRpYWxpemVGYXN0UGF0aExvY2tzKCk7CiAKLQkvKgotCSAqIEJlZm9y ZSBjb21wdXRpbmcgdGhlIHRvdGFsIHNpemUgbmVlZGVkLCBnaXZlIGFsbCBzdWJzeXN0ZW1z LCBpbmNsdWRpbmcKLQkgKiBhZGQtaW5zLCBhIGNoYW5jZSB0byBjaGFuY2UgdG8gYWRqdXN0 IHRoZWlyIHJlcXVlc3RlZCBzaG1lbSBzaXplcy4KLQkgKi8KLQlTaG1lbUNhbGxSZXF1ZXN0 Q2FsbGJhY2tzKCk7Ci0KIAkvKgogCSAqIEFsc28gY2FsbCBhbnkgbGVnYWN5IHNobWVtIHJl cXVlc3QgaG9va3MgdGhhdCBtaWdodCdiZSBiZWVuIGluc3RhbGxlZAogCSAqIGJ5IHByZWxv YWRlZCBsaWJyYXJpZXMuCisJICoKKwkgKiBOb3RlOiB0aGlzIG11c3QgYmUgZG9uZSBiZWZv cmUgU2htZW1DYWxsUmVxdWVzdENhbGxiYWNrcygpLCBiZWNhdXNlIHRoZQorCSAqIGhvb2tz IG1heSByZXF1ZXN0IExXTG9ja3Mgd2l0aCBSZXF1ZXN0TmFtZWRMV0xvY2tUcmFuY2hlKCks IHdoaWNoIGluCisJICogdHVybiBhZmZlY3RzIHRoZSBzaXplIG9mIHRoZSBMV0xvY2sgYXJy YXkgY2FsY3VsYXRlZCBpbiBsd2xvY2suYy4KIAkgKi8KIAlwcm9jZXNzX3NobWVtX3JlcXVl c3RzKCk7CiAKKwkvKgorCSAqIEJlZm9yZSBjb21wdXRpbmcgdGhlIHRvdGFsIHNpemUgbmVl ZGVkLCBnaXZlIGFsbCBzdWJzeXN0ZW1zLCBpbmNsdWRpbmcKKwkgKiBhZGQtaW5zLCBhIGNo YW5jZSB0byBjaGFuY2UgdG8gYWRqdXN0IHRoZWlyIHJlcXVlc3RlZCBzaG1lbSBzaXplcy4K KwkgKi8KKwlTaG1lbUNhbGxSZXF1ZXN0Q2FsbGJhY2tzKCk7CisKIAkvKgogCSAqIE5vdyB0 aGF0IGxvYWRhYmxlIG1vZHVsZXMgaGF2ZSBoYWQgdGhlaXIgY2hhbmNlIHRvIHJlcXVlc3Qg YWRkaXRpb25hbAogCSAqIHNoYXJlZCBtZW1vcnksIGRldGVybWluZSB0aGUgdmFsdWUgb2Yg YW55IHJ1bnRpbWUtY29tcHV0ZWQgR1VDcyB0aGF0CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9zdG9yYWdlL2x3bG9jay5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9sd2xvY2suaAppbmRl eCA2MWYwZGJlNzQ5YS4uZWZhNWI0MjdlOWYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0 b3JhZ2UvbHdsb2NrLmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9sd2xvY2suaApAQCAt MTI2LDggKzEyNiw2IEBAIGV4dGVybiBib29sIExXTG9ja0hlbGRCeU1lSW5Nb2RlKExXTG9j ayAqbG9jaywgTFdMb2NrTW9kZSBtb2RlKTsKIGV4dGVybiBib29sIExXTG9ja1dhaXRGb3JW YXIoTFdMb2NrICpsb2NrLCBwZ19hdG9taWNfdWludDY0ICp2YWxwdHIsIHVpbnQ2NCBvbGR2 YWwsIHVpbnQ2NCAqbmV3dmFsKTsKIGV4dGVybiB2b2lkIExXTG9ja1VwZGF0ZVZhcihMV0xv Y2sgKmxvY2ssIHBnX2F0b21pY191aW50NjQgKnZhbHB0ciwgdWludDY0IHZhbCk7CiAKLWV4 dGVybiBTaXplIExXTG9ja1NobWVtU2l6ZSh2b2lkKTsKLWV4dGVybiB2b2lkIExXTG9ja1No bWVtSW5pdCh2b2lkKTsKIGV4dGVybiB2b2lkIEluaXRMV0xvY2tBY2Nlc3Modm9pZCk7CiAK IGV4dGVybiBjb25zdCBjaGFyICpHZXRMV0xvY2tJZGVudGlmaWVyKHVpbnQzMiBjbGFzc0lk LCB1aW50MTYgZXZlbnRJZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3N1 YnN5c3RlbWxpc3QuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc3Vic3lzdGVtbGlzdC5oCmlu ZGV4IGVkNDNjOTBiY2MzLi5mMGNmMDFmNWE4NSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv c3RvcmFnZS9zdWJzeXN0ZW1saXN0LmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9zdWJz eXN0ZW1saXN0LmgKQEAgLTIwLDQgKzIwLDExIEBACiAgKiBvZiB0aGVzZSBtYXR0ZXIuCiAg Ki8KIAotLyogVE9ETzogZW1wdHkgZm9yIG5vdyAqLworLyoKKyAqIExXTG9ja3MgZmlyc3Qs IGluIGNhc2UgYW55IG9mIHRoZSBvdGhlciBzaG1lbSBpbml0IGZ1bmN0aW9ucyB1c2UgTFdM b2Nrcy4KKyAqIChOb3RoaW5nIGVsc2UgY2FuIGJlIHJ1bm5pbmcgZHVyaW5nIHN0YXJ0dXAs IHNvIHRoZXkgZG9uJ3QgbmVlZCB0byBkbyBhbnkKKyAqIGxvY2tpbmcgeWV0LCBidXQgd2Ug bmV2ZXJ0aGVsZXNzIGFsbG93IGl0LikKKyAqLworUEdfU0hNRU1fU1VCU1lTVEVNKExXTG9j a0NhbGxiYWNrcykKKworLyogVE9ETzogbm90aGluZyBlbHNlIGZvciBub3cgKi8KLS0gCjIu NDcuMwoK --------------DjaUCGyXkgmfSYE7E2Or3PMa Content-Type: text/x-patch; charset=UTF-8; name="v12-0007-Use-the-new-shmem-allocation-function-in-a-few-c.patch" Content-Disposition: attachment; filename*0="v12-0007-Use-the-new-shmem-allocation-function-in-a-few-c.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA1NTc4ZjJhMzdiM2ZlMzk5YmM2MDQ4OGMxZGY5ZjYyNjQ2MjZhYmU4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFN1biwgNSBBcHIgMjAyNiAxOTo1MzoxMSArMDMwMApT dWJqZWN0OiBbUEFUQ0ggdjEyIDA3LzEzXSBVc2UgdGhlIG5ldyBzaG1lbSBhbGxvY2F0aW9u IGZ1bmN0aW9uIGluIGEgZmV3IGNvcmUKIHN1YnN5c3RlbXMKClRoZXNlIHN1YnN5c3RlbXMg aGF2ZSBzb21lIGNvbXBsaWNhdGluZyBwcm9wZXJ0aWVzLCBtYWtpbmcgdGhlbQpzbGlnaHRs eSBoYXJkZXIgdG8gY29udmVydCB0aGFuIG1vc3Q6CgotIFRoZSBpbml0aWFsaXphdGlvbiBj YWxsYmFja3Mgb2Ygc29tZSBvZiB0aGVzZSBzdWJzeXN0ZW1zIGhhdmUKICBkZXBlbmRlbmNp ZXMsIGkuZS4gdGhleSBuZWVkIHRvIGJlIGluaXRpYWxpemVkIGluIHRoZSByaWdodCBvcmRl ci4KCi0gVGhlIFByb2NHbG9iYWwgcG9pbnRlciBzdGlsbCBuZWVkcyB0byBiZSBpbmhlcml0 ZWQgYnkgdGhlCiAgQmFja2VuZFBhcmFtZXRlcnMgbWVjaGFuaXNtIG9uIEVYRUNfQkFDS0VO RCBidWlsZHMsIGJlY2F1c2UKICBQcm9jR2xvYmFsIGlzIHJlcXVpcmVkIGJ5IEluaXRQcm9j ZXNzKCkgdG8gZ2V0IGEgUEdQUk9DIGVudHJ5LCBhbmQKICB0aGUgUEdQUk9DIGVudHJ5IGlz IHJlcXVpcmVkIHRvIHVzZSBMV0xvY2tzLCBhbmQgdXN1YWxseSBhdHRhY2hpbmcKICB0byBz aGFyZWQgbWVtb3J5IGFyZWFzIHJlcXVpcmVzIHRoZSB1c2Ugb2YgTFdMb2Nrcy4KCi0gU2lt aWxhcmx5LCBQcm9jU2lnbmFsIHBvaW50ZXIgc3RpbGwgbmVlZHMgdG8gYmUgaGFuZGxlZCBi eQogIEJhY2tlbmRQYXJhbWV0ZXJzLCBiZWNhdXNlIHF1ZXJ5IGNhbmNlbGxhdGlvbiBjb25u ZWN0aW9ucyBhY2Nlc3MgaXQKICB3aXRob3V0IGNhbGxpbmcgSW5pdFByb2Nlc3MKClJldmll d2VkLWJ5OiBBc2h1dG9zaCBCYXBhdCA8YXNodXRvc2guYmFwYXQub3NzQGdtYWlsLmNvbT4K UmV2aWV3ZWQtYnk6IE1hdHRoaWFzIHZhbiBkZSBNZWVudCA8Ym9la2V3dXJtK3Bvc3RncmVz QGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IERhbmllbCBHdXN0YWZzc29uIDxkYW5pZWxAeWVz cWwuc2U+CkRpc2N1c3Npb246IGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2Ut aWQvQ0FFeEhXNXZNMWJuZUxZZmcwd0dlQWE9NTJVaUozejR2S2QzQUo3Mlg4Rnc2azNLS3Jn QG1haWwuZ21haWwuY29tCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vdHdvcGhh c2UuYyAgfCAgIDIgKy0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3ZhcnN1cC5jICAg IHwgIDM1ICsrLS0tCiBzcmMvYmFja2VuZC9wb3J0L3Bvc2l4X3NlbWEuYyAgICAgICAgICB8 ICAyMiArKy0KIHNyYy9iYWNrZW5kL3BvcnQvc3lzdl9zZW1hLmMgICAgICAgICAgIHwgIDIx ICsrLQogc3JjL2JhY2tlbmQvcG9ydC93aW4zMl9zZW1hLmMgICAgICAgICAgfCAgMTEgKy0K IHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2RzbS5jICAgICAgICAgIHwgIDY0ICsrKysrLS0t LQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvZHNtX3JlZ2lzdHJ5LmMgfCAgMzYgKystLS0K IHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYyAgICAgICAgIHwgIDI4IC0tLS0KIHNy Yy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2xhdGNoLmMgICAgICAgIHwgICA4ICstCiBzcmMvYmFj a2VuZC9zdG9yYWdlL2lwYy9wbXNpZ25hbC5jICAgICB8ICA1MSArKysrLS0tCiBzcmMvYmFj a2VuZC9zdG9yYWdlL2lwYy9wcm9jYXJyYXkuYyAgICB8IDExMCArKysrKysrLS0tLS0tLQog c3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvcHJvY3NpZ25hbC5jICAgfCAgNjQgKysrKy0tLS0t CiBzcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaW52YWxhZHQuYyAgICB8ICAzOCArKy0tLQog c3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3Byb2MuYyAgICAgICAgfCAxOTEgKysrKysrKysr KysrKy0tLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvdXRpbHMvaGFzaC9keW5haGFzaC5jICAg ICAgfCAgIDMgKy0KIHNyYy9pbmNsdWRlL2FjY2Vzcy90cmFuc2FtLmggICAgICAgICAgIHwg ICAyIC0KIHNyYy9pbmNsdWRlL3N0b3JhZ2UvZHNtLmggICAgICAgICAgICAgIHwgICAzIC0K IHNyYy9pbmNsdWRlL3N0b3JhZ2UvZHNtX3JlZ2lzdHJ5LmggICAgIHwgICAyIC0KIHNyYy9p bmNsdWRlL3N0b3JhZ2UvcGdfc2VtYS5oICAgICAgICAgIHwgICA2ICstCiBzcmMvaW5jbHVk ZS9zdG9yYWdlL3Btc2lnbmFsLmggICAgICAgICB8ICAgMiAtCiBzcmMvaW5jbHVkZS9zdG9y YWdlL3Byb2MuaCAgICAgICAgICAgICB8ICAgMiAtCiBzcmMvaW5jbHVkZS9zdG9yYWdlL3By b2NhcnJheS5oICAgICAgICB8ICAgMiAtCiBzcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWdu YWwuaCAgICAgICB8ICAgMyAtCiBzcmMvaW5jbHVkZS9zdG9yYWdlL3NpbnZhbGFkdC5oICAg ICAgICB8ICAgMiAtCiBzcmMvaW5jbHVkZS9zdG9yYWdlL3N1YnN5c3RlbWxpc3QuaCAgICB8 ICAxNyArKy0KIDI1IGZpbGVzIGNoYW5nZWQsIDM0NCBpbnNlcnRpb25zKCspLCAzODEgZGVs ZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vdHdv cGhhc2UuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3R3b3BoYXNlLmMKaW5kZXgg ZDQ2OGM5Nzc0YjMuLmFiMWNiZDY3YmFjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nl c3MvdHJhbnNhbS90d29waGFzZS5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2Ft L3R3b3BoYXNlLmMKQEAgLTI4Miw3ICsyODIsNyBAQCBUd29QaGFzZVNobWVtSW5pdCh2b2lk KQogCQkJZ3hhY3RzW2ldLm5leHQgPSBUd29QaGFzZVN0YXRlLT5mcmVlR1hhY3RzOwogCQkJ VHdvUGhhc2VTdGF0ZS0+ZnJlZUdYYWN0cyA9ICZneGFjdHNbaV07CiAKLQkJCS8qIGFzc29j aWF0ZSBpdCB3aXRoIGEgUEdQUk9DIGFzc2lnbmVkIGJ5IEluaXRQcm9jR2xvYmFsICovCisJ CQkvKiBhc3NvY2lhdGUgaXQgd2l0aCBhIFBHUFJPQyBhc3NpZ25lZCBieSBQcm9jR2xvYmFs U2htZW1Jbml0ICovCiAJCQlneGFjdHNbaV0ucGdwcm9jbm8gPSBHZXROdW1iZXJGcm9tUEdQ cm9jKCZQcmVwYXJlZFhhY3RQcm9jc1tpXSk7CiAJCX0KIAl9CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9hY2Nlc3MvdHJhbnNhbS92YXJzdXAuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90 cmFuc2FtL3ZhcnN1cC5jCmluZGV4IDE0NDFhMDUxNzczLi5kYzVlMzJkODZmMyAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vdmFyc3VwLmMKKysrIGIvc3JjL2Jh Y2tlbmQvYWNjZXNzL3RyYW5zYW0vdmFyc3VwLmMKQEAgLTIzLDYgKzIzLDcgQEAKICNpbmNs dWRlICJwb3N0bWFzdGVyL2F1dG92YWN1dW0uaCIKICNpbmNsdWRlICJzdG9yYWdlL3Btc2ln bmFsLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCisjaW5jbHVkZSAic3RvcmFnZS9z dWJzeXN0ZW1zLmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCiAjaW5jbHVkZSAi dXRpbHMvc3lzY2FjaGUuaCIKIApAQCAtMzAsMzUgKzMxLDI1IEBACiAvKiBOdW1iZXIgb2Yg T0lEcyB0byBwcmVmZXRjaCAocHJlYWxsb2NhdGUpIHBlciBYTE9HIHdyaXRlICovCiAjZGVm aW5lIFZBUl9PSURfUFJFRkVUQ0gJCTgxOTIKIAorc3RhdGljIHZvaWQgVmFyc3VwU2htZW1S ZXF1ZXN0KHZvaWQgKmFyZyk7CisKIC8qIHBvaW50ZXIgdG8gdmFyaWFibGVzIHN0cnVjdCBp biBzaGFyZWQgbWVtb3J5ICovCiBUcmFuc2FtVmFyaWFibGVzRGF0YSAqVHJhbnNhbVZhcmlh YmxlcyA9IE5VTEw7CiAKK2NvbnN0IFNobWVtQ2FsbGJhY2tzIFZhcnN1cFNobWVtQ2FsbGJh Y2tzID0geworCS5yZXF1ZXN0X2ZuID0gVmFyc3VwU2htZW1SZXF1ZXN0LAorfTsKIAogLyoK LSAqIEluaXRpYWxpemF0aW9uIG9mIHNoYXJlZCBtZW1vcnkgZm9yIFRyYW5zYW1WYXJpYWJs ZXMuCisgKiBSZXF1ZXN0IHNoYXJlZCBtZW1vcnkgZm9yIFRyYW5zYW1WYXJpYWJsZXMuCiAg Ki8KLVNpemUKLVZhcnN1cFNobWVtU2l6ZSh2b2lkKQotewotCXJldHVybiBzaXplb2YoVHJh bnNhbVZhcmlhYmxlc0RhdGEpOwotfQotCi12b2lkCi1WYXJzdXBTaG1lbUluaXQodm9pZCkK K3N0YXRpYyB2b2lkCitWYXJzdXBTaG1lbVJlcXVlc3Qodm9pZCAqYXJnKQogewotCWJvb2wJ CWZvdW5kOwotCi0JLyogSW5pdGlhbGl6ZSBvdXIgc2hhcmVkIHN0YXRlIHN0cnVjdCAqLwot CVRyYW5zYW1WYXJpYWJsZXMgPSBTaG1lbUluaXRTdHJ1Y3QoIlRyYW5zYW1WYXJpYWJsZXMi LAotCQkJCQkJCQkJICAgc2l6ZW9mKFRyYW5zYW1WYXJpYWJsZXNEYXRhKSwKLQkJCQkJCQkJ CSAgICZmb3VuZCk7Ci0JaWYgKCFJc1VuZGVyUG9zdG1hc3RlcikKLQl7Ci0JCUFzc2VydCgh Zm91bmQpOwotCQltZW1zZXQoVHJhbnNhbVZhcmlhYmxlcywgMCwgc2l6ZW9mKFRyYW5zYW1W YXJpYWJsZXNEYXRhKSk7Ci0JfQotCWVsc2UKLQkJQXNzZXJ0KGZvdW5kKTsKKwlTaG1lbVJl cXVlc3RTdHJ1Y3QoLm5hbWUgPSAiVHJhbnNhbVZhcmlhYmxlcyIsCisJCQkJCSAgIC5zaXpl ID0gc2l6ZW9mKFRyYW5zYW1WYXJpYWJsZXNEYXRhKSwKKwkJCQkJICAgLnB0ciA9ICh2b2lk ICoqKSAmVHJhbnNhbVZhcmlhYmxlcywKKwkJKTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3Ny Yy9iYWNrZW5kL3BvcnQvcG9zaXhfc2VtYS5jIGIvc3JjL2JhY2tlbmQvcG9ydC9wb3NpeF9z ZW1hLmMKaW5kZXggNDAyMDViN2Q0MDAuLjUzZTRhN2E1YzM4IDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9wb3J0L3Bvc2l4X3NlbWEuYworKysgYi9zcmMvYmFja2VuZC9wb3J0L3Bvc2l4 X3NlbWEuYwpAQCAtMTU5LDIyICsxNTksMjQgQEAgUG9zaXhTZW1hcGhvcmVLaWxsKHNlbV90 ICpzZW0pCiAKIAogLyoKLSAqIFJlcG9ydCBhbW91bnQgb2Ygc2hhcmVkIG1lbW9yeSBuZWVk ZWQgZm9yIHNlbWFwaG9yZXMKKyAqIFJlcXVlc3Qgc2hhcmVkIG1lbW9yeSBuZWVkZWQgZm9y IHNlbWFwaG9yZXMKICAqLwotU2l6ZQotUEdTZW1hcGhvcmVTaG1lbVNpemUoaW50IG1heFNl bWFzKQordm9pZAorUEdTZW1hcGhvcmVTaG1lbVJlcXVlc3QoaW50IG1heFNlbWFzKQogewog I2lmZGVmIFVTRV9OQU1FRF9QT1NJWF9TRU1BUEhPUkVTCiAJLyogTm8gc2hhcmVkIG1lbW9y eSBuZWVkZWQgaW4gdGhpcyBjYXNlICovCi0JcmV0dXJuIDA7CiAjZWxzZQogCS8qIE5lZWQg YSBQR1NlbWFwaG9yZURhdGEgcGVyIHNlbWFwaG9yZSAqLwotCXJldHVybiBtdWxfc2l6ZSht YXhTZW1hcywgc2l6ZW9mKFBHU2VtYXBob3JlRGF0YSkpOworCVNobWVtUmVxdWVzdFN0cnVj dCgubmFtZSA9ICJTZW1hcGhvcmVzIiwKKwkJCQkJICAgLnNpemUgPSBtdWxfc2l6ZShtYXhT ZW1hcywgc2l6ZW9mKFBHU2VtYXBob3JlRGF0YSkpLAorCQkJCQkgICAucHRyID0gKHZvaWQg KiopICZzaGFyZWRTZW1hcywKKwkJKTsKICNlbmRpZgogfQogCiAvKgotICogUEdSZXNlcnZl U2VtYXBob3JlcyAtLS0gaW5pdGlhbGl6ZSBzZW1hcGhvcmUgc3VwcG9ydAorICogUEdTZW1h cGhvcmVJbml0IC0tLSBpbml0aWFsaXplIHNlbWFwaG9yZSBzdXBwb3J0CiAgKgogICogVGhp cyBpcyBjYWxsZWQgZHVyaW5nIHBvc3RtYXN0ZXIgc3RhcnQgb3Igc2hhcmVkIG1lbW9yeSBy ZWluaXRpYWxpemF0aW9uLgogICogSXQgc2hvdWxkIGRvIHdoYXRldmVyIGlzIG5lZWRlZCB0 byBiZSBhYmxlIHRvIHN1cHBvcnQgdXAgdG8gbWF4U2VtYXMKQEAgLTE5MywxMCArMTk1LDkg QEAgUEdTZW1hcGhvcmVTaG1lbVNpemUoaW50IG1heFNlbWFzKQogICogd2UgZG9uJ3QgaGF2 ZSB0byBleHBvc2UgdGhlIGNvdW50ZXJzIHRvIG90aGVyIHByb2Nlc3Nlcy4pCiAgKi8KIHZv aWQKLVBHUmVzZXJ2ZVNlbWFwaG9yZXMoaW50IG1heFNlbWFzKQorUEdTZW1hcGhvcmVJbml0 KGludCBtYXhTZW1hcykKIHsKIAlzdHJ1Y3Qgc3RhdCBzdGF0YnVmOwotCWJvb2wJCWZvdW5k OwogCiAJLyoKIAkgKiBXZSB1c2UgdGhlIGRhdGEgZGlyZWN0b3J5J3MgaW5vZGUgbnVtYmVy IHRvIHNlZWQgdGhlIHNlYXJjaCBmb3IgZnJlZQpAQCAtMjE0LDExICsyMTUsNiBAQCBQR1Jl c2VydmVTZW1hcGhvcmVzKGludCBtYXhTZW1hcykKIAlteVNlbVBvaW50ZXJzID0gKHNlbV90 ICoqKSBtYWxsb2MobWF4U2VtYXMgKiBzaXplb2Yoc2VtX3QgKikpOwogCWlmIChteVNlbVBv aW50ZXJzID09IE5VTEwpCiAJCWVsb2coUEFOSUMsICJvdXQgb2YgbWVtb3J5Iik7Ci0jZWxz ZQotCi0Jc2hhcmVkU2VtYXMgPSAoUEdTZW1hcGhvcmUpCi0JCVNobWVtSW5pdFN0cnVjdCgi U2VtYXBob3JlcyIsIFBHU2VtYXBob3JlU2htZW1TaXplKG1heFNlbWFzKSwgJmZvdW5kKTsK LQlBc3NlcnQoIWZvdW5kKTsKICNlbmRpZgogCiAJbnVtU2VtcyA9IDA7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9wb3J0L3N5c3Zfc2VtYS5jIGIvc3JjL2JhY2tlbmQvcG9ydC9zeXN2 X3NlbWEuYwppbmRleCA0YjJiZjg0MDcyZi4uOThkOTk1MTUwNDMgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3BvcnQvc3lzdl9zZW1hLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9ydC9zeXN2 X3NlbWEuYwpAQCAtMzAxLDE2ICszMDEsMjAgQEAgSXBjU2VtYXBob3JlQ3JlYXRlKGludCBu dW1TZW1zKQogCiAKIC8qCi0gKiBSZXBvcnQgYW1vdW50IG9mIHNoYXJlZCBtZW1vcnkgbmVl ZGVkIGZvciBzZW1hcGhvcmVzCisgKiBSZXF1ZXN0IHNoYXJlZCBtZW1vcnkgbmVlZGVkIGZv ciBzZW1hcGhvcmVzCiAgKi8KLVNpemUKLVBHU2VtYXBob3JlU2htZW1TaXplKGludCBtYXhT ZW1hcykKK3ZvaWQKK1BHU2VtYXBob3JlU2htZW1SZXF1ZXN0KGludCBtYXhTZW1hcykKIHsK LQlyZXR1cm4gbXVsX3NpemUobWF4U2VtYXMsIHNpemVvZihQR1NlbWFwaG9yZURhdGEpKTsK KwkvKiBOZWVkIGEgUEdTZW1hcGhvcmVEYXRhIHBlciBzZW1hcGhvcmUgKi8KKwlTaG1lbVJl cXVlc3RTdHJ1Y3QoLm5hbWUgPSAiU2VtYXBob3JlcyIsCisJCQkJCSAgIC5zaXplID0gbXVs X3NpemUobWF4U2VtYXMsIHNpemVvZihQR1NlbWFwaG9yZURhdGEpKSwKKwkJCQkJICAgLnB0 ciA9ICh2b2lkICoqKSAmc2hhcmVkU2VtYXMsCisJCSk7CiB9CiAKIC8qCi0gKiBQR1Jlc2Vy dmVTZW1hcGhvcmVzIC0tLSBpbml0aWFsaXplIHNlbWFwaG9yZSBzdXBwb3J0CisgKiBQR1Nl bWFwaG9yZUluaXQgLS0tIGluaXRpYWxpemUgc2VtYXBob3JlIHN1cHBvcnQKICAqCiAgKiBU aGlzIGlzIGNhbGxlZCBkdXJpbmcgcG9zdG1hc3RlciBzdGFydCBvciBzaGFyZWQgbWVtb3J5 IHJlaW5pdGlhbGl6YXRpb24uCiAgKiBJdCBzaG91bGQgZG8gd2hhdGV2ZXIgaXMgbmVlZGVk IHRvIGJlIGFibGUgdG8gc3VwcG9ydCB1cCB0byBtYXhTZW1hcwpAQCAtMzI3LDEwICszMzEs OSBAQCBQR1NlbWFwaG9yZVNobWVtU2l6ZShpbnQgbWF4U2VtYXMpCiAgKiBoYXZlIGNsb2Ji ZXJlZC4pCiAgKi8KIHZvaWQKLVBHUmVzZXJ2ZVNlbWFwaG9yZXMoaW50IG1heFNlbWFzKQor UEdTZW1hcGhvcmVJbml0KGludCBtYXhTZW1hcykKIHsKIAlzdHJ1Y3Qgc3RhdCBzdGF0YnVm OwotCWJvb2wJCWZvdW5kOwogCiAJLyoKIAkgKiBXZSB1c2UgdGhlIGRhdGEgZGlyZWN0b3J5 J3MgaW5vZGUgbnVtYmVyIHRvIHNlZWQgdGhlIHNlYXJjaCBmb3IgZnJlZQpAQCAtMzQ0LDEw ICszNDcsNiBAQCBQR1Jlc2VydmVTZW1hcGhvcmVzKGludCBtYXhTZW1hcykKIAkJCQkgZXJy bXNnKCJjb3VsZCBub3Qgc3RhdCBkYXRhIGRpcmVjdG9yeSBcIiVzXCI6ICVtIiwKIAkJCQkJ CURhdGFEaXIpKSk7CiAKLQlzaGFyZWRTZW1hcyA9IChQR1NlbWFwaG9yZSkKLQkJU2htZW1J bml0U3RydWN0KCJTZW1hcGhvcmVzIiwgUEdTZW1hcGhvcmVTaG1lbVNpemUobWF4U2VtYXMp LCAmZm91bmQpOwotCUFzc2VydCghZm91bmQpOwotCiAJbnVtU2hhcmVkU2VtYXMgPSAwOwog CW1heFNoYXJlZFNlbWFzID0gbWF4U2VtYXM7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3BvcnQvd2luMzJfc2VtYS5jIGIvc3JjL2JhY2tlbmQvcG9ydC93aW4zMl9zZW1hLmMKaW5k ZXggYmE5N2M5YjJkNjQuLmEzMjAyNTU0NzY5IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9w b3J0L3dpbjMyX3NlbWEuYworKysgYi9zcmMvYmFja2VuZC9wb3J0L3dpbjMyX3NlbWEuYwpA QCAtMjUsMTcgKzI1LDE2IEBAIHN0YXRpYyB2b2lkIFJlbGVhc2VTZW1hcGhvcmVzKGludCBj b2RlLCBEYXR1bSBhcmcpOwogCiAKIC8qCi0gKiBSZXBvcnQgYW1vdW50IG9mIHNoYXJlZCBt ZW1vcnkgbmVlZGVkIGZvciBzZW1hcGhvcmVzCisgKiBSZXF1ZXN0IHNoYXJlZCBtZW1vcnkg bmVlZGVkIGZvciBzZW1hcGhvcmVzCiAgKi8KLVNpemUKLVBHU2VtYXBob3JlU2htZW1TaXpl KGludCBtYXhTZW1hcykKK3ZvaWQKK1BHU2VtYXBob3JlU2htZW1SZXF1ZXN0KGludCBtYXhT ZW1hcykKIHsKIAkvKiBObyBzaGFyZWQgbWVtb3J5IG5lZWRlZCBvbiBXaW5kb3dzICovCi0J cmV0dXJuIDA7CiB9CiAKIC8qCi0gKiBQR1Jlc2VydmVTZW1hcGhvcmVzIC0tLSBpbml0aWFs aXplIHNlbWFwaG9yZSBzdXBwb3J0CisgKiBQR1NlbWFwaG9yZUluaXQgLS0tIGluaXRpYWxp emUgc2VtYXBob3JlIHN1cHBvcnQKICAqCiAgKiBJbiB0aGUgV2luMzIgaW1wbGVtZW50YXRp b24sIHdlIGFjcXVpcmUgc2VtYXBob3JlcyBvbi1kZW1hbmQ7IHRoZQogICogbWF4U2VtYXMg cGFyYW1ldGVyIGlzIGp1c3QgdXNlZCB0byBzaXplIHRoZSBhcnJheSB0aGF0IGtlZXBzIHRy YWNrIG9mCkBAIC00NCw3ICs0Myw3IEBAIFBHU2VtYXBob3JlU2htZW1TaXplKGludCBtYXhT ZW1hcykKICAqIHByb2Nlc3MgZXhpdHMuCiAgKi8KIHZvaWQKLVBHUmVzZXJ2ZVNlbWFwaG9y ZXMoaW50IG1heFNlbWFzKQorUEdTZW1hcGhvcmVJbml0KGludCBtYXhTZW1hcykKIHsKIAlt eVNlbVNldCA9IChIQU5ETEUgKikgbWFsbG9jKG1heFNlbWFzICogc2l6ZW9mKEhBTkRMRSkp OwogCWlmIChteVNlbVNldCA9PSBOVUxMKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3Rv cmFnZS9pcGMvZHNtLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9kc20uYwppbmRleCA2 YTViMTYzOTJmNy4uOGI2OWRmNGZmMjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvaXBjL2RzbS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2RzbS5jCkBAIC00 Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9sd2xvY2suaCIKICNpbmNsdWRlICJz dG9yYWdlL3BnX3NobWVtLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zaG1lbS5oIgorI2luY2x1 ZGUgInN0b3JhZ2Uvc3Vic3lzdGVtcy5oIgogI2luY2x1ZGUgInV0aWxzL2ZyZWVwYWdlLmgi CiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1dGlscy9yZXNvd25l ci5oIgpAQCAtMTA5LDYgKzExMCwxNSBAQCBzdGF0aWMgYm9vbCBkc21faW5pdF9kb25lID0g ZmFsc2U7CiAKIC8qIFByZWFsbG9jYXRlZCBEU00gc3BhY2UgaW4gdGhlIG1haW4gc2hhcmVk IG1lbW9yeSByZWdpb24uICovCiBzdGF0aWMgdm9pZCAqZHNtX21haW5fc3BhY2VfYmVnaW4g PSBOVUxMOworc3RhdGljIHNpemVfdCBkc21fbWFpbl9zcGFjZV9zaXplOworCitzdGF0aWMg dm9pZCBkc21fbWFpbl9zcGFjZV9yZXF1ZXN0KHZvaWQgKmFyZyk7CitzdGF0aWMgdm9pZCBk c21fbWFpbl9zcGFjZV9pbml0KHZvaWQgKmFyZyk7CisKK2NvbnN0IFNobWVtQ2FsbGJhY2tz IGRzbV9zaG1lbV9jYWxsYmFja3MgPSB7CisJLnJlcXVlc3RfZm4gPSBkc21fbWFpbl9zcGFj ZV9yZXF1ZXN0LAorCS5pbml0X2ZuID0gZHNtX21haW5fc3BhY2VfaW5pdCwKK307CiAKIC8q CiAgKiBMaXN0IG9mIGR5bmFtaWMgc2hhcmVkIG1lbW9yeSBzZWdtZW50cyB1c2VkIGJ5IHRo aXMgYmFja2VuZC4KQEAgLTQ2NCw0MiArNDc0LDQwIEBAIGRzbV9zZXRfY29udHJvbF9oYW5k bGUoZHNtX2hhbmRsZSBoKQogI2VuZGlmCiAKIC8qCi0gKiBSZXNlcnZlIHNvbWUgc3BhY2Ug aW4gdGhlIG1haW4gc2hhcmVkIG1lbW9yeSBzZWdtZW50IGZvciBEU00gc2VnbWVudHMuCisg KiBSZXNlcnZlIHNwYWNlIGluIHRoZSBtYWluIHNoYXJlZCBtZW1vcnkgc2VnbWVudCBmb3Ig RFNNIHNlZ21lbnRzLgogICovCi1zaXplX3QKLWRzbV9lc3RpbWF0ZV9zaXplKHZvaWQpCitz dGF0aWMgdm9pZAorZHNtX21haW5fc3BhY2VfcmVxdWVzdCh2b2lkICphcmcpCiB7Ci0JcmV0 dXJuIDEwMjQgKiAxMDI0ICogKHNpemVfdCkgbWluX2R5bmFtaWNfc2hhcmVkX21lbW9yeTsK Kwlkc21fbWFpbl9zcGFjZV9zaXplID0gMTAyNCAqIDEwMjQgKiAoc2l6ZV90KSBtaW5fZHlu YW1pY19zaGFyZWRfbWVtb3J5OworCisJaWYgKGRzbV9tYWluX3NwYWNlX3NpemUgPT0gMCkK KwkJcmV0dXJuOworCisJU2htZW1SZXF1ZXN0U3RydWN0KC5uYW1lID0gIlByZWFsbG9jYXRl ZCBEU00iLAorCQkJCQkgICAuc2l6ZSA9IGRzbV9tYWluX3NwYWNlX3NpemUsCisJCQkJCSAg IC5wdHIgPSAmZHNtX21haW5fc3BhY2VfYmVnaW4sCisJCSk7CiB9CiAKLS8qCi0gKiBJbml0 aWFsaXplIHNwYWNlIGluIHRoZSBtYWluIHNoYXJlZCBtZW1vcnkgc2VnbWVudCBmb3IgRFNN IHNlZ21lbnRzLgotICovCi12b2lkCi1kc21fc2htZW1faW5pdCh2b2lkKQorc3RhdGljIHZv aWQKK2RzbV9tYWluX3NwYWNlX2luaXQodm9pZCAqYXJnKQogewotCXNpemVfdAkJc2l6ZSA9 IGRzbV9lc3RpbWF0ZV9zaXplKCk7Ci0JYm9vbAkJZm91bmQ7CisJRnJlZVBhZ2VNYW5hZ2Vy ICpmcG0gPSAoRnJlZVBhZ2VNYW5hZ2VyICopIGRzbV9tYWluX3NwYWNlX2JlZ2luOworCXNp emVfdAkJZmlyc3RfcGFnZSA9IDA7CisJc2l6ZV90CQlwYWdlczsKIAotCWlmIChzaXplID09 IDApCisJaWYgKGRzbV9tYWluX3NwYWNlX3NpemUgPT0gMCkKIAkJcmV0dXJuOwogCi0JZHNt X21haW5fc3BhY2VfYmVnaW4gPSBTaG1lbUluaXRTdHJ1Y3QoIlByZWFsbG9jYXRlZCBEU00i LCBzaXplLCAmZm91bmQpOwotCWlmICghZm91bmQpCi0JewotCQlGcmVlUGFnZU1hbmFnZXIg KmZwbSA9IChGcmVlUGFnZU1hbmFnZXIgKikgZHNtX21haW5fc3BhY2VfYmVnaW47Ci0JCXNp emVfdAkJZmlyc3RfcGFnZSA9IDA7Ci0JCXNpemVfdAkJcGFnZXM7Ci0KLQkJLyogUmVzZXJ2 ZSBzcGFjZSBmb3IgdGhlIEZyZWVQYWdlTWFuYWdlci4gKi8KLQkJd2hpbGUgKGZpcnN0X3Bh Z2UgKiBGUE1fUEFHRV9TSVpFIDwgc2l6ZW9mKEZyZWVQYWdlTWFuYWdlcikpCi0JCQkrK2Zp cnN0X3BhZ2U7Ci0KLQkJLyogSW5pdGlhbGl6ZSBpdCBhbmQgZ2l2ZSBpdCBhbGwgdGhlIHJl c3Qgb2YgdGhlIHNwYWNlLiAqLwotCQlGcmVlUGFnZU1hbmFnZXJJbml0aWFsaXplKGZwbSwg ZHNtX21haW5fc3BhY2VfYmVnaW4pOwotCQlwYWdlcyA9IChzaXplIC8gRlBNX1BBR0VfU0la RSkgLSBmaXJzdF9wYWdlOwotCQlGcmVlUGFnZU1hbmFnZXJQdXQoZnBtLCBmaXJzdF9wYWdl LCBwYWdlcyk7Ci0JfQorCS8qIFJlc2VydmUgc3BhY2UgZm9yIHRoZSBGcmVlUGFnZU1hbmFn ZXIuICovCisJd2hpbGUgKGZpcnN0X3BhZ2UgKiBGUE1fUEFHRV9TSVpFIDwgc2l6ZW9mKEZy ZWVQYWdlTWFuYWdlcikpCisJCSsrZmlyc3RfcGFnZTsKKworCS8qIEluaXRpYWxpemUgaXQg YW5kIGdpdmUgaXQgYWxsIHRoZSByZXN0IG9mIHRoZSBzcGFjZS4gKi8KKwlGcmVlUGFnZU1h bmFnZXJJbml0aWFsaXplKGZwbSwgZHNtX21haW5fc3BhY2VfYmVnaW4pOworCXBhZ2VzID0g KGRzbV9tYWluX3NwYWNlX3NpemUgLyBGUE1fUEFHRV9TSVpFKSAtIGZpcnN0X3BhZ2U7CisJ RnJlZVBhZ2VNYW5hZ2VyUHV0KGZwbSwgZmlyc3RfcGFnZSwgcGFnZXMpOwogfQogCiAvKgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvZHNtX3JlZ2lzdHJ5LmMgYi9z cmMvYmFja2VuZC9zdG9yYWdlL2lwYy9kc21fcmVnaXN0cnkuYwppbmRleCA5YmZjZDYxNjgy Ny4uMmI1Njk3NzY1OWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2Rz bV9yZWdpc3RyeS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2RzbV9yZWdpc3Ry eS5jCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9kc21fcmVnaXN0cnku aCIKICNpbmNsdWRlICJzdG9yYWdlL2x3bG9jay5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc2ht ZW0uaCIKKyNpbmNsdWRlICJzdG9yYWdlL3N1YnN5c3RlbXMuaCIKICNpbmNsdWRlICJ1dGls cy9idWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAi dXRpbHMvdHVwbGVzdG9yZS5oIgpAQCAtNTcsNiArNTgsMTQgQEAgdHlwZWRlZiBzdHJ1Y3Qg RFNNUmVnaXN0cnlDdHhTdHJ1Y3QKIAogc3RhdGljIERTTVJlZ2lzdHJ5Q3R4U3RydWN0ICpE U01SZWdpc3RyeUN0eDsKIAorc3RhdGljIHZvaWQgRFNNUmVnaXN0cnlTaG1lbVJlcXVlc3Qo dm9pZCAqYXJnKTsKK3N0YXRpYyB2b2lkIERTTVJlZ2lzdHJ5U2htZW1Jbml0KHZvaWQgKmFy Zyk7CisKK2NvbnN0IFNobWVtQ2FsbGJhY2tzIERTTVJlZ2lzdHJ5U2htZW1DYWxsYmFja3Mg PSB7CisJLnJlcXVlc3RfZm4gPSBEU01SZWdpc3RyeVNobWVtUmVxdWVzdCwKKwkuaW5pdF9m biA9IERTTVJlZ2lzdHJ5U2htZW1Jbml0LAorfTsKKwogdHlwZWRlZiBzdHJ1Y3QgTmFtZWRE U01TdGF0ZQogewogCWRzbV9oYW5kbGUJaGFuZGxlOwpAQCAtMTE0LDI3ICsxMjMsMjAgQEAg c3RhdGljIGNvbnN0IGRzaGFzaF9wYXJhbWV0ZXJzIGRzaF9wYXJhbXMgPSB7CiBzdGF0aWMg ZHNhX2FyZWEgKmRzbV9yZWdpc3RyeV9kc2E7CiBzdGF0aWMgZHNoYXNoX3RhYmxlICpkc21f cmVnaXN0cnlfdGFibGU7CiAKLVNpemUKLURTTVJlZ2lzdHJ5U2htZW1TaXplKHZvaWQpCitz dGF0aWMgdm9pZAorRFNNUmVnaXN0cnlTaG1lbVJlcXVlc3Qodm9pZCAqYXJnKQogewotCXJl dHVybiBNQVhBTElHTihzaXplb2YoRFNNUmVnaXN0cnlDdHhTdHJ1Y3QpKTsKKwlTaG1lbVJl cXVlc3RTdHJ1Y3QoLm5hbWUgPSAiRFNNIFJlZ2lzdHJ5IERhdGEiLAorCQkJCQkgICAuc2l6 ZSA9IHNpemVvZihEU01SZWdpc3RyeUN0eFN0cnVjdCksCisJCQkJCSAgIC5wdHIgPSAodm9p ZCAqKikgJkRTTVJlZ2lzdHJ5Q3R4LAorCQkpOwogfQogCi12b2lkCi1EU01SZWdpc3RyeVNo bWVtSW5pdCh2b2lkKQorc3RhdGljIHZvaWQKK0RTTVJlZ2lzdHJ5U2htZW1Jbml0KHZvaWQg KmFyZykKIHsKLQlib29sCQlmb3VuZDsKLQotCURTTVJlZ2lzdHJ5Q3R4ID0gKERTTVJlZ2lz dHJ5Q3R4U3RydWN0ICopCi0JCVNobWVtSW5pdFN0cnVjdCgiRFNNIFJlZ2lzdHJ5IERhdGEi LAotCQkJCQkJRFNNUmVnaXN0cnlTaG1lbVNpemUoKSwKLQkJCQkJCSZmb3VuZCk7Ci0KLQlp ZiAoIWZvdW5kKQotCXsKLQkJRFNNUmVnaXN0cnlDdHgtPmRzYWggPSBEU0FfSEFORExFX0lO VkFMSUQ7Ci0JCURTTVJlZ2lzdHJ5Q3R4LT5kc2hoID0gRFNIQVNIX0hBTkRMRV9JTlZBTElE OwotCX0KKwlEU01SZWdpc3RyeUN0eC0+ZHNhaCA9IERTQV9IQU5ETEVfSU5WQUxJRDsKKwlE U01SZWdpc3RyeUN0eC0+ZHNoaCA9IERTSEFTSF9IQU5ETEVfSU5WQUxJRDsKIH0KIAogLyoK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYyBiL3NyYy9iYWNr ZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYwppbmRleCBkZTY1YTllZjMzYy4uNGY3MDcxNTgzMDMg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYworKysgYi9zcmMv YmFja2VuZC9zdG9yYWdlL2lwYy9pcGNpLmMKQEAgLTIwLDcgKzIwLDYgQEAKICNpbmNsdWRl ICJhY2Nlc3MvbmJ0cmVlLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3N1YnRyYW5zLmgiCiAjaW5j bHVkZSAiYWNjZXNzL3N5bmNzY2FuLmgiCi0jaW5jbHVkZSAiYWNjZXNzL3RyYW5zYW0uaCIK ICNpbmNsdWRlICJhY2Nlc3MvdHdvcGhhc2UuaCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZ3By ZWZldGNoZXIuaCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZ3JlY292ZXJ5LmgiCkBAIC00Miwx NiArNDEsMTEgQEAKICNpbmNsdWRlICJzdG9yYWdlL2Fpb19zdWJzeXMuaCIKICNpbmNsdWRl ICJzdG9yYWdlL2J1Zm1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZHNtLmgiCi0jaW5jbHVk ZSAic3RvcmFnZS9kc21fcmVnaXN0cnkuaCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgog I2luY2x1ZGUgInN0b3JhZ2UvcGdfc2htZW0uaCIKLSNpbmNsdWRlICJzdG9yYWdlL3Btc2ln bmFsLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcmVkaWNhdGUuaCIKICNpbmNsdWRlICJzdG9y YWdlL3Byb2MuaCIKLSNpbmNsdWRlICJzdG9yYWdlL3Byb2NhcnJheS5oIgotI2luY2x1ZGUg InN0b3JhZ2UvcHJvY3NpZ25hbC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc2htZW1faW50ZXJu YWwuaCIKLSNpbmNsdWRlICJzdG9yYWdlL3NpbnZhbGFkdC5oIgogI2luY2x1ZGUgInN0b3Jh Z2Uvc3Vic3lzdGVtcy5oIgogI2luY2x1ZGUgInV0aWxzL2d1Yy5oIgogI2luY2x1ZGUgInV0 aWxzL2luamVjdGlvbl9wb2ludC5oIgpAQCAtMTA1LDE0ICs5OSwxMCBAQCBDYWxjdWxhdGVT aG1lbVNpemUodm9pZCkKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgU2htZW1HZXRSZXF1ZXN0 ZWRTaXplKCkpOwogCiAJLyogbGVnYWN5IHN1YnN5c3RlbXMgKi8KLQlzaXplID0gYWRkX3Np emUoc2l6ZSwgZHNtX2VzdGltYXRlX3NpemUoKSk7Ci0Jc2l6ZSA9IGFkZF9zaXplKHNpemUs IERTTVJlZ2lzdHJ5U2htZW1TaXplKCkpOwogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBCdWZm ZXJNYW5hZ2VyU2htZW1TaXplKCkpOwogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBMb2NrTWFu YWdlclNobWVtU2l6ZSgpKTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgUHJlZGljYXRlTG9j a1NobWVtU2l6ZSgpKTsKLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgUHJvY0dsb2JhbFNobWVt U2l6ZSgpKTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgWExvZ1ByZWZldGNoU2htZW1TaXpl KCkpOwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBWYXJzdXBTaG1lbVNpemUoKSk7CiAJc2l6 ZSA9IGFkZF9zaXplKHNpemUsIFhMT0dTaG1lbVNpemUoKSk7CiAJc2l6ZSA9IGFkZF9zaXpl KHNpemUsIFhMb2dSZWNvdmVyeVNobWVtU2l6ZSgpKTsKIAlzaXplID0gYWRkX3NpemUoc2l6 ZSwgQ0xPR1NobWVtU2l6ZSgpKTsKQEAgLTEyMSwxMSArMTExLDcgQEAgQ2FsY3VsYXRlU2ht ZW1TaXplKHZvaWQpCiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIFR3b1BoYXNlU2htZW1TaXpl KCkpOwogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBCYWNrZ3JvdW5kV29ya2VyU2htZW1TaXpl KCkpOwogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBNdWx0aVhhY3RTaG1lbVNpemUoKSk7Ci0J c2l6ZSA9IGFkZF9zaXplKHNpemUsIFByb2NBcnJheVNobWVtU2l6ZSgpKTsKIAlzaXplID0g YWRkX3NpemUoc2l6ZSwgQmFja2VuZFN0YXR1c1NobWVtU2l6ZSgpKTsKLQlzaXplID0gYWRk X3NpemUoc2l6ZSwgU2hhcmVkSW52YWxTaG1lbVNpemUoKSk7Ci0Jc2l6ZSA9IGFkZF9zaXpl KHNpemUsIFBNU2lnbmFsU2htZW1TaXplKCkpOwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBQ cm9jU2lnbmFsU2htZW1TaXplKCkpOwogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBDaGVja3Bv aW50ZXJTaG1lbVNpemUoKSk7CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIEF1dG9WYWN1dW1T aG1lbVNpemUoKSk7CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIFJlcGxpY2F0aW9uU2xvdHNT aG1lbVNpemUoKSk7CkBAIC0yNzgsMTMgKzI2NCw5IEBAIFJlZ2lzdGVyQnVpbHRpblNobWVt Q2FsbGJhY2tzKHZvaWQpCiBzdGF0aWMgdm9pZAogQ3JlYXRlT3JBdHRhY2hTaG1lbVN0cnVj dHModm9pZCkKIHsKLQlkc21fc2htZW1faW5pdCgpOwotCURTTVJlZ2lzdHJ5U2htZW1Jbml0 KCk7Ci0KIAkvKgogCSAqIFNldCB1cCB4bG9nLCBjbG9nLCBhbmQgYnVmZmVycwogCSAqLwot CVZhcnN1cFNobWVtSW5pdCgpOwogCVhMT0dTaG1lbUluaXQoKTsKIAlYTG9nUHJlZmV0Y2hT aG1lbUluaXQoKTsKIAlYTG9nUmVjb3ZlcnlTaG1lbUluaXQoKTsKQEAgLTMwNywyMyArMjg5 LDEzIEBAIENyZWF0ZU9yQXR0YWNoU2htZW1TdHJ1Y3RzKHZvaWQpCiAJLyoKIAkgKiBTZXQg dXAgcHJvY2VzcyB0YWJsZQogCSAqLwotCWlmICghSXNVbmRlclBvc3RtYXN0ZXIpCi0JCUlu aXRQcm9jR2xvYmFsKCk7Ci0JUHJvY0FycmF5U2htZW1Jbml0KCk7CiAJQmFja2VuZFN0YXR1 c1NobWVtSW5pdCgpOwogCVR3b1BoYXNlU2htZW1Jbml0KCk7CiAJQmFja2dyb3VuZFdvcmtl clNobWVtSW5pdCgpOwogCi0JLyoKLQkgKiBTZXQgdXAgc2hhcmVkLWludmFsIG1lc3NhZ2lu ZwotCSAqLwotCVNoYXJlZEludmFsU2htZW1Jbml0KCk7Ci0KIAkvKgogCSAqIFNldCB1cCBp bnRlcnByb2Nlc3Mgc2lnbmFsaW5nIG1lY2hhbmlzbXMKIAkgKi8KLQlQTVNpZ25hbFNobWVt SW5pdCgpOwotCVByb2NTaWduYWxTaG1lbUluaXQoKTsKIAlDaGVja3BvaW50ZXJTaG1lbUlu aXQoKTsKIAlBdXRvVmFjdXVtU2htZW1Jbml0KCk7CiAJUmVwbGljYXRpb25TbG90c1NobWVt SW5pdCgpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvbGF0Y2guYyBi L3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2xhdGNoLmMKaW5kZXggODUzN2U5ZmVmMmQuLjdk NGY0Y2YzMmJiIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9sYXRjaC5j CisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2xhdGNoLmMKQEAgLTgwLDEwICs4MCwx MCBAQCBJbml0TGF0Y2goTGF0Y2ggKmxhdGNoKQogICogY3VycmVudCBwcm9jZXNzLgogICoK ICAqIEluaXRTaGFyZWRMYXRjaCBuZWVkcyB0byBiZSBjYWxsZWQgaW4gcG9zdG1hc3RlciBi ZWZvcmUgZm9ya2luZyBjaGlsZAotICogcHJvY2Vzc2VzLCB1c3VhbGx5IHJpZ2h0IGFmdGVy IGFsbG9jYXRpbmcgdGhlIHNoYXJlZCBtZW1vcnkgYmxvY2sKLSAqIGNvbnRhaW5pbmcgdGhl IGxhdGNoIHdpdGggU2htZW1Jbml0U3RydWN0LiAoVGhlIFVuaXggaW1wbGVtZW50YXRpb24K LSAqIGRvZXNuJ3QgYWN0dWFsbHkgcmVxdWlyZSB0aGF0LCBidXQgdGhlIFdpbmRvd3Mgb25l IGRvZXMuKSBCZWNhdXNlIG9mCi0gKiB0aGlzIHJlc3RyaWN0aW9uLCB3ZSBoYXZlIG5vIGNv bmN1cnJlbmN5IGlzc3VlcyB0byB3b3JyeSBhYm91dCBoZXJlLgorICogcHJvY2Vzc2VzLCB1 c3VhbGx5IHJpZ2h0IGFmdGVyIGluaXRpYWxpemluZyB0aGUgc2hhcmVkIG1lbW9yeSBibG9j aworICogY29udGFpbmluZyB0aGUgbGF0Y2guIChUaGUgVW5peCBpbXBsZW1lbnRhdGlvbiBk b2Vzbid0IGFjdHVhbGx5IHJlcXVpcmUKKyAqIHRoYXQsIGJ1dCB0aGUgV2luZG93cyBvbmUg ZG9lcy4pIEJlY2F1c2Ugb2YgdGhpcyByZXN0cmljdGlvbiwgd2UgaGF2ZSBubworICogY29u Y3VycmVuY3kgaXNzdWVzIHRvIHdvcnJ5IGFib3V0IGhlcmUuCiAgKgogICogTm90ZSB0aGF0 IG90aGVyIGhhbmRsZXMgY3JlYXRlZCBpbiB0aGlzIG1vZHVsZSBhcmUgbmV2ZXIgbWFya2Vk IGFzCiAgKiBpbmhlcml0YWJsZS4gIFRodXMgd2UgZG8gbm90IG5lZWQgdG8gd29ycnkgYWJv dXQgY2xlYW5pbmcgdXAgY2hpbGQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv aXBjL3Btc2lnbmFsLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wbXNpZ25hbC5jCmlu ZGV4IDQ2MTg4MjBiMzM3Li5iZGFkNWZkZDA0MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv c3RvcmFnZS9pcGMvcG1zaWduYWwuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9w bXNpZ25hbC5jCkBAIC0yNyw2ICsyNyw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIK ICNpbmNsdWRlICJzdG9yYWdlL3Btc2lnbmFsLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zaG1l bS5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvc3Vic3lzdGVtcy5oIgogI2luY2x1ZGUgInV0aWxz L21lbXV0aWxzLmgiCiAKIApAQCAtODMsNiArODQsMTQgQEAgc3RydWN0IFBNU2lnbmFsRGF0 YQogLyogUE1TaWduYWxTdGF0ZSBwb2ludGVyIGlzIHZhbGlkIGluIGJvdGggcG9zdG1hc3Rl ciBhbmQgY2hpbGQgcHJvY2Vzc2VzICovCiBOT05fRVhFQ19TVEFUSUMgdm9sYXRpbGUgUE1T aWduYWxEYXRhICpQTVNpZ25hbFN0YXRlID0gTlVMTDsKIAorc3RhdGljIHZvaWQgUE1TaWdu YWxTaG1lbVJlcXVlc3Qodm9pZCAqKTsKK3N0YXRpYyB2b2lkIFBNU2lnbmFsU2htZW1Jbml0 KHZvaWQgKik7CisKK2NvbnN0IFNobWVtQ2FsbGJhY2tzIFBNU2lnbmFsU2htZW1DYWxsYmFj a3MgPSB7CisJLnJlcXVlc3RfZm4gPSBQTVNpZ25hbFNobWVtUmVxdWVzdCwKKwkuaW5pdF9m biA9IFBNU2lnbmFsU2htZW1Jbml0LAorfTsKKwogLyoKICAqIExvY2FsIGNvcHkgb2YgUE1T aWduYWxTdGF0ZS0+bnVtX2NoaWxkX2ZsYWdzLCBvbmx5IHZhbGlkIGluIHRoZQogICogcG9z dG1hc3Rlci4gIFBvc3RtYXN0ZXIga2VlcHMgYSBsb2NhbCBjb3B5IHNvIHRoYXQgaXQgZG9l c24ndCBuZWVkIHRvCkBAIC0xMjMsMzkgKzEzMiwyOSBAQCBwb3N0bWFzdGVyX2RlYXRoX2hh bmRsZXIoU0lHTkFMX0FSR1MpCiBzdGF0aWMgdm9pZCBNYXJrUG9zdG1hc3RlckNoaWxkSW5h Y3RpdmUoaW50IGNvZGUsIERhdHVtIGFyZyk7CiAKIC8qCi0gKiBQTVNpZ25hbFNobWVtU2l6 ZQotICoJCUNvbXB1dGUgc3BhY2UgbmVlZGVkIGZvciBwbXNpZ25hbC5jJ3Mgc2hhcmVkIG1l bW9yeQorICogUE1TaWduYWxTaG1lbVJlcXVlc3QgLSBSZWdpc3RlciBwbXNpZ25hbC5jJ3Mg c2hhcmVkIG1lbW9yeSBuZWVkcwogICovCi1TaXplCi1QTVNpZ25hbFNobWVtU2l6ZSh2b2lk KQorc3RhdGljIHZvaWQKK1BNU2lnbmFsU2htZW1SZXF1ZXN0KHZvaWQgKmFyZykKIHsKLQlT aXplCQlzaXplOworCXNpemVfdAkJc2l6ZTsKIAotCXNpemUgPSBvZmZzZXRvZihQTVNpZ25h bERhdGEsIFBNQ2hpbGRGbGFncyk7Ci0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIG11bF9zaXpl KE1heExpdmVQb3N0bWFzdGVyQ2hpbGRyZW4oKSwKLQkJCQkJCQkJICAgc2l6ZW9mKHNpZ19h dG9taWNfdCkpKTsKKwludW1fY2hpbGRfZmxhZ3MgPSBNYXhMaXZlUG9zdG1hc3RlckNoaWxk cmVuKCk7CiAKLQlyZXR1cm4gc2l6ZTsKKwlzaXplID0gYWRkX3NpemUob2Zmc2V0b2YoUE1T aWduYWxEYXRhLCBQTUNoaWxkRmxhZ3MpLAorCQkJCQltdWxfc2l6ZShudW1fY2hpbGRfZmxh Z3MsIHNpemVvZihzaWdfYXRvbWljX3QpKSk7CisJU2htZW1SZXF1ZXN0U3RydWN0KC5uYW1l ID0gIlBNU2lnbmFsU3RhdGUiLAorCQkJCQkgICAuc2l6ZSA9IHNpemUsCisJCQkJCSAgIC5w dHIgPSAodm9pZCAqKikgJlBNU2lnbmFsU3RhdGUsCisJCSk7CiB9CiAKLS8qCi0gKiBQTVNp Z25hbFNobWVtSW5pdCAtIGluaXRpYWxpemUgZHVyaW5nIHNoYXJlZC1tZW1vcnkgY3JlYXRp b24KLSAqLwotdm9pZAotUE1TaWduYWxTaG1lbUluaXQodm9pZCkKK3N0YXRpYyB2b2lkCitQ TVNpZ25hbFNobWVtSW5pdCh2b2lkICphcmcpCiB7Ci0JYm9vbAkJZm91bmQ7Ci0KLQlQTVNp Z25hbFN0YXRlID0gKFBNU2lnbmFsRGF0YSAqKQotCQlTaG1lbUluaXRTdHJ1Y3QoIlBNU2ln bmFsU3RhdGUiLCBQTVNpZ25hbFNobWVtU2l6ZSgpLCAmZm91bmQpOwotCi0JaWYgKCFmb3Vu ZCkKLQl7Ci0JCS8qIGluaXRpYWxpemUgYWxsIGZsYWdzIHRvIHplcm9lcyAqLwotCQlNZW1T ZXQodW52b2xhdGl6ZShQTVNpZ25hbERhdGEgKiwgUE1TaWduYWxTdGF0ZSksIDAsIFBNU2ln bmFsU2htZW1TaXplKCkpOwotCQludW1fY2hpbGRfZmxhZ3MgPSBNYXhMaXZlUG9zdG1hc3Rl ckNoaWxkcmVuKCk7Ci0JCVBNU2lnbmFsU3RhdGUtPm51bV9jaGlsZF9mbGFncyA9IG51bV9j aGlsZF9mbGFnczsKLQl9CisJQXNzZXJ0KFBNU2lnbmFsU3RhdGUpOworCUFzc2VydChudW1f Y2hpbGRfZmxhZ3MgPiAwKTsKKwlQTVNpZ25hbFN0YXRlLT5udW1fY2hpbGRfZmxhZ3MgPSBu dW1fY2hpbGRfZmxhZ3M7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9y YWdlL2lwYy9wcm9jYXJyYXkuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NhcnJh eS5jCmluZGV4IGNjMjA3Y2I1NmUzLi5mNTQwYmI2YjIzZiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9pcGMvcHJvY2FycmF5LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFn ZS9pcGMvcHJvY2FycmF5LmMKQEAgLTYxLDYgKzYxLDcgQEAKICNpbmNsdWRlICJzdG9yYWdl L3Byb2MuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2NhcnJheS5oIgogI2luY2x1ZGUgInN0 b3JhZ2UvcHJvY3NpZ25hbC5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvc3Vic3lzdGVtcy5oIgog I2luY2x1ZGUgInV0aWxzL2FjbC5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAj aW5jbHVkZSAidXRpbHMvaW5qZWN0aW9uX3BvaW50LmgiCkBAIC0xMDMsNiArMTA0LDE4IEBA IHR5cGVkZWYgc3RydWN0IFByb2NBcnJheVN0cnVjdAogCWludAkJCXBncHJvY25vc1tGTEVY SUJMRV9BUlJBWV9NRU1CRVJdOwogfSBQcm9jQXJyYXlTdHJ1Y3Q7CiAKK3N0YXRpYyB2b2lk IFByb2NBcnJheVNobWVtUmVxdWVzdCh2b2lkICphcmcpOworc3RhdGljIHZvaWQgUHJvY0Fy cmF5U2htZW1Jbml0KHZvaWQgKmFyZyk7CitzdGF0aWMgdm9pZCBQcm9jQXJyYXlTaG1lbUF0 dGFjaCh2b2lkICphcmcpOworCitzdGF0aWMgUHJvY0FycmF5U3RydWN0ICpwcm9jQXJyYXk7 CisKK2NvbnN0IHN0cnVjdCBTaG1lbUNhbGxiYWNrcyBQcm9jQXJyYXlTaG1lbUNhbGxiYWNr cyA9IHsKKwkucmVxdWVzdF9mbiA9IFByb2NBcnJheVNobWVtUmVxdWVzdCwKKwkuaW5pdF9m biA9IFByb2NBcnJheVNobWVtSW5pdCwKKwkuYXR0YWNoX2ZuID0gUHJvY0FycmF5U2htZW1B dHRhY2gsCit9OworCiAvKgogICogU3RhdGUgZm9yIHRoZSBHbG9iYWxWaXNUZXN0KiBmYW1p bHkgb2YgZnVuY3Rpb25zLiBUaG9zZSBmdW5jdGlvbnMgY2FuCiAgKiBlLmcuIGJlIHVzZWQg dG8gZGVjaWRlIGlmIGEgZGVsZXRlZCByb3cgY2FuIGJlIHJlbW92ZWQgd2l0aG91dCB2aW9s YXRpbmcKQEAgLTI2OSw5ICsyODIsNiBAQCB0eXBlZGVmIGVudW0gS0FYQ29tcHJlc3NSZWFz b24KIAlLQVhfU1RBUlRVUF9QUk9DRVNTX0lETEUsCS8qIHN0YXJ0dXAgcHJvY2VzcyBpcyBh Ym91dCB0byBzbGVlcCAqLwogfSBLQVhDb21wcmVzc1JlYXNvbjsKIAotCi1zdGF0aWMgUHJv Y0FycmF5U3RydWN0ICpwcm9jQXJyYXk7Ci0KIHN0YXRpYyBQR1BST0MgKmFsbFByb2NzOwog CiAvKgpAQCAtMjgyLDggKzI5MiwxMSBAQCBzdGF0aWMgVHJhbnNhY3Rpb25JZCBjYWNoZWRY aWRJc05vdEluUHJvZ3Jlc3MgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIC8qCiAgKiBCb29r a2VlcGluZyBmb3IgdHJhY2tpbmcgZW11bGF0ZWQgdHJhbnNhY3Rpb25zIGluIHJlY292ZXJ5 CiAgKi8KKwogc3RhdGljIFRyYW5zYWN0aW9uSWQgKktub3duQXNzaWduZWRYaWRzOworCiBz dGF0aWMgYm9vbCAqS25vd25Bc3NpZ25lZFhpZHNWYWxpZDsKKwogc3RhdGljIFRyYW5zYWN0 aW9uSWQgbGF0ZXN0T2JzZXJ2ZWRYaWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKIAogLyoK QEAgLTM3NCwxOSArMzg3LDEzIEBAIHN0YXRpYyBpbmxpbmUgRnVsbFRyYW5zYWN0aW9uSWQg RnVsbFhpZFJlbGF0aXZlVG8oRnVsbFRyYW5zYWN0aW9uSWQgcmVsLAogc3RhdGljIHZvaWQg R2xvYmFsVmlzVXBkYXRlQXBwbHkoQ29tcHV0ZVhpZEhvcml6b25zUmVzdWx0ICpob3Jpem9u cyk7CiAKIC8qCi0gKiBSZXBvcnQgc2hhcmVkLW1lbW9yeSBzcGFjZSBuZWVkZWQgYnkgUHJv Y0FycmF5U2htZW1Jbml0CisgKiBSZWdpc3RlciB0aGUgc2hhcmVkIFBHUFJPQyBhcnJheSBk dXJpbmcgcG9zdG1hc3RlciBzdGFydHVwLgogICovCi1TaXplCi1Qcm9jQXJyYXlTaG1lbVNp emUodm9pZCkKK3N0YXRpYyB2b2lkCitQcm9jQXJyYXlTaG1lbVJlcXVlc3Qodm9pZCAqYXJn KQogewotCVNpemUJCXNpemU7Ci0KLQkvKiBTaXplIG9mIHRoZSBQcm9jQXJyYXkgc3RydWN0 dXJlIGl0c2VsZiAqLwogI2RlZmluZSBQUk9DQVJSQVlfTUFYUFJPQ1MJKE1heEJhY2tlbmRz ICsgbWF4X3ByZXBhcmVkX3hhY3RzKQogCi0Jc2l6ZSA9IG9mZnNldG9mKFByb2NBcnJheVN0 cnVjdCwgcGdwcm9jbm9zKTsKLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgbXVsX3NpemUoc2l6 ZW9mKGludCksIFBST0NBUlJBWV9NQVhQUk9DUykpOwotCiAJLyoKIAkgKiBEdXJpbmcgSG90 IFN0YW5kYnkgcHJvY2Vzc2luZyB3ZSBoYXZlIGEgZGF0YSBzdHJ1Y3R1cmUgY2FsbGVkCiAJ ICogS25vd25Bc3NpZ25lZFhpZHMsIGNyZWF0ZWQgaW4gc2hhcmVkIG1lbW9yeS4gTG9jYWwg ZGF0YSBzdHJ1Y3R1cmVzIGFyZQpAQCAtNDA1LDY0ICs0MTIsNDkgQEAgUHJvY0FycmF5U2ht ZW1TaXplKHZvaWQpCiAKIAlpZiAoRW5hYmxlSG90U3RhbmRieSkKIAl7Ci0JCXNpemUgPSBh ZGRfc2l6ZShzaXplLAotCQkJCQkJbXVsX3NpemUoc2l6ZW9mKFRyYW5zYWN0aW9uSWQpLAot CQkJCQkJCQkgVE9UQUxfTUFYX0NBQ0hFRF9TVUJYSURTKSk7Ci0JCXNpemUgPSBhZGRfc2l6 ZShzaXplLAotCQkJCQkJbXVsX3NpemUoc2l6ZW9mKGJvb2wpLCBUT1RBTF9NQVhfQ0FDSEVE X1NVQlhJRFMpKTsKKwkJU2htZW1SZXF1ZXN0U3RydWN0KC5uYW1lID0gIktub3duQXNzaWdu ZWRYaWRzIiwKKwkJCQkJCSAgIC5zaXplID0gbXVsX3NpemUoc2l6ZW9mKFRyYW5zYWN0aW9u SWQpLCBUT1RBTF9NQVhfQ0FDSEVEX1NVQlhJRFMpLAorCQkJCQkJICAgLnB0ciA9ICh2b2lk ICoqKSAmS25vd25Bc3NpZ25lZFhpZHMsCisJCQkpOworCisJCVNobWVtUmVxdWVzdFN0cnVj dCgubmFtZSA9ICJLbm93bkFzc2lnbmVkWGlkc1ZhbGlkIiwKKwkJCQkJCSAgIC5zaXplID0g bXVsX3NpemUoc2l6ZW9mKGJvb2wpLCBUT1RBTF9NQVhfQ0FDSEVEX1NVQlhJRFMpLAorCQkJ CQkJICAgLnB0ciA9ICh2b2lkICoqKSAmS25vd25Bc3NpZ25lZFhpZHNWYWxpZCwKKwkJCSk7 CiAJfQogCi0JcmV0dXJuIHNpemU7CisJLyogUmVnaXN0ZXIgdGhlIFByb2NBcnJheSBzaGFy ZWQgc3RydWN0dXJlICovCisJU2htZW1SZXF1ZXN0U3RydWN0KC5uYW1lID0gIlByb2MgQXJy YXkiLAorCQkJCQkgICAuc2l6ZSA9IGFkZF9zaXplKG9mZnNldG9mKFByb2NBcnJheVN0cnVj dCwgcGdwcm9jbm9zKSwKKwkJCQkJCQkJCQltdWxfc2l6ZShzaXplb2YoaW50KSwgUFJPQ0FS UkFZX01BWFBST0NTKSksCisJCQkJCSAgIC5wdHIgPSAodm9pZCAqKikgJnByb2NBcnJheSwK KwkJKTsKIH0KIAogLyoKICAqIEluaXRpYWxpemUgdGhlIHNoYXJlZCBQR1BST0MgYXJyYXkg ZHVyaW5nIHBvc3RtYXN0ZXIgc3RhcnR1cC4KICAqLwotdm9pZAotUHJvY0FycmF5U2htZW1J bml0KHZvaWQpCitzdGF0aWMgdm9pZAorUHJvY0FycmF5U2htZW1Jbml0KHZvaWQgKmFyZykK IHsKLQlib29sCQlmb3VuZDsKLQotCS8qIENyZWF0ZSBvciBhdHRhY2ggdG8gdGhlIFByb2NB cnJheSBzaGFyZWQgc3RydWN0dXJlICovCi0JcHJvY0FycmF5ID0gKFByb2NBcnJheVN0cnVj dCAqKQotCQlTaG1lbUluaXRTdHJ1Y3QoIlByb2MgQXJyYXkiLAotCQkJCQkJYWRkX3NpemUo b2Zmc2V0b2YoUHJvY0FycmF5U3RydWN0LCBwZ3Byb2Nub3MpLAotCQkJCQkJCQkgbXVsX3Np emUoc2l6ZW9mKGludCksCi0JCQkJCQkJCQkJICBQUk9DQVJSQVlfTUFYUFJPQ1MpKSwKLQkJ CQkJCSZmb3VuZCk7Ci0KLQlpZiAoIWZvdW5kKQotCXsKLQkJLyoKLQkJICogV2UncmUgdGhl IGZpcnN0IC0gaW5pdGlhbGl6ZS4KLQkJICovCi0JCXByb2NBcnJheS0+bnVtUHJvY3MgPSAw OwotCQlwcm9jQXJyYXktPm1heFByb2NzID0gUFJPQ0FSUkFZX01BWFBST0NTOwotCQlwcm9j QXJyYXktPm1heEtub3duQXNzaWduZWRYaWRzID0gVE9UQUxfTUFYX0NBQ0hFRF9TVUJYSURT OwotCQlwcm9jQXJyYXktPm51bUtub3duQXNzaWduZWRYaWRzID0gMDsKLQkJcHJvY0FycmF5 LT50YWlsS25vd25Bc3NpZ25lZFhpZHMgPSAwOwotCQlwcm9jQXJyYXktPmhlYWRLbm93bkFz c2lnbmVkWGlkcyA9IDA7Ci0JCXByb2NBcnJheS0+bGFzdE92ZXJmbG93ZWRYaWQgPSBJbnZh bGlkVHJhbnNhY3Rpb25JZDsKLQkJcHJvY0FycmF5LT5yZXBsaWNhdGlvbl9zbG90X3htaW4g PSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKLQkJcHJvY0FycmF5LT5yZXBsaWNhdGlvbl9zbG90 X2NhdGFsb2dfeG1pbiA9IEludmFsaWRUcmFuc2FjdGlvbklkOwotCQlUcmFuc2FtVmFyaWFi bGVzLT54YWN0Q29tcGxldGlvbkNvdW50ID0gMTsKLQl9CisJcHJvY0FycmF5LT5udW1Qcm9j cyA9IDA7CisJcHJvY0FycmF5LT5tYXhQcm9jcyA9IFBST0NBUlJBWV9NQVhQUk9DUzsKKwlw cm9jQXJyYXktPm1heEtub3duQXNzaWduZWRYaWRzID0gVE9UQUxfTUFYX0NBQ0hFRF9TVUJY SURTOworCXByb2NBcnJheS0+bnVtS25vd25Bc3NpZ25lZFhpZHMgPSAwOworCXByb2NBcnJh eS0+dGFpbEtub3duQXNzaWduZWRYaWRzID0gMDsKKwlwcm9jQXJyYXktPmhlYWRLbm93bkFz c2lnbmVkWGlkcyA9IDA7CisJcHJvY0FycmF5LT5sYXN0T3ZlcmZsb3dlZFhpZCA9IEludmFs aWRUcmFuc2FjdGlvbklkOworCXByb2NBcnJheS0+cmVwbGljYXRpb25fc2xvdF94bWluID0g SW52YWxpZFRyYW5zYWN0aW9uSWQ7CisJcHJvY0FycmF5LT5yZXBsaWNhdGlvbl9zbG90X2Nh dGFsb2dfeG1pbiA9IEludmFsaWRUcmFuc2FjdGlvbklkOworCVRyYW5zYW1WYXJpYWJsZXMt PnhhY3RDb21wbGV0aW9uQ291bnQgPSAxOwogCiAJYWxsUHJvY3MgPSBQcm9jR2xvYmFsLT5h bGxQcm9jczsKK30KIAotCS8qIENyZWF0ZSBvciBhdHRhY2ggdG8gdGhlIEtub3duQXNzaWdu ZWRYaWRzIGFycmF5cyB0b28sIGlmIG5lZWRlZCAqLwotCWlmIChFbmFibGVIb3RTdGFuZGJ5 KQotCXsKLQkJS25vd25Bc3NpZ25lZFhpZHMgPSAoVHJhbnNhY3Rpb25JZCAqKQotCQkJU2ht ZW1Jbml0U3RydWN0KCJLbm93bkFzc2lnbmVkWGlkcyIsCi0JCQkJCQkJbXVsX3NpemUoc2l6 ZW9mKFRyYW5zYWN0aW9uSWQpLAotCQkJCQkJCQkJIFRPVEFMX01BWF9DQUNIRURfU1VCWElE UyksCi0JCQkJCQkJJmZvdW5kKTsKLQkJS25vd25Bc3NpZ25lZFhpZHNWYWxpZCA9IChib29s ICopCi0JCQlTaG1lbUluaXRTdHJ1Y3QoIktub3duQXNzaWduZWRYaWRzVmFsaWQiLAotCQkJ CQkJCW11bF9zaXplKHNpemVvZihib29sKSwgVE9UQUxfTUFYX0NBQ0hFRF9TVUJYSURTKSwK LQkJCQkJCQkmZm91bmQpOwotCX0KK3N0YXRpYyB2b2lkCitQcm9jQXJyYXlTaG1lbUF0dGFj aCh2b2lkICphcmcpCit7CisJYWxsUHJvY3MgPSBQcm9jR2xvYmFsLT5hbGxQcm9jczsKIH0K IAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwu YyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3Byb2NzaWduYWwuYwppbmRleCBmMWFiM2Fh M2ZlMC4uYWRlYmYwZTc4OTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBj L3Byb2NzaWduYWwuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9wcm9jc2lnbmFs LmMKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL3NobWVtLmgiCiAjaW5j bHVkZSAic3RvcmFnZS9zaW52YWwuaCIKICNpbmNsdWRlICJzdG9yYWdlL3NtZ3IuaCIKKyNp bmNsdWRlICJzdG9yYWdlL3N1YnN5c3RlbXMuaCIKICNpbmNsdWRlICJ0Y29wL3Rjb3Bwcm90 LmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1dGlscy93YWl0 X2V2ZW50LmgiCkBAIC0xMDYsNyArMTA3LDE2IEBAIHN0cnVjdCBQcm9jU2lnbmFsSGVhZGVy CiAjZGVmaW5lIEJBUlJJRVJfQ0xFQVJfQklUKGZsYWdzLCB0eXBlKSBcCiAJKChmbGFncykg Jj0gfigoKHVpbnQzMikgMSkgPDwgKHVpbnQzMikgKHR5cGUpKSkKIAorc3RhdGljIHZvaWQg UHJvY1NpZ25hbFNobWVtUmVxdWVzdCh2b2lkICphcmcpOworc3RhdGljIHZvaWQgUHJvY1Np Z25hbFNobWVtSW5pdCh2b2lkICphcmcpOworCitjb25zdCBTaG1lbUNhbGxiYWNrcyBQcm9j U2lnbmFsU2htZW1DYWxsYmFja3MgPSB7CisJLnJlcXVlc3RfZm4gPSBQcm9jU2lnbmFsU2ht ZW1SZXF1ZXN0LAorCS5pbml0X2ZuID0gUHJvY1NpZ25hbFNobWVtSW5pdCwKK307CisKIE5P Tl9FWEVDX1NUQVRJQyBQcm9jU2lnbmFsSGVhZGVyICpQcm9jU2lnbmFsID0gTlVMTDsKKwog c3RhdGljIFByb2NTaWduYWxTbG90ICpNeVByb2NTaWduYWxTbG90ID0gTlVMTDsKIAogc3Rh dGljIGJvb2wgQ2hlY2tQcm9jU2lnbmFsKFByb2NTaWduYWxSZWFzb24gcmVhc29uKTsKQEAg LTExNCw1MSArMTI0LDM5IEBAIHN0YXRpYyB2b2lkIENsZWFudXBQcm9jU2lnbmFsU3RhdGUo aW50IHN0YXR1cywgRGF0dW0gYXJnKTsKIHN0YXRpYyB2b2lkIFJlc2V0UHJvY1NpZ25hbEJh cnJpZXJCaXRzKHVpbnQzMiBmbGFncyk7CiAKIC8qCi0gKiBQcm9jU2lnbmFsU2htZW1TaXpl Ci0gKgkJQ29tcHV0ZSBzcGFjZSBuZWVkZWQgZm9yIFByb2NTaWduYWwncyBzaGFyZWQgbWVt b3J5CisgKiBQcm9jU2lnbmFsU2htZW1SZXF1ZXN0CisgKgkJUmVnaXN0ZXIgUHJvY1NpZ25h bCdzIHNoYXJlZCBtZW1vcnkgbmVlZHMgYXQgcG9zdG1hc3RlciBzdGFydHVwCiAgKi8KLVNp emUKLVByb2NTaWduYWxTaG1lbVNpemUodm9pZCkKK3N0YXRpYyB2b2lkCitQcm9jU2lnbmFs U2htZW1SZXF1ZXN0KHZvaWQgKmFyZykKIHsKIAlTaXplCQlzaXplOwogCiAJc2l6ZSA9IG11 bF9zaXplKE51bVByb2NTaWduYWxTbG90cywgc2l6ZW9mKFByb2NTaWduYWxTbG90KSk7CiAJ c2l6ZSA9IGFkZF9zaXplKHNpemUsIG9mZnNldG9mKFByb2NTaWduYWxIZWFkZXIsIHBzaF9z bG90KSk7Ci0JcmV0dXJuIHNpemU7CisKKwlTaG1lbVJlcXVlc3RTdHJ1Y3QoLm5hbWUgPSAi UHJvY1NpZ25hbCIsCisJCQkJCSAgIC5zaXplID0gc2l6ZSwKKwkJCQkJICAgLnB0ciA9ICh2 b2lkICoqKSAmUHJvY1NpZ25hbCwKKwkJKTsKIH0KIAotLyoKLSAqIFByb2NTaWduYWxTaG1l bUluaXQKLSAqCQlBbGxvY2F0ZSBhbmQgaW5pdGlhbGl6ZSBQcm9jU2lnbmFsJ3Mgc2hhcmVk IG1lbW9yeQotICovCi12b2lkCi1Qcm9jU2lnbmFsU2htZW1Jbml0KHZvaWQpCitzdGF0aWMg dm9pZAorUHJvY1NpZ25hbFNobWVtSW5pdCh2b2lkICphcmcpCiB7Ci0JU2l6ZQkJc2l6ZSA9 IFByb2NTaWduYWxTaG1lbVNpemUoKTsKLQlib29sCQlmb3VuZDsKKwlwZ19hdG9taWNfaW5p dF91NjQoJlByb2NTaWduYWwtPnBzaF9iYXJyaWVyR2VuZXJhdGlvbiwgMCk7CiAKLQlQcm9j U2lnbmFsID0gKFByb2NTaWduYWxIZWFkZXIgKikKLQkJU2htZW1Jbml0U3RydWN0KCJQcm9j U2lnbmFsIiwgc2l6ZSwgJmZvdW5kKTsKLQotCS8qIElmIHdlJ3JlIGZpcnN0LCBpbml0aWFs aXplLiAqLwotCWlmICghZm91bmQpCisJZm9yIChpbnQgaSA9IDA7IGkgPCBOdW1Qcm9jU2ln bmFsU2xvdHM7ICsraSkKIAl7Ci0JCWludAkJCWk7Ci0KLQkJcGdfYXRvbWljX2luaXRfdTY0 KCZQcm9jU2lnbmFsLT5wc2hfYmFycmllckdlbmVyYXRpb24sIDApOworCQlQcm9jU2lnbmFs U2xvdCAqc2xvdCA9ICZQcm9jU2lnbmFsLT5wc2hfc2xvdFtpXTsKIAotCQlmb3IgKGkgPSAw OyBpIDwgTnVtUHJvY1NpZ25hbFNsb3RzOyArK2kpCi0JCXsKLQkJCVByb2NTaWduYWxTbG90 ICpzbG90ID0gJlByb2NTaWduYWwtPnBzaF9zbG90W2ldOwotCi0JCQlTcGluTG9ja0luaXQo JnNsb3QtPnBzc19tdXRleCk7Ci0JCQlwZ19hdG9taWNfaW5pdF91MzIoJnNsb3QtPnBzc19w aWQsIDApOwotCQkJc2xvdC0+cHNzX2NhbmNlbF9rZXlfbGVuID0gMDsKLQkJCU1lbVNldChz bG90LT5wc3Nfc2lnbmFsRmxhZ3MsIDAsIHNpemVvZihzbG90LT5wc3Nfc2lnbmFsRmxhZ3Mp KTsKLQkJCXBnX2F0b21pY19pbml0X3U2NCgmc2xvdC0+cHNzX2JhcnJpZXJHZW5lcmF0aW9u LCBQR19VSU5UNjRfTUFYKTsKLQkJCXBnX2F0b21pY19pbml0X3UzMigmc2xvdC0+cHNzX2Jh cnJpZXJDaGVja01hc2ssIDApOwotCQkJQ29uZGl0aW9uVmFyaWFibGVJbml0KCZzbG90LT5w c3NfYmFycmllckNWKTsKLQkJfQorCQlTcGluTG9ja0luaXQoJnNsb3QtPnBzc19tdXRleCk7 CisJCXBnX2F0b21pY19pbml0X3UzMigmc2xvdC0+cHNzX3BpZCwgMCk7CisJCXNsb3QtPnBz c19jYW5jZWxfa2V5X2xlbiA9IDA7CisJCU1lbVNldChzbG90LT5wc3Nfc2lnbmFsRmxhZ3Ms IDAsIHNpemVvZihzbG90LT5wc3Nfc2lnbmFsRmxhZ3MpKTsKKwkJcGdfYXRvbWljX2luaXRf dTY0KCZzbG90LT5wc3NfYmFycmllckdlbmVyYXRpb24sIFBHX1VJTlQ2NF9NQVgpOworCQlw Z19hdG9taWNfaW5pdF91MzIoJnNsb3QtPnBzc19iYXJyaWVyQ2hlY2tNYXNrLCAwKTsKKwkJ Q29uZGl0aW9uVmFyaWFibGVJbml0KCZzbG90LT5wc3NfYmFycmllckNWKTsKIAl9CiB9CiAK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NpbnZhbGFkdC5jIGIvc3Jj L2JhY2tlbmQvc3RvcmFnZS9pcGMvc2ludmFsYWR0LmMKaW5kZXggYTdhN2NjNGYwYTkuLjM3 YTIxZmZhZjFhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaW52YWxh ZHQuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaW52YWxhZHQuYwpAQCAtMjUs NiArMjUsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2Uvc2htZW0uaCIKICNpbmNsdWRlICJzdG9y YWdlL3NpbnZhbGFkdC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc3Bpbi5oIgorI2luY2x1ZGUg InN0b3JhZ2Uvc3Vic3lzdGVtcy5oIgogCiAvKgogICogQ29uY2VwdHVhbGx5LCB0aGUgc2hh cmVkIGNhY2hlIGludmFsaWRhdGlvbiBtZXNzYWdlcyBhcmUgc3RvcmVkIGluIGFuCkBAIC0y MDUsNiArMjA2LDE0IEBAIHR5cGVkZWYgc3RydWN0IFNJU2VnCiAKIHN0YXRpYyBTSVNlZyAq c2htSW52YWxCdWZmZXI7CS8qIHBvaW50ZXIgdG8gdGhlIHNoYXJlZCBpbnZhbCBidWZmZXIg Ki8KIAorc3RhdGljIHZvaWQgU2hhcmVkSW52YWxTaG1lbVJlcXVlc3Qodm9pZCAqYXJnKTsK K3N0YXRpYyB2b2lkIFNoYXJlZEludmFsU2htZW1Jbml0KHZvaWQgKmFyZyk7CisKK2NvbnN0 IFNobWVtQ2FsbGJhY2tzIFNoYXJlZEludmFsU2htZW1DYWxsYmFja3MgPSB7CisJLnJlcXVl c3RfZm4gPSBTaGFyZWRJbnZhbFNobWVtUmVxdWVzdCwKKwkuaW5pdF9mbiA9IFNoYXJlZElu dmFsU2htZW1Jbml0LAorfTsKKwogCiBzdGF0aWMgTG9jYWxUcmFuc2FjdGlvbklkIG5leHRM b2NhbFRyYW5zYWN0aW9uSWQ7CiAKQEAgLTIxMiwxMCArMjIxLDExIEBAIHN0YXRpYyB2b2lk IENsZWFudXBJbnZhbGlkYXRpb25TdGF0ZShpbnQgc3RhdHVzLCBEYXR1bSBhcmcpOwogCiAK IC8qCi0gKiBTaGFyZWRJbnZhbFNobWVtU2l6ZSAtLS0gcmV0dXJuIHNoYXJlZC1tZW1vcnkg c3BhY2UgbmVlZGVkCisgKiBTaGFyZWRJbnZhbFNobWVtUmVxdWVzdAorICoJCVJlZ2lzdGVy IHNoYXJlZCBtZW1vcnkgbmVlZHMgZm9yIHRoZSBTSSBtZXNzYWdlIGJ1ZmZlcgogICovCi1T aXplCi1TaGFyZWRJbnZhbFNobWVtU2l6ZSh2b2lkKQorc3RhdGljIHZvaWQKK1NoYXJlZElu dmFsU2htZW1SZXF1ZXN0KHZvaWQgKmFyZykKIHsKIAlTaXplCQlzaXplOwogCkBAIC0yMjMs MjYgKzIzMywxOCBAQCBTaGFyZWRJbnZhbFNobWVtU2l6ZSh2b2lkKQogCXNpemUgPSBhZGRf c2l6ZShzaXplLCBtdWxfc2l6ZShzaXplb2YoUHJvY1N0YXRlKSwgTnVtUHJvY1N0YXRlU2xv dHMpKTsJLyogcHJvY1N0YXRlICovCiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIG11bF9zaXpl KHNpemVvZihpbnQpLCBOdW1Qcm9jU3RhdGVTbG90cykpOwkvKiBwZ3Byb2Nub3MgKi8KIAot CXJldHVybiBzaXplOworCVNobWVtUmVxdWVzdFN0cnVjdCgubmFtZSA9ICJzaG1JbnZhbEJ1 ZmZlciIsCisJCQkJCSAgIC5zaXplID0gc2l6ZSwKKwkJCQkJICAgLnB0ciA9ICh2b2lkICoq KSAmc2htSW52YWxCdWZmZXIsCisJCSk7CiB9CiAKLS8qCi0gKiBTaGFyZWRJbnZhbFNobWVt SW5pdAotICoJCUNyZWF0ZSBhbmQgaW5pdGlhbGl6ZSB0aGUgU0kgbWVzc2FnZSBidWZmZXIK LSAqLwotdm9pZAotU2hhcmVkSW52YWxTaG1lbUluaXQodm9pZCkKK3N0YXRpYyB2b2lkCitT aGFyZWRJbnZhbFNobWVtSW5pdCh2b2lkICphcmcpCiB7CiAJaW50CQkJaTsKLQlib29sCQlm b3VuZDsKLQotCS8qIEFsbG9jYXRlIHNwYWNlIGluIHNoYXJlZCBtZW1vcnkgKi8KLQlzaG1J bnZhbEJ1ZmZlciA9IChTSVNlZyAqKQotCQlTaG1lbUluaXRTdHJ1Y3QoInNobUludmFsQnVm ZmVyIiwgU2hhcmVkSW52YWxTaG1lbVNpemUoKSwgJmZvdW5kKTsKLQlpZiAoZm91bmQpCi0J CXJldHVybjsKIAotCS8qIENsZWFyIG1lc3NhZ2UgY291bnRlcnMsIHNhdmUgc2l6ZSBvZiBw cm9jU3RhdGUgYXJyYXksIGluaXQgc3BpbmxvY2sgKi8KKwkvKiBDbGVhciBtZXNzYWdlIGNv dW50ZXJzLCBpbml0IHNwaW5sb2NrICovCiAJc2htSW52YWxCdWZmZXItPm1pbk1zZ051bSA9 IDA7CiAJc2htSW52YWxCdWZmZXItPm1heE1zZ051bSA9IDA7CiAJc2htSW52YWxCdWZmZXIt Pm5leHRUaHJlc2hvbGQgPSBDTEVBTlVQX01JTjsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3N0b3JhZ2UvbG1nci9wcm9jLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJvYy5j CmluZGV4IDliODgwYTZhZjY1Li5hMDVjNTViNTM0ZSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvc3RvcmFnZS9sbWdyL3Byb2MuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3Iv cHJvYy5jCkBAIC01Miw2ICs1Miw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jc2lnbmFs LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zcGluLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zdGFu ZGJ5LmgiCisjaW5jbHVkZSAic3RvcmFnZS9zdWJzeXN0ZW1zLmgiCiAjaW5jbHVkZSAidXRp bHMvdGltZW91dC5oIgogI2luY2x1ZGUgInV0aWxzL3RpbWVzdGFtcC5oIgogI2luY2x1ZGUg InV0aWxzL3dhaXRfZXZlbnQuaCIKQEAgLTcwLDkgKzcxLDIzIEBAIFBHUFJPQwkgICAqTXlQ cm9jID0gTlVMTDsKIAogLyogUG9pbnRlcnMgdG8gc2hhcmVkLW1lbW9yeSBzdHJ1Y3R1cmVz ICovCiBQUk9DX0hEUiAgICpQcm9jR2xvYmFsID0gTlVMTDsKK3N0YXRpYyB2b2lkICpBbGxQ cm9jc1NobWVtUHRyOworc3RhdGljIHZvaWQgKkZhc3RQYXRoTG9ja0FycmF5U2htZW1QdHI7 CiBOT05fRVhFQ19TVEFUSUMgUEdQUk9DICpBdXhpbGlhcnlQcm9jcyA9IE5VTEw7CiBQR1BS T0MJICAgKlByZXBhcmVkWGFjdFByb2NzID0gTlVMTDsKIAorc3RhdGljIHZvaWQgUHJvY0ds b2JhbFNobWVtUmVxdWVzdCh2b2lkICphcmcpOworc3RhdGljIHZvaWQgUHJvY0dsb2JhbFNo bWVtSW5pdCh2b2lkICphcmcpOworCitjb25zdCBTaG1lbUNhbGxiYWNrcyBQcm9jR2xvYmFs U2htZW1DYWxsYmFja3MgPSB7CisJLnJlcXVlc3RfZm4gPSBQcm9jR2xvYmFsU2htZW1SZXF1 ZXN0LAorCS5pbml0X2ZuID0gUHJvY0dsb2JhbFNobWVtSW5pdCwKK307CisKK3N0YXRpYyB1 aW50MzIgVG90YWxQcm9jczsKK3N0YXRpYyBzaXplX3QgUHJvY0dsb2JhbEFsbFByb2NzU2ht ZW1TaXplOworc3RhdGljIHNpemVfdCBGYXN0UGF0aExvY2tBcnJheVNobWVtU2l6ZTsKKwog LyogSXMgYSBkZWFkbG9jayBjaGVjayBwZW5kaW5nPyAqLwogc3RhdGljIHZvbGF0aWxlIHNp Z19hdG9taWNfdCBnb3RfZGVhZGxvY2tfdGltZW91dDsKIApAQCAtODMsMzIgKzk4LDEyIEBA IHN0YXRpYyBEZWFkTG9ja1N0YXRlIENoZWNrRGVhZExvY2sodm9pZCk7CiAKIAogLyoKLSAq IFJlcG9ydCBzaGFyZWQtbWVtb3J5IHNwYWNlIG5lZWRlZCBieSBQR1BST0MuCisgKiBDYWxj dWxhdGUgc2hhcmVkLW1lbW9yeSBzcGFjZSBuZWVkZWQgYnkgRmFzdC1QYXRoIGxvY2tzLgog ICovCiBzdGF0aWMgU2l6ZQotUEdQcm9jU2htZW1TaXplKHZvaWQpCitDYWxjdWxhdGVGYXN0 UGF0aExvY2tTaG1lbVNpemUodm9pZCkKIHsKIAlTaXplCQlzaXplID0gMDsKLQlTaXplCQlU b3RhbFByb2NzID0KLQkJYWRkX3NpemUoTWF4QmFja2VuZHMsIGFkZF9zaXplKE5VTV9BVVhJ TElBUllfUFJPQ1MsIG1heF9wcmVwYXJlZF94YWN0cykpOwotCi0Jc2l6ZSA9IGFkZF9zaXpl KHNpemUsIG11bF9zaXplKFRvdGFsUHJvY3MsIHNpemVvZihQR1BST0MpKSk7Ci0Jc2l6ZSA9 IGFkZF9zaXplKHNpemUsIG11bF9zaXplKFRvdGFsUHJvY3MsIHNpemVvZigqUHJvY0dsb2Jh bC0+eGlkcykpKTsKLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgbXVsX3NpemUoVG90YWxQcm9j cywgc2l6ZW9mKCpQcm9jR2xvYmFsLT5zdWJ4aWRTdGF0ZXMpKSk7Ci0Jc2l6ZSA9IGFkZF9z aXplKHNpemUsIG11bF9zaXplKFRvdGFsUHJvY3MsIHNpemVvZigqUHJvY0dsb2JhbC0+c3Rh dHVzRmxhZ3MpKSk7Ci0KLQlyZXR1cm4gc2l6ZTsKLX0KLQotLyoKLSAqIFJlcG9ydCBzaGFy ZWQtbWVtb3J5IHNwYWNlIG5lZWRlZCBieSBGYXN0LVBhdGggbG9ja3MuCi0gKi8KLXN0YXRp YyBTaXplCi1GYXN0UGF0aExvY2tTaG1lbVNpemUodm9pZCkKLXsKLQlTaXplCQlzaXplID0g MDsKLQlTaXplCQlUb3RhbFByb2NzID0KLQkJYWRkX3NpemUoTWF4QmFja2VuZHMsIGFkZF9z aXplKE5VTV9BVVhJTElBUllfUFJPQ1MsIG1heF9wcmVwYXJlZF94YWN0cykpOwogCVNpemUJ CWZwTG9ja0JpdHNTaXplLAogCQkJCWZwUmVsSWRTaXplOwogCkBAIC0xMjgsMjYgKzEyMyw3 IEBAIEZhc3RQYXRoTG9ja1NobWVtU2l6ZSh2b2lkKQogfQogCiAvKgotICogUmVwb3J0IHNo YXJlZC1tZW1vcnkgc3BhY2UgbmVlZGVkIGJ5IEluaXRQcm9jR2xvYmFsLgotICovCi1TaXpl Ci1Qcm9jR2xvYmFsU2htZW1TaXplKHZvaWQpCi17Ci0JU2l6ZQkJc2l6ZSA9IDA7Ci0KLQkv KiBQcm9jR2xvYmFsICovCi0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIHNpemVvZihQUk9DX0hE UikpOwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBzaXplb2Yoc2xvY2tfdCkpOwotCi0Jc2l6 ZSA9IGFkZF9zaXplKHNpemUsIFBHU2VtYXBob3JlU2htZW1TaXplKFByb2NHbG9iYWxTZW1h cygpKSk7Ci0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIFBHUHJvY1NobWVtU2l6ZSgpKTsKLQlz aXplID0gYWRkX3NpemUoc2l6ZSwgRmFzdFBhdGhMb2NrU2htZW1TaXplKCkpOwotCi0JcmV0 dXJuIHNpemU7Ci19Ci0KLS8qCi0gKiBSZXBvcnQgbnVtYmVyIG9mIHNlbWFwaG9yZXMgbmVl ZGVkIGJ5IEluaXRQcm9jR2xvYmFsLgorICogUmVwb3J0IG51bWJlciBvZiBzZW1hcGhvcmVz IG5lZWRlZCBieSBQcm9jR2xvYmFsU2htZW1Jbml0LgogICovCiBpbnQKIFByb2NHbG9iYWxT ZW1hcyh2b2lkKQpAQCAtMTYwLDcgKzEzNiw2NyBAQCBQcm9jR2xvYmFsU2VtYXModm9pZCkK IH0KIAogLyoKLSAqIEluaXRQcm9jR2xvYmFsIC0KKyAqIFByb2NHbG9iYWxTaG1lbVJlcXVl c3QKKyAqCSAgUmVnaXN0ZXIgc2hhcmVkIG1lbW9yeSBuZWVkcy4KKyAqCisgKiBUaGlzIGlz IGNhbGxlZCBkdXJpbmcgcG9zdG1hc3RlciBvciBzdGFuZGFsb25lIGJhY2tlbmQgc3RhcnR1 cCwgYW5kIGFsc28KKyAqIGR1cmluZyBiYWNrZW5kIHN0YXJ0dXAgaW4gRVhFQ19CQUNLRU5E IG1vZGUuCisgKi8KK3N0YXRpYyB2b2lkCitQcm9jR2xvYmFsU2htZW1SZXF1ZXN0KHZvaWQg KmFyZykKK3sKKwlTaXplCQlzaXplOworCisJLyoKKwkgKiBSZXNlcnZlIGFsbCB0aGUgUEdQ Uk9DIHN0cnVjdHVyZXMgd2UnbGwgbmVlZC4gIFRoZXJlIGFyZSBzaXggc2VwYXJhdGUKKwkg KiBjb25zdW1lcnM6ICgxKSBub3JtYWwgYmFja2VuZHMsICgyKSBhdXRvdmFjdXVtIHdvcmtl cnMgYW5kIHNwZWNpYWwKKwkgKiB3b3JrZXJzLCAoMykgYmFja2dyb3VuZCB3b3JrZXJzLCAo NCkgd2Fsc2VuZGVycywgKDUpIGF1eGlsaWFyeQorCSAqIHByb2Nlc3NlcywgYW5kICg2KSBw cmVwYXJlZCB0cmFuc2FjdGlvbnMuICAoRm9yIGxhcmdlbHktaGlzdG9yaWNhbAorCSAqIHJl YXNvbnMsIHdlIGNvbWJpbmUgYXV0b3ZhY3V1bSBhbmQgc3BlY2lhbCB3b3JrZXJzIGludG8g b25lIGNhdGVnb3J5CisJICogd2l0aCBhIHNpbmdsZSBmcmVlbGlzdC4pICBFYWNoIFBHUFJP QyBzdHJ1Y3R1cmUgaXMgZGVkaWNhdGVkIHRvIGV4YWN0bHkKKwkgKiBvbmUgb2YgdGhlc2Ug cHVycG9zZXMsIGFuZCB0aGV5IGRvIG5vdCBtb3ZlIGJldHdlZW4gZ3JvdXBzLgorCSAqLwor CVRvdGFsUHJvY3MgPQorCQlhZGRfc2l6ZShNYXhCYWNrZW5kcywgYWRkX3NpemUoTlVNX0FV WElMSUFSWV9QUk9DUywgbWF4X3ByZXBhcmVkX3hhY3RzKSk7CisKKwlzaXplID0gMDsKKwlz aXplID0gYWRkX3NpemUoc2l6ZSwgbXVsX3NpemUoVG90YWxQcm9jcywgc2l6ZW9mKFBHUFJP QykpKTsKKwlzaXplID0gYWRkX3NpemUoc2l6ZSwgbXVsX3NpemUoVG90YWxQcm9jcywgc2l6 ZW9mKCpQcm9jR2xvYmFsLT54aWRzKSkpOworCXNpemUgPSBhZGRfc2l6ZShzaXplLCBtdWxf c2l6ZShUb3RhbFByb2NzLCBzaXplb2YoKlByb2NHbG9iYWwtPnN1YnhpZFN0YXRlcykpKTsK KwlzaXplID0gYWRkX3NpemUoc2l6ZSwgbXVsX3NpemUoVG90YWxQcm9jcywgc2l6ZW9mKCpQ cm9jR2xvYmFsLT5zdGF0dXNGbGFncykpKTsKKwlQcm9jR2xvYmFsQWxsUHJvY3NTaG1lbVNp emUgPSBzaXplOworCVNobWVtUmVxdWVzdFN0cnVjdCgubmFtZSA9ICJQR1BST0Mgc3RydWN0 dXJlcyIsCisJCQkJCSAgIC5zaXplID0gUHJvY0dsb2JhbEFsbFByb2NzU2htZW1TaXplLAor CQkJCQkgICAucHRyID0gJkFsbFByb2NzU2htZW1QdHIsCisJCSk7CisKKwlpZiAoIUlzVW5k ZXJQb3N0bWFzdGVyKQorCQlzaXplID0gRmFzdFBhdGhMb2NrQXJyYXlTaG1lbVNpemUgPSBD YWxjdWxhdGVGYXN0UGF0aExvY2tTaG1lbVNpemUoKTsKKwllbHNlCisJCXNpemUgPSBTSE1F TV9BVFRBQ0hfVU5LTk9XTl9TSVpFOworCVNobWVtUmVxdWVzdFN0cnVjdCgubmFtZSA9ICJG YXN0LVBhdGggTG9jayBBcnJheSIsCisJCQkJCSAgIC5zaXplID0gc2l6ZSwKKwkJCQkJICAg LnB0ciA9ICZGYXN0UGF0aExvY2tBcnJheVNobWVtUHRyLAorCQkpOworCisJLyoKKwkgKiBQ cm9jR2xvYmFsIGlzIHJlZ2lzdGVyZWQgaGVyZSBpbiAucHRyIGFzIHVzdWFsLCBidXQgaXQg bmVlZHMgdG8gYmUKKwkgKiBwcm9wYWdhdGVkIHNwZWNpYWxseSBpbiBFWEVDX0JBQ0tFTkQg bW9kZSwgYmVjYXVzZSBQcm9jR2xvYmFsIG5lZWRzIHRvCisJICogYmUgYWNjZXNzZWQgZWFy bHkgYXQgYmFja2VuZCBzdGFydHVwLCBiZWZvcmUgU2htZW1BdHRhY2hSZXF1ZXN0ZWQoKSBo YXMKKwkgKiBiZWVuIGNhbGxlZC4KKwkgKi8KKwlTaG1lbVJlcXVlc3RTdHJ1Y3QoLm5hbWUg PSAiUHJvYyBIZWFkZXIiLAorCQkJCQkgICAuc2l6ZSA9IHNpemVvZihQUk9DX0hEUiksCisJ CQkJCSAgIC5wdHIgPSAodm9pZCAqKikgJlByb2NHbG9iYWwsCisJCSk7CisKKwkvKiBMZXQg dGhlIHNlbWFwaG9yZSBpbXBsZW1lbnRhdGlvbiByZWdpc3RlciBpdHMgc2hhcmVkIG1lbW9y eSBuZWVkcyAqLworCVBHU2VtYXBob3JlU2htZW1SZXF1ZXN0KFByb2NHbG9iYWxTZW1hcygp KTsKK30KKworCisvKgorICogUHJvY0dsb2JhbFNobWVtSW5pdCAtCiAgKgkgIEluaXRpYWxp emUgdGhlIGdsb2JhbCBwcm9jZXNzIHRhYmxlIGR1cmluZyBwb3N0bWFzdGVyIG9yIHN0YW5k YWxvbmUKICAqCSAgYmFja2VuZCBzdGFydHVwLgogICoKQEAgLTE3OSwzNiArMjE1LDIzIEBA IFByb2NHbG9iYWxTZW1hcyh2b2lkKQogICoJICBBbm90aGVyIHJlYXNvbiBmb3IgY3JlYXRp bmcgc2VtYXBob3JlcyBoZXJlIGlzIHRoYXQgdGhlIHNlbWFwaG9yZQogICoJICBpbXBsZW1l bnRhdGlvbiB0eXBpY2FsbHkgcmVxdWlyZXMgdXMgdG8gY3JlYXRlIHNlbWFwaG9yZXMgaW4g dGhlCiAgKgkgIHBvc3RtYXN0ZXIsIG5vdCBpbiBiYWNrZW5kcy4KLSAqCi0gKiBOb3RlOiB0 aGlzIGlzIE5PVCBjYWxsZWQgYnkgaW5kaXZpZHVhbCBiYWNrZW5kcyB1bmRlciBhIHBvc3Rt YXN0ZXIsCi0gKiBub3QgZXZlbiBpbiB0aGUgRVhFQ19CQUNLRU5EIGNhc2UuICBUaGUgUHJv Y0dsb2JhbCBhbmQgQXV4aWxpYXJ5UHJvY3MKLSAqIHBvaW50ZXJzIG11c3QgYmUgcHJvcGFn YXRlZCBzcGVjaWFsbHkgZm9yIEVYRUNfQkFDS0VORCBvcGVyYXRpb24uCiAgKi8KLXZvaWQK LUluaXRQcm9jR2xvYmFsKHZvaWQpCitzdGF0aWMgdm9pZAorUHJvY0dsb2JhbFNobWVtSW5p dCh2b2lkICphcmcpCiB7CisJY2hhcgkgICAqcHRyOworCXNpemVfdAkJcmVxdWVzdFNpemU7 CiAJUEdQUk9DCSAgICpwcm9jczsKIAlpbnQJCQlpLAogCQkJCWo7Ci0JYm9vbAkJZm91bmQ7 Ci0JdWludDMyCQlUb3RhbFByb2NzID0gTWF4QmFja2VuZHMgKyBOVU1fQVVYSUxJQVJZX1BS T0NTICsgbWF4X3ByZXBhcmVkX3hhY3RzOwogCiAJLyogVXNlZCBmb3Igc2V0dXAgb2YgcGVy LWJhY2tlbmQgZmFzdC1wYXRoIHNsb3RzLiAqLwogCWNoYXIJICAgKmZwUHRyLAogCQkJICAg KmZwRW5kUHRyIFBHX1VTRURfRk9SX0FTU0VSVFNfT05MWTsKIAlTaXplCQlmcExvY2tCaXRz U2l6ZSwKIAkJCQlmcFJlbElkU2l6ZTsKLQlTaXplCQlyZXF1ZXN0U2l6ZTsKLQljaGFyCSAg ICpwdHI7CiAKLQkvKiBDcmVhdGUgdGhlIFByb2NHbG9iYWwgc2hhcmVkIHN0cnVjdHVyZSAq LwotCVByb2NHbG9iYWwgPSAoUFJPQ19IRFIgKikKLQkJU2htZW1Jbml0U3RydWN0KCJQcm9j IEhlYWRlciIsIHNpemVvZihQUk9DX0hEUiksICZmb3VuZCk7Ci0JQXNzZXJ0KCFmb3VuZCk7 Ci0KLQkvKgotCSAqIEluaXRpYWxpemUgdGhlIGRhdGEgc3RydWN0dXJlcy4KLQkgKi8KKwlB c3NlcnQoUHJvY0dsb2JhbCk7CiAJUHJvY0dsb2JhbC0+c3BpbnNfcGVyX2RlbGF5ID0gREVG QVVMVF9TUElOU19QRVJfREVMQVk7CiAJU3BpbkxvY2tJbml0KCZQcm9jR2xvYmFsLT5mcmVl UHJvY3NMb2NrKTsKIAlkbGlzdF9pbml0KCZQcm9jR2xvYmFsLT5mcmVlUHJvY3MpOwpAQCAt MjIxLDIzICsyNDQsMTEgQEAgSW5pdFByb2NHbG9iYWwodm9pZCkKIAlwZ19hdG9taWNfaW5p dF91MzIoJlByb2NHbG9iYWwtPnByb2NBcnJheUdyb3VwRmlyc3QsIElOVkFMSURfUFJPQ19O VU1CRVIpOwogCXBnX2F0b21pY19pbml0X3UzMigmUHJvY0dsb2JhbC0+Y2xvZ0dyb3VwRmly c3QsIElOVkFMSURfUFJPQ19OVU1CRVIpOwogCi0JLyoKLQkgKiBDcmVhdGUgYW5kIGluaXRp YWxpemUgYWxsIHRoZSBQR1BST0Mgc3RydWN0dXJlcyB3ZSdsbCBuZWVkLiAgVGhlcmUgYXJl Ci0JICogc2l4IHNlcGFyYXRlIGNvbnN1bWVyczogKDEpIG5vcm1hbCBiYWNrZW5kcywgKDIp IGF1dG92YWN1dW0gd29ya2VycyBhbmQKLQkgKiBzcGVjaWFsIHdvcmtlcnMsICgzKSBiYWNr Z3JvdW5kIHdvcmtlcnMsICg0KSB3YWxzZW5kZXJzLCAoNSkgYXV4aWxpYXJ5Ci0JICogcHJv Y2Vzc2VzLCBhbmQgKDYpIHByZXBhcmVkIHRyYW5zYWN0aW9ucy4gIChGb3IgbGFyZ2VseS1o aXN0b3JpY2FsCi0JICogcmVhc29ucywgd2UgY29tYmluZSBhdXRvdmFjdXVtIGFuZCBzcGVj aWFsIHdvcmtlcnMgaW50byBvbmUgY2F0ZWdvcnkKLQkgKiB3aXRoIGEgc2luZ2xlIGZyZWVs aXN0LikgIEVhY2ggUEdQUk9DIHN0cnVjdHVyZSBpcyBkZWRpY2F0ZWQgdG8gZXhhY3RseQot CSAqIG9uZSBvZiB0aGVzZSBwdXJwb3NlcywgYW5kIHRoZXkgZG8gbm90IG1vdmUgYmV0d2Vl biBncm91cHMuCi0JICovCi0JcmVxdWVzdFNpemUgPSBQR1Byb2NTaG1lbVNpemUoKTsKLQot CXB0ciA9IFNobWVtSW5pdFN0cnVjdCgiUEdQUk9DIHN0cnVjdHVyZXMiLAotCQkJCQkJICBy ZXF1ZXN0U2l6ZSwKLQkJCQkJCSAgJmZvdW5kKTsKLQorCXB0ciA9IEFsbFByb2NzU2htZW1Q dHI7CisJcmVxdWVzdFNpemUgPSBQcm9jR2xvYmFsQWxsUHJvY3NTaG1lbVNpemU7CiAJTWVt U2V0KHB0ciwgMCwgcmVxdWVzdFNpemUpOwogCisJLyogQ2FydmUgb3V0IHRoZSBhbGxQcm9j cyBhcnJheSBmcm9tIHRoZSBzaGFyZWQgbWVtb3J5IGFyZWEgKi8KIAlwcm9jcyA9IChQR1BS T0MgKikgcHRyOwogCXB0ciA9IHB0ciArIFRvdGFsUHJvY3MgKiBzaXplb2YoUEdQUk9DKTsK IApAQCAtMjQ2LDcgKzI1Nyw3IEBAIEluaXRQcm9jR2xvYmFsKHZvaWQpCiAJUHJvY0dsb2Jh bC0+YWxsUHJvY0NvdW50ID0gTWF4QmFja2VuZHMgKyBOVU1fQVVYSUxJQVJZX1BST0NTOwog CiAJLyoKLQkgKiBBbGxvY2F0ZSBhcnJheXMgbWlycm9yaW5nIFBHUFJPQyBmaWVsZHMgaW4g YSBkZW5zZSBtYW5uZXIuIFNlZQorCSAqIENhcnZlIG91dCBhcnJheXMgbWlycm9yaW5nIFBH UFJPQyBmaWVsZHMgaW4gYSBkZW5zZSBtYW5uZXIuIFNlZQogCSAqIFBST0NfSERSLgogCSAq CiAJICogWFhYOiBJdCBtaWdodCBtYWtlIHNlbnNlIHRvIGluY3JlYXNlIHBhZGRpbmcgZm9y IHRoZXNlIGFycmF5cywgZ2l2ZW4KQEAgLTI2MSwzMCArMjcyLDI2IEBAIEluaXRQcm9jR2xv YmFsKHZvaWQpCiAJUHJvY0dsb2JhbC0+c3RhdHVzRmxhZ3MgPSAodWludDggKikgcHRyOwog CXB0ciA9IHB0ciArIChUb3RhbFByb2NzICogc2l6ZW9mKCpQcm9jR2xvYmFsLT5zdGF0dXNG bGFncykpOwogCi0JLyogbWFrZSBzdXJlIHdlciBkaWRuJ3Qgb3ZlcmZsb3cgKi8KKwkvKiBt YWtlIHN1cmUgd2UgZGlkbid0IG92ZXJmbG93ICovCiAJQXNzZXJ0KChwdHIgPiAoY2hhciAq KSBwcm9jcykgJiYgKHB0ciA8PSAoY2hhciAqKSBwcm9jcyArIHJlcXVlc3RTaXplKSk7CiAK IAkvKgotCSAqIEFsbG9jYXRlIGFycmF5cyBmb3IgZmFzdC1wYXRoIGxvY2tzLiBUaG9zZSBh cmUgdmFyaWFibGUtbGVuZ3RoLCBzbworCSAqIEluaXRpYWxpemUgYXJyYXlzIGZvciBmYXN0 LXBhdGggbG9ja3MuIFRob3NlIGFyZSB2YXJpYWJsZS1sZW5ndGgsIHNvCiAJICogY2FuJ3Qg YmUgaW5jbHVkZWQgaW4gUEdQUk9DIGRpcmVjdGx5LiBXZSBhbGxvY2F0ZSBhIHNlcGFyYXRl IHBpZWNlIG9mCiAJICogc2hhcmVkIG1lbW9yeSBhbmQgdGhlbiBkaXZpZGUgdGhhdCBiZXR3 ZWVuIGJhY2tlbmRzLgogCSAqLwogCWZwTG9ja0JpdHNTaXplID0gTUFYQUxJR04oRmFzdFBh dGhMb2NrR3JvdXBzUGVyQmFja2VuZCAqIHNpemVvZih1aW50NjQpKTsKIAlmcFJlbElkU2l6 ZSA9IE1BWEFMSUdOKEZhc3RQYXRoTG9ja1Nsb3RzUGVyQmFja2VuZCgpICogc2l6ZW9mKE9p ZCkpOwogCi0JcmVxdWVzdFNpemUgPSBGYXN0UGF0aExvY2tTaG1lbVNpemUoKTsKLQotCWZw UHRyID0gU2htZW1Jbml0U3RydWN0KCJGYXN0LVBhdGggTG9jayBBcnJheSIsCi0JCQkJCQkJ cmVxdWVzdFNpemUsCi0JCQkJCQkJJmZvdW5kKTsKLQotCU1lbVNldChmcFB0ciwgMCwgcmVx dWVzdFNpemUpOworCWZwUHRyID0gRmFzdFBhdGhMb2NrQXJyYXlTaG1lbVB0cjsKKwlyZXF1 ZXN0U2l6ZSA9IEZhc3RQYXRoTG9ja0FycmF5U2htZW1TaXplOworCW1lbXNldChmcFB0ciwg MCwgcmVxdWVzdFNpemUpOwogCiAJLyogRm9yIGFzc2VydHMgY2hlY2tpbmcgd2UgZGlkIG5v dCBvdmVyZmxvdy4gKi8KIAlmcEVuZFB0ciA9IGZwUHRyICsgcmVxdWVzdFNpemU7CiAKLQkv KiBSZXNlcnZlIHNwYWNlIGZvciBzZW1hcGhvcmVzLiAqLwotCVBHUmVzZXJ2ZVNlbWFwaG9y ZXMoUHJvY0dsb2JhbFNlbWFzKCkpOworCS8qIEluaXRpYWxpemUgc2VtYXBob3JlcyAqLwor CVBHU2VtYXBob3JlSW5pdChQcm9jR2xvYmFsU2VtYXMoKSk7CiAKIAlmb3IgKGkgPSAwOyBp IDwgVG90YWxQcm9jczsgaSsrKQogCXsKQEAgLTQwNSw3ICs0MTIsNyBAQCBJbml0UHJvY2Vz cyh2b2lkKQogCiAJLyoKIAkgKiBEZWNpZGUgd2hpY2ggbGlzdCBzaG91bGQgc3VwcGx5IG91 ciBQR1BST0MuICBUaGlzIGxvZ2ljIG11c3QgbWF0Y2ggdGhlCi0JICogd2F5IHRoZSBmcmVl bGlzdHMgd2VyZSBjb25zdHJ1Y3RlZCBpbiBJbml0UHJvY0dsb2JhbCgpLgorCSAqIHdheSB0 aGUgZnJlZWxpc3RzIHdlcmUgY29uc3RydWN0ZWQgaW4gUHJvY0dsb2JhbFNobWVtSW5pdCgp LgogCSAqLwogCWlmIChBbUF1dG9WYWN1dW1Xb3JrZXJQcm9jZXNzKCkgfHwgQW1TcGVjaWFs V29ya2VyUHJvY2VzcygpKQogCQlwcm9jZ2xvYmFsbGlzdCA9ICZQcm9jR2xvYmFsLT5hdXRv dmFjRnJlZVByb2NzOwpAQCAtNDYwLDcgKzQ2Nyw3IEBAIEluaXRQcm9jZXNzKHZvaWQpCiAK IAkvKgogCSAqIEluaXRpYWxpemUgYWxsIGZpZWxkcyBvZiBNeVByb2MsIGV4Y2VwdCBmb3Ig dGhvc2UgcHJldmlvdXNseQotCSAqIGluaXRpYWxpemVkIGJ5IEluaXRQcm9jR2xvYmFsLgor CSAqIGluaXRpYWxpemVkIGJ5IFByb2NHbG9iYWxTaG1lbUluaXQuCiAJICovCiAJZGxpc3Rf bm9kZV9pbml0KCZNeVByb2MtPmZyZWVQcm9jc0xpbmspOwogCU15UHJvYy0+d2FpdFN0YXR1 cyA9IFBST0NfV0FJVF9TVEFUVVNfT0s7CkBAIC01OTMsNyArNjAwLDcgQEAgSW5pdFByb2Nl c3NQaGFzZTIodm9pZCkKICAqIFRoaXMgaXMgY2FsbGVkIGJ5IGJnd3JpdGVyIGFuZCBzaW1p bGFyIHByb2Nlc3NlcyBzbyB0aGF0IHRoZXkgd2lsbCBoYXZlIGEKICAqIE15UHJvYyB2YWx1 ZSB0aGF0J3MgcmVhbCBlbm91Z2ggdG8gbGV0IHRoZW0gd2FpdCBmb3IgTFdMb2Nrcy4gIFRo ZSBQR1BST0MKICAqIGFuZCBzZW1hIHRoYXQgYXJlIGFzc2lnbmVkIGFyZSBvbmUgb2YgdGhl IGV4dHJhIG9uZXMgY3JlYXRlZCBkdXJpbmcKLSAqIEluaXRQcm9jR2xvYmFsLgorICogUHJv Y0dsb2JhbFNobWVtSW5pdC4KICAqCiAgKiBBdXhpbGlhcnkgcHJvY2Vzc2VzIGFyZSBwcmVz ZW50bHkgbm90IGV4cGVjdGVkIHRvIHdhaXQgZm9yIHJlYWwgKGxvY2ttZ3IpCiAgKiBsb2Nr cywgc28gd2UgbmVlZCBub3Qgc2V0IHVwIHRoZSBkZWFkbG9jayBjaGVja2VyLiAgVGhleSBh cmUgbmV2ZXIgYWRkZWQKQEAgLTY2Miw3ICs2NjksNyBAQCBJbml0QXV4aWxpYXJ5UHJvY2Vz cyh2b2lkKQogCiAJLyoKIAkgKiBJbml0aWFsaXplIGFsbCBmaWVsZHMgb2YgTXlQcm9jLCBl eGNlcHQgZm9yIHRob3NlIHByZXZpb3VzbHkKLQkgKiBpbml0aWFsaXplZCBieSBJbml0UHJv Y0dsb2JhbC4KKwkgKiBpbml0aWFsaXplZCBieSBQcm9jR2xvYmFsU2htZW1Jbml0LgogCSAq LwogCWRsaXN0X25vZGVfaW5pdCgmTXlQcm9jLT5mcmVlUHJvY3NMaW5rKTsKIAlNeVByb2Mt PndhaXRTdGF0dXMgPSBQUk9DX1dBSVRfU1RBVFVTX09LOwpkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvdXRpbHMvaGFzaC9keW5haGFzaC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvaGFzaC9k eW5haGFzaC5jCmluZGV4IGNiOTVhZDRlZjJhLi4yMDYxMGY5NmU3YiAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvdXRpbHMvaGFzaC9keW5haGFzaC5jCisrKyBiL3NyYy9iYWNrZW5kL3V0 aWxzL2hhc2gvZHluYWhhc2guYwpAQCAtMzM4LDcgKzMzOCw4IEBAIHN0cmluZ19jb21wYXJl KGNvbnN0IGNoYXIgKmtleTEsIGNvbnN0IGNoYXIgKmtleTIsIFNpemUga2V5c2l6ZSkKICAq IHVuZGVyIGluZm8tPmhjeHQgcmF0aGVyIHRoYW4gdW5kZXIgVG9wTWVtb3J5Q29udGV4dDsg dGhlIGRlZmF1bHQKICAqIGJlaGF2aW9yIGlzIG9ubHkgc3VpdGFibGUgZm9yIHNlc3Npb24t bGlmZXNwYW4gaGFzaCB0YWJsZXMuCiAgKiBPdGhlciBmbGFncyBiaXRzIGFyZSBzcGVjaWFs LXB1cnBvc2UgYW5kIHNlbGRvbSB1c2VkLCBleGNlcHQgZm9yIHRob3NlCi0gKiBhc3NvY2lh dGVkIHdpdGggc2hhcmVkLW1lbW9yeSBoYXNoIHRhYmxlcywgZm9yIHdoaWNoIHNlZSBTaG1l bUluaXRIYXNoKCkuCisgKiBhc3NvY2lhdGVkIHdpdGggc2hhcmVkLW1lbW9yeSBoYXNoIHRh YmxlcywgZm9yIHdoaWNoIHNlZQorICogU2htZW1SZXF1ZXN0SGFzaCgpLgogICoKICAqIEZp ZWxkcyBpbiAqaW5mbyBhcmUgcmVhZCBvbmx5IHdoZW4gdGhlIGFzc29jaWF0ZWQgZmxhZ3Mg Yml0IGlzIHNldC4KICAqIEl0IGlzIG5vdCBuZWNlc3NhcnkgdG8gaW5pdGlhbGl6ZSBvdGhl ciBmaWVsZHMgb2YgKmluZm8uCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvdHJh bnNhbS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RyYW5zYW0uaAppbmRleCA2ZmE5MWJmY2Rj MC4uNTVhNGFiMjZiMzQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy90cmFuc2Ft LmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3RyYW5zYW0uaApAQCAtMzQ1LDggKzM0NSw2 IEBAIGV4dGVybiBUcmFuc2FjdGlvbklkIFRyYW5zYWN0aW9uSWRMYXRlc3QoVHJhbnNhY3Rp b25JZCBtYWlueGlkLAogZXh0ZXJuIFhMb2dSZWNQdHIgVHJhbnNhY3Rpb25JZEdldENvbW1p dExTTihUcmFuc2FjdGlvbklkIHhpZCk7CiAKIC8qIGluIHRyYW5zYW0vdmFyc3VwLmMgKi8K LWV4dGVybiBTaXplIFZhcnN1cFNobWVtU2l6ZSh2b2lkKTsKLWV4dGVybiB2b2lkIFZhcnN1 cFNobWVtSW5pdCh2b2lkKTsKIGV4dGVybiBGdWxsVHJhbnNhY3Rpb25JZCBHZXROZXdUcmFu c2FjdGlvbklkKGJvb2wgaXNTdWJYYWN0KTsKIGV4dGVybiB2b2lkIEFkdmFuY2VOZXh0RnVs bFRyYW5zYWN0aW9uSWRQYXN0WGlkKFRyYW5zYWN0aW9uSWQgeGlkKTsKIGV4dGVybiBGdWxs VHJhbnNhY3Rpb25JZCBSZWFkTmV4dEZ1bGxUcmFuc2FjdGlvbklkKHZvaWQpOwpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9kc20uaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uv ZHNtLmgKaW5kZXggNDA3NjU3ZGYzZmYuLjFiZGU3MWI0NDA2IDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9zdG9yYWdlL2RzbS5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvZHNtLmgK QEAgLTI2LDkgKzI2LDYgQEAgZXh0ZXJuIHZvaWQgZHNtX3Bvc3RtYXN0ZXJfc3RhcnR1cChQ R1NobWVtSGVhZGVyICopOwogZXh0ZXJuIHZvaWQgZHNtX2JhY2tlbmRfc2h1dGRvd24odm9p ZCk7CiBleHRlcm4gdm9pZCBkc21fZGV0YWNoX2FsbCh2b2lkKTsKIAotZXh0ZXJuIHNpemVf dCBkc21fZXN0aW1hdGVfc2l6ZSh2b2lkKTsKLWV4dGVybiB2b2lkIGRzbV9zaG1lbV9pbml0 KHZvaWQpOwotCiAjaWZkZWYgRVhFQ19CQUNLRU5ECiBleHRlcm4gdm9pZCBkc21fc2V0X2Nv bnRyb2xfaGFuZGxlKGRzbV9oYW5kbGUgaCk7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL3N0b3JhZ2UvZHNtX3JlZ2lzdHJ5LmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL2Rz bV9yZWdpc3RyeS5oCmluZGV4IDUwNmZhZTJjOWNhLi5hMjI2OWM4OWYwMSAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9kc21fcmVnaXN0cnkuaAorKysgYi9zcmMvaW5jbHVk ZS9zdG9yYWdlL2RzbV9yZWdpc3RyeS5oCkBAIC0yMiw3ICsyMiw1IEBAIGV4dGVybiBkc2Ff YXJlYSAqR2V0TmFtZWREU0EoY29uc3QgY2hhciAqbmFtZSwgYm9vbCAqZm91bmQpOwogZXh0 ZXJuIGRzaGFzaF90YWJsZSAqR2V0TmFtZWREU0hhc2goY29uc3QgY2hhciAqbmFtZSwKIAkJ CQkJCQkJCWNvbnN0IGRzaGFzaF9wYXJhbWV0ZXJzICpwYXJhbXMsCiAJCQkJCQkJCQlib29s ICpmb3VuZCk7Ci1leHRlcm4gU2l6ZSBEU01SZWdpc3RyeVNobWVtU2l6ZSh2b2lkKTsKLWV4 dGVybiB2b2lkIERTTVJlZ2lzdHJ5U2htZW1Jbml0KHZvaWQpOwogCiAjZW5kaWYJCQkJCQkJ LyogRFNNX1JFR0lTVFJZX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uv cGdfc2VtYS5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9wZ19zZW1hLmgKaW5kZXggNjZmYWNj NjkwN2EuLmZlNTBlZTUwNWJhIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3Bn X3NlbWEuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3BnX3NlbWEuaApAQCAtMzcsMTEg KzM3LDExIEBAIHR5cGVkZWYgSEFORExFIFBHU2VtYXBob3JlOwogI2VuZGlmCiAKIAotLyog UmVwb3J0IGFtb3VudCBvZiBzaGFyZWQgbWVtb3J5IG5lZWRlZCAqLwotZXh0ZXJuIFNpemUg UEdTZW1hcGhvcmVTaG1lbVNpemUoaW50IG1heFNlbWFzKTsKKy8qIFJlcXVlc3Qgc2hhcmVk IG1lbW9yeSBuZWVkZWQgZm9yIHNlbWFwaG9yZXMgKi8KK2V4dGVybiB2b2lkIFBHU2VtYXBo b3JlU2htZW1SZXF1ZXN0KGludCBtYXhTZW1hcyk7CiAKIC8qIE1vZHVsZSBpbml0aWFsaXph dGlvbiAoY2FsbGVkIGR1cmluZyBwb3N0bWFzdGVyIHN0YXJ0IG9yIHNobWVtIHJlaW5pdCkg Ki8KLWV4dGVybiB2b2lkIFBHUmVzZXJ2ZVNlbWFwaG9yZXMoaW50IG1heFNlbWFzKTsKK2V4 dGVybiB2b2lkIFBHU2VtYXBob3JlSW5pdChpbnQgbWF4U2VtYXMpOwogCiAvKiBBbGxvY2F0 ZSBhIFBHU2VtYXBob3JlIHN0cnVjdHVyZSB3aXRoIGluaXRpYWwgY291bnQgMSAqLwogZXh0 ZXJuIFBHU2VtYXBob3JlIFBHU2VtYXBob3JlQ3JlYXRlKHZvaWQpOwpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvc3RvcmFnZS9wbXNpZ25hbC5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9w bXNpZ25hbC5oCmluZGV4IDIwNmZiNzhmOGE1Li4wMDFlNmVlYTYxYyAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvc3RvcmFnZS9wbXNpZ25hbC5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3Jh Z2UvcG1zaWduYWwuaApAQCAtNjYsOCArNjYsNiBAQCBleHRlcm4gUEdETExJTVBPUlQgdm9s YXRpbGUgUE1TaWduYWxEYXRhICpQTVNpZ25hbFN0YXRlOwogLyoKICAqIHByb3RvdHlwZXMg Zm9yIGZ1bmN0aW9ucyBpbiBwbXNpZ25hbC5jCiAgKi8KLWV4dGVybiBTaXplIFBNU2lnbmFs U2htZW1TaXplKHZvaWQpOwotZXh0ZXJuIHZvaWQgUE1TaWduYWxTaG1lbUluaXQodm9pZCk7 CiBleHRlcm4gdm9pZCBTZW5kUG9zdG1hc3RlclNpZ25hbChQTVNpZ25hbFJlYXNvbiByZWFz b24pOwogZXh0ZXJuIGJvb2wgQ2hlY2tQb3N0bWFzdGVyU2lnbmFsKFBNU2lnbmFsUmVhc29u IHJlYXNvbik7CiBleHRlcm4gdm9pZCBTZXRRdWl0U2lnbmFsUmVhc29uKFF1aXRTaWduYWxS ZWFzb24gcmVhc29uKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvYy5o IGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9jLmgKaW5kZXggMjI4MjJmYzY4ZDcuLjNlMWQx ZmFkNWY5IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2MuaAorKysgYi9z cmMvaW5jbHVkZS9zdG9yYWdlL3Byb2MuaApAQCAtNTUyLDggKzU1Miw2IEBAIGV4dGVybiBQ R0RMTElNUE9SVCBQR1BST0MgKkF1eGlsaWFyeVByb2NzOwogICogRnVuY3Rpb24gUHJvdG90 eXBlcwogICovCiBleHRlcm4gaW50CVByb2NHbG9iYWxTZW1hcyh2b2lkKTsKLWV4dGVybiBT aXplIFByb2NHbG9iYWxTaG1lbVNpemUodm9pZCk7Ci1leHRlcm4gdm9pZCBJbml0UHJvY0ds b2JhbCh2b2lkKTsKIGV4dGVybiB2b2lkIEluaXRQcm9jZXNzKHZvaWQpOwogZXh0ZXJuIHZv aWQgSW5pdFByb2Nlc3NQaGFzZTIodm9pZCk7CiBleHRlcm4gdm9pZCBJbml0QXV4aWxpYXJ5 UHJvY2Vzcyh2b2lkKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY2Fy cmF5LmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NhcnJheS5oCmluZGV4IGFiZGYwMjFl NjZlLi5kNzE4YTViNTQyZiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9j YXJyYXkuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NhcnJheS5oCkBAIC0xOSw4 ICsxOSw2IEBACiAjaW5jbHVkZSAidXRpbHMvc25hcHNob3QuaCIKIAogCi1leHRlcm4gU2l6 ZSBQcm9jQXJyYXlTaG1lbVNpemUodm9pZCk7Ci1leHRlcm4gdm9pZCBQcm9jQXJyYXlTaG1l bUluaXQodm9pZCk7CiBleHRlcm4gdm9pZCBQcm9jQXJyYXlBZGQoUEdQUk9DICpwcm9jKTsK IGV4dGVybiB2b2lkIFByb2NBcnJheVJlbW92ZShQR1BST0MgKnByb2MsIFRyYW5zYWN0aW9u SWQgbGF0ZXN0WGlkKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcm9j c2lnbmFsLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3Byb2NzaWduYWwuaAppbmRleCBjYzRm MjZhYTMzZC4uN2Y4NTU5NzFiNWEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uv cHJvY3NpZ25hbC5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJvY3NpZ25hbC5oCkBA IC02Nyw5ICs2Nyw2IEBAIHR5cGVkZWYgZW51bQogLyoKICAqIHByb3RvdHlwZXMgZm9yIGZ1 bmN0aW9ucyBpbiBwcm9jc2lnbmFsLmMKICAqLwotZXh0ZXJuIFNpemUgUHJvY1NpZ25hbFNo bWVtU2l6ZSh2b2lkKTsKLWV4dGVybiB2b2lkIFByb2NTaWduYWxTaG1lbUluaXQodm9pZCk7 Ci0KIGV4dGVybiB2b2lkIFByb2NTaWduYWxJbml0KGNvbnN0IHVpbnQ4ICpjYW5jZWxfa2V5 LCBpbnQgY2FuY2VsX2tleV9sZW4pOwogZXh0ZXJuIGludAlTZW5kUHJvY1NpZ25hbChwaWRf dCBwaWQsIFByb2NTaWduYWxSZWFzb24gcmVhc29uLAogCQkJCQkJICAgUHJvY051bWJlciBw cm9jTnVtYmVyKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc2ludmFsYWR0 LmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3NpbnZhbGFkdC5oCmluZGV4IDEyMmRiY2RmMTlm Li4yMDhlYTlkMDUxZSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9zaW52YWxh ZHQuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3NpbnZhbGFkdC5oCkBAIC0yNyw4ICsy Nyw2IEBACiAvKgogICogcHJvdG90eXBlcyBmb3IgZnVuY3Rpb25zIGluIHNpbnZhbGFkdC5j CiAgKi8KLWV4dGVybiBTaXplIFNoYXJlZEludmFsU2htZW1TaXplKHZvaWQpOwotZXh0ZXJu IHZvaWQgU2hhcmVkSW52YWxTaG1lbUluaXQodm9pZCk7CiBleHRlcm4gdm9pZCBTaGFyZWRJ bnZhbEJhY2tlbmRJbml0KGJvb2wgc2VuZE9ubHkpOwogCiBleHRlcm4gdm9pZCBTSUluc2Vy dERhdGFFbnRyaWVzKGNvbnN0IFNoYXJlZEludmFsaWRhdGlvbk1lc3NhZ2UgKmRhdGEsIGlu dCBuKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc3Vic3lzdGVtbGlzdC5o IGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9zdWJzeXN0ZW1saXN0LmgKaW5kZXggZjBjZjAxZjVh ODUuLmQ2MmMyOWYxMzYxIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3N1YnN5 c3RlbWxpc3QuaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3N1YnN5c3RlbWxpc3QuaApA QCAtMjcsNCArMjcsMTkgQEAKICAqLwogUEdfU0hNRU1fU1VCU1lTVEVNKExXTG9ja0NhbGxi YWNrcykKIAotLyogVE9ETzogbm90aGluZyBlbHNlIGZvciBub3cgKi8KK1BHX1NITUVNX1NV QlNZU1RFTShkc21fc2htZW1fY2FsbGJhY2tzKQorUEdfU0hNRU1fU1VCU1lTVEVNKERTTVJl Z2lzdHJ5U2htZW1DYWxsYmFja3MpCisKKy8qIHhsb2csIGNsb2csIGFuZCBidWZmZXJzICov CitQR19TSE1FTV9TVUJTWVNURU0oVmFyc3VwU2htZW1DYWxsYmFja3MpCisKKy8qIHByb2Nl c3MgdGFibGUgKi8KK1BHX1NITUVNX1NVQlNZU1RFTShQcm9jR2xvYmFsU2htZW1DYWxsYmFj a3MpCitQR19TSE1FTV9TVUJTWVNURU0oUHJvY0FycmF5U2htZW1DYWxsYmFja3MpCisKKy8q IHNoYXJlZC1pbnZhbCBtZXNzYWdpbmcgKi8KK1BHX1NITUVNX1NVQlNZU1RFTShTaGFyZWRJ bnZhbFNobWVtQ2FsbGJhY2tzKQorCisvKiBpbnRlcnByb2Nlc3Mgc2lnbmFsaW5nIG1lY2hh bmlzbXMgKi8KK1BHX1NITUVNX1NVQlNZU1RFTShQTVNpZ25hbFNobWVtQ2FsbGJhY2tzKQor UEdfU0hNRU1fU1VCU1lTVEVNKFByb2NTaWduYWxTaG1lbUNhbGxiYWNrcykKLS0gCjIuNDcu MwoK --------------DjaUCGyXkgmfSYE7E2Or3PMa Content-Type: text/x-patch; charset=UTF-8; name="v12-0008-Refactor-shmem-initialization-code-in-predicate..patch" Content-Disposition: attachment; filename*0="v12-0008-Refactor-shmem-initialization-code-in-predicate..pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBlNmE4NDA2YmFkOWVhMDYxZTY5Zjg2NDJkNmMyMGExZmZmODVjODk3IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFN1biwgNSBBcHIgMjAyNiAyMDowNjowOCArMDMwMApT dWJqZWN0OiBbUEFUQ0ggdjEyIDA4LzEzXSBSZWZhY3RvciBzaG1lbSBpbml0aWFsaXphdGlv biBjb2RlIGluIHByZWRpY2F0ZS5jCgpUaGlzIGlzIGluIHByZXBhcmF0aW9uIHRvIGNvbnZl cnQgaXQgdG8gdXNlIHRoZSBuZXcgc2htZW0gYWxsb2NhdGlvbgpmdW5jdGlvbnMsIG1ha2lu ZyB0aGUgbmV4dCBjb21taXQgdG8gY29udmVydCBQcmVkaWNhdGVMb2NrU2htZW1Jbml0KCkK c21hbGxlci4gVGhpcyBpbmxpbmVzIHRoZSBTZXJpYWxJbml0KCkgZnVuY3Rpb24gdG8gdGhl IGNhbGxlciwgYW5kCm1vdmVzIGFsbCB0aGUgaW5pdGlhbGl6YXRpb24gc3RlcHMgd2l0aGlu IFByZWRpY2F0ZUxvY2tTaG1lbUluaXQoKSB0bwpoYXBwZW4gYWZ0ZXIgYWxsIHRoZSBTaG1l bUluaXR7U3RydWN0fEhhc2h9KCkgY2FsbHMuCgpSZXZpZXdlZC1ieTogQXNodXRvc2ggQmFw YXQgPGFzaHV0b3NoLmJhcGF0Lm9zc0BnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBNYXR0aGlh cyB2YW4gZGUgTWVlbnQgPGJvZWtld3VybStwb3N0Z3Jlc0BnbWFpbC5jb20+ClJldmlld2Vk LWJ5OiBEYW5pZWwgR3VzdGFmc3NvbiA8ZGFuaWVsQHllc3FsLnNlPgpEaXNjdXNzaW9uOiBo dHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkL0NBRXhIVzV2TTFibmVMWWZn MHdHZUFhPTUyVWlKM3o0dktkM0FKNzJYOEZ3NmszS0tyZ0BtYWlsLmdtYWlsLmNvbQotLS0K IHNyYy9iYWNrZW5kL3N0b3JhZ2UvbG1nci9wcmVkaWNhdGUuYyB8IDIxNyArKysrKysrKysr KystLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA5OCBpbnNlcnRpb25zKCspLCAx MTkgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdy L3ByZWRpY2F0ZS5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jCmlu ZGV4IGUwMDNmYTViMTA3Li5iNTA5ZmJiMjc1OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv c3RvcmFnZS9sbWdyL3ByZWRpY2F0ZS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvbG1n ci9wcmVkaWNhdGUuYwpAQCAtNDQ0LDcgKzQ0NCw2IEBAIHN0YXRpYyB2b2lkIEZsYWdTeGFj dFVuc2FmZShTRVJJQUxJWkFCTEVYQUNUICpzeGFjdCk7CiAKIHN0YXRpYyBib29sIFNlcmlh bFBhZ2VQcmVjZWRlc0xvZ2ljYWxseShpbnQ2NCBwYWdlMSwgaW50NjQgcGFnZTIpOwogc3Rh dGljIGludAlzZXJpYWxfZXJyZGV0YWlsX2Zvcl9pb19lcnJvcihjb25zdCB2b2lkICpvcGFx dWVfZGF0YSk7Ci1zdGF0aWMgdm9pZCBTZXJpYWxJbml0KHZvaWQpOwogc3RhdGljIHZvaWQg U2VyaWFsQWRkKFRyYW5zYWN0aW9uSWQgeGlkLCBTZXJDb21taXRTZXFObyBtaW5Db25mbGlj dENvbW1pdFNlcU5vKTsKIHN0YXRpYyBTZXJDb21taXRTZXFObyBTZXJpYWxHZXRNaW5Db25m bGljdENvbW1pdFNlcU5vKFRyYW5zYWN0aW9uSWQgeGlkKTsKIHN0YXRpYyB2b2lkIFNlcmlh bFNldEFjdGl2ZVNlclhtaW4oVHJhbnNhY3Rpb25JZCB4aWQpOwpAQCAtODA5LDQ4ICs4MDgs NiBAQCBTZXJpYWxQYWdlUHJlY2VkZXNMb2dpY2FsbHlVbml0VGVzdHModm9pZCkKIH0KICNl bmRpZgogCi0vKgotICogSW5pdGlhbGl6ZSBmb3IgdGhlIHRyYWNraW5nIG9mIG9sZCBzZXJp YWxpemFibGUgY29tbWl0dGVkIHhpZHMuCi0gKi8KLXN0YXRpYyB2b2lkCi1TZXJpYWxJbml0 KHZvaWQpCi17Ci0JYm9vbAkJZm91bmQ7Ci0KLQkvKgotCSAqIFNldCB1cCBTTFJVIG1hbmFn ZW1lbnQgb2YgdGhlIHBnX3NlcmlhbCBkYXRhLgotCSAqLwotCVNlcmlhbFNscnVDdGwtPlBh Z2VQcmVjZWRlcyA9IFNlcmlhbFBhZ2VQcmVjZWRlc0xvZ2ljYWxseTsKLQlTZXJpYWxTbHJ1 Q3RsLT5lcnJkZXRhaWxfZm9yX2lvX2Vycm9yID0gc2VyaWFsX2VycmRldGFpbF9mb3JfaW9f ZXJyb3I7Ci0JU2ltcGxlTHJ1SW5pdChTZXJpYWxTbHJ1Q3RsLCAic2VyaWFsaXphYmxlIiwK LQkJCQkgIHNlcmlhbGl6YWJsZV9idWZmZXJzLCAwLCAicGdfc2VyaWFsIiwKLQkJCQkgIExX VFJBTkNIRV9TRVJJQUxfQlVGRkVSLCBMV1RSQU5DSEVfU0VSSUFMX1NMUlUsCi0JCQkJICBT WU5DX0hBTkRMRVJfTk9ORSwgZmFsc2UpOwotI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcK LQlTZXJpYWxQYWdlUHJlY2VkZXNMb2dpY2FsbHlVbml0VGVzdHMoKTsKLSNlbmRpZgotCVNs cnVQYWdlUHJlY2VkZXNVbml0VGVzdHMoU2VyaWFsU2xydUN0bCwgU0VSSUFMX0VOVFJJRVNQ RVJQQUdFKTsKLQotCS8qCi0JICogQ3JlYXRlIG9yIGF0dGFjaCB0byB0aGUgU2VyaWFsQ29u dHJvbCBzdHJ1Y3R1cmUuCi0JICovCi0Jc2VyaWFsQ29udHJvbCA9IChTZXJpYWxDb250cm9s KQotCQlTaG1lbUluaXRTdHJ1Y3QoIlNlcmlhbENvbnRyb2xEYXRhIiwgc2l6ZW9mKFNlcmlh bENvbnRyb2xEYXRhKSwgJmZvdW5kKTsKLQotCUFzc2VydChmb3VuZCA9PSBJc1VuZGVyUG9z dG1hc3Rlcik7Ci0JaWYgKCFmb3VuZCkKLQl7Ci0JCS8qCi0JCSAqIFNldCBjb250cm9sIGlu Zm9ybWF0aW9uIHRvIHJlZmxlY3QgZW1wdHkgU0xSVS4KLQkJICovCi0JCUxXTG9ja0FjcXVp cmUoU2VyaWFsQ29udHJvbExvY2ssIExXX0VYQ0xVU0lWRSk7Ci0JCXNlcmlhbENvbnRyb2wt PmhlYWRQYWdlID0gLTE7Ci0JCXNlcmlhbENvbnRyb2wtPmhlYWRYaWQgPSBJbnZhbGlkVHJh bnNhY3Rpb25JZDsKLQkJc2VyaWFsQ29udHJvbC0+dGFpbFhpZCA9IEludmFsaWRUcmFuc2Fj dGlvbklkOwotCQlMV0xvY2tSZWxlYXNlKFNlcmlhbENvbnRyb2xMb2NrKTsKLQl9Ci19Ci0K IC8qCiAgKiBHVUMgY2hlY2tfaG9vayBmb3Igc2VyaWFsaXphYmxlX2J1ZmZlcnMKICAqLwpA QCAtMTE4NywxOSArMTE0NCw2IEBAIFByZWRpY2F0ZUxvY2tTaG1lbUluaXQodm9pZCkKIAkJ CQkJCQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8CiAJCQkJCQkJCQkJCUhBU0hfUEFS VElUSU9OIHwgSEFTSF9GSVhFRF9TSVpFKTsKIAotCS8qCi0JICogUmVzZXJ2ZSBhIGR1bW15 IGVudHJ5IGluIHRoZSBoYXNoIHRhYmxlOyB3ZSB1c2UgaXQgdG8gbWFrZSBzdXJlIHRoZXJl J3MKLQkgKiBhbHdheXMgb25lIGVudHJ5IGF2YWlsYWJsZSB3aGVuIHdlIG5lZWQgdG8gc3Bs aXQgb3IgY29tYmluZSBhIHBhZ2UsCi0JICogYmVjYXVzZSBydW5uaW5nIG91dCBvZiBzcGFj ZSB0aGVyZSBjb3VsZCBtZWFuIGFib3J0aW5nIGEKLQkgKiBub24tc2VyaWFsaXphYmxlIHRy YW5zYWN0aW9uLgotCSAqLwotCWlmICghSXNVbmRlclBvc3RtYXN0ZXIpCi0JewotCQkodm9p ZCkgaGFzaF9zZWFyY2goUHJlZGljYXRlTG9ja1RhcmdldEhhc2gsICZTY3JhdGNoVGFyZ2V0 VGFnLAotCQkJCQkJICAgSEFTSF9FTlRFUiwgJmZvdW5kKTsKLQkJQXNzZXJ0KCFmb3VuZCk7 Ci0JfQotCiAJLyogUHJlLWNhbGN1bGF0ZSB0aGUgaGFzaCBhbmQgcGFydGl0aW9uIGxvY2sg b2YgdGhlIHNjcmF0Y2ggZW50cnkgKi8KIAlTY3JhdGNoVGFyZ2V0VGFnSGFzaCA9IFByZWRp Y2F0ZUxvY2tUYXJnZXRUYWdIYXNoQ29kZSgmU2NyYXRjaFRhcmdldFRhZyk7CiAJU2NyYXRj aFBhcnRpdGlvbkxvY2sgPSBQcmVkaWNhdGVMb2NrSGFzaFBhcnRpdGlvbkxvY2soU2NyYXRj aFRhcmdldFRhZ0hhc2gpOwpAQCAtMTI0Myw0OSArMTE4Nyw2IEBAIFByZWRpY2F0ZUxvY2tT aG1lbUluaXQodm9pZCkKIAkJCQkJCQkgICByZXF1ZXN0U2l6ZSwKIAkJCQkJCQkgICAmZm91 bmQpOwogCUFzc2VydChmb3VuZCA9PSBJc1VuZGVyUG9zdG1hc3Rlcik7Ci0JaWYgKCFmb3Vu ZCkKLQl7Ci0JCWludAkJCWk7Ci0KLQkJLyogY2xlYW4gZXZlcnl0aGluZywgYm90aCB0aGUg aGVhZGVyIGFuZCB0aGUgZWxlbWVudCAqLwotCQltZW1zZXQoUHJlZFhhY3QsIDAsIHJlcXVl c3RTaXplKTsKLQotCQlkbGlzdF9pbml0KCZQcmVkWGFjdC0+YXZhaWxhYmxlTGlzdCk7Ci0J CWRsaXN0X2luaXQoJlByZWRYYWN0LT5hY3RpdmVMaXN0KTsKLQkJUHJlZFhhY3QtPlN4YWN0 R2xvYmFsWG1pbiA9IEludmFsaWRUcmFuc2FjdGlvbklkOwotCQlQcmVkWGFjdC0+U3hhY3RH bG9iYWxYbWluQ291bnQgPSAwOwotCQlQcmVkWGFjdC0+V3JpdGFibGVTeGFjdENvdW50ID0g MDsKLQkJUHJlZFhhY3QtPkxhc3RTeGFjdENvbW1pdFNlcU5vID0gRmlyc3ROb3JtYWxTZXJD b21taXRTZXFObyAtIDE7Ci0JCVByZWRYYWN0LT5DYW5QYXJ0aWFsQ2xlYXJUaHJvdWdoID0g MDsKLQkJUHJlZFhhY3QtPkhhdmVQYXJ0aWFsQ2xlYXJlZFRocm91Z2ggPSAwOwotCQlQcmVk WGFjdC0+ZWxlbWVudAotCQkJPSAoU0VSSUFMSVpBQkxFWEFDVCAqKSAoKGNoYXIgKikgUHJl ZFhhY3QgKyBQcmVkWGFjdExpc3REYXRhU2l6ZSk7Ci0JCS8qIEFkZCBhbGwgZWxlbWVudHMg dG8gYXZhaWxhYmxlIGxpc3QsIGNsZWFuLiAqLwotCQlmb3IgKGkgPSAwOyBpIDwgbWF4X3Nl cmlhbGl6YWJsZV94YWN0czsgaSsrKQotCQl7Ci0JCQlMV0xvY2tJbml0aWFsaXplKCZQcmVk WGFjdC0+ZWxlbWVudFtpXS5wZXJYYWN0UHJlZGljYXRlTGlzdExvY2ssCi0JCQkJCQkJIExX VFJBTkNIRV9QRVJfWEFDVF9QUkVESUNBVEVfTElTVCk7Ci0JCQlkbGlzdF9wdXNoX3RhaWwo JlByZWRYYWN0LT5hdmFpbGFibGVMaXN0LCAmUHJlZFhhY3QtPmVsZW1lbnRbaV0ueGFjdExp bmspOwotCQl9Ci0JCVByZWRYYWN0LT5PbGRDb21taXR0ZWRTeGFjdCA9IENyZWF0ZVByZWRY YWN0KCk7Ci0JCVNldEludmFsaWRWaXJ0dWFsVHJhbnNhY3Rpb25JZChQcmVkWGFjdC0+T2xk Q29tbWl0dGVkU3hhY3QtPnZ4aWQpOwotCQlQcmVkWGFjdC0+T2xkQ29tbWl0dGVkU3hhY3Qt PnByZXBhcmVTZXFObyA9IDA7Ci0JCVByZWRYYWN0LT5PbGRDb21taXR0ZWRTeGFjdC0+Y29t bWl0U2VxTm8gPSAwOwotCQlQcmVkWGFjdC0+T2xkQ29tbWl0dGVkU3hhY3QtPlNlcU5vLmxh c3RDb21taXRCZWZvcmVTbmFwc2hvdCA9IDA7Ci0JCWRsaXN0X2luaXQoJlByZWRYYWN0LT5P bGRDb21taXR0ZWRTeGFjdC0+b3V0Q29uZmxpY3RzKTsKLQkJZGxpc3RfaW5pdCgmUHJlZFhh Y3QtPk9sZENvbW1pdHRlZFN4YWN0LT5pbkNvbmZsaWN0cyk7Ci0JCWRsaXN0X2luaXQoJlBy ZWRYYWN0LT5PbGRDb21taXR0ZWRTeGFjdC0+cHJlZGljYXRlTG9ja3MpOwotCQlkbGlzdF9u b2RlX2luaXQoJlByZWRYYWN0LT5PbGRDb21taXR0ZWRTeGFjdC0+ZmluaXNoZWRMaW5rKTsK LQkJZGxpc3RfaW5pdCgmUHJlZFhhY3QtPk9sZENvbW1pdHRlZFN4YWN0LT5wb3NzaWJsZVVu c2FmZUNvbmZsaWN0cyk7Ci0JCVByZWRYYWN0LT5PbGRDb21taXR0ZWRTeGFjdC0+dG9wWGlk ID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7Ci0JCVByZWRYYWN0LT5PbGRDb21taXR0ZWRTeGFj dC0+ZmluaXNoZWRCZWZvcmUgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKLQkJUHJlZFhhY3Qt Pk9sZENvbW1pdHRlZFN4YWN0LT54bWluID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7Ci0JCVBy ZWRYYWN0LT5PbGRDb21taXR0ZWRTeGFjdC0+ZmxhZ3MgPSBTWEFDVF9GTEFHX0NPTU1JVFRF RDsKLQkJUHJlZFhhY3QtPk9sZENvbW1pdHRlZFN4YWN0LT5waWQgPSAwOwotCQlQcmVkWGFj dC0+T2xkQ29tbWl0dGVkU3hhY3QtPnBncHJvY25vID0gSU5WQUxJRF9QUk9DX05VTUJFUjsK LQl9Ci0JLyogVGhpcyBuZXZlciBjaGFuZ2VzLCBzbyBsZXQncyBrZWVwIGEgbG9jYWwgY29w eS4gKi8KLQlPbGRDb21taXR0ZWRTeGFjdCA9IFByZWRYYWN0LT5PbGRDb21taXR0ZWRTeGFj dDsKIAogCS8qCiAJICogQWxsb2NhdGUgaGFzaCB0YWJsZSBmb3IgU0VSSUFMSVpBQkxFWElE IHN0cnVjdHMuICBUaGlzIHN0b3JlcyBwZXIteGlkCkBAIC0xMzIxLDIzICsxMjIyLDYgQEAg UHJlZGljYXRlTG9ja1NobWVtSW5pdCh2b2lkKQogCQkJCQkJCQkJIHJlcXVlc3RTaXplLAog CQkJCQkJCQkJICZmb3VuZCk7CiAJQXNzZXJ0KGZvdW5kID09IElzVW5kZXJQb3N0bWFzdGVy KTsKLQlpZiAoIWZvdW5kKQotCXsKLQkJaW50CQkJaTsKLQotCQkvKiBjbGVhbiBldmVyeXRo aW5nLCBpbmNsdWRpbmcgdGhlIGVsZW1lbnRzICovCi0JCW1lbXNldChSV0NvbmZsaWN0UG9v bCwgMCwgcmVxdWVzdFNpemUpOwotCi0JCWRsaXN0X2luaXQoJlJXQ29uZmxpY3RQb29sLT5h dmFpbGFibGVMaXN0KTsKLQkJUldDb25mbGljdFBvb2wtPmVsZW1lbnQgPSAoUldDb25mbGlj dCkgKChjaGFyICopIFJXQ29uZmxpY3RQb29sICsKLQkJCQkJCQkJCQkJCVJXQ29uZmxpY3RQ b29sSGVhZGVyRGF0YVNpemUpOwotCQkvKiBBZGQgYWxsIGVsZW1lbnRzIHRvIGF2YWlsYWJs ZSBsaXN0LCBjbGVhbi4gKi8KLQkJZm9yIChpID0gMDsgaSA8IG1heF9yd19jb25mbGljdHM7 IGkrKykKLQkJewotCQkJZGxpc3RfcHVzaF90YWlsKCZSV0NvbmZsaWN0UG9vbC0+YXZhaWxh YmxlTGlzdCwKLQkJCQkJCQkmUldDb25mbGljdFBvb2wtPmVsZW1lbnRbaV0ub3V0TGluayk7 Ci0JCX0KLQl9CiAKIAkvKgogCSAqIENyZWF0ZSBvciBhdHRhY2ggdG8gdGhlIGhlYWRlciBm b3IgdGhlIGxpc3Qgb2YgZmluaXNoZWQgc2VyaWFsaXphYmxlCkBAIC0xMzQ4LDE0ICsxMjMy LDEwOSBAQCBQcmVkaWNhdGVMb2NrU2htZW1Jbml0KHZvaWQpCiAJCQkJCQlzaXplb2YoZGxp c3RfaGVhZCksCiAJCQkJCQkmZm91bmQpOwogCUFzc2VydChmb3VuZCA9PSBJc1VuZGVyUG9z dG1hc3Rlcik7Ci0JaWYgKCFmb3VuZCkKLQkJZGxpc3RfaW5pdChGaW5pc2hlZFNlcmlhbGl6 YWJsZVRyYW5zYWN0aW9ucyk7CiAKIAkvKgogCSAqIEluaXRpYWxpemUgdGhlIFNMUlUgc3Rv cmFnZSBmb3Igb2xkIGNvbW1pdHRlZCBzZXJpYWxpemFibGUKIAkgKiB0cmFuc2FjdGlvbnMu CiAJICovCi0JU2VyaWFsSW5pdCgpOworCVNlcmlhbFNscnVDdGwtPlBhZ2VQcmVjZWRlcyA9 IFNlcmlhbFBhZ2VQcmVjZWRlc0xvZ2ljYWxseTsKKwlTZXJpYWxTbHJ1Q3RsLT5lcnJkZXRh aWxfZm9yX2lvX2Vycm9yID0gc2VyaWFsX2VycmRldGFpbF9mb3JfaW9fZXJyb3I7CisJU2lt cGxlTHJ1SW5pdChTZXJpYWxTbHJ1Q3RsLCAic2VyaWFsaXphYmxlIiwKKwkJCQkgIHNlcmlh bGl6YWJsZV9idWZmZXJzLCAwLCAicGdfc2VyaWFsIiwKKwkJCQkgIExXVFJBTkNIRV9TRVJJ QUxfQlVGRkVSLCBMV1RSQU5DSEVfU0VSSUFMX1NMUlUsCisJCQkJICBTWU5DX0hBTkRMRVJf Tk9ORSwgZmFsc2UpOworI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKKwlTZXJpYWxQYWdl UHJlY2VkZXNMb2dpY2FsbHlVbml0VGVzdHMoKTsKKyNlbmRpZgorCVNscnVQYWdlUHJlY2Vk ZXNVbml0VGVzdHMoU2VyaWFsU2xydUN0bCwgU0VSSUFMX0VOVFJJRVNQRVJQQUdFKTsKKwor CS8qCisJICogQ3JlYXRlIG9yIGF0dGFjaCB0byB0aGUgU2VyaWFsQ29udHJvbCBzdHJ1Y3R1 cmUuCisJICovCisJc2VyaWFsQ29udHJvbCA9IChTZXJpYWxDb250cm9sKQorCQlTaG1lbUlu aXRTdHJ1Y3QoIlNlcmlhbENvbnRyb2xEYXRhIiwgc2l6ZW9mKFNlcmlhbENvbnRyb2xEYXRh KSwgJmZvdW5kKTsKKwlBc3NlcnQoZm91bmQgPT0gSXNVbmRlclBvc3RtYXN0ZXIpOworCisJ LyoKKwkgKiBJZiB3ZSBqdXN0IGF0dGFjaGVkIHRvIGV4aXN0aW5nIHNoYXJlZCBtZW1vcnkg KEVYRUNfQkFDS0VORCksIHdlJ3JlIGFsbAorCSAqIGRvbmUuICBPdGhlcndpc2UsIGR1cmlu ZyBwb3N0bWFzdGVyIHN0YXJ0dXAsIHByb2NlZWQgdG8gaW5pdGlhbGl6ZSBhbGwKKwkgKiB0 aGUgc2hhcmVkIG1lbW9yeSBhcmVhcyB0aGF0IHdlIGFsbG9jYXRlZC4KKwkgKi8KKwlpZiAo SXNVbmRlclBvc3RtYXN0ZXIpCisJeworCQkvKiBUaGlzIG5ldmVyIGNoYW5nZXMsIHNvIGxl dCdzIGtlZXAgYSBsb2NhbCBjb3B5LiAqLworCQlPbGRDb21taXR0ZWRTeGFjdCA9IFByZWRY YWN0LT5PbGRDb21taXR0ZWRTeGFjdDsKKwkJcmV0dXJuOworCX0KKworCS8qCisJICogUmVz ZXJ2ZSBhIGR1bW15IGVudHJ5IGluIHRoZSBoYXNoIHRhYmxlOyB3ZSB1c2UgaXQgdG8gbWFr ZSBzdXJlIHRoZXJlJ3MKKwkgKiBhbHdheXMgb25lIGVudHJ5IGF2YWlsYWJsZSB3aGVuIHdl IG5lZWQgdG8gc3BsaXQgb3IgY29tYmluZSBhIHBhZ2UsCisJICogYmVjYXVzZSBydW5uaW5n IG91dCBvZiBzcGFjZSB0aGVyZSBjb3VsZCBtZWFuIGFib3J0aW5nIGEKKwkgKiBub24tc2Vy aWFsaXphYmxlIHRyYW5zYWN0aW9uLgorCSAqLworCSh2b2lkKSBoYXNoX3NlYXJjaChQcmVk aWNhdGVMb2NrVGFyZ2V0SGFzaCwgJlNjcmF0Y2hUYXJnZXRUYWcsCisJCQkJCSAgIEhBU0hf RU5URVIsICZmb3VuZCk7CisJQXNzZXJ0KCFmb3VuZCk7CisKKwkvKiBJbml0aWFsaXplIFBy ZWRYYWN0IGxpc3QgKi8KKwlkbGlzdF9pbml0KCZQcmVkWGFjdC0+YXZhaWxhYmxlTGlzdCk7 CisJZGxpc3RfaW5pdCgmUHJlZFhhY3QtPmFjdGl2ZUxpc3QpOworCVByZWRYYWN0LT5TeGFj dEdsb2JhbFhtaW4gPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKwlQcmVkWGFjdC0+U3hhY3RH bG9iYWxYbWluQ291bnQgPSAwOworCVByZWRYYWN0LT5Xcml0YWJsZVN4YWN0Q291bnQgPSAw OworCVByZWRYYWN0LT5MYXN0U3hhY3RDb21taXRTZXFObyA9IEZpcnN0Tm9ybWFsU2VyQ29t bWl0U2VxTm8gLSAxOworCVByZWRYYWN0LT5DYW5QYXJ0aWFsQ2xlYXJUaHJvdWdoID0gMDsK KwlQcmVkWGFjdC0+SGF2ZVBhcnRpYWxDbGVhcmVkVGhyb3VnaCA9IDA7CisJUHJlZFhhY3Qt PmVsZW1lbnQKKwkJPSAoU0VSSUFMSVpBQkxFWEFDVCAqKSAoKGNoYXIgKikgUHJlZFhhY3Qg KyBQcmVkWGFjdExpc3REYXRhU2l6ZSk7CisJLyogQWRkIGFsbCBlbGVtZW50cyB0byBhdmFp bGFibGUgbGlzdCwgY2xlYW4uICovCisJZm9yIChpbnQgaSA9IDA7IGkgPCBtYXhfc2VyaWFs aXphYmxlX3hhY3RzOyBpKyspCisJeworCQlMV0xvY2tJbml0aWFsaXplKCZQcmVkWGFjdC0+ ZWxlbWVudFtpXS5wZXJYYWN0UHJlZGljYXRlTGlzdExvY2ssCisJCQkJCQkgTFdUUkFOQ0hF X1BFUl9YQUNUX1BSRURJQ0FURV9MSVNUKTsKKwkJZGxpc3RfcHVzaF90YWlsKCZQcmVkWGFj dC0+YXZhaWxhYmxlTGlzdCwgJlByZWRYYWN0LT5lbGVtZW50W2ldLnhhY3RMaW5rKTsKKwl9 CisJUHJlZFhhY3QtPk9sZENvbW1pdHRlZFN4YWN0ID0gQ3JlYXRlUHJlZFhhY3QoKTsKKwlT ZXRJbnZhbGlkVmlydHVhbFRyYW5zYWN0aW9uSWQoUHJlZFhhY3QtPk9sZENvbW1pdHRlZFN4 YWN0LT52eGlkKTsKKwlQcmVkWGFjdC0+T2xkQ29tbWl0dGVkU3hhY3QtPnByZXBhcmVTZXFO byA9IDA7CisJUHJlZFhhY3QtPk9sZENvbW1pdHRlZFN4YWN0LT5jb21taXRTZXFObyA9IDA7 CisJUHJlZFhhY3QtPk9sZENvbW1pdHRlZFN4YWN0LT5TZXFOby5sYXN0Q29tbWl0QmVmb3Jl U25hcHNob3QgPSAwOworCWRsaXN0X2luaXQoJlByZWRYYWN0LT5PbGRDb21taXR0ZWRTeGFj dC0+b3V0Q29uZmxpY3RzKTsKKwlkbGlzdF9pbml0KCZQcmVkWGFjdC0+T2xkQ29tbWl0dGVk U3hhY3QtPmluQ29uZmxpY3RzKTsKKwlkbGlzdF9pbml0KCZQcmVkWGFjdC0+T2xkQ29tbWl0 dGVkU3hhY3QtPnByZWRpY2F0ZUxvY2tzKTsKKwlkbGlzdF9ub2RlX2luaXQoJlByZWRYYWN0 LT5PbGRDb21taXR0ZWRTeGFjdC0+ZmluaXNoZWRMaW5rKTsKKwlkbGlzdF9pbml0KCZQcmVk WGFjdC0+T2xkQ29tbWl0dGVkU3hhY3QtPnBvc3NpYmxlVW5zYWZlQ29uZmxpY3RzKTsKKwlQ cmVkWGFjdC0+T2xkQ29tbWl0dGVkU3hhY3QtPnRvcFhpZCA9IEludmFsaWRUcmFuc2FjdGlv bklkOworCVByZWRYYWN0LT5PbGRDb21taXR0ZWRTeGFjdC0+ZmluaXNoZWRCZWZvcmUgPSBJ bnZhbGlkVHJhbnNhY3Rpb25JZDsKKwlQcmVkWGFjdC0+T2xkQ29tbWl0dGVkU3hhY3QtPnht aW4gPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKwlQcmVkWGFjdC0+T2xkQ29tbWl0dGVkU3hh Y3QtPmZsYWdzID0gU1hBQ1RfRkxBR19DT01NSVRURUQ7CisJUHJlZFhhY3QtPk9sZENvbW1p dHRlZFN4YWN0LT5waWQgPSAwOworCVByZWRYYWN0LT5PbGRDb21taXR0ZWRTeGFjdC0+cGdw cm9jbm8gPSBJTlZBTElEX1BST0NfTlVNQkVSOworCisJLyogVGhpcyBuZXZlciBjaGFuZ2Vz LCBzbyBsZXQncyBrZWVwIGEgbG9jYWwgY29weS4gKi8KKwlPbGRDb21taXR0ZWRTeGFjdCA9 IFByZWRYYWN0LT5PbGRDb21taXR0ZWRTeGFjdDsKKworCS8qIEluaXRpYWxpemUgdGhlIHJ3 LWNvbmZsaWN0IHBvb2wgKi8KKwlkbGlzdF9pbml0KCZSV0NvbmZsaWN0UG9vbC0+YXZhaWxh YmxlTGlzdCk7CisJUldDb25mbGljdFBvb2wtPmVsZW1lbnQgPSAoUldDb25mbGljdCkgKChj aGFyICopIFJXQ29uZmxpY3RQb29sICsKKwkJCQkJCQkJCQkJUldDb25mbGljdFBvb2xIZWFk ZXJEYXRhU2l6ZSk7CisJLyogQWRkIGFsbCBlbGVtZW50cyB0byBhdmFpbGFibGUgbGlzdCwg Y2xlYW4uICovCisJZm9yIChpbnQgaSA9IDA7IGkgPCBtYXhfcndfY29uZmxpY3RzOyBpKysp CisJeworCQlkbGlzdF9wdXNoX3RhaWwoJlJXQ29uZmxpY3RQb29sLT5hdmFpbGFibGVMaXN0 LAorCQkJCQkJJlJXQ29uZmxpY3RQb29sLT5lbGVtZW50W2ldLm91dExpbmspOworCX0KKwor CS8qIEluaXRpYWxpemUgdGhlIGxpc3Qgb2YgZmluaXNoZWQgc2VyaWFsaXphYmxlIHRyYW5z YWN0aW9ucyAqLworCWRsaXN0X2luaXQoRmluaXNoZWRTZXJpYWxpemFibGVUcmFuc2FjdGlv bnMpOworCisJLyogSW5pdGlhbGl6ZSBTZXJpYWxDb250cm9sIHRvIHJlZmxlY3QgZW1wdHkg U0xSVS4gKi8KKwlMV0xvY2tBY3F1aXJlKFNlcmlhbENvbnRyb2xMb2NrLCBMV19FWENMVVNJ VkUpOworCXNlcmlhbENvbnRyb2wtPmhlYWRQYWdlID0gLTE7CisJc2VyaWFsQ29udHJvbC0+ aGVhZFhpZCA9IEludmFsaWRUcmFuc2FjdGlvbklkOworCXNlcmlhbENvbnRyb2wtPnRhaWxY aWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25JZDsKKwlMV0xvY2tSZWxlYXNlKFNlcmlhbENvbnRy b2xMb2NrKTsKIH0KIAogLyoKLS0gCjIuNDcuMwoK --------------DjaUCGyXkgmfSYE7E2Or3PMa Content-Type: text/x-patch; charset=UTF-8; name="v12-0009-Convert-SLRUs-to-use-the-new-shmem-allocation-fu.patch" Content-Disposition: attachment; filename*0="v12-0009-Convert-SLRUs-to-use-the-new-shmem-allocation-fu.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBjZjlhN2M3MDVlMGE3YjRkZWM1ZWI5MDZkZGJmZGRjNjQ3ODFjY2M4IE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFN1biwgNSBBcHIgMjAyNiAxOTo1NTowMCArMDMwMApT dWJqZWN0OiBbUEFUQ0ggdjEyIDA5LzEzXSBDb252ZXJ0IFNMUlVzIHRvIHVzZSB0aGUgbmV3 IHNobWVtIGFsbG9jYXRpb24KIGZ1bmN0aW9ucwoKSSByZXBsYWNlZCB0aGUgb2xkIFNpbXBs ZUxydUluaXQoKSBmdW5jdGlvbiB3aXRob3V0IGEgYmFja3dhcmRzCmNvbXBhdGliaWxpdHkg d3JhcHBlciwgYmVjYXVzZSBmZXcgZXh0ZW5zaW9ucyBkZWZpbmUgdGhlaXIgb3duIFNMUlVz LgoKUmV2aWV3ZWQtYnk6IEFzaHV0b3NoIEJhcGF0IDxhc2h1dG9zaC5iYXBhdC5vc3NAZ21h aWwuY29tPgpSZXZpZXdlZC1ieTogTWF0dGhpYXMgdmFuIGRlIE1lZW50IDxib2VrZXd1cm0r cG9zdGdyZXNAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogRGFuaWVsIEd1c3RhZnNzb24gPGRh bmllbEB5ZXNxbC5zZT4KRGlzY3Vzc2lvbjogaHR0cHM6Ly93d3cucG9zdGdyZXNxbC5vcmcv bWVzc2FnZS1pZC9DQUV4SFc1dk0xYm5lTFlmZzB3R2VBYT01MlVpSjN6NHZLZDNBSjcyWDhG dzZrM0tLcmdAbWFpbC5nbWFpbC5jb20KLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNh bS9jbG9nLmMgICAgICAgIHwgIDUzICsrLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2Ft L2NvbW1pdF90cy5jICAgfCAgODUgKysrLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNh bS9tdWx0aXhhY3QuYyAgIHwgMTM2ICsrKysrLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL3Ry YW5zYW0vc2xydS5jICAgICAgICB8IDM2NiArKysrKysrKysrKystLS0tLS0tLS0tLQogc3Jj L2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vc3VidHJhbnMuYyAgICB8ICA1NyArKy0tCiBzcmMv YmFja2VuZC9jb21tYW5kcy9hc3luYy5jICAgICAgICAgICAgIHwgMTE1ICsrKystLS0KIHNy Yy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYyAgICAgICAgICAgfCAgMTYgLQogc3JjL2Jh Y2tlbmQvc3RvcmFnZS9pcGMvc2htZW0uYyAgICAgICAgICB8ICAgNyArCiBzcmMvYmFja2Vu ZC9zdG9yYWdlL2xtZ3IvcHJlZGljYXRlLmMgICAgIHwgMjY5ICsrKysrKystLS0tLS0tLS0t CiBzcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9wZ3N0YXRfc2xydS5jIHwgICAxICsKIHNy Yy9pbmNsdWRlL2FjY2Vzcy9jbG9nLmggICAgICAgICAgICAgICAgfCAgIDIgLQogc3JjL2lu Y2x1ZGUvYWNjZXNzL2NvbW1pdF90cy5oICAgICAgICAgICB8ICAgMiAtCiBzcmMvaW5jbHVk ZS9hY2Nlc3MvbXVsdGl4YWN0LmggICAgICAgICAgIHwgICAyIC0KIHNyYy9pbmNsdWRlL2Fj Y2Vzcy9zbHJ1LmggICAgICAgICAgICAgICAgfCAxMTIgKysrKy0tLQogc3JjL2luY2x1ZGUv YWNjZXNzL3N1YnRyYW5zLmggICAgICAgICAgICB8ICAgMiAtCiBzcmMvaW5jbHVkZS9jb21t YW5kcy9hc3luYy5oICAgICAgICAgICAgIHwgICAzIC0KIHNyYy9pbmNsdWRlL3N0b3JhZ2Uv cHJlZGljYXRlLmggICAgICAgICAgfCAgIDUgLQogc3JjL2luY2x1ZGUvc3RvcmFnZS9zaG1l bV9pbnRlcm5hbC5oICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9zdG9yYWdlL3N1YnN5c3Rl bWxpc3QuaCAgICAgIHwgIDEwICsKIHNyYy90ZXN0L21vZHVsZXMvdGVzdF9zbHJ1L3Rlc3Rf c2xydS5jICAgfCAxMDYgKysrLS0tLQogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxp c3QgICAgICAgICB8ICAgNCArLQogMjEgZmlsZXMgY2hhbmdlZCwgNjg3IGluc2VydGlvbnMo KyksIDY2NyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3Mv dHJhbnNhbS9jbG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9jbG9nLmMKaW5k ZXggYzY1NGUwOTI5YjMuLjc1MDEyZDRiOGYwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9h Y2Nlc3MvdHJhbnNhbS9jbG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0v Y2xvZy5jCkBAIC00Myw2ICs0Myw3IEBACiAjaW5jbHVkZSAicGdfdHJhY2UuaCIKICNpbmNs dWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKKyNpbmNsdWRlICJz dG9yYWdlL3N1YnN5c3RlbXMuaCIKICNpbmNsdWRlICJzdG9yYWdlL3N5bmMuaCIKICNpbmNs dWRlICJ1dGlscy9ndWNfaG9va3MuaCIKICNpbmNsdWRlICJ1dGlscy93YWl0X2V2ZW50Lmgi CkBAIC0xMDYsMTMgKzEwNywyMSBAQCBUcmFuc2FjdGlvbklkVG9QYWdlKFRyYW5zYWN0aW9u SWQgeGlkKQogLyoKICAqIExpbmsgdG8gc2hhcmVkLW1lbW9yeSBkYXRhIHN0cnVjdHVyZXMg Zm9yIENMT0cgY29udHJvbAogICovCi1zdGF0aWMgU2xydUN0bERhdGEgWGFjdEN0bERhdGE7 CitzdGF0aWMgdm9pZCBDTE9HU2htZW1SZXF1ZXN0KHZvaWQgKmFyZyk7CitzdGF0aWMgdm9p ZCBDTE9HU2htZW1Jbml0KHZvaWQgKmFyZyk7CitzdGF0aWMgYm9vbCBDTE9HUGFnZVByZWNl ZGVzKGludDY0IHBhZ2UxLCBpbnQ2NCBwYWdlMik7CitzdGF0aWMgaW50CWNsb2dfZXJyZGV0 YWlsX2Zvcl9pb19lcnJvcihjb25zdCB2b2lkICpvcGFxdWVfZGF0YSk7CiAKLSNkZWZpbmUg WGFjdEN0bCAoJlhhY3RDdGxEYXRhKQorY29uc3QgU2htZW1DYWxsYmFja3MgQ0xPR1NobWVt Q2FsbGJhY2tzID0geworCS5yZXF1ZXN0X2ZuID0gQ0xPR1NobWVtUmVxdWVzdCwKKwkuaW5p dF9mbiA9IENMT0dTaG1lbUluaXQsCit9OworCitzdGF0aWMgU2xydURlc2MgWGFjdFNscnVE ZXNjOworCisjZGVmaW5lIFhhY3RDdGwgKCZYYWN0U2xydURlc2MpCiAKIAotc3RhdGljIGJv b2wgQ0xPR1BhZ2VQcmVjZWRlcyhpbnQ2NCBwYWdlMSwgaW50NjQgcGFnZTIpOwotc3RhdGlj IGludAljbG9nX2VycmRldGFpbF9mb3JfaW9fZXJyb3IoY29uc3Qgdm9pZCAqb3BhcXVlX2Rh dGEpOwogc3RhdGljIHZvaWQgV3JpdGVUcnVuY2F0ZVhsb2dSZWMoaW50NjQgcGFnZW5vLCBU cmFuc2FjdGlvbklkIG9sZGVzdFhhY3QsCiAJCQkJCQkJCSBPaWQgb2xkZXN0WGFjdERiKTsK IHN0YXRpYyB2b2lkIFRyYW5zYWN0aW9uSWRTZXRQYWdlU3RhdHVzKFRyYW5zYWN0aW9uSWQg eGlkLCBpbnQgbnN1YnhpZHMsCkBAIC03NzUsMTYgKzc4NCwxMCBAQCBDTE9HU2htZW1CdWZm ZXJzKHZvaWQpCiB9CiAKIC8qCi0gKiBJbml0aWFsaXphdGlvbiBvZiBzaGFyZWQgbWVtb3J5 IGZvciBDTE9HCisgKiBSZWdpc3RlciBzaGFyZWQgbWVtb3J5IGZvciBDTE9HCiAgKi8KLVNp emUKLUNMT0dTaG1lbVNpemUodm9pZCkKLXsKLQlyZXR1cm4gU2ltcGxlTHJ1U2htZW1TaXpl KENMT0dTaG1lbUJ1ZmZlcnMoKSwgQ0xPR19MU05TX1BFUl9QQUdFKTsKLX0KLQotdm9pZAot Q0xPR1NobWVtSW5pdCh2b2lkKQorc3RhdGljIHZvaWQKK0NMT0dTaG1lbVJlcXVlc3Qodm9p ZCAqYXJnKQogewogCS8qIElmIGF1dG8tdHVuaW5nIGlzIHJlcXVlc3RlZCwgbm93IGlzIHRo ZSB0aW1lIHRvIGRvIGl0ICovCiAJaWYgKHRyYW5zYWN0aW9uX2J1ZmZlcnMgPT0gMCkKQEAg LTgwNiwxMiArODA5LDI2IEBAIENMT0dTaG1lbUluaXQodm9pZCkKIAkJCQkJCQlQR0NfU19P VkVSUklERSk7CiAJfQogCUFzc2VydCh0cmFuc2FjdGlvbl9idWZmZXJzICE9IDApOworCVNp bXBsZUxydVJlcXVlc3QoLmRlc2MgPSAmWGFjdFNscnVEZXNjLAorCQkJCQkgLm5hbWUgPSAi dHJhbnNhY3Rpb24iLAorCQkJCQkgLkRpciA9ICJwZ194YWN0IiwKKwkJCQkJIC5sb25nX3Nl Z21lbnRfbmFtZXMgPSBmYWxzZSwKKworCQkJCQkgLm5zbG90cyA9IENMT0dTaG1lbUJ1ZmZl cnMoKSwKKwkJCQkJIC5ubHNucyA9IENMT0dfTFNOU19QRVJfUEFHRSwKKworCQkJCQkgLnN5 bmNfaGFuZGxlciA9IFNZTkNfSEFORExFUl9DTE9HLAorCQkJCQkgLlBhZ2VQcmVjZWRlcyA9 IENMT0dQYWdlUHJlY2VkZXMsCisJCQkJCSAuZXJyZGV0YWlsX2Zvcl9pb19lcnJvciA9IGNs b2dfZXJyZGV0YWlsX2Zvcl9pb19lcnJvciwKIAotCVhhY3RDdGwtPlBhZ2VQcmVjZWRlcyA9 IENMT0dQYWdlUHJlY2VkZXM7Ci0JWGFjdEN0bC0+ZXJyZGV0YWlsX2Zvcl9pb19lcnJvciA9 IGNsb2dfZXJyZGV0YWlsX2Zvcl9pb19lcnJvcjsKLQlTaW1wbGVMcnVJbml0KFhhY3RDdGws ICJ0cmFuc2FjdGlvbiIsIENMT0dTaG1lbUJ1ZmZlcnMoKSwgQ0xPR19MU05TX1BFUl9QQUdF LAotCQkJCSAgInBnX3hhY3QiLCBMV1RSQU5DSEVfWEFDVF9CVUZGRVIsCi0JCQkJICBMV1RS QU5DSEVfWEFDVF9TTFJVLCBTWU5DX0hBTkRMRVJfQ0xPRywgZmFsc2UpOworCQkJCQkgLmJ1 ZmZlcl90cmFuY2hlX2lkID0gTFdUUkFOQ0hFX1hBQ1RfQlVGRkVSLAorCQkJCQkgLmJhbmtf dHJhbmNoZV9pZCA9IExXVFJBTkNIRV9YQUNUX1NMUlUsCisJCSk7Cit9CisKK3N0YXRpYyB2 b2lkCitDTE9HU2htZW1Jbml0KHZvaWQgKmFyZykKK3sKIAlTbHJ1UGFnZVByZWNlZGVzVW5p dFRlc3RzKFhhY3RDdGwsIENMT0dfWEFDVFNfUEVSX1BBR0UpOwogfQogCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9jb21taXRfdHMuYyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL2NvbW1pdF90cy5jCmluZGV4IDM2MjE5ZGQxM2NjLi4yNjI1Y2Jm OTNiZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vY29tbWl0X3Rz LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vY29tbWl0X3RzLmMKQEAgLTMw LDYgKzMwLDcgQEAKICNpbmNsdWRlICJmdW5jYXBpLmgiCiAjaW5jbHVkZSAibWlzY2FkbWlu LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zaG1lbS5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvc3Vi c3lzdGVtcy5oIgogI2luY2x1ZGUgInV0aWxzL2ZtZ3Jwcm90b3MuaCIKICNpbmNsdWRlICJ1 dGlscy9ndWNfaG9va3MuaCIKICNpbmNsdWRlICJ1dGlscy90aW1lc3RhbXAuaCIKQEAgLTgw LDkgKzgxLDE5IEBAIFRyYW5zYWN0aW9uSWRUb0NUc1BhZ2UoVHJhbnNhY3Rpb25JZCB4aWQp CiAvKgogICogTGluayB0byBzaGFyZWQtbWVtb3J5IGRhdGEgc3RydWN0dXJlcyBmb3IgQ29t bWl0VHMgY29udHJvbAogICovCi1zdGF0aWMgU2xydUN0bERhdGEgQ29tbWl0VHNDdGxEYXRh Oworc3RhdGljIHZvaWQgQ29tbWl0VHNTaG1lbVJlcXVlc3Qodm9pZCAqYXJnKTsKK3N0YXRp YyB2b2lkIENvbW1pdFRzU2htZW1Jbml0KHZvaWQgKmFyZyk7CitzdGF0aWMgYm9vbCBDb21t aXRUc1BhZ2VQcmVjZWRlcyhpbnQ2NCBwYWdlMSwgaW50NjQgcGFnZTIpOworc3RhdGljIGlu dAljb21taXRfdHNfZXJyZGV0YWlsX2Zvcl9pb19lcnJvcihjb25zdCB2b2lkICpvcGFxdWVf ZGF0YSk7CisKK2NvbnN0IFNobWVtQ2FsbGJhY2tzIENvbW1pdFRzU2htZW1DYWxsYmFja3Mg PSB7CisJLnJlcXVlc3RfZm4gPSBDb21taXRUc1NobWVtUmVxdWVzdCwKKwkuaW5pdF9mbiA9 IENvbW1pdFRzU2htZW1Jbml0LAorfTsKKworc3RhdGljIFNscnVEZXNjIENvbW1pdFRzU2xy dURlc2M7CiAKLSNkZWZpbmUgQ29tbWl0VHNDdGwgKCZDb21taXRUc0N0bERhdGEpCisjZGVm aW5lIENvbW1pdFRzQ3RsICgmQ29tbWl0VHNTbHJ1RGVzYykKIAogLyoKICAqIFdlIGtlZXAg YSBjYWNoZSBvZiB0aGUgbGFzdCB2YWx1ZSBzZXQgaW4gc2hhcmVkIG1lbW9yeS4KQEAgLTEw NCw2ICsxMTUsNyBAQCB0eXBlZGVmIHN0cnVjdCBDb21taXRUaW1lc3RhbXBTaGFyZWQKIAog c3RhdGljIENvbW1pdFRpbWVzdGFtcFNoYXJlZCAqY29tbWl0VHNTaGFyZWQ7CiAKK3N0YXRp YyB2b2lkIENvbW1pdFRzU2htZW1Jbml0KHZvaWQgKmFyZyk7CiAKIC8qIEdVQyB2YXJpYWJs ZSAqLwogYm9vbAkJdHJhY2tfY29tbWl0X3RpbWVzdGFtcDsKQEAgLTExNCw4ICsxMjYsNiBA QCBzdGF0aWMgdm9pZCBTZXRYaWRDb21taXRUc0luUGFnZShUcmFuc2FjdGlvbklkIHhpZCwg aW50IG5zdWJ4aWRzLAogc3RhdGljIHZvaWQgVHJhbnNhY3Rpb25JZFNldENvbW1pdFRzKFRy YW5zYWN0aW9uSWQgeGlkLCBUaW1lc3RhbXBUeiB0cywKIAkJCQkJCQkJCSBSZXBsT3JpZ2lu SWQgbm9kZWlkLCBpbnQgc2xvdG5vKTsKIHN0YXRpYyB2b2lkIGVycm9yX2NvbW1pdF90c19k aXNhYmxlZCh2b2lkKTsKLXN0YXRpYyBib29sIENvbW1pdFRzUGFnZVByZWNlZGVzKGludDY0 IHBhZ2UxLCBpbnQ2NCBwYWdlMik7Ci1zdGF0aWMgaW50CWNvbW1pdF90c19lcnJkZXRhaWxf Zm9yX2lvX2Vycm9yKGNvbnN0IHZvaWQgKm9wYXF1ZV9kYXRhKTsKIHN0YXRpYyB2b2lkIEFj dGl2YXRlQ29tbWl0VHModm9pZCk7CiBzdGF0aWMgdm9pZCBEZWFjdGl2YXRlQ29tbWl0VHMo dm9pZCk7CiBzdGF0aWMgdm9pZCBXcml0ZVRydW5jYXRlWGxvZ1JlYyhpbnQ2NCBwYWdlbm8s IFRyYW5zYWN0aW9uSWQgb2xkZXN0WGlkKTsKQEAgLTUxMiwyNCArNTIyLDEyIEBAIENvbW1p dFRzU2htZW1CdWZmZXJzKHZvaWQpCiB9CiAKIC8qCi0gKiBTaGFyZWQgbWVtb3J5IHNpemlu ZyBmb3IgQ29tbWl0VHMKKyAqIFJlZ2lzdGVyIENvbW1pdFRzIHNoYXJlZCBtZW1vcnkgbmVl ZHMgYXQgc3lzdGVtIHN0YXJ0dXAgKHBvc3RtYXN0ZXIgc3RhcnQKKyAqIG9yIHN0YW5kYWxv bmUgYmFja2VuZCkKICAqLwotU2l6ZQotQ29tbWl0VHNTaG1lbVNpemUodm9pZCkKLXsKLQly ZXR1cm4gU2ltcGxlTHJ1U2htZW1TaXplKENvbW1pdFRzU2htZW1CdWZmZXJzKCksIDApICsK LQkJc2l6ZW9mKENvbW1pdFRpbWVzdGFtcFNoYXJlZCk7Ci19Ci0KLS8qCi0gKiBJbml0aWFs aXplIENvbW1pdFRzIGF0IHN5c3RlbSBzdGFydHVwIChwb3N0bWFzdGVyIHN0YXJ0IG9yIHN0 YW5kYWxvbmUKLSAqIGJhY2tlbmQpCi0gKi8KLXZvaWQKLUNvbW1pdFRzU2htZW1Jbml0KHZv aWQpCitzdGF0aWMgdm9pZAorQ29tbWl0VHNTaG1lbVJlcXVlc3Qodm9pZCAqYXJnKQogewot CWJvb2wJCWZvdW5kOwotCiAJLyogSWYgYXV0by10dW5pbmcgaXMgcmVxdWVzdGVkLCBub3cg aXMgdGhlIHRpbWUgdG8gZG8gaXQgKi8KIAlpZiAoY29tbWl0X3RpbWVzdGFtcF9idWZmZXJz ID09IDApCiAJewpAQCAtNTUwLDMxICs1NDgsMzYgQEAgQ29tbWl0VHNTaG1lbUluaXQodm9p ZCkKIAkJCQkJCQlQR0NfU19PVkVSUklERSk7CiAJfQogCUFzc2VydChjb21taXRfdGltZXN0 YW1wX2J1ZmZlcnMgIT0gMCk7CisJU2ltcGxlTHJ1UmVxdWVzdCguZGVzYyA9ICZDb21taXRU c1NscnVEZXNjLAorCQkJCQkgLm5hbWUgPSAiY29tbWl0X3RpbWVzdGFtcCIsCisJCQkJCSAu RGlyID0gInBnX2NvbW1pdF90cyIsCisJCQkJCSAubG9uZ19zZWdtZW50X25hbWVzID0gZmFs c2UsCiAKLQlDb21taXRUc0N0bC0+UGFnZVByZWNlZGVzID0gQ29tbWl0VHNQYWdlUHJlY2Vk ZXM7Ci0JQ29tbWl0VHNDdGwtPmVycmRldGFpbF9mb3JfaW9fZXJyb3IgPSBjb21taXRfdHNf ZXJyZGV0YWlsX2Zvcl9pb19lcnJvcjsKLQlTaW1wbGVMcnVJbml0KENvbW1pdFRzQ3RsLCAi Y29tbWl0X3RpbWVzdGFtcCIsIENvbW1pdFRzU2htZW1CdWZmZXJzKCksIDAsCi0JCQkJICAi cGdfY29tbWl0X3RzIiwgTFdUUkFOQ0hFX0NPTU1JVFRTX0JVRkZFUiwKLQkJCQkgIExXVFJB TkNIRV9DT01NSVRUU19TTFJVLAotCQkJCSAgU1lOQ19IQU5ETEVSX0NPTU1JVF9UUywKLQkJ CQkgIGZhbHNlKTsKLQlTbHJ1UGFnZVByZWNlZGVzVW5pdFRlc3RzKENvbW1pdFRzQ3RsLCBD T01NSVRfVFNfWEFDVFNfUEVSX1BBR0UpOworCQkJCQkgLm5zbG90cyA9IENvbW1pdFRzU2ht ZW1CdWZmZXJzKCksCiAKLQljb21taXRUc1NoYXJlZCA9IFNobWVtSW5pdFN0cnVjdCgiQ29t bWl0VHMgc2hhcmVkIiwKLQkJCQkJCQkJCSBzaXplb2YoQ29tbWl0VGltZXN0YW1wU2hhcmVk KSwKLQkJCQkJCQkJCSAmZm91bmQpOworCQkJCQkgLlBhZ2VQcmVjZWRlcyA9IENvbW1pdFRz UGFnZVByZWNlZGVzLAorCQkJCQkgLmVycmRldGFpbF9mb3JfaW9fZXJyb3IgPSBjb21taXRf dHNfZXJyZGV0YWlsX2Zvcl9pb19lcnJvciwKIAotCWlmICghSXNVbmRlclBvc3RtYXN0ZXIp Ci0JewotCQlBc3NlcnQoIWZvdW5kKTsKKwkJCQkJIC5zeW5jX2hhbmRsZXIgPSBTWU5DX0hB TkRMRVJfQ09NTUlUX1RTLAorCQkJCQkgLmJ1ZmZlcl90cmFuY2hlX2lkID0gTFdUUkFOQ0hF X0NPTU1JVFRTX0JVRkZFUiwKKwkJCQkJIC5iYW5rX3RyYW5jaGVfaWQgPSBMV1RSQU5DSEVf Q09NTUlUVFNfU0xSVSwKKwkJKTsKIAotCQljb21taXRUc1NoYXJlZC0+eGlkTGFzdENvbW1p dCA9IEludmFsaWRUcmFuc2FjdGlvbklkOwotCQlUSU1FU1RBTVBfTk9CRUdJTihjb21taXRU c1NoYXJlZC0+ZGF0YUxhc3RDb21taXQudGltZSk7Ci0JCWNvbW1pdFRzU2hhcmVkLT5kYXRh TGFzdENvbW1pdC5ub2RlaWQgPSBJbnZhbGlkUmVwbE9yaWdpbklkOwotCQljb21taXRUc1No YXJlZC0+Y29tbWl0VHNBY3RpdmUgPSBmYWxzZTsKLQl9Ci0JZWxzZQotCQlBc3NlcnQoZm91 bmQpOworCVNobWVtUmVxdWVzdFN0cnVjdCgubmFtZSA9ICJDb21taXRUcyBzaGFyZWQiLAor CQkJCQkgICAuc2l6ZSA9IHNpemVvZihDb21taXRUaW1lc3RhbXBTaGFyZWQpLAorCQkJCQkg ICAucHRyID0gKHZvaWQgKiopICZjb21taXRUc1NoYXJlZCwKKwkJKTsKK30KKworc3RhdGlj IHZvaWQKK0NvbW1pdFRzU2htZW1Jbml0KHZvaWQgKmFyZykKK3sKKwljb21taXRUc1NoYXJl ZC0+eGlkTGFzdENvbW1pdCA9IEludmFsaWRUcmFuc2FjdGlvbklkOworCVRJTUVTVEFNUF9O T0JFR0lOKGNvbW1pdFRzU2hhcmVkLT5kYXRhTGFzdENvbW1pdC50aW1lKTsKKwljb21taXRU c1NoYXJlZC0+ZGF0YUxhc3RDb21taXQubm9kZWlkID0gSW52YWxpZFJlcGxPcmlnaW5JZDsK Kwljb21taXRUc1NoYXJlZC0+Y29tbWl0VHNBY3RpdmUgPSBmYWxzZTsKKworCVNscnVQYWdl UHJlY2VkZXNVbml0VGVzdHMoQ29tbWl0VHNDdGwsIENPTU1JVF9UU19YQUNUU19QRVJfUEFH RSk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9t dWx0aXhhY3QuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL211bHRpeGFjdC5jCmlu ZGV4IDlmOGQ1NDJjMDk4Li5jYjc4YmEwODQyZCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0vbXVsdGl4YWN0LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3Ry YW5zYW0vbXVsdGl4YWN0LmMKQEAgLTgzLDYgKzgzLDcgQEAKICNpbmNsdWRlICJzdG9yYWdl L3Btc2lnbmFsLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9wcm9jYXJyYXkuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3N1YnN5c3RlbXMuaCIKICNp bmNsdWRlICJ1dGlscy9ndWNfaG9va3MuaCIKICNpbmNsdWRlICJ1dGlscy9pbmplY3Rpb25f cG9pbnQuaCIKICNpbmNsdWRlICJ1dGlscy9sc3lzY2FjaGUuaCIKQEAgLTExMywxMSArMTE0 LDE2IEBAIFByZXZpb3VzTXVsdGlYYWN0SWQoTXVsdGlYYWN0SWQgbXVsdGkpCiAvKgogICog TGlua3MgdG8gc2hhcmVkLW1lbW9yeSBkYXRhIHN0cnVjdHVyZXMgZm9yIE11bHRpWGFjdCBj b250cm9sCiAgKi8KLXN0YXRpYyBTbHJ1Q3RsRGF0YSBNdWx0aVhhY3RPZmZzZXRDdGxEYXRh Owotc3RhdGljIFNscnVDdGxEYXRhIE11bHRpWGFjdE1lbWJlckN0bERhdGE7CitzdGF0aWMg Ym9vbCBNdWx0aVhhY3RPZmZzZXRQYWdlUHJlY2VkZXMoaW50NjQgcGFnZTEsIGludDY0IHBh Z2UyKTsKK3N0YXRpYyBpbnQJTXVsdGlYYWN0T2Zmc2V0SW9FcnJvckRldGFpbChjb25zdCB2 b2lkICpvcGFxdWVfZGF0YSk7CitzdGF0aWMgYm9vbCBNdWx0aVhhY3RNZW1iZXJQYWdlUHJl Y2VkZXMoaW50NjQgcGFnZTEsIGludDY0IHBhZ2UyKTsKK3N0YXRpYyBpbnQJTXVsdGlYYWN0 TWVtYmVySW9FcnJvckRldGFpbChjb25zdCB2b2lkICpvcGFxdWVfZGF0YSk7CisKK3N0YXRp YyBTbHJ1RGVzYyBNdWx0aVhhY3RPZmZzZXRTbHJ1RGVzYzsKK3N0YXRpYyBTbHJ1RGVzYyBN dWx0aVhhY3RNZW1iZXJTbHJ1RGVzYzsKIAotI2RlZmluZSBNdWx0aVhhY3RPZmZzZXRDdGwJ KCZNdWx0aVhhY3RPZmZzZXRDdGxEYXRhKQotI2RlZmluZSBNdWx0aVhhY3RNZW1iZXJDdGwJ KCZNdWx0aVhhY3RNZW1iZXJDdGxEYXRhKQorI2RlZmluZSBNdWx0aVhhY3RPZmZzZXRDdGwJ KCZNdWx0aVhhY3RPZmZzZXRTbHJ1RGVzYykKKyNkZWZpbmUgTXVsdGlYYWN0TWVtYmVyQ3Rs CSgmTXVsdGlYYWN0TWVtYmVyU2xydURlc2MpCiAKIC8qCiAgKiBNdWx0aVhhY3Qgc3RhdGUg c2hhcmVkIGFjcm9zcyBhbGwgYmFja2VuZHMuICBBbGwgdGhpcyBzdGF0ZSBpcyBwcm90ZWN0 ZWQKQEAgLTIyMCw2ICsyMjYsMTUgQEAgc3RhdGljIE11bHRpWGFjdFN0YXRlRGF0YSAqTXVs dGlYYWN0U3RhdGU7CiBzdGF0aWMgTXVsdGlYYWN0SWQgKk9sZGVzdE1lbWJlck1YYWN0SWQ7 CiBzdGF0aWMgTXVsdGlYYWN0SWQgKk9sZGVzdFZpc2libGVNWGFjdElkOwogCitzdGF0aWMg dm9pZCBNdWx0aVhhY3RTaG1lbVJlcXVlc3Qodm9pZCAqYXJnKTsKK3N0YXRpYyB2b2lkIE11 bHRpWGFjdFNobWVtSW5pdCh2b2lkICphcmcpOworc3RhdGljIHZvaWQgTXVsdGlYYWN0U2ht ZW1BdHRhY2godm9pZCAqYXJnKTsKKworY29uc3QgU2htZW1DYWxsYmFja3MgTXVsdGlYYWN0 U2htZW1DYWxsYmFja3MgPSB7CisJLnJlcXVlc3RfZm4gPSBNdWx0aVhhY3RTaG1lbVJlcXVl c3QsCisJLmluaXRfZm4gPSBNdWx0aVhhY3RTaG1lbUluaXQsCisJLmF0dGFjaF9mbiA9IE11 bHRpWGFjdFNobWVtQXR0YWNoLAorfTsKIAogc3RhdGljIGlubGluZSBNdWx0aVhhY3RJZCAq CiBNeU9sZGVzdE1lbWJlck1YYWN0SWRTbG90KHZvaWQpCkBAIC0zMjEsMTAgKzMzNiw2IEBA IHR5cGVkZWYgc3RydWN0IE11bHRpWGFjdE1lbWJlclNscnVSZWFkQ29udGV4dAogCU11bHRp WGFjdE9mZnNldCBvZmZzZXQ7CiB9IE11bHRpWGFjdE1lbWJlclNscnVSZWFkQ29udGV4dDsK IAotc3RhdGljIGJvb2wgTXVsdGlYYWN0T2Zmc2V0UGFnZVByZWNlZGVzKGludDY0IHBhZ2Ux LCBpbnQ2NCBwYWdlMik7Ci1zdGF0aWMgYm9vbCBNdWx0aVhhY3RNZW1iZXJQYWdlUHJlY2Vk ZXMoaW50NjQgcGFnZTEsIGludDY0IHBhZ2UyKTsKLXN0YXRpYyBpbnQJTXVsdGlYYWN0T2Zm c2V0SW9FcnJvckRldGFpbChjb25zdCB2b2lkICpvcGFxdWVfZGF0YSk7Ci1zdGF0aWMgaW50 CU11bHRpWGFjdE1lbWJlcklvRXJyb3JEZXRhaWwoY29uc3Qgdm9pZCAqb3BhcXVlX2RhdGEp Owogc3RhdGljIHZvaWQgRXh0ZW5kTXVsdGlYYWN0T2Zmc2V0KE11bHRpWGFjdElkIG11bHRp KTsKIHN0YXRpYyB2b2lkIEV4dGVuZE11bHRpWGFjdE1lbWJlcihNdWx0aVhhY3RPZmZzZXQg b2Zmc2V0LCBpbnQgbm1lbWJlcnMpOwogc3RhdGljIHZvaWQgU2V0T2xkZXN0T2Zmc2V0KHZv aWQpOwpAQCAtMTc0Nyw4MyArMTc1OCw4MCBAQCBtdWx0aXhhY3RfdHdvcGhhc2VfcG9zdGFi b3J0KEZ1bGxUcmFuc2FjdGlvbklkIGZ4aWQsIHVpbnQxNiBpbmZvLAogCW11bHRpeGFjdF90 d29waGFzZV9wb3N0Y29tbWl0KGZ4aWQsIGluZm8sIHJlY2RhdGEsIGxlbik7CiB9CiAKKwog LyoKLSAqIEluaXRpYWxpemF0aW9uIG9mIHNoYXJlZCBtZW1vcnkgZm9yIE11bHRpWGFjdC4K LSAqCi0gKiBNdWx0aVhhY3RTaGFyZWRTdGF0ZVNobWVtU2l6ZSgpIGNhbGN1bGF0ZXMgdGhl IHNpemUgb2YgdGhlIE11bHRpWGFjdFN0YXRlCi0gKiBzdHJ1Y3QsIGFuZCB0aGUgdHdvIHBl ci1iYWNrZW5kIE11bHRpWGFjdElkIGFycmF5cy4gIFRoZXkgYXJlIGNhcnZlZCBvdXQgb2YK LSAqIHRoZSBzYW1lIGFsbG9jYXRpb24uICBNdWx0aVhhY3RTaG1lbVNpemUoKSBhZGRpdGlv bmFsbHkgaW5jbHVkZXMgdGhlIG1lbW9yeQotICogbmVlZGVkIGZvciB0aGUgdHdvIFNMUlUg YXJlYXMuCisgKiBSZWdpc3RlciBzaGFyZWQgbWVtb3J5IG5lZWRzIGZvciBNdWx0aVhhY3Qu CiAgKi8KLXN0YXRpYyBTaXplCi1NdWx0aVhhY3RTaGFyZWRTdGF0ZVNobWVtU2l6ZSh2b2lk KQorc3RhdGljIHZvaWQKK011bHRpWGFjdFNobWVtUmVxdWVzdCh2b2lkICphcmcpCiB7CiAJ U2l6ZQkJc2l6ZTsKIAorCS8qCisJICogQ2FsY3VsYXRlIHRoZSBzaXplIG9mIHRoZSBNdWx0 aVhhY3RTdGF0ZSBzdHJ1Y3QsIGFuZCB0aGUgdHdvCisJICogcGVyLWJhY2tlbmQgTXVsdGlY YWN0SWQgYXJyYXlzLiAgVGhleSBhcmUgY2FydmVkIG91dCBvZiB0aGUgc2FtZQorCSAqIGFs bG9jYXRpb24uCisJICovCiAJc2l6ZSA9IG9mZnNldG9mKE11bHRpWGFjdFN0YXRlRGF0YSwg cGVyQmFja2VuZFhhY3RJZHMpOwogCXNpemUgPSBhZGRfc2l6ZShzaXplLAogCQkJCQltdWxf c2l6ZShzaXplb2YoTXVsdGlYYWN0SWQpLCBOdW1NZW1iZXJTbG90cykpOwogCXNpemUgPSBh ZGRfc2l6ZShzaXplLAogCQkJCQltdWxfc2l6ZShzaXplb2YoTXVsdGlYYWN0SWQpLCBOdW1W aXNpYmxlU2xvdHMpKTsKLQlyZXR1cm4gc2l6ZTsKLX0KKwlTaG1lbVJlcXVlc3RTdHJ1Y3Qo Lm5hbWUgPSAiU2hhcmVkIE11bHRpWGFjdCBTdGF0ZSIsCisJCQkJCSAgIC5zaXplID0gc2l6 ZSwKKwkJCQkJICAgLnB0ciA9ICh2b2lkICoqKSAmTXVsdGlYYWN0U3RhdGUsCisJCSk7CiAK LVNpemUKLU11bHRpWGFjdFNobWVtU2l6ZSh2b2lkKQotewotCVNpemUJCXNpemU7CisJU2lt cGxlTHJ1UmVxdWVzdCguZGVzYyA9ICZNdWx0aVhhY3RPZmZzZXRTbHJ1RGVzYywKKwkJCQkJ IC5uYW1lID0gIm11bHRpeGFjdF9vZmZzZXQiLAorCQkJCQkgLkRpciA9ICJwZ19tdWx0aXhh Y3Qvb2Zmc2V0cyIsCisJCQkJCSAubG9uZ19zZWdtZW50X25hbWVzID0gZmFsc2UsCiAKLQlz aXplID0gTXVsdGlYYWN0U2hhcmVkU3RhdGVTaG1lbVNpemUoKTsKLQlzaXplID0gYWRkX3Np emUoc2l6ZSwgU2ltcGxlTHJ1U2htZW1TaXplKG11bHRpeGFjdF9vZmZzZXRfYnVmZmVycywg MCkpOwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBTaW1wbGVMcnVTaG1lbVNpemUobXVsdGl4 YWN0X21lbWJlcl9idWZmZXJzLCAwKSk7CisJCQkJCSAubnNsb3RzID0gbXVsdGl4YWN0X29m ZnNldF9idWZmZXJzLAogCi0JcmV0dXJuIHNpemU7Ci19CisJCQkJCSAuc3luY19oYW5kbGVy ID0gU1lOQ19IQU5ETEVSX01VTFRJWEFDVF9PRkZTRVQsCisJCQkJCSAuUGFnZVByZWNlZGVz ID0gTXVsdGlYYWN0T2Zmc2V0UGFnZVByZWNlZGVzLAorCQkJCQkgLmVycmRldGFpbF9mb3Jf aW9fZXJyb3IgPSBNdWx0aVhhY3RPZmZzZXRJb0Vycm9yRGV0YWlsLAogCi12b2lkCi1NdWx0 aVhhY3RTaG1lbUluaXQodm9pZCkKLXsKLQlib29sCQlmb3VuZDsKKwkJCQkJIC5idWZmZXJf dHJhbmNoZV9pZCA9IExXVFJBTkNIRV9NVUxUSVhBQ1RPRkZTRVRfQlVGRkVSLAorCQkJCQkg LmJhbmtfdHJhbmNoZV9pZCA9IExXVFJBTkNIRV9NVUxUSVhBQ1RPRkZTRVRfU0xSVSwKKwkJ KTsKIAotCWRlYnVnX2Vsb2cyKERFQlVHMiwgIlNoYXJlZCBNZW1vcnkgSW5pdCBmb3IgTXVs dGlYYWN0Iik7CisJU2ltcGxlTHJ1UmVxdWVzdCguZGVzYyA9ICZNdWx0aVhhY3RNZW1iZXJT bHJ1RGVzYywKKwkJCQkJIC5uYW1lID0gIm11bHRpeGFjdF9tZW1iZXIiLAorCQkJCQkgLkRp ciA9ICJwZ19tdWx0aXhhY3QvbWVtYmVycyIsCisJCQkJCSAubG9uZ19zZWdtZW50X25hbWVz ID0gdHJ1ZSwKIAotCU11bHRpWGFjdE9mZnNldEN0bC0+UGFnZVByZWNlZGVzID0gTXVsdGlY YWN0T2Zmc2V0UGFnZVByZWNlZGVzOwotCU11bHRpWGFjdE1lbWJlckN0bC0+UGFnZVByZWNl ZGVzID0gTXVsdGlYYWN0TWVtYmVyUGFnZVByZWNlZGVzOwotCU11bHRpWGFjdE9mZnNldEN0 bC0+ZXJyZGV0YWlsX2Zvcl9pb19lcnJvciA9IE11bHRpWGFjdE9mZnNldElvRXJyb3JEZXRh aWw7Ci0JTXVsdGlYYWN0TWVtYmVyQ3RsLT5lcnJkZXRhaWxfZm9yX2lvX2Vycm9yID0gTXVs dGlYYWN0TWVtYmVySW9FcnJvckRldGFpbDsKKwkJCQkJIC5uc2xvdHMgPSBtdWx0aXhhY3Rf bWVtYmVyX2J1ZmZlcnMsCiAKLQlTaW1wbGVMcnVJbml0KE11bHRpWGFjdE9mZnNldEN0bCwK LQkJCQkgICJtdWx0aXhhY3Rfb2Zmc2V0IiwgbXVsdGl4YWN0X29mZnNldF9idWZmZXJzLCAw LAotCQkJCSAgInBnX211bHRpeGFjdC9vZmZzZXRzIiwgTFdUUkFOQ0hFX01VTFRJWEFDVE9G RlNFVF9CVUZGRVIsCi0JCQkJICBMV1RSQU5DSEVfTVVMVElYQUNUT0ZGU0VUX1NMUlUsCi0J CQkJICBTWU5DX0hBTkRMRVJfTVVMVElYQUNUX09GRlNFVCwKLQkJCQkgIGZhbHNlKTsKLQlT bHJ1UGFnZVByZWNlZGVzVW5pdFRlc3RzKE11bHRpWGFjdE9mZnNldEN0bCwgTVVMVElYQUNU X09GRlNFVFNfUEVSX1BBR0UpOwotCVNpbXBsZUxydUluaXQoTXVsdGlYYWN0TWVtYmVyQ3Rs LAotCQkJCSAgIm11bHRpeGFjdF9tZW1iZXIiLCBtdWx0aXhhY3RfbWVtYmVyX2J1ZmZlcnMs IDAsCi0JCQkJICAicGdfbXVsdGl4YWN0L21lbWJlcnMiLCBMV1RSQU5DSEVfTVVMVElYQUNU TUVNQkVSX0JVRkZFUiwKLQkJCQkgIExXVFJBTkNIRV9NVUxUSVhBQ1RNRU1CRVJfU0xSVSwK LQkJCQkgIFNZTkNfSEFORExFUl9NVUxUSVhBQ1RfTUVNQkVSLAotCQkJCSAgdHJ1ZSk7Ci0J LyogZG9lc24ndCBjYWxsIFNpbXBsZUxydVRydW5jYXRlKCkgb3IgbWVldCBjcml0ZXJpYSBm b3IgdW5pdCB0ZXN0cyAqLwotCi0JLyogSW5pdGlhbGl6ZSBvdXIgc2hhcmVkIHN0YXRlIHN0 cnVjdCAqLwotCU11bHRpWGFjdFN0YXRlID0gU2htZW1Jbml0U3RydWN0KCJTaGFyZWQgTXVs dGlYYWN0IFN0YXRlIiwKLQkJCQkJCQkJCSBNdWx0aVhhY3RTaGFyZWRTdGF0ZVNobWVtU2l6 ZSgpLAotCQkJCQkJCQkJICZmb3VuZCk7Ci0JaWYgKCFJc1VuZGVyUG9zdG1hc3RlcikKLQl7 Ci0JCUFzc2VydCghZm91bmQpOworCQkJCQkgLnN5bmNfaGFuZGxlciA9IFNZTkNfSEFORExF Ul9NVUxUSVhBQ1RfTUVNQkVSLAorCQkJCQkgLlBhZ2VQcmVjZWRlcyA9IE11bHRpWGFjdE1l bWJlclBhZ2VQcmVjZWRlcywKKwkJCQkJIC5lcnJkZXRhaWxfZm9yX2lvX2Vycm9yID0gTXVs dGlYYWN0TWVtYmVySW9FcnJvckRldGFpbCwKIAotCQkvKiBNYWtlIHN1cmUgd2UgemVybyBv dXQgdGhlIHBlci1iYWNrZW5kIHN0YXRlICovCi0JCU1lbVNldChNdWx0aVhhY3RTdGF0ZSwg MCwgTXVsdGlYYWN0U2hhcmVkU3RhdGVTaG1lbVNpemUoKSk7Ci0JfQotCWVsc2UKLQkJQXNz ZXJ0KGZvdW5kKTsKKwkJCQkJIC5idWZmZXJfdHJhbmNoZV9pZCA9IExXVFJBTkNIRV9NVUxU SVhBQ1RNRU1CRVJfQlVGRkVSLAorCQkJCQkgLmJhbmtfdHJhbmNoZV9pZCA9IExXVFJBTkNI RV9NVUxUSVhBQ1RNRU1CRVJfU0xSVSwKKwkJKTsKK30KKworc3RhdGljIHZvaWQKK011bHRp WGFjdFNobWVtSW5pdCh2b2lkICphcmcpCit7CisJU2xydVBhZ2VQcmVjZWRlc1VuaXRUZXN0 cyhNdWx0aVhhY3RPZmZzZXRDdGwsIE1VTFRJWEFDVF9PRkZTRVRTX1BFUl9QQUdFKTsKIAog CS8qCi0JICogU2V0IHVwIGFycmF5IHBvaW50ZXJzLgorCSAqIG1lbWJlcnMgU0xSVSBkb2Vz bid0IGNhbGwgU2ltcGxlTHJ1VHJ1bmNhdGUoKSBvciBtZWV0IGNyaXRlcmlhIGZvciB1bml0 CisJICogdGVzdHMKIAkgKi8KKworCS8qIFNldCB1cCBhcnJheSBwb2ludGVycyAqLworCU9s ZGVzdE1lbWJlck1YYWN0SWQgPSBNdWx0aVhhY3RTdGF0ZS0+cGVyQmFja2VuZFhhY3RJZHM7 CisJT2xkZXN0VmlzaWJsZU1YYWN0SWQgPSBPbGRlc3RNZW1iZXJNWGFjdElkICsgTnVtTWVt YmVyU2xvdHM7Cit9CisKK3N0YXRpYyB2b2lkCitNdWx0aVhhY3RTaG1lbUF0dGFjaCh2b2lk ICphcmcpCit7CisJLyogU2V0IHVwIGFycmF5IHBvaW50ZXJzICovCiAJT2xkZXN0TWVtYmVy TVhhY3RJZCA9IE11bHRpWGFjdFN0YXRlLT5wZXJCYWNrZW5kWGFjdElkczsKIAlPbGRlc3RW aXNpYmxlTVhhY3RJZCA9IE9sZGVzdE1lbWJlck1YYWN0SWQgKyBOdW1NZW1iZXJTbG90czsK IH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3NscnUuYyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3NscnUuYwppbmRleCBhMmJiOGZhODAzMy4uNDdk ZDUyZDY3NDkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3NscnUu YworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9zbHJ1LmMKQEAgLTcwLDcgKzcw LDkgQEAKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2ZkLmgiCiAj aW5jbHVkZSAic3RvcmFnZS9zaG1lbS5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvc2htZW1faW50 ZXJuYWwuaCIKICNpbmNsdWRlICJ1dGlscy9ndWMuaCIKKyNpbmNsdWRlICJ1dGlscy9tZW11 dGlscy5oIgogI2luY2x1ZGUgInV0aWxzL3dhaXRfZXZlbnQuaCIKIAogLyoKQEAgLTg5LDkg KzkxLDkgQEAKICAqICBkaXIvMTIzNDU2IGZvciBbMl4yMCwgMl4yNC0xXQogICovCiBzdGF0 aWMgaW5saW5lIGludAotU2xydUZpbGVOYW1lKFNscnVDdGwgY3RsLCBjaGFyICpwYXRoLCBp bnQ2NCBzZWdubykKK1NscnVGaWxlTmFtZShTbHJ1RGVzYyAqY3RsLCBjaGFyICpwYXRoLCBp bnQ2NCBzZWdubykKIHsKLQlpZiAoY3RsLT5sb25nX3NlZ21lbnRfbmFtZXMpCisJaWYgKGN0 bC0+b3B0aW9ucy5sb25nX3NlZ21lbnRfbmFtZXMpCiAJewogCQkvKgogCQkgKiBXZSBjb3Vs ZCB1c2UgMTYgY2hhcmFjdGVycyBoZXJlIGJ1dCB0aGUgZGlzYWR2YW50YWdlIHdvdWxkIGJl IHRoYXQKQEAgLTEwMSw3ICsxMDMsNyBAQCBTbHJ1RmlsZU5hbWUoU2xydUN0bCBjdGwsIGNo YXIgKnBhdGgsIGludDY0IHNlZ25vKQogCQkgKiB0aGF0IGluIHRoZSBmdXR1cmUgd2UgY2Fu J3QgZGVjcmVhc2UgU0xSVV9QQUdFU19QRVJfU0VHTUVOVCBlYXNpbHkuCiAJCSAqLwogCQlB c3NlcnQoc2Vnbm8gPj0gMCAmJiBzZWdubyA8PSBJTlQ2NENPTlNUKDB4RkZGRkZGRkZGRkZG RkZGKSk7Ci0JCXJldHVybiBzbnByaW50ZihwYXRoLCBNQVhQR1BBVEgsICIlcy8lMDE1IiBQ UklYNjQsIGN0bC0+RGlyLCBzZWdubyk7CisJCXJldHVybiBzbnByaW50ZihwYXRoLCBNQVhQ R1BBVEgsICIlcy8lMDE1IiBQUklYNjQsIGN0bC0+b3B0aW9ucy5EaXIsIHNlZ25vKTsKIAl9 CiAJZWxzZQogCXsKQEAgLTExMCw3ICsxMTIsNyBAQCBTbHJ1RmlsZU5hbWUoU2xydUN0bCBj dGwsIGNoYXIgKnBhdGgsIGludDY0IHNlZ25vKQogCQkgKiBpbnRlZ2VycyBhcmUgYWxsb3dl ZC4gU2VlIFNscnVDb3JyZWN0U2VnbWVudEZpbGVuYW1lTGVuZ3RoKCkKIAkJICovCiAJCUFz c2VydChzZWdubyA+PSAwICYmIHNlZ25vIDw9IElOVDY0Q09OU1QoMHhGRkZGRkYpKTsKLQkJ cmV0dXJuIHNucHJpbnRmKHBhdGgsIE1BWFBHUEFUSCwgIiVzLyUwNFgiLCAoY3RsKS0+RGly LAorCQlyZXR1cm4gc25wcmludGYocGF0aCwgTUFYUEdQQVRILCAiJXMvJTA0WCIsIChjdGwp LT5vcHRpb25zLkRpciwKIAkJCQkJCSh1bnNpZ25lZCBpbnQpIHNlZ25vKTsKIAl9CiB9CkBA IC0xNzYsMTkgKzE3OCwxOSBAQCBzdGF0aWMgU2xydUVycm9yQ2F1c2Ugc2xydV9lcnJjYXVz ZTsKIHN0YXRpYyBpbnQJc2xydV9lcnJubzsKIAogCi1zdGF0aWMgdm9pZCBTaW1wbGVMcnVa ZXJvTFNOcyhTbHJ1Q3RsIGN0bCwgaW50IHNsb3Rubyk7Ci1zdGF0aWMgdm9pZCBTaW1wbGVM cnVXYWl0SU8oU2xydUN0bCBjdGwsIGludCBzbG90bm8pOwotc3RhdGljIHZvaWQgU2xydUlu dGVybmFsV3JpdGVQYWdlKFNscnVDdGwgY3RsLCBpbnQgc2xvdG5vLCBTbHJ1V3JpdGVBbGwg ZmRhdGEpOwotc3RhdGljIGJvb2wgU2xydVBoeXNpY2FsUmVhZFBhZ2UoU2xydUN0bCBjdGws IGludDY0IHBhZ2VubywgaW50IHNsb3Rubyk7Ci1zdGF0aWMgYm9vbCBTbHJ1UGh5c2ljYWxX cml0ZVBhZ2UoU2xydUN0bCBjdGwsIGludDY0IHBhZ2VubywgaW50IHNsb3RubywKK3N0YXRp YyB2b2lkIFNpbXBsZUxydVplcm9MU05zKFNscnVEZXNjICpjdGwsIGludCBzbG90bm8pOwor c3RhdGljIHZvaWQgU2ltcGxlTHJ1V2FpdElPKFNscnVEZXNjICpjdGwsIGludCBzbG90bm8p Oworc3RhdGljIHZvaWQgU2xydUludGVybmFsV3JpdGVQYWdlKFNscnVEZXNjICpjdGwsIGlu dCBzbG90bm8sIFNscnVXcml0ZUFsbCBmZGF0YSk7CitzdGF0aWMgYm9vbCBTbHJ1UGh5c2lj YWxSZWFkUGFnZShTbHJ1RGVzYyAqY3RsLCBpbnQ2NCBwYWdlbm8sIGludCBzbG90bm8pOwor c3RhdGljIGJvb2wgU2xydVBoeXNpY2FsV3JpdGVQYWdlKFNscnVEZXNjICpjdGwsIGludDY0 IHBhZ2VubywgaW50IHNsb3RubywKIAkJCQkJCQkJICBTbHJ1V3JpdGVBbGwgZmRhdGEpOwot c3RhdGljIHZvaWQgU2xydVJlcG9ydElPRXJyb3IoU2xydUN0bCBjdGwsIGludDY0IHBhZ2Vu bywKK3N0YXRpYyB2b2lkIFNscnVSZXBvcnRJT0Vycm9yKFNscnVEZXNjICpjdGwsIGludDY0 IHBhZ2VubywKIAkJCQkJCQkgIGNvbnN0IHZvaWQgKm9wYXF1ZV9kYXRhKTsKLXN0YXRpYyBp bnQJU2xydVNlbGVjdExSVVBhZ2UoU2xydUN0bCBjdGwsIGludDY0IHBhZ2Vubyk7CitzdGF0 aWMgaW50CVNscnVTZWxlY3RMUlVQYWdlKFNscnVEZXNjICpjdGwsIGludDY0IHBhZ2Vubyk7 CiAKLXN0YXRpYyBib29sIFNscnVTY2FuRGlyQ2JEZWxldGVDdXRvZmYoU2xydUN0bCBjdGws IGNoYXIgKmZpbGVuYW1lLAorc3RhdGljIGJvb2wgU2xydVNjYW5EaXJDYkRlbGV0ZUN1dG9m ZihTbHJ1RGVzYyAqY3RsLCBjaGFyICpmaWxlbmFtZSwKIAkJCQkJCQkJCSAgaW50NjQgc2Vn cGFnZSwgdm9pZCAqZGF0YSk7Ci1zdGF0aWMgdm9pZCBTbHJ1SW50ZXJuYWxEZWxldGVTZWdt ZW50KFNscnVDdGwgY3RsLCBpbnQ2NCBzZWdubyk7CitzdGF0aWMgdm9pZCBTbHJ1SW50ZXJu YWxEZWxldGVTZWdtZW50KFNscnVEZXNjICpjdGwsIGludDY0IHNlZ25vKTsKIHN0YXRpYyBp bmxpbmUgdm9pZCBTbHJ1UmVjZW50bHlVc2VkKFNscnVTaGFyZWQgc2hhcmVkLCBpbnQgc2xv dG5vKTsKIAogCkBAIC0xOTYsNyArMTk4LDcgQEAgc3RhdGljIGlubGluZSB2b2lkIFNscnVS ZWNlbnRseVVzZWQoU2xydVNoYXJlZCBzaGFyZWQsIGludCBzbG90bm8pOwogICogSW5pdGlh bGl6YXRpb24gb2Ygc2hhcmVkIG1lbW9yeQogICovCiAKLVNpemUKK3N0YXRpYyBTaXplCiBT aW1wbGVMcnVTaG1lbVNpemUoaW50IG5zbG90cywgaW50IG5sc25zKQogewogCWludAkJCW5i YW5rcyA9IG5zbG90cyAvIFNMUlVfQkFOS19TSVpFOwpAQCAtMjM4LDEyMCArMjQwLDEzNSBA QCBTaW1wbGVMcnVBdXRvdHVuZUJ1ZmZlcnMoaW50IGRpdmlzb3IsIGludCBtYXgpCiB9CiAK IC8qCi0gKiBJbml0aWFsaXplLCBvciBhdHRhY2ggdG8sIGEgc2ltcGxlIExSVSBjYWNoZSBp biBzaGFyZWQgbWVtb3J5LgotICoKLSAqIGN0bDogYWRkcmVzcyBvZiBsb2NhbCAodW5zaGFy ZWQpIGNvbnRyb2wgc3RydWN0dXJlLgotICogbmFtZTogbmFtZSBvZiBTTFJVLiAgKFRoaXMg aXMgdXNlci12aXNpYmxlLCBwaWNrIHdpdGggY2FyZSEpCi0gKiBuc2xvdHM6IG51bWJlciBv ZiBwYWdlIHNsb3RzIHRvIHVzZS4KLSAqIG5sc25zOiBudW1iZXIgb2YgTFNOIGdyb3VwcyBw ZXIgcGFnZSAoc2V0IHRvIHplcm8gaWYgbm90IHJlbGV2YW50KS4KLSAqIHN1YmRpcjogUEdE QVRBLXJlbGF0aXZlIHN1YmRpcmVjdG9yeSB0aGF0IHdpbGwgY29udGFpbiB0aGUgZmlsZXMu Ci0gKiBidWZmZXJfdHJhbmNoZV9pZDogdHJhbmNoZSBJRCB0byB1c2UgZm9yIHRoZSBTTFJV J3MgcGVyLWJ1ZmZlciBMV0xvY2tzLgotICogYmFua190cmFuY2hlX2lkOiB0cmFuY2hlIElE IHRvIHVzZSBmb3IgdGhlIGJhbmsgTFdMb2Nrcy4KLSAqIHN5bmNfaGFuZGxlcjogd2hpY2gg c2V0IG9mIGZ1bmN0aW9ucyB0byB1c2UgdG8gaGFuZGxlIHN5bmMgcmVxdWVzdHMKLSAqIGxv bmdfc2VnbWVudF9uYW1lczogdXNlIHNob3J0IG9yIGxvbmcgc2VnbWVudCBuYW1lcworICog UmVnaXN0ZXIgYSBzaW1wbGUgTFJVIGNhY2hlIGluIHNoYXJlZCBtZW1vcnkuCiAgKi8KIHZv aWQKLVNpbXBsZUxydUluaXQoU2xydUN0bCBjdGwsIGNvbnN0IGNoYXIgKm5hbWUsIGludCBu c2xvdHMsIGludCBubHNucywKLQkJCSAgY29uc3QgY2hhciAqc3ViZGlyLCBpbnQgYnVmZmVy X3RyYW5jaGVfaWQsIGludCBiYW5rX3RyYW5jaGVfaWQsCi0JCQkgIFN5bmNSZXF1ZXN0SGFu ZGxlciBzeW5jX2hhbmRsZXIsIGJvb2wgbG9uZ19zZWdtZW50X25hbWVzKQorU2ltcGxlTHJ1 UmVxdWVzdFdpdGhPcHRzKGNvbnN0IFNscnVPcHRzICpvcHRpb25zKQogeworCVNscnVPcHRz ICAgKm9wdGlvbnNfY29weTsKKworCUFzc2VydChvcHRpb25zLT5uYW1lICE9IE5VTEwpOwor CUFzc2VydChvcHRpb25zLT5uc2xvdHMgPiAwKTsKKwlBc3NlcnQob3B0aW9ucy0+UGFnZVBy ZWNlZGVzICE9IE5VTEwpOworCUFzc2VydChvcHRpb25zLT5lcnJkZXRhaWxfZm9yX2lvX2Vy cm9yICE9IE5VTEwpOworCisJb3B0aW9uc19jb3B5ID0gTWVtb3J5Q29udGV4dEFsbG9jKFRv cE1lbW9yeUNvbnRleHQsCisJCQkJCQkJCQkgIHNpemVvZihTbHJ1T3B0cykpOworCW1lbWNw eShvcHRpb25zX2NvcHksIG9wdGlvbnMsIHNpemVvZihTbHJ1T3B0cykpOworCisJb3B0aW9u c19jb3B5LT5iYXNlLm5hbWUgPSBvcHRpb25zLT5uYW1lOworCW9wdGlvbnNfY29weS0+YmFz ZS5zaXplID0gU2ltcGxlTHJ1U2htZW1TaXplKG9wdGlvbnNfY29weS0+bnNsb3RzLCBvcHRp b25zX2NvcHktPm5sc25zKTsKKworCVNobWVtUmVxdWVzdEludGVybmFsKCZvcHRpb25zX2Nv cHktPmJhc2UsIFNITUVNX0tJTkRfU0xSVSk7Cit9CisKKy8qIEluaXRpYWxpemUgbG9ja3Mg YW5kIHNoYXJlZCBtZW1vcnkgYXJlYSAqLwordm9pZAorc2htZW1fc2xydV9pbml0KHZvaWQg KmxvY2F0aW9uLCBTaG1lbVN0cnVjdE9wdHMgKmJhc2Vfb3B0aW9ucykKK3sKKwlTbHJ1T3B0 cyAgICpvcHRpb25zID0gKFNscnVPcHRzICopIGJhc2Vfb3B0aW9uczsKKwlTbHJ1RGVzYyAg ICpkZXNjID0gKFNscnVEZXNjICopIG9wdGlvbnMtPmRlc2M7CisJY2hhcgkJbmFtZWJ1ZltO QU1FREFUQUxFTl07CiAJU2xydVNoYXJlZAlzaGFyZWQ7Ci0JYm9vbAkJZm91bmQ7CisJaW50 CQkJbnNsb3RzID0gb3B0aW9ucy0+bnNsb3RzOwogCWludAkJCW5iYW5rcyA9IG5zbG90cyAv IFNMUlVfQkFOS19TSVpFOworCWludAkJCW5sc25zID0gb3B0aW9ucy0+bmxzbnM7CisJY2hh cgkgICAqcHRyOworCVNpemUJCW9mZnNldDsKKworCXNoYXJlZCA9IChTbHJ1U2hhcmVkKSBs b2NhdGlvbjsKKwlkZXNjLT5zaGFyZWQgPSBzaGFyZWQ7CisJZGVzYy0+bmJhbmtzID0gbmJh bmtzOworCW1lbWNweSgmZGVzYy0+b3B0aW9ucywgb3B0aW9ucywgc2l6ZW9mKFNscnVPcHRz KSk7CisKKwkvKiBhc3NpZ24gbmV3IHRyYW5jaGUgSURzLCBpZiBub3QgZ2l2ZW4gKi8KKwlp ZiAoZGVzYy0+b3B0aW9ucy5idWZmZXJfdHJhbmNoZV9pZCA9PSAwKQorCXsKKwkJc25wcmlu dGYobmFtZWJ1Ziwgc2l6ZW9mKG5hbWVidWYpLCAiJXMgYnVmZmVyIiwgZGVzYy0+b3B0aW9u cy5uYW1lKTsKKwkJZGVzYy0+b3B0aW9ucy5idWZmZXJfdHJhbmNoZV9pZCA9IExXTG9ja05l d1RyYW5jaGVJZChuYW1lYnVmKTsKKwl9CisJaWYgKGRlc2MtPm9wdGlvbnMuYmFua190cmFu Y2hlX2lkID09IDApCisJeworCQlzbnByaW50ZihuYW1lYnVmLCBzaXplb2YobmFtZWJ1Ziks ICIlcyBiYW5rIiwgZGVzYy0+b3B0aW9ucy5uYW1lKTsKKwkJZGVzYy0+b3B0aW9ucy5iYW5r X3RyYW5jaGVfaWQgPSBMV0xvY2tOZXdUcmFuY2hlSWQobmFtZWJ1Zik7CisJfQogCiAJQXNz ZXJ0KG5zbG90cyA8PSBTTFJVX01BWF9BTExPV0VEX0JVRkZFUlMpOwogCi0JQXNzZXJ0KGN0 bC0+UGFnZVByZWNlZGVzICE9IE5VTEwpOwotCUFzc2VydChjdGwtPmVycmRldGFpbF9mb3Jf aW9fZXJyb3IgIT0gTlVMTCk7CisJbWVtc2V0KHNoYXJlZCwgMCwgc2l6ZW9mKFNscnVTaGFy ZWREYXRhKSk7CiAKLQlzaGFyZWQgPSAoU2xydVNoYXJlZCkgU2htZW1Jbml0U3RydWN0KG5h bWUsCi0JCQkJCQkJCQkJICBTaW1wbGVMcnVTaG1lbVNpemUobnNsb3RzLCBubHNucyksCi0J CQkJCQkJCQkJICAmZm91bmQpOworCXNoYXJlZC0+bnVtX3Nsb3RzID0gbnNsb3RzOworCXNo YXJlZC0+bHNuX2dyb3Vwc19wZXJfcGFnZSA9IG5sc25zOwogCi0JaWYgKCFJc1VuZGVyUG9z dG1hc3RlcikKLQl7Ci0JCS8qIEluaXRpYWxpemUgbG9ja3MgYW5kIHNoYXJlZCBtZW1vcnkg YXJlYSAqLwotCQljaGFyCSAgICpwdHI7Ci0JCVNpemUJCW9mZnNldDsKLQotCQlBc3NlcnQo IWZvdW5kKTsKLQotCQltZW1zZXQoc2hhcmVkLCAwLCBzaXplb2YoU2xydVNoYXJlZERhdGEp KTsKLQotCQlzaGFyZWQtPm51bV9zbG90cyA9IG5zbG90czsKLQkJc2hhcmVkLT5sc25fZ3Jv dXBzX3Blcl9wYWdlID0gbmxzbnM7Ci0KLQkJcGdfYXRvbWljX2luaXRfdTY0KCZzaGFyZWQt PmxhdGVzdF9wYWdlX251bWJlciwgMCk7Ci0KLQkJc2hhcmVkLT5zbHJ1X3N0YXRzX2lkeCA9 IHBnc3RhdF9nZXRfc2xydV9pbmRleChuYW1lKTsKLQotCQlwdHIgPSAoY2hhciAqKSBzaGFy ZWQ7Ci0JCW9mZnNldCA9IE1BWEFMSUdOKHNpemVvZihTbHJ1U2hhcmVkRGF0YSkpOwotCQlz aGFyZWQtPnBhZ2VfYnVmZmVyID0gKGNoYXIgKiopIChwdHIgKyBvZmZzZXQpOwotCQlvZmZz ZXQgKz0gTUFYQUxJR04obnNsb3RzICogc2l6ZW9mKGNoYXIgKikpOwotCQlzaGFyZWQtPnBh Z2Vfc3RhdHVzID0gKFNscnVQYWdlU3RhdHVzICopIChwdHIgKyBvZmZzZXQpOwotCQlvZmZz ZXQgKz0gTUFYQUxJR04obnNsb3RzICogc2l6ZW9mKFNscnVQYWdlU3RhdHVzKSk7Ci0JCXNo YXJlZC0+cGFnZV9kaXJ0eSA9IChib29sICopIChwdHIgKyBvZmZzZXQpOwotCQlvZmZzZXQg Kz0gTUFYQUxJR04obnNsb3RzICogc2l6ZW9mKGJvb2wpKTsKLQkJc2hhcmVkLT5wYWdlX251 bWJlciA9IChpbnQ2NCAqKSAocHRyICsgb2Zmc2V0KTsKLQkJb2Zmc2V0ICs9IE1BWEFMSUdO KG5zbG90cyAqIHNpemVvZihpbnQ2NCkpOwotCQlzaGFyZWQtPnBhZ2VfbHJ1X2NvdW50ID0g KGludCAqKSAocHRyICsgb2Zmc2V0KTsKLQkJb2Zmc2V0ICs9IE1BWEFMSUdOKG5zbG90cyAq IHNpemVvZihpbnQpKTsKLQotCQkvKiBJbml0aWFsaXplIExXTG9ja3MgKi8KLQkJc2hhcmVk LT5idWZmZXJfbG9ja3MgPSAoTFdMb2NrUGFkZGVkICopIChwdHIgKyBvZmZzZXQpOwotCQlv ZmZzZXQgKz0gTUFYQUxJR04obnNsb3RzICogc2l6ZW9mKExXTG9ja1BhZGRlZCkpOwotCQlz aGFyZWQtPmJhbmtfbG9ja3MgPSAoTFdMb2NrUGFkZGVkICopIChwdHIgKyBvZmZzZXQpOwot CQlvZmZzZXQgKz0gTUFYQUxJR04obmJhbmtzICogc2l6ZW9mKExXTG9ja1BhZGRlZCkpOwot CQlzaGFyZWQtPmJhbmtfY3VyX2xydV9jb3VudCA9IChpbnQgKikgKHB0ciArIG9mZnNldCk7 Ci0JCW9mZnNldCArPSBNQVhBTElHTihuYmFua3MgKiBzaXplb2YoaW50KSk7Ci0KLQkJaWYg KG5sc25zID4gMCkKLQkJewotCQkJc2hhcmVkLT5ncm91cF9sc24gPSAoWExvZ1JlY1B0ciAq KSAocHRyICsgb2Zmc2V0KTsKLQkJCW9mZnNldCArPSBNQVhBTElHTihuc2xvdHMgKiBubHNu cyAqIHNpemVvZihYTG9nUmVjUHRyKSk7Ci0JCX0KKwlwZ19hdG9taWNfaW5pdF91NjQoJnNo YXJlZC0+bGF0ZXN0X3BhZ2VfbnVtYmVyLCAwKTsKIAotCQlwdHIgKz0gQlVGRkVSQUxJR04o b2Zmc2V0KTsKLQkJZm9yIChpbnQgc2xvdG5vID0gMDsgc2xvdG5vIDwgbnNsb3RzOyBzbG90 bm8rKykKLQkJewotCQkJTFdMb2NrSW5pdGlhbGl6ZSgmc2hhcmVkLT5idWZmZXJfbG9ja3Nb c2xvdG5vXS5sb2NrLAotCQkJCQkJCSBidWZmZXJfdHJhbmNoZV9pZCk7CisJc2hhcmVkLT5z bHJ1X3N0YXRzX2lkeCA9IHBnc3RhdF9nZXRfc2xydV9pbmRleChkZXNjLT5vcHRpb25zLm5h bWUpOwogCi0JCQlzaGFyZWQtPnBhZ2VfYnVmZmVyW3Nsb3Rub10gPSBwdHI7Ci0JCQlzaGFy ZWQtPnBhZ2Vfc3RhdHVzW3Nsb3Rub10gPSBTTFJVX1BBR0VfRU1QVFk7Ci0JCQlzaGFyZWQt PnBhZ2VfZGlydHlbc2xvdG5vXSA9IGZhbHNlOwotCQkJc2hhcmVkLT5wYWdlX2xydV9jb3Vu dFtzbG90bm9dID0gMDsKLQkJCXB0ciArPSBCTENLU1o7Ci0JCX0KKwlwdHIgPSAoY2hhciAq KSBzaGFyZWQ7CisJb2Zmc2V0ID0gTUFYQUxJR04oc2l6ZW9mKFNscnVTaGFyZWREYXRhKSk7 CisJc2hhcmVkLT5wYWdlX2J1ZmZlciA9IChjaGFyICoqKSAocHRyICsgb2Zmc2V0KTsKKwlv ZmZzZXQgKz0gTUFYQUxJR04obnNsb3RzICogc2l6ZW9mKGNoYXIgKikpOworCXNoYXJlZC0+ cGFnZV9zdGF0dXMgPSAoU2xydVBhZ2VTdGF0dXMgKikgKHB0ciArIG9mZnNldCk7CisJb2Zm c2V0ICs9IE1BWEFMSUdOKG5zbG90cyAqIHNpemVvZihTbHJ1UGFnZVN0YXR1cykpOworCXNo YXJlZC0+cGFnZV9kaXJ0eSA9IChib29sICopIChwdHIgKyBvZmZzZXQpOworCW9mZnNldCAr PSBNQVhBTElHTihuc2xvdHMgKiBzaXplb2YoYm9vbCkpOworCXNoYXJlZC0+cGFnZV9udW1i ZXIgPSAoaW50NjQgKikgKHB0ciArIG9mZnNldCk7CisJb2Zmc2V0ICs9IE1BWEFMSUdOKG5z bG90cyAqIHNpemVvZihpbnQ2NCkpOworCXNoYXJlZC0+cGFnZV9scnVfY291bnQgPSAoaW50 ICopIChwdHIgKyBvZmZzZXQpOworCW9mZnNldCArPSBNQVhBTElHTihuc2xvdHMgKiBzaXpl b2YoaW50KSk7CiAKLQkJLyogSW5pdGlhbGl6ZSB0aGUgc2xvdCBiYW5rcy4gKi8KLQkJZm9y IChpbnQgYmFua25vID0gMDsgYmFua25vIDwgbmJhbmtzOyBiYW5rbm8rKykKLQkJewotCQkJ TFdMb2NrSW5pdGlhbGl6ZSgmc2hhcmVkLT5iYW5rX2xvY2tzW2Jhbmtub10ubG9jaywgYmFu a190cmFuY2hlX2lkKTsKLQkJCXNoYXJlZC0+YmFua19jdXJfbHJ1X2NvdW50W2Jhbmtub10g PSAwOwotCQl9CisJLyogSW5pdGlhbGl6ZSBMV0xvY2tzICovCisJc2hhcmVkLT5idWZmZXJf bG9ja3MgPSAoTFdMb2NrUGFkZGVkICopIChwdHIgKyBvZmZzZXQpOworCW9mZnNldCArPSBN QVhBTElHTihuc2xvdHMgKiBzaXplb2YoTFdMb2NrUGFkZGVkKSk7CisJc2hhcmVkLT5iYW5r X2xvY2tzID0gKExXTG9ja1BhZGRlZCAqKSAocHRyICsgb2Zmc2V0KTsKKwlvZmZzZXQgKz0g TUFYQUxJR04obmJhbmtzICogc2l6ZW9mKExXTG9ja1BhZGRlZCkpOworCXNoYXJlZC0+YmFu a19jdXJfbHJ1X2NvdW50ID0gKGludCAqKSAocHRyICsgb2Zmc2V0KTsKKwlvZmZzZXQgKz0g TUFYQUxJR04obmJhbmtzICogc2l6ZW9mKGludCkpOwogCi0JCS8qIFNob3VsZCBmaXQgdG8g ZXN0aW1hdGVkIHNobWVtIHNpemUgKi8KLQkJQXNzZXJ0KHB0ciAtIChjaGFyICopIHNoYXJl ZCA8PSBTaW1wbGVMcnVTaG1lbVNpemUobnNsb3RzLCBubHNucykpOworCWlmIChubHNucyA+ IDApCisJeworCQlzaGFyZWQtPmdyb3VwX2xzbiA9IChYTG9nUmVjUHRyICopIChwdHIgKyBv ZmZzZXQpOworCQlvZmZzZXQgKz0gTUFYQUxJR04obnNsb3RzICogbmxzbnMgKiBzaXplb2Yo WExvZ1JlY1B0cikpOwogCX0KLQllbHNlCisKKwlwdHIgKz0gQlVGRkVSQUxJR04ob2Zmc2V0 KTsKKwlmb3IgKGludCBzbG90bm8gPSAwOyBzbG90bm8gPCBuc2xvdHM7IHNsb3RubysrKQog CXsKLQkJQXNzZXJ0KGZvdW5kKTsKLQkJQXNzZXJ0KHNoYXJlZC0+bnVtX3Nsb3RzID09IG5z bG90cyk7CisJCUxXTG9ja0luaXRpYWxpemUoJnNoYXJlZC0+YnVmZmVyX2xvY2tzW3Nsb3Ru b10ubG9jaywKKwkJCQkJCSBkZXNjLT5vcHRpb25zLmJ1ZmZlcl90cmFuY2hlX2lkKTsKKwor CQlzaGFyZWQtPnBhZ2VfYnVmZmVyW3Nsb3Rub10gPSBwdHI7CisJCXNoYXJlZC0+cGFnZV9z dGF0dXNbc2xvdG5vXSA9IFNMUlVfUEFHRV9FTVBUWTsKKwkJc2hhcmVkLT5wYWdlX2RpcnR5 W3Nsb3Rub10gPSBmYWxzZTsKKwkJc2hhcmVkLT5wYWdlX2xydV9jb3VudFtzbG90bm9dID0g MDsKKwkJcHRyICs9IEJMQ0tTWjsKIAl9CiAKLQkvKgotCSAqIEluaXRpYWxpemUgdGhlIHVu c2hhcmVkIGNvbnRyb2wgc3RydWN0LCBpbmNsdWRpbmcgZGlyZWN0b3J5IHBhdGguIFdlCi0J ICogYXNzdW1lIGNhbGxlciBzZXQgUGFnZVByZWNlZGVzLgotCSAqLwotCWN0bC0+c2hhcmVk ID0gc2hhcmVkOwotCWN0bC0+c3luY19oYW5kbGVyID0gc3luY19oYW5kbGVyOwotCWN0bC0+ bG9uZ19zZWdtZW50X25hbWVzID0gbG9uZ19zZWdtZW50X25hbWVzOwotCWN0bC0+bmJhbmtz ID0gbmJhbmtzOwotCXN0cmxjcHkoY3RsLT5EaXIsIHN1YmRpciwgc2l6ZW9mKGN0bC0+RGly KSk7CisJLyogSW5pdGlhbGl6ZSB0aGUgc2xvdCBiYW5rcy4gKi8KKwlmb3IgKGludCBiYW5r bm8gPSAwOyBiYW5rbm8gPCBuYmFua3M7IGJhbmtubysrKQorCXsKKwkJTFdMb2NrSW5pdGlh bGl6ZSgmc2hhcmVkLT5iYW5rX2xvY2tzW2Jhbmtub10ubG9jaywgZGVzYy0+b3B0aW9ucy5i YW5rX3RyYW5jaGVfaWQpOworCQlzaGFyZWQtPmJhbmtfY3VyX2xydV9jb3VudFtiYW5rbm9d ID0gMDsKKwl9CisKKwkvKiBTaG91bGQgZml0IHRvIGVzdGltYXRlZCBzaG1lbSBzaXplICov CisJQXNzZXJ0KHB0ciAtIChjaGFyICopIHNoYXJlZCA8PSBTaW1wbGVMcnVTaG1lbVNpemUo bnNsb3RzLCBubHNucykpOworfQorCit2b2lkCitzaG1lbV9zbHJ1X2F0dGFjaCh2b2lkICps b2NhdGlvbiwgU2htZW1TdHJ1Y3RPcHRzICpiYXNlX29wdGlvbnMpCit7CisJU2xydU9wdHMg ICAqb3B0aW9ucyA9IChTbHJ1T3B0cyAqKSBiYXNlX29wdGlvbnM7CisJU2xydURlc2MgICAq ZGVzYyA9IChTbHJ1RGVzYyAqKSBvcHRpb25zLT5kZXNjOworCWludAkJCW5zbG90cyA9IG9w dGlvbnMtPm5zbG90czsKKwlpbnQJCQluYmFua3MgPSBuc2xvdHMgLyBTTFJVX0JBTktfU0la RTsKKworCWRlc2MtPnNoYXJlZCA9IChTbHJ1U2hhcmVkKSBsb2NhdGlvbjsKKwlkZXNjLT5u YmFua3MgPSBuYmFua3M7CisJbWVtY3B5KCZkZXNjLT5vcHRpb25zLCBvcHRpb25zLCBzaXpl b2YoU2xydU9wdHMpKTsKIH0KIAorCiAvKgogICogSGVscGVyIGZ1bmN0aW9uIGZvciBHVUMg Y2hlY2tfaG9vayB0byBjaGVjayB3aGV0aGVyIHNscnUgYnVmZmVycyBhcmUgaW4KICAqIG11 bHRpcGxlcyBvZiBTTFJVX0JBTktfU0laRS4KQEAgLTM3Nyw3ICszOTQsNyBAQCBjaGVja19z bHJ1X2J1ZmZlcnMoY29uc3QgY2hhciAqbmFtZSwgaW50ICpuZXd2YWwpCiAgKiBCYW5rIGxv Y2sgbXVzdCBiZSBoZWxkIGF0IGVudHJ5LCBhbmQgd2lsbCBiZSBoZWxkIGF0IGV4aXQuCiAg Ki8KIGludAotU2ltcGxlTHJ1WmVyb1BhZ2UoU2xydUN0bCBjdGwsIGludDY0IHBhZ2VubykK K1NpbXBsZUxydVplcm9QYWdlKFNscnVEZXNjICpjdGwsIGludDY0IHBhZ2VubykKIHsKIAlT bHJ1U2hhcmVkCXNoYXJlZCA9IGN0bC0+c2hhcmVkOwogCWludAkJCXNsb3RubzsKQEAgLTQz MCw3ICs0NDcsNyBAQCBTaW1wbGVMcnVaZXJvUGFnZShTbHJ1Q3RsIGN0bCwgaW50NjQgcGFn ZW5vKQogICogVGhpcyBhc3N1bWVzIHRoYXQgSW52YWxpZFhMb2dSZWNQdHIgaXMgYml0d2lz ZS1hbGwtMC4KICAqLwogc3RhdGljIHZvaWQKLVNpbXBsZUxydVplcm9MU05zKFNscnVDdGwg Y3RsLCBpbnQgc2xvdG5vKQorU2ltcGxlTHJ1WmVyb0xTTnMoU2xydURlc2MgKmN0bCwgaW50 IHNsb3RubykKIHsKIAlTbHJ1U2hhcmVkCXNoYXJlZCA9IGN0bC0+c2hhcmVkOwogCkBAIC00 NDYsNyArNDYzLDcgQEAgU2ltcGxlTHJ1WmVyb0xTTnMoU2xydUN0bCBjdGwsIGludCBzbG90 bm8pCiAgKiBTTFJVIGJhbmsgbG9jayBpcyBhY3F1aXJlZCBhbmQgcmVsZWFzZWQgaGVyZS4K ICAqLwogdm9pZAotU2ltcGxlTHJ1WmVyb0FuZFdyaXRlUGFnZShTbHJ1Q3RsIGN0bCwgaW50 NjQgcGFnZW5vKQorU2ltcGxlTHJ1WmVyb0FuZFdyaXRlUGFnZShTbHJ1RGVzYyAqY3RsLCBp bnQ2NCBwYWdlbm8pCiB7CiAJaW50CQkJc2xvdG5vOwogCUxXTG9jawkgICAqbG9jazsKQEAg LTQ3Miw3ICs0ODksNyBAQCBTaW1wbGVMcnVaZXJvQW5kV3JpdGVQYWdlKFNscnVDdGwgY3Rs LCBpbnQ2NCBwYWdlbm8pCiAgKiBCYW5rIGxvY2sgbXVzdCBiZSBoZWxkIGF0IGVudHJ5LCBh bmQgd2lsbCBiZSBoZWxkIGF0IGV4aXQuCiAgKi8KIHN0YXRpYyB2b2lkCi1TaW1wbGVMcnVX YWl0SU8oU2xydUN0bCBjdGwsIGludCBzbG90bm8pCitTaW1wbGVMcnVXYWl0SU8oU2xydURl c2MgKmN0bCwgaW50IHNsb3RubykKIHsKIAlTbHJ1U2hhcmVkCXNoYXJlZCA9IGN0bC0+c2hh cmVkOwogCWludAkJCWJhbmtubyA9IFNsb3RHZXRCYW5rTnVtYmVyKHNsb3Rubyk7CkBAIC01 MzAsNyArNTQ3LDcgQEAgU2ltcGxlTHJ1V2FpdElPKFNscnVDdGwgY3RsLCBpbnQgc2xvdG5v KQogICogVGhlIGNvcnJlY3QgYmFuayBsb2NrIG11c3QgYmUgaGVsZCBhdCBlbnRyeSwgYW5k IHdpbGwgYmUgaGVsZCBhdCBleGl0LgogICovCiBpbnQKLVNpbXBsZUxydVJlYWRQYWdlKFNs cnVDdGwgY3RsLCBpbnQ2NCBwYWdlbm8sIGJvb2wgd3JpdGVfb2ssCitTaW1wbGVMcnVSZWFk UGFnZShTbHJ1RGVzYyAqY3RsLCBpbnQ2NCBwYWdlbm8sIGJvb2wgd3JpdGVfb2ssCiAJCQkJ ICBjb25zdCB2b2lkICpvcGFxdWVfZGF0YSkKIHsKIAlTbHJ1U2hhcmVkCXNoYXJlZCA9IGN0 bC0+c2hhcmVkOwpAQCAtNjM0LDcgKzY1MSw3IEBAIFNpbXBsZUxydVJlYWRQYWdlKFNscnVD dGwgY3RsLCBpbnQ2NCBwYWdlbm8sIGJvb2wgd3JpdGVfb2ssCiAgKiBJdCBpcyB1bnNwZWNp ZmllZCB3aGV0aGVyIHRoZSBsb2NrIHdpbGwgYmUgc2hhcmVkIG9yIGV4Y2x1c2l2ZS4KICAq LwogaW50Ci1TaW1wbGVMcnVSZWFkUGFnZV9SZWFkT25seShTbHJ1Q3RsIGN0bCwgaW50NjQg cGFnZW5vLCBjb25zdCB2b2lkICpvcGFxdWVfZGF0YSkKK1NpbXBsZUxydVJlYWRQYWdlX1Jl YWRPbmx5KFNscnVEZXNjICpjdGwsIGludDY0IHBhZ2VubywgY29uc3Qgdm9pZCAqb3BhcXVl X2RhdGEpCiB7CiAJU2xydVNoYXJlZAlzaGFyZWQgPSBjdGwtPnNoYXJlZDsKIAlMV0xvY2sJ ICAgKmJhbmtsb2NrID0gU2ltcGxlTHJ1R2V0QmFua0xvY2soY3RsLCBwYWdlbm8pOwpAQCAt NjgxLDcgKzY5OCw3IEBAIFNpbXBsZUxydVJlYWRQYWdlX1JlYWRPbmx5KFNscnVDdGwgY3Rs LCBpbnQ2NCBwYWdlbm8sIGNvbnN0IHZvaWQgKm9wYXF1ZV9kYXRhKQogICogQmFuayBsb2Nr IG11c3QgYmUgaGVsZCBhdCBlbnRyeSwgYW5kIHdpbGwgYmUgaGVsZCBhdCBleGl0LgogICov CiBzdGF0aWMgdm9pZAotU2xydUludGVybmFsV3JpdGVQYWdlKFNscnVDdGwgY3RsLCBpbnQg c2xvdG5vLCBTbHJ1V3JpdGVBbGwgZmRhdGEpCitTbHJ1SW50ZXJuYWxXcml0ZVBhZ2UoU2xy dURlc2MgKmN0bCwgaW50IHNsb3RubywgU2xydVdyaXRlQWxsIGZkYXRhKQogewogCVNscnVT aGFyZWQJc2hhcmVkID0gY3RsLT5zaGFyZWQ7CiAJaW50NjQJCXBhZ2VubyA9IHNoYXJlZC0+ cGFnZV9udW1iZXJbc2xvdG5vXTsKQEAgLTc2MSw3ICs3NzgsNyBAQCBTbHJ1SW50ZXJuYWxX cml0ZVBhZ2UoU2xydUN0bCBjdGwsIGludCBzbG90bm8sIFNscnVXcml0ZUFsbCBmZGF0YSkK ICAqIGZkYXRhIGlzIGFsd2F5cyBwYXNzZWQgYSBOVUxMIGhlcmUuCiAgKi8KIHZvaWQKLVNp bXBsZUxydVdyaXRlUGFnZShTbHJ1Q3RsIGN0bCwgaW50IHNsb3RubykKK1NpbXBsZUxydVdy aXRlUGFnZShTbHJ1RGVzYyAqY3RsLCBpbnQgc2xvdG5vKQogewogCUFzc2VydChjdGwtPnNo YXJlZC0+cGFnZV9zdGF0dXNbc2xvdG5vXSAhPSBTTFJVX1BBR0VfRU1QVFkpOwogCkBAIC03 NzUsNyArNzkyLDcgQEAgU2ltcGxlTHJ1V3JpdGVQYWdlKFNscnVDdGwgY3RsLCBpbnQgc2xv dG5vKQogICogbGFyZ2UgZW5vdWdoIHRvIGNvbnRhaW4gdGhlIGdpdmVuIHBhZ2UuCiAgKi8K IGJvb2wKLVNpbXBsZUxydURvZXNQaHlzaWNhbFBhZ2VFeGlzdChTbHJ1Q3RsIGN0bCwgaW50 NjQgcGFnZW5vKQorU2ltcGxlTHJ1RG9lc1BoeXNpY2FsUGFnZUV4aXN0KFNscnVEZXNjICpj dGwsIGludDY0IHBhZ2VubykKIHsKIAlpbnQ2NAkJc2Vnbm8gPSBwYWdlbm8gLyBTTFJVX1BB R0VTX1BFUl9TRUdNRU5UOwogCWludAkJCXJwYWdlbm8gPSBwYWdlbm8gJSBTTFJVX1BBR0VT X1BFUl9TRUdNRU5UOwpAQCAtODMzLDcgKzg1MCw3IEBAIFNpbXBsZUxydURvZXNQaHlzaWNh bFBhZ2VFeGlzdChTbHJ1Q3RsIGN0bCwgaW50NjQgcGFnZW5vKQogICogcmVhZC93cml0ZSBv cGVyYXRpb25zLiAgV2UgY291bGQgY2FjaGUgb25lIHZpcnR1YWwgZmlsZSBwb2ludGVyIC4u LgogICovCiBzdGF0aWMgYm9vbAotU2xydVBoeXNpY2FsUmVhZFBhZ2UoU2xydUN0bCBjdGws IGludDY0IHBhZ2VubywgaW50IHNsb3RubykKK1NscnVQaHlzaWNhbFJlYWRQYWdlKFNscnVE ZXNjICpjdGwsIGludDY0IHBhZ2VubywgaW50IHNsb3RubykKIHsKIAlTbHJ1U2hhcmVkCXNo YXJlZCA9IGN0bC0+c2hhcmVkOwogCWludDY0CQlzZWdubyA9IHBhZ2VubyAvIFNMUlVfUEFH RVNfUEVSX1NFR01FTlQ7CkBAIC05MDUsNyArOTIyLDcgQEAgU2xydVBoeXNpY2FsUmVhZFBh Z2UoU2xydUN0bCBjdGwsIGludDY0IHBhZ2VubywgaW50IHNsb3RubykKICAqIFNpbXBsZUxy dVdyaXRlQWxsLgogICovCiBzdGF0aWMgYm9vbAotU2xydVBoeXNpY2FsV3JpdGVQYWdlKFNs cnVDdGwgY3RsLCBpbnQ2NCBwYWdlbm8sIGludCBzbG90bm8sIFNscnVXcml0ZUFsbCBmZGF0 YSkKK1NscnVQaHlzaWNhbFdyaXRlUGFnZShTbHJ1RGVzYyAqY3RsLCBpbnQ2NCBwYWdlbm8s IGludCBzbG90bm8sIFNscnVXcml0ZUFsbCBmZGF0YSkKIHsKIAlTbHJ1U2hhcmVkCXNoYXJl ZCA9IGN0bC0+c2hhcmVkOwogCWludDY0CQlzZWdubyA9IHBhZ2VubyAvIFNMUlVfUEFHRVNf UEVSX1NFR01FTlQ7CkBAIC0xMDM3LDExICsxMDU0LDExIEBAIFNscnVQaHlzaWNhbFdyaXRl UGFnZShTbHJ1Q3RsIGN0bCwgaW50NjQgcGFnZW5vLCBpbnQgc2xvdG5vLCBTbHJ1V3JpdGVB bGwgZmRhdGEpCiAJcGdzdGF0X3JlcG9ydF93YWl0X2VuZCgpOwogCiAJLyogUXVldWUgdXAg YSBzeW5jIHJlcXVlc3QgZm9yIHRoZSBjaGVja3BvaW50ZXIuICovCi0JaWYgKGN0bC0+c3lu Y19oYW5kbGVyICE9IFNZTkNfSEFORExFUl9OT05FKQorCWlmIChjdGwtPm9wdGlvbnMuc3lu Y19oYW5kbGVyICE9IFNZTkNfSEFORExFUl9OT05FKQogCXsKIAkJRmlsZVRhZwkJdGFnOwog Ci0JCUlOSVRfU0xSVUZJTEVUQUcodGFnLCBjdGwtPnN5bmNfaGFuZGxlciwgc2Vnbm8pOwor CQlJTklUX1NMUlVGSUxFVEFHKHRhZywgY3RsLT5vcHRpb25zLnN5bmNfaGFuZGxlciwgc2Vn bm8pOwogCQlpZiAoIVJlZ2lzdGVyU3luY1JlcXVlc3QoJnRhZywgU1lOQ19SRVFVRVNULCBm YWxzZSkpCiAJCXsKIAkJCS8qIE5vIHNwYWNlIHRvIGVucXVldWUgc3luYyByZXF1ZXN0LiAg RG8gaXQgc3luY2hyb25vdXNseS4gKi8KQEAgLTEwNzcsNyArMTA5NCw3IEBAIFNscnVQaHlz aWNhbFdyaXRlUGFnZShTbHJ1Q3RsIGN0bCwgaW50NjQgcGFnZW5vLCBpbnQgc2xvdG5vLCBT bHJ1V3JpdGVBbGwgZmRhdGEpCiAgKiBTbHJ1UGh5c2ljYWxXcml0ZVBhZ2UuICBDYWxsIHRo aXMgYWZ0ZXIgY2xlYW5pbmcgdXAgc2hhcmVkLW1lbW9yeSBzdGF0ZS4KICAqLwogc3RhdGlj IHZvaWQKLVNscnVSZXBvcnRJT0Vycm9yKFNscnVDdGwgY3RsLCBpbnQ2NCBwYWdlbm8sIGNv bnN0IHZvaWQgKm9wYXF1ZV9kYXRhKQorU2xydVJlcG9ydElPRXJyb3IoU2xydURlc2MgKmN0 bCwgaW50NjQgcGFnZW5vLCBjb25zdCB2b2lkICpvcGFxdWVfZGF0YSkKIHsKIAlpbnQ2NAkJ c2Vnbm8gPSBwYWdlbm8gLyBTTFJVX1BBR0VTX1BFUl9TRUdNRU5UOwogCWludAkJCXJwYWdl bm8gPSBwYWdlbm8gJSBTTFJVX1BBR0VTX1BFUl9TRUdNRU5UOwpAQCAtMTA5MiwxNCArMTEw OSwxNCBAQCBTbHJ1UmVwb3J0SU9FcnJvcihTbHJ1Q3RsIGN0bCwgaW50NjQgcGFnZW5vLCBj b25zdCB2b2lkICpvcGFxdWVfZGF0YSkKIAkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCShlcnJj b2RlX2Zvcl9maWxlX2FjY2VzcygpLAogCQkJCQkgZXJybXNnKCJjb3VsZCBub3Qgb3BlbiBm aWxlIFwiJXNcIjogJW0iLCBwYXRoKSwKLQkJCQkJIG9wYXF1ZV9kYXRhID8gY3RsLT5lcnJk ZXRhaWxfZm9yX2lvX2Vycm9yKG9wYXF1ZV9kYXRhKSA6IDApKTsKKwkJCQkJIG9wYXF1ZV9k YXRhID8gY3RsLT5vcHRpb25zLmVycmRldGFpbF9mb3JfaW9fZXJyb3Iob3BhcXVlX2RhdGEp IDogMCkpOwogCQkJYnJlYWs7CiAJCWNhc2UgU0xSVV9TRUVLX0ZBSUxFRDoKIAkJCWVyZXBv cnQoRVJST1IsCiAJCQkJCShlcnJjb2RlX2Zvcl9maWxlX2FjY2VzcygpLAogCQkJCQkgZXJy bXNnKCJjb3VsZCBub3Qgc2VlayBpbiBmaWxlIFwiJXNcIiB0byBvZmZzZXQgJWQ6ICVtIiwK IAkJCQkJCQlwYXRoLCBvZmZzZXQpLAotCQkJCQkgb3BhcXVlX2RhdGEgPyBjdGwtPmVycmRl dGFpbF9mb3JfaW9fZXJyb3Iob3BhcXVlX2RhdGEpIDogMCkpOworCQkJCQkgb3BhcXVlX2Rh dGEgPyBjdGwtPm9wdGlvbnMuZXJyZGV0YWlsX2Zvcl9pb19lcnJvcihvcGFxdWVfZGF0YSkg OiAwKSk7CiAJCQlicmVhazsKIAkJY2FzZSBTTFJVX1JFQURfRkFJTEVEOgogCQkJaWYgKGVy cm5vKQpAQCAtMTEwNywxMiArMTEyNCwxMiBAQCBTbHJ1UmVwb3J0SU9FcnJvcihTbHJ1Q3Rs IGN0bCwgaW50NjQgcGFnZW5vLCBjb25zdCB2b2lkICpvcGFxdWVfZGF0YSkKIAkJCQkJCShl cnJjb2RlX2Zvcl9maWxlX2FjY2VzcygpLAogCQkJCQkJIGVycm1zZygiY291bGQgbm90IHJl YWQgZnJvbSBmaWxlIFwiJXNcIiBhdCBvZmZzZXQgJWQ6ICVtIiwKIAkJCQkJCQkJcGF0aCwg b2Zmc2V0KSwKLQkJCQkJCSBvcGFxdWVfZGF0YSA/IGN0bC0+ZXJyZGV0YWlsX2Zvcl9pb19l cnJvcihvcGFxdWVfZGF0YSkgOiAwKSk7CisJCQkJCQkgb3BhcXVlX2RhdGEgPyBjdGwtPm9w dGlvbnMuZXJyZGV0YWlsX2Zvcl9pb19lcnJvcihvcGFxdWVfZGF0YSkgOiAwKSk7CiAJCQll bHNlCiAJCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJCShlcnJtc2coImNvdWxkIG5vdCByZWFk IGZyb20gZmlsZSBcIiVzXCIgYXQgb2Zmc2V0ICVkOiByZWFkIHRvbyBmZXcgYnl0ZXMiLAog CQkJCQkJCQlwYXRoLCBvZmZzZXQpLAotCQkJCQkJIG9wYXF1ZV9kYXRhID8gY3RsLT5lcnJk ZXRhaWxfZm9yX2lvX2Vycm9yKG9wYXF1ZV9kYXRhKSA6IDApKTsKKwkJCQkJCSBvcGFxdWVf ZGF0YSA/IGN0bC0+b3B0aW9ucy5lcnJkZXRhaWxfZm9yX2lvX2Vycm9yKG9wYXF1ZV9kYXRh KSA6IDApKTsKIAkJCWJyZWFrOwogCQljYXNlIFNMUlVfV1JJVEVfRkFJTEVEOgogCQkJaWYg KGVycm5vKQpAQCAtMTEyMCwyNiArMTEzNywyNiBAQCBTbHJ1UmVwb3J0SU9FcnJvcihTbHJ1 Q3RsIGN0bCwgaW50NjQgcGFnZW5vLCBjb25zdCB2b2lkICpvcGFxdWVfZGF0YSkKIAkJCQkJ CShlcnJjb2RlX2Zvcl9maWxlX2FjY2VzcygpLAogCQkJCQkJIGVycm1zZygiQ291bGQgbm90 IHdyaXRlIHRvIGZpbGUgXCIlc1wiIGF0IG9mZnNldCAlZDogJW0iLAogCQkJCQkJCQlwYXRo LCBvZmZzZXQpLAotCQkJCQkJIG9wYXF1ZV9kYXRhID8gY3RsLT5lcnJkZXRhaWxfZm9yX2lv X2Vycm9yKG9wYXF1ZV9kYXRhKSA6IDApKTsKKwkJCQkJCSBvcGFxdWVfZGF0YSA/IGN0bC0+ b3B0aW9ucy5lcnJkZXRhaWxfZm9yX2lvX2Vycm9yKG9wYXF1ZV9kYXRhKSA6IDApKTsKIAkJ CWVsc2UKIAkJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkJKGVycm1zZygiQ291bGQgbm90IHdy aXRlIHRvIGZpbGUgXCIlc1wiIGF0IG9mZnNldCAlZDogd3JvdGUgdG9vIGZldyBieXRlcy4i LAogCQkJCQkJCQlwYXRoLCBvZmZzZXQpLAotCQkJCQkJIG9wYXF1ZV9kYXRhID8gY3RsLT5l cnJkZXRhaWxfZm9yX2lvX2Vycm9yKG9wYXF1ZV9kYXRhKSA6IDApKTsKKwkJCQkJCSBvcGFx dWVfZGF0YSA/IGN0bC0+b3B0aW9ucy5lcnJkZXRhaWxfZm9yX2lvX2Vycm9yKG9wYXF1ZV9k YXRhKSA6IDApKTsKIAkJCWJyZWFrOwogCQljYXNlIFNMUlVfRlNZTkNfRkFJTEVEOgogCQkJ ZXJlcG9ydChkYXRhX3N5bmNfZWxldmVsKEVSUk9SKSwKIAkJCQkJKGVycmNvZGVfZm9yX2Zp bGVfYWNjZXNzKCksCiAJCQkJCSBlcnJtc2coImNvdWxkIG5vdCBmc3luYyBmaWxlIFwiJXNc IjogJW0iLAogCQkJCQkJCXBhdGgpLAotCQkJCQkgb3BhcXVlX2RhdGEgPyBjdGwtPmVycmRl dGFpbF9mb3JfaW9fZXJyb3Iob3BhcXVlX2RhdGEpIDogMCkpOworCQkJCQkgb3BhcXVlX2Rh dGEgPyBjdGwtPm9wdGlvbnMuZXJyZGV0YWlsX2Zvcl9pb19lcnJvcihvcGFxdWVfZGF0YSkg OiAwKSk7CiAJCQlicmVhazsKIAkJY2FzZSBTTFJVX0NMT1NFX0ZBSUxFRDoKIAkJCWVyZXBv cnQoRVJST1IsCiAJCQkJCShlcnJjb2RlX2Zvcl9maWxlX2FjY2VzcygpLAogCQkJCQkgZXJy bXNnKCJjb3VsZCBub3QgY2xvc2UgZmlsZSBcIiVzXCI6ICVtIiwKIAkJCQkJCQlwYXRoKSwK LQkJCQkJIG9wYXF1ZV9kYXRhID8gY3RsLT5lcnJkZXRhaWxfZm9yX2lvX2Vycm9yKG9wYXF1 ZV9kYXRhKSA6IDApKTsKKwkJCQkJIG9wYXF1ZV9kYXRhID8gY3RsLT5vcHRpb25zLmVycmRl dGFpbF9mb3JfaW9fZXJyb3Iob3BhcXVlX2RhdGEpIDogMCkpOwogCQkJYnJlYWs7CiAJCWRl ZmF1bHQ6CiAJCQkvKiBjYW4ndCBnZXQgaGVyZSwgd2UgdHJ1c3QgKi8KQEAgLTExOTksNyAr MTIxNiw3IEBAIFNscnVSZWNlbnRseVVzZWQoU2xydVNoYXJlZCBzaGFyZWQsIGludCBzbG90 bm8pCiAgKiBUaGUgY29ycmVjdCBiYW5rIGxvY2sgbXVzdCBiZSBoZWxkIGF0IGVudHJ5LCBh bmQgd2lsbCBiZSBoZWxkIGF0IGV4aXQuCiAgKi8KIHN0YXRpYyBpbnQKLVNscnVTZWxlY3RM UlVQYWdlKFNscnVDdGwgY3RsLCBpbnQ2NCBwYWdlbm8pCitTbHJ1U2VsZWN0TFJVUGFnZShT bHJ1RGVzYyAqY3RsLCBpbnQ2NCBwYWdlbm8pCiB7CiAJU2xydVNoYXJlZAlzaGFyZWQgPSBj dGwtPnNoYXJlZDsKIApAQCAtMTI5MSw4ICsxMzA4LDggQEAgU2xydVNlbGVjdExSVVBhZ2Uo U2xydUN0bCBjdGwsIGludDY0IHBhZ2VubykKIAkJCXsKIAkJCQlpZiAodGhpc19kZWx0YSA+ IGJlc3RfdmFsaWRfZGVsdGEgfHwKIAkJCQkJKHRoaXNfZGVsdGEgPT0gYmVzdF92YWxpZF9k ZWx0YSAmJgotCQkJCQkgY3RsLT5QYWdlUHJlY2VkZXModGhpc19wYWdlX251bWJlciwKLQkJ CQkJCQkJCSAgIGJlc3RfdmFsaWRfcGFnZV9udW1iZXIpKSkKKwkJCQkJIGN0bC0+b3B0aW9u cy5QYWdlUHJlY2VkZXModGhpc19wYWdlX251bWJlciwKKwkJCQkJCQkJCQkJICAgYmVzdF92 YWxpZF9wYWdlX251bWJlcikpKQogCQkJCXsKIAkJCQkJYmVzdHZhbGlkc2xvdCA9IHNsb3Ru bzsKIAkJCQkJYmVzdF92YWxpZF9kZWx0YSA9IHRoaXNfZGVsdGE7CkBAIC0xMzAzLDggKzEz MjAsOCBAQCBTbHJ1U2VsZWN0TFJVUGFnZShTbHJ1Q3RsIGN0bCwgaW50NjQgcGFnZW5vKQog CQkJewogCQkJCWlmICh0aGlzX2RlbHRhID4gYmVzdF9pbnZhbGlkX2RlbHRhIHx8CiAJCQkJ CSh0aGlzX2RlbHRhID09IGJlc3RfaW52YWxpZF9kZWx0YSAmJgotCQkJCQkgY3RsLT5QYWdl UHJlY2VkZXModGhpc19wYWdlX251bWJlciwKLQkJCQkJCQkJCSAgIGJlc3RfaW52YWxpZF9w YWdlX251bWJlcikpKQorCQkJCQkgY3RsLT5vcHRpb25zLlBhZ2VQcmVjZWRlcyh0aGlzX3Bh Z2VfbnVtYmVyLAorCQkJCQkJCQkJCQkgICBiZXN0X2ludmFsaWRfcGFnZV9udW1iZXIpKSkK IAkJCQl7CiAJCQkJCWJlc3RpbnZhbGlkc2xvdCA9IHNsb3RubzsKIAkJCQkJYmVzdF9pbnZh bGlkX2RlbHRhID0gdGhpc19kZWx0YTsKQEAgLTEzNTIsNyArMTM2OSw3IEBAIFNscnVTZWxl Y3RMUlVQYWdlKFNscnVDdGwgY3RsLCBpbnQ2NCBwYWdlbm8pCiAgKiBlbnRyaWVzIGFyZSBv biBkaXNrLgogICovCiB2b2lkCi1TaW1wbGVMcnVXcml0ZUFsbChTbHJ1Q3RsIGN0bCwgYm9v bCBhbGxvd19yZWRpcnRpZWQpCitTaW1wbGVMcnVXcml0ZUFsbChTbHJ1RGVzYyAqY3RsLCBi b29sIGFsbG93X3JlZGlydGllZCkKIHsKIAlTbHJ1U2hhcmVkCXNoYXJlZCA9IGN0bC0+c2hh cmVkOwogCVNscnVXcml0ZUFsbERhdGEgZmRhdGE7CkBAIC0xNDIyLDggKzE0MzksOCBAQCBT aW1wbGVMcnVXcml0ZUFsbChTbHJ1Q3RsIGN0bCwgYm9vbCBhbGxvd19yZWRpcnRpZWQpCiAJ CVNscnVSZXBvcnRJT0Vycm9yKGN0bCwgcGFnZW5vLCBOVUxMKTsKIAogCS8qIEVuc3VyZSB0 aGF0IGRpcmVjdG9yeSBlbnRyaWVzIGZvciBuZXcgZmlsZXMgYXJlIG9uIGRpc2suICovCi0J aWYgKGN0bC0+c3luY19oYW5kbGVyICE9IFNZTkNfSEFORExFUl9OT05FKQotCQlmc3luY19m bmFtZShjdGwtPkRpciwgdHJ1ZSk7CisJaWYgKGN0bC0+b3B0aW9ucy5zeW5jX2hhbmRsZXIg IT0gU1lOQ19IQU5ETEVSX05PTkUpCisJCWZzeW5jX2ZuYW1lKGN0bC0+b3B0aW9ucy5EaXIs IHRydWUpOwogfQogCiAvKgpAQCAtMTQzOCw3ICsxNDU1LDcgQEAgU2ltcGxlTHJ1V3JpdGVB bGwoU2xydUN0bCBjdGwsIGJvb2wgYWxsb3dfcmVkaXJ0aWVkKQogICogYWZ0ZXIgaXQgaGFz IGFjY3J1ZWQgZnJlc2hseS13cml0dGVuIGRhdGEuCiAgKi8KIHZvaWQKLVNpbXBsZUxydVRy dW5jYXRlKFNscnVDdGwgY3RsLCBpbnQ2NCBjdXRvZmZQYWdlKQorU2ltcGxlTHJ1VHJ1bmNh dGUoU2xydURlc2MgKmN0bCwgaW50NjQgY3V0b2ZmUGFnZSkKIHsKIAlTbHJ1U2hhcmVkCXNo YXJlZCA9IGN0bC0+c2hhcmVkOwogCWludAkJCXByZXZiYW5rOwpAQCAtMTQ2MCwxMiArMTQ3 NywxMiBAQCByZXN0YXJ0OgogCSAqIGJ1Z3MgZWxzZXdoZXJlIGluIFNMUlUgaGFuZGxpbmcs IHNvIHdlIGRvbid0IGNhcmUgaWYgd2UgcmVhZCBhIHNsaWdodGx5CiAJICogb3V0ZGF0ZWQg dmFsdWU7IHRoZXJlZm9yZSB3ZSBkb24ndCBhZGQgYSBtZW1vcnkgYmFycmllci4KIAkgKi8K LQlpZiAoY3RsLT5QYWdlUHJlY2VkZXMocGdfYXRvbWljX3JlYWRfdTY0KCZzaGFyZWQtPmxh dGVzdF9wYWdlX251bWJlciksCi0JCQkJCQkgIGN1dG9mZlBhZ2UpKQorCWlmIChjdGwtPm9w dGlvbnMuUGFnZVByZWNlZGVzKHBnX2F0b21pY19yZWFkX3U2NCgmc2hhcmVkLT5sYXRlc3Rf cGFnZV9udW1iZXIpLAorCQkJCQkJCQkgIGN1dG9mZlBhZ2UpKQogCXsKIAkJZXJlcG9ydChM T0csCiAJCQkJKGVycm1zZygiY291bGQgbm90IHRydW5jYXRlIGRpcmVjdG9yeSBcIiVzXCI6 IGFwcGFyZW50IHdyYXBhcm91bmQiLAotCQkJCQkJY3RsLT5EaXIpKSk7CisJCQkJCQljdGwt Pm9wdGlvbnMuRGlyKSkpOwogCQlyZXR1cm47CiAJfQogCkBAIC0xNDg4LDcgKzE1MDUsNyBA QCByZXN0YXJ0OgogCiAJCWlmIChzaGFyZWQtPnBhZ2Vfc3RhdHVzW3Nsb3Rub10gPT0gU0xS VV9QQUdFX0VNUFRZKQogCQkJY29udGludWU7Ci0JCWlmICghY3RsLT5QYWdlUHJlY2VkZXMo c2hhcmVkLT5wYWdlX251bWJlcltzbG90bm9dLCBjdXRvZmZQYWdlKSkKKwkJaWYgKCFjdGwt Pm9wdGlvbnMuUGFnZVByZWNlZGVzKHNoYXJlZC0+cGFnZV9udW1iZXJbc2xvdG5vXSwgY3V0 b2ZmUGFnZSkpCiAJCQljb250aW51ZTsKIAogCQkvKgpAQCAtMTUzMywxNiArMTU1MCwxNiBA QCByZXN0YXJ0OgogICogdGhleSBlaXRoZXIgY2FuJ3QgeWV0IGNvbnRhaW4gYW55dGhpbmcs IG9yIGhhdmUgYWxyZWFkeSBiZWVuIGNsZWFuZWQgb3V0LgogICovCiBzdGF0aWMgdm9pZAot U2xydUludGVybmFsRGVsZXRlU2VnbWVudChTbHJ1Q3RsIGN0bCwgaW50NjQgc2Vnbm8pCitT bHJ1SW50ZXJuYWxEZWxldGVTZWdtZW50KFNscnVEZXNjICpjdGwsIGludDY0IHNlZ25vKQog ewogCWNoYXIJCXBhdGhbTUFYUEdQQVRIXTsKIAogCS8qIEZvcmdldCBhbnkgZnN5bmMgcmVx dWVzdHMgcXVldWVkIGZvciB0aGlzIHNlZ21lbnQuICovCi0JaWYgKGN0bC0+c3luY19oYW5k bGVyICE9IFNZTkNfSEFORExFUl9OT05FKQorCWlmIChjdGwtPm9wdGlvbnMuc3luY19oYW5k bGVyICE9IFNZTkNfSEFORExFUl9OT05FKQogCXsKIAkJRmlsZVRhZwkJdGFnOwogCi0JCUlO SVRfU0xSVUZJTEVUQUcodGFnLCBjdGwtPnN5bmNfaGFuZGxlciwgc2Vnbm8pOworCQlJTklU X1NMUlVGSUxFVEFHKHRhZywgY3RsLT5vcHRpb25zLnN5bmNfaGFuZGxlciwgc2Vnbm8pOwog CQlSZWdpc3RlclN5bmNSZXF1ZXN0KCZ0YWcsIFNZTkNfRk9SR0VUX1JFUVVFU1QsIHRydWUp OwogCX0KIApAQCAtMTU1Niw3ICsxNTczLDcgQEAgU2xydUludGVybmFsRGVsZXRlU2VnbWVu dChTbHJ1Q3RsIGN0bCwgaW50NjQgc2Vnbm8pCiAgKiBEZWxldGUgYW4gaW5kaXZpZHVhbCBT TFJVIHNlZ21lbnQsIGlkZW50aWZpZWQgYnkgdGhlIHNlZ21lbnQgbnVtYmVyLgogICovCiB2 b2lkCi1TbHJ1RGVsZXRlU2VnbWVudChTbHJ1Q3RsIGN0bCwgaW50NjQgc2Vnbm8pCitTbHJ1 RGVsZXRlU2VnbWVudChTbHJ1RGVzYyAqY3RsLCBpbnQ2NCBzZWdubykKIHsKIAlTbHJ1U2hh cmVkCXNoYXJlZCA9IGN0bC0+c2hhcmVkOwogCWludAkJCXByZXZiYW5rID0gU2xvdEdldEJh bmtOdW1iZXIoMCk7CkBAIC0xNjMzLDE5ICsxNjUwLDE5IEBAIHJlc3RhcnQ6CiAgKiBmaXJz dD49Y3V0b2ZmICYmIGxhc3Q+PWN1dG9mZjogbm87IGV2ZXJ5IHBhZ2Ugb2YgdGhpcyBzZWdt ZW50IGlzIHRvbyB5b3VuZwogICovCiBzdGF0aWMgYm9vbAotU2xydU1heURlbGV0ZVNlZ21l bnQoU2xydUN0bCBjdGwsIGludDY0IHNlZ3BhZ2UsIGludDY0IGN1dG9mZlBhZ2UpCitTbHJ1 TWF5RGVsZXRlU2VnbWVudChTbHJ1RGVzYyAqY3RsLCBpbnQ2NCBzZWdwYWdlLCBpbnQ2NCBj dXRvZmZQYWdlKQogewogCWludDY0CQlzZWdfbGFzdF9wYWdlID0gc2VncGFnZSArIFNMUlVf UEFHRVNfUEVSX1NFR01FTlQgLSAxOwogCiAJQXNzZXJ0KHNlZ3BhZ2UgJSBTTFJVX1BBR0VT X1BFUl9TRUdNRU5UID09IDApOwogCi0JcmV0dXJuIChjdGwtPlBhZ2VQcmVjZWRlcyhzZWdw YWdlLCBjdXRvZmZQYWdlKSAmJgotCQkJY3RsLT5QYWdlUHJlY2VkZXMoc2VnX2xhc3RfcGFn ZSwgY3V0b2ZmUGFnZSkpOworCXJldHVybiAoY3RsLT5vcHRpb25zLlBhZ2VQcmVjZWRlcyhz ZWdwYWdlLCBjdXRvZmZQYWdlKSAmJgorCQkJY3RsLT5vcHRpb25zLlBhZ2VQcmVjZWRlcyhz ZWdfbGFzdF9wYWdlLCBjdXRvZmZQYWdlKSk7CiB9CiAKICNpZmRlZiBVU0VfQVNTRVJUX0NI RUNLSU5HCiBzdGF0aWMgdm9pZAotU2xydVBhZ2VQcmVjZWRlc1Rlc3RPZmZzZXQoU2xydUN0 bCBjdGwsIGludCBwZXJfcGFnZSwgdWludDMyIG9mZnNldCkKK1NscnVQYWdlUHJlY2VkZXNU ZXN0T2Zmc2V0KFNscnVEZXNjICpjdGwsIGludCBwZXJfcGFnZSwgdWludDMyIG9mZnNldCkK IHsKIAlUcmFuc2FjdGlvbklkIGxocywKIAkJCQlyaHM7CkBAIC0xNjU0LDYgKzE2NzEsOSBA QCBTbHJ1UGFnZVByZWNlZGVzVGVzdE9mZnNldChTbHJ1Q3RsIGN0bCwgaW50IHBlcl9wYWdl LCB1aW50MzIgb2Zmc2V0KQogCVRyYW5zYWN0aW9uSWQgbmV3ZXN0WGFjdCwKIAkJCQlvbGRl c3RYYWN0OwogCisJLyogVGhpcyBtdXN0IGJlIGNhbGxlZCBhZnRlciB0aGUgU2xydSBoYXMg YmVlbiBpbml0aWFsaXplZCAqLworCUFzc2VydChjdGwtPm9wdGlvbnMuUGFnZVByZWNlZGVz KTsKKwogCS8qCiAJICogQ29tcGFyZSBhbiBYSUQgcGFpciBoYXZpbmcgdW5kZWZpbmVkIG9y ZGVyIChzZWUgUkZDIDE5ODIpLCBhIHBhaXIgYXQKIAkgKiAib3Bwb3NpdGUgZW5kcyIgb2Yg dGhlIFhJRCBzcGFjZS4gIFRyYW5zYWN0aW9uSWRQcmVjZWRlcygpIHRyZWF0cyBlYWNoCkBA IC0xNjcwLDE5ICsxNjkwLDE5IEBAIFNscnVQYWdlUHJlY2VkZXNUZXN0T2Zmc2V0KFNscnVD dGwgY3RsLCBpbnQgcGVyX3BhZ2UsIHVpbnQzMiBvZmZzZXQpCiAJQXNzZXJ0KCFUcmFuc2Fj dGlvbklkUHJlY2VkZXMocmhzLCBsaHMgKyAxKSk7CiAJQXNzZXJ0KCFUcmFuc2FjdGlvbklk Rm9sbG93c09yRXF1YWxzKGxocywgcmhzKSk7CiAJQXNzZXJ0KCFUcmFuc2FjdGlvbklkRm9s bG93c09yRXF1YWxzKHJocywgbGhzKSk7Ci0JQXNzZXJ0KCFjdGwtPlBhZ2VQcmVjZWRlcyhs aHMgLyBwZXJfcGFnZSwgbGhzIC8gcGVyX3BhZ2UpKTsKLQlBc3NlcnQoIWN0bC0+UGFnZVBy ZWNlZGVzKGxocyAvIHBlcl9wYWdlLCByaHMgLyBwZXJfcGFnZSkpOwotCUFzc2VydCghY3Rs LT5QYWdlUHJlY2VkZXMocmhzIC8gcGVyX3BhZ2UsIGxocyAvIHBlcl9wYWdlKSk7Ci0JQXNz ZXJ0KCFjdGwtPlBhZ2VQcmVjZWRlcygobGhzIC0gcGVyX3BhZ2UpIC8gcGVyX3BhZ2UsIHJo cyAvIHBlcl9wYWdlKSk7Ci0JQXNzZXJ0KGN0bC0+UGFnZVByZWNlZGVzKHJocyAvIHBlcl9w YWdlLCAobGhzIC0gMyAqIHBlcl9wYWdlKSAvIHBlcl9wYWdlKSk7Ci0JQXNzZXJ0KGN0bC0+ UGFnZVByZWNlZGVzKHJocyAvIHBlcl9wYWdlLCAobGhzIC0gMiAqIHBlcl9wYWdlKSAvIHBl cl9wYWdlKSk7Ci0JQXNzZXJ0KGN0bC0+UGFnZVByZWNlZGVzKHJocyAvIHBlcl9wYWdlLCAo bGhzIC0gMSAqIHBlcl9wYWdlKSAvIHBlcl9wYWdlKQorCUFzc2VydCghY3RsLT5vcHRpb25z LlBhZ2VQcmVjZWRlcyhsaHMgLyBwZXJfcGFnZSwgbGhzIC8gcGVyX3BhZ2UpKTsKKwlBc3Nl cnQoIWN0bC0+b3B0aW9ucy5QYWdlUHJlY2VkZXMobGhzIC8gcGVyX3BhZ2UsIHJocyAvIHBl cl9wYWdlKSk7CisJQXNzZXJ0KCFjdGwtPm9wdGlvbnMuUGFnZVByZWNlZGVzKHJocyAvIHBl cl9wYWdlLCBsaHMgLyBwZXJfcGFnZSkpOworCUFzc2VydCghY3RsLT5vcHRpb25zLlBhZ2VQ cmVjZWRlcygobGhzIC0gcGVyX3BhZ2UpIC8gcGVyX3BhZ2UsIHJocyAvIHBlcl9wYWdlKSk7 CisJQXNzZXJ0KGN0bC0+b3B0aW9ucy5QYWdlUHJlY2VkZXMocmhzIC8gcGVyX3BhZ2UsIChs aHMgLSAzICogcGVyX3BhZ2UpIC8gcGVyX3BhZ2UpKTsKKwlBc3NlcnQoY3RsLT5vcHRpb25z LlBhZ2VQcmVjZWRlcyhyaHMgLyBwZXJfcGFnZSwgKGxocyAtIDIgKiBwZXJfcGFnZSkgLyBw ZXJfcGFnZSkpOworCUFzc2VydChjdGwtPm9wdGlvbnMuUGFnZVByZWNlZGVzKHJocyAvIHBl cl9wYWdlLCAobGhzIC0gMSAqIHBlcl9wYWdlKSAvIHBlcl9wYWdlKQogCQkgICB8fCAoMVUg PDwgMzEpICUgcGVyX3BhZ2UgIT0gMCk7CS8qIFNlZSBDb21taXRUc1BhZ2VQcmVjZWRlcygp ICovCi0JQXNzZXJ0KGN0bC0+UGFnZVByZWNlZGVzKChsaHMgKyAxICogcGVyX3BhZ2UpIC8g cGVyX3BhZ2UsIHJocyAvIHBlcl9wYWdlKQorCUFzc2VydChjdGwtPm9wdGlvbnMuUGFnZVBy ZWNlZGVzKChsaHMgKyAxICogcGVyX3BhZ2UpIC8gcGVyX3BhZ2UsIHJocyAvIHBlcl9wYWdl KQogCQkgICB8fCAoMVUgPDwgMzEpICUgcGVyX3BhZ2UgIT0gMCk7Ci0JQXNzZXJ0KGN0bC0+ UGFnZVByZWNlZGVzKChsaHMgKyAyICogcGVyX3BhZ2UpIC8gcGVyX3BhZ2UsIHJocyAvIHBl cl9wYWdlKSk7Ci0JQXNzZXJ0KGN0bC0+UGFnZVByZWNlZGVzKChsaHMgKyAzICogcGVyX3Bh Z2UpIC8gcGVyX3BhZ2UsIHJocyAvIHBlcl9wYWdlKSk7Ci0JQXNzZXJ0KCFjdGwtPlBhZ2VQ cmVjZWRlcyhyaHMgLyBwZXJfcGFnZSwgKGxocyArIHBlcl9wYWdlKSAvIHBlcl9wYWdlKSk7 CisJQXNzZXJ0KGN0bC0+b3B0aW9ucy5QYWdlUHJlY2VkZXMoKGxocyArIDIgKiBwZXJfcGFn ZSkgLyBwZXJfcGFnZSwgcmhzIC8gcGVyX3BhZ2UpKTsKKwlBc3NlcnQoY3RsLT5vcHRpb25z LlBhZ2VQcmVjZWRlcygobGhzICsgMyAqIHBlcl9wYWdlKSAvIHBlcl9wYWdlLCByaHMgLyBw ZXJfcGFnZSkpOworCUFzc2VydCghY3RsLT5vcHRpb25zLlBhZ2VQcmVjZWRlcyhyaHMgLyBw ZXJfcGFnZSwgKGxocyArIHBlcl9wYWdlKSAvIHBlcl9wYWdlKSk7CiAKIAkvKgogCSAqIEdl dE5ld1RyYW5zYWN0aW9uSWQoKSBoYXMgYXNzaWduZWQgdGhlIGxhc3QgWElEIGl0IGNhbiBz YWZlbHkgdXNlLCBhbmQKQEAgLTE3MjcsNyArMTc0Nyw3IEBAIFNscnVQYWdlUHJlY2VkZXNU ZXN0T2Zmc2V0KFNscnVDdGwgY3RsLCBpbnQgcGVyX3BhZ2UsIHVpbnQzMiBvZmZzZXQpCiAg KiBkbyBub3QgYXBwbHkgdG8gdGhlbS4pCiAgKi8KIHZvaWQKLVNscnVQYWdlUHJlY2VkZXNV bml0VGVzdHMoU2xydUN0bCBjdGwsIGludCBwZXJfcGFnZSkKK1NscnVQYWdlUHJlY2VkZXNV bml0VGVzdHMoU2xydURlc2MgKmN0bCwgaW50IHBlcl9wYWdlKQogewogCS8qIFRlc3QgZmly c3QsIG1pZGRsZSBhbmQgbGFzdCBlbnRyaWVzIG9mIGEgcGFnZS4gKi8KIAlTbHJ1UGFnZVBy ZWNlZGVzVGVzdE9mZnNldChjdGwsIHBlcl9wYWdlLCAwKTsKQEAgLTE3NDIsNyArMTc2Miw3 IEBAIFNscnVQYWdlUHJlY2VkZXNVbml0VGVzdHMoU2xydUN0bCBjdGwsIGludCBwZXJfcGFn ZSkKICAqCQlvbmUgY29udGFpbmluZyB0aGUgcGFnZSBwYXNzZWQgYXMgImRhdGEiLgogICov CiBib29sCi1TbHJ1U2NhbkRpckNiUmVwb3J0UHJlc2VuY2UoU2xydUN0bCBjdGwsIGNoYXIg KmZpbGVuYW1lLCBpbnQ2NCBzZWdwYWdlLAorU2xydVNjYW5EaXJDYlJlcG9ydFByZXNlbmNl KFNscnVEZXNjICpjdGwsIGNoYXIgKmZpbGVuYW1lLCBpbnQ2NCBzZWdwYWdlLAogCQkJCQkJ CXZvaWQgKmRhdGEpCiB7CiAJaW50NjQJCWN1dG9mZlBhZ2UgPSAqKGludDY0ICopIGRhdGE7 CkBAIC0xNzU4LDcgKzE3NzgsNyBAQCBTbHJ1U2NhbkRpckNiUmVwb3J0UHJlc2VuY2UoU2xy dUN0bCBjdGwsIGNoYXIgKmZpbGVuYW1lLCBpbnQ2NCBzZWdwYWdlLAogICoJCVRoaXMgY2Fs bGJhY2sgZGVsZXRlcyBzZWdtZW50cyBwcmlvciB0byB0aGUgb25lIHBhc3NlZCBpbiBhcyAi ZGF0YSIuCiAgKi8KIHN0YXRpYyBib29sCi1TbHJ1U2NhbkRpckNiRGVsZXRlQ3V0b2ZmKFNs cnVDdGwgY3RsLCBjaGFyICpmaWxlbmFtZSwgaW50NjQgc2VncGFnZSwKK1NscnVTY2FuRGly Q2JEZWxldGVDdXRvZmYoU2xydURlc2MgKmN0bCwgY2hhciAqZmlsZW5hbWUsIGludDY0IHNl Z3BhZ2UsCiAJCQkJCQkgIHZvaWQgKmRhdGEpCiB7CiAJaW50NjQJCWN1dG9mZlBhZ2UgPSAq KGludDY0ICopIGRhdGE7CkBAIC0xNzc0LDcgKzE3OTQsNyBAQCBTbHJ1U2NhbkRpckNiRGVs ZXRlQ3V0b2ZmKFNscnVDdGwgY3RsLCBjaGFyICpmaWxlbmFtZSwgaW50NjQgc2VncGFnZSwK ICAqCQlUaGlzIGNhbGxiYWNrIGRlbGV0ZXMgYWxsIHNlZ21lbnRzLgogICovCiBib29sCi1T bHJ1U2NhbkRpckNiRGVsZXRlQWxsKFNscnVDdGwgY3RsLCBjaGFyICpmaWxlbmFtZSwgaW50 NjQgc2VncGFnZSwgdm9pZCAqZGF0YSkKK1NscnVTY2FuRGlyQ2JEZWxldGVBbGwoU2xydURl c2MgKmN0bCwgY2hhciAqZmlsZW5hbWUsIGludDY0IHNlZ3BhZ2UsIHZvaWQgKmRhdGEpCiB7 CiAJU2xydUludGVybmFsRGVsZXRlU2VnbWVudChjdGwsIHNlZ3BhZ2UgLyBTTFJVX1BBR0VT X1BFUl9TRUdNRU5UKTsKIApAQCAtMTc4OCw5ICsxODA4LDkgQEAgU2xydVNjYW5EaXJDYkRl bGV0ZUFsbChTbHJ1Q3RsIGN0bCwgY2hhciAqZmlsZW5hbWUsIGludDY0IHNlZ3BhZ2UsIHZv aWQgKmRhdGEpCiAgKiBTTFJVIHNlZ21lbnQuCiAgKi8KIHN0YXRpYyBpbmxpbmUgYm9vbAot U2xydUNvcnJlY3RTZWdtZW50RmlsZW5hbWVMZW5ndGgoU2xydUN0bCBjdGwsIHNpemVfdCBs ZW4pCitTbHJ1Q29ycmVjdFNlZ21lbnRGaWxlbmFtZUxlbmd0aChTbHJ1RGVzYyAqY3RsLCBz aXplX3QgbGVuKQogewotCWlmIChjdGwtPmxvbmdfc2VnbWVudF9uYW1lcykKKwlpZiAoY3Rs LT5vcHRpb25zLmxvbmdfc2VnbWVudF9uYW1lcykKIAkJcmV0dXJuIChsZW4gPT0gMTUpOwkJ Lyogc2VlIFNscnVGaWxlTmFtZSgpICovCiAJZWxzZQogCkBAIC0xODIxLDcgKzE4NDEsNyBA QCBTbHJ1Q29ycmVjdFNlZ21lbnRGaWxlbmFtZUxlbmd0aChTbHJ1Q3RsIGN0bCwgc2l6ZV90 IGxlbikKICAqIE5vdGUgdGhhdCBubyBsb2NraW5nIGlzIGFwcGxpZWQuCiAgKi8KIGJvb2wK LVNscnVTY2FuRGlyZWN0b3J5KFNscnVDdGwgY3RsLCBTbHJ1U2NhbkNhbGxiYWNrIGNhbGxi YWNrLCB2b2lkICpkYXRhKQorU2xydVNjYW5EaXJlY3RvcnkoU2xydURlc2MgKmN0bCwgU2xy dVNjYW5DYWxsYmFjayBjYWxsYmFjaywgdm9pZCAqZGF0YSkKIHsKIAlib29sCQlyZXR2YWwg PSBmYWxzZTsKIAlESVIJCSAgICpjbGRpcjsKQEAgLTE4MjksOCArMTg0OSw4IEBAIFNscnVT Y2FuRGlyZWN0b3J5KFNscnVDdGwgY3RsLCBTbHJ1U2NhbkNhbGxiYWNrIGNhbGxiYWNrLCB2 b2lkICpkYXRhKQogCWludDY0CQlzZWdubzsKIAlpbnQ2NAkJc2VncGFnZTsKIAotCWNsZGly ID0gQWxsb2NhdGVEaXIoY3RsLT5EaXIpOwotCXdoaWxlICgoY2xkZSA9IFJlYWREaXIoY2xk aXIsIGN0bC0+RGlyKSkgIT0gTlVMTCkKKwljbGRpciA9IEFsbG9jYXRlRGlyKGN0bC0+b3B0 aW9ucy5EaXIpOworCXdoaWxlICgoY2xkZSA9IFJlYWREaXIoY2xkaXIsIGN0bC0+b3B0aW9u cy5EaXIpKSAhPSBOVUxMKQogCXsKIAkJc2l6ZV90CQlsZW47CiAKQEAgLTE4NDMsNyArMTg2 Myw3IEBAIFNscnVTY2FuRGlyZWN0b3J5KFNscnVDdGwgY3RsLCBTbHJ1U2NhbkNhbGxiYWNr IGNhbGxiYWNrLCB2b2lkICpkYXRhKQogCQkJc2VncGFnZSA9IHNlZ25vICogU0xSVV9QQUdF U19QRVJfU0VHTUVOVDsKIAogCQkJZWxvZyhERUJVRzIsICJTbHJ1U2NhbkRpcmVjdG9yeSBp bnZva2luZyBjYWxsYmFjayBvbiAlcy8lcyIsCi0JCQkJIGN0bC0+RGlyLCBjbGRlLT5kX25h bWUpOworCQkJCSBjdGwtPm9wdGlvbnMuRGlyLCBjbGRlLT5kX25hbWUpOwogCQkJcmV0dmFs ID0gY2FsbGJhY2soY3RsLCBjbGRlLT5kX25hbWUsIHNlZ3BhZ2UsIGRhdGEpOwogCQkJaWYg KHJldHZhbCkKIAkJCQlicmVhazsKQEAgLTE4NjEsNyArMTg4MSw3IEBAIFNscnVTY2FuRGly ZWN0b3J5KFNscnVDdGwgY3RsLCBTbHJ1U2NhbkNhbGxiYWNrIGNhbGxiYWNrLCB2b2lkICpk YXRhKQogICogcGVyZm9ybXMgdGhlIGZzeW5jLgogICovCiBpbnQKLVNscnVTeW5jRmlsZVRh ZyhTbHJ1Q3RsIGN0bCwgY29uc3QgRmlsZVRhZyAqZnRhZywgY2hhciAqcGF0aCkKK1NscnVT eW5jRmlsZVRhZyhTbHJ1RGVzYyAqY3RsLCBjb25zdCBGaWxlVGFnICpmdGFnLCBjaGFyICpw YXRoKQogewogCWludAkJCWZkOwogCWludAkJCXNhdmVfZXJybm87CmRpZmYgLS1naXQgYS9z cmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS9zdWJ0cmFucy5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL3RyYW5zYW0vc3VidHJhbnMuYwppbmRleCBjNmNlNzFmYzcwMy4uYjc5ZTY0OGI4OTkg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3N1YnRyYW5zLmMKKysr IGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vc3VidHJhbnMuYwpAQCAtMzMsNiArMzMs NyBAQAogI2luY2x1ZGUgImFjY2Vzcy90cmFuc2FtLmgiCiAjaW5jbHVkZSAibWlzY2FkbWlu LmgiCiAjaW5jbHVkZSAicGdfdHJhY2UuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3N1YnN5c3Rl bXMuaCIKICNpbmNsdWRlICJ1dGlscy9ndWNfaG9va3MuaCIKICNpbmNsdWRlICJ1dGlscy9z bmFwbWdyLmgiCiAKQEAgLTY2LDE2ICs2NywyMiBAQCBUcmFuc2FjdGlvbklkVG9QYWdlKFRy YW5zYWN0aW9uSWQgeGlkKQogI2RlZmluZSBUcmFuc2FjdGlvbklkVG9FbnRyeSh4aWQpICgo eGlkKSAlIChUcmFuc2FjdGlvbklkKSBTVUJUUkFOU19YQUNUU19QRVJfUEFHRSkKIAogCitz dGF0aWMgdm9pZCBTVUJUUkFOU1NobWVtUmVxdWVzdCh2b2lkICphcmcpOworc3RhdGljIHZv aWQgU1VCVFJBTlNTaG1lbUluaXQodm9pZCAqYXJnKTsKK3N0YXRpYyBib29sIFN1YlRyYW5z UGFnZVByZWNlZGVzKGludDY0IHBhZ2UxLCBpbnQ2NCBwYWdlMik7CitzdGF0aWMgaW50CXN1 YnRyYW5zX2VycmRldGFpbF9mb3JfaW9fZXJyb3IoY29uc3Qgdm9pZCAqb3BhcXVlX2RhdGEp OworCitjb25zdCBTaG1lbUNhbGxiYWNrcyBTVUJUUkFOU1NobWVtQ2FsbGJhY2tzID0gewor CS5yZXF1ZXN0X2ZuID0gU1VCVFJBTlNTaG1lbVJlcXVlc3QsCisJLmluaXRfZm4gPSBTVUJU UkFOU1NobWVtSW5pdCwKK307CisKIC8qCiAgKiBMaW5rIHRvIHNoYXJlZC1tZW1vcnkgZGF0 YSBzdHJ1Y3R1cmVzIGZvciBTVUJUUkFOUyBjb250cm9sCiAgKi8KLXN0YXRpYyBTbHJ1Q3Rs RGF0YSBTdWJUcmFuc0N0bERhdGE7Ci0KLSNkZWZpbmUgU3ViVHJhbnNDdGwgICgmU3ViVHJh bnNDdGxEYXRhKQorc3RhdGljIFNscnVEZXNjIFN1YlRyYW5zU2xydURlc2M7CiAKLQotc3Rh dGljIGJvb2wgU3ViVHJhbnNQYWdlUHJlY2VkZXMoaW50NjQgcGFnZTEsIGludDY0IHBhZ2Uy KTsKLXN0YXRpYyBpbnQJc3VidHJhbnNfZXJyZGV0YWlsX2Zvcl9pb19lcnJvcihjb25zdCB2 b2lkICpvcGFxdWVfZGF0YSk7CisjZGVmaW5lIFN1YlRyYW5zQ3RsICAoJlN1YlRyYW5zU2xy dURlc2MpCiAKIAogLyoKQEAgLTIwNywxNyArMjE0LDEzIEBAIFNVQlRSQU5TU2htZW1CdWZm ZXJzKHZvaWQpCiAJcmV0dXJuIE1pbihNYXgoMTYsIHN1YnRyYW5zYWN0aW9uX2J1ZmZlcnMp LCBTTFJVX01BWF9BTExPV0VEX0JVRkZFUlMpOwogfQogCisKKwogLyoKLSAqIEluaXRpYWxp emF0aW9uIG9mIHNoYXJlZCBtZW1vcnkgZm9yIFNVQlRSQU5TCisgKiBSZWdpc3RlciBzaGFy ZWQgbWVtb3J5IGZvciBTVUJUUkFOUwogICovCi1TaXplCi1TVUJUUkFOU1NobWVtU2l6ZSh2 b2lkKQotewotCXJldHVybiBTaW1wbGVMcnVTaG1lbVNpemUoU1VCVFJBTlNTaG1lbUJ1ZmZl cnMoKSwgMCk7Ci19Ci0KLXZvaWQKLVNVQlRSQU5TU2htZW1Jbml0KHZvaWQpCitzdGF0aWMg dm9pZAorU1VCVFJBTlNTaG1lbVJlcXVlc3Qodm9pZCAqYXJnKQogewogCS8qIElmIGF1dG8t dHVuaW5nIGlzIHJlcXVlc3RlZCwgbm93IGlzIHRoZSB0aW1lIHRvIGRvIGl0ICovCiAJaWYg KHN1YnRyYW5zYWN0aW9uX2J1ZmZlcnMgPT0gMCkKQEAgLTI0MCwxMSArMjQzLDI1IEBAIFNV QlRSQU5TU2htZW1Jbml0KHZvaWQpCiAJfQogCUFzc2VydChzdWJ0cmFuc2FjdGlvbl9idWZm ZXJzICE9IDApOwogCi0JU3ViVHJhbnNDdGwtPlBhZ2VQcmVjZWRlcyA9IFN1YlRyYW5zUGFn ZVByZWNlZGVzOwotCVN1YlRyYW5zQ3RsLT5lcnJkZXRhaWxfZm9yX2lvX2Vycm9yID0gc3Vi dHJhbnNfZXJyZGV0YWlsX2Zvcl9pb19lcnJvcjsKLQlTaW1wbGVMcnVJbml0KFN1YlRyYW5z Q3RsLCAic3VidHJhbnNhY3Rpb24iLCBTVUJUUkFOU1NobWVtQnVmZmVycygpLCAwLAotCQkJ CSAgInBnX3N1YnRyYW5zIiwgTFdUUkFOQ0hFX1NVQlRSQU5TX0JVRkZFUiwKLQkJCQkgIExX VFJBTkNIRV9TVUJUUkFOU19TTFJVLCBTWU5DX0hBTkRMRVJfTk9ORSwgZmFsc2UpOworCVNp bXBsZUxydVJlcXVlc3QoLmRlc2MgPSAmU3ViVHJhbnNTbHJ1RGVzYywKKwkJCQkJIC5uYW1l ID0gInN1YnRyYW5zYWN0aW9uIiwKKwkJCQkJIC5EaXIgPSAicGdfc3VidHJhbnMiLAorCQkJ CQkgLmxvbmdfc2VnbWVudF9uYW1lcyA9IGZhbHNlLAorCisJCQkJCSAubnNsb3RzID0gU1VC VFJBTlNTaG1lbUJ1ZmZlcnMoKSwKKworCQkJCQkgLnN5bmNfaGFuZGxlciA9IFNZTkNfSEFO RExFUl9OT05FLAorCQkJCQkgLlBhZ2VQcmVjZWRlcyA9IFN1YlRyYW5zUGFnZVByZWNlZGVz LAorCQkJCQkgLmVycmRldGFpbF9mb3JfaW9fZXJyb3IgPSBzdWJ0cmFuc19lcnJkZXRhaWxf Zm9yX2lvX2Vycm9yLAorCisJCQkJCSAuYnVmZmVyX3RyYW5jaGVfaWQgPSBMV1RSQU5DSEVf U1VCVFJBTlNfQlVGRkVSLAorCQkJCQkgLmJhbmtfdHJhbmNoZV9pZCA9IExXVFJBTkNIRV9T VUJUUkFOU19TTFJVLAorCQkpOworfQorCitzdGF0aWMgdm9pZAorU1VCVFJBTlNTaG1lbUlu aXQodm9pZCAqYXJnKQorewogCVNscnVQYWdlUHJlY2VkZXNVbml0VGVzdHMoU3ViVHJhbnND dGwsIFNVQlRSQU5TX1hBQ1RTX1BFUl9QQUdFKTsKIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2Jh Y2tlbmQvY29tbWFuZHMvYXN5bmMuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FzeW5jLmMK aW5kZXggZTkxYTYyZmY0MmEuLmRiNmE5YTY1NjFiIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9jb21tYW5kcy9hc3luYy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2FzeW5jLmMK QEAgLTE3OSw2ICsxNzksNyBAQAogI2luY2x1ZGUgInN0b3JhZ2UvbGF0Y2guaCIKICNpbmNs dWRlICJzdG9yYWdlL2xtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2NzaWduYWwuaCIK KyNpbmNsdWRlICJzdG9yYWdlL3N1YnN5c3RlbXMuaCIKICNpbmNsdWRlICJ0Y29wL3Rjb3Bw cm90LmgiCiAjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKICNpbmNsdWRlICJ1dGlscy9k c2EuaCIKQEAgLTM0NSw2ICszNDYsMTUgQEAgdHlwZWRlZiBzdHJ1Y3QgQXN5bmNRdWV1ZUNv bnRyb2wKIAogc3RhdGljIEFzeW5jUXVldWVDb250cm9sICphc3luY1F1ZXVlQ29udHJvbDsK IAorc3RhdGljIHZvaWQgQXN5bmNTaG1lbVJlcXVlc3Qodm9pZCAqYXJnKTsKK3N0YXRpYyB2 b2lkIEFzeW5jU2htZW1Jbml0KHZvaWQgKmFyZyk7CisKK2NvbnN0IFNobWVtQ2FsbGJhY2tz IEFzeW5jU2htZW1DYWxsYmFja3MgPSB7CisJLnJlcXVlc3RfZm4gPSBBc3luY1NobWVtUmVx dWVzdCwKKwkuaW5pdF9mbiA9IEFzeW5jU2htZW1Jbml0LAorfTsKKworCiAjZGVmaW5lIFFV RVVFX0hFQUQJCQkJCShhc3luY1F1ZXVlQ29udHJvbC0+aGVhZCkKICNkZWZpbmUgUVVFVUVf VEFJTAkJCQkJKGFzeW5jUXVldWVDb250cm9sLT50YWlsKQogI2RlZmluZSBRVUVVRV9TVE9Q X1BBR0UJCQkJKGFzeW5jUXVldWVDb250cm9sLT5zdG9wUGFnZSkKQEAgLTM1OSw5ICszNjks MTMgQEAgc3RhdGljIEFzeW5jUXVldWVDb250cm9sICphc3luY1F1ZXVlQ29udHJvbDsKIC8q CiAgKiBUaGUgU0xSVSBidWZmZXIgYXJlYSB0aHJvdWdoIHdoaWNoIHdlIGFjY2VzcyB0aGUg bm90aWZpY2F0aW9uIHF1ZXVlCiAgKi8KLXN0YXRpYyBTbHJ1Q3RsRGF0YSBOb3RpZnlDdGxE YXRhOworc3RhdGljIGlubGluZSBib29sIGFzeW5jUXVldWVQYWdlUHJlY2VkZXMoaW50NjQg cCwgaW50NjQgcSk7CitzdGF0aWMgaW50CWFzeW5jUXVldWVFcnJkZXRhaWxGb3JJb0Vycm9y KGNvbnN0IHZvaWQgKm9wYXF1ZV9kYXRhKTsKKworc3RhdGljIFNscnVEZXNjIE5vdGlmeVNs cnVEZXNjOwogCi0jZGVmaW5lIE5vdGlmeUN0bAkJCQkJKCZOb3RpZnlDdGxEYXRhKQorCisj ZGVmaW5lIE5vdGlmeUN0bAkJCQkJKCZOb3RpZnlTbHJ1RGVzYykKICNkZWZpbmUgUVVFVUVf UEFHRVNJWkUJCQkJQkxDS1NaCiAKICNkZWZpbmUgUVVFVUVfRlVMTF9XQVJOX0lOVEVSVkFM CTUwMDAJLyogd2FybiBhdCBtb3N0IG9uY2UgZXZlcnkgNXMgKi8KQEAgLTU3MCw5ICs1ODQs NyBAQCBib29sCQlUcmFjZV9ub3RpZnkgPSBmYWxzZTsKIGludAkJCW1heF9ub3RpZnlfcXVl dWVfcGFnZXMgPSAxMDQ4NTc2OwogCiAvKiBsb2NhbCBmdW5jdGlvbiBwcm90b3R5cGVzICov Ci1zdGF0aWMgaW50CWFzeW5jUXVldWVFcnJkZXRhaWxGb3JJb0Vycm9yKGNvbnN0IHZvaWQg Km9wYXF1ZV9kYXRhKTsKIHN0YXRpYyBpbmxpbmUgaW50NjQgYXN5bmNRdWV1ZVBhZ2VEaWZm KGludDY0IHAsIGludDY0IHEpOwotc3RhdGljIGlubGluZSBib29sIGFzeW5jUXVldWVQYWdl UHJlY2VkZXMoaW50NjQgcCwgaW50NjQgcSk7CiBzdGF0aWMgaW5saW5lIHZvaWQgR2xvYmFs Q2hhbm5lbEtleUluaXQoR2xvYmFsQ2hhbm5lbEtleSAqa2V5LCBPaWQgZGJvaWQsCiAJCQkJ CQkJCQkJY29uc3QgY2hhciAqY2hhbm5lbCk7CiBzdGF0aWMgZHNoYXNoX2hhc2ggZ2xvYmFs Q2hhbm5lbFRhYmxlSGFzaChjb25zdCB2b2lkICprZXksIHNpemVfdCBzaXplLApAQCAtNzgw LDc4ICs3OTIsNjMgQEAgaW5pdFBlbmRpbmdMaXN0ZW5BY3Rpb25zKHZvaWQpCiB9CiAKIC8q Ci0gKiBSZXBvcnQgc3BhY2UgbmVlZGVkIGZvciBvdXIgc2hhcmVkIG1lbW9yeSBhcmVhCisg KiBSZWdpc3RlciBvdXIgc2hhcmVkIG1lbW9yeSBuZWVkcwogICovCi1TaXplCi1Bc3luY1No bWVtU2l6ZSh2b2lkKQorc3RhdGljIHZvaWQKK0FzeW5jU2htZW1SZXF1ZXN0KHZvaWQgKmFy ZykKIHsKIAlTaXplCQlzaXplOwogCi0JLyogVGhpcyBoYWQgYmV0dGVyIG1hdGNoIEFzeW5j U2htZW1Jbml0ICovCiAJc2l6ZSA9IG11bF9zaXplKE1heEJhY2tlbmRzLCBzaXplb2YoUXVl dWVCYWNrZW5kU3RhdHVzKSk7CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIG9mZnNldG9mKEFz eW5jUXVldWVDb250cm9sLCBiYWNrZW5kKSk7CiAKLQlzaXplID0gYWRkX3NpemUoc2l6ZSwg U2ltcGxlTHJ1U2htZW1TaXplKG5vdGlmeV9idWZmZXJzLCAwKSk7CisJU2htZW1SZXF1ZXN0 U3RydWN0KC5uYW1lID0gIkFzeW5jIFF1ZXVlIENvbnRyb2wiLAorCQkJCQkgICAuc2l6ZSA9 IHNpemUsCisJCQkJCSAgIC5wdHIgPSAodm9pZCAqKikgJmFzeW5jUXVldWVDb250cm9sLAor CQkpOwogCi0JcmV0dXJuIHNpemU7Ci19CisJU2ltcGxlTHJ1UmVxdWVzdCguZGVzYyA9ICZO b3RpZnlTbHJ1RGVzYywKKwkJCQkJIC5uYW1lID0gIm5vdGlmeSIsCisJCQkJCSAuRGlyID0g InBnX25vdGlmeSIsCiAKLS8qCi0gKiBJbml0aWFsaXplIG91ciBzaGFyZWQgbWVtb3J5IGFy ZWEKLSAqLwotdm9pZAotQXN5bmNTaG1lbUluaXQodm9pZCkKLXsKLQlib29sCQlmb3VuZDsK LQlTaXplCQlzaXplOworCS8qIGxvbmcgc2VnbWVudCBuYW1lcyBhcmUgdXNlZCBpbiBvcmRl ciB0byBhdm9pZCB3cmFwYXJvdW5kICovCisJCQkJCSAubG9uZ19zZWdtZW50X25hbWVzID0g dHJ1ZSwKIAotCS8qCi0JICogQ3JlYXRlIG9yIGF0dGFjaCB0byB0aGUgQXN5bmNRdWV1ZUNv bnRyb2wgc3RydWN0dXJlLgotCSAqLwotCXNpemUgPSBtdWxfc2l6ZShNYXhCYWNrZW5kcywg c2l6ZW9mKFF1ZXVlQmFja2VuZFN0YXR1cykpOwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBv ZmZzZXRvZihBc3luY1F1ZXVlQ29udHJvbCwgYmFja2VuZCkpOworCQkJCQkgLm5zbG90cyA9 IG5vdGlmeV9idWZmZXJzLAogCi0JYXN5bmNRdWV1ZUNvbnRyb2wgPSAoQXN5bmNRdWV1ZUNv bnRyb2wgKikKLQkJU2htZW1Jbml0U3RydWN0KCJBc3luYyBRdWV1ZSBDb250cm9sIiwgc2l6 ZSwgJmZvdW5kKTsKKwkJCQkJIC5zeW5jX2hhbmRsZXIgPSBTWU5DX0hBTkRMRVJfTk9ORSwK KwkJCQkJIC5QYWdlUHJlY2VkZXMgPSBhc3luY1F1ZXVlUGFnZVByZWNlZGVzLAorCQkJCQkg LmVycmRldGFpbF9mb3JfaW9fZXJyb3IgPSBhc3luY1F1ZXVlRXJyZGV0YWlsRm9ySW9FcnJv ciwKIAotCWlmICghZm91bmQpCisJCQkJCSAuYnVmZmVyX3RyYW5jaGVfaWQgPSBMV1RSQU5D SEVfTk9USUZZX0JVRkZFUiwKKwkJCQkJIC5iYW5rX3RyYW5jaGVfaWQgPSBMV1RSQU5DSEVf Tk9USUZZX1NMUlUsCisJCSk7Cit9CisKK3N0YXRpYyB2b2lkCitBc3luY1NobWVtSW5pdCh2 b2lkICphcmcpCit7CisJU0VUX1FVRVVFX1BPUyhRVUVVRV9IRUFELCAwLCAwKTsKKwlTRVRf UVVFVUVfUE9TKFFVRVVFX1RBSUwsIDAsIDApOworCVFVRVVFX1NUT1BfUEFHRSA9IDA7CisJ UVVFVUVfRklSU1RfTElTVEVORVIgPSBJTlZBTElEX1BST0NfTlVNQkVSOworCWFzeW5jUXVl dWVDb250cm9sLT5sYXN0UXVldWVGaWxsV2FybiA9IDA7CisJYXN5bmNRdWV1ZUNvbnRyb2wt Pmdsb2JhbENoYW5uZWxUYWJsZURTQSA9IERTQV9IQU5ETEVfSU5WQUxJRDsKKwlhc3luY1F1 ZXVlQ29udHJvbC0+Z2xvYmFsQ2hhbm5lbFRhYmxlRFNIID0gRFNIQVNIX0hBTkRMRV9JTlZB TElEOworCWZvciAoaW50IGkgPSAwOyBpIDwgTWF4QmFja2VuZHM7IGkrKykKIAl7Ci0JCS8q IEZpcnN0IHRpbWUgdGhyb3VnaCwgc28gaW5pdGlhbGl6ZSBpdCAqLwotCQlTRVRfUVVFVUVf UE9TKFFVRVVFX0hFQUQsIDAsIDApOwotCQlTRVRfUVVFVUVfUE9TKFFVRVVFX1RBSUwsIDAs IDApOwotCQlRVUVVRV9TVE9QX1BBR0UgPSAwOwotCQlRVUVVRV9GSVJTVF9MSVNURU5FUiA9 IElOVkFMSURfUFJPQ19OVU1CRVI7Ci0JCWFzeW5jUXVldWVDb250cm9sLT5sYXN0UXVldWVG aWxsV2FybiA9IDA7Ci0JCWFzeW5jUXVldWVDb250cm9sLT5nbG9iYWxDaGFubmVsVGFibGVE U0EgPSBEU0FfSEFORExFX0lOVkFMSUQ7Ci0JCWFzeW5jUXVldWVDb250cm9sLT5nbG9iYWxD aGFubmVsVGFibGVEU0ggPSBEU0hBU0hfSEFORExFX0lOVkFMSUQ7Ci0JCWZvciAoaW50IGkg PSAwOyBpIDwgTWF4QmFja2VuZHM7IGkrKykKLQkJewotCQkJUVVFVUVfQkFDS0VORF9QSUQo aSkgPSBJbnZhbGlkUGlkOwotCQkJUVVFVUVfQkFDS0VORF9EQk9JRChpKSA9IEludmFsaWRP aWQ7Ci0JCQlRVUVVRV9ORVhUX0xJU1RFTkVSKGkpID0gSU5WQUxJRF9QUk9DX05VTUJFUjsK LQkJCVNFVF9RVUVVRV9QT1MoUVVFVUVfQkFDS0VORF9QT1MoaSksIDAsIDApOwotCQkJUVVF VUVfQkFDS0VORF9XQUtFVVBfUEVORElORyhpKSA9IGZhbHNlOwotCQkJUVVFVUVfQkFDS0VO RF9JU19BRFZBTkNJTkcoaSkgPSBmYWxzZTsKLQkJfQorCQlRVUVVRV9CQUNLRU5EX1BJRChp KSA9IEludmFsaWRQaWQ7CisJCVFVRVVFX0JBQ0tFTkRfREJPSUQoaSkgPSBJbnZhbGlkT2lk OworCQlRVUVVRV9ORVhUX0xJU1RFTkVSKGkpID0gSU5WQUxJRF9QUk9DX05VTUJFUjsKKwkJ U0VUX1FVRVVFX1BPUyhRVUVVRV9CQUNLRU5EX1BPUyhpKSwgMCwgMCk7CisJCVFVRVVFX0JB Q0tFTkRfV0FLRVVQX1BFTkRJTkcoaSkgPSBmYWxzZTsKKwkJUVVFVUVfQkFDS0VORF9JU19B RFZBTkNJTkcoaSkgPSBmYWxzZTsKIAl9CiAKIAkvKgotCSAqIFNldCB1cCBTTFJVIG1hbmFn ZW1lbnQgb2YgdGhlIHBnX25vdGlmeSBkYXRhLiBOb3RlIHRoYXQgbG9uZyBzZWdtZW50Ci0J ICogbmFtZXMgYXJlIHVzZWQgaW4gb3JkZXIgdG8gYXZvaWQgd3JhcGFyb3VuZC4KKwkgKiBE dXJpbmcgc3RhcnQgb3IgcmVib290LCBjbGVhbiBvdXQgdGhlIHBnX25vdGlmeSBkaXJlY3Rv cnkuCiAJICovCi0JTm90aWZ5Q3RsLT5QYWdlUHJlY2VkZXMgPSBhc3luY1F1ZXVlUGFnZVBy ZWNlZGVzOwotCU5vdGlmeUN0bC0+ZXJyZGV0YWlsX2Zvcl9pb19lcnJvciA9IGFzeW5jUXVl dWVFcnJkZXRhaWxGb3JJb0Vycm9yOwotCVNpbXBsZUxydUluaXQoTm90aWZ5Q3RsLCAibm90 aWZ5Iiwgbm90aWZ5X2J1ZmZlcnMsIDAsCi0JCQkJICAicGdfbm90aWZ5IiwgTFdUUkFOQ0hF X05PVElGWV9CVUZGRVIsIExXVFJBTkNIRV9OT1RJRllfU0xSVSwKLQkJCQkgIFNZTkNfSEFO RExFUl9OT05FLCB0cnVlKTsKLQotCWlmICghZm91bmQpCi0JewotCQkvKgotCQkgKiBEdXJp bmcgc3RhcnQgb3IgcmVib290LCBjbGVhbiBvdXQgdGhlIHBnX25vdGlmeSBkaXJlY3Rvcnku Ci0JCSAqLwotCQkodm9pZCkgU2xydVNjYW5EaXJlY3RvcnkoTm90aWZ5Q3RsLCBTbHJ1U2Nh bkRpckNiRGVsZXRlQWxsLCBOVUxMKTsKLQl9CisJKHZvaWQpIFNscnVTY2FuRGlyZWN0b3J5 KE5vdGlmeUN0bCwgU2xydVNjYW5EaXJDYkRlbGV0ZUFsbCwgTlVMTCk7CiB9CiAKIApkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvaXBjaS5jIGIvc3JjL2JhY2tlbmQv c3RvcmFnZS9pcGMvaXBjaS5jCmluZGV4IDRmNzA3MTU4MzAzLi43YThjNjlkZTgwMiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvaXBjaS5jCisrKyBiL3NyYy9iYWNr ZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYwpAQCAtMTAxLDE2ICsxMDEsMTEgQEAgQ2FsY3VsYXRl U2htZW1TaXplKHZvaWQpCiAJLyogbGVnYWN5IHN1YnN5c3RlbXMgKi8KIAlzaXplID0gYWRk X3NpemUoc2l6ZSwgQnVmZmVyTWFuYWdlclNobWVtU2l6ZSgpKTsKIAlzaXplID0gYWRkX3Np emUoc2l6ZSwgTG9ja01hbmFnZXJTaG1lbVNpemUoKSk7Ci0Jc2l6ZSA9IGFkZF9zaXplKHNp emUsIFByZWRpY2F0ZUxvY2tTaG1lbVNpemUoKSk7CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUs IFhMb2dQcmVmZXRjaFNobWVtU2l6ZSgpKTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgWExP R1NobWVtU2l6ZSgpKTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgWExvZ1JlY292ZXJ5U2ht ZW1TaXplKCkpOwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBDTE9HU2htZW1TaXplKCkpOwot CXNpemUgPSBhZGRfc2l6ZShzaXplLCBDb21taXRUc1NobWVtU2l6ZSgpKTsKLQlzaXplID0g YWRkX3NpemUoc2l6ZSwgU1VCVFJBTlNTaG1lbVNpemUoKSk7CiAJc2l6ZSA9IGFkZF9zaXpl KHNpemUsIFR3b1BoYXNlU2htZW1TaXplKCkpOwogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBC YWNrZ3JvdW5kV29ya2VyU2htZW1TaXplKCkpOwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBN dWx0aVhhY3RTaG1lbVNpemUoKSk7CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIEJhY2tlbmRT dGF0dXNTaG1lbVNpemUoKSk7CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIENoZWNrcG9pbnRl clNobWVtU2l6ZSgpKTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgQXV0b1ZhY3V1bVNobWVt U2l6ZSgpKTsKQEAgLTEyMyw3ICsxMTgsNiBAQCBDYWxjdWxhdGVTaG1lbVNpemUodm9pZCkK IAlzaXplID0gYWRkX3NpemUoc2l6ZSwgQXBwbHlMYXVuY2hlclNobWVtU2l6ZSgpKTsKIAlz aXplID0gYWRkX3NpemUoc2l6ZSwgQlRyZWVTaG1lbVNpemUoKSk7CiAJc2l6ZSA9IGFkZF9z aXplKHNpemUsIFN5bmNTY2FuU2htZW1TaXplKCkpOwotCXNpemUgPSBhZGRfc2l6ZShzaXpl LCBBc3luY1NobWVtU2l6ZSgpKTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgU3RhdHNTaG1l bVNpemUoKSk7CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIFdhaXRFdmVudEN1c3RvbVNobWVt U2l6ZSgpKTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgSW5qZWN0aW9uUG9pbnRTaG1lbVNp emUoKSk7CkBAIC0yNzAsMTAgKzI2NCw2IEBAIENyZWF0ZU9yQXR0YWNoU2htZW1TdHJ1Y3Rz KHZvaWQpCiAJWExPR1NobWVtSW5pdCgpOwogCVhMb2dQcmVmZXRjaFNobWVtSW5pdCgpOwog CVhMb2dSZWNvdmVyeVNobWVtSW5pdCgpOwotCUNMT0dTaG1lbUluaXQoKTsKLQlDb21taXRU c1NobWVtSW5pdCgpOwotCVNVQlRSQU5TU2htZW1Jbml0KCk7Ci0JTXVsdGlYYWN0U2htZW1J bml0KCk7CiAJQnVmZmVyTWFuYWdlclNobWVtSW5pdCgpOwogCiAJLyoKQEAgLTI4MSwxMSAr MjcxLDYgQEAgQ3JlYXRlT3JBdHRhY2hTaG1lbVN0cnVjdHModm9pZCkKIAkgKi8KIAlMb2Nr TWFuYWdlclNobWVtSW5pdCgpOwogCi0JLyoKLQkgKiBTZXQgdXAgcHJlZGljYXRlIGxvY2sg bWFuYWdlcgotCSAqLwotCVByZWRpY2F0ZUxvY2tTaG1lbUluaXQoKTsKLQogCS8qCiAJICog U2V0IHVwIHByb2Nlc3MgdGFibGUKIAkgKi8KQEAgLTMxMyw3ICsyOTgsNiBAQCBDcmVhdGVP ckF0dGFjaFNobWVtU3RydWN0cyh2b2lkKQogCSAqLwogCUJUcmVlU2htZW1Jbml0KCk7CiAJ U3luY1NjYW5TaG1lbUluaXQoKTsKLQlBc3luY1NobWVtSW5pdCgpOwogCVN0YXRzU2htZW1J bml0KCk7CiAJV2FpdEV2ZW50Q3VzdG9tU2htZW1Jbml0KCk7CiAJSW5qZWN0aW9uUG9pbnRT aG1lbUluaXQoKTsKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL3NobWVt LmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5jCmluZGV4IDYwMWM2MThkODZj Li42N2ZhZDMyYmU4MiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2ht ZW0uYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5jCkBAIC0xMzEsNiAr MTMxLDcgQEAKIAogI2luY2x1ZGUgPHVuaXN0ZC5oPgogCisjaW5jbHVkZSAiYWNjZXNzL3Ns cnUuaCIKICNpbmNsdWRlICJjb21tb24vaW50LmgiCiAjaW5jbHVkZSAiZm1nci5oIgogI2lu Y2x1ZGUgImZ1bmNhcGkuaCIKQEAgLTU0OCw2ICs1NDksOSBAQCBJbml0U2htZW1JbmRleEVu dHJ5KFNobWVtUmVxdWVzdCAqcmVxdWVzdCkKIAkJY2FzZSBTSE1FTV9LSU5EX0hBU0g6CiAJ CQlzaG1lbV9oYXNoX2luaXQoc3RydWN0UHRyLCByZXF1ZXN0LT5vcHRpb25zKTsKIAkJCWJy ZWFrOworCQljYXNlIFNITUVNX0tJTkRfU0xSVToKKwkJCXNobWVtX3NscnVfaW5pdChzdHJ1 Y3RQdHIsIHJlcXVlc3QtPm9wdGlvbnMpOworCQkJYnJlYWs7CiAJfQogfQogCkBAIC02MDEs NiArNjA1LDkgQEAgQXR0YWNoU2htZW1JbmRleEVudHJ5KFNobWVtUmVxdWVzdCAqcmVxdWVz dCwgYm9vbCBtaXNzaW5nX29rKQogCQljYXNlIFNITUVNX0tJTkRfSEFTSDoKIAkJCXNobWVt X2hhc2hfYXR0YWNoKGluZGV4X2VudHJ5LT5sb2NhdGlvbiwgcmVxdWVzdC0+b3B0aW9ucyk7 CiAJCQlicmVhazsKKwkJY2FzZSBTSE1FTV9LSU5EX1NMUlU6CisJCQlzaG1lbV9zbHJ1X2F0 dGFjaChpbmRleF9lbnRyeS0+bG9jYXRpb24sIHJlcXVlc3QtPm9wdGlvbnMpOworCQkJYnJl YWs7CiAJfQogCiAJcmV0dXJuIHRydWU7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9y YWdlL2xtZ3IvcHJlZGljYXRlLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJlZGlj YXRlLmMKaW5kZXggYjUwOWZiYjI3NTkuLmUwNjNhNzAxZWYxIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9zdG9yYWdlL2xtZ3IvcHJlZGljYXRlLmMKKysrIGIvc3JjL2JhY2tlbmQvc3Rv cmFnZS9sbWdyL3ByZWRpY2F0ZS5jCkBAIC0xNTIsMTAgKzE1Miw2IEBACiAvKgogICogSU5U RVJGQUNFIFJPVVRJTkVTCiAgKgotICogaG91c2VrZWVwaW5nIGZvciBzZXR0aW5nIHVwIHNo YXJlZCBtZW1vcnkgcHJlZGljYXRlIGxvY2sgc3RydWN0dXJlcwotICoJCVByZWRpY2F0ZUxv Y2tTaG1lbUluaXQodm9pZCkKLSAqCQlQcmVkaWNhdGVMb2NrU2htZW1TaXplKHZvaWQpCi0g KgogICogcHJlZGljYXRlIGxvY2sgcmVwb3J0aW5nCiAgKgkJR2V0UHJlZGljYXRlTG9ja1N0 YXR1c0RhdGEodm9pZCkKICAqCQlQYWdlSXNQcmVkaWNhdGVMb2NrZWQoUmVsYXRpb24gcmVs YXRpb24sIEJsb2NrTnVtYmVyIGJsa25vKQpAQCAtMjExLDYgKzIwNyw4IEBACiAjaW5jbHVk ZSAic3RvcmFnZS9wcmVkaWNhdGVfaW50ZXJuYWxzLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9w cm9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jYXJyYXkuaCIKKyNpbmNsdWRlICJzdG9y YWdlL3NobWVtLmgiCisjaW5jbHVkZSAic3RvcmFnZS9zdWJzeXN0ZW1zLmgiCiAjaW5jbHVk ZSAidXRpbHMvZ3VjX2hvb2tzLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVsLmgiCiAjaW5jbHVk ZSAidXRpbHMvc25hcG1nci5oIgpAQCAtMzIyLDkgKzMyMCwxMiBAQAogLyoKICAqIFRoZSBT TFJVIGJ1ZmZlciBhcmVhIHRocm91Z2ggd2hpY2ggd2UgYWNjZXNzIHRoZSBvbGQgeGlkcy4K ICAqLwotc3RhdGljIFNscnVDdGxEYXRhIFNlcmlhbFNscnVDdGxEYXRhOworc3RhdGljIGJv b2wgU2VyaWFsUGFnZVByZWNlZGVzTG9naWNhbGx5KGludDY0IHBhZ2UxLCBpbnQ2NCBwYWdl Mik7CitzdGF0aWMgaW50CXNlcmlhbF9lcnJkZXRhaWxfZm9yX2lvX2Vycm9yKGNvbnN0IHZv aWQgKm9wYXF1ZV9kYXRhKTsKIAotI2RlZmluZSBTZXJpYWxTbHJ1Q3RsCQkJKCZTZXJpYWxT bHJ1Q3RsRGF0YSkKK3N0YXRpYyBTbHJ1RGVzYyBTZXJpYWxTbHJ1RGVzYzsKKworI2RlZmlu ZSBTZXJpYWxTbHJ1Q3RsCQkJKCZTZXJpYWxTbHJ1RGVzYykKIAogI2RlZmluZSBTRVJJQUxf UEFHRVNJWkUJCQlCTENLU1oKICNkZWZpbmUgU0VSSUFMX0VOVFJZU0laRQkJCXNpemVvZihT ZXJDb21taXRTZXFObykKQEAgLTM4NCw2ICszODUsMTcgQEAgaW50CQkJbWF4X3ByZWRpY2F0 ZV9sb2Nrc19wZXJfcGFnZTsJLyogaW4gZ3VjX3RhYmxlcy5jICovCiAgKi8KIHN0YXRpYyBQ cmVkWGFjdExpc3QgUHJlZFhhY3Q7CiAKK3N0YXRpYyB2b2lkIFByZWRpY2F0ZUxvY2tTaG1l bVJlcXVlc3Qodm9pZCAqYXJnKTsKK3N0YXRpYyB2b2lkIFByZWRpY2F0ZUxvY2tTaG1lbUlu aXQodm9pZCAqYXJnKTsKK3N0YXRpYyB2b2lkIFByZWRpY2F0ZUxvY2tTaG1lbUF0dGFjaCh2 b2lkICphcmcpOworCitjb25zdCBTaG1lbUNhbGxiYWNrcyBQcmVkaWNhdGVMb2NrU2htZW1D YWxsYmFja3MgPSB7CisJLnJlcXVlc3RfZm4gPSBQcmVkaWNhdGVMb2NrU2htZW1SZXF1ZXN0 LAorCS5pbml0X2ZuID0gUHJlZGljYXRlTG9ja1NobWVtSW5pdCwKKwkuYXR0YWNoX2ZuID0g UHJlZGljYXRlTG9ja1NobWVtQXR0YWNoLAorfTsKKworCiAvKgogICogVGhpcyBwcm92aWRl cyBhIHBvb2wgb2YgUldDb25mbGljdCBkYXRhIGVsZW1lbnRzIHRvIHVzZSBpbiBjb25mbGlj dCBsaXN0cwogICogYmV0d2VlbiB0cmFuc2FjdGlvbnMuCkBAIC00MzEsNiArNDQzLDggQEAg c3RhdGljIGJvb2wgTXlYYWN0RGlkV3JpdGUgPSBmYWxzZTsKICAqLwogc3RhdGljIFNFUklB TElaQUJMRVhBQ1QgKlNhdmVkU2VyaWFsaXphYmxlWGFjdCA9IEludmFsaWRTZXJpYWxpemFi bGVYYWN0OwogCitzdGF0aWMgaW50NjQgbWF4X3NlcmlhbGl6YWJsZV94YWN0czsKKwogLyog bG9jYWwgZnVuY3Rpb25zICovCiAKIHN0YXRpYyBTRVJJQUxJWkFCTEVYQUNUICpDcmVhdGVQ cmVkWGFjdCh2b2lkKTsKQEAgLTQ0MiwxMyArNDU2LDEyIEBAIHN0YXRpYyB2b2lkIFNldFBv c3NpYmxlVW5zYWZlQ29uZmxpY3QoU0VSSUFMSVpBQkxFWEFDVCAqcm9YYWN0LCBTRVJJQUxJ WkFCTEVYQUNUCiBzdGF0aWMgdm9pZCBSZWxlYXNlUldDb25mbGljdChSV0NvbmZsaWN0IGNv bmZsaWN0KTsKIHN0YXRpYyB2b2lkIEZsYWdTeGFjdFVuc2FmZShTRVJJQUxJWkFCTEVYQUNU ICpzeGFjdCk7CiAKLXN0YXRpYyBib29sIFNlcmlhbFBhZ2VQcmVjZWRlc0xvZ2ljYWxseShp bnQ2NCBwYWdlMSwgaW50NjQgcGFnZTIpOwotc3RhdGljIGludAlzZXJpYWxfZXJyZGV0YWls X2Zvcl9pb19lcnJvcihjb25zdCB2b2lkICpvcGFxdWVfZGF0YSk7CiBzdGF0aWMgdm9pZCBT ZXJpYWxBZGQoVHJhbnNhY3Rpb25JZCB4aWQsIFNlckNvbW1pdFNlcU5vIG1pbkNvbmZsaWN0 Q29tbWl0U2VxTm8pOwogc3RhdGljIFNlckNvbW1pdFNlcU5vIFNlcmlhbEdldE1pbkNvbmZs aWN0Q29tbWl0U2VxTm8oVHJhbnNhY3Rpb25JZCB4aWQpOwogc3RhdGljIHZvaWQgU2VyaWFs U2V0QWN0aXZlU2VyWG1pbihUcmFuc2FjdGlvbklkIHhpZCk7CiAKIHN0YXRpYyB1aW50MzIg cHJlZGljYXRlbG9ja19oYXNoKGNvbnN0IHZvaWQgKmtleSwgU2l6ZSBrZXlzaXplKTsKKwog c3RhdGljIHZvaWQgU3VtbWFyaXplT2xkZXN0Q29tbWl0dGVkU3hhY3Qodm9pZCk7CiBzdGF0 aWMgU25hcHNob3QgR2V0U2FmZVNuYXBzaG90KFNuYXBzaG90IG9yaWdTbmFwc2hvdCk7CiBz dGF0aWMgU25hcHNob3QgR2V0U2VyaWFsaXphYmxlVHJhbnNhY3Rpb25TbmFwc2hvdEludChT bmFwc2hvdCBzbmFwc2hvdCwKQEAgLTExMDAsNzEgKzExMTMsNTMgQEAgQ2hlY2tQb2ludFBy ZWRpY2F0ZSh2b2lkKQogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogCiAvKgotICogUHJlZGlj YXRlTG9ja1NobWVtSW5pdCAtLSBJbml0aWFsaXplIHRoZSBwcmVkaWNhdGUgbG9ja2luZyBk YXRhIHN0cnVjdHVyZXMuCi0gKgotICogVGhpcyBpcyBjYWxsZWQgZnJvbSBDcmVhdGVTaGFy ZWRNZW1vcnlBbmRTZW1hcGhvcmVzKCksIHdoaWNoIHNlZSBmb3IKLSAqIG1vcmUgY29tbWVu dHMuICBJbiB0aGUgbm9ybWFsIHBvc3RtYXN0ZXIgY2FzZSwgdGhlIHNoYXJlZCBoYXNoIHRh YmxlcwotICogYXJlIGNyZWF0ZWQgaGVyZS4gIEJhY2tlbmRzIGluaGVyaXQgdGhlIHBvaW50 ZXJzCi0gKiB0byB0aGUgc2hhcmVkIHRhYmxlcyB2aWEgZm9yaygpLiAgSW4gdGhlIEVYRUNf QkFDS0VORCBjYXNlLCBlYWNoCi0gKiBiYWNrZW5kIHJlLWV4ZWN1dGVzIHRoaXMgY29kZSB0 byBvYnRhaW4gcG9pbnRlcnMgdG8gdGhlIGFscmVhZHkgZXhpc3RpbmcKLSAqIHNoYXJlZCBo YXNoIHRhYmxlcy4KKyAqIFByZWRpY2F0ZUxvY2tTaG1lbVJlcXVlc3QgLS0gUmVnaXN0ZXIg dGhlIHByZWRpY2F0ZSBsb2NraW5nIGRhdGEgc3RydWN0dXJlcy4KICAqLwotdm9pZAotUHJl ZGljYXRlTG9ja1NobWVtSW5pdCh2b2lkKQorc3RhdGljIHZvaWQKK1ByZWRpY2F0ZUxvY2tT aG1lbVJlcXVlc3Qodm9pZCAqYXJnKQogewotCUhBU0hDVEwJCWluZm87CiAJaW50NjQJCW1h eF9wcmVkaWNhdGVfbG9ja190YXJnZXRzOwogCWludDY0CQltYXhfcHJlZGljYXRlX2xvY2tz OwotCWludDY0CQltYXhfc2VyaWFsaXphYmxlX3hhY3RzOwogCWludDY0CQltYXhfcndfY29u ZmxpY3RzOwotCVNpemUJCXJlcXVlc3RTaXplOwotCWJvb2wJCWZvdW5kOwotCi0jaWZuZGVm IEVYRUNfQkFDS0VORAotCUFzc2VydCghSXNVbmRlclBvc3RtYXN0ZXIpOwotI2VuZGlmCiAK IAkvKgotCSAqIENvbXB1dGUgc2l6ZSBvZiBwcmVkaWNhdGUgbG9jayB0YXJnZXQgaGFzaHRh YmxlLiBOb3RlIHRoZXNlCi0JICogY2FsY3VsYXRpb25zIG11c3QgYWdyZWUgd2l0aCBQcmVk aWNhdGVMb2NrU2htZW1TaXplIQorCSAqIEhhc2ggdGFibGVzIGFuZCBvdGhlciBzdHJ1Y3Rz IGFyZSBzZXQgdXAgYnkgU2htZW1Jbml0UmVnaXN0ZXJlZCgpIC8KKwkgKiBTaG1lbUF0dGFj aFJlZ2lzdGVyZWQoKSB2aWEgcmVnaXN0ZXJlZCBkZXNjcmlwdG9ycyBpbgorCSAqIFByZWRp Y2F0ZUxvY2tTaG1lbVJlZ2lzdGVyKCkuICBIZXJlIHdlIGRvIHRoZSByZW1haW5pbmcgaW5p dGlhbGl6YXRpb24KKwkgKiB0aGF0IGNhbid0IGJlIGRvbmUgaW4gYSBjYWxsYmFjay4KIAkg Ki8KIAltYXhfcHJlZGljYXRlX2xvY2tfdGFyZ2V0cyA9IE5QUkVESUNBVEVMT0NLVEFSR0VU RU5UUygpOwogCiAJLyoKLQkgKiBBbGxvY2F0ZSBoYXNoIHRhYmxlIGZvciBQUkVESUNBVEVM T0NLVEFSR0VUIHN0cnVjdHMuICBUaGlzIHN0b3JlcworCSAqIFJlZ2lzdGVyIGhhc2ggdGFi bGUgZm9yIFBSRURJQ0FURUxPQ0tUQVJHRVQgc3RydWN0cy4gIFRoaXMgc3RvcmVzCiAJICog cGVyLXByZWRpY2F0ZS1sb2NrLXRhcmdldCBpbmZvcm1hdGlvbi4KIAkgKi8KLQlpbmZvLmtl eXNpemUgPSBzaXplb2YoUFJFRElDQVRFTE9DS1RBUkdFVFRBRyk7Ci0JaW5mby5lbnRyeXNp emUgPSBzaXplb2YoUFJFRElDQVRFTE9DS1RBUkdFVCk7Ci0JaW5mby5udW1fcGFydGl0aW9u cyA9IE5VTV9QUkVESUNBVEVMT0NLX1BBUlRJVElPTlM7Ci0KLQlQcmVkaWNhdGVMb2NrVGFy Z2V0SGFzaCA9IFNobWVtSW5pdEhhc2goIlBSRURJQ0FURUxPQ0tUQVJHRVQgaGFzaCIsCi0J CQkJCQkJCQkJCW1heF9wcmVkaWNhdGVfbG9ja190YXJnZXRzLAotCQkJCQkJCQkJCQkmaW5m bywKLQkJCQkJCQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8Ci0JCQkJCQkJCQkJCUhB U0hfUEFSVElUSU9OIHwgSEFTSF9GSVhFRF9TSVpFKTsKLQotCS8qIFByZS1jYWxjdWxhdGUg dGhlIGhhc2ggYW5kIHBhcnRpdGlvbiBsb2NrIG9mIHRoZSBzY3JhdGNoIGVudHJ5ICovCi0J U2NyYXRjaFRhcmdldFRhZ0hhc2ggPSBQcmVkaWNhdGVMb2NrVGFyZ2V0VGFnSGFzaENvZGUo JlNjcmF0Y2hUYXJnZXRUYWcpOwotCVNjcmF0Y2hQYXJ0aXRpb25Mb2NrID0gUHJlZGljYXRl TG9ja0hhc2hQYXJ0aXRpb25Mb2NrKFNjcmF0Y2hUYXJnZXRUYWdIYXNoKTsKKwlTaG1lbVJl cXVlc3RIYXNoKC5uYW1lID0gIlBSRURJQ0FURUxPQ0tUQVJHRVQgaGFzaCIsCisJCQkJCSAu bmVsZW1zID0gbWF4X3ByZWRpY2F0ZV9sb2NrX3RhcmdldHMsCisJCQkJCSAucHRyID0gJlBy ZWRpY2F0ZUxvY2tUYXJnZXRIYXNoLAorCQkJCQkgLmhhc2hfaW5mby5rZXlzaXplID0gc2l6 ZW9mKFBSRURJQ0FURUxPQ0tUQVJHRVRUQUcpLAorCQkJCQkgLmhhc2hfaW5mby5lbnRyeXNp emUgPSBzaXplb2YoUFJFRElDQVRFTE9DS1RBUkdFVCksCisJCQkJCSAuaGFzaF9pbmZvLm51 bV9wYXJ0aXRpb25zID0gTlVNX1BSRURJQ0FURUxPQ0tfUEFSVElUSU9OUywKKwkJCQkJIC5o YXNoX2ZsYWdzID0gSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8IEhBU0hfUEFSVElUSU9OIHwg SEFTSF9GSVhFRF9TSVpFLAorCQkpOwogCiAJLyoKIAkgKiBBbGxvY2F0ZSBoYXNoIHRhYmxl IGZvciBQUkVESUNBVEVMT0NLIHN0cnVjdHMuICBUaGlzIHN0b3JlcyBwZXIKIAkgKiB4YWN0 LWxvY2stb2YtYS10YXJnZXQgaW5mb3JtYXRpb24uCiAJICovCi0JaW5mby5rZXlzaXplID0g c2l6ZW9mKFBSRURJQ0FURUxPQ0tUQUcpOwotCWluZm8uZW50cnlzaXplID0gc2l6ZW9mKFBS RURJQ0FURUxPQ0spOwotCWluZm8uaGFzaCA9IHByZWRpY2F0ZWxvY2tfaGFzaDsKLQlpbmZv Lm51bV9wYXJ0aXRpb25zID0gTlVNX1BSRURJQ0FURUxPQ0tfUEFSVElUSU9OUzsKIAogCS8q IEFzc3VtZSBhbiBhdmVyYWdlIG9mIDIgeGFjdHMgcGVyIHRhcmdldCAqLwogCW1heF9wcmVk aWNhdGVfbG9ja3MgPSBtYXhfcHJlZGljYXRlX2xvY2tfdGFyZ2V0cyAqIDI7CiAKLQlQcmVk aWNhdGVMb2NrSGFzaCA9IFNobWVtSW5pdEhhc2goIlBSRURJQ0FURUxPQ0sgaGFzaCIsCi0J CQkJCQkJCQkgIG1heF9wcmVkaWNhdGVfbG9ja3MsCi0JCQkJCQkJCQkgICZpbmZvLAotCQkJ CQkJCQkJICBIQVNIX0VMRU0gfCBIQVNIX0ZVTkNUSU9OIHwKLQkJCQkJCQkJCSAgSEFTSF9Q QVJUSVRJT04gfCBIQVNIX0ZJWEVEX1NJWkUpOworCVNobWVtUmVxdWVzdEhhc2goLm5hbWUg PSAiUFJFRElDQVRFTE9DSyBoYXNoIiwKKwkJCQkJIC5uZWxlbXMgPSBtYXhfcHJlZGljYXRl X2xvY2tzLAorCQkJCQkgLnB0ciA9ICZQcmVkaWNhdGVMb2NrSGFzaCwKKwkJCQkJIC5oYXNo X2luZm8ua2V5c2l6ZSA9IHNpemVvZihQUkVESUNBVEVMT0NLVEFHKSwKKwkJCQkJIC5oYXNo X2luZm8uZW50cnlzaXplID0gc2l6ZW9mKFBSRURJQ0FURUxPQ0spLAorCQkJCQkgLmhhc2hf aW5mby5oYXNoID0gcHJlZGljYXRlbG9ja19oYXNoLAorCQkJCQkgLmhhc2hfaW5mby5udW1f cGFydGl0aW9ucyA9IE5VTV9QUkVESUNBVEVMT0NLX1BBUlRJVElPTlMsCisJCQkJCSAuaGFz aF9mbGFncyA9IEhBU0hfRUxFTSB8IEhBU0hfRlVOQ1RJT04gfCBIQVNIX1BBUlRJVElPTiB8 IEhBU0hfRklYRURfU0laRSwKKwkJKTsKIAogCS8qCiAJICogQ29tcHV0ZSBzaXplIGZvciBz ZXJpYWxpemFibGUgdHJhbnNhY3Rpb24gaGFzaHRhYmxlLiBOb3RlIHRoZXNlCkBAIC0xMTc3 LDI5ICsxMTcyLDI3IEBAIFByZWRpY2F0ZUxvY2tTaG1lbUluaXQodm9pZCkKIAltYXhfc2Vy aWFsaXphYmxlX3hhY3RzID0gKE1heEJhY2tlbmRzICsgbWF4X3ByZXBhcmVkX3hhY3RzKSAq IDEwOwogCiAJLyoKLQkgKiBBbGxvY2F0ZSBhIGxpc3QgdG8gaG9sZCBpbmZvcm1hdGlvbiBv biB0cmFuc2FjdGlvbnMgcGFydGljaXBhdGluZyBpbgorCSAqIFJlZ2lzdGVyIGEgbGlzdCB0 byBob2xkIGluZm9ybWF0aW9uIG9uIHRyYW5zYWN0aW9ucyBwYXJ0aWNpcGF0aW5nIGluCiAJ ICogcHJlZGljYXRlIGxvY2tpbmcuCiAJICovCi0JcmVxdWVzdFNpemUgPSBhZGRfc2l6ZShQ cmVkWGFjdExpc3REYXRhU2l6ZSwKLQkJCQkJCSAgIChtdWxfc2l6ZSgoU2l6ZSkgbWF4X3Nl cmlhbGl6YWJsZV94YWN0cywKLQkJCQkJCQkJCSBzaXplb2YoU0VSSUFMSVpBQkxFWEFDVCkp KSk7Ci0JUHJlZFhhY3QgPSBTaG1lbUluaXRTdHJ1Y3QoIlByZWRYYWN0TGlzdCIsCi0JCQkJ CQkJICAgcmVxdWVzdFNpemUsCi0JCQkJCQkJICAgJmZvdW5kKTsKLQlBc3NlcnQoZm91bmQg PT0gSXNVbmRlclBvc3RtYXN0ZXIpOworCVNobWVtUmVxdWVzdFN0cnVjdCgubmFtZSA9ICJQ cmVkWGFjdExpc3QiLAorCQkJCQkgICAuc2l6ZSA9IGFkZF9zaXplKFByZWRYYWN0TGlzdERh dGFTaXplLAorCQkJCQkJCQkJCShtdWxfc2l6ZSgoU2l6ZSkgbWF4X3NlcmlhbGl6YWJsZV94 YWN0cywKKwkJCQkJCQkJCQkJCSAgc2l6ZW9mKFNFUklBTElaQUJMRVhBQ1QpKSkpLAorCQkJ CQkgICAucHRyID0gKHZvaWQgKiopICZQcmVkWGFjdCwKKwkJKTsKIAogCS8qCi0JICogQWxs b2NhdGUgaGFzaCB0YWJsZSBmb3IgU0VSSUFMSVpBQkxFWElEIHN0cnVjdHMuICBUaGlzIHN0 b3JlcyBwZXIteGlkCisJICogUmVnaXN0ZXIgaGFzaCB0YWJsZSBmb3IgU0VSSUFMSVpBQkxF WElEIHN0cnVjdHMuICBUaGlzIHN0b3JlcyBwZXIteGlkCiAJICogaW5mb3JtYXRpb24gZm9y IHNlcmlhbGl6YWJsZSB0cmFuc2FjdGlvbnMgd2hpY2ggaGF2ZSBhY2Nlc3NlZCBkYXRhLgog CSAqLwotCWluZm8ua2V5c2l6ZSA9IHNpemVvZihTRVJJQUxJWkFCTEVYSURUQUcpOwotCWlu Zm8uZW50cnlzaXplID0gc2l6ZW9mKFNFUklBTElaQUJMRVhJRCk7Ci0KLQlTZXJpYWxpemFi bGVYaWRIYXNoID0gU2htZW1Jbml0SGFzaCgiU0VSSUFMSVpBQkxFWElEIGhhc2giLAotCQkJ CQkJCQkJCW1heF9zZXJpYWxpemFibGVfeGFjdHMsCi0JCQkJCQkJCQkJJmluZm8sCi0JCQkJ CQkJCQkJSEFTSF9FTEVNIHwgSEFTSF9CTE9CUyB8Ci0JCQkJCQkJCQkJSEFTSF9GSVhFRF9T SVpFKTsKKwlTaG1lbVJlcXVlc3RIYXNoKC5uYW1lID0gIlNFUklBTElaQUJMRVhJRCBoYXNo IiwKKwkJCQkJIC5uZWxlbXMgPSBtYXhfc2VyaWFsaXphYmxlX3hhY3RzLAorCQkJCQkgLnB0 ciA9ICZTZXJpYWxpemFibGVYaWRIYXNoLAorCQkJCQkgLmhhc2hfaW5mby5rZXlzaXplID0g c2l6ZW9mKFNFUklBTElaQUJMRVhJRFRBRyksCisJCQkJCSAuaGFzaF9pbmZvLmVudHJ5c2l6 ZSA9IHNpemVvZihTRVJJQUxJWkFCTEVYSUQpLAorCQkJCQkgLmhhc2hfZmxhZ3MgPSBIQVNI X0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9GSVhFRF9TSVpFLAorCQkpOwogCiAJLyoKIAkg KiBBbGxvY2F0ZSBzcGFjZSBmb3IgdHJhY2tpbmcgcnctY29uZmxpY3RzIGluIGxpc3RzIGF0 dGFjaGVkIHRvIHRoZQpAQCAtMTIxNCw1OCArMTIwNyw1MCBAQCBQcmVkaWNhdGVMb2NrU2ht ZW1Jbml0KHZvaWQpCiAJICovCiAJbWF4X3J3X2NvbmZsaWN0cyA9IG1heF9zZXJpYWxpemFi bGVfeGFjdHMgKiA1OwogCi0JcmVxdWVzdFNpemUgPSBSV0NvbmZsaWN0UG9vbEhlYWRlckRh dGFTaXplICsKLQkJbXVsX3NpemUoKFNpemUpIG1heF9yd19jb25mbGljdHMsCi0JCQkJIFJX Q29uZmxpY3REYXRhU2l6ZSk7Ci0KLQlSV0NvbmZsaWN0UG9vbCA9IFNobWVtSW5pdFN0cnVj dCgiUldDb25mbGljdFBvb2wiLAotCQkJCQkJCQkJIHJlcXVlc3RTaXplLAotCQkJCQkJCQkJ ICZmb3VuZCk7Ci0JQXNzZXJ0KGZvdW5kID09IElzVW5kZXJQb3N0bWFzdGVyKTsKKwlTaG1l bVJlcXVlc3RTdHJ1Y3QoLm5hbWUgPSAiUldDb25mbGljdFBvb2wiLAorCQkJCQkgICAuc2l6 ZSA9IFJXQ29uZmxpY3RQb29sSGVhZGVyRGF0YVNpemUgKyBtdWxfc2l6ZSgoU2l6ZSkgbWF4 X3J3X2NvbmZsaWN0cywKKwkJCQkJCQkJCQkJCQkJCQkJICAgUldDb25mbGljdERhdGFTaXpl KSwKKwkJCQkJICAgLnB0ciA9ICh2b2lkICoqKSAmUldDb25mbGljdFBvb2wsCisJCSk7CiAK LQkvKgotCSAqIENyZWF0ZSBvciBhdHRhY2ggdG8gdGhlIGhlYWRlciBmb3IgdGhlIGxpc3Qg b2YgZmluaXNoZWQgc2VyaWFsaXphYmxlCi0JICogdHJhbnNhY3Rpb25zLgotCSAqLwotCUZp bmlzaGVkU2VyaWFsaXphYmxlVHJhbnNhY3Rpb25zID0gKGRsaXN0X2hlYWQgKikKLQkJU2ht ZW1Jbml0U3RydWN0KCJGaW5pc2hlZFNlcmlhbGl6YWJsZVRyYW5zYWN0aW9ucyIsCi0JCQkJ CQlzaXplb2YoZGxpc3RfaGVhZCksCi0JCQkJCQkmZm91bmQpOwotCUFzc2VydChmb3VuZCA9 PSBJc1VuZGVyUG9zdG1hc3Rlcik7CisJU2htZW1SZXF1ZXN0U3RydWN0KC5uYW1lID0gIkZp bmlzaGVkU2VyaWFsaXphYmxlVHJhbnNhY3Rpb25zIiwKKwkJCQkJICAgLnNpemUgPSBzaXpl b2YoZGxpc3RfaGVhZCksCisJCQkJCSAgIC5wdHIgPSAodm9pZCAqKikgJkZpbmlzaGVkU2Vy aWFsaXphYmxlVHJhbnNhY3Rpb25zLAorCQkpOwogCiAJLyoKIAkgKiBJbml0aWFsaXplIHRo ZSBTTFJVIHN0b3JhZ2UgZm9yIG9sZCBjb21taXR0ZWQgc2VyaWFsaXphYmxlCiAJICogdHJh bnNhY3Rpb25zLgogCSAqLwotCVNlcmlhbFNscnVDdGwtPlBhZ2VQcmVjZWRlcyA9IFNlcmlh bFBhZ2VQcmVjZWRlc0xvZ2ljYWxseTsKLQlTZXJpYWxTbHJ1Q3RsLT5lcnJkZXRhaWxfZm9y X2lvX2Vycm9yID0gc2VyaWFsX2VycmRldGFpbF9mb3JfaW9fZXJyb3I7Ci0JU2ltcGxlTHJ1 SW5pdChTZXJpYWxTbHJ1Q3RsLCAic2VyaWFsaXphYmxlIiwKLQkJCQkgIHNlcmlhbGl6YWJs ZV9idWZmZXJzLCAwLCAicGdfc2VyaWFsIiwKLQkJCQkgIExXVFJBTkNIRV9TRVJJQUxfQlVG RkVSLCBMV1RSQU5DSEVfU0VSSUFMX1NMUlUsCi0JCQkJICBTWU5DX0hBTkRMRVJfTk9ORSwg ZmFsc2UpOworCVNpbXBsZUxydVJlcXVlc3QoLmRlc2MgPSAmU2VyaWFsU2xydURlc2MsCisJ CQkJCSAubmFtZSA9ICJzZXJpYWxpemFibGUiLAorCQkJCQkgLkRpciA9ICJwZ19zZXJpYWwi LAorCQkJCQkgLmxvbmdfc2VnbWVudF9uYW1lcyA9IGZhbHNlLAorCisJCQkJCSAubnNsb3Rz ID0gc2VyaWFsaXphYmxlX2J1ZmZlcnMsCisKKwkJCQkJIC5zeW5jX2hhbmRsZXIgPSBTWU5D X0hBTkRMRVJfTk9ORSwKKwkJCQkJIC5QYWdlUHJlY2VkZXMgPSBTZXJpYWxQYWdlUHJlY2Vk ZXNMb2dpY2FsbHksCisJCQkJCSAuZXJyZGV0YWlsX2Zvcl9pb19lcnJvciA9IHNlcmlhbF9l cnJkZXRhaWxfZm9yX2lvX2Vycm9yLAorCisJCQkJCSAuYnVmZmVyX3RyYW5jaGVfaWQgPSBM V1RSQU5DSEVfU0VSSUFMX0JVRkZFUiwKKwkJCQkJIC5iYW5rX3RyYW5jaGVfaWQgPSBMV1RS QU5DSEVfU0VSSUFMX1NMUlUsCisJCSk7CiAjaWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lORwog CVNlcmlhbFBhZ2VQcmVjZWRlc0xvZ2ljYWxseVVuaXRUZXN0cygpOwogI2VuZGlmCi0JU2xy dVBhZ2VQcmVjZWRlc1VuaXRUZXN0cyhTZXJpYWxTbHJ1Q3RsLCBTRVJJQUxfRU5UUklFU1BF UlBBR0UpOwogCi0JLyoKLQkgKiBDcmVhdGUgb3IgYXR0YWNoIHRvIHRoZSBTZXJpYWxDb250 cm9sIHN0cnVjdHVyZS4KLQkgKi8KLQlzZXJpYWxDb250cm9sID0gKFNlcmlhbENvbnRyb2wp Ci0JCVNobWVtSW5pdFN0cnVjdCgiU2VyaWFsQ29udHJvbERhdGEiLCBzaXplb2YoU2VyaWFs Q29udHJvbERhdGEpLCAmZm91bmQpOwotCUFzc2VydChmb3VuZCA9PSBJc1VuZGVyUG9zdG1h c3Rlcik7CisJU2htZW1SZXF1ZXN0U3RydWN0KC5uYW1lID0gIlNlcmlhbENvbnRyb2xEYXRh IiwKKwkJCQkJICAgLnNpemUgPSBzaXplb2YoU2VyaWFsQ29udHJvbERhdGEpLAorCQkJCQkg ICAucHRyID0gKHZvaWQgKiopICZzZXJpYWxDb250cm9sLAorCQkpOworfQogCi0JLyoKLQkg KiBJZiB3ZSBqdXN0IGF0dGFjaGVkIHRvIGV4aXN0aW5nIHNoYXJlZCBtZW1vcnkgKEVYRUNf QkFDS0VORCksIHdlJ3JlIGFsbAotCSAqIGRvbmUuICBPdGhlcndpc2UsIGR1cmluZyBwb3N0 bWFzdGVyIHN0YXJ0dXAsIHByb2NlZWQgdG8gaW5pdGlhbGl6ZSBhbGwKLQkgKiB0aGUgc2hh cmVkIG1lbW9yeSBhcmVhcyB0aGF0IHdlIGFsbG9jYXRlZC4KLQkgKi8KLQlpZiAoSXNVbmRl clBvc3RtYXN0ZXIpCi0JewotCQkvKiBUaGlzIG5ldmVyIGNoYW5nZXMsIHNvIGxldCdzIGtl ZXAgYSBsb2NhbCBjb3B5LiAqLwotCQlPbGRDb21taXR0ZWRTeGFjdCA9IFByZWRYYWN0LT5P bGRDb21taXR0ZWRTeGFjdDsKLQkJcmV0dXJuOwotCX0KK3N0YXRpYyB2b2lkCitQcmVkaWNh dGVMb2NrU2htZW1Jbml0KHZvaWQgKmFyZykKK3sKKwlpbnQJCQltYXhfcndfY29uZmxpY3Rz OworCWJvb2wJCWZvdW5kOwogCiAJLyoKIAkgKiBSZXNlcnZlIGEgZHVtbXkgZW50cnkgaW4g dGhlIGhhc2ggdGFibGU7IHdlIHVzZSBpdCB0byBtYWtlIHN1cmUgdGhlcmUncwpAQCAtMTI3 Nyw3ICsxMjYyLDYgQEAgUHJlZGljYXRlTG9ja1NobWVtSW5pdCh2b2lkKQogCQkJCQkgICBI QVNIX0VOVEVSLCAmZm91bmQpOwogCUFzc2VydCghZm91bmQpOwogCi0JLyogSW5pdGlhbGl6 ZSBQcmVkWGFjdCBsaXN0ICovCiAJZGxpc3RfaW5pdCgmUHJlZFhhY3QtPmF2YWlsYWJsZUxp c3QpOwogCWRsaXN0X2luaXQoJlByZWRYYWN0LT5hY3RpdmVMaXN0KTsKIAlQcmVkWGFjdC0+ U3hhY3RHbG9iYWxYbWluID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CkBAIC0xMzEyLDEzICsx Mjk2LDEzIEBAIFByZWRpY2F0ZUxvY2tTaG1lbUluaXQodm9pZCkKIAlQcmVkWGFjdC0+T2xk Q29tbWl0dGVkU3hhY3QtPnBpZCA9IDA7CiAJUHJlZFhhY3QtPk9sZENvbW1pdHRlZFN4YWN0 LT5wZ3Byb2NubyA9IElOVkFMSURfUFJPQ19OVU1CRVI7CiAKLQkvKiBUaGlzIG5ldmVyIGNo YW5nZXMsIHNvIGxldCdzIGtlZXAgYSBsb2NhbCBjb3B5LiAqLwotCU9sZENvbW1pdHRlZFN4 YWN0ID0gUHJlZFhhY3QtPk9sZENvbW1pdHRlZFN4YWN0OwotCiAJLyogSW5pdGlhbGl6ZSB0 aGUgcnctY29uZmxpY3QgcG9vbCAqLwogCWRsaXN0X2luaXQoJlJXQ29uZmxpY3RQb29sLT5h dmFpbGFibGVMaXN0KTsKIAlSV0NvbmZsaWN0UG9vbC0+ZWxlbWVudCA9IChSV0NvbmZsaWN0 KSAoKGNoYXIgKikgUldDb25mbGljdFBvb2wgKwogCQkJCQkJCQkJCQlSV0NvbmZsaWN0UG9v bEhlYWRlckRhdGFTaXplKTsKKworCW1heF9yd19jb25mbGljdHMgPSBtYXhfc2VyaWFsaXph YmxlX3hhY3RzICogNTsKKwogCS8qIEFkZCBhbGwgZWxlbWVudHMgdG8gYXZhaWxhYmxlIGxp c3QsIGNsZWFuLiAqLwogCWZvciAoaW50IGkgPSAwOyBpIDwgbWF4X3J3X2NvbmZsaWN0czsg aSsrKQogCXsKQEAgLTEzMzUsNTcgKzEzMTksMjggQEAgUHJlZGljYXRlTG9ja1NobWVtSW5p dCh2b2lkKQogCXNlcmlhbENvbnRyb2wtPmhlYWRYaWQgPSBJbnZhbGlkVHJhbnNhY3Rpb25J ZDsKIAlzZXJpYWxDb250cm9sLT50YWlsWGlkID0gSW52YWxpZFRyYW5zYWN0aW9uSWQ7CiAJ TFdMb2NrUmVsZWFzZShTZXJpYWxDb250cm9sTG9jayk7Ci19CiAKLS8qCi0gKiBFc3RpbWF0 ZSBzaGFyZWQtbWVtb3J5IHNwYWNlIHVzZWQgZm9yIHByZWRpY2F0ZSBsb2NrIHRhYmxlCi0g Ki8KLVNpemUKLVByZWRpY2F0ZUxvY2tTaG1lbVNpemUodm9pZCkKLXsKLQlTaXplCQlzaXpl ID0gMDsKLQlpbnQ2NAkJbWF4X3ByZWRpY2F0ZV9sb2NrX3RhcmdldHM7Ci0JaW50NjQJCW1h eF9wcmVkaWNhdGVfbG9ja3M7Ci0JaW50NjQJCW1heF9zZXJpYWxpemFibGVfeGFjdHM7Ci0J aW50NjQJCW1heF9yd19jb25mbGljdHM7Ci0KLQkvKiBwcmVkaWNhdGUgbG9jayB0YXJnZXQg aGFzaCB0YWJsZSAqLwotCW1heF9wcmVkaWNhdGVfbG9ja190YXJnZXRzID0gTlBSRURJQ0FU RUxPQ0tUQVJHRVRFTlRTKCk7Ci0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIGhhc2hfZXN0aW1h dGVfc2l6ZShtYXhfcHJlZGljYXRlX2xvY2tfdGFyZ2V0cywKLQkJCQkJCQkJCQkJIHNpemVv ZihQUkVESUNBVEVMT0NLVEFSR0VUKSkpOwotCi0JLyogcHJlZGljYXRlIGxvY2sgaGFzaCB0 YWJsZSAqLwotCW1heF9wcmVkaWNhdGVfbG9ja3MgPSBtYXhfcHJlZGljYXRlX2xvY2tfdGFy Z2V0cyAqIDI7Ci0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIGhhc2hfZXN0aW1hdGVfc2l6ZSht YXhfcHJlZGljYXRlX2xvY2tzLAotCQkJCQkJCQkJCQkgc2l6ZW9mKFBSRURJQ0FURUxPQ0sp KSk7Ci0KLQkvKiB0cmFuc2FjdGlvbiBsaXN0ICovCi0JbWF4X3NlcmlhbGl6YWJsZV94YWN0 cyA9IChNYXhCYWNrZW5kcyArIG1heF9wcmVwYXJlZF94YWN0cykgKiAxMDsKLQlzaXplID0g YWRkX3NpemUoc2l6ZSwgUHJlZFhhY3RMaXN0RGF0YVNpemUpOwotCXNpemUgPSBhZGRfc2l6 ZShzaXplLCBtdWxfc2l6ZSgoU2l6ZSkgbWF4X3NlcmlhbGl6YWJsZV94YWN0cywKLQkJCQkJ CQkJICAgc2l6ZW9mKFNFUklBTElaQUJMRVhBQ1QpKSk7Ci0KLQkvKiB0cmFuc2FjdGlvbiB4 aWQgdGFibGUgKi8KLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgaGFzaF9lc3RpbWF0ZV9zaXpl KG1heF9zZXJpYWxpemFibGVfeGFjdHMsCi0JCQkJCQkJCQkJCSBzaXplb2YoU0VSSUFMSVpB QkxFWElEKSkpOworCVNscnVQYWdlUHJlY2VkZXNVbml0VGVzdHMoU2VyaWFsU2xydUN0bCwg U0VSSUFMX0VOVFJJRVNQRVJQQUdFKTsKIAotCS8qIHJ3LWNvbmZsaWN0IHBvb2wgKi8KLQlt YXhfcndfY29uZmxpY3RzID0gbWF4X3NlcmlhbGl6YWJsZV94YWN0cyAqIDU7Ci0Jc2l6ZSA9 IGFkZF9zaXplKHNpemUsIFJXQ29uZmxpY3RQb29sSGVhZGVyRGF0YVNpemUpOwotCXNpemUg PSBhZGRfc2l6ZShzaXplLCBtdWxfc2l6ZSgoU2l6ZSkgbWF4X3J3X2NvbmZsaWN0cywKLQkJ CQkJCQkJICAgUldDb25mbGljdERhdGFTaXplKSk7CisJLyogVGhpcyBuZXZlciBjaGFuZ2Vz LCBzbyBsZXQncyBrZWVwIGEgbG9jYWwgY29weS4gKi8KKwlPbGRDb21taXR0ZWRTeGFjdCA9 IFByZWRYYWN0LT5PbGRDb21taXR0ZWRTeGFjdDsKIAotCS8qIEhlYWQgZm9yIGxpc3Qgb2Yg ZmluaXNoZWQgc2VyaWFsaXphYmxlIHRyYW5zYWN0aW9ucy4gKi8KLQlzaXplID0gYWRkX3Np emUoc2l6ZSwgc2l6ZW9mKGRsaXN0X2hlYWQpKTsKKwkvKiBQcmUtY2FsY3VsYXRlIHRoZSBo YXNoIGFuZCBwYXJ0aXRpb24gbG9jayBvZiB0aGUgc2NyYXRjaCBlbnRyeSAqLworCVNjcmF0 Y2hUYXJnZXRUYWdIYXNoID0gUHJlZGljYXRlTG9ja1RhcmdldFRhZ0hhc2hDb2RlKCZTY3Jh dGNoVGFyZ2V0VGFnKTsKKwlTY3JhdGNoUGFydGl0aW9uTG9jayA9IFByZWRpY2F0ZUxvY2tI YXNoUGFydGl0aW9uTG9jayhTY3JhdGNoVGFyZ2V0VGFnSGFzaCk7Cit9CiAKLQkvKiBTaGFy ZWQgbWVtb3J5IHN0cnVjdHVyZXMgZm9yIFNMUlUgdHJhY2tpbmcgb2Ygb2xkIGNvbW1pdHRl ZCB4aWRzLiAqLwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBzaXplb2YoU2VyaWFsQ29udHJv bERhdGEpKTsKLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgU2ltcGxlTHJ1U2htZW1TaXplKHNl cmlhbGl6YWJsZV9idWZmZXJzLCAwKSk7CitzdGF0aWMgdm9pZAorUHJlZGljYXRlTG9ja1No bWVtQXR0YWNoKHZvaWQgKmFyZykKK3sKKwkvKiBUaGlzIG5ldmVyIGNoYW5nZXMsIHNvIGxl dCdzIGtlZXAgYSBsb2NhbCBjb3B5LiAqLworCU9sZENvbW1pdHRlZFN4YWN0ID0gUHJlZFhh Y3QtPk9sZENvbW1pdHRlZFN4YWN0OwogCi0JcmV0dXJuIHNpemU7CisJLyogUHJlLWNhbGN1 bGF0ZSB0aGUgaGFzaCBhbmQgcGFydGl0aW9uIGxvY2sgb2YgdGhlIHNjcmF0Y2ggZW50cnkg Ki8KKwlTY3JhdGNoVGFyZ2V0VGFnSGFzaCA9IFByZWRpY2F0ZUxvY2tUYXJnZXRUYWdIYXNo Q29kZSgmU2NyYXRjaFRhcmdldFRhZyk7CisJU2NyYXRjaFBhcnRpdGlvbkxvY2sgPSBQcmVk aWNhdGVMb2NrSGFzaFBhcnRpdGlvbkxvY2soU2NyYXRjaFRhcmdldFRhZ0hhc2gpOwogfQog Ci0KIC8qCiAgKiBDb21wdXRlIHRoZSBoYXNoIGNvZGUgYXNzb2NpYXRlZCB3aXRoIGEgUFJF RElDQVRFTE9DS1RBRy4KICAqCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hY3Rp dml0eS9wZ3N0YXRfc2xydS5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0 X3NscnUuYwppbmRleCAyMTkwZjM4OGVhZS4uZjRkZmU4Njk3ZDcgMTAwNjQ0Ci0tLSBhL3Ny Yy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9zbHJ1LmMKKysrIGIvc3JjL2JhY2tl bmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X3NscnUuYwpAQCAtMTE5LDYgKzExOSw3IEBAIHBn c3RhdF9nZXRfc2xydV9pbmRleChjb25zdCBjaGFyICpuYW1lKQogewogCWludAkJCWk7CiAK KwlBc3NlcnQobmFtZSk7CiAJZm9yIChpID0gMDsgaSA8IFNMUlVfTlVNX0VMRU1FTlRTOyBp KyspCiAJewogCQlpZiAoc3RyY21wKHNscnVfbmFtZXNbaV0sIG5hbWUpID09IDApCmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvY2xvZy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNz L2Nsb2cuaAppbmRleCBhMWNmZWQ1ZjQzYy4uNzg5NDk5OGM3NjMgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL2FjY2Vzcy9jbG9nLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2Nsb2cu aApAQCAtNDAsOCArNDAsNiBAQCBleHRlcm4gdm9pZCBUcmFuc2FjdGlvbklkU2V0VHJlZVN0 YXR1cyhUcmFuc2FjdGlvbklkIHhpZCwgaW50IG5zdWJ4aWRzLAogCQkJCQkJCQkJICAgVHJh bnNhY3Rpb25JZCAqc3VieGlkcywgWGlkU3RhdHVzIHN0YXR1cywgWExvZ1JlY1B0ciBsc24p OwogZXh0ZXJuIFhpZFN0YXR1cyBUcmFuc2FjdGlvbklkR2V0U3RhdHVzKFRyYW5zYWN0aW9u SWQgeGlkLCBYTG9nUmVjUHRyICpsc24pOwogCi1leHRlcm4gU2l6ZSBDTE9HU2htZW1TaXpl KHZvaWQpOwotZXh0ZXJuIHZvaWQgQ0xPR1NobWVtSW5pdCh2b2lkKTsKIGV4dGVybiB2b2lk IEJvb3RTdHJhcENMT0codm9pZCk7CiBleHRlcm4gdm9pZCBTdGFydHVwQ0xPRyh2b2lkKTsK IGV4dGVybiB2b2lkIFRyaW1DTE9HKHZvaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv YWNjZXNzL2NvbW1pdF90cy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL2NvbW1pdF90cy5oCmlu ZGV4IDQ5ZWUyMWNkNWQyLi44MjVjY2RhOTBlZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv YWNjZXNzL2NvbW1pdF90cy5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9jb21taXRfdHMu aApAQCAtMjcsOCArMjcsNiBAQCBleHRlcm4gYm9vbCBUcmFuc2FjdGlvbklkR2V0Q29tbWl0 VHNEYXRhKFRyYW5zYWN0aW9uSWQgeGlkLAogZXh0ZXJuIFRyYW5zYWN0aW9uSWQgR2V0TGF0 ZXN0Q29tbWl0VHNEYXRhKFRpbWVzdGFtcFR6ICp0cywKIAkJCQkJCQkJCQkgICBSZXBsT3Jp Z2luSWQgKm5vZGVpZCk7CiAKLWV4dGVybiBTaXplIENvbW1pdFRzU2htZW1TaXplKHZvaWQp OwotZXh0ZXJuIHZvaWQgQ29tbWl0VHNTaG1lbUluaXQodm9pZCk7CiBleHRlcm4gdm9pZCBC b290U3RyYXBDb21taXRUcyh2b2lkKTsKIGV4dGVybiB2b2lkIFN0YXJ0dXBDb21taXRUcyh2 b2lkKTsKIGV4dGVybiB2b2lkIENvbW1pdFRzUGFyYW1ldGVyQ2hhbmdlKGJvb2wgbmV3dmFs dWUsIGJvb2wgb2xkdmFsdWUpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL211 bHRpeGFjdC5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL211bHRpeGFjdC5oCmluZGV4IDJhZThi NTcxZGNjLi42YmU1Mjk5YWI2OCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNzL211 bHRpeGFjdC5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9tdWx0aXhhY3QuaApAQCAtMTIx LDggKzEyMSw2IEBAIGV4dGVybiB2b2lkIEF0RU9YYWN0X011bHRpWGFjdCh2b2lkKTsKIGV4 dGVybiB2b2lkIEF0UHJlcGFyZV9NdWx0aVhhY3Qodm9pZCk7CiBleHRlcm4gdm9pZCBQb3N0 UHJlcGFyZV9NdWx0aVhhY3QoRnVsbFRyYW5zYWN0aW9uSWQgZnhpZCk7CiAKLWV4dGVybiBT aXplIE11bHRpWGFjdFNobWVtU2l6ZSh2b2lkKTsKLWV4dGVybiB2b2lkIE11bHRpWGFjdFNo bWVtSW5pdCh2b2lkKTsKIGV4dGVybiB2b2lkIEJvb3RTdHJhcE11bHRpWGFjdCh2b2lkKTsK IGV4dGVybiB2b2lkIFN0YXJ0dXBNdWx0aVhhY3Qodm9pZCk7CiBleHRlcm4gdm9pZCBUcmlt TXVsdGlYYWN0KHZvaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3NscnUu aCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9zbHJ1LmgKaW5kZXggZjk2NmQwZDlmZTcuLjM2YTc1 MTRkN2EwIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3Mvc2xydS5oCisrKyBiL3Ny Yy9pbmNsdWRlL2FjY2Vzcy9zbHJ1LmgKQEAgLTE2LDYgKzE2LDcgQEAKICNpbmNsdWRlICJh Y2Nlc3MvdHJhbnNhbS5oIgogI2luY2x1ZGUgImFjY2Vzcy94bG9nZGVmcy5oIgogI2luY2x1 ZGUgInN0b3JhZ2UvbHdsb2NrLmgiCisjaW5jbHVkZSAic3RvcmFnZS9zaG1lbS5oIgogI2lu Y2x1ZGUgInN0b3JhZ2Uvc3luYy5oIgogCiAvKgpAQCAtMTA2LDIzICsxMDcsMjggQEAgdHlw ZWRlZiBzdHJ1Y3QgU2xydVNoYXJlZERhdGEKIAogdHlwZWRlZiBTbHJ1U2hhcmVkRGF0YSAq U2xydVNoYXJlZDsKIAotLyoKLSAqIFNscnVDdGxEYXRhIGlzIGFuIHVuc2hhcmVkIHN0cnVj dHVyZSB0aGF0IHBvaW50cyB0byB0aGUgYWN0aXZlIGluZm9ybWF0aW9uCi0gKiBpbiBzaGFy ZWQgbWVtb3J5LgotICovCi10eXBlZGVmIHN0cnVjdCBTbHJ1Q3RsRGF0YQordHlwZWRlZiBz dHJ1Y3QgU2xydURlc2MgU2xydURlc2M7CisKK3R5cGVkZWYgc3RydWN0IFNscnVPcHRzCiB7 Ci0JU2xydVNoYXJlZAlzaGFyZWQ7CisJU2htZW1TdHJ1Y3RPcHRzIGJhc2U7CiAKLQkvKiBO dW1iZXIgb2YgYmFua3MgaW4gdGhpcyBTTFJVLiAqLwotCXVpbnQxNgkJbmJhbmtzOworCS8q CisJICogbmFtZSBvZiBTTFJVLiAgKFRoaXMgaXMgdXNlci12aXNpYmxlLCBwaWNrIHdpdGgg Y2FyZSEpCisJICovCisJY29uc3QgY2hhciAqbmFtZTsKIAogCS8qCi0JICogSWYgdHJ1ZSwg dXNlIGxvbmcgc2VnbWVudCBmaWxlIG5hbWVzLiAgT3RoZXJ3aXNlLCB1c2Ugc2hvcnQgZmls ZSBuYW1lcy4KLQkgKgotCSAqIEZvciBkZXRhaWxzIGFib3V0IHRoZSBmaWxlIG5hbWUgZm9y bWF0LCBzZWUgU2xydUZpbGVOYW1lKCkuCisJICogUG9pbnRlciB0byBhIGJhY2tlbmQtcHJp dmF0ZSBoYW5kbGUgZm9yIHRoZSBTTFJVLiAgSXQgaXMgaW5pdGlhbGl6ZWQgaW4KKwkgKiB3 aGVuIHRoZSBTTFJVIGlzIGluaXRpYWxpemVkIG9yIGF0dGFjaGVkIHRvLgogCSAqLwotCWJv b2wJCWxvbmdfc2VnbWVudF9uYW1lczsKKwlTbHJ1RGVzYyAgICpkZXNjOworCisJLyogbnVt YmVyIG9mIHBhZ2Ugc2xvdHMgdG8gdXNlLiAqLworCWludAkJCW5zbG90czsKKworCS8qIG51 bWJlciBvZiBMU04gZ3JvdXBzIHBlciBwYWdlIChzZXQgdG8gemVybyBpZiBub3QgcmVsZXZh bnQpLiAqLworCWludAkJCW5sc25zOwogCiAJLyoKIAkgKiBXaGljaCBzeW5jIGhhbmRsZXIg ZnVuY3Rpb24gdG8gdXNlIHdoZW4gaGFuZGluZyBzeW5jIHJlcXVlc3RzIG92ZXIgdG8KQEAg LTEzMCw2ICsxMzYsMTkgQEAgdHlwZWRlZiBzdHJ1Y3QgU2xydUN0bERhdGEKIAkgKi8KIAlT eW5jUmVxdWVzdEhhbmRsZXIgc3luY19oYW5kbGVyOwogCisJLyoKKwkgKiBQR0RBVEEtcmVs YXRpdmUgc3ViZGlyZWN0b3J5IHRoYXQgd2lsbCBjb250YWluIHRoZSBmaWxlcy4KKwkgKi8K Kwljb25zdCBjaGFyICpEaXI7CisKKwkvKgorCSAqIElmIHRydWUsIHVzZSBsb25nIHNlZ21l bnQgZmlsZSBuYW1lcy4gIE90aGVyd2lzZSwgdXNlIHNob3J0IGZpbGUgbmFtZXMuCisJICoK KwkgKiBGb3IgZGV0YWlscyBhYm91dCB0aGUgZmlsZSBuYW1lIGZvcm1hdCwgc2VlIFNscnVG aWxlTmFtZSgpLgorCSAqLworCWJvb2wJCWxvbmdfc2VnbWVudF9uYW1lczsKKworCiAJLyoK IAkgKiBEZWNpZGUgd2hldGhlciBhIHBhZ2UgaXMgIm9sZGVyIiBmb3IgdHJ1bmNhdGlvbiBh bmQgYXMgYSBoaW50IGZvcgogCSAqIGV2aWN0aW5nIHBhZ2VzIGluIExSVSBvcmRlci4gIFJl dHVybiB0cnVlIGlmIGV2ZXJ5IGVudHJ5IG9mIHRoZSBmaXJzdApAQCAtMTUzLDEzICsxNzIs MjYgQEAgdHlwZWRlZiBzdHJ1Y3QgU2xydUN0bERhdGEKIAlpbnQJCQkoKmVycmRldGFpbF9m b3JfaW9fZXJyb3IpIChjb25zdCB2b2lkICpvcGFxdWVfZGF0YSk7CiAKIAkvKgotCSAqIERp ciBpcyBzZXQgZHVyaW5nIFNpbXBsZUxydUluaXQgYW5kIGRvZXMgbm90IGNoYW5nZSB0aGVy ZWFmdGVyLiBTaW5jZQotCSAqIGl0J3MgYWx3YXlzIHRoZSBzYW1lLCBpdCBkb2Vzbid0IG5l ZWQgdG8gYmUgaW4gc2hhcmVkIG1lbW9yeS4KKwkgKiBUcmFuY2hlIElEcyB0byB1c2UgZm9y IHRoZSBTTFJVJ3MgcGVyLWJ1ZmZlciBhbmQgcGVyLWJhbmsgTFdMb2Nrcy4gIElmCisJICog dGhlc2UgYXJlIGxlZnQgYXMgemVyb3MsIG5ldyB0cmFuY2hlcyB3aWxsIGJlIGFzc2lnbmVk IGR5bmFtaWNhbGx5LgogCSAqLwotCWNoYXIJCURpcls2NF07Ci19IFNscnVDdGxEYXRhOwor CWludAkJCWJ1ZmZlcl90cmFuY2hlX2lkOworCWludAkJCWJhbmtfdHJhbmNoZV9pZDsKK30g U2xydU9wdHM7CiAKLXR5cGVkZWYgU2xydUN0bERhdGEgKlNscnVDdGw7CisvKgorICogU2xy dURlc2MgaXMgYW4gdW5zaGFyZWQgc3RydWN0dXJlIHRoYXQgcG9pbnRzIHRvIHRoZSBhY3Rp dmUgaW5mb3JtYXRpb24KKyAqIGluIHNoYXJlZCBtZW1vcnkuCisgKi8KK3R5cGVkZWYgc3Ry dWN0IFNscnVEZXNjCit7CisJU2xydU9wdHMJb3B0aW9uczsKKworCVNscnVTaGFyZWQJc2hh cmVkOworCisJLyogTnVtYmVyIG9mIGJhbmtzIGluIHRoaXMgU0xSVS4gKi8KKwl1aW50MTYJ CW5iYW5rczsKK30gU2xydURlc2M7CiAKIC8qCiAgKiBHZXQgdGhlIFNMUlUgYmFuayBsb2Nr IGZvciBnaXZlbiBTbHJ1Q3RsIGFuZCB0aGUgcGFnZW5vLgpAQCAtMTY4LDQ4ICsyMDAsNTIg QEAgdHlwZWRlZiBTbHJ1Q3RsRGF0YSAqU2xydUN0bDsKICAqIHJlc3BlY3RpdmUgYmFuay4K ICAqLwogc3RhdGljIGlubGluZSBMV0xvY2sgKgotU2ltcGxlTHJ1R2V0QmFua0xvY2soU2xy dUN0bCBjdGwsIGludDY0IHBhZ2VubykKK1NpbXBsZUxydUdldEJhbmtMb2NrKFNscnVEZXNj ICpjdGwsIGludDY0IHBhZ2VubykKIHsKIAlpbnQJCQliYW5rbm87CiAKKwlBc3NlcnQoY3Rs LT5uYmFua3MgIT0gMCk7CiAJYmFua25vID0gcGFnZW5vICUgY3RsLT5uYmFua3M7CiAJcmV0 dXJuICYoY3RsLT5zaGFyZWQtPmJhbmtfbG9ja3NbYmFua25vXS5sb2NrKTsKIH0KIAotZXh0 ZXJuIFNpemUgU2ltcGxlTHJ1U2htZW1TaXplKGludCBuc2xvdHMsIGludCBubHNucyk7Citl eHRlcm4gdm9pZCBTaW1wbGVMcnVSZXF1ZXN0V2l0aE9wdHMoY29uc3QgU2xydU9wdHMgKm9w dGlvbnMpOworCisjZGVmaW5lIFNpbXBsZUxydVJlcXVlc3QoLi4uKSAgXAorCVNpbXBsZUxy dVJlcXVlc3RXaXRoT3B0cygmKFNscnVPcHRzKXtfX1ZBX0FSR1NfX30pCisKIGV4dGVybiBp bnQJU2ltcGxlTHJ1QXV0b3R1bmVCdWZmZXJzKGludCBkaXZpc29yLCBpbnQgbWF4KTsKLWV4 dGVybiB2b2lkIFNpbXBsZUxydUluaXQoU2xydUN0bCBjdGwsIGNvbnN0IGNoYXIgKm5hbWUs IGludCBuc2xvdHMsIGludCBubHNucywKLQkJCQkJCSAgY29uc3QgY2hhciAqc3ViZGlyLCBp bnQgYnVmZmVyX3RyYW5jaGVfaWQsCi0JCQkJCQkgIGludCBiYW5rX3RyYW5jaGVfaWQsIFN5 bmNSZXF1ZXN0SGFuZGxlciBzeW5jX2hhbmRsZXIsCi0JCQkJCQkgIGJvb2wgbG9uZ19zZWdt ZW50X25hbWVzKTsKLWV4dGVybiBpbnQJU2ltcGxlTHJ1WmVyb1BhZ2UoU2xydUN0bCBjdGws IGludDY0IHBhZ2Vubyk7Ci1leHRlcm4gdm9pZCBTaW1wbGVMcnVaZXJvQW5kV3JpdGVQYWdl KFNscnVDdGwgY3RsLCBpbnQ2NCBwYWdlbm8pOwotZXh0ZXJuIGludAlTaW1wbGVMcnVSZWFk UGFnZShTbHJ1Q3RsIGN0bCwgaW50NjQgcGFnZW5vLCBib29sIHdyaXRlX29rLAorZXh0ZXJu IGludAlTaW1wbGVMcnVaZXJvUGFnZShTbHJ1RGVzYyAqY3RsLCBpbnQ2NCBwYWdlbm8pOwor ZXh0ZXJuIHZvaWQgU2ltcGxlTHJ1WmVyb0FuZFdyaXRlUGFnZShTbHJ1RGVzYyAqY3RsLCBp bnQ2NCBwYWdlbm8pOworZXh0ZXJuIGludAlTaW1wbGVMcnVSZWFkUGFnZShTbHJ1RGVzYyAq Y3RsLCBpbnQ2NCBwYWdlbm8sIGJvb2wgd3JpdGVfb2ssCiAJCQkJCQkJICBjb25zdCB2b2lk ICpvcGFxdWVfZGF0YSk7Ci1leHRlcm4gaW50CVNpbXBsZUxydVJlYWRQYWdlX1JlYWRPbmx5 KFNscnVDdGwgY3RsLCBpbnQ2NCBwYWdlbm8sCitleHRlcm4gaW50CVNpbXBsZUxydVJlYWRQ YWdlX1JlYWRPbmx5KFNscnVEZXNjICpjdGwsIGludDY0IHBhZ2VubywKIAkJCQkJCQkJCSAg IGNvbnN0IHZvaWQgKm9wYXF1ZV9kYXRhKTsKLWV4dGVybiB2b2lkIFNpbXBsZUxydVdyaXRl UGFnZShTbHJ1Q3RsIGN0bCwgaW50IHNsb3Rubyk7Ci1leHRlcm4gdm9pZCBTaW1wbGVMcnVX cml0ZUFsbChTbHJ1Q3RsIGN0bCwgYm9vbCBhbGxvd19yZWRpcnRpZWQpOworZXh0ZXJuIHZv aWQgU2ltcGxlTHJ1V3JpdGVQYWdlKFNscnVEZXNjICpjdGwsIGludCBzbG90bm8pOworZXh0 ZXJuIHZvaWQgU2ltcGxlTHJ1V3JpdGVBbGwoU2xydURlc2MgKmN0bCwgYm9vbCBhbGxvd19y ZWRpcnRpZWQpOwogI2lmZGVmIFVTRV9BU1NFUlRfQ0hFQ0tJTkcKLWV4dGVybiB2b2lkIFNs cnVQYWdlUHJlY2VkZXNVbml0VGVzdHMoU2xydUN0bCBjdGwsIGludCBwZXJfcGFnZSk7Citl eHRlcm4gdm9pZCBTbHJ1UGFnZVByZWNlZGVzVW5pdFRlc3RzKFNscnVEZXNjICpjdGwsIGlu dCBwZXJfcGFnZSk7CiAjZWxzZQogI2RlZmluZSBTbHJ1UGFnZVByZWNlZGVzVW5pdFRlc3Rz KGN0bCwgcGVyX3BhZ2UpIGRvIHt9IHdoaWxlICgwKQogI2VuZGlmCi1leHRlcm4gdm9pZCBT aW1wbGVMcnVUcnVuY2F0ZShTbHJ1Q3RsIGN0bCwgaW50NjQgY3V0b2ZmUGFnZSk7Ci1leHRl cm4gYm9vbCBTaW1wbGVMcnVEb2VzUGh5c2ljYWxQYWdlRXhpc3QoU2xydUN0bCBjdGwsIGlu dDY0IHBhZ2Vubyk7CitleHRlcm4gdm9pZCBTaW1wbGVMcnVUcnVuY2F0ZShTbHJ1RGVzYyAq Y3RsLCBpbnQ2NCBjdXRvZmZQYWdlKTsKK2V4dGVybiBib29sIFNpbXBsZUxydURvZXNQaHlz aWNhbFBhZ2VFeGlzdChTbHJ1RGVzYyAqY3RsLCBpbnQ2NCBwYWdlbm8pOwogCi10eXBlZGVm IGJvb2wgKCpTbHJ1U2NhbkNhbGxiYWNrKSAoU2xydUN0bCBjdGwsIGNoYXIgKmZpbGVuYW1l LCBpbnQ2NCBzZWdwYWdlLAordHlwZWRlZiBib29sICgqU2xydVNjYW5DYWxsYmFjaykgKFNs cnVEZXNjICpjdGwsIGNoYXIgKmZpbGVuYW1lLCBpbnQ2NCBzZWdwYWdlLAogCQkJCQkJCQkg IHZvaWQgKmRhdGEpOwotZXh0ZXJuIGJvb2wgU2xydVNjYW5EaXJlY3RvcnkoU2xydUN0bCBj dGwsIFNscnVTY2FuQ2FsbGJhY2sgY2FsbGJhY2ssIHZvaWQgKmRhdGEpOwotZXh0ZXJuIHZv aWQgU2xydURlbGV0ZVNlZ21lbnQoU2xydUN0bCBjdGwsIGludDY0IHNlZ25vKTsKK2V4dGVy biBib29sIFNscnVTY2FuRGlyZWN0b3J5KFNscnVEZXNjICpjdGwsIFNscnVTY2FuQ2FsbGJh Y2sgY2FsbGJhY2ssIHZvaWQgKmRhdGEpOworZXh0ZXJuIHZvaWQgU2xydURlbGV0ZVNlZ21l bnQoU2xydURlc2MgKmN0bCwgaW50NjQgc2Vnbm8pOwogCi1leHRlcm4gaW50CVNscnVTeW5j RmlsZVRhZyhTbHJ1Q3RsIGN0bCwgY29uc3QgRmlsZVRhZyAqZnRhZywgY2hhciAqcGF0aCk7 CitleHRlcm4gaW50CVNscnVTeW5jRmlsZVRhZyhTbHJ1RGVzYyAqY3RsLCBjb25zdCBGaWxl VGFnICpmdGFnLCBjaGFyICpwYXRoKTsKIAogLyogU2xydVNjYW5EaXJlY3RvcnkgcHVibGlj IGNhbGxiYWNrcyAqLwotZXh0ZXJuIGJvb2wgU2xydVNjYW5EaXJDYlJlcG9ydFByZXNlbmNl KFNscnVDdGwgY3RsLCBjaGFyICpmaWxlbmFtZSwKK2V4dGVybiBib29sIFNscnVTY2FuRGly Q2JSZXBvcnRQcmVzZW5jZShTbHJ1RGVzYyAqY3RsLCBjaGFyICpmaWxlbmFtZSwKIAkJCQkJ CQkJCQlpbnQ2NCBzZWdwYWdlLCB2b2lkICpkYXRhKTsKLWV4dGVybiBib29sIFNscnVTY2Fu RGlyQ2JEZWxldGVBbGwoU2xydUN0bCBjdGwsIGNoYXIgKmZpbGVuYW1lLCBpbnQ2NCBzZWdw YWdlLAorZXh0ZXJuIGJvb2wgU2xydVNjYW5EaXJDYkRlbGV0ZUFsbChTbHJ1RGVzYyAqY3Rs LCBjaGFyICpmaWxlbmFtZSwgaW50NjQgc2VncGFnZSwKIAkJCQkJCQkJICAgdm9pZCAqZGF0 YSk7CiBleHRlcm4gYm9vbCBjaGVja19zbHJ1X2J1ZmZlcnMoY29uc3QgY2hhciAqbmFtZSwg aW50ICpuZXd2YWwpOwogCitleHRlcm4gdm9pZCBzaG1lbV9zbHJ1X2luaXQodm9pZCAqbG9j YXRpb24sIFNobWVtU3RydWN0T3B0cyAqb3B0aW9ucyk7CitleHRlcm4gdm9pZCBzaG1lbV9z bHJ1X2F0dGFjaCh2b2lkICpsb2NhdGlvbiwgU2htZW1TdHJ1Y3RPcHRzICpvcHRpb25zKTsK KwogI2VuZGlmCQkJCQkJCS8qIFNMUlVfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv YWNjZXNzL3N1YnRyYW5zLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3Mvc3VidHJhbnMuaAppbmRl eCAxMWI3MzU1ZGJkZi4uZDk4NmNkOWU4MDIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2Fj Y2Vzcy9zdWJ0cmFucy5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vzcy9zdWJ0cmFucy5oCkBA IC0xNSw4ICsxNSw2IEBAIGV4dGVybiB2b2lkIFN1YlRyYW5zU2V0UGFyZW50KFRyYW5zYWN0 aW9uSWQgeGlkLCBUcmFuc2FjdGlvbklkIHBhcmVudCk7CiBleHRlcm4gVHJhbnNhY3Rpb25J ZCBTdWJUcmFuc0dldFBhcmVudChUcmFuc2FjdGlvbklkIHhpZCk7CiBleHRlcm4gVHJhbnNh Y3Rpb25JZCBTdWJUcmFuc0dldFRvcG1vc3RUcmFuc2FjdGlvbihUcmFuc2FjdGlvbklkIHhp ZCk7CiAKLWV4dGVybiBTaXplIFNVQlRSQU5TU2htZW1TaXplKHZvaWQpOwotZXh0ZXJuIHZv aWQgU1VCVFJBTlNTaG1lbUluaXQodm9pZCk7CiBleHRlcm4gdm9pZCBCb290U3RyYXBTVUJU UkFOUyh2b2lkKTsKIGV4dGVybiB2b2lkIFN0YXJ0dXBTVUJUUkFOUyhUcmFuc2FjdGlvbklk IG9sZGVzdEFjdGl2ZVhJRCk7CiBleHRlcm4gdm9pZCBDaGVja1BvaW50U1VCVFJBTlModm9p ZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9hc3luYy5oIGIvc3JjL2lu Y2x1ZGUvY29tbWFuZHMvYXN5bmMuaAppbmRleCAzYmFhZTdjYjhkYy4uMjAyZTRhYTVlNzQg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2FzeW5jLmgKKysrIGIvc3JjL2lu Y2x1ZGUvY29tbWFuZHMvYXN5bmMuaApAQCAtMTksOSArMTksNiBAQCBleHRlcm4gUEdETExJ TVBPUlQgYm9vbCBUcmFjZV9ub3RpZnk7CiBleHRlcm4gUEdETExJTVBPUlQgaW50IG1heF9u b3RpZnlfcXVldWVfcGFnZXM7CiBleHRlcm4gUEdETExJTVBPUlQgdm9sYXRpbGUgc2lnX2F0 b21pY190IG5vdGlmeUludGVycnVwdFBlbmRpbmc7CiAKLWV4dGVybiBTaXplIEFzeW5jU2ht ZW1TaXplKHZvaWQpOwotZXh0ZXJuIHZvaWQgQXN5bmNTaG1lbUluaXQodm9pZCk7Ci0KIGV4 dGVybiB2b2lkIE5vdGlmeU15RnJvbnRFbmQoY29uc3QgY2hhciAqY2hhbm5lbCwKIAkJCQkJ CQkgY29uc3QgY2hhciAqcGF5bG9hZCwKIAkJCQkJCQkgaW50MzIgc3JjUGlkKTsKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvcHJlZGljYXRlLmggYi9zcmMvaW5jbHVkZS9z dG9yYWdlL3ByZWRpY2F0ZS5oCmluZGV4IGE1YWM1NWI4ZjdlLi40NDNiZmZiNThmZCAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9wcmVkaWNhdGUuaAorKysgYi9zcmMvaW5j bHVkZS9zdG9yYWdlL3ByZWRpY2F0ZS5oCkBAIC00MSwxMSArNDEsNiBAQCB0eXBlZGVmIHZv aWQgKlNlcmlhbGl6YWJsZVhhY3RIYW5kbGU7CiAvKgogICogZnVuY3Rpb24gcHJvdG90eXBl cwogICovCi0KLS8qIGhvdXNla2VlcGluZyBmb3Igc2hhcmVkIG1lbW9yeSBwcmVkaWNhdGUg bG9jayBzdHJ1Y3R1cmVzICovCi1leHRlcm4gdm9pZCBQcmVkaWNhdGVMb2NrU2htZW1Jbml0 KHZvaWQpOwotZXh0ZXJuIFNpemUgUHJlZGljYXRlTG9ja1NobWVtU2l6ZSh2b2lkKTsKLQog ZXh0ZXJuIHZvaWQgQ2hlY2tQb2ludFByZWRpY2F0ZSh2b2lkKTsKIAogLyogcHJlZGljYXRl IGxvY2sgcmVwb3J0aW5nICovCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3No bWVtX2ludGVybmFsLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3NobWVtX2ludGVybmFsLmgK aW5kZXggZmUxMmJmMzM0MzkuLjdiMjU5ZDMzY2NmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9zdG9yYWdlL3NobWVtX2ludGVybmFsLmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9z aG1lbV9pbnRlcm5hbC5oCkBAIC0yMSw2ICsyMSw3IEBAIHR5cGVkZWYgZW51bQogewogCVNI TUVNX0tJTkRfU1RSVUNUID0gMCwJCS8qIHBsYWluLCBjb250aWd1b3VzIGFyZWEgb2YgbWVt b3J5ICovCiAJU0hNRU1fS0lORF9IQVNILAkJCS8qIGEgaGFzaCB0YWJsZSAqLworCVNITUVN X0tJTkRfU0xSVSwJCQkvKiBTTFJVIGJ1ZmZlcnMgYW5kIGNvbnRyb2wgc3RydWN0dXJlcyAq LwogfSBTaG1lbVJlcXVlc3RLaW5kOwogCiAvKiBzaG1lbS5jICovCmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9zdG9yYWdlL3N1YnN5c3RlbWxpc3QuaCBiL3NyYy9pbmNsdWRlL3N0b3Jh Z2Uvc3Vic3lzdGVtbGlzdC5oCmluZGV4IGQ2MmMyOWYxMzYxLi5jMTk5ZjE4YTI3YSAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9zdWJzeXN0ZW1saXN0LmgKKysrIGIvc3Jj L2luY2x1ZGUvc3RvcmFnZS9zdWJzeXN0ZW1saXN0LmgKQEAgLTMyLDYgKzMyLDEzIEBAIFBH X1NITUVNX1NVQlNZU1RFTShEU01SZWdpc3RyeVNobWVtQ2FsbGJhY2tzKQogCiAvKiB4bG9n LCBjbG9nLCBhbmQgYnVmZmVycyAqLwogUEdfU0hNRU1fU1VCU1lTVEVNKFZhcnN1cFNobWVt Q2FsbGJhY2tzKQorUEdfU0hNRU1fU1VCU1lTVEVNKENMT0dTaG1lbUNhbGxiYWNrcykKK1BH X1NITUVNX1NVQlNZU1RFTShDb21taXRUc1NobWVtQ2FsbGJhY2tzKQorUEdfU0hNRU1fU1VC U1lTVEVNKFNVQlRSQU5TU2htZW1DYWxsYmFja3MpCitQR19TSE1FTV9TVUJTWVNURU0oTXVs dGlYYWN0U2htZW1DYWxsYmFja3MpCisKKy8qIHByZWRpY2F0ZSBsb2NrIG1hbmFnZXIgKi8K K1BHX1NITUVNX1NVQlNZU1RFTShQcmVkaWNhdGVMb2NrU2htZW1DYWxsYmFja3MpCiAKIC8q IHByb2Nlc3MgdGFibGUgKi8KIFBHX1NITUVNX1NVQlNZU1RFTShQcm9jR2xvYmFsU2htZW1D YWxsYmFja3MpCkBAIC00MywzICs1MCw2IEBAIFBHX1NITUVNX1NVQlNZU1RFTShTaGFyZWRJ bnZhbFNobWVtQ2FsbGJhY2tzKQogLyogaW50ZXJwcm9jZXNzIHNpZ25hbGluZyBtZWNoYW5p c21zICovCiBQR19TSE1FTV9TVUJTWVNURU0oUE1TaWduYWxTaG1lbUNhbGxiYWNrcykKIFBH X1NITUVNX1NVQlNZU1RFTShQcm9jU2lnbmFsU2htZW1DYWxsYmFja3MpCisKKy8qIG90aGVy IG1vZHVsZXMgdGhhdCBuZWVkIHNvbWUgc2hhcmVkIG1lbW9yeSBzcGFjZSAqLworUEdfU0hN RU1fU1VCU1lTVEVNKEFzeW5jU2htZW1DYWxsYmFja3MpCmRpZmYgLS1naXQgYS9zcmMvdGVz dC9tb2R1bGVzL3Rlc3Rfc2xydS90ZXN0X3NscnUuYyBiL3NyYy90ZXN0L21vZHVsZXMvdGVz dF9zbHJ1L3Rlc3Rfc2xydS5jCmluZGV4IGU0YmQyYWYwYmY1Li40MGVmZmZkYmY2MiAxMDA2 NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NscnUvdGVzdF9zbHJ1LmMKKysrIGIv c3JjL3Rlc3QvbW9kdWxlcy90ZXN0X3NscnUvdGVzdF9zbHJ1LmMKQEAgLTQwLDE0ICs0MCwy MiBAQCBQR19GVU5DVElPTl9JTkZPX1YxKHRlc3Rfc2xydV9kZWxldGVfYWxsKTsKIC8qIE51 bWJlciBvZiBTTFJVIHBhZ2Ugc2xvdHMgKi8KICNkZWZpbmUgTlVNX1RFU1RfQlVGRkVSUwkJ MTYKIAotc3RhdGljIFNscnVDdGxEYXRhIFRlc3RTbHJ1Q3RsRGF0YTsKLSNkZWZpbmUgVGVz dFNscnVDdGwJCQkoJlRlc3RTbHJ1Q3RsRGF0YSkKK3N0YXRpYyB2b2lkIHRlc3Rfc2xydV9z aG1lbV9yZXF1ZXN0KHZvaWQgKmFyZyk7CitzdGF0aWMgYm9vbCB0ZXN0X3NscnVfcGFnZV9w cmVjZWRlc19sb2dpY2FsbHkoaW50NjQgcGFnZTEsIGludDY0IHBhZ2UyKTsKK3N0YXRpYyBp bnQJdGVzdF9zbHJ1X2VycmRldGFpbF9mb3JfaW9fZXJyb3IoY29uc3Qgdm9pZCAqb3BhcXVl X2RhdGEpOwogCi1zdGF0aWMgc2htZW1fcmVxdWVzdF9ob29rX3R5cGUgcHJldl9zaG1lbV9y ZXF1ZXN0X2hvb2sgPSBOVUxMOwotc3RhdGljIHNobWVtX3N0YXJ0dXBfaG9va190eXBlIHBy ZXZfc2htZW1fc3RhcnR1cF9ob29rID0gTlVMTDsKK3N0YXRpYyBjb25zdCBjaGFyICpUZXN0 U2xydURpciA9ICJwZ190ZXN0X3NscnUiOworCitzdGF0aWMgU2xydURlc2MgVGVzdFNscnVE ZXNjOworCitzdGF0aWMgY29uc3QgU2htZW1DYWxsYmFja3MgdGVzdF9zbHJ1X3NobWVtX2Nh bGxiYWNrcyA9IHsKKwkucmVxdWVzdF9mbiA9IHRlc3Rfc2xydV9zaG1lbV9yZXF1ZXN0Cit9 OworCisjZGVmaW5lIFRlc3RTbHJ1Q3RsCQkJKCZUZXN0U2xydURlc2MpCiAKIHN0YXRpYyBi b29sCi10ZXN0X3NscnVfc2Nhbl9jYihTbHJ1Q3RsIGN0bCwgY2hhciAqZmlsZW5hbWUsIGlu dDY0IHNlZ3BhZ2UsIHZvaWQgKmRhdGEpCit0ZXN0X3NscnVfc2Nhbl9jYihTbHJ1RGVzYyAq Y3RsLCBjaGFyICpmaWxlbmFtZSwgaW50NjQgc2VncGFnZSwgdm9pZCAqZGF0YSkKIHsKIAll bG9nKE5PVElDRSwgIkNhbGxpbmcgdGVzdF9zbHJ1X3NjYW5fY2IoKSIpOwogCXJldHVybiBT bHJ1U2NhbkRpckNiRGVsZXRlQWxsKGN0bCwgZmlsZW5hbWUsIHNlZ3BhZ2UsIGRhdGEpOwpA QCAtMTkwLDIwICsxOTgsNiBAQCB0ZXN0X3NscnVfZGVsZXRlX2FsbChQR19GVU5DVElPTl9B UkdTKQogCVBHX1JFVFVSTl9WT0lEKCk7CiB9CiAKLS8qCi0gKiBNb2R1bGUgbG9hZCBjYWxs YmFja3MgYW5kIGluaXRpYWxpemF0aW9uLgotICovCi0KLXN0YXRpYyB2b2lkCi10ZXN0X3Ns cnVfc2htZW1fcmVxdWVzdCh2b2lkKQotewotCWlmIChwcmV2X3NobWVtX3JlcXVlc3RfaG9v aykKLQkJcHJldl9zaG1lbV9yZXF1ZXN0X2hvb2soKTsKLQotCS8qIHJlc2VydmUgc2hhcmVk IG1lbW9yeSBmb3IgdGhlIHRlc3QgU0xSVSAqLwotCVJlcXVlc3RBZGRpblNobWVtU3BhY2Uo U2ltcGxlTHJ1U2htZW1TaXplKE5VTV9URVNUX0JVRkZFUlMsIDApKTsKLX0KLQogc3RhdGlj IGJvb2wKIHRlc3Rfc2xydV9wYWdlX3ByZWNlZGVzX2xvZ2ljYWxseShpbnQ2NCBwYWdlMSwg aW50NjQgcGFnZTIpCiB7CkBAIC0yMTgsNjAgKzIxMiw0NiBAQCB0ZXN0X3NscnVfZXJyZGV0 YWlsX2Zvcl9pb19lcnJvcihjb25zdCB2b2lkICpvcGFxdWVfZGF0YSkKIAlyZXR1cm4gZXJy ZGV0YWlsKCJDb3VsZCBub3QgYWNjZXNzIHRlc3Rfc2xydSBlbnRyeSAldS4iLCB4aWQpOwog fQogCi1zdGF0aWMgdm9pZAotdGVzdF9zbHJ1X3NobWVtX3N0YXJ0dXAodm9pZCkKK3ZvaWQK K19QR19pbml0KHZvaWQpCiB7Ci0JLyoKLQkgKiBTaG9ydCBzZWdtZW50cyBuYW1lcyBhcmUg d2VsbCB0ZXN0ZWQgZWxzZXdoZXJlIHNvIGluIHRoaXMgdGVzdCB3ZSBhcmUKLQkgKiBmb2N1 c2luZyBvbiBsb25nIG5hbWVzLgotCSAqLwotCWNvbnN0IGJvb2wJbG9uZ19zZWdtZW50X25h bWVzID0gdHJ1ZTsKLQljb25zdCBjaGFyCXNscnVfZGlyX25hbWVbXSA9ICJwZ190ZXN0X3Ns cnUiOwotCWludAkJCXRlc3RfdHJhbmNoZV9pZCA9IC0xOwotCWludAkJCXRlc3RfYnVmZmVy X3RyYW5jaGVfaWQgPSAtMTsKLQotCWlmIChwcmV2X3NobWVtX3N0YXJ0dXBfaG9vaykKLQkJ cHJldl9zaG1lbV9zdGFydHVwX2hvb2soKTsKKwlpZiAoIXByb2Nlc3Nfc2hhcmVkX3ByZWxv YWRfbGlicmFyaWVzX2luX3Byb2dyZXNzKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCShlcnJt c2coImNhbm5vdCBsb2FkIFwiJXNcIiBhZnRlciBzdGFydHVwIiwgInRlc3Rfc2xydSIpLAor CQkJCSBlcnJkZXRhaWwoIlwiJXNcIiBtdXN0IGJlIGxvYWRlZCB3aXRoIFwic2hhcmVkX3By ZWxvYWRfbGlicmFyaWVzXCIuIiwKKwkJCQkJCSAgICJ0ZXN0X3NscnUiKSkpOwogCiAJLyoK IAkgKiBDcmVhdGUgdGhlIFNMUlUgZGlyZWN0b3J5IGlmIGl0IGRvZXMgbm90IGV4aXN0IHll dCwgZnJvbSB0aGUgcm9vdCBvZgogCSAqIHRoZSBkYXRhIGRpcmVjdG9yeS4KIAkgKi8KLQko dm9pZCkgTWFrZVBHRGlyZWN0b3J5KHNscnVfZGlyX25hbWUpOworCSh2b2lkKSBNYWtlUEdE aXJlY3RvcnkoVGVzdFNscnVEaXIpOwogCi0JLyoKLQkgKiBJbml0aWFsaXplIHRoZSBTTFJV IGZhY2lsaXR5LiAgSW4gRVhFQ19CQUNLRU5EIGJ1aWxkcywgdGhlCi0JICogc2htZW1fc3Rh cnR1cF9ob29rIGlzIGNhbGxlZCBpbiB0aGUgcG9zdG1hc3RlciBhbmQgaW4gZWFjaCBiYWNr ZW5kLCBidXQKLQkgKiB3ZSBvbmx5IG5lZWQgdG8gZ2VuZXJhdGUgdGhlIExXTG9jayB0cmFu Y2hlcyBvbmNlLiAgTm90ZSB0aGF0IHRoZXNlCi0JICogdHJhbmNoZSBJRCB2YXJpYWJsZXMg YXJlIG5vdCB1c2VkIGJ5IFNpbXBsZUxydUluaXQoKSB3aGVuCi0JICogSXNVbmRlclBvc3Rt YXN0ZXIgaXMgdHJ1ZS4KLQkgKi8KLQlpZiAoIUlzVW5kZXJQb3N0bWFzdGVyKQotCXsKLQkJ dGVzdF90cmFuY2hlX2lkID0gTFdMb2NrTmV3VHJhbmNoZUlkKCJ0ZXN0X3NscnVfdHJhbmNo ZSIpOwotCQl0ZXN0X2J1ZmZlcl90cmFuY2hlX2lkID0gTFdMb2NrTmV3VHJhbmNoZUlkKCJ0 ZXN0X2J1ZmZlcl90cmFuY2hlIik7Ci0JfQotCi0JVGVzdFNscnVDdGwtPlBhZ2VQcmVjZWRl cyA9IHRlc3Rfc2xydV9wYWdlX3ByZWNlZGVzX2xvZ2ljYWxseTsKLQlUZXN0U2xydUN0bC0+ ZXJyZGV0YWlsX2Zvcl9pb19lcnJvciA9IHRlc3Rfc2xydV9lcnJkZXRhaWxfZm9yX2lvX2Vy cm9yOwotCVNpbXBsZUxydUluaXQoVGVzdFNscnVDdGwsICJUZXN0U0xSVSIsCi0JCQkJICBO VU1fVEVTVF9CVUZGRVJTLCAwLCBzbHJ1X2Rpcl9uYW1lLAotCQkJCSAgdGVzdF9idWZmZXJf dHJhbmNoZV9pZCwgdGVzdF90cmFuY2hlX2lkLCBTWU5DX0hBTkRMRVJfTk9ORSwKLQkJCQkg IGxvbmdfc2VnbWVudF9uYW1lcyk7CisJUmVnaXN0ZXJTaG1lbUNhbGxiYWNrcygmdGVzdF9z bHJ1X3NobWVtX2NhbGxiYWNrcyk7CiB9CiAKLXZvaWQKLV9QR19pbml0KHZvaWQpCitzdGF0 aWMgdm9pZAordGVzdF9zbHJ1X3NobWVtX3JlcXVlc3Qodm9pZCAqYXJnKQogewotCWlmICgh cHJvY2Vzc19zaGFyZWRfcHJlbG9hZF9saWJyYXJpZXNfaW5fcHJvZ3Jlc3MpCi0JCWVyZXBv cnQoRVJST1IsCi0JCQkJKGVycm1zZygiY2Fubm90IGxvYWQgXCIlc1wiIGFmdGVyIHN0YXJ0 dXAiLCAidGVzdF9zbHJ1IiksCi0JCQkJIGVycmRldGFpbCgiXCIlc1wiIG11c3QgYmUgbG9h ZGVkIHdpdGggXCJzaGFyZWRfcHJlbG9hZF9saWJyYXJpZXNcIi4iLAotCQkJCQkJICAgInRl c3Rfc2xydSIpKSk7CisJU2ltcGxlTHJ1UmVxdWVzdCguZGVzYyA9ICZUZXN0U2xydURlc2Ms CisJCQkJCSAubmFtZSA9ICJUZXN0U0xSVSIsCisJCQkJCSAuRGlyID0gVGVzdFNscnVEaXIs CisKKwkvKgorCSAqIFNob3J0IHNlZ21lbnRzIG5hbWVzIGFyZSB3ZWxsIHRlc3RlZCBlbHNl d2hlcmUgc28gaW4gdGhpcyB0ZXN0IHdlIGFyZQorCSAqIGZvY3VzaW5nIG9uIGxvbmcgbmFt ZXMuCisJICovCisJCQkJCSAubG9uZ19zZWdtZW50X25hbWVzID0gdHJ1ZSwKKworCQkJCQkg Lm5zbG90cyA9IE5VTV9URVNUX0JVRkZFUlMsCisJCQkJCSAubmxzbnMgPSAwLAogCi0JcHJl dl9zaG1lbV9yZXF1ZXN0X2hvb2sgPSBzaG1lbV9yZXF1ZXN0X2hvb2s7Ci0Jc2htZW1fcmVx dWVzdF9ob29rID0gdGVzdF9zbHJ1X3NobWVtX3JlcXVlc3Q7CisJCQkJCSAuc3luY19oYW5k bGVyID0gU1lOQ19IQU5ETEVSX05PTkUsCisJCQkJCSAuUGFnZVByZWNlZGVzID0gdGVzdF9z bHJ1X3BhZ2VfcHJlY2VkZXNfbG9naWNhbGx5LAorCQkJCQkgLmVycmRldGFpbF9mb3JfaW9f ZXJyb3IgPSB0ZXN0X3NscnVfZXJyZGV0YWlsX2Zvcl9pb19lcnJvciwKIAotCXByZXZfc2ht ZW1fc3RhcnR1cF9ob29rID0gc2htZW1fc3RhcnR1cF9ob29rOwotCXNobWVtX3N0YXJ0dXBf aG9vayA9IHRlc3Rfc2xydV9zaG1lbV9zdGFydHVwOworCS8qIGxldCBzbHJ1LmMgYXNzaWdu IHRoZXNlICovCisJCQkJCSAuYnVmZmVyX3RyYW5jaGVfaWQgPSAwLAorCQkJCQkgLmJhbmtf dHJhbmNoZV9pZCA9IDAsCisJCSk7CiB9CmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRl bnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0Cmlu ZGV4IDM0OWNmNGU5ZjEyLi5mNTJhMGZhMWM3MiAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3Bn aW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZz Lmxpc3QKQEAgLTI5MDMsOSArMjkwMyw5IEBAIFNsb3RJbnZhbGlkYXRpb25DYXVzZU1hcAog U2xvdE51bWJlcgogU2xvdFN5bmNDdHhTdHJ1Y3QKIFNsb3RTeW5jU2tpcFJlYXNvbgotU2xy dUN0bAotU2xydUN0bERhdGEKK1NscnVEZXNjCiBTbHJ1RXJyb3JDYXVzZQorU2xydU9wdHMK IFNscnVQYWdlU3RhdHVzCiBTbHJ1U2NhbkNhbGxiYWNrCiBTbHJ1U2VnU3RhdGUKLS0gCjIu NDcuMwoK --------------DjaUCGyXkgmfSYE7E2Or3PMa Content-Type: text/x-patch; charset=UTF-8; name="v12-0010-Convert-AIO-to-use-the-shmem-allocation-function.patch" Content-Disposition: attachment; filename*0="v12-0010-Convert-AIO-to-use-the-shmem-allocation-function.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSBhYTFlYzg3YjQ1NjJhMDUyZmU5NmM5ODU0ZGQ0ZjMwODlmMWUxZWMwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFN1biwgNSBBcHIgMjAyNiAxOTo1NTo0MSArMDMwMApT dWJqZWN0OiBbUEFUQ0ggdjEyIDEwLzEzXSBDb252ZXJ0IEFJTyB0byB1c2UgdGhlIHNobWVt IGFsbG9jYXRpb24gZnVuY3Rpb25zCgpUaGlzIHJlcGxhY2VzIHRoZSAic2htZW1fc2l6ZSIg YW5kICJzaG1lbV9pbml0IiBjYWxsYmFja3MgaW4gdGhlIElPCm1ldGhvZHMgdGFibGUgd2l0 aCB0aGUgc2FtZSBTaG1lbUNhbGxiYWNrIHN0cnVjdCB0aGF0IHdlIG5vdyB1c2UgaW4Kb3Ro ZXIgc3Vic3lzdGVtcwoKUmV2aWV3ZWQtYnk6IEFzaHV0b3NoIEJhcGF0IDxhc2h1dG9zaC5i YXBhdC5vc3NAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogTWF0dGhpYXMgdmFuIGRlIE1lZW50 IDxib2VrZXd1cm0rcG9zdGdyZXNAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogRGFuaWVsIEd1 c3RhZnNzb24gPGRhbmllbEB5ZXNxbC5zZT4KRGlzY3Vzc2lvbjogaHR0cHM6Ly93d3cucG9z dGdyZXNxbC5vcmcvbWVzc2FnZS1pZC9DQUV4SFc1dk0xYm5lTFlmZzB3R2VBYT01MlVpSjN6 NHZLZDNBSjcyWDhGdzZrM0tLcmdAbWFpbC5nbWFpbC5jb20KLS0tCiBzcmMvYmFja2VuZC9z dG9yYWdlL2Fpby9haW9faW5pdC5jICAgICAgICB8IDExMiArKysrKysrKysrKysrLS0tLS0t LS0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL2Fpby9tZXRob2RfaW9fdXJpbmcuYyB8ICAzOSAr KysrLS0tLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9haW8vbWV0aG9kX3dvcmtlci5jICAgfCAg ODQgKysrKysrKysrLS0tLS0tLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvaXBjaS5jICAg ICAgICAgICAgfCAgIDIgLQogc3JjL2luY2x1ZGUvc3RvcmFnZS9haW9faW50ZXJuYWwuaCAg ICAgICAgfCAgMTYgKy0tLQogc3JjL2luY2x1ZGUvc3RvcmFnZS9haW9fc3Vic3lzLmggICAg ICAgICAgfCAgIDQgLQogc3JjL2luY2x1ZGUvc3RvcmFnZS9zdWJzeXN0ZW1saXN0LmggICAg ICAgfCAgIDMgKwogNyBmaWxlcyBjaGFuZ2VkLCAxNDMgaW5zZXJ0aW9ucygrKSwgMTE3IGRl bGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYWlvL2Fpb19p bml0LmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2Fpby9haW9faW5pdC5jCmluZGV4IGQzYzY4 ZDhiMDRjLi45YjY5NWFiZjAxMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9h aW8vYWlvX2luaXQuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2Fpby9haW9faW5pdC5j CkBAIC0yMywxNiArMjMsMjQgQEAKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgogI2luY2x1 ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc2htZW0uaCIKKyNpbmNs dWRlICJzdG9yYWdlL3N1YnN5c3RlbXMuaCIKICNpbmNsdWRlICJ1dGlscy9ndWMuaCIKIAog CitzdGF0aWMgdm9pZCBBaW9TaG1lbVJlcXVlc3Qodm9pZCAqYXJnKTsKK3N0YXRpYyB2b2lk IEFpb1NobWVtSW5pdCh2b2lkICphcmcpOworc3RhdGljIHZvaWQgQWlvU2htZW1BdHRhY2go dm9pZCAqYXJnKTsKIAotc3RhdGljIFNpemUKLUFpb0N0bFNobWVtU2l6ZSh2b2lkKQotewot CS8qIHBnYWlvX2N0bCBpdHNlbGYgKi8KLQlyZXR1cm4gc2l6ZW9mKFBnQWlvQ3RsKTsKLX0K K2NvbnN0IFNobWVtQ2FsbGJhY2tzIEFpb1NobWVtQ2FsbGJhY2tzID0geworCS5yZXF1ZXN0 X2ZuID0gQWlvU2htZW1SZXF1ZXN0LAorCS5pbml0X2ZuID0gQWlvU2htZW1Jbml0LAorCS5h dHRhY2hfZm4gPSBBaW9TaG1lbUF0dGFjaCwKK307CisKK3N0YXRpYyBQZ0Fpb0JhY2tlbmQg KkFpb0JhY2tlbmRTaG1lbVB0cjsKK3N0YXRpYyBQZ0Fpb0hhbmRsZSAqQWlvSGFuZGxlU2ht ZW1QdHI7CitzdGF0aWMgc3RydWN0IGlvdmVjICpBaW9IYW5kbGVJT1ZTaG1lbVB0cjsKK3N0 YXRpYyB1aW50NjQgKkFpb0hhbmRsZURhdGFTaG1lbVB0cjsKIAogc3RhdGljIHVpbnQzMgog QWlvUHJvY3Modm9pZCkKQEAgLTEwOSwxMiArMTE3LDE1IEBAIEFpb0Nob29zZU1heENvbmN1 cnJlbmN5KHZvaWQpCiAJcmV0dXJuIE1pbihtYXhfcHJvcG9ydGlvbmFsX3BpbnMsIDY0KTsK IH0KIAotU2l6ZQotQWlvU2htZW1TaXplKHZvaWQpCisvKgorICogUmVnaXN0ZXIgc2hhcmVk IG1lbW9yeSBhcmVhIGZvciBBSU8gc3Vic3lzdGVtLgorICovCitzdGF0aWMgdm9pZAorQWlv U2htZW1SZXF1ZXN0KHZvaWQgKmFyZykKIHsKLQlTaXplCQlzeiA9IDA7Ci0KIAkvKgorCSAq IFJlc29sdmUgaW9fbWF4X2NvbmN1cnJlbmN5IGlmIG5vdCBhbHJlYWR5IGRvbmUKKwkgKgog CSAqIFdlIHByZWZlciB0byByZXBvcnQgdGhpcyB2YWx1ZSdzIHNvdXJjZSBhcyBQR0NfU19E WU5BTUlDX0RFRkFVTFQuCiAJICogSG93ZXZlciwgaWYgdGhlIERCQSBleHBsaWNpdGx5IHNl dCBpb19tYXhfY29uY3VycmVuY3kgPSAtMSBpbiB0aGUKIAkgKiBjb25maWcgZmlsZSwgdGhl biBQR0NfU19EWU5BTUlDX0RFRkFVTFQgd2lsbCBmYWlsIHRvIG92ZXJyaWRlIHRoYXQgYW5k CkBAIC0xMzIsNDggKzE0Myw1MiBAQCBBaW9TaG1lbVNpemUodm9pZCkKIAkJCQkJCQlQR0Nf U19PVkVSUklERSk7CiAJfQogCi0Jc3ogPSBhZGRfc2l6ZShzeiwgQWlvQ3RsU2htZW1TaXpl KCkpOwotCXN6ID0gYWRkX3NpemUoc3osIEFpb0JhY2tlbmRTaG1lbVNpemUoKSk7Ci0Jc3og PSBhZGRfc2l6ZShzeiwgQWlvSGFuZGxlU2htZW1TaXplKCkpOwotCXN6ID0gYWRkX3NpemUo c3osIEFpb0hhbmRsZUlPVlNobWVtU2l6ZSgpKTsKLQlzeiA9IGFkZF9zaXplKHN6LCBBaW9I YW5kbGVEYXRhU2htZW1TaXplKCkpOwotCi0JLyogUmVzZXJ2ZSBzcGFjZSBmb3IgbWV0aG9k IHNwZWNpZmljIHJlc291cmNlcy4gKi8KLQlpZiAocGdhaW9fbWV0aG9kX29wcy0+c2htZW1f c2l6ZSkKLQkJc3ogPSBhZGRfc2l6ZShzeiwgcGdhaW9fbWV0aG9kX29wcy0+c2htZW1fc2l6 ZSgpKTsKLQotCXJldHVybiBzejsKKwlTaG1lbVJlcXVlc3RTdHJ1Y3QoLm5hbWUgPSAiQWlv Q3RsIiwKKwkJCQkJICAgLnNpemUgPSBzaXplb2YoUGdBaW9DdGwpLAorCQkJCQkgICAucHRy ID0gKHZvaWQgKiopICZwZ2Fpb19jdGwsCisJCSk7CisKKwlTaG1lbVJlcXVlc3RTdHJ1Y3Qo Lm5hbWUgPSAiQWlvQmFja2VuZCIsCisJCQkJCSAgIC5zaXplID0gQWlvQmFja2VuZFNobWVt U2l6ZSgpLAorCQkJCQkgICAucHRyID0gKHZvaWQgKiopICZBaW9CYWNrZW5kU2htZW1QdHIs CisJCSk7CisKKwlTaG1lbVJlcXVlc3RTdHJ1Y3QoLm5hbWUgPSAiQWlvSGFuZGxlIiwKKwkJ CQkJICAgLnNpemUgPSBBaW9IYW5kbGVTaG1lbVNpemUoKSwKKwkJCQkJICAgLnB0ciA9ICh2 b2lkICoqKSAmQWlvSGFuZGxlU2htZW1QdHIsCisJCSk7CisKKwlTaG1lbVJlcXVlc3RTdHJ1 Y3QoLm5hbWUgPSAiQWlvSGFuZGxlSU9WIiwKKwkJCQkJICAgLnNpemUgPSBBaW9IYW5kbGVJ T1ZTaG1lbVNpemUoKSwKKwkJCQkJICAgLnB0ciA9ICh2b2lkICoqKSAmQWlvSGFuZGxlSU9W U2htZW1QdHIsCisJCSk7CisKKwlTaG1lbVJlcXVlc3RTdHJ1Y3QoLm5hbWUgPSAiQWlvSGFu ZGxlRGF0YSIsCisJCQkJCSAgIC5zaXplID0gQWlvSGFuZGxlRGF0YVNobWVtU2l6ZSgpLAor CQkJCQkgICAucHRyID0gKHZvaWQgKiopICZBaW9IYW5kbGVEYXRhU2htZW1QdHIsCisJCSk7 CisKKwlpZiAocGdhaW9fbWV0aG9kX29wcy0+c2htZW1fY2FsbGJhY2tzLnJlcXVlc3RfZm4p CisJCXBnYWlvX21ldGhvZF9vcHMtPnNobWVtX2NhbGxiYWNrcy5yZXF1ZXN0X2ZuKHBnYWlv X21ldGhvZF9vcHMtPnNobWVtX2NhbGxiYWNrcy5vcGFxdWVfYXJnKTsKIH0KIAotdm9pZAot QWlvU2htZW1Jbml0KHZvaWQpCisvKgorICogSW5pdGlhbGl6ZSBBSU8gc2hhcmVkIG1lbW9y eSBkdXJpbmcgcG9zdG1hc3RlciBzdGFydHVwLgorICovCitzdGF0aWMgdm9pZAorQWlvU2ht ZW1Jbml0KHZvaWQgKmFyZykKIHsKLQlib29sCQlmb3VuZDsKIAl1aW50MzIJCWlvX2hhbmRs ZV9vZmYgPSAwOwogCXVpbnQzMgkJaW92ZWNfb2ZmID0gMDsKIAl1aW50MzIJCXBlcl9iYWNr ZW5kX2lvdmVjcyA9IGlvX21heF9jb25jdXJyZW5jeSAqIGlvX21heF9jb21iaW5lX2xpbWl0 OwogCi0JcGdhaW9fY3RsID0gKFBnQWlvQ3RsICopCi0JCVNobWVtSW5pdFN0cnVjdCgiQWlv Q3RsIiwgQWlvQ3RsU2htZW1TaXplKCksICZmb3VuZCk7Ci0KLQlpZiAoZm91bmQpCi0JCWdv dG8gb3V0OwotCi0JbWVtc2V0KHBnYWlvX2N0bCwgMCwgQWlvQ3RsU2htZW1TaXplKCkpOwot CiAJcGdhaW9fY3RsLT5pb19oYW5kbGVfY291bnQgPSBBaW9Qcm9jcygpICogaW9fbWF4X2Nv bmN1cnJlbmN5OwogCXBnYWlvX2N0bC0+aW92ZWNfY291bnQgPSBBaW9Qcm9jcygpICogcGVy X2JhY2tlbmRfaW92ZWNzOwogCi0JcGdhaW9fY3RsLT5iYWNrZW5kX3N0YXRlID0gKFBnQWlv QmFja2VuZCAqKQotCQlTaG1lbUluaXRTdHJ1Y3QoIkFpb0JhY2tlbmQiLCBBaW9CYWNrZW5k U2htZW1TaXplKCksICZmb3VuZCk7Ci0KLQlwZ2Fpb19jdGwtPmlvX2hhbmRsZXMgPSAoUGdB aW9IYW5kbGUgKikKLQkJU2htZW1Jbml0U3RydWN0KCJBaW9IYW5kbGUiLCBBaW9IYW5kbGVT aG1lbVNpemUoKSwgJmZvdW5kKTsKLQotCXBnYWlvX2N0bC0+aW92ZWNzID0gKHN0cnVjdCBp b3ZlYyAqKQotCQlTaG1lbUluaXRTdHJ1Y3QoIkFpb0hhbmRsZUlPViIsIEFpb0hhbmRsZUlP VlNobWVtU2l6ZSgpLCAmZm91bmQpOwotCXBnYWlvX2N0bC0+aGFuZGxlX2RhdGEgPSAodWlu dDY0ICopCi0JCVNobWVtSW5pdFN0cnVjdCgiQWlvSGFuZGxlRGF0YSIsIEFpb0hhbmRsZURh dGFTaG1lbVNpemUoKSwgJmZvdW5kKTsKKwlwZ2Fpb19jdGwtPmJhY2tlbmRfc3RhdGUgPSBB aW9CYWNrZW5kU2htZW1QdHI7CisJcGdhaW9fY3RsLT5pb19oYW5kbGVzID0gQWlvSGFuZGxl U2htZW1QdHI7CisJcGdhaW9fY3RsLT5pb3ZlY3MgPSBBaW9IYW5kbGVJT1ZTaG1lbVB0cjsK KwlwZ2Fpb19jdGwtPmhhbmRsZV9kYXRhID0gQWlvSGFuZGxlRGF0YVNobWVtUHRyOwogCiAJ Zm9yIChpbnQgcHJvY25vID0gMDsgcHJvY25vIDwgQWlvUHJvY3MoKTsgcHJvY25vKyspCiAJ ewpAQCAtMjA4LDEwICsyMjMsMTUgQEAgQWlvU2htZW1Jbml0KHZvaWQpCiAJCX0KIAl9CiAK LW91dDoKLQkvKiBJbml0aWFsaXplIElPIG1ldGhvZCBzcGVjaWZpYyByZXNvdXJjZXMuICov Ci0JaWYgKHBnYWlvX21ldGhvZF9vcHMtPnNobWVtX2luaXQpCi0JCXBnYWlvX21ldGhvZF9v cHMtPnNobWVtX2luaXQoIWZvdW5kKTsKKwlpZiAocGdhaW9fbWV0aG9kX29wcy0+c2htZW1f Y2FsbGJhY2tzLmluaXRfZm4pCisJCXBnYWlvX21ldGhvZF9vcHMtPnNobWVtX2NhbGxiYWNr cy5pbml0X2ZuKHBnYWlvX21ldGhvZF9vcHMtPnNobWVtX2NhbGxiYWNrcy5vcGFxdWVfYXJn KTsKK30KKworc3RhdGljIHZvaWQKK0Fpb1NobWVtQXR0YWNoKHZvaWQgKmFyZykKK3sKKwlp ZiAocGdhaW9fbWV0aG9kX29wcy0+c2htZW1fY2FsbGJhY2tzLmF0dGFjaF9mbikKKwkJcGdh aW9fbWV0aG9kX29wcy0+c2htZW1fY2FsbGJhY2tzLmF0dGFjaF9mbihwZ2Fpb19tZXRob2Rf b3BzLT5zaG1lbV9jYWxsYmFja3Mub3BhcXVlX2FyZyk7CiB9CiAKIHZvaWQKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYWlvL21ldGhvZF9pb191cmluZy5jIGIvc3JjL2Jh Y2tlbmQvc3RvcmFnZS9haW8vbWV0aG9kX2lvX3VyaW5nLmMKaW5kZXggOWY3NmQyNjgzYzAu LjMyOTVjNTllZDc1IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2Fpby9tZXRo b2RfaW9fdXJpbmcuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2Fpby9tZXRob2RfaW9f dXJpbmcuYwpAQCAtNDksOCArNDksOCBAQAogCiAKIC8qIEVudHJ5IHBvaW50cyBmb3IgSW9N ZXRob2RPcHMuICovCi1zdGF0aWMgc2l6ZV90IHBnYWlvX3VyaW5nX3NobWVtX3NpemUodm9p ZCk7Ci1zdGF0aWMgdm9pZCBwZ2Fpb191cmluZ19zaG1lbV9pbml0KGJvb2wgZmlyc3RfdGlt ZSk7CitzdGF0aWMgdm9pZCBwZ2Fpb191cmluZ19zaG1lbV9yZXF1ZXN0KHZvaWQgKmFyZyk7 CitzdGF0aWMgdm9pZCBwZ2Fpb191cmluZ19zaG1lbV9pbml0KHZvaWQgKmFyZyk7CiBzdGF0 aWMgdm9pZCBwZ2Fpb191cmluZ19pbml0X2JhY2tlbmQodm9pZCk7CiBzdGF0aWMgaW50CXBn YWlvX3VyaW5nX3N1Ym1pdCh1aW50MTYgbnVtX3N0YWdlZF9pb3MsIFBnQWlvSGFuZGxlICoq c3RhZ2VkX2lvcyk7CiBzdGF0aWMgdm9pZCBwZ2Fpb191cmluZ193YWl0X29uZShQZ0Fpb0hh bmRsZSAqaW9oLCB1aW50NjQgcmVmX2dlbmVyYXRpb24pOwpAQCAtNTksNyArNTksNiBAQCBz dGF0aWMgdm9pZCBwZ2Fpb191cmluZ19jaGVja19vbmUoUGdBaW9IYW5kbGUgKmlvaCwgdWlu dDY0IHJlZl9nZW5lcmF0aW9uKTsKIC8qIGhlbHBlciBmdW5jdGlvbnMgKi8KIHN0YXRpYyB2 b2lkIHBnYWlvX3VyaW5nX3NxX2Zyb21faW8oUGdBaW9IYW5kbGUgKmlvaCwgc3RydWN0IGlv X3VyaW5nX3NxZSAqc3FlKTsKIAotCiBjb25zdCBJb01ldGhvZE9wcyBwZ2Fpb191cmluZ19v cHMgPSB7CiAJLyoKIAkgKiBXaGlsZSBpb191cmluZyBtb3N0bHkgaXMgT0sgd2l0aCBGRHMg Z2V0dGluZyBjbG9zZWQgd2hpbGUgdGhlIElPIGlzIGluCkBAIC03MCw4ICs2OSw4IEBAIGNv bnN0IElvTWV0aG9kT3BzIHBnYWlvX3VyaW5nX29wcyA9IHsKIAkgKi8KIAkud2FpdF9vbl9m ZF9iZWZvcmVfY2xvc2UgPSB0cnVlLAogCi0JLnNobWVtX3NpemUgPSBwZ2Fpb191cmluZ19z aG1lbV9zaXplLAotCS5zaG1lbV9pbml0ID0gcGdhaW9fdXJpbmdfc2htZW1faW5pdCwKKwku c2htZW1fY2FsbGJhY2tzLnJlcXVlc3RfZm4gPSBwZ2Fpb191cmluZ19zaG1lbV9yZXF1ZXN0 LAorCS5zaG1lbV9jYWxsYmFja3MuaW5pdF9mbiA9IHBnYWlvX3VyaW5nX3NobWVtX2luaXQs CiAJLmluaXRfYmFja2VuZCA9IHBnYWlvX3VyaW5nX2luaXRfYmFja2VuZCwKIAogCS5zdWJt aXQgPSBwZ2Fpb191cmluZ19zdWJtaXQsCkBAIC0yNjcsMjMgKzI2NiwzMSBAQCBwZ2Fpb191 cmluZ19zaG1lbV9zaXplKHZvaWQpCiB7CiAJc2l6ZV90CQlzejsKIAorCXN6ID0gcGdhaW9f dXJpbmdfY29udGV4dF9zaG1lbV9zaXplKCk7CisJc3ogPSBhZGRfc2l6ZShzeiwgcGdhaW9f dXJpbmdfcmluZ19zaG1lbV9zaXplKCkpOworCisJcmV0dXJuIHN6OworfQorCitzdGF0aWMg dm9pZAorcGdhaW9fdXJpbmdfc2htZW1fcmVxdWVzdCh2b2lkICphcmcpCit7CiAJLyoKIAkg KiBLZXJuZWwgYW5kIGxpYnVyaW5nIHN1cHBvcnQgZm9yIHZhcmlvdXMgZmVhdHVyZXMgaW5m bHVlbmNlcyBob3cgbXVjaAogCSAqIHNobWVtIHdlIG5lZWQsIHBlcmZvcm0gdGhlIG5lY2Vz c2FyeSBjaGVja3MuCiAJICovCiAJcGdhaW9fdXJpbmdfY2hlY2tfY2FwYWJpbGl0aWVzKCk7 CiAKLQlzeiA9IHBnYWlvX3VyaW5nX2NvbnRleHRfc2htZW1fc2l6ZSgpOwotCXN6ID0gYWRk X3NpemUoc3osIHBnYWlvX3VyaW5nX3Jpbmdfc2htZW1fc2l6ZSgpKTsKLQotCXJldHVybiBz ejsKKwlTaG1lbVJlcXVlc3RTdHJ1Y3QoLm5hbWUgPSAiQWlvVXJpbmdDb250ZXh0IiwKKwkJ CQkJICAgLnNpemUgPSBwZ2Fpb191cmluZ19zaG1lbV9zaXplKCksCisJCQkJCSAgIC5wdHIg PSAodm9pZCAqKikgJnBnYWlvX3VyaW5nX2NvbnRleHRzLAorCQkpOwogfQogCiBzdGF0aWMg dm9pZAotcGdhaW9fdXJpbmdfc2htZW1faW5pdChib29sIGZpcnN0X3RpbWUpCitwZ2Fpb191 cmluZ19zaG1lbV9pbml0KHZvaWQgKmFyZykKIHsKIAlpbnQJCQlUb3RhbFByb2NzID0gcGdh aW9fdXJpbmdfcHJvY3MoKTsKLQlib29sCQlmb3VuZDsKIAljaGFyCSAgICpzaG1lbTsKIAlz aXplX3QJCXJpbmdfbWVtX3JlbWFpbiA9IDA7CiAJY2hhcgkgICAqcmluZ19tZW1fbmV4dCA9 IDA7CkBAIC0yOTEsMTMgKzI5OCwxMSBAQCBwZ2Fpb191cmluZ19zaG1lbV9pbml0KGJvb2wg Zmlyc3RfdGltZSkKIAkvKgogCSAqIFdlIGFsbG9jYXRlIG1lbW9yeSBmb3IgYWxsIFBnQWlv VXJpbmdDb250ZXh0IGluc3RhbmNlcyBhbmQsIGlmCiAJICogc3VwcG9ydGVkLCB0aGUgbWVt b3J5IHJlcXVpcmVkIGZvciBlYWNoIG9mIHRoZSBpb191cmluZyBpbnN0YW5jZXMsIGluCi0J ICogb25lIFNobWVtSW5pdFN0cnVjdCgpLgorCSAqIG9uZSBjb21iaW5lZCBhbGxvY2F0aW9u LgorCSAqCisJICogcGdhaW9fdXJpbmdfY29udGV4dHMgaXMgYWxyZWFkeSBzZXQgdG8gdGhl IGJhc2Ugb2YgdGhlIGFsbG9jYXRpb24uCiAJICovCi0Jc2htZW0gPSBTaG1lbUluaXRTdHJ1 Y3QoIkFpb1VyaW5nQ29udGV4dCIsIHBnYWlvX3VyaW5nX3NobWVtX3NpemUoKSwgJmZvdW5k KTsKLQlpZiAoZm91bmQpCi0JCXJldHVybjsKLQotCXBnYWlvX3VyaW5nX2NvbnRleHRzID0g KFBnQWlvVXJpbmdDb250ZXh0ICopIHNobWVtOworCXNobWVtID0gKGNoYXIgKikgcGdhaW9f dXJpbmdfY29udGV4dHM7CiAJc2htZW0gKz0gcGdhaW9fdXJpbmdfY29udGV4dF9zaG1lbV9z aXplKCk7CiAKIAkvKiBpZiBzdXBwb3J0ZWQsIGhhbmRsZSBtZW1vcnkgYWxpZ25tZW50IC8g c2l6aW5nIGZvciBpb191cmluZyBtZW1vcnkgKi8KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3N0b3JhZ2UvYWlvL21ldGhvZF93b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYWlv L21ldGhvZF93b3JrZXIuYwppbmRleCBlMjQzNTdhN2EwYS4uZWI2MzZiZjVhZDkgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYWlvL21ldGhvZF93b3JrZXIuYworKysgYi9z cmMvYmFja2VuZC9zdG9yYWdlL2Fpby9tZXRob2Rfd29ya2VyLmMKQEAgLTQxLDYgKzQxLDcg QEAKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvbGF0Y2gu aCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3NobWVt LmgiCiAjaW5jbHVkZSAidGNvcC90Y29wcHJvdC5oIgogI2luY2x1ZGUgInV0aWxzL2luamVj dGlvbl9wb2ludC5oIgogI2luY2x1ZGUgInV0aWxzL21lbWRlYnVnLmgiCkBAIC03MywxNiAr NzQsMjAgQEAgdHlwZWRlZiBzdHJ1Y3QgUGdBaW9Xb3JrZXJDb250cm9sCiB9IFBnQWlvV29y a2VyQ29udHJvbDsKIAogCi1zdGF0aWMgc2l6ZV90IHBnYWlvX3dvcmtlcl9zaG1lbV9zaXpl KHZvaWQpOwotc3RhdGljIHZvaWQgcGdhaW9fd29ya2VyX3NobWVtX2luaXQoYm9vbCBmaXJz dF90aW1lKTsKK3N0YXRpYyB2b2lkIHBnYWlvX3dvcmtlcl9zaG1lbV9yZXF1ZXN0KHZvaWQg KmFyZyk7CitzdGF0aWMgdm9pZCBwZ2Fpb193b3JrZXJfc2htZW1faW5pdCh2b2lkICphcmcp Oworc3RhdGljIHZvaWQgcGdhaW9fd29ya2VyX3NobWVtX2F0dGFjaCh2b2lkICphcmcpOwor CitzdGF0aWMgUGdBaW9Xb3JrZXJTdWJtaXNzaW9uUXVldWUgKmlvX3dvcmtlcl9zdWJtaXNz aW9uX3F1ZXVlOwogCiBzdGF0aWMgYm9vbCBwZ2Fpb193b3JrZXJfbmVlZHNfc3luY2hyb25v dXNfZXhlY3V0aW9uKFBnQWlvSGFuZGxlICppb2gpOwogc3RhdGljIGludAlwZ2Fpb193b3Jr ZXJfc3VibWl0KHVpbnQxNiBudW1fc3RhZ2VkX2lvcywgUGdBaW9IYW5kbGUgKipzdGFnZWRf aW9zKTsKIAogCiBjb25zdCBJb01ldGhvZE9wcyBwZ2Fpb193b3JrZXJfb3BzID0gewotCS5z aG1lbV9zaXplID0gcGdhaW9fd29ya2VyX3NobWVtX3NpemUsCi0JLnNobWVtX2luaXQgPSBw Z2Fpb193b3JrZXJfc2htZW1faW5pdCwKKwkuc2htZW1fY2FsbGJhY2tzLnJlcXVlc3RfZm4g PSBwZ2Fpb193b3JrZXJfc2htZW1fcmVxdWVzdCwKKwkuc2htZW1fY2FsbGJhY2tzLmluaXRf Zm4gPSBwZ2Fpb193b3JrZXJfc2htZW1faW5pdCwKKwkuc2htZW1fY2FsbGJhY2tzLmF0dGFj aF9mbiA9IHBnYWlvX3dvcmtlcl9zaG1lbV9hdHRhY2gsCiAKIAkubmVlZHNfc3luY2hyb25v dXNfZXhlY3V0aW9uID0gcGdhaW9fd29ya2VyX25lZWRzX3N5bmNocm9ub3VzX2V4ZWN1dGlv biwKIAkuc3VibWl0ID0gcGdhaW9fd29ya2VyX3N1Ym1pdCwKQEAgLTk1LDcgKzEwMCw2IEBA IGludAkJCWlvX3dvcmtlcnMgPSAzOwogCiBzdGF0aWMgaW50CWlvX3dvcmtlcl9xdWV1ZV9z aXplID0gNjQ7CiBzdGF0aWMgaW50CU15SW9Xb3JrZXJJZDsKLXN0YXRpYyBQZ0Fpb1dvcmtl clN1Ym1pc3Npb25RdWV1ZSAqaW9fd29ya2VyX3N1Ym1pc3Npb25fcXVldWU7CiBzdGF0aWMg UGdBaW9Xb3JrZXJDb250cm9sICppb193b3JrZXJfY29udHJvbDsKIAogCkBAIC0xMTYsNTAg KzEyMCw2MCBAQCBwZ2Fpb193b3JrZXJfY29udHJvbF9zaG1lbV9zaXplKHZvaWQpCiAJCXNp emVvZihQZ0Fpb1dvcmtlclNsb3QpICogTUFYX0lPX1dPUktFUlM7CiB9CiAKLXN0YXRpYyBz aXplX3QKLXBnYWlvX3dvcmtlcl9zaG1lbV9zaXplKHZvaWQpCisvKgorICogU2V0IHNlY29u ZGFyeSBBSU8gd29ya2VyIHBvaW50ZXIgZnJvbSB0aGUgY29tYmluZWQgYWxsb2NhdGlvbi4K KyAqLworc3RhdGljIHZvaWQKK3BnYWlvX3dvcmtlcl9zZXRfc2Vjb25kYXJ5X3B0cih2b2lk KQogewotCXNpemVfdAkJc3o7CiAJaW50CQkJcXVldWVfc2l6ZTsKKwlTaXplCQlxdWV1ZV9z eiA9IHBnYWlvX3dvcmtlcl9xdWV1ZV9zaG1lbV9zaXplKCZxdWV1ZV9zaXplKTsKIAotCXN6 ID0gcGdhaW9fd29ya2VyX3F1ZXVlX3NobWVtX3NpemUoJnF1ZXVlX3NpemUpOwotCXN6ID0g YWRkX3NpemUoc3osIHBnYWlvX3dvcmtlcl9jb250cm9sX3NobWVtX3NpemUoKSk7Ci0KLQly ZXR1cm4gc3o7CisJaW9fd29ya2VyX2NvbnRyb2wgPSAoUGdBaW9Xb3JrZXJDb250cm9sICop CisJCSgoY2hhciAqKSBpb193b3JrZXJfc3VibWlzc2lvbl9xdWV1ZSArIE1BWEFMSUdOKHF1 ZXVlX3N6KSk7CiB9CiAKIHN0YXRpYyB2b2lkCi1wZ2Fpb193b3JrZXJfc2htZW1faW5pdChi b29sIGZpcnN0X3RpbWUpCitwZ2Fpb193b3JrZXJfc2htZW1faW5pdCh2b2lkICphcmcpCiB7 Ci0JYm9vbAkJZm91bmQ7CiAJaW50CQkJcXVldWVfc2l6ZTsKIAotCWlvX3dvcmtlcl9zdWJt aXNzaW9uX3F1ZXVlID0KLQkJU2htZW1Jbml0U3RydWN0KCJBaW9Xb3JrZXJTdWJtaXNzaW9u UXVldWUiLAotCQkJCQkJcGdhaW9fd29ya2VyX3F1ZXVlX3NobWVtX3NpemUoJnF1ZXVlX3Np emUpLAotCQkJCQkJJmZvdW5kKTsKLQlpZiAoIWZvdW5kKQotCXsKLQkJaW9fd29ya2VyX3N1 Ym1pc3Npb25fcXVldWUtPnNpemUgPSBxdWV1ZV9zaXplOwotCQlpb193b3JrZXJfc3VibWlz c2lvbl9xdWV1ZS0+aGVhZCA9IDA7Ci0JCWlvX3dvcmtlcl9zdWJtaXNzaW9uX3F1ZXVlLT50 YWlsID0gMDsKLQl9CisJcGdhaW9fd29ya2VyX3F1ZXVlX3NobWVtX3NpemUoJnF1ZXVlX3Np emUpOworCWlvX3dvcmtlcl9zdWJtaXNzaW9uX3F1ZXVlLT5zaXplID0gcXVldWVfc2l6ZTsK Kwlpb193b3JrZXJfc3VibWlzc2lvbl9xdWV1ZS0+aGVhZCA9IDA7CisJaW9fd29ya2VyX3N1 Ym1pc3Npb25fcXVldWUtPnRhaWwgPSAwOwogCi0JaW9fd29ya2VyX2NvbnRyb2wgPQotCQlT aG1lbUluaXRTdHJ1Y3QoIkFpb1dvcmtlckNvbnRyb2wiLAotCQkJCQkJcGdhaW9fd29ya2Vy X2NvbnRyb2xfc2htZW1fc2l6ZSgpLAotCQkJCQkJJmZvdW5kKTsKLQlpZiAoIWZvdW5kKQor CXBnYWlvX3dvcmtlcl9zZXRfc2Vjb25kYXJ5X3B0cigpOworCisJaW9fd29ya2VyX2NvbnRy b2wtPmlkbGVfd29ya2VyX21hc2sgPSAwOworCWZvciAoaW50IGkgPSAwOyBpIDwgTUFYX0lP X1dPUktFUlM7ICsraSkKIAl7Ci0JCWlvX3dvcmtlcl9jb250cm9sLT5pZGxlX3dvcmtlcl9t YXNrID0gMDsKLQkJZm9yIChpbnQgaSA9IDA7IGkgPCBNQVhfSU9fV09SS0VSUzsgKytpKQot CQl7Ci0JCQlpb193b3JrZXJfY29udHJvbC0+d29ya2Vyc1tpXS5sYXRjaCA9IE5VTEw7Ci0J CQlpb193b3JrZXJfY29udHJvbC0+d29ya2Vyc1tpXS5pbl91c2UgPSBmYWxzZTsKLQkJfQor CQlpb193b3JrZXJfY29udHJvbC0+d29ya2Vyc1tpXS5sYXRjaCA9IE5VTEw7CisJCWlvX3dv cmtlcl9jb250cm9sLT53b3JrZXJzW2ldLmluX3VzZSA9IGZhbHNlOwogCX0KIH0KIAorc3Rh dGljIHZvaWQKK3BnYWlvX3dvcmtlcl9zaG1lbV9hdHRhY2godm9pZCAqYXJnKQoreworCXBn YWlvX3dvcmtlcl9zZXRfc2Vjb25kYXJ5X3B0cigpOworfQorCitzdGF0aWMgdm9pZAorcGdh aW9fd29ya2VyX3NobWVtX3JlcXVlc3Qodm9pZCAqYXJnKQoreworCXNpemVfdAkJc2l6ZTsK KwlpbnQJCQlxdWV1ZV9zaXplOworCisJc2l6ZSA9IE1BWEFMSUdOKHBnYWlvX3dvcmtlcl9x dWV1ZV9zaG1lbV9zaXplKCZxdWV1ZV9zaXplKSkgKworCQlwZ2Fpb193b3JrZXJfY29udHJv bF9zaG1lbV9zaXplKCk7CisKKwlTaG1lbVJlcXVlc3RTdHJ1Y3QoLm5hbWUgPSAiQWlvV29y a2VyU3VibWlzc2lvblF1ZXVlIiwKKwkJCQkJICAgLnNpemUgPSBzaXplLAorCQkJCQkgICAu cHRyID0gKHZvaWQgKiopICZpb193b3JrZXJfc3VibWlzc2lvbl9xdWV1ZSwKKwkJKTsKK30K Kwogc3RhdGljIGludAogcGdhaW9fd29ya2VyX2Nob29zZV9pZGxlKHZvaWQpCiB7CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9pcGNpLmMgYi9zcmMvYmFja2VuZC9z dG9yYWdlL2lwYy9pcGNpLmMKaW5kZXggN2E4YzY5ZGU4MDIuLmE1MTBjOTI4ZGFhIDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9pcGNpLmMKKysrIGIvc3JjL2JhY2tl bmQvc3RvcmFnZS9pcGMvaXBjaS5jCkBAIC0xMjIsNyArMTIyLDYgQEAgQ2FsY3VsYXRlU2ht ZW1TaXplKHZvaWQpCiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIFdhaXRFdmVudEN1c3RvbVNo bWVtU2l6ZSgpKTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgSW5qZWN0aW9uUG9pbnRTaG1l bVNpemUoKSk7CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIFNsb3RTeW5jU2htZW1TaXplKCkp OwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBBaW9TaG1lbVNpemUoKSk7CiAJc2l6ZSA9IGFk ZF9zaXplKHNpemUsIFdhaXRMU05TaG1lbVNpemUoKSk7CiAJc2l6ZSA9IGFkZF9zaXplKHNp emUsIExvZ2ljYWxEZWNvZGluZ0N0bFNobWVtU2l6ZSgpKTsKIAlzaXplID0gYWRkX3NpemUo c2l6ZSwgRGF0YUNoZWNrc3Vtc1NobWVtU2l6ZSgpKTsKQEAgLTMwMSw3ICszMDAsNiBAQCBD cmVhdGVPckF0dGFjaFNobWVtU3RydWN0cyh2b2lkKQogCVN0YXRzU2htZW1Jbml0KCk7CiAJ V2FpdEV2ZW50Q3VzdG9tU2htZW1Jbml0KCk7CiAJSW5qZWN0aW9uUG9pbnRTaG1lbUluaXQo KTsKLQlBaW9TaG1lbUluaXQoKTsKIAlXYWl0TFNOU2htZW1Jbml0KCk7CiAJTG9naWNhbERl Y29kaW5nQ3RsU2htZW1Jbml0KCk7CiB9CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9y YWdlL2Fpb19pbnRlcm5hbC5oIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9haW9faW50ZXJuYWwu aAppbmRleCAzM2UxZTJkYzA0OC4uOWNhNDA4N2FhN2YgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNs dWRlL3N0b3JhZ2UvYWlvX2ludGVybmFsLmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9h aW9faW50ZXJuYWwuaApAQCAtMjAsNiArMjAsOCBAQAogI2luY2x1ZGUgInBvcnQvcGdfaW92 ZWMuaCIKICNpbmNsdWRlICJzdG9yYWdlL2Fpby5oIgogI2luY2x1ZGUgInN0b3JhZ2UvY29u ZGl0aW9uX3ZhcmlhYmxlLmgiCisjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKKyNpbmNsdWRl ICJzdG9yYWdlL3NobWVtLmgiCiAKIAogLyoKQEAgLTI2NywyMCArMjY5LDggQEAgdHlwZWRl ZiBzdHJ1Y3QgSW9NZXRob2RPcHMKIAkgKi8KIAlib29sCQl3YWl0X29uX2ZkX2JlZm9yZV9j bG9zZTsKIAotCiAJLyogZ2xvYmFsIGluaXRpYWxpemF0aW9uICovCi0KLQkvKgotCSAqIEFt b3VudCBvZiBhZGRpdGlvbmFsIHNoYXJlZCBtZW1vcnkgdG8gcmVzZXJ2ZSBmb3IgdGhlIGlv X21ldGhvZC4gQ2FsbGVkCi0JICoganVzdCBsaWtlIGEgbm9ybWFsIGlwY2kuYyBzdHlsZSAq U2l6ZSgpIGZ1bmN0aW9uLiBPcHRpb25hbC4KLQkgKi8KLQlzaXplX3QJCSgqc2htZW1fc2l6 ZSkgKHZvaWQpOwotCi0JLyoKLQkgKiBJbml0aWFsaXplIHNoYXJlZCBtZW1vcnkuIEZpcnN0 IHRpbWUgaXMgdHJ1ZSBpZiBBSU8ncyBzaGFyZWQgbWVtb3J5IHdhcwotCSAqIGp1c3QgaW5p dGlhbGl6ZWQsIGZhbHNlIG90aGVyd2lzZS4gT3B0aW9uYWwuCi0JICovCi0Jdm9pZAkJKCpz aG1lbV9pbml0KSAoYm9vbCBmaXJzdF90aW1lKTsKKwlTaG1lbUNhbGxiYWNrcyBzaG1lbV9j YWxsYmFja3M7CiAKIAkvKgogCSAqIFBlci1iYWNrZW5kIGluaXRpYWxpemF0aW9uLiBPcHRp b25hbC4KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2UvYWlvX3N1YnN5cy5oIGIv c3JjL2luY2x1ZGUvc3RvcmFnZS9haW9fc3Vic3lzLmgKaW5kZXggMjc2Y2IzZTMxYzQuLmRk NTQ4NjkzNTFmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL2Fpb19zdWJzeXMu aAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL2Fpb19zdWJzeXMuaApAQCAtMjAsMTIgKzIw LDggQEAKIAogCiAvKiBhaW9faW5pdC5jICovCi1leHRlcm4gU2l6ZSBBaW9TaG1lbVNpemUo dm9pZCk7Ci1leHRlcm4gdm9pZCBBaW9TaG1lbUluaXQodm9pZCk7Ci0KIGV4dGVybiB2b2lk IHBnYWlvX2luaXRfYmFja2VuZCh2b2lkKTsKIAotCiAvKiBhaW8uYyAqLwogZXh0ZXJuIHZv aWQgcGdhaW9fZXJyb3JfY2xlYW51cCh2b2lkKTsKIGV4dGVybiB2b2lkIEF0RU9YYWN0X0Fp byhib29sIGlzX2NvbW1pdCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3N1 YnN5c3RlbWxpc3QuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc3Vic3lzdGVtbGlzdC5oCmlu ZGV4IGMxOTlmMThhMjdhLi5iNDM4Nzk0ZDQ2ZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv c3RvcmFnZS9zdWJzeXN0ZW1saXN0LmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9zdWJz eXN0ZW1saXN0LmgKQEAgLTUzLDMgKzUzLDYgQEAgUEdfU0hNRU1fU1VCU1lTVEVNKFByb2NT aWduYWxTaG1lbUNhbGxiYWNrcykKIAogLyogb3RoZXIgbW9kdWxlcyB0aGF0IG5lZWQgc29t ZSBzaGFyZWQgbWVtb3J5IHNwYWNlICovCiBQR19TSE1FTV9TVUJTWVNURU0oQXN5bmNTaG1l bUNhbGxiYWNrcykKKworLyogQUlPIHN1YnN5c3RlbS4gVGhpcyBkZWxlZ2F0ZXMgdG8gdGhl IG1ldGhvZC1zcGVjaWZpYyBjYWxsYmFja3MgKi8KK1BHX1NITUVNX1NVQlNZU1RFTShBaW9T aG1lbUNhbGxiYWNrcykKLS0gCjIuNDcuMwoK --------------DjaUCGyXkgmfSYE7E2Or3PMa Content-Type: text/x-patch; charset=UTF-8; name="v12-0011-Add-alignment-option-to-ShmemRequestStruct.patch" Content-Disposition: attachment; filename*0="v12-0011-Add-alignment-option-to-ShmemRequestStruct.patch" Content-Transfer-Encoding: base64 RnJvbSAyMTdmZmVlMzgxNjcyMjk1NjhhNDc0MDUxNTQ5MTIzNzEzYmEzYTllIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFN1biwgNSBBcHIgMjAyNiAxOTo1NjowMCArMDMwMApT dWJqZWN0OiBbUEFUQ0ggdjEyIDExLzEzXSBBZGQgYWxpZ25tZW50IG9wdGlvbiB0byBTaG1l bVJlcXVlc3RTdHJ1Y3QoKQoKVGhlIGJ1ZmZlciBibG9ja3MgKGluIHRoZSBuZXh0IGNvbW1p dCkgYXJlIElPLWFsaWduZWQuIFRoaXMgbWlnaHQgY29tZQpoYW5keSBpbiBvdGhlciBwbGFj ZXMgdG9vLCBzbyBtYWtlIGl0IGFuIGV4cGxpY2l0IGZlYXR1cmUgb2YKU2htZW1SZXF1ZXN0 U3RydWN0KCkuCgpSZXZpZXdlZC1ieTogQXNodXRvc2ggQmFwYXQgPGFzaHV0b3NoLmJhcGF0 Lm9zc0BnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBNYXR0aGlhcyB2YW4gZGUgTWVlbnQgPGJv ZWtld3VybStwb3N0Z3Jlc0BnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBEYW5pZWwgR3VzdGFm c3NvbiA8ZGFuaWVsQHllc3FsLnNlPgpEaXNjdXNzaW9uOiBodHRwczovL3d3dy5wb3N0Z3Jl c3FsLm9yZy9tZXNzYWdlLWlkL0NBRXhIVzV2TTFibmVMWWZnMHdHZUFhPTUyVWlKM3o0dktk M0FKNzJYOEZ3NmszS0tyZ0BtYWlsLmdtYWlsLmNvbQotLS0KIHNyYy9iYWNrZW5kL3N0b3Jh Z2UvaXBjL3NobWVtLmMgfCAzMyArKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0K IHNyYy9pbmNsdWRlL3N0b3JhZ2Uvc2htZW0uaCAgICAgfCAgNiArKysrKysKIDIgZmlsZXMg Y2hhbmdlZCwgMjkgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvc2htZW0uYyBiL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvaXBjL3NobWVtLmMKaW5kZXggNjdmYWQzMmJlODIuLjBmMTAzZjE3ZjI5IDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9zaG1lbS5jCisrKyBiL3NyYy9iYWNrZW5k L3N0b3JhZ2UvaXBjL3NobWVtLmMKQEAgLTEzNiw2ICsxMzYsNyBAQAogI2luY2x1ZGUgImZt Z3IuaCIKICNpbmNsdWRlICJmdW5jYXBpLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCisj aW5jbHVkZSAicG9ydC9wZ19iaXR1dGlscy5oIgogI2luY2x1ZGUgInBvcnQvcGdfbnVtYS5o IgogI2luY2x1ZGUgInN0b3JhZ2UvbHdsb2NrLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wZ19z aG1lbS5oIgpAQCAtMjM2LDcgKzIzNyw3IEBAIHR5cGVkZWYgc3RydWN0IFNobWVtQWxsb2Nh dG9yRGF0YQogCiAjZGVmaW5lIFNobWVtSW5kZXhMb2NrICgmU2htZW1BbGxvY2F0b3ItPmlu ZGV4X2xvY2spCiAKLXN0YXRpYyB2b2lkICpTaG1lbUFsbG9jUmF3KFNpemUgc2l6ZSwgU2l6 ZSAqYWxsb2NhdGVkX3NpemUpOworc3RhdGljIHZvaWQgKlNobWVtQWxsb2NSYXcoU2l6ZSBz aXplLCBTaXplIGFsaWdubWVudCwgU2l6ZSAqYWxsb2NhdGVkX3NpemUpOwogCiAvKiBzaGFy ZWQgbWVtb3J5IGdsb2JhbCB2YXJpYWJsZXMgKi8KIApAQCAtMzQwLDYgKzM0MSw3IEBAIFNo bWVtUmVxdWVzdEludGVybmFsKFNobWVtU3RydWN0T3B0cyAqb3B0aW9ucywgU2htZW1SZXF1 ZXN0S2luZCBraW5kKQogewogCVNobWVtUmVxdWVzdCAqcmVxdWVzdDsKIAorCS8qIENoZWNr IHRoZSBvcHRpb25zICovCiAJaWYgKG9wdGlvbnMtPm5hbWUgPT0gTlVMTCkKIAkJZWxvZyhF UlJPUiwgInNoYXJlZCBtZW1vcnkgcmVxdWVzdCBpcyBtaXNzaW5nICduYW1lJyBvcHRpb24i KTsKIApAQCAtMzU4LDYgKzM2MCwxMSBAQCBTaG1lbVJlcXVlc3RJbnRlcm5hbChTaG1lbVN0 cnVjdE9wdHMgKm9wdGlvbnMsIFNobWVtUmVxdWVzdEtpbmQga2luZCkKIAkJCQkgb3B0aW9u cy0+c2l6ZSwgb3B0aW9ucy0+bmFtZSk7CiAJfQogCisJaWYgKG9wdGlvbnMtPmFsaWdubWVu dCAhPSAwICYmIHBnX25leHRwb3dlcjJfc2l6ZV90KG9wdGlvbnMtPmFsaWdubWVudCkgIT0g b3B0aW9ucy0+YWxpZ25tZW50KQorCQllbG9nKEVSUk9SLCAiaW52YWxpZCBhbGlnbm1lbnQg JXp1IGZvciBzaGFyZWQgbWVtb3J5IHJlcXVlc3QgZm9yIFwiJXNcIiIsCisJCQkgb3B0aW9u cy0+YWxpZ25tZW50LCBvcHRpb25zLT5uYW1lKTsKKworCS8qIENoZWNrIHRoYXQgd2UncmUg aW4gdGhlIHJpZ2h0IHN0YXRlICovCiAJaWYgKHNobWVtX3JlcXVlc3Rfc3RhdGUgIT0gU1JT X1JFUVVFU1RJTkcpCiAJCWVsb2coRVJST1IsICJTaG1lbVJlcXVlc3RTdHJ1Y3QgY2FuIG9u bHkgYmUgY2FsbGVkIGZyb20gYSBzaG1lbV9yZXF1ZXN0IGNhbGxiYWNrIik7CiAKQEAgLTM5 OSw3ICs0MDYsOCBAQCBTaG1lbUdldFJlcXVlc3RlZFNpemUodm9pZCkKIAl7CiAJCXNpemUg PSBhZGRfc2l6ZShzaXplLCByZXF1ZXN0LT5vcHRpb25zLT5zaXplKTsKIAkJLyogY2FsY3Vs YXRlIGFsaWdubWVudCBwYWRkaW5nIGxpa2UgU2htZW1BbGxvY1JhdygpIGRvZXMgKi8KLQkJ c2l6ZSA9IENBQ0hFTElORUFMSUdOKHNpemUpOworCQlzaXplID0gVFlQRUFMSUdOKE1heChy ZXF1ZXN0LT5vcHRpb25zLT5hbGlnbm1lbnQsIFBHX0NBQ0hFX0xJTkVfU0laRSksCisJCQkJ CQkgc2l6ZSk7CiAJfQogCiAJcmV0dXJuIHNpemU7CkBAIC01MjQsNyArNTMyLDkgQEAgSW5p dFNobWVtSW5kZXhFbnRyeShTaG1lbVJlcXVlc3QgKnJlcXVlc3QpCiAJICogV2UgaW5zZXJ0 ZWQgdGhlIGVudHJ5IHRvIHRoZSBzaGFyZWQgbWVtb3J5IGluZGV4LiAgQWxsb2NhdGUgcmVx dWVzdGVkCiAJICogYW1vdW50IG9mIHNoYXJlZCBtZW1vcnkgZm9yIGl0LCBhbmQgaW5pdGlh bGl6ZSB0aGUgaW5kZXggZW50cnkuCiAJICovCi0Jc3RydWN0UHRyID0gU2htZW1BbGxvY1Jh dyhyZXF1ZXN0LT5vcHRpb25zLT5zaXplLCAmYWxsb2NhdGVkX3NpemUpOworCXN0cnVjdFB0 ciA9IFNobWVtQWxsb2NSYXcocmVxdWVzdC0+b3B0aW9ucy0+c2l6ZSwKKwkJCQkJCQkgIHJl cXVlc3QtPm9wdGlvbnMtPmFsaWdubWVudCwKKwkJCQkJCQkgICZhbGxvY2F0ZWRfc2l6ZSk7 CiAJaWYgKHN0cnVjdFB0ciA9PSBOVUxMKQogCXsKIAkJLyogb3V0IG9mIG1lbW9yeTsgcmVt b3ZlIHRoZSBmYWlsZWQgU2htZW1JbmRleCBlbnRyeSAqLwpAQCAtNzUzLDcgKzc2Myw3IEBA IFNobWVtQWxsb2MoU2l6ZSBzaXplKQogCXZvaWQJICAgKm5ld1NwYWNlOwogCVNpemUJCWFs bG9jYXRlZF9zaXplOwogCi0JbmV3U3BhY2UgPSBTaG1lbUFsbG9jUmF3KHNpemUsICZhbGxv Y2F0ZWRfc2l6ZSk7CisJbmV3U3BhY2UgPSBTaG1lbUFsbG9jUmF3KHNpemUsIDAsICZhbGxv Y2F0ZWRfc2l6ZSk7CiAJaWYgKCFuZXdTcGFjZSkKIAkJZXJlcG9ydChFUlJPUiwKIAkJCQko ZXJyY29kZShFUlJDT0RFX09VVF9PRl9NRU1PUlkpLApAQCAtNzcyLDcgKzc4Miw3IEBAIFNo bWVtQWxsb2NOb0Vycm9yKFNpemUgc2l6ZSkKIHsKIAlTaXplCQlhbGxvY2F0ZWRfc2l6ZTsK IAotCXJldHVybiBTaG1lbUFsbG9jUmF3KHNpemUsICZhbGxvY2F0ZWRfc2l6ZSk7CisJcmV0 dXJuIFNobWVtQWxsb2NSYXcoc2l6ZSwgMCwgJmFsbG9jYXRlZF9zaXplKTsKIH0KIAogLyoK QEAgLTc4Miw4ICs3OTIsOSBAQCBTaG1lbUFsbG9jTm9FcnJvcihTaXplIHNpemUpCiAgKiBi ZSBlcXVhbCB0byB0aGUgbnVtYmVyIHJlcXVlc3RlZCBwbHVzIGFueSBwYWRkaW5nIHdlIGNo b29zZSB0byBhZGQuCiAgKi8KIHN0YXRpYyB2b2lkICoKLVNobWVtQWxsb2NSYXcoU2l6ZSBz aXplLCBTaXplICphbGxvY2F0ZWRfc2l6ZSkKK1NobWVtQWxsb2NSYXcoU2l6ZSBzaXplLCBT aXplIGFsaWdubWVudCwgU2l6ZSAqYWxsb2NhdGVkX3NpemUpCiB7CisJU2l6ZQkJcmF3U3Rh cnQ7CiAJU2l6ZQkJbmV3U3RhcnQ7CiAJU2l6ZQkJbmV3RnJlZTsKIAl2b2lkCSAgICpuZXdT cGFjZTsKQEAgLTc5OSwxNCArODEwLDE1IEBAIFNobWVtQWxsb2NSYXcoU2l6ZSBzaXplLCBT aXplICphbGxvY2F0ZWRfc2l6ZSkKIAkgKiBzdHJ1Y3R1cmVzIG91dCB0byBhIHBvd2VyLW9m LXR3byBzaXplIC0gYnV0IHdpdGhvdXQgdGhpcywgZXZlbiB0aGF0CiAJICogd29uJ3QgYmUg c3VmZmljaWVudC4KIAkgKi8KLQlzaXplID0gQ0FDSEVMSU5FQUxJR04oc2l6ZSk7Ci0JKmFs bG9jYXRlZF9zaXplID0gc2l6ZTsKKwlpZiAoYWxpZ25tZW50IDwgUEdfQ0FDSEVfTElORV9T SVpFKQorCQlhbGlnbm1lbnQgPSBQR19DQUNIRV9MSU5FX1NJWkU7CiAKIAlBc3NlcnQoU2ht ZW1TZWdIZHIgIT0gTlVMTCk7CiAKIAlTcGluTG9ja0FjcXVpcmUoJlNobWVtQWxsb2NhdG9y LT5zaG1lbV9sb2NrKTsKIAotCW5ld1N0YXJ0ID0gU2htZW1BbGxvY2F0b3ItPmZyZWVfb2Zm c2V0OworCXJhd1N0YXJ0ID0gU2htZW1BbGxvY2F0b3ItPmZyZWVfb2Zmc2V0OworCW5ld1N0 YXJ0ID0gVFlQRUFMSUdOKGFsaWdubWVudCwgcmF3U3RhcnQpOwogCiAJbmV3RnJlZSA9IG5l d1N0YXJ0ICsgc2l6ZTsKIAlpZiAobmV3RnJlZSA8PSBTaG1lbVNlZ0hkci0+dG90YWxzaXpl KQpAQCAtODIwLDggKzgzMiw5IEBAIFNobWVtQWxsb2NSYXcoU2l6ZSBzaXplLCBTaXplICph bGxvY2F0ZWRfc2l6ZSkKIAlTcGluTG9ja1JlbGVhc2UoJlNobWVtQWxsb2NhdG9yLT5zaG1l bV9sb2NrKTsKIAogCS8qIG5vdGUgdGhpcyBhc3NlcnQgaXMgb2theSB3aXRoIG5ld1NwYWNl ID09IE5VTEwgKi8KLQlBc3NlcnQobmV3U3BhY2UgPT0gKHZvaWQgKikgQ0FDSEVMSU5FQUxJ R04obmV3U3BhY2UpKTsKKwlBc3NlcnQobmV3U3BhY2UgPT0gKHZvaWQgKikgVFlQRUFMSUdO KGFsaWdubWVudCwgbmV3U3BhY2UpKTsKIAorCSphbGxvY2F0ZWRfc2l6ZSA9IG5ld0ZyZWUg LSByYXdTdGFydDsKIAlyZXR1cm4gbmV3U3BhY2U7CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9p bmNsdWRlL3N0b3JhZ2Uvc2htZW0uaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc2htZW0uaApp bmRleCA4ZTBmYzI5ZGNhYy4uMDYwYTRhOGU1ZDIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRl L3N0b3JhZ2Uvc2htZW0uaAorKysgYi9zcmMvaW5jbHVkZS9zdG9yYWdlL3NobWVtLmgKQEAg LTUxLDYgKzUxLDEyIEBAIHR5cGVkZWYgc3RydWN0IFNobWVtU3RydWN0T3B0cwogCSAqLwog CXNzaXplX3QJCXNpemU7CiAKKwkvKgorCSAqIEFsaWdubWVudCBvZiB0aGUgc3RhcnRpbmcg YWRkcmVzcy4gSWYgbm90IHNldCwgZGVmYXVsdHMgdG8gY2FjaGVsaW5lCisJICogYm91bmRh cnkuICBNdXN0IGJlIGEgcG93ZXIgb2YgdHdvLgorCSAqLworCXNpemVfdAkJYWxpZ25tZW50 OworCiAJLyoKIAkgKiBXaGVuIHRoZSBzaG1lbSBhcmVhIGlzIGluaXRpYWxpemVkIG9yIGF0 dGFjaGVkIHRvLCBwb2ludGVyIHRvIGl0IGlzCiAJICogc3RvcmVkIGluICpwdHIuICBJdCB1 c3VhbGx5IHBvaW50cyB0byBhIGdsb2JhbCB2YXJpYWJsZSwgdXNlZCB0byBhY2Nlc3MKLS0g CjIuNDcuMwoK --------------DjaUCGyXkgmfSYE7E2Or3PMa Content-Type: text/x-patch; charset=UTF-8; name="v12-0012-Convert-buffer-manager-to-the-new-shmem-allocati.patch" Content-Disposition: attachment; filename*0="v12-0012-Convert-buffer-manager-to-the-new-shmem-allocati.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSA3NTliNDVkZjg3Yjk4MTQ5ODA0NWVkNTI0YmNkZDNkMGMwNmIyNDBkIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFN1biwgNSBBcHIgMjAyNiAxOTo1NjozMyArMDMwMApT dWJqZWN0OiBbUEFUQ0ggdjEyIDEyLzEzXSBDb252ZXJ0IGJ1ZmZlciBtYW5hZ2VyIHRvIHRo ZSBuZXcgc2htZW0gYWxsb2NhdGlvbgogZnVuY3Rpb25zCgpUaGlzIHJlY3RpZmllcyB0aGUg aW5pdGlhbGl6YXRpb24gZnVuY3Rpb25zIGEgbGl0dGxlLCBtYWtpbmcgdGhlCiJidWZmZXIg c3RyYXRlZ3kiIHN0dWZmIGluIGZyZWVsaXN0LmMgYW5kIGJ1ZmZlciBtYXBwaW5nIGhhc2gg dGFibGUgaW4KYnVmX2luaXQuYyB0b3AtbGV2ZWwgInN1YnN5c3RlbXMiIG9mIHRoZWlyIG93 biwgcmVnaXN0ZXJlZCBkaXJlY3RseSBpbgpzdWJzeXN0ZW1saXN0LmguIFByZXZpb3VzbHkg dGhleSB3ZXJlIGNhbGxlZCBpbmRpcmVjdGx5IGZyb20KQnVmZmVyTWFuYWdlclNobWVtSW5p dCgpIGFuZCBCdWZmZXJNYW5hZ2VyU2htZW1TaXplKCkKClJldmlld2VkLWJ5OiBBc2h1dG9z aCBCYXBhdCA8YXNodXRvc2guYmFwYXQub3NzQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IE1h dHRoaWFzIHZhbiBkZSBNZWVudCA8Ym9la2V3dXJtK3Bvc3RncmVzQGdtYWlsLmNvbT4KUmV2 aWV3ZWQtYnk6IERhbmllbCBHdXN0YWZzc29uIDxkYW5pZWxAeWVzcWwuc2U+CkRpc2N1c3Np b246IGh0dHBzOi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQvQ0FFeEhXNXZNMWJu ZUxZZmcwd0dlQWE9NTJVaUozejR2S2QzQUo3Mlg4Rnc2azNLS3JnQG1haWwuZ21haWwuY29t Ci0tLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmX2luaXQuYyAgfCAxNDkgKysr KysrKysrKy0tLS0tLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVm X3RhYmxlLmMgfCAgNTQgKysrKystLS0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9m cmVlbGlzdC5jICB8ICA5MyArKysrKy0tLS0tLS0tLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2Uv aXBjL2lwY2kuYyAgICAgICAgIHwgICAzIC0KIHNyYy9pbmNsdWRlL3N0b3JhZ2UvYnVmX2lu dGVybmFscy5oICAgIHwgICA1IC0KIHNyYy9pbmNsdWRlL3N0b3JhZ2UvYnVmbWdyLmggICAg ICAgICAgIHwgICA0IC0KIHNyYy9pbmNsdWRlL3N0b3JhZ2Uvc3Vic3lzdGVtbGlzdC5oICAg IHwgICAzICsKIDcgZmlsZXMgY2hhbmdlZCwgMTI0IGluc2VydGlvbnMoKyksIDE4NyBkZWxl dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZf aW5pdC5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmX2luaXQuYwppbmRleCBj MGMyMjNiMmUzMi4uMTQwN2M5MzBjNTYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvYnVmZmVyL2J1Zl9pbml0LmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIv YnVmX2luaXQuYwpAQCAtMTgsNiArMTgsOCBAQAogI2luY2x1ZGUgInN0b3JhZ2UvYnVmX2lu dGVybmFscy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYnVmbWdyLmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9wcm9jbGlzdC5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvc2htZW0uaCIKKyNpbmNsdWRl ICJzdG9yYWdlL3N1YnN5c3RlbXMuaCIKIAogQnVmZmVyRGVzY1BhZGRlZCAqQnVmZmVyRGVz Y3JpcHRvcnM7CiBjaGFyCSAgICpCdWZmZXJCbG9ja3M7CkBAIC0yNSw2ICsyNywxNSBAQCBD b25kaXRpb25WYXJpYWJsZU1pbmltYWxseVBhZGRlZCAqQnVmZmVySU9DVkFycmF5OwogV3Jp dGViYWNrQ29udGV4dCBCYWNrZW5kV3JpdGViYWNrQ29udGV4dDsKIENrcHRTb3J0SXRlbSAq Q2twdEJ1ZmZlcklkczsKIAorc3RhdGljIHZvaWQgQnVmZmVyTWFuYWdlclNobWVtUmVxdWVz dCh2b2lkICphcmcpOworc3RhdGljIHZvaWQgQnVmZmVyTWFuYWdlclNobWVtSW5pdCh2b2lk ICphcmcpOworc3RhdGljIHZvaWQgQnVmZmVyTWFuYWdlclNobWVtQXR0YWNoKHZvaWQgKmFy Zyk7CisKK2NvbnN0IFNobWVtQ2FsbGJhY2tzIEJ1ZmZlck1hbmFnZXJTaG1lbUNhbGxiYWNr cyA9IHsKKwkucmVxdWVzdF9mbiA9IEJ1ZmZlck1hbmFnZXJTaG1lbVJlcXVlc3QsCisJLmlu aXRfZm4gPSBCdWZmZXJNYW5hZ2VyU2htZW1Jbml0LAorCS5hdHRhY2hfZm4gPSBCdWZmZXJN YW5hZ2VyU2htZW1BdHRhY2gsCit9OwogCiAvKgogICogRGF0YSBTdHJ1Y3R1cmVzOgpAQCAt NjAsMzcgKzcxLDMxIEBAIENrcHRTb3J0SXRlbSAqQ2twdEJ1ZmZlcklkczsKIAogCiAvKgot ICogSW5pdGlhbGl6ZSBzaGFyZWQgYnVmZmVyIHBvb2wKLSAqCi0gKiBUaGlzIGlzIGNhbGxl ZCBvbmNlIGR1cmluZyBzaGFyZWQtbWVtb3J5IGluaXRpYWxpemF0aW9uIChlaXRoZXIgaW4g dGhlCi0gKiBwb3N0bWFzdGVyLCBvciBpbiBhIHN0YW5kYWxvbmUgYmFja2VuZCkuCisgKiBS ZWdpc3RlciBzaGFyZWQgbWVtb3J5IGFyZWEgZm9yIHRoZSBidWZmZXIgcG9vbC4KICAqLwot dm9pZAotQnVmZmVyTWFuYWdlclNobWVtSW5pdCh2b2lkKQorc3RhdGljIHZvaWQKK0J1ZmZl ck1hbmFnZXJTaG1lbVJlcXVlc3Qodm9pZCAqYXJnKQogewotCWJvb2wJCWZvdW5kQnVmcywK LQkJCQlmb3VuZERlc2NzLAotCQkJCWZvdW5kSU9DViwKLQkJCQlmb3VuZEJ1ZkNrcHQ7Ci0K KwlTaG1lbVJlcXVlc3RTdHJ1Y3QoLm5hbWUgPSAiQnVmZmVyIERlc2NyaXB0b3JzIiwKKwkJ CQkJICAgLnNpemUgPSBOQnVmZmVycyAqIHNpemVvZihCdWZmZXJEZXNjUGFkZGVkKSwKIAkv KiBBbGlnbiBkZXNjcmlwdG9ycyB0byBhIGNhY2hlbGluZSBib3VuZGFyeS4gKi8KLQlCdWZm ZXJEZXNjcmlwdG9ycyA9IChCdWZmZXJEZXNjUGFkZGVkICopCi0JCVNobWVtSW5pdFN0cnVj dCgiQnVmZmVyIERlc2NyaXB0b3JzIiwKLQkJCQkJCU5CdWZmZXJzICogc2l6ZW9mKEJ1ZmZl ckRlc2NQYWRkZWQpLAotCQkJCQkJJmZvdW5kRGVzY3MpOworCQkJCQkgICAuYWxpZ25tZW50 ID0gUEdfQ0FDSEVfTElORV9TSVpFLAorCQkJCQkgICAucHRyID0gKHZvaWQgKiopICZCdWZm ZXJEZXNjcmlwdG9ycywKKwkJKTsKIAorCVNobWVtUmVxdWVzdFN0cnVjdCgubmFtZSA9ICJC dWZmZXIgQmxvY2tzIiwKKwkJCQkJICAgLnNpemUgPSBOQnVmZmVycyAqIChTaXplKSBCTENL U1osCiAJLyogQWxpZ24gYnVmZmVyIHBvb2wgb24gSU8gcGFnZSBzaXplIGJvdW5kYXJ5LiAq LwotCUJ1ZmZlckJsb2NrcyA9IChjaGFyICopCi0JCVRZUEVBTElHTihQR19JT19BTElHTl9T SVpFLAotCQkJCSAgU2htZW1Jbml0U3RydWN0KCJCdWZmZXIgQmxvY2tzIiwKLQkJCQkJCQkJ ICBOQnVmZmVycyAqIChTaXplKSBCTENLU1ogKyBQR19JT19BTElHTl9TSVpFLAotCQkJCQkJ CQkgICZmb3VuZEJ1ZnMpKTsKLQotCS8qIEFsaWduIGNvbmRpdGlvbiB2YXJpYWJsZXMgdG8g Y2FjaGVsaW5lIGJvdW5kYXJ5LiAqLwotCUJ1ZmZlcklPQ1ZBcnJheSA9IChDb25kaXRpb25W YXJpYWJsZU1pbmltYWxseVBhZGRlZCAqKQotCQlTaG1lbUluaXRTdHJ1Y3QoIkJ1ZmZlciBJ TyBDb25kaXRpb24gVmFyaWFibGVzIiwKLQkJCQkJCU5CdWZmZXJzICogc2l6ZW9mKENvbmRp dGlvblZhcmlhYmxlTWluaW1hbGx5UGFkZGVkKSwKLQkJCQkJCSZmb3VuZElPQ1YpOworCQkJ CQkgICAuYWxpZ25tZW50ID0gUEdfSU9fQUxJR05fU0laRSwKKwkJCQkJICAgLnB0ciA9ICh2 b2lkICoqKSAmQnVmZmVyQmxvY2tzLAorCQkpOworCisJU2htZW1SZXF1ZXN0U3RydWN0KC5u YW1lID0gIkJ1ZmZlciBJTyBDb25kaXRpb24gVmFyaWFibGVzIiwKKwkJCQkJICAgLnNpemUg PSBOQnVmZmVycyAqIHNpemVvZihDb25kaXRpb25WYXJpYWJsZU1pbmltYWxseVBhZGRlZCks CisJLyogQWxpZ24gZGVzY3JpcHRvcnMgdG8gYSBjYWNoZWxpbmUgYm91bmRhcnkuICovCisJ CQkJCSAgIC5hbGlnbm1lbnQgPSBQR19DQUNIRV9MSU5FX1NJWkUsCisJCQkJCSAgIC5wdHIg PSAodm9pZCAqKikgJkJ1ZmZlcklPQ1ZBcnJheSwKKwkJKTsKIAogCS8qCiAJICogVGhlIGFy cmF5IHVzZWQgdG8gc29ydCB0by1iZS1jaGVja3BvaW50ZWQgYnVmZmVyIGlkcyBpcyBsb2Nh dGVkIGluCkBAIC05OSw4MCArMTA0LDUwIEBAIEJ1ZmZlck1hbmFnZXJTaG1lbUluaXQodm9p ZCkKIAkgKiB0aGUgY2hlY2twb2ludGVyIGlzIHJlc3RhcnRlZCwgbWVtb3J5IGFsbG9jYXRp b24gZmFpbHVyZXMgd291bGQgYmUKIAkgKiBwYWluZnVsLgogCSAqLwotCUNrcHRCdWZmZXJJ ZHMgPSAoQ2twdFNvcnRJdGVtICopCi0JCVNobWVtSW5pdFN0cnVjdCgiQ2hlY2twb2ludCBC dWZmZXJJZHMiLAotCQkJCQkJTkJ1ZmZlcnMgKiBzaXplb2YoQ2twdFNvcnRJdGVtKSwgJmZv dW5kQnVmQ2twdCk7CisJU2htZW1SZXF1ZXN0U3RydWN0KC5uYW1lID0gIkNoZWNrcG9pbnQg QnVmZmVySWRzIiwKKwkJCQkJICAgLnNpemUgPSBOQnVmZmVycyAqIHNpemVvZihDa3B0U29y dEl0ZW0pLAorCQkJCQkgICAucHRyID0gKHZvaWQgKiopICZDa3B0QnVmZmVySWRzLAorCQkp OworfQogCi0JaWYgKGZvdW5kRGVzY3MgfHwgZm91bmRCdWZzIHx8IGZvdW5kSU9DViB8fCBm b3VuZEJ1ZkNrcHQpCi0JewotCQkvKiBzaG91bGQgZmluZCBhbGwgb2YgdGhlc2UsIG9yIG5v bmUgb2YgdGhlbSAqLwotCQlBc3NlcnQoZm91bmREZXNjcyAmJiBmb3VuZEJ1ZnMgJiYgZm91 bmRJT0NWICYmIGZvdW5kQnVmQ2twdCk7Ci0JCS8qIG5vdGU6IHRoaXMgcGF0aCBpcyBvbmx5 IHRha2VuIGluIEVYRUNfQkFDS0VORCBjYXNlICovCi0JfQotCWVsc2UKKy8qCisgKiBJbml0 aWFsaXplIHNoYXJlZCBidWZmZXIgcG9vbAorICoKKyAqIFRoaXMgaXMgY2FsbGVkIG9uY2Ug ZHVyaW5nIHNoYXJlZC1tZW1vcnkgaW5pdGlhbGl6YXRpb24gKGVpdGhlciBpbiB0aGUKKyAq IHBvc3RtYXN0ZXIsIG9yIGluIGEgc3RhbmRhbG9uZSBiYWNrZW5kKS4KKyAqLworc3RhdGlj IHZvaWQKK0J1ZmZlck1hbmFnZXJTaG1lbUluaXQodm9pZCAqYXJnKQoreworCS8qCisJICog SW5pdGlhbGl6ZSBhbGwgdGhlIGJ1ZmZlciBoZWFkZXJzLgorCSAqLworCWZvciAoaW50IGkg PSAwOyBpIDwgTkJ1ZmZlcnM7IGkrKykKIAl7Ci0JCWludAkJCWk7CisJCUJ1ZmZlckRlc2Mg KmJ1ZiA9IEdldEJ1ZmZlckRlc2NyaXB0b3IoaSk7CiAKLQkJLyoKLQkJICogSW5pdGlhbGl6 ZSBhbGwgdGhlIGJ1ZmZlciBoZWFkZXJzLgotCQkgKi8KLQkJZm9yIChpID0gMDsgaSA8IE5C dWZmZXJzOyBpKyspCi0JCXsKLQkJCUJ1ZmZlckRlc2MgKmJ1ZiA9IEdldEJ1ZmZlckRlc2Ny aXB0b3IoaSk7CisJCUNsZWFyQnVmZmVyVGFnKCZidWYtPnRhZyk7CiAKLQkJCUNsZWFyQnVm ZmVyVGFnKCZidWYtPnRhZyk7CisJCXBnX2F0b21pY19pbml0X3U2NCgmYnVmLT5zdGF0ZSwg MCk7CisJCWJ1Zi0+d2FpdF9iYWNrZW5kX3BncHJvY25vID0gSU5WQUxJRF9QUk9DX05VTUJF UjsKIAotCQkJcGdfYXRvbWljX2luaXRfdTY0KCZidWYtPnN0YXRlLCAwKTsKLQkJCWJ1Zi0+ d2FpdF9iYWNrZW5kX3BncHJvY25vID0gSU5WQUxJRF9QUk9DX05VTUJFUjsKKwkJYnVmLT5i dWZfaWQgPSBpOwogCi0JCQlidWYtPmJ1Zl9pZCA9IGk7CisJCXBnYWlvX3dyZWZfY2xlYXIo JmJ1Zi0+aW9fd3JlZik7CiAKLQkJCXBnYWlvX3dyZWZfY2xlYXIoJmJ1Zi0+aW9fd3JlZik7 Ci0KLQkJCXByb2NsaXN0X2luaXQoJmJ1Zi0+bG9ja193YWl0ZXJzKTsKLQkJCUNvbmRpdGlv blZhcmlhYmxlSW5pdChCdWZmZXJEZXNjcmlwdG9yR2V0SU9DVihidWYpKTsKLQkJfQorCQlw cm9jbGlzdF9pbml0KCZidWYtPmxvY2tfd2FpdGVycyk7CisJCUNvbmRpdGlvblZhcmlhYmxl SW5pdChCdWZmZXJEZXNjcmlwdG9yR2V0SU9DVihidWYpKTsKIAl9CiAKLQkvKiBJbml0IG90 aGVyIHNoYXJlZCBidWZmZXItbWFuYWdlbWVudCBzdHVmZiAqLwotCVN0cmF0ZWd5SW5pdGlh bGl6ZSghZm91bmREZXNjcyk7Ci0KIAkvKiBJbml0aWFsaXplIHBlci1iYWNrZW5kIGZpbGUg Zmx1c2ggY29udGV4dCAqLwogCVdyaXRlYmFja0NvbnRleHRJbml0KCZCYWNrZW5kV3JpdGVi YWNrQ29udGV4dCwKIAkJCQkJCSAmYmFja2VuZF9mbHVzaF9hZnRlcik7CiB9CiAKLS8qCi0g KiBCdWZmZXJNYW5hZ2VyU2htZW1TaXplCi0gKgotICogY29tcHV0ZSB0aGUgc2l6ZSBvZiBz aGFyZWQgbWVtb3J5IGZvciB0aGUgYnVmZmVyIHBvb2wgaW5jbHVkaW5nCi0gKiBkYXRhIHBh Z2VzLCBidWZmZXIgZGVzY3JpcHRvcnMsIGhhc2ggdGFibGVzLCBldGMuCi0gKi8KLVNpemUK LUJ1ZmZlck1hbmFnZXJTaG1lbVNpemUodm9pZCkKK3N0YXRpYyB2b2lkCitCdWZmZXJNYW5h Z2VyU2htZW1BdHRhY2godm9pZCAqYXJnKQogewotCVNpemUJCXNpemUgPSAwOwotCi0JLyog c2l6ZSBvZiBidWZmZXIgZGVzY3JpcHRvcnMgKi8KLQlzaXplID0gYWRkX3NpemUoc2l6ZSwg bXVsX3NpemUoTkJ1ZmZlcnMsIHNpemVvZihCdWZmZXJEZXNjUGFkZGVkKSkpOwotCS8qIHRv IGFsbG93IGFsaWduaW5nIGJ1ZmZlciBkZXNjcmlwdG9ycyAqLwotCXNpemUgPSBhZGRfc2l6 ZShzaXplLCBQR19DQUNIRV9MSU5FX1NJWkUpOwotCi0JLyogc2l6ZSBvZiBkYXRhIHBhZ2Vz LCBwbHVzIGFsaWdubWVudCBwYWRkaW5nICovCi0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIFBH X0lPX0FMSUdOX1NJWkUpOwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBtdWxfc2l6ZShOQnVm ZmVycywgQkxDS1NaKSk7Ci0KLQkvKiBzaXplIG9mIHN0dWZmIGNvbnRyb2xsZWQgYnkgZnJl ZWxpc3QuYyAqLwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBTdHJhdGVneVNobWVtU2l6ZSgp KTsKLQotCS8qIHNpemUgb2YgSS9PIGNvbmRpdGlvbiB2YXJpYWJsZXMgKi8KLQlzaXplID0g YWRkX3NpemUoc2l6ZSwgbXVsX3NpemUoTkJ1ZmZlcnMsCi0JCQkJCQkJCSAgIHNpemVvZihD b25kaXRpb25WYXJpYWJsZU1pbmltYWxseVBhZGRlZCkpKTsKLQkvKiB0byBhbGxvdyBhbGln bmluZyB0aGUgYWJvdmUgKi8KLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgUEdfQ0FDSEVfTElO RV9TSVpFKTsKLQotCS8qIHNpemUgb2YgY2hlY2twb2ludCBzb3J0IGFycmF5IGluIGJ1Zm1n ci5jICovCi0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIG11bF9zaXplKE5CdWZmZXJzLCBzaXpl b2YoQ2twdFNvcnRJdGVtKSkpOwotCi0JcmV0dXJuIHNpemU7CisJLyogSW5pdGlhbGl6ZSBw ZXItYmFja2VuZCBmaWxlIGZsdXNoIGNvbnRleHQgKi8KKwlXcml0ZWJhY2tDb250ZXh0SW5p dCgmQmFja2VuZFdyaXRlYmFja0NvbnRleHQsCisJCQkJCQkgJmJhY2tlbmRfZmx1c2hfYWZ0 ZXIpOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvYnVmX3Rh YmxlLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2J1ZmZlci9idWZfdGFibGUuYwppbmRleCBk MDRlZjc0Yjg1MC4uMzQ3YmYyNjdkNzMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3Jh Z2UvYnVmZmVyL2J1Zl90YWJsZS5jCisrKyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVy L2J1Zl90YWJsZS5jCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAicG9zdGdyZXMuaCIK IAogI2luY2x1ZGUgInN0b3JhZ2UvYnVmX2ludGVybmFscy5oIgorI2luY2x1ZGUgInN0b3Jh Z2Uvc3Vic3lzdGVtcy5oIgogCiAvKiBlbnRyeSBmb3IgYnVmZmVyIGxvb2t1cCBoYXNodGFi bGUgKi8KIHR5cGVkZWYgc3RydWN0CkBAIC0zMiwzNyArMzMsNDIgQEAgdHlwZWRlZiBzdHJ1 Y3QKIAogc3RhdGljIEhUQUIgKlNoYXJlZEJ1Zkhhc2g7CiAKK3N0YXRpYyB2b2lkIEJ1ZlRh YmxlU2htZW1SZXF1ZXN0KHZvaWQgKmFyZyk7CiAKLS8qCi0gKiBFc3RpbWF0ZSBzcGFjZSBu ZWVkZWQgZm9yIG1hcHBpbmcgaGFzaHRhYmxlCi0gKgkJc2l6ZSBpcyB0aGUgZGVzaXJlZCBo YXNoIHRhYmxlIHNpemUgKHBvc3NpYmx5IG1vcmUgdGhhbiBOQnVmZmVycykKLSAqLwotU2l6 ZQotQnVmVGFibGVTaG1lbVNpemUoaW50IHNpemUpCi17Ci0JcmV0dXJuIGhhc2hfZXN0aW1h dGVfc2l6ZShzaXplLCBzaXplb2YoQnVmZmVyTG9va3VwRW50KSk7Ci19Citjb25zdCBTaG1l bUNhbGxiYWNrcyBCdWZUYWJsZVNobWVtQ2FsbGJhY2tzID0geworCS5yZXF1ZXN0X2ZuID0g QnVmVGFibGVTaG1lbVJlcXVlc3QsCisJLyogbm8gc3BlY2lhbCBpbml0aWFsaXphdGlvbiBu ZWVkZWQsIHRoZSBoYXNoIHRhYmxlIHdpbGwgc3RhcnQgZW1wdHkgKi8KK307CiAKIC8qCi0g KiBJbml0aWFsaXplIHNobWVtIGhhc2ggdGFibGUgZm9yIG1hcHBpbmcgYnVmZmVycworICog UmVnaXN0ZXIgc2htZW0gaGFzaCB0YWJsZSBmb3IgbWFwcGluZyBidWZmZXJzLgogICoJCXNp emUgaXMgdGhlIGRlc2lyZWQgaGFzaCB0YWJsZSBzaXplIChwb3NzaWJseSBtb3JlIHRoYW4g TkJ1ZmZlcnMpCiAgKi8KIHZvaWQKLUluaXRCdWZUYWJsZShpbnQgc2l6ZSkKK0J1ZlRhYmxl U2htZW1SZXF1ZXN0KHZvaWQgKmFyZykKIHsKLQlIQVNIQ1RMCQlpbmZvOwotCi0JLyogYXNz dW1lIG5vIGxvY2tpbmcgaXMgbmVlZGVkIHlldCAqLwotCi0JLyogQnVmZmVyVGFnIG1hcHMg dG8gQnVmZmVyICovCi0JaW5mby5rZXlzaXplID0gc2l6ZW9mKEJ1ZmZlclRhZyk7Ci0JaW5m by5lbnRyeXNpemUgPSBzaXplb2YoQnVmZmVyTG9va3VwRW50KTsKLQlpbmZvLm51bV9wYXJ0 aXRpb25zID0gTlVNX0JVRkZFUl9QQVJUSVRJT05TOwotCi0JU2hhcmVkQnVmSGFzaCA9IFNo bWVtSW5pdEhhc2goIlNoYXJlZCBCdWZmZXIgTG9va3VwIFRhYmxlIiwKLQkJCQkJCQkJICBz aXplLAotCQkJCQkJCQkgICZpbmZvLAotCQkJCQkJCQkgIEhBU0hfRUxFTSB8IEhBU0hfQkxP QlMgfCBIQVNIX1BBUlRJVElPTiB8IEhBU0hfRklYRURfU0laRSk7CisJaW50CQkJc2l6ZTsK KworCS8qCisJICogUmVxdWVzdCB0aGUgc2hhcmVkIGJ1ZmZlciBsb29rdXAgaGFzaHRhYmxl LgorCSAqCisJICogU2luY2Ugd2UgY2FuJ3QgdG9sZXJhdGUgcnVubmluZyBvdXQgb2YgbG9v a3VwIHRhYmxlIGVudHJpZXMsIHdlIG11c3QgYmUKKwkgKiBzdXJlIHRvIHNwZWNpZnkgYW4g YWRlcXVhdGUgdGFibGUgc2l6ZSBoZXJlLiAgVGhlIG1heGltdW0gc3RlYWR5LXN0YXRlCisJ ICogdXNhZ2UgaXMgb2YgY291cnNlIE5CdWZmZXJzIGVudHJpZXMsIGJ1dCBCdWZmZXJBbGxv YygpIHRyaWVzIHRvIGluc2VydAorCSAqIGEgbmV3IGVudHJ5IGJlZm9yZSBkZWxldGluZyB0 aGUgb2xkLiAgSW4gcHJpbmNpcGxlIHRoaXMgY291bGQgYmUKKwkgKiBoYXBwZW5pbmcgaW4g ZWFjaCBwYXJ0aXRpb24gY29uY3VycmVudGx5LCBzbyB3ZSBjb3VsZCBuZWVkIGFzIG1hbnkg YXMKKwkgKiBOQnVmZmVycyArIE5VTV9CVUZGRVJfUEFSVElUSU9OUyBlbnRyaWVzLgorCSAq LworCXNpemUgPSBOQnVmZmVycyArIE5VTV9CVUZGRVJfUEFSVElUSU9OUzsKKworCVNobWVt UmVxdWVzdEhhc2goLm5hbWUgPSAiU2hhcmVkIEJ1ZmZlciBMb29rdXAgVGFibGUiLAorCQkJ CQkgLm5lbGVtcyA9IHNpemUsCisJCQkJCSAucHRyID0gJlNoYXJlZEJ1Zkhhc2gsCisJCQkJ CSAuaGFzaF9pbmZvLmtleXNpemUgPSBzaXplb2YoQnVmZmVyVGFnKSwKKwkJCQkJIC5oYXNo X2luZm8uZW50cnlzaXplID0gc2l6ZW9mKEJ1ZmZlckxvb2t1cEVudCksCisJCQkJCSAuaGFz aF9pbmZvLm51bV9wYXJ0aXRpb25zID0gTlVNX0JVRkZFUl9QQVJUSVRJT05TLAorCQkJCQkg Lmhhc2hfZmxhZ3MgPSBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwgSEFTSF9QQVJUSVRJT04g fCBIQVNIX0ZJWEVEX1NJWkUsCisJCSk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC9zdG9yYWdlL2J1ZmZlci9mcmVlbGlzdC5jIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9i dWZmZXIvZnJlZWxpc3QuYwppbmRleCBiNzY4NzgzNjE4OC4uZmRiNWJhZDc5MTAgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2UvYnVmZmVyL2ZyZWVsaXN0LmMKKysrIGIvc3Jj L2JhY2tlbmQvc3RvcmFnZS9idWZmZXIvZnJlZWxpc3QuYwpAQCAtMjAsNiArMjAsOCBAQAog I2luY2x1ZGUgInN0b3JhZ2UvYnVmX2ludGVybmFscy5oIgogI2luY2x1ZGUgInN0b3JhZ2Uv YnVmbWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jLmgiCisjaW5jbHVkZSAic3RvcmFn ZS9zaG1lbS5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvc3Vic3lzdGVtcy5oIgogCiAjZGVmaW5l IElOVF9BQ0NFU1NfT05DRSh2YXIpCSgoaW50KSgqKCh2b2xhdGlsZSBpbnQgKikmKHZhcikp KSkKIApAQCAtNTYsNiArNTgsMTQgQEAgdHlwZWRlZiBzdHJ1Y3QKIC8qIFBvaW50ZXJzIHRv IHNoYXJlZCBzdGF0ZSAqLwogc3RhdGljIEJ1ZmZlclN0cmF0ZWd5Q29udHJvbCAqU3RyYXRl Z3lDb250cm9sID0gTlVMTDsKIAorc3RhdGljIHZvaWQgU3RyYXRlZ3lDdGxTaG1lbVJlcXVl c3Qodm9pZCAqYXJnKTsKK3N0YXRpYyB2b2lkIFN0cmF0ZWd5Q3RsU2htZW1Jbml0KHZvaWQg KmFyZyk7CisKK2NvbnN0IFNobWVtQ2FsbGJhY2tzIFN0cmF0ZWd5Q3RsU2htZW1DYWxsYmFj a3MgPSB7CisJLnJlcXVlc3RfZm4gPSBTdHJhdGVneUN0bFNobWVtUmVxdWVzdCwKKwkuaW5p dF9mbiA9IFN0cmF0ZWd5Q3RsU2htZW1Jbml0LAorfTsKKwogLyoKICAqIFByaXZhdGUgKG5v bi1zaGFyZWQpIHN0YXRlIGZvciBtYW5hZ2luZyBhIHJpbmcgb2Ygc2hhcmVkIGJ1ZmZlcnMg dG8gcmUtdXNlLgogICogVGhpcyBpcyBjdXJyZW50bHkgdGhlIG9ubHkga2luZCBvZiBCdWZm ZXJBY2Nlc3NTdHJhdGVneSBvYmplY3QsIGJ1dCBzb21lZGF5CkBAIC0zNjksODAgKzM3OSwz NSBAQCBTdHJhdGVneU5vdGlmeUJnV3JpdGVyKGludCBiZ3dwcm9jbm8pCiAKIAogLyoKLSAq IFN0cmF0ZWd5U2htZW1TaXplCi0gKgotICogZXN0aW1hdGUgdGhlIHNpemUgb2Ygc2hhcmVk IG1lbW9yeSB1c2VkIGJ5IHRoZSBmcmVlbGlzdC1yZWxhdGVkIHN0cnVjdHVyZXMuCi0gKgot ICogTm90ZTogZm9yIHNvbWV3aGF0IGhpc3RvcmljYWwgcmVhc29ucywgdGhlIGJ1ZmZlciBs b29rdXAgaGFzaHRhYmxlIHNpemUKLSAqIGlzIGFsc28gZGV0ZXJtaW5lZCBoZXJlLgorICog U3RyYXRlZ3lDdGxTaG1lbVJlcXVlc3QgLS0gcmVxdWVzdCBzaGFyZWQgbWVtb3J5IGZvciB0 aGUgYnVmZmVyCisgKgkJY2FjaGUgcmVwbGFjZW1lbnQgc3RyYXRlZ3kuCiAgKi8KLVNpemUK LVN0cmF0ZWd5U2htZW1TaXplKHZvaWQpCitzdGF0aWMgdm9pZAorU3RyYXRlZ3lDdGxTaG1l bVJlcXVlc3Qodm9pZCAqYXJnKQogewotCVNpemUJCXNpemUgPSAwOwotCi0JLyogc2l6ZSBv ZiBsb29rdXAgaGFzaCB0YWJsZSAuLi4gc2VlIGNvbW1lbnQgaW4gU3RyYXRlZ3lJbml0aWFs aXplICovCi0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIEJ1ZlRhYmxlU2htZW1TaXplKE5CdWZm ZXJzICsgTlVNX0JVRkZFUl9QQVJUSVRJT05TKSk7Ci0KLQkvKiBzaXplIG9mIHRoZSBzaGFy ZWQgcmVwbGFjZW1lbnQgc3RyYXRlZ3kgY29udHJvbCBibG9jayAqLwotCXNpemUgPSBhZGRf c2l6ZShzaXplLCBNQVhBTElHTihzaXplb2YoQnVmZmVyU3RyYXRlZ3lDb250cm9sKSkpOwot Ci0JcmV0dXJuIHNpemU7CisJU2htZW1SZXF1ZXN0U3RydWN0KC5uYW1lID0gIkJ1ZmZlciBT dHJhdGVneSBTdGF0dXMiLAorCQkJCQkgICAuc2l6ZSA9IHNpemVvZihCdWZmZXJTdHJhdGVn eUNvbnRyb2wpLAorCQkJCQkgICAucHRyID0gKHZvaWQgKiopICZTdHJhdGVneUNvbnRyb2wK KwkJKTsKIH0KIAogLyoKLSAqIFN0cmF0ZWd5SW5pdGlhbGl6ZSAtLSBpbml0aWFsaXplIHRo ZSBidWZmZXIgY2FjaGUgcmVwbGFjZW1lbnQKLSAqCQlzdHJhdGVneS4KLSAqCi0gKiBBc3N1 bWVzOiBBbGwgb2YgdGhlIGJ1ZmZlcnMgYXJlIGFscmVhZHkgYnVpbHQgaW50byBhIGxpbmtl ZCBsaXN0LgotICoJCU9ubHkgY2FsbGVkIGJ5IHBvc3RtYXN0ZXIgYW5kIG9ubHkgZHVyaW5n IGluaXRpYWxpemF0aW9uLgorICogU3RyYXRlZ3lDdGxTaG1lbUluaXQgLS0gaW5pdGlhbGl6 ZSB0aGUgYnVmZmVyIGNhY2hlIHJlcGxhY2VtZW50IHN0cmF0ZWd5LgogICovCi12b2lkCi1T dHJhdGVneUluaXRpYWxpemUoYm9vbCBpbml0KQorc3RhdGljIHZvaWQKK1N0cmF0ZWd5Q3Rs U2htZW1Jbml0KHZvaWQgKmFyZykKIHsKLQlib29sCQlmb3VuZDsKKwlTcGluTG9ja0luaXQo JlN0cmF0ZWd5Q29udHJvbC0+YnVmZmVyX3N0cmF0ZWd5X2xvY2spOwogCi0JLyoKLQkgKiBJ bml0aWFsaXplIHRoZSBzaGFyZWQgYnVmZmVyIGxvb2t1cCBoYXNodGFibGUuCi0JICoKLQkg KiBTaW5jZSB3ZSBjYW4ndCB0b2xlcmF0ZSBydW5uaW5nIG91dCBvZiBsb29rdXAgdGFibGUg ZW50cmllcywgd2UgbXVzdCBiZQotCSAqIHN1cmUgdG8gc3BlY2lmeSBhbiBhZGVxdWF0ZSB0 YWJsZSBzaXplIGhlcmUuICBUaGUgbWF4aW11bSBzdGVhZHktc3RhdGUKLQkgKiB1c2FnZSBp cyBvZiBjb3Vyc2UgTkJ1ZmZlcnMgZW50cmllcywgYnV0IEJ1ZmZlckFsbG9jKCkgdHJpZXMg dG8gaW5zZXJ0Ci0JICogYSBuZXcgZW50cnkgYmVmb3JlIGRlbGV0aW5nIHRoZSBvbGQuICBJ biBwcmluY2lwbGUgdGhpcyBjb3VsZCBiZQotCSAqIGhhcHBlbmluZyBpbiBlYWNoIHBhcnRp dGlvbiBjb25jdXJyZW50bHksIHNvIHdlIGNvdWxkIG5lZWQgYXMgbWFueSBhcwotCSAqIE5C dWZmZXJzICsgTlVNX0JVRkZFUl9QQVJUSVRJT05TIGVudHJpZXMuCi0JICovCi0JSW5pdEJ1 ZlRhYmxlKE5CdWZmZXJzICsgTlVNX0JVRkZFUl9QQVJUSVRJT05TKTsKLQotCS8qCi0JICog R2V0IG9yIGNyZWF0ZSB0aGUgc2hhcmVkIHN0cmF0ZWd5IGNvbnRyb2wgYmxvY2sKLQkgKi8K LQlTdHJhdGVneUNvbnRyb2wgPSAoQnVmZmVyU3RyYXRlZ3lDb250cm9sICopCi0JCVNobWVt SW5pdFN0cnVjdCgiQnVmZmVyIFN0cmF0ZWd5IFN0YXR1cyIsCi0JCQkJCQlzaXplb2YoQnVm ZmVyU3RyYXRlZ3lDb250cm9sKSwKLQkJCQkJCSZmb3VuZCk7Ci0KLQlpZiAoIWZvdW5kKQot CXsKLQkJLyoKLQkJICogT25seSBkb25lIG9uY2UsIHVzdWFsbHkgaW4gcG9zdG1hc3Rlcgot CQkgKi8KLQkJQXNzZXJ0KGluaXQpOwotCi0JCVNwaW5Mb2NrSW5pdCgmU3RyYXRlZ3lDb250 cm9sLT5idWZmZXJfc3RyYXRlZ3lfbG9jayk7CisJLyogSW5pdGlhbGl6ZSB0aGUgY2xvY2st c3dlZXAgcG9pbnRlciAqLworCXBnX2F0b21pY19pbml0X3UzMigmU3RyYXRlZ3lDb250cm9s LT5uZXh0VmljdGltQnVmZmVyLCAwKTsKIAotCQkvKiBJbml0aWFsaXplIHRoZSBjbG9jay1z d2VlcCBwb2ludGVyICovCi0JCXBnX2F0b21pY19pbml0X3UzMigmU3RyYXRlZ3lDb250cm9s LT5uZXh0VmljdGltQnVmZmVyLCAwKTsKKwkvKiBDbGVhciBzdGF0aXN0aWNzICovCisJU3Ry YXRlZ3lDb250cm9sLT5jb21wbGV0ZVBhc3NlcyA9IDA7CisJcGdfYXRvbWljX2luaXRfdTMy KCZTdHJhdGVneUNvbnRyb2wtPm51bUJ1ZmZlckFsbG9jcywgMCk7CiAKLQkJLyogQ2xlYXIg c3RhdGlzdGljcyAqLwotCQlTdHJhdGVneUNvbnRyb2wtPmNvbXBsZXRlUGFzc2VzID0gMDsK LQkJcGdfYXRvbWljX2luaXRfdTMyKCZTdHJhdGVneUNvbnRyb2wtPm51bUJ1ZmZlckFsbG9j cywgMCk7Ci0KLQkJLyogTm8gcGVuZGluZyBub3RpZmljYXRpb24gKi8KLQkJU3RyYXRlZ3lD b250cm9sLT5iZ3dwcm9jbm8gPSAtMTsKLQl9Ci0JZWxzZQotCQlBc3NlcnQoIWluaXQpOwor CS8qIE5vIHBlbmRpbmcgbm90aWZpY2F0aW9uICovCisJU3RyYXRlZ3lDb250cm9sLT5iZ3dw cm9jbm8gPSAtMTsKIH0KIAogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lw Yy9pcGNpLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9pcGNpLmMKaW5kZXggYTUxMGM5 MjhkYWEuLmY2NGMxZDU5ZmEzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9zdG9yYWdlL2lw Yy9pcGNpLmMKKysrIGIvc3JjL2JhY2tlbmQvc3RvcmFnZS9pcGMvaXBjaS5jCkBAIC0zOSw3 ICszOSw2IEBACiAjaW5jbHVkZSAicmVwbGljYXRpb24vd2FscmVjZWl2ZXIuaCIKICNpbmNs dWRlICJyZXBsaWNhdGlvbi93YWxzZW5kZXIuaCIKICNpbmNsdWRlICJzdG9yYWdlL2Fpb19z dWJzeXMuaCIKLSNpbmNsdWRlICJzdG9yYWdlL2J1Zm1nci5oIgogI2luY2x1ZGUgInN0b3Jh Z2UvZHNtLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKICNpbmNsdWRlICJzdG9yYWdl L3BnX3NobWVtLmgiCkBAIC05OSw3ICs5OCw2IEBAIENhbGN1bGF0ZVNobWVtU2l6ZSh2b2lk KQogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBTaG1lbUdldFJlcXVlc3RlZFNpemUoKSk7CiAK IAkvKiBsZWdhY3kgc3Vic3lzdGVtcyAqLwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBCdWZm ZXJNYW5hZ2VyU2htZW1TaXplKCkpOwogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBMb2NrTWFu YWdlclNobWVtU2l6ZSgpKTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgWExvZ1ByZWZldGNo U2htZW1TaXplKCkpOwogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBYTE9HU2htZW1TaXplKCkp OwpAQCAtMjYzLDcgKzI2MSw2IEBAIENyZWF0ZU9yQXR0YWNoU2htZW1TdHJ1Y3RzKHZvaWQp CiAJWExPR1NobWVtSW5pdCgpOwogCVhMb2dQcmVmZXRjaFNobWVtSW5pdCgpOwogCVhMb2dS ZWNvdmVyeVNobWVtSW5pdCgpOwotCUJ1ZmZlck1hbmFnZXJTaG1lbUluaXQoKTsKIAogCS8q CiAJICogU2V0IHVwIGxvY2sgbWFuYWdlcgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3Rv cmFnZS9idWZfaW50ZXJuYWxzLmggYi9zcmMvaW5jbHVkZS9zdG9yYWdlL2J1Zl9pbnRlcm5h bHMuaAppbmRleCBhZDFiN2IyMjE2YS4uODk2MTVhMjU0YTMgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL3N0b3JhZ2UvYnVmX2ludGVybmFscy5oCisrKyBiL3NyYy9pbmNsdWRlL3N0b3Jh Z2UvYnVmX2ludGVybmFscy5oCkBAIC01ODcsMTIgKzU4Nyw3IEBAIGV4dGVybiBib29sIFN0 cmF0ZWd5UmVqZWN0QnVmZmVyKEJ1ZmZlckFjY2Vzc1N0cmF0ZWd5IHN0cmF0ZWd5LAogZXh0 ZXJuIGludAlTdHJhdGVneVN5bmNTdGFydCh1aW50MzIgKmNvbXBsZXRlX3Bhc3NlcywgdWlu dDMyICpudW1fYnVmX2FsbG9jKTsKIGV4dGVybiB2b2lkIFN0cmF0ZWd5Tm90aWZ5QmdXcml0 ZXIoaW50IGJnd3Byb2Nubyk7CiAKLWV4dGVybiBTaXplIFN0cmF0ZWd5U2htZW1TaXplKHZv aWQpOwotZXh0ZXJuIHZvaWQgU3RyYXRlZ3lJbml0aWFsaXplKGJvb2wgaW5pdCk7Ci0KIC8q IGJ1Zl90YWJsZS5jICovCi1leHRlcm4gU2l6ZSBCdWZUYWJsZVNobWVtU2l6ZShpbnQgc2l6 ZSk7Ci1leHRlcm4gdm9pZCBJbml0QnVmVGFibGUoaW50IHNpemUpOwogZXh0ZXJuIHVpbnQz MiBCdWZUYWJsZUhhc2hDb2RlKEJ1ZmZlclRhZyAqdGFnUHRyKTsKIGV4dGVybiBpbnQJQnVm VGFibGVMb29rdXAoQnVmZmVyVGFnICp0YWdQdHIsIHVpbnQzMiBoYXNoY29kZSk7CiBleHRl cm4gaW50CUJ1ZlRhYmxlSW5zZXJ0KEJ1ZmZlclRhZyAqdGFnUHRyLCB1aW50MzIgaGFzaGNv ZGUsIGludCBidWZfaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9idWZt Z3IuaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvYnVmbWdyLmgKaW5kZXggYWE2MWEzOWQ5ZTYu LjY4MzdiMzVmYzZkIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL2J1Zm1nci5o CisrKyBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvYnVmbWdyLmgKQEAgLTM3MSwxMCArMzcxLDYg QEAgZXh0ZXJuIHZvaWQgTWFya0RpcnR5QWxsVW5waW5uZWRCdWZmZXJzKGludDMyICpidWZm ZXJzX2RpcnRpZWQsCiAJCQkJCQkJCQkJaW50MzIgKmJ1ZmZlcnNfYWxyZWFkeV9kaXJ0eSwK IAkJCQkJCQkJCQlpbnQzMiAqYnVmZmVyc19za2lwcGVkKTsKIAotLyogaW4gYnVmX2luaXQu YyAqLwotZXh0ZXJuIHZvaWQgQnVmZmVyTWFuYWdlclNobWVtSW5pdCh2b2lkKTsKLWV4dGVy biBTaXplIEJ1ZmZlck1hbmFnZXJTaG1lbVNpemUodm9pZCk7Ci0KIC8qIGluIGxvY2FsYnVm LmMgKi8KIGV4dGVybiB2b2lkIEF0UHJvY0V4aXRfTG9jYWxCdWZmZXJzKHZvaWQpOwogCmRp ZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3N1YnN5c3RlbWxpc3QuaCBiL3NyYy9p bmNsdWRlL3N0b3JhZ2Uvc3Vic3lzdGVtbGlzdC5oCmluZGV4IGI0Mzg3OTRkNDZkLi5kOGUx MTc1NmE2MSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvc3RvcmFnZS9zdWJzeXN0ZW1saXN0 LmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9zdWJzeXN0ZW1saXN0LmgKQEAgLTM2LDYg KzM2LDkgQEAgUEdfU0hNRU1fU1VCU1lTVEVNKENMT0dTaG1lbUNhbGxiYWNrcykKIFBHX1NI TUVNX1NVQlNZU1RFTShDb21taXRUc1NobWVtQ2FsbGJhY2tzKQogUEdfU0hNRU1fU1VCU1lT VEVNKFNVQlRSQU5TU2htZW1DYWxsYmFja3MpCiBQR19TSE1FTV9TVUJTWVNURU0oTXVsdGlY YWN0U2htZW1DYWxsYmFja3MpCitQR19TSE1FTV9TVUJTWVNURU0oQnVmZmVyTWFuYWdlclNo bWVtQ2FsbGJhY2tzKQorUEdfU0hNRU1fU1VCU1lTVEVNKFN0cmF0ZWd5Q3RsU2htZW1DYWxs YmFja3MpCitQR19TSE1FTV9TVUJTWVNURU0oQnVmVGFibGVTaG1lbUNhbGxiYWNrcykKIAog LyogcHJlZGljYXRlIGxvY2sgbWFuYWdlciAqLwogUEdfU0hNRU1fU1VCU1lTVEVNKFByZWRp Y2F0ZUxvY2tTaG1lbUNhbGxiYWNrcykKLS0gCjIuNDcuMwoK --------------DjaUCGyXkgmfSYE7E2Or3PMa Content-Type: text/x-patch; charset=UTF-8; name="v12-0013-Convert-all-remaining-subsystems-to-use-the-new-.patch" Content-Disposition: attachment; filename*0="v12-0013-Convert-all-remaining-subsystems-to-use-the-new-.pa"; filename*1="tch" Content-Transfer-Encoding: base64 RnJvbSAxYzYwMzkzODg3YmNhOTI5OGFhN2U0N2NjZDY4ZjhiMWU1YWNmOTZmIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFrYW5nYXMgPGhlaWtraS5saW5u YWthbmdhc0Bpa2kuZmk+CkRhdGU6IFN1biwgNSBBcHIgMjAyNiAyMDoyMTo1MyArMDMwMApT dWJqZWN0OiBbUEFUQ0ggdjEyIDEzLzEzXSBDb252ZXJ0IGFsbCByZW1haW5pbmcgc3Vic3lz dGVtcyB0byB1c2UgdGhlIG5ldwogc2htZW0gYWxsb2NhdGlvbiBBUEkKClRoaXMgcmVtb3Zl cyBhbGwgcmVtYWluaW5nIHVzZXMgb2YgU2htZW1Jbml0U3RydWN0KCkgYW5kClNobWVtSW5p dEhhc2goKSBmcm9tIGJ1aWx0LWluIGNvZGUuCgpSZXZpZXdlZC1ieTogQXNodXRvc2ggQmFw YXQgPGFzaHV0b3NoLmJhcGF0Lm9zc0BnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBNYXR0aGlh cyB2YW4gZGUgTWVlbnQgPGJvZWtld3VybStwb3N0Z3Jlc0BnbWFpbC5jb20+ClJldmlld2Vk LWJ5OiBEYW5pZWwgR3VzdGFmc3NvbiA8ZGFuaWVsQHllc3FsLnNlPgpEaXNjdXNzaW9uOiBo dHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkL0NBRXhIVzV2TTFibmVMWWZn MHdHZUFhPTUyVWlKM3o0dktkM0FKNzJYOEZ3NmszS0tyZ0BtYWlsLmdtYWlsLmNvbQotLS0K IHNyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vc3luY3NjYW4uYyAgICAgICAgICB8ICA3NiAr KysrLS0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnR1dGlscy5jICAgICAgICAg IHwgIDU0ICsrKy0tLQogc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0vdHdvcGhhc2UuYyAg ICAgICAgIHwgIDc1ICsrKystLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9n LmMgICAgICAgICAgICAgfCAgODIgKysrKystLS0tCiBzcmMvYmFja2VuZC9hY2Nlc3MvdHJh bnNhbS94bG9ncHJlZmV0Y2hlci5jICAgfCAgNTEgKysrLS0tCiBzcmMvYmFja2VuZC9hY2Nl c3MvdHJhbnNhbS94bG9ncmVjb3ZlcnkuYyAgICAgfCAgMzUgKystLQogc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0veGxvZ3dhaXQuYyAgICAgICAgIHwgIDUwICsrLS0tCiBzcmMvYmFj a2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYyAgICAgICAgICAgfCAgNzkgKysrKy0tLS0K IHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYyAgICAgICAgICAgICB8IDEwNSAr KysrKy0tLS0tLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9jaGVja3BvaW50ZXIuYyAgICAg ICAgIHwgIDU2ICsrKy0tLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9kYXRhY2hlY2tzdW1f c3RhdGUuYyAgIHwgIDQxICsrLS0tCiBzcmMvYmFja2VuZC9wb3N0bWFzdGVyL3BnYXJjaC5j ICAgICAgICAgICAgICAgfCAgNDMgKysrLS0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvd2Fs c3VtbWFyaXplci5jICAgICAgICB8ICA2MCArKystLS0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYyAgICB8ICA1NiArKystLS0KIHNyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbGN0bC5jICB8ICAyOSArKy0KIHNyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvb3JpZ2luLmMgICAgICB8ICA1OSArKystLS0KIHNyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2xvdHN5bmMuYyAgICB8ICA0MSArKystLQog c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jICAgICAgICAgICAgICAgIHwgIDY0ICsr Ky0tLS0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyZnVuY3MuYyAgICB8 ICA1MSArKystLS0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jICAgICAg ICAgICB8ICA1OSArKystLS0KIHNyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYyAgICAg ICAgICAgICAgICB8IDEyNCArLS0tLS0tLS0tLS0tCiBzcmMvYmFja2VuZC9zdG9yYWdlL2xt Z3IvbG9jay5jICAgICAgICAgICAgICAgfCAxMDkgKysrKystLS0tLS0KIHNyYy9iYWNrZW5k L3V0aWxzL2FjdGl2aXR5L2JhY2tlbmRfc3RhdHVzLmMgICB8IDE3MyArKysrKysrLS0tLS0t LS0tLS0KIHNyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9zaG1lbS5jICAgICB8 IDE1OCArKysrKysrKy0tLS0tLS0tCiBzcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0 X2V2ZW50LmMgICAgICAgfCAgODMgKysrKy0tLS0tCiBzcmMvYmFja2VuZC91dGlscy9taXNj L2luamVjdGlvbl9wb2ludC5jICAgICAgfCAgNTcgKysrLS0tCiBzcmMvaW5jbHVkZS9hY2Nl c3MvbmJ0cmVlLmggICAgICAgICAgICAgICAgICAgfCAgIDIgLQogc3JjL2luY2x1ZGUvYWNj ZXNzL3N5bmNzY2FuLmggICAgICAgICAgICAgICAgIHwgICAyIC0KIHNyYy9pbmNsdWRlL2Fj Y2Vzcy90d29waGFzZS5oICAgICAgICAgICAgICAgICB8ICAgMyAtCiBzcmMvaW5jbHVkZS9h Y2Nlc3MveGxvZy5oICAgICAgICAgICAgICAgICAgICAgfCAgIDIgLQogc3JjL2luY2x1ZGUv YWNjZXNzL3hsb2dwcmVmZXRjaGVyLmggICAgICAgICAgIHwgICAzIC0KIHNyYy9pbmNsdWRl L2FjY2Vzcy94bG9ncmVjb3ZlcnkuaCAgICAgICAgICAgICB8ICAgMyAtCiBzcmMvaW5jbHVk ZS9hY2Nlc3MveGxvZ3dhaXQuaCAgICAgICAgICAgICAgICAgfCAgIDIgLQogc3JjL2luY2x1 ZGUvcGdzdGF0LmggICAgICAgICAgICAgICAgICAgICAgICAgIHwgICA0IC0KIHNyYy9pbmNs dWRlL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5oICAgICAgICAgICB8ICAgNCAtCiBzcmMvaW5j bHVkZS9wb3N0bWFzdGVyL2Jnd29ya2VyX2ludGVybmFscy5oICAgfCAgIDIgLQogc3JjL2lu Y2x1ZGUvcG9zdG1hc3Rlci9iZ3dyaXRlci5oICAgICAgICAgICAgIHwgICAzIC0KIHNyYy9p bmNsdWRlL3Bvc3RtYXN0ZXIvZGF0YWNoZWNrc3VtX3N0YXRlLmggICB8ICAgNCAtCiBzcmMv aW5jbHVkZS9wb3N0bWFzdGVyL3BnYXJjaC5oICAgICAgICAgICAgICAgfCAgIDIgLQogc3Jj L2luY2x1ZGUvcG9zdG1hc3Rlci93YWxzdW1tYXJpemVyLmggICAgICAgIHwgICAyIC0KIHNy Yy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxjdGwuaCAgICAgICAgICB8ICAgMiAtCiBz cmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9sb2dpY2FsbGF1bmNoZXIuaCAgICAgfCAgIDMgLQog c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vb3JpZ2luLmggICAgICAgICAgICAgIHwgICA0IC0K IHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3QuaCAgICAgICAgICAgICAgICB8ICAgNCAt CiBzcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9zbG90c3luYy5oICAgICAgICAgICAgfCAgIDIg LQogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuaCAgICAgICAgIHwgICAy IC0KIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5oICAgICAgICAgICB8ICAg MiAtCiBzcmMvaW5jbHVkZS9zdG9yYWdlL2xvY2suaCAgICAgICAgICAgICAgICAgICAgfCAg IDIgLQogc3JjL2luY2x1ZGUvc3RvcmFnZS9zdWJzeXN0ZW1saXN0LmggICAgICAgICAgIHwg IDI3ICsrKwogc3JjL2luY2x1ZGUvdXRpbHMvYmFja2VuZF9zdGF0dXMuaCAgICAgICAgICAg IHwgICA4IC0KIHNyYy9pbmNsdWRlL3V0aWxzL2luamVjdGlvbl9wb2ludC5oICAgICAgICAg ICB8ICAgMyAtCiBzcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmggICAgICAgICAgICAg ICAgfCAgIDIgLQogLi4uL2luamVjdGlvbl9wb2ludHMvaW5qZWN0aW9uX3BvaW50cy5jICAg ICAgIHwgIDU5ICsrLS0tLQogc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2Fpby90ZXN0X2Fpby5j ICAgICAgICAgIHwgMTA3ICsrKysrLS0tLS0tCiA1NCBmaWxlcyBjaGFuZ2VkLCA5MjcgaW5z ZXJ0aW9ucygrKSwgMTIwOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9hY2Nlc3MvY29tbW9uL3N5bmNzY2FuLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9u L3N5bmNzY2FuLmMKaW5kZXggNmZjZmNiMGU1NjAuLjBmOWViMTY3YmVkIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9uL3N5bmNzY2FuLmMKKysrIGIvc3JjL2JhY2tl bmQvYWNjZXNzL2NvbW1vbi9zeW5jc2Nhbi5jCkBAIC01MCw2ICs1MCw3IEBACiAjaW5jbHVk ZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sd2xvY2suaCIKICNpbmNsdWRl ICJzdG9yYWdlL3NobWVtLmgiCisjaW5jbHVkZSAic3RvcmFnZS9zdWJzeXN0ZW1zLmgiCiAj aW5jbHVkZSAidXRpbHMvcmVsLmgiCiAKIApAQCAtMTExLDYgKzExMiwxNCBAQCB0eXBlZGVm IHN0cnVjdCBzc19zY2FuX2xvY2F0aW9uc190CiAjZGVmaW5lIFNpemVPZlNjYW5Mb2NhdGlv bnMoTikgXAogCShvZmZzZXRvZihzc19zY2FuX2xvY2F0aW9uc190LCBpdGVtcykgKyAoTikg KiBzaXplb2Yoc3NfbHJ1X2l0ZW1fdCkpCiAKK3N0YXRpYyB2b2lkIFN5bmNTY2FuU2htZW1S ZXF1ZXN0KHZvaWQgKmFyZyk7CitzdGF0aWMgdm9pZCBTeW5jU2NhblNobWVtSW5pdCh2b2lk ICphcmcpOworCitjb25zdCBTaG1lbUNhbGxiYWNrcyBTeW5jU2NhblNobWVtQ2FsbGJhY2tz ID0geworCS5yZXF1ZXN0X2ZuID0gU3luY1NjYW5TaG1lbVJlcXVlc3QsCisJLmluaXRfZm4g PSBTeW5jU2NhblNobWVtSW5pdCwKK307CisKIC8qIFBvaW50ZXIgdG8gc3RydWN0IGluIHNo YXJlZCBtZW1vcnkgKi8KIHN0YXRpYyBzc19zY2FuX2xvY2F0aW9uc190ICpzY2FuX2xvY2F0 aW9uczsKIApAQCAtMTIwLDU4ICsxMjksNDcgQEAgc3RhdGljIEJsb2NrTnVtYmVyIHNzX3Nl YXJjaChSZWxGaWxlTG9jYXRvciByZWxmaWxlbG9jYXRvciwKIAogCiAvKgotICogU3luY1Nj YW5TaG1lbVNpemUgLS0tIHJlcG9ydCBhbW91bnQgb2Ygc2hhcmVkIG1lbW9yeSBzcGFjZSBu ZWVkZWQKKyAqIFN5bmNTY2FuU2htZW1SZXF1ZXN0IC0tLSByZWdpc3RlciB0aGlzIG1vZHVs ZSdzIHNoYXJlZCBtZW1vcnkKICAqLwotU2l6ZQotU3luY1NjYW5TaG1lbVNpemUodm9pZCkK K3N0YXRpYyB2b2lkCitTeW5jU2NhblNobWVtUmVxdWVzdCh2b2lkICphcmcpCiB7Ci0JcmV0 dXJuIFNpemVPZlNjYW5Mb2NhdGlvbnMoU1lOQ19TQ0FOX05FTEVNKTsKKwlTaG1lbVJlcXVl c3RTdHJ1Y3QoLm5hbWUgPSAiU3luYyBTY2FuIExvY2F0aW9ucyBMaXN0IiwKKwkJCQkJICAg LnNpemUgPSBTaXplT2ZTY2FuTG9jYXRpb25zKFNZTkNfU0NBTl9ORUxFTSksCisJCQkJCSAg IC5wdHIgPSAodm9pZCAqKikgJnNjYW5fbG9jYXRpb25zLAorCQkpOwogfQogCiAvKgogICog U3luY1NjYW5TaG1lbUluaXQgLS0tIGluaXRpYWxpemUgdGhpcyBtb2R1bGUncyBzaGFyZWQg bWVtb3J5CiAgKi8KLXZvaWQKLVN5bmNTY2FuU2htZW1Jbml0KHZvaWQpCitzdGF0aWMgdm9p ZAorU3luY1NjYW5TaG1lbUluaXQodm9pZCAqYXJnKQogewogCWludAkJCWk7Ci0JYm9vbAkJ Zm91bmQ7CiAKLQlzY2FuX2xvY2F0aW9ucyA9IChzc19zY2FuX2xvY2F0aW9uc190ICopCi0J CVNobWVtSW5pdFN0cnVjdCgiU3luYyBTY2FuIExvY2F0aW9ucyBMaXN0IiwKLQkJCQkJCVNp emVPZlNjYW5Mb2NhdGlvbnMoU1lOQ19TQ0FOX05FTEVNKSwKLQkJCQkJCSZmb3VuZCk7CisJ c2Nhbl9sb2NhdGlvbnMtPmhlYWQgPSAmc2Nhbl9sb2NhdGlvbnMtPml0ZW1zWzBdOworCXNj YW5fbG9jYXRpb25zLT50YWlsID0gJnNjYW5fbG9jYXRpb25zLT5pdGVtc1tTWU5DX1NDQU5f TkVMRU0gLSAxXTsKIAotCWlmICghSXNVbmRlclBvc3RtYXN0ZXIpCisJZm9yIChpID0gMDsg aSA8IFNZTkNfU0NBTl9ORUxFTTsgaSsrKQogCXsKLQkJLyogSW5pdGlhbGl6ZSBzaGFyZWQg bWVtb3J5IGFyZWEgKi8KLQkJQXNzZXJ0KCFmb3VuZCk7Ci0KLQkJc2Nhbl9sb2NhdGlvbnMt PmhlYWQgPSAmc2Nhbl9sb2NhdGlvbnMtPml0ZW1zWzBdOwotCQlzY2FuX2xvY2F0aW9ucy0+ dGFpbCA9ICZzY2FuX2xvY2F0aW9ucy0+aXRlbXNbU1lOQ19TQ0FOX05FTEVNIC0gMV07Ci0K LQkJZm9yIChpID0gMDsgaSA8IFNZTkNfU0NBTl9ORUxFTTsgaSsrKQotCQl7Ci0JCQlzc19s cnVfaXRlbV90ICppdGVtID0gJnNjYW5fbG9jYXRpb25zLT5pdGVtc1tpXTsKLQotCQkJLyoK LQkJCSAqIEluaXRpYWxpemUgYWxsIHNsb3RzIHdpdGggaW52YWxpZCB2YWx1ZXMuIEFzIHNj YW5zIGFyZSBzdGFydGVkLAotCQkJICogdGhlc2UgaW52YWxpZCBlbnRyaWVzIHdpbGwgZmFs bCBvZmYgdGhlIExSVSBsaXN0IGFuZCBnZXQKLQkJCSAqIHJlcGxhY2VkIHdpdGggcmVhbCBl bnRyaWVzLgotCQkJICovCi0JCQlpdGVtLT5sb2NhdGlvbi5yZWxmaWxlbG9jYXRvci5zcGNP aWQgPSBJbnZhbGlkT2lkOwotCQkJaXRlbS0+bG9jYXRpb24ucmVsZmlsZWxvY2F0b3IuZGJP aWQgPSBJbnZhbGlkT2lkOwotCQkJaXRlbS0+bG9jYXRpb24ucmVsZmlsZWxvY2F0b3IucmVs TnVtYmVyID0gSW52YWxpZFJlbEZpbGVOdW1iZXI7Ci0JCQlpdGVtLT5sb2NhdGlvbi5sb2Nh dGlvbiA9IEludmFsaWRCbG9ja051bWJlcjsKLQotCQkJaXRlbS0+cHJldiA9IChpID4gMCkg PwotCQkJCSgmc2Nhbl9sb2NhdGlvbnMtPml0ZW1zW2kgLSAxXSkgOiBOVUxMOwotCQkJaXRl bS0+bmV4dCA9IChpIDwgU1lOQ19TQ0FOX05FTEVNIC0gMSkgPwotCQkJCSgmc2Nhbl9sb2Nh dGlvbnMtPml0ZW1zW2kgKyAxXSkgOiBOVUxMOwotCQl9CisJCXNzX2xydV9pdGVtX3QgKml0 ZW0gPSAmc2Nhbl9sb2NhdGlvbnMtPml0ZW1zW2ldOworCisJCS8qCisJCSAqIEluaXRpYWxp emUgYWxsIHNsb3RzIHdpdGggaW52YWxpZCB2YWx1ZXMuIEFzIHNjYW5zIGFyZSBzdGFydGVk LAorCQkgKiB0aGVzZSBpbnZhbGlkIGVudHJpZXMgd2lsbCBmYWxsIG9mZiB0aGUgTFJVIGxp c3QgYW5kIGdldCByZXBsYWNlZAorCQkgKiB3aXRoIHJlYWwgZW50cmllcy4KKwkJICovCisJ CWl0ZW0tPmxvY2F0aW9uLnJlbGZpbGVsb2NhdG9yLnNwY09pZCA9IEludmFsaWRPaWQ7CisJ CWl0ZW0tPmxvY2F0aW9uLnJlbGZpbGVsb2NhdG9yLmRiT2lkID0gSW52YWxpZE9pZDsKKwkJ aXRlbS0+bG9jYXRpb24ucmVsZmlsZWxvY2F0b3IucmVsTnVtYmVyID0gSW52YWxpZFJlbEZp bGVOdW1iZXI7CisJCWl0ZW0tPmxvY2F0aW9uLmxvY2F0aW9uID0gSW52YWxpZEJsb2NrTnVt YmVyOworCisJCWl0ZW0tPnByZXYgPSAoaSA+IDApID8KKwkJCSgmc2Nhbl9sb2NhdGlvbnMt Pml0ZW1zW2kgLSAxXSkgOiBOVUxMOworCQlpdGVtLT5uZXh0ID0gKGkgPCBTWU5DX1NDQU5f TkVMRU0gLSAxKSA/CisJCQkoJnNjYW5fbG9jYXRpb25zLT5pdGVtc1tpICsgMV0pIDogTlVM TDsKIAl9Ci0JZWxzZQotCQlBc3NlcnQoZm91bmQpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnR1dGlscy5jIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL25idHJlZS9uYnR1dGlscy5jCmluZGV4IDczMmJjNzUwYzllLi4wMTRmYWExNjIyZiAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL25idHJlZS9uYnR1dGlscy5jCisrKyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy9uYnRyZWUvbmJ0dXRpbHMuYwpAQCAtMjUsNiArMjUsNyBA QAogI2luY2x1ZGUgImxpYi9xdW5pcXVlLmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAj aW5jbHVkZSAic3RvcmFnZS9sd2xvY2suaCIKKyNpbmNsdWRlICJzdG9yYWdlL3N1YnN5c3Rl bXMuaCIKICNpbmNsdWRlICJ1dGlscy9kYXR1bS5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNj YWNoZS5oIgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgpAQCAtNDE3LDYgKzQxOCwxMyBAQCB0 eXBlZGVmIHN0cnVjdCBCVFZhY0luZm8KIAogc3RhdGljIEJUVmFjSW5mbyAqYnR2YWNpbmZv OwogCitzdGF0aWMgdm9pZCBCVHJlZVNobWVtUmVxdWVzdCh2b2lkICphcmcpOworc3RhdGlj IHZvaWQgQlRyZWVTaG1lbUluaXQodm9pZCAqYXJnKTsKKworY29uc3QgU2htZW1DYWxsYmFj a3MgQlRyZWVTaG1lbUNhbGxiYWNrcyA9IHsKKwkucmVxdWVzdF9mbiA9IEJUcmVlU2htZW1S ZXF1ZXN0LAorCS5pbml0X2ZuID0gQlRyZWVTaG1lbUluaXQsCit9OwogCiAvKgogICogX2J0 X3ZhY3V1bV9jeWNsZWlkIC0tLSBnZXQgdGhlIGFjdGl2ZSB2YWN1dW0gY3ljbGUgSUQgZm9y IGFuIGluZGV4LApAQCAtNTUzLDQ3ICs1NjEsMzcgQEAgX2J0X2VuZF92YWN1dW1fY2FsbGJh Y2soaW50IGNvZGUsIERhdHVtIGFyZykKIH0KIAogLyoKLSAqIEJUcmVlU2htZW1TaXplIC0t LSByZXBvcnQgYW1vdW50IG9mIHNoYXJlZCBtZW1vcnkgc3BhY2UgbmVlZGVkCisgKiBCVHJl ZVNobWVtUmVxdWVzdCAtLS0gcmVnaXN0ZXIgdGhpcyBtb2R1bGUncyBzaGFyZWQgbWVtb3J5 CiAgKi8KLVNpemUKLUJUcmVlU2htZW1TaXplKHZvaWQpCitzdGF0aWMgdm9pZAorQlRyZWVT aG1lbVJlcXVlc3Qodm9pZCAqYXJnKQogewogCVNpemUJCXNpemU7CiAKIAlzaXplID0gb2Zm c2V0b2YoQlRWYWNJbmZvLCB2YWN1dW1zKTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgbXVs X3NpemUoTWF4QmFja2VuZHMsIHNpemVvZihCVE9uZVZhY0luZm8pKSk7Ci0JcmV0dXJuIHNp emU7CisKKwlTaG1lbVJlcXVlc3RTdHJ1Y3QoLm5hbWUgPSAiQlRyZWUgVmFjdXVtIFN0YXRl IiwKKwkJCQkJICAgLnNpemUgPSBzaXplLAorCQkJCQkgICAucHRyID0gKHZvaWQgKiopICZi dHZhY2luZm8sCisJCSk7CiB9CiAKIC8qCiAgKiBCVHJlZVNobWVtSW5pdCAtLS0gaW5pdGlh bGl6ZSB0aGlzIG1vZHVsZSdzIHNoYXJlZCBtZW1vcnkKICAqLwotdm9pZAotQlRyZWVTaG1l bUluaXQodm9pZCkKK3N0YXRpYyB2b2lkCitCVHJlZVNobWVtSW5pdCh2b2lkICphcmcpCiB7 Ci0JYm9vbAkJZm91bmQ7Ci0KLQlidHZhY2luZm8gPSAoQlRWYWNJbmZvICopIFNobWVtSW5p dFN0cnVjdCgiQlRyZWUgVmFjdXVtIFN0YXRlIiwKLQkJCQkJCQkJCQkJICBCVHJlZVNobWVt U2l6ZSgpLAotCQkJCQkJCQkJCQkgICZmb3VuZCk7Ci0KLQlpZiAoIUlzVW5kZXJQb3N0bWFz dGVyKQotCXsKLQkJLyogSW5pdGlhbGl6ZSBzaGFyZWQgbWVtb3J5IGFyZWEgKi8KLQkJQXNz ZXJ0KCFmb3VuZCk7Ci0KLQkJLyoKLQkJICogSXQgZG9lc24ndCByZWFsbHkgbWF0dGVyIHdo YXQgdGhlIGN5Y2xlIGNvdW50ZXIgc3RhcnRzIGF0LCBidXQKLQkJICogaGF2aW5nIGl0IGFs d2F5cyBzdGFydCB0aGUgc2FtZSBkb2Vzbid0IHNlZW0gZ29vZC4gIFNlZWQgd2l0aAotCQkg KiBsb3ctb3JkZXIgYml0cyBvZiB0aW1lKCkgaW5zdGVhZC4KLQkJICovCi0JCWJ0dmFjaW5m by0+Y3ljbGVfY3RyID0gKEJUQ3ljbGVJZCkgdGltZShOVUxMKTsKKwkvKgorCSAqIEl0IGRv ZXNuJ3QgcmVhbGx5IG1hdHRlciB3aGF0IHRoZSBjeWNsZSBjb3VudGVyIHN0YXJ0cyBhdCwg YnV0IGhhdmluZworCSAqIGl0IGFsd2F5cyBzdGFydCB0aGUgc2FtZSBkb2Vzbid0IHNlZW0g Z29vZC4gIFNlZWQgd2l0aCBsb3ctb3JkZXIgYml0cworCSAqIG9mIHRpbWUoKSBpbnN0ZWFk LgorCSAqLworCWJ0dmFjaW5mby0+Y3ljbGVfY3RyID0gKEJUQ3ljbGVJZCkgdGltZShOVUxM KTsKIAotCQlidHZhY2luZm8tPm51bV92YWN1dW1zID0gMDsKLQkJYnR2YWNpbmZvLT5tYXhf dmFjdXVtcyA9IE1heEJhY2tlbmRzOwotCX0KLQllbHNlCi0JCUFzc2VydChmb3VuZCk7CisJ YnR2YWNpbmZvLT5udW1fdmFjdXVtcyA9IDA7CisJYnR2YWNpbmZvLT5tYXhfdmFjdXVtcyA9 IE1heEJhY2tlbmRzOwogfQogCiBieXRlYSAqCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9h Y2Nlc3MvdHJhbnNhbS90d29waGFzZS5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0v dHdvcGhhc2UuYwppbmRleCBhYjFjYmQ2N2JhYy4uMTAzNWU4YjNmYzcgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3R3b3BoYXNlLmMKKysrIGIvc3JjL2JhY2tl bmQvYWNjZXNzL3RyYW5zYW0vdHdvcGhhc2UuYwpAQCAtMTAyLDYgKzEwMiw3IEBACiAjaW5j bHVkZSAic3RvcmFnZS9wcmVkaWNhdGUuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIK ICNpbmNsdWRlICJzdG9yYWdlL3Byb2NhcnJheS5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvc3Vi c3lzdGVtcy5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRp bHMvaW5qZWN0aW9uX3BvaW50LmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKQEAg LTE4OSw2ICsxOTAsMTQgQEAgdHlwZWRlZiBzdHJ1Y3QgVHdvUGhhc2VTdGF0ZURhdGEKIAog c3RhdGljIFR3b1BoYXNlU3RhdGVEYXRhICpUd29QaGFzZVN0YXRlOwogCitzdGF0aWMgdm9p ZCBUd29QaGFzZVNobWVtUmVxdWVzdCh2b2lkICphcmcpOworc3RhdGljIHZvaWQgVHdvUGhh c2VTaG1lbUluaXQodm9pZCAqYXJnKTsKKworY29uc3QgU2htZW1DYWxsYmFja3MgVHdvUGhh c2VTaG1lbUNhbGxiYWNrcyA9IHsKKwkucmVxdWVzdF9mbiA9IFR3b1BoYXNlU2htZW1SZXF1 ZXN0LAorCS5pbml0X2ZuID0gVHdvUGhhc2VTaG1lbUluaXQsCit9OworCiAvKgogICogR2xv YmFsIHRyYW5zYWN0aW9uIGVudHJ5IGN1cnJlbnRseSBsb2NrZWQgYnkgdXMsIGlmIGFueS4g IE5vdGUgdGhhdCBhbnkKICAqIGFjY2VzcyB0byB0aGUgZW50cnkgcG9pbnRlZCB0byBieSB0 aGlzIHZhcmlhYmxlIG11c3QgYmUgcHJvdGVjdGVkIGJ5CkBAIC0yMzQsMTAgKzI0MywxMCBA QCBzdGF0aWMgdm9pZCBSZW1vdmVUd29QaGFzZUZpbGUoRnVsbFRyYW5zYWN0aW9uSWQgZnhp ZCwgYm9vbCBnaXZlV2FybmluZyk7CiBzdGF0aWMgdm9pZCBSZWNyZWF0ZVR3b1BoYXNlRmls ZShGdWxsVHJhbnNhY3Rpb25JZCBmeGlkLCB2b2lkICpjb250ZW50LCBpbnQgbGVuKTsKIAog LyoKLSAqIEluaXRpYWxpemF0aW9uIG9mIHNoYXJlZCBtZW1vcnkKKyAqIFJlZ2lzdGVyIHNo YXJlZCBtZW1vcnkgZm9yIHR3by1waGFzZSBzdGF0ZS4KICAqLwotU2l6ZQotVHdvUGhhc2VT aG1lbVNpemUodm9pZCkKK3N0YXRpYyB2b2lkCitUd29QaGFzZVNobWVtUmVxdWVzdCh2b2lk ICphcmcpCiB7CiAJU2l6ZQkJc2l6ZTsKIApAQCAtMjQ4LDQ2ICsyNTcsNDAgQEAgVHdvUGhh c2VTaG1lbVNpemUodm9pZCkKIAlzaXplID0gTUFYQUxJR04oc2l6ZSk7CiAJc2l6ZSA9IGFk ZF9zaXplKHNpemUsIG11bF9zaXplKG1heF9wcmVwYXJlZF94YWN0cywKIAkJCQkJCQkJICAg c2l6ZW9mKEdsb2JhbFRyYW5zYWN0aW9uRGF0YSkpKTsKLQotCXJldHVybiBzaXplOworCVNo bWVtUmVxdWVzdFN0cnVjdCgubmFtZSA9ICJQcmVwYXJlZCBUcmFuc2FjdGlvbiBUYWJsZSIs CisJCQkJCSAgIC5zaXplID0gc2l6ZSwKKwkJCQkJICAgLnB0ciA9ICh2b2lkICoqKSAmVHdv UGhhc2VTdGF0ZSwKKwkJKTsKIH0KIAotdm9pZAotVHdvUGhhc2VTaG1lbUluaXQodm9pZCkK Ky8qCisgKiBJbml0aWFsaXplIHNoYXJlZCBtZW1vcnkgZm9yIHR3by1waGFzZSBzdGF0ZS4K KyAqLworc3RhdGljIHZvaWQKK1R3b1BoYXNlU2htZW1Jbml0KHZvaWQgKmFyZykKIHsKLQli b29sCQlmb3VuZDsKLQotCVR3b1BoYXNlU3RhdGUgPSBTaG1lbUluaXRTdHJ1Y3QoIlByZXBh cmVkIFRyYW5zYWN0aW9uIFRhYmxlIiwKLQkJCQkJCQkJCVR3b1BoYXNlU2htZW1TaXplKCks Ci0JCQkJCQkJCQkmZm91bmQpOwotCWlmICghSXNVbmRlclBvc3RtYXN0ZXIpCi0JewotCQlH bG9iYWxUcmFuc2FjdGlvbiBneGFjdHM7Ci0JCWludAkJCWk7CisJR2xvYmFsVHJhbnNhY3Rp b24gZ3hhY3RzOworCWludAkJCWk7CiAKLQkJQXNzZXJ0KCFmb3VuZCk7Ci0JCVR3b1BoYXNl U3RhdGUtPmZyZWVHWGFjdHMgPSBOVUxMOwotCQlUd29QaGFzZVN0YXRlLT5udW1QcmVwWGFj dHMgPSAwOworCVR3b1BoYXNlU3RhdGUtPmZyZWVHWGFjdHMgPSBOVUxMOworCVR3b1BoYXNl U3RhdGUtPm51bVByZXBYYWN0cyA9IDA7CiAKLQkJLyoKLQkJICogSW5pdGlhbGl6ZSB0aGUg bGlua2VkIGxpc3Qgb2YgZnJlZSBHbG9iYWxUcmFuc2FjdGlvbkRhdGEgc3RydWN0cwotCQkg Ki8KLQkJZ3hhY3RzID0gKEdsb2JhbFRyYW5zYWN0aW9uKQotCQkJKChjaGFyICopIFR3b1Bo YXNlU3RhdGUgKwotCQkJIE1BWEFMSUdOKG9mZnNldG9mKFR3b1BoYXNlU3RhdGVEYXRhLCBw cmVwWGFjdHMpICsKLQkJCQkJICBzaXplb2YoR2xvYmFsVHJhbnNhY3Rpb24pICogbWF4X3By ZXBhcmVkX3hhY3RzKSk7Ci0JCWZvciAoaSA9IDA7IGkgPCBtYXhfcHJlcGFyZWRfeGFjdHM7 IGkrKykKLQkJewotCQkJLyogaW5zZXJ0IGludG8gbGlua2VkIGxpc3QgKi8KLQkJCWd4YWN0 c1tpXS5uZXh0ID0gVHdvUGhhc2VTdGF0ZS0+ZnJlZUdYYWN0czsKLQkJCVR3b1BoYXNlU3Rh dGUtPmZyZWVHWGFjdHMgPSAmZ3hhY3RzW2ldOworCS8qCisJICogSW5pdGlhbGl6ZSB0aGUg bGlua2VkIGxpc3Qgb2YgZnJlZSBHbG9iYWxUcmFuc2FjdGlvbkRhdGEgc3RydWN0cworCSAq LworCWd4YWN0cyA9IChHbG9iYWxUcmFuc2FjdGlvbikKKwkJKChjaGFyICopIFR3b1BoYXNl U3RhdGUgKworCQkgTUFYQUxJR04ob2Zmc2V0b2YoVHdvUGhhc2VTdGF0ZURhdGEsIHByZXBY YWN0cykgKworCQkJCSAgc2l6ZW9mKEdsb2JhbFRyYW5zYWN0aW9uKSAqIG1heF9wcmVwYXJl ZF94YWN0cykpOworCWZvciAoaSA9IDA7IGkgPCBtYXhfcHJlcGFyZWRfeGFjdHM7IGkrKykK Kwl7CisJCS8qIGluc2VydCBpbnRvIGxpbmtlZCBsaXN0ICovCisJCWd4YWN0c1tpXS5uZXh0 ID0gVHdvUGhhc2VTdGF0ZS0+ZnJlZUdYYWN0czsKKwkJVHdvUGhhc2VTdGF0ZS0+ZnJlZUdY YWN0cyA9ICZneGFjdHNbaV07CiAKLQkJCS8qIGFzc29jaWF0ZSBpdCB3aXRoIGEgUEdQUk9D IGFzc2lnbmVkIGJ5IFByb2NHbG9iYWxTaG1lbUluaXQgKi8KLQkJCWd4YWN0c1tpXS5wZ3By b2NubyA9IEdldE51bWJlckZyb21QR1Byb2MoJlByZXBhcmVkWGFjdFByb2NzW2ldKTsKLQkJ fQorCQkvKiBhc3NvY2lhdGUgaXQgd2l0aCBhIFBHUFJPQyBhc3NpZ25lZCBieSBQcm9jR2xv YmFsU2htZW1Jbml0ICovCisJCWd4YWN0c1tpXS5wZ3Byb2NubyA9IEdldE51bWJlckZyb21Q R1Byb2MoJlByZXBhcmVkWGFjdFByb2NzW2ldKTsKIAl9Ci0JZWxzZQotCQlBc3NlcnQoZm91 bmQpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0v eGxvZy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jCmluZGV4IDllODk5 OWJiYjYxLi5iODJhZjlhODVjMCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3Ry YW5zYW0veGxvZy5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYwpA QCAtOTYsNiArOTYsNyBAQAogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY3NpZ25hbC5oIgogI2lu Y2x1ZGUgInN0b3JhZ2UvcmVpbml0LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zcGluLmgiCisj aW5jbHVkZSAic3RvcmFnZS9zdWJzeXN0ZW1zLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zeW5j LmgiCiAjaW5jbHVkZSAidXRpbHMvZ3VjX2hvb2tzLmgiCiAjaW5jbHVkZSAidXRpbHMvZ3Vj X3RhYmxlcy5oIgpAQCAtNTc5LDggKzU4MCwxOSBAQCBzdGF0aWMgV0FMSW5zZXJ0TG9ja1Bh ZGRlZCAqV0FMSW5zZXJ0TG9ja3MgPSBOVUxMOwogLyoKICAqIFdlIG1haW50YWluIGFuIGlt YWdlIG9mIHBnX2NvbnRyb2wgaW4gc2hhcmVkIG1lbW9yeS4KICAqLworc3RhdGljIENvbnRy b2xGaWxlRGF0YSAqTG9jYWxDb250cm9sRmlsZSA9IE5VTEw7CiBzdGF0aWMgQ29udHJvbEZp bGVEYXRhICpDb250cm9sRmlsZSA9IE5VTEw7CiAKK3N0YXRpYyB2b2lkIFhMT0dTaG1lbVJl cXVlc3Qodm9pZCAqYXJnKTsKK3N0YXRpYyB2b2lkIFhMT0dTaG1lbUluaXQodm9pZCAqYXJn KTsKK3N0YXRpYyB2b2lkIFhMT0dTaG1lbUF0dGFjaCh2b2lkICphcmcpOworCitjb25zdCBT aG1lbUNhbGxiYWNrcyBYTE9HU2htZW1DYWxsYmFja3MgPSB7CisJLnJlcXVlc3RfZm4gPSBY TE9HU2htZW1SZXF1ZXN0LAorCS5pbml0X2ZuID0gWExPR1NobWVtSW5pdCwKKwkuYXR0YWNo X2ZuID0gWExPR1NobWVtQXR0YWNoLAorfTsKKwogLyoKICAqIENhbGN1bGF0ZSB0aGUgYW1v dW50IG9mIHNwYWNlIGxlZnQgb24gdGhlIHBhZ2UgYWZ0ZXIgJ2VuZHB0cicuIEJld2FyZQog ICogbXVsdGlwbGUgZXZhbHVhdGlvbiEKQEAgLTUyNTcsNyArNTI2OSw4IEBAIHZvaWQKIExv Y2FsUHJvY2Vzc0NvbnRyb2xGaWxlKGJvb2wgcmVzZXQpCiB7CiAJQXNzZXJ0KHJlc2V0IHx8 IENvbnRyb2xGaWxlID09IE5VTEwpOwotCUNvbnRyb2xGaWxlID0gcGFsbG9jX29iamVjdChD b250cm9sRmlsZURhdGEpOworCUxvY2FsQ29udHJvbEZpbGUgPSBwYWxsb2Nfb2JqZWN0KENv bnRyb2xGaWxlRGF0YSk7CisJQ29udHJvbEZpbGUgPSBMb2NhbENvbnRyb2xGaWxlOwogCVJl YWRDb250cm9sRmlsZSgpOwogCVNldExvY2FsRGF0YUNoZWNrc3VtU3RhdGUoQ29udHJvbEZp bGUtPmRhdGFfY2hlY2tzdW1fdmVyc2lvbik7CiB9CkBAIC01Mjc0LDEwICs1Mjg3LDEwIEBA IEdldEFjdGl2ZVdhbExldmVsT25TdGFuZGJ5KHZvaWQpCiB9CiAKIC8qCi0gKiBJbml0aWFs aXphdGlvbiBvZiBzaGFyZWQgbWVtb3J5IGZvciBYTE9HCisgKiBSZWdpc3RlciBzaGFyZWQg bWVtb3J5IGZvciBYTE9HLgogICovCi1TaXplCi1YTE9HU2htZW1TaXplKHZvaWQpCitzdGF0 aWMgdm9pZAorWExPR1NobWVtUmVxdWVzdCh2b2lkICphcmcpCiB7CiAJU2l6ZQkJc2l6ZTsK IApAQCAtNTMxNywyMyArNTMzMCwyNCBAQCBYTE9HU2htZW1TaXplKHZvaWQpCiAJLyogYW5k IHRoZSBidWZmZXJzIHRoZW1zZWx2ZXMgKi8KIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgbXVs X3NpemUoWExPR19CTENLU1osIFhMT0didWZmZXJzKSk7CiAKLQkvKgotCSAqIE5vdGU6IHdl IGRvbid0IGNvdW50IENvbnRyb2xGaWxlRGF0YSwgaXQgY29tZXMgb3V0IG9mIHRoZSAic2xv cCBmYWN0b3IiCi0JICogYWRkZWQgYnkgQ3JlYXRlU2hhcmVkTWVtb3J5QW5kU2VtYXBob3Jl cy4gIFRoaXMgbGV0cyB1cyB1c2UgdGhpcwotCSAqIHJvdXRpbmUgYWdhaW4gYmVsb3cgdG8g Y29tcHV0ZSB0aGUgYWN0dWFsIGFsbG9jYXRpb24gc2l6ZS4KLQkgKi8KLQotCXJldHVybiBz aXplOworCVNobWVtUmVxdWVzdFN0cnVjdCgubmFtZSA9ICJYTE9HIEN0bCIsCisJCQkJCSAg IC5zaXplID0gc2l6ZSwKKwkJCQkJICAgLnB0ciA9ICh2b2lkICoqKSAmWExvZ0N0bCwKKwkJ KTsKKwlTaG1lbVJlcXVlc3RTdHJ1Y3QoLm5hbWUgPSAiQ29udHJvbCBGaWxlIiwKKwkJCQkJ ICAgLnNpemUgPSBzaXplb2YoQ29udHJvbEZpbGVEYXRhKSwKKwkJCQkJICAgLnB0ciA9ICh2 b2lkICoqKSAmQ29udHJvbEZpbGUsCisJCSk7CiB9CiAKLXZvaWQKLVhMT0dTaG1lbUluaXQo dm9pZCkKKy8qCisgKiBYTE9HU2htZW1Jbml0IC0gaW5pdGlhbGl6ZSB0aGUgWExvZ0N0bCBz aGFyZWQgbWVtb3J5IGFyZWEuCisgKi8KK3N0YXRpYyB2b2lkCitYTE9HU2htZW1Jbml0KHZv aWQgKmFyZykKIHsKLQlib29sCQlmb3VuZENGaWxlLAotCQkJCWZvdW5kWExvZzsKIAljaGFy CSAgICphbGxvY3B0cjsKIAlpbnQJCQlpOwotCUNvbnRyb2xGaWxlRGF0YSAqbG9jYWxDb250 cm9sRmlsZTsKIAogI2lmZGVmIFdBTF9ERUJVRwogCkBAIC01MzUxLDM2ICs1MzY1LDE3IEBA IFhMT0dTaG1lbUluaXQodm9pZCkKIAl9CiAjZW5kaWYKIAotCi0JWExvZ0N0bCA9IChYTG9n Q3RsRGF0YSAqKQotCQlTaG1lbUluaXRTdHJ1Y3QoIlhMT0cgQ3RsIiwgWExPR1NobWVtU2l6 ZSgpLCAmZm91bmRYTG9nKTsKLQotCWxvY2FsQ29udHJvbEZpbGUgPSBDb250cm9sRmlsZTsK LQlDb250cm9sRmlsZSA9IChDb250cm9sRmlsZURhdGEgKikKLQkJU2htZW1Jbml0U3RydWN0 KCJDb250cm9sIEZpbGUiLCBzaXplb2YoQ29udHJvbEZpbGVEYXRhKSwgJmZvdW5kQ0ZpbGUp OwotCi0JaWYgKGZvdW5kQ0ZpbGUgfHwgZm91bmRYTG9nKQotCXsKLQkJLyogYm90aCBzaG91 bGQgYmUgcHJlc2VudCBvciBuZWl0aGVyICovCi0JCUFzc2VydChmb3VuZENGaWxlICYmIGZv dW5kWExvZyk7Ci0KLQkJLyogSW5pdGlhbGl6ZSBsb2NhbCBjb3B5IG9mIFdBTEluc2VydExv Y2tzICovCi0JCVdBTEluc2VydExvY2tzID0gWExvZ0N0bC0+SW5zZXJ0LldBTEluc2VydExv Y2tzOwotCi0JCWlmIChsb2NhbENvbnRyb2xGaWxlKQotCQkJcGZyZWUobG9jYWxDb250cm9s RmlsZSk7Ci0JCXJldHVybjsKLQl9CiAJbWVtc2V0KFhMb2dDdGwsIDAsIHNpemVvZihYTG9n Q3RsRGF0YSkpOwogCiAJLyoKIAkgKiBBbHJlYWR5IGhhdmUgcmVhZCBjb250cm9sIGZpbGUg bG9jYWxseSwgdW5sZXNzIGluIGJvb3RzdHJhcCBtb2RlLiBNb3ZlCiAJICogY29udGVudHMg aW50byBzaGFyZWQgbWVtb3J5LgogCSAqLwotCWlmIChsb2NhbENvbnRyb2xGaWxlKQorCWlm IChMb2NhbENvbnRyb2xGaWxlKQogCXsKLQkJbWVtY3B5KENvbnRyb2xGaWxlLCBsb2NhbENv bnRyb2xGaWxlLCBzaXplb2YoQ29udHJvbEZpbGVEYXRhKSk7Ci0JCXBmcmVlKGxvY2FsQ29u dHJvbEZpbGUpOworCQltZW1jcHkoQ29udHJvbEZpbGUsIExvY2FsQ29udHJvbEZpbGUsIHNp emVvZihDb250cm9sRmlsZURhdGEpKTsKKwkJcGZyZWUoTG9jYWxDb250cm9sRmlsZSk7CisJ CUxvY2FsQ29udHJvbEZpbGUgPSBOVUxMOwogCX0KIAogCS8qCkBAIC01NDQyLDYgKzU0Mzcs MTUgQEAgWExPR1NobWVtSW5pdCh2b2lkKQogCXBnX2F0b21pY19pbml0X3U2NCgmWExvZ0N0 bC0+dW5sb2dnZWRMU04sIEludmFsaWRYTG9nUmVjUHRyKTsKIH0KIAorLyoKKyAqIFhMT0dT aG1lbUF0dGFjaCAtIHJlLWVzdGFibGlzaCBXQUxJbnNlcnRMb2NrcyBwb2ludGVyIGFmdGVy IGF0dGFjaGluZy4KKyAqLworc3RhdGljIHZvaWQKK1hMT0dTaG1lbUF0dGFjaCh2b2lkICph cmcpCit7CisJV0FMSW5zZXJ0TG9ja3MgPSBYTG9nQ3RsLT5JbnNlcnQuV0FMSW5zZXJ0TG9j a3M7Cit9CisKIC8qCiAgKiBUaGlzIGZ1bmMgbXVzdCBiZSBjYWxsZWQgT05DRSBvbiBzeXN0 ZW0gaW5zdGFsbC4gIEl0IGNyZWF0ZXMgcGdfY29udHJvbAogICogYW5kIHRoZSBpbml0aWFs IFhMT0cgc2VnbWVudC4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2Ft L3hsb2dwcmVmZXRjaGVyLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncHJl ZmV0Y2hlci5jCmluZGV4IGMyMzVlY2E3YzUxLi44M2EzZjk3YTU3YyAxMDA2NDQKLS0tIGEv c3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3ByZWZldGNoZXIuYworKysgYi9zcmMv YmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncHJlZmV0Y2hlci5jCkBAIC0zOSw2ICszOSw3 IEBACiAjaW5jbHVkZSAic3RvcmFnZS9mZC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc2htZW0u aCIKICNpbmNsdWRlICJzdG9yYWdlL3NtZ3IuaCIKKyNpbmNsdWRlICJzdG9yYWdlL3N1YnN5 c3RlbXMuaCIKICNpbmNsdWRlICJ1dGlscy9mbWdycHJvdG9zLmgiCiAjaW5jbHVkZSAidXRp bHMvZ3VjX2hvb2tzLmgiCiAjaW5jbHVkZSAidXRpbHMvaHNlYXJjaC5oIgpAQCAtMjAwLDYg KzIwMSwxNCBAQCBzdGF0aWMgTHNuUmVhZFF1ZXVlTmV4dFN0YXR1cyBYTG9nUHJlZmV0Y2hl ck5leHRCbG9jayh1aW50cHRyX3QgcGdzcl9wcml2YXRlLAogCiBzdGF0aWMgWExvZ1ByZWZl dGNoU3RhdHMgKlNoYXJlZFN0YXRzOwogCitzdGF0aWMgdm9pZCBYTG9nUHJlZmV0Y2hTaG1l bVJlcXVlc3Qodm9pZCAqYXJnKTsKK3N0YXRpYyB2b2lkIFhMb2dQcmVmZXRjaFNobWVtSW5p dCh2b2lkICphcmcpOworCitjb25zdCBTaG1lbUNhbGxiYWNrcyBYTG9nUHJlZmV0Y2hTaG1l bUNhbGxiYWNrcyA9IHsKKwkucmVxdWVzdF9mbiA9IFhMb2dQcmVmZXRjaFNobWVtUmVxdWVz dCwKKwkuaW5pdF9mbiA9IFhMb2dQcmVmZXRjaFNobWVtSW5pdCwKK307CisKIHN0YXRpYyBp bmxpbmUgTHNuUmVhZFF1ZXVlICoKIGxycV9hbGxvYyh1aW50MzIgbWF4X2Rpc3RhbmNlLAog CQkgIHVpbnQzMiBtYXhfaW5mbGlnaHQsCkBAIC0yOTIsMTAgKzMwMSwyNSBAQCBscnFfY29t cGxldGVfbHNuKExzblJlYWRRdWV1ZSAqbHJxLCBYTG9nUmVjUHRyIGxzbikKIAkJbHJxX3By ZWZldGNoKGxycSk7CiB9CiAKLXNpemVfdAotWExvZ1ByZWZldGNoU2htZW1TaXplKHZvaWQp CitzdGF0aWMgdm9pZAorWExvZ1ByZWZldGNoU2htZW1SZXF1ZXN0KHZvaWQgKmFyZykKK3sK KwlTaG1lbVJlcXVlc3RTdHJ1Y3QoLm5hbWUgPSAiWExvZ1ByZWZldGNoU3RhdHMiLAorCQkJ CQkgICAuc2l6ZSA9IHNpemVvZihYTG9nUHJlZmV0Y2hTdGF0cyksCisJCQkJCSAgIC5wdHIg PSAodm9pZCAqKikgJlNoYXJlZFN0YXRzLAorCQkpOworfQorCitzdGF0aWMgdm9pZAorWExv Z1ByZWZldGNoU2htZW1Jbml0KHZvaWQgKmFyZykKIHsKLQlyZXR1cm4gc2l6ZW9mKFhMb2dQ cmVmZXRjaFN0YXRzKTsKKwlwZ19hdG9taWNfaW5pdF91NjQoJlNoYXJlZFN0YXRzLT5yZXNl dF90aW1lLCBHZXRDdXJyZW50VGltZXN0YW1wKCkpOworCXBnX2F0b21pY19pbml0X3U2NCgm U2hhcmVkU3RhdHMtPnByZWZldGNoLCAwKTsKKwlwZ19hdG9taWNfaW5pdF91NjQoJlNoYXJl ZFN0YXRzLT5oaXQsIDApOworCXBnX2F0b21pY19pbml0X3U2NCgmU2hhcmVkU3RhdHMtPnNr aXBfaW5pdCwgMCk7CisJcGdfYXRvbWljX2luaXRfdTY0KCZTaGFyZWRTdGF0cy0+c2tpcF9u ZXcsIDApOworCXBnX2F0b21pY19pbml0X3U2NCgmU2hhcmVkU3RhdHMtPnNraXBfZnB3LCAw KTsKKwlwZ19hdG9taWNfaW5pdF91NjQoJlNoYXJlZFN0YXRzLT5za2lwX3JlcCwgMCk7CiB9 CiAKIC8qCkBAIC0zMTMsMjcgKzMzNyw2IEBAIFhMb2dQcmVmZXRjaFJlc2V0U3RhdHModm9p ZCkKIAlwZ19hdG9taWNfd3JpdGVfdTY0KCZTaGFyZWRTdGF0cy0+c2tpcF9yZXAsIDApOwog fQogCi12b2lkCi1YTG9nUHJlZmV0Y2hTaG1lbUluaXQodm9pZCkKLXsKLQlib29sCQlmb3Vu ZDsKLQotCVNoYXJlZFN0YXRzID0gKFhMb2dQcmVmZXRjaFN0YXRzICopCi0JCVNobWVtSW5p dFN0cnVjdCgiWExvZ1ByZWZldGNoU3RhdHMiLAotCQkJCQkJc2l6ZW9mKFhMb2dQcmVmZXRj aFN0YXRzKSwKLQkJCQkJCSZmb3VuZCk7Ci0KLQlpZiAoIWZvdW5kKQotCXsKLQkJcGdfYXRv bWljX2luaXRfdTY0KCZTaGFyZWRTdGF0cy0+cmVzZXRfdGltZSwgR2V0Q3VycmVudFRpbWVz dGFtcCgpKTsKLQkJcGdfYXRvbWljX2luaXRfdTY0KCZTaGFyZWRTdGF0cy0+cHJlZmV0Y2gs IDApOwotCQlwZ19hdG9taWNfaW5pdF91NjQoJlNoYXJlZFN0YXRzLT5oaXQsIDApOwotCQlw Z19hdG9taWNfaW5pdF91NjQoJlNoYXJlZFN0YXRzLT5za2lwX2luaXQsIDApOwotCQlwZ19h dG9taWNfaW5pdF91NjQoJlNoYXJlZFN0YXRzLT5za2lwX25ldywgMCk7Ci0JCXBnX2F0b21p Y19pbml0X3U2NCgmU2hhcmVkU3RhdHMtPnNraXBfZnB3LCAwKTsKLQkJcGdfYXRvbWljX2lu aXRfdTY0KCZTaGFyZWRTdGF0cy0+c2tpcF9yZXAsIDApOwotCX0KLX0KIAogLyoKICAqIENh bGxlZCB3aGVuIGFueSBHVUMgaXMgY2hhbmdlZCB0aGF0IGFmZmVjdHMgcHJlZmV0Y2hpbmcu CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncmVjb3Zlcnku YyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVyeS5jCmluZGV4IGZk MWMzNmQwNjFkLi5jMjM2ZTJiNzk2OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNz L3RyYW5zYW0veGxvZ3JlY292ZXJ5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5z YW0veGxvZ3JlY292ZXJ5LmMKQEAgLTU4LDYgKzU4LDcgQEAKICNpbmNsdWRlICJzdG9yYWdl L3Btc2lnbmFsLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jYXJyYXkuaCIKICNpbmNsdWRl ICJzdG9yYWdlL3NwaW4uaCIKKyNpbmNsdWRlICJzdG9yYWdlL3N1YnN5c3RlbXMuaCIKICNp bmNsdWRlICJ1dGlscy9kYXRldGltZS5oIgogI2luY2x1ZGUgInV0aWxzL2ZtZ3Jwcm90b3Mu aCIKICNpbmNsdWRlICJ1dGlscy9ndWNfaG9va3MuaCIKQEAgLTMwNyw2ICszMDgsMTQgQEAg c3RhdGljIGNoYXIgKnByaW1hcnlfaW1hZ2VfbWFza2VkID0gTlVMTDsKIAogWExvZ1JlY292 ZXJ5Q3RsRGF0YSAqWExvZ1JlY292ZXJ5Q3RsID0gTlVMTDsKIAorc3RhdGljIHZvaWQgWExv Z1JlY292ZXJ5U2htZW1SZXF1ZXN0KHZvaWQgKmFyZyk7CitzdGF0aWMgdm9pZCBYTG9nUmVj b3ZlcnlTaG1lbUluaXQodm9pZCAqYXJnKTsKKworY29uc3QgU2htZW1DYWxsYmFja3MgWExv Z1JlY292ZXJ5U2htZW1DYWxsYmFja3MgPSB7CisJLnJlcXVlc3RfZm4gPSBYTG9nUmVjb3Zl cnlTaG1lbVJlcXVlc3QsCisJLmluaXRfZm4gPSBYTG9nUmVjb3ZlcnlTaG1lbUluaXQsCit9 OworCiAvKgogICogYWJvcnRlZFJlY1B0ciBpcyB0aGUgc3RhcnQgcG9pbnRlciBvZiBhIGJy b2tlbiByZWNvcmQgYXQgZW5kIG9mIFdBTCB3aGVuCiAgKiByZWNvdmVyeSBjb21wbGV0ZXM7 IG1pc3NpbmdDb250cmVjUHRyIGlzIHRoZSBsb2NhdGlvbiBvZiB0aGUgZmlyc3QKQEAgLTM4 NSwyOCArMzk0LDIwIEBAIHN0YXRpYyB2b2lkIFNldEN1cnJlbnRDaHVua1N0YXJ0VGltZShU aW1lc3RhbXBUeiB4dGltZSk7CiBzdGF0aWMgdm9pZCBTZXRMYXRlc3RYVGltZShUaW1lc3Rh bXBUeiB4dGltZSk7CiAKIC8qCi0gKiBJbml0aWFsaXphdGlvbiBvZiBzaGFyZWQgbWVtb3J5 IGZvciBXQUwgcmVjb3ZlcnkKKyAqIFJlZ2lzdGVyIHNoYXJlZCBtZW1vcnkgZm9yIFdBTCBy ZWNvdmVyeQogICovCi1TaXplCi1YTG9nUmVjb3ZlcnlTaG1lbVNpemUodm9pZCkKK3N0YXRp YyB2b2lkCitYTG9nUmVjb3ZlcnlTaG1lbVJlcXVlc3Qodm9pZCAqYXJnKQogewotCVNpemUJ CXNpemU7Ci0KLQkvKiBYTG9nUmVjb3ZlcnlDdGwgKi8KLQlzaXplID0gc2l6ZW9mKFhMb2dS ZWNvdmVyeUN0bERhdGEpOwotCi0JcmV0dXJuIHNpemU7CisJU2htZW1SZXF1ZXN0U3RydWN0 KC5uYW1lID0gIlhMT0cgUmVjb3ZlcnkgQ3RsIiwKKwkJCQkJICAgLnNpemUgPSBzaXplb2Yo WExvZ1JlY292ZXJ5Q3RsRGF0YSksCisJCQkJCSAgIC5wdHIgPSAodm9pZCAqKikgJlhMb2dS ZWNvdmVyeUN0bCwKKwkJKTsKIH0KIAotdm9pZAotWExvZ1JlY292ZXJ5U2htZW1Jbml0KHZv aWQpCitzdGF0aWMgdm9pZAorWExvZ1JlY292ZXJ5U2htZW1Jbml0KHZvaWQgKmFyZykKIHsK LQlib29sCQlmb3VuZDsKLQotCVhMb2dSZWNvdmVyeUN0bCA9IChYTG9nUmVjb3ZlcnlDdGxE YXRhICopCi0JCVNobWVtSW5pdFN0cnVjdCgiWExPRyBSZWNvdmVyeSBDdGwiLCBYTG9nUmVj b3ZlcnlTaG1lbVNpemUoKSwgJmZvdW5kKTsKLQlpZiAoZm91bmQpCi0JCXJldHVybjsKIAlt ZW1zZXQoWExvZ1JlY292ZXJ5Q3RsLCAwLCBzaXplb2YoWExvZ1JlY292ZXJ5Q3RsRGF0YSkp OwogCiAJU3BpbkxvY2tJbml0KCZYTG9nUmVjb3ZlcnlDdGwtPmluZm9fbGNrKTsKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2d3YWl0LmMgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nd2FpdC5jCmluZGV4IGJmNDYzMDY3N2I0Li4yZTMx YzBkNjdkNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3dh aXQuYworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nd2FpdC5jCkBAIC01 Nyw2ICs1Nyw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9sYXRjaC5oIgogI2luY2x1ZGUgInN0 b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc2htZW0uaCIKKyNpbmNsdWRlICJz dG9yYWdlL3N1YnN5c3RlbXMuaCIKICNpbmNsdWRlICJ1dGlscy9mbWdycHJvdG9zLmgiCiAj aW5jbHVkZSAidXRpbHMvcGdfbHNuLmgiCiAjaW5jbHVkZSAidXRpbHMvc25hcG1nci5oIgpA QCAtNjgsNiArNjksMTQgQEAgc3RhdGljIGludAl3YWl0bHNuX2NtcChjb25zdCBwYWlyaW5n aGVhcF9ub2RlICphLCBjb25zdCBwYWlyaW5naGVhcF9ub2RlICpiLAogCiBzdHJ1Y3QgV2Fp dExTTlN0YXRlICp3YWl0TFNOU3RhdGUgPSBOVUxMOwogCitzdGF0aWMgdm9pZCBXYWl0TFNO U2htZW1SZXF1ZXN0KHZvaWQgKmFyZyk7CitzdGF0aWMgdm9pZCBXYWl0TFNOU2htZW1Jbml0 KHZvaWQgKmFyZyk7CisKK2NvbnN0IFNobWVtQ2FsbGJhY2tzIFdhaXRMU05TaG1lbUNhbGxi YWNrcyA9IHsKKwkucmVxdWVzdF9mbiA9IFdhaXRMU05TaG1lbVJlcXVlc3QsCisJLmluaXRf Zm4gPSBXYWl0TFNOU2htZW1Jbml0LAorfTsKKwogLyoKICAqIFdhaXQgZXZlbnQgZm9yIGVh Y2ggV2FpdExTTlR5cGUsIHVzZWQgd2l0aCBXYWl0TGF0Y2goKSB0byByZXBvcnQKICAqIHRo ZSB3YWl0IGluIHBnX3N0YXRfYWN0aXZpdHkuCkBAIC0xMDksNDEgKzExOCwzNCBAQCBHZXRD dXJyZW50TFNORm9yV2FpdFR5cGUoV2FpdExTTlR5cGUgbHNuVHlwZSkKIAlwZ191bnJlYWNo YWJsZSgpOwogfQogCi0vKiBSZXBvcnQgdGhlIGFtb3VudCBvZiBzaGFyZWQgbWVtb3J5IHNw YWNlIG5lZWRlZCBmb3IgV2FpdExTTlN0YXRlLiAqLwotU2l6ZQotV2FpdExTTlNobWVtU2l6 ZSh2b2lkKQorLyogUmVnaXN0ZXIgdGhlIHNoYXJlZCBtZW1vcnkgc3BhY2UgbmVlZGVkIGZv ciBXYWl0TFNOU3RhdGUuICovCitzdGF0aWMgdm9pZAorV2FpdExTTlNobWVtUmVxdWVzdCh2 b2lkICphcmcpCiB7CiAJU2l6ZQkJc2l6ZTsKIAogCXNpemUgPSBvZmZzZXRvZihXYWl0TFNO U3RhdGUsIHByb2NJbmZvcyk7CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIG11bF9zaXplKE1h eEJhY2tlbmRzICsgTlVNX0FVWElMSUFSWV9QUk9DUywgc2l6ZW9mKFdhaXRMU05Qcm9jSW5m bykpKTsKLQlyZXR1cm4gc2l6ZTsKKwlTaG1lbVJlcXVlc3RTdHJ1Y3QoLm5hbWUgPSAiV2Fp dExTTlN0YXRlIiwKKwkJCQkJICAgLnNpemUgPSBzaXplLAorCQkJCQkgICAucHRyID0gKHZv aWQgKiopICZ3YWl0TFNOU3RhdGUsCisJCSk7CiB9CiAKIC8qIEluaXRpYWxpemUgdGhlIFdh aXRMU05TdGF0ZSBpbiB0aGUgc2hhcmVkIG1lbW9yeS4gKi8KLXZvaWQKLVdhaXRMU05TaG1l bUluaXQodm9pZCkKK3N0YXRpYyB2b2lkCitXYWl0TFNOU2htZW1Jbml0KHZvaWQgKmFyZykK IHsKLQlib29sCQlmb3VuZDsKLQotCXdhaXRMU05TdGF0ZSA9IChXYWl0TFNOU3RhdGUgKikg U2htZW1Jbml0U3RydWN0KCJXYWl0TFNOU3RhdGUiLAotCQkJCQkJCQkJCQkJCVdhaXRMU05T aG1lbVNpemUoKSwKLQkJCQkJCQkJCQkJCQkmZm91bmQpOwotCWlmICghZm91bmQpCisJLyog SW5pdGlhbGl6ZSBoZWFwcyBhbmQgdHJhY2tpbmcgKi8KKwlmb3IgKGludCBpID0gMDsgaSA8 IFdBSVRfTFNOX1RZUEVfQ09VTlQ7IGkrKykKIAl7Ci0JCWludAkJCWk7Ci0KLQkJLyogSW5p dGlhbGl6ZSBoZWFwcyBhbmQgdHJhY2tpbmcgKi8KLQkJZm9yIChpID0gMDsgaSA8IFdBSVRf TFNOX1RZUEVfQ09VTlQ7IGkrKykKLQkJewotCQkJcGdfYXRvbWljX2luaXRfdTY0KCZ3YWl0 TFNOU3RhdGUtPm1pbldhaXRlZExTTltpXSwgUEdfVUlOVDY0X01BWCk7Ci0JCQlwYWlyaW5n aGVhcF9pbml0aWFsaXplKCZ3YWl0TFNOU3RhdGUtPndhaXRlcnNIZWFwW2ldLCB3YWl0bHNu X2NtcCwgTlVMTCk7Ci0JCX0KLQotCQkvKiBJbml0aWFsaXplIHByb2Nlc3MgaW5mbyBhcnJh eSAqLwotCQltZW1zZXQoJndhaXRMU05TdGF0ZS0+cHJvY0luZm9zLCAwLAotCQkJICAgKE1h eEJhY2tlbmRzICsgTlVNX0FVWElMSUFSWV9QUk9DUykgKiBzaXplb2YoV2FpdExTTlByb2NJ bmZvKSk7CisJCXBnX2F0b21pY19pbml0X3U2NCgmd2FpdExTTlN0YXRlLT5taW5XYWl0ZWRM U05baV0sIFBHX1VJTlQ2NF9NQVgpOworCQlwYWlyaW5naGVhcF9pbml0aWFsaXplKCZ3YWl0 TFNOU3RhdGUtPndhaXRlcnNIZWFwW2ldLCB3YWl0bHNuX2NtcCwgTlVMTCk7CiAJfQorCisJ LyogSW5pdGlhbGl6ZSBwcm9jZXNzIGluZm8gYXJyYXkgKi8KKwltZW1zZXQoJndhaXRMU05T dGF0ZS0+cHJvY0luZm9zLCAwLAorCQkgICAoTWF4QmFja2VuZHMgKyBOVU1fQVVYSUxJQVJZ X1BST0NTKSAqIHNpemVvZihXYWl0TFNOUHJvY0luZm8pKTsKIH0KIAogLyoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jIGIvc3JjL2JhY2tlbmQv cG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKaW5kZXggODQwMGU2NzIyY2MuLjI1MGM0M2I4NWU1 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYworKysg Yi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYwpAQCAtOTgsNiArOTgsNyBA QAogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY3Np Z25hbC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc21nci5oIgorI2luY2x1ZGUgInN0b3JhZ2Uv c3Vic3lzdGVtcy5oIgogI2luY2x1ZGUgInRjb3AvdGNvcHByb3QuaCIKICNpbmNsdWRlICJ1 dGlscy9mbWdyb2lkcy5oIgogI2luY2x1ZGUgInV0aWxzL2ZtZ3Jwcm90b3MuaCIKQEAgLTMw OSw2ICszMTAsMTQgQEAgdHlwZWRlZiBzdHJ1Y3QKIAogc3RhdGljIEF1dG9WYWN1dW1TaG1l bVN0cnVjdCAqQXV0b1ZhY3V1bVNobWVtOwogCitzdGF0aWMgdm9pZCBBdXRvVmFjdXVtU2ht ZW1SZXF1ZXN0KHZvaWQgKmFyZyk7CitzdGF0aWMgdm9pZCBBdXRvVmFjdXVtU2htZW1Jbml0 KHZvaWQgKmFyZyk7CisKK2NvbnN0IFNobWVtQ2FsbGJhY2tzIEF1dG9WYWN1dW1TaG1lbUNh bGxiYWNrcyA9IHsKKwkucmVxdWVzdF9mbiA9IEF1dG9WYWN1dW1TaG1lbVJlcXVlc3QsCisJ LmluaXRfZm4gPSBBdXRvVmFjdXVtU2htZW1Jbml0LAorfTsKKwogLyoKICAqIHRoZSBkYXRh YmFzZSBsaXN0IChvZiBhdmxfZGJhc2UgZWxlbWVudHMpIGluIHRoZSBsYXVuY2hlciwgYW5k IHRoZSBjb250ZXh0CiAgKiB0aGF0IGNvbnRhaW5zIGl0CkBAIC0zNTQ1LDExICszNTU0LDEx IEBAIGF1dG92YWNfaW5pdCh2b2lkKQogfQogCiAvKgotICogQXV0b1ZhY3V1bVNobWVtU2l6 ZQotICoJCUNvbXB1dGUgc3BhY2UgbmVlZGVkIGZvciBhdXRvdmFjdXVtLXJlbGF0ZWQgc2hh cmVkIG1lbW9yeQorICogQXV0b1ZhY3V1bVNobWVtUmVxdWVzdAorICoJCVJlZ2lzdGVyIHNo YXJlZCBtZW1vcnkgc3BhY2UgbmVlZGVkIGZvciBhdXRvdmFjdXVtCiAgKi8KLVNpemUKLUF1 dG9WYWN1dW1TaG1lbVNpemUodm9pZCkKK3N0YXRpYyB2b2lkCitBdXRvVmFjdXVtU2htZW1S ZXF1ZXN0KHZvaWQgKmFyZykKIHsKIAlTaXplCQlzaXplOwogCkBAIC0zNTYwLDUzICszNTY5 LDQxIEBAIEF1dG9WYWN1dW1TaG1lbVNpemUodm9pZCkKIAlzaXplID0gTUFYQUxJR04oc2l6 ZSk7CiAJc2l6ZSA9IGFkZF9zaXplKHNpemUsIG11bF9zaXplKGF1dG92YWN1dW1fd29ya2Vy X3Nsb3RzLAogCQkJCQkJCQkgICBzaXplb2YoV29ya2VySW5mb0RhdGEpKSk7Ci0JcmV0dXJu IHNpemU7CisKKwlTaG1lbVJlcXVlc3RTdHJ1Y3QoLm5hbWUgPSAiQXV0b1ZhY3V1bSBEYXRh IiwKKwkJCQkJICAgLnNpemUgPSBzaXplLAorCQkJCQkgICAucHRyID0gKHZvaWQgKiopICZB dXRvVmFjdXVtU2htZW0sCisJCSk7CiB9CiAKIC8qCiAgKiBBdXRvVmFjdXVtU2htZW1Jbml0 Ci0gKgkJQWxsb2NhdGUgYW5kIGluaXRpYWxpemUgYXV0b3ZhY3V1bS1yZWxhdGVkIHNoYXJl ZCBtZW1vcnkKKyAqCQlJbml0aWFsaXplIGF1dG92YWN1dW0tcmVsYXRlZCBzaGFyZWQgbWVt b3J5CiAgKi8KLXZvaWQKLUF1dG9WYWN1dW1TaG1lbUluaXQodm9pZCkKK3N0YXRpYyB2b2lk CitBdXRvVmFjdXVtU2htZW1Jbml0KHZvaWQgKmFyZykKIHsKLQlib29sCQlmb3VuZDsKLQot CUF1dG9WYWN1dW1TaG1lbSA9IChBdXRvVmFjdXVtU2htZW1TdHJ1Y3QgKikKLQkJU2htZW1J bml0U3RydWN0KCJBdXRvVmFjdXVtIERhdGEiLAotCQkJCQkJQXV0b1ZhY3V1bVNobWVtU2l6 ZSgpLAotCQkJCQkJJmZvdW5kKTsKLQotCWlmICghSXNVbmRlclBvc3RtYXN0ZXIpCi0Jewot CQlXb3JrZXJJbmZvCXdvcmtlcjsKLQkJaW50CQkJaTsKKwlXb3JrZXJJbmZvCXdvcmtlcjsK IAotCQlBc3NlcnQoIWZvdW5kKTsKLQotCQlBdXRvVmFjdXVtU2htZW0tPmF2X2xhdW5jaGVy cGlkID0gMDsKLQkJZGNsaXN0X2luaXQoJkF1dG9WYWN1dW1TaG1lbS0+YXZfZnJlZVdvcmtl cnMpOwotCQlkbGlzdF9pbml0KCZBdXRvVmFjdXVtU2htZW0tPmF2X3J1bm5pbmdXb3JrZXJz KTsKLQkJQXV0b1ZhY3V1bVNobWVtLT5hdl9zdGFydGluZ1dvcmtlciA9IE5VTEw7Ci0JCW1l bXNldChBdXRvVmFjdXVtU2htZW0tPmF2X3dvcmtJdGVtcywgMCwKLQkJCSAgIHNpemVvZihB dXRvVmFjdXVtV29ya0l0ZW0pICogTlVNX1dPUktJVEVNUyk7Ci0KLQkJd29ya2VyID0gKFdv cmtlckluZm8pICgoY2hhciAqKSBBdXRvVmFjdXVtU2htZW0gKwotCQkJCQkJCSAgIE1BWEFM SUdOKHNpemVvZihBdXRvVmFjdXVtU2htZW1TdHJ1Y3QpKSk7Ci0KLQkJLyogaW5pdGlhbGl6 ZSB0aGUgV29ya2VySW5mbyBmcmVlIGxpc3QgKi8KLQkJZm9yIChpID0gMDsgaSA8IGF1dG92 YWN1dW1fd29ya2VyX3Nsb3RzOyBpKyspCi0JCXsKLQkJCWRjbGlzdF9wdXNoX2hlYWQoJkF1 dG9WYWN1dW1TaG1lbS0+YXZfZnJlZVdvcmtlcnMsCi0JCQkJCQkJICZ3b3JrZXJbaV0ud2lf bGlua3MpOwotCQkJcGdfYXRvbWljX2luaXRfZmxhZygmd29ya2VyW2ldLndpX2RvYmFsYW5j ZSk7Ci0JCX0KKwlBdXRvVmFjdXVtU2htZW0tPmF2X2xhdW5jaGVycGlkID0gMDsKKwlkY2xp c3RfaW5pdCgmQXV0b1ZhY3V1bVNobWVtLT5hdl9mcmVlV29ya2Vycyk7CisJZGxpc3RfaW5p dCgmQXV0b1ZhY3V1bVNobWVtLT5hdl9ydW5uaW5nV29ya2Vycyk7CisJQXV0b1ZhY3V1bVNo bWVtLT5hdl9zdGFydGluZ1dvcmtlciA9IE5VTEw7CisJbWVtc2V0KEF1dG9WYWN1dW1TaG1l bS0+YXZfd29ya0l0ZW1zLCAwLAorCQkgICBzaXplb2YoQXV0b1ZhY3V1bVdvcmtJdGVtKSAq IE5VTV9XT1JLSVRFTVMpOwogCi0JCXBnX2F0b21pY19pbml0X3UzMigmQXV0b1ZhY3V1bVNo bWVtLT5hdl9ud29ya2Vyc0ZvckJhbGFuY2UsIDApOworCXdvcmtlciA9IChXb3JrZXJJbmZv KSAoKGNoYXIgKikgQXV0b1ZhY3V1bVNobWVtICsKKwkJCQkJCSAgIE1BWEFMSUdOKHNpemVv ZihBdXRvVmFjdXVtU2htZW1TdHJ1Y3QpKSk7CiAKKwkvKiBpbml0aWFsaXplIHRoZSBXb3Jr ZXJJbmZvIGZyZWUgbGlzdCAqLworCWZvciAoaW50IGkgPSAwOyBpIDwgYXV0b3ZhY3V1bV93 b3JrZXJfc2xvdHM7IGkrKykKKwl7CisJCWRjbGlzdF9wdXNoX2hlYWQoJkF1dG9WYWN1dW1T aG1lbS0+YXZfZnJlZVdvcmtlcnMsCisJCQkJCQkgJndvcmtlcltpXS53aV9saW5rcyk7CisJ CXBnX2F0b21pY19pbml0X2ZsYWcoJndvcmtlcltpXS53aV9kb2JhbGFuY2UpOwogCX0KLQll bHNlCi0JCUFzc2VydChmb3VuZCk7CisKKwlwZ19hdG9taWNfaW5pdF91MzIoJkF1dG9WYWN1 dW1TaG1lbS0+YXZfbndvcmtlcnNGb3JCYWxhbmNlLCAwKTsKIH0KIAogLyoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYyBiL3NyYy9iYWNrZW5kL3Bv c3RtYXN0ZXIvYmd3b3JrZXIuYwppbmRleCA1MzZhZmY3Y2EwNS4uMDk5MmI5YjYzNTMgMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYmd3b3JrZXIuYworKysgYi9zcmMv YmFja2VuZC9wb3N0bWFzdGVyL2Jnd29ya2VyLmMKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNs dWRlICJzdG9yYWdlL3Byb2NhcnJheS5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY3NpZ25h bC5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc2htZW0uaCIKKyNpbmNsdWRlICJzdG9yYWdlL3N1 YnN5c3RlbXMuaCIKICNpbmNsdWRlICJ0Y29wL3Rjb3Bwcm90LmgiCiAjaW5jbHVkZSAidXRp bHMvYXNjaWkuaCIKICNpbmNsdWRlICJ1dGlscy9tZW11dGlscy5oIgpAQCAtMTEwLDYgKzEx MSwxNCBAQCBzdHJ1Y3QgQmFja2dyb3VuZFdvcmtlckhhbmRsZQogCiBzdGF0aWMgQmFja2dy b3VuZFdvcmtlckFycmF5ICpCYWNrZ3JvdW5kV29ya2VyRGF0YTsKIAorc3RhdGljIHZvaWQg QmFja2dyb3VuZFdvcmtlclNobWVtUmVxdWVzdCh2b2lkICphcmcpOworc3RhdGljIHZvaWQg QmFja2dyb3VuZFdvcmtlclNobWVtSW5pdCh2b2lkICphcmcpOworCitjb25zdCBTaG1lbUNh bGxiYWNrcyBCYWNrZ3JvdW5kV29ya2VyU2htZW1DYWxsYmFja3MgPSB7CisJLnJlcXVlc3Rf Zm4gPSBCYWNrZ3JvdW5kV29ya2VyU2htZW1SZXF1ZXN0LAorCS5pbml0X2ZuID0gQmFja2dy b3VuZFdvcmtlclNobWVtSW5pdCwKK307CisKIC8qCiAgKiBMaXN0IG9mIGludGVybmFsIGJh Y2tncm91bmQgd29ya2VyIGVudHJ5IHBvaW50cy4gIFdlIG5lZWQgdGhpcyBmb3IKICAqIHJl YXNvbnMgZXhwbGFpbmVkIGluIExvb2t1cEJhY2tncm91bmRXb3JrZXJGdW5jdGlvbigpLCBi ZWxvdy4KQEAgLTE2MCwxMCArMTY5LDEwIEBAIHN0YXRpYyBiZ3dvcmtlcl9tYWluX3R5cGUg TG9va3VwQmFja2dyb3VuZFdvcmtlckZ1bmN0aW9uKGNvbnN0IGNoYXIgKmxpYnJhcnluYW1l CiAKIAogLyoKLSAqIENhbGN1bGF0ZSBzaGFyZWQgbWVtb3J5IG5lZWRlZC4KKyAqIFJlZ2lz dGVyIHNoYXJlZCBtZW1vcnkgbmVlZGVkIGZvciBiYWNrZ3JvdW5kIHdvcmtlcnMuCiAgKi8K LVNpemUKLUJhY2tncm91bmRXb3JrZXJTaG1lbVNpemUodm9pZCkKK3N0YXRpYyB2b2lkCitC YWNrZ3JvdW5kV29ya2VyU2htZW1SZXF1ZXN0KHZvaWQgKmFyZykKIHsKIAlTaXplCQlzaXpl OwogCkBAIC0xNzEsNjYgKzE4MCw1OCBAQCBCYWNrZ3JvdW5kV29ya2VyU2htZW1TaXplKHZv aWQpCiAJc2l6ZSA9IG9mZnNldG9mKEJhY2tncm91bmRXb3JrZXJBcnJheSwgc2xvdCk7CiAJ c2l6ZSA9IGFkZF9zaXplKHNpemUsIG11bF9zaXplKG1heF93b3JrZXJfcHJvY2Vzc2VzLAog CQkJCQkJCQkgICBzaXplb2YoQmFja2dyb3VuZFdvcmtlclNsb3QpKSk7Ci0KLQlyZXR1cm4g c2l6ZTsKKwlTaG1lbVJlcXVlc3RTdHJ1Y3QoLm5hbWUgPSAiQmFja2dyb3VuZCBXb3JrZXIg RGF0YSIsCisJCQkJCSAgIC5zaXplID0gc2l6ZSwKKwkJCQkJICAgLnB0ciA9ICh2b2lkICoq KSAmQmFja2dyb3VuZFdvcmtlckRhdGEsCisJCSk7CiB9CiAKIC8qCi0gKiBJbml0aWFsaXpl IHNoYXJlZCBtZW1vcnkuCisgKiBJbml0aWFsaXplIHNoYXJlZCBtZW1vcnkgZm9yIGJhY2tn cm91bmQgd29ya2Vycy4KICAqLwotdm9pZAotQmFja2dyb3VuZFdvcmtlclNobWVtSW5pdCh2 b2lkKQorc3RhdGljIHZvaWQKK0JhY2tncm91bmRXb3JrZXJTaG1lbUluaXQodm9pZCAqYXJn KQogewotCWJvb2wJCWZvdW5kOwotCi0JQmFja2dyb3VuZFdvcmtlckRhdGEgPSBTaG1lbUlu aXRTdHJ1Y3QoIkJhY2tncm91bmQgV29ya2VyIERhdGEiLAotCQkJCQkJCQkJCSAgIEJhY2tn cm91bmRXb3JrZXJTaG1lbVNpemUoKSwKLQkJCQkJCQkJCQkgICAmZm91bmQpOwotCWlmICgh SXNVbmRlclBvc3RtYXN0ZXIpCi0JewotCQlkbGlzdF9pdGVyCWl0ZXI7Ci0JCWludAkJCXNs b3RubyA9IDA7CisJZGxpc3RfaXRlcglpdGVyOworCWludAkJCXNsb3RubyA9IDA7CiAKLQkJ QmFja2dyb3VuZFdvcmtlckRhdGEtPnRvdGFsX3Nsb3RzID0gbWF4X3dvcmtlcl9wcm9jZXNz ZXM7Ci0JCUJhY2tncm91bmRXb3JrZXJEYXRhLT5wYXJhbGxlbF9yZWdpc3Rlcl9jb3VudCA9 IDA7Ci0JCUJhY2tncm91bmRXb3JrZXJEYXRhLT5wYXJhbGxlbF90ZXJtaW5hdGVfY291bnQg PSAwOworCUJhY2tncm91bmRXb3JrZXJEYXRhLT50b3RhbF9zbG90cyA9IG1heF93b3JrZXJf cHJvY2Vzc2VzOworCUJhY2tncm91bmRXb3JrZXJEYXRhLT5wYXJhbGxlbF9yZWdpc3Rlcl9j b3VudCA9IDA7CisJQmFja2dyb3VuZFdvcmtlckRhdGEtPnBhcmFsbGVsX3Rlcm1pbmF0ZV9j b3VudCA9IDA7CiAKLQkJLyoKLQkJICogQ29weSBjb250ZW50cyBvZiB3b3JrZXIgbGlzdCBp bnRvIHNoYXJlZCBtZW1vcnkuICBSZWNvcmQgdGhlIHNoYXJlZAotCQkgKiBtZW1vcnkgc2xv dCBhc3NpZ25lZCB0byBlYWNoIHdvcmtlci4gIFRoaXMgZW5zdXJlcyBhIDEtdG8tMQotCQkg KiBjb3JyZXNwb25kZW5jZSBiZXR3ZWVuIHRoZSBwb3N0bWFzdGVyJ3MgcHJpdmF0ZSBsaXN0 IGFuZCB0aGUgYXJyYXkKLQkJICogaW4gc2hhcmVkIG1lbW9yeS4KLQkJICovCi0JCWRsaXN0 X2ZvcmVhY2goaXRlciwgJkJhY2tncm91bmRXb3JrZXJMaXN0KQotCQl7Ci0JCQlCYWNrZ3Jv dW5kV29ya2VyU2xvdCAqc2xvdCA9ICZCYWNrZ3JvdW5kV29ya2VyRGF0YS0+c2xvdFtzbG90 bm9dOwotCQkJUmVnaXN0ZXJlZEJnV29ya2VyICpydzsKKwkvKgorCSAqIENvcHkgY29udGVu dHMgb2Ygd29ya2VyIGxpc3QgaW50byBzaGFyZWQgbWVtb3J5LiAgUmVjb3JkIHRoZSBzaGFy ZWQKKwkgKiBtZW1vcnkgc2xvdCBhc3NpZ25lZCB0byBlYWNoIHdvcmtlci4gIFRoaXMgZW5z dXJlcyBhIDEtdG8tMQorCSAqIGNvcnJlc3BvbmRlbmNlIGJldHdlZW4gdGhlIHBvc3RtYXN0 ZXIncyBwcml2YXRlIGxpc3QgYW5kIHRoZSBhcnJheSBpbgorCSAqIHNoYXJlZCBtZW1vcnku CisJICovCisJZGxpc3RfZm9yZWFjaChpdGVyLCAmQmFja2dyb3VuZFdvcmtlckxpc3QpCisJ eworCQlCYWNrZ3JvdW5kV29ya2VyU2xvdCAqc2xvdCA9ICZCYWNrZ3JvdW5kV29ya2VyRGF0 YS0+c2xvdFtzbG90bm9dOworCQlSZWdpc3RlcmVkQmdXb3JrZXIgKnJ3OwogCi0JCQlydyA9 IGRsaXN0X2NvbnRhaW5lcihSZWdpc3RlcmVkQmdXb3JrZXIsIHJ3X2xub2RlLCBpdGVyLmN1 cik7Ci0JCQlBc3NlcnQoc2xvdG5vIDwgbWF4X3dvcmtlcl9wcm9jZXNzZXMpOwotCQkJc2xv dC0+aW5fdXNlID0gdHJ1ZTsKLQkJCXNsb3QtPnRlcm1pbmF0ZSA9IGZhbHNlOwotCQkJc2xv dC0+cGlkID0gSW52YWxpZFBpZDsKLQkJCXNsb3QtPmdlbmVyYXRpb24gPSAwOwotCQkJcnct PnJ3X3NobWVtX3Nsb3QgPSBzbG90bm87Ci0JCQlydy0+cndfd29ya2VyLmJnd19ub3RpZnlf cGlkID0gMDsJLyogbWlnaHQgYmUgcmVpbml0IGFmdGVyIGNyYXNoICovCi0JCQltZW1jcHko JnNsb3QtPndvcmtlciwgJnJ3LT5yd193b3JrZXIsIHNpemVvZihCYWNrZ3JvdW5kV29ya2Vy KSk7Ci0JCQkrK3Nsb3RubzsKLQkJfQorCQlydyA9IGRsaXN0X2NvbnRhaW5lcihSZWdpc3Rl cmVkQmdXb3JrZXIsIHJ3X2xub2RlLCBpdGVyLmN1cik7CisJCUFzc2VydChzbG90bm8gPCBt YXhfd29ya2VyX3Byb2Nlc3Nlcyk7CisJCXNsb3QtPmluX3VzZSA9IHRydWU7CisJCXNsb3Qt PnRlcm1pbmF0ZSA9IGZhbHNlOworCQlzbG90LT5waWQgPSBJbnZhbGlkUGlkOworCQlzbG90 LT5nZW5lcmF0aW9uID0gMDsKKwkJcnctPnJ3X3NobWVtX3Nsb3QgPSBzbG90bm87CisJCXJ3 LT5yd193b3JrZXIuYmd3X25vdGlmeV9waWQgPSAwOwkvKiBtaWdodCBiZSByZWluaXQgYWZ0 ZXIgY3Jhc2ggKi8KKwkJbWVtY3B5KCZzbG90LT53b3JrZXIsICZydy0+cndfd29ya2VyLCBz aXplb2YoQmFja2dyb3VuZFdvcmtlcikpOworCQkrK3Nsb3RubzsKKwl9CiAKLQkJLyoKLQkJ ICogTWFyayBhbnkgcmVtYWluaW5nIHNsb3RzIGFzIG5vdCBpbiB1c2UuCi0JCSAqLwotCQl3 aGlsZSAoc2xvdG5vIDwgbWF4X3dvcmtlcl9wcm9jZXNzZXMpCi0JCXsKLQkJCUJhY2tncm91 bmRXb3JrZXJTbG90ICpzbG90ID0gJkJhY2tncm91bmRXb3JrZXJEYXRhLT5zbG90W3Nsb3Ru b107CisJLyoKKwkgKiBNYXJrIGFueSByZW1haW5pbmcgc2xvdHMgYXMgbm90IGluIHVzZS4K KwkgKi8KKwl3aGlsZSAoc2xvdG5vIDwgbWF4X3dvcmtlcl9wcm9jZXNzZXMpCisJeworCQlC YWNrZ3JvdW5kV29ya2VyU2xvdCAqc2xvdCA9ICZCYWNrZ3JvdW5kV29ya2VyRGF0YS0+c2xv dFtzbG90bm9dOwogCi0JCQlzbG90LT5pbl91c2UgPSBmYWxzZTsKLQkJCSsrc2xvdG5vOwot CQl9CisJCXNsb3QtPmluX3VzZSA9IGZhbHNlOworCQkrK3Nsb3RubzsKIAl9Ci0JZWxzZQot CQlBc3NlcnQoZm91bmQpOwogfQogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9z dG1hc3Rlci9jaGVja3BvaW50ZXIuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvY2hlY2tw b2ludGVyLmMKaW5kZXggM2M5ODJjNmZmYWMuLjZiNDI0ZWU2MTBmIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9wb3N0bWFzdGVyL2NoZWNrcG9pbnRlci5jCisrKyBiL3NyYy9iYWNrZW5k L3Bvc3RtYXN0ZXIvY2hlY2twb2ludGVyLmMKQEAgLTYzLDYgKzYzLDcgQEAKICNpbmNsdWRl ICJzdG9yYWdlL3NobWVtLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zbWdyLmgiCiAjaW5jbHVk ZSAic3RvcmFnZS9zcGluLmgiCisjaW5jbHVkZSAic3RvcmFnZS9zdWJzeXN0ZW1zLmgiCiAj aW5jbHVkZSAidXRpbHMvYWNsLmgiCiAjaW5jbHVkZSAidXRpbHMvZ3VjLmgiCiAjaW5jbHVk ZSAidXRpbHMvbWVtdXRpbHMuaCIKQEAgLTE0Myw2ICsxNDQsMTQgQEAgdHlwZWRlZiBzdHJ1 Y3QKIAogc3RhdGljIENoZWNrcG9pbnRlclNobWVtU3RydWN0ICpDaGVja3BvaW50ZXJTaG1l bTsKIAorc3RhdGljIHZvaWQgQ2hlY2twb2ludGVyU2htZW1SZXF1ZXN0KHZvaWQgKmFyZyk7 CitzdGF0aWMgdm9pZCBDaGVja3BvaW50ZXJTaG1lbUluaXQodm9pZCAqYXJnKTsKKworY29u c3QgU2htZW1DYWxsYmFja3MgQ2hlY2twb2ludGVyU2htZW1DYWxsYmFja3MgPSB7CisJLnJl cXVlc3RfZm4gPSBDaGVja3BvaW50ZXJTaG1lbVJlcXVlc3QsCisJLmluaXRfZm4gPSBDaGVj a3BvaW50ZXJTaG1lbUluaXQsCit9OworCiAvKiBpbnRlcnZhbCBmb3IgY2FsbGluZyBBYnNv cmJTeW5jUmVxdWVzdHMgaW4gQ2hlY2twb2ludFdyaXRlRGVsYXkgKi8KICNkZWZpbmUgV1JJ VEVTX1BFUl9BQlNPUkIJCTEwMDAKIApAQCAtOTUwLDExICs5NTksMTEgQEAgUmVxU2h1dGRv d25YTE9HKFNJR05BTF9BUkdTKQogICovCiAKIC8qCi0gKiBDaGVja3BvaW50ZXJTaG1lbVNp emUKLSAqCQlDb21wdXRlIHNwYWNlIG5lZWRlZCBmb3IgY2hlY2twb2ludGVyLXJlbGF0ZWQg c2hhcmVkIG1lbW9yeQorICogQ2hlY2twb2ludGVyU2htZW1SZXF1ZXN0CisgKgkJUmVnaXN0 ZXIgc2hhcmVkIG1lbW9yeSBzcGFjZSBuZWVkZWQgZm9yIGNoZWNrcG9pbnRlcgogICovCi1T aXplCi1DaGVja3BvaW50ZXJTaG1lbVNpemUodm9pZCkKK3N0YXRpYyB2b2lkCitDaGVja3Bv aW50ZXJTaG1lbVJlcXVlc3Qodm9pZCAqYXJnKQogewogCVNpemUJCXNpemU7CiAKQEAgLTk2 NywzOSArOTc2LDI0IEBAIENoZWNrcG9pbnRlclNobWVtU2l6ZSh2b2lkKQogCXNpemUgPSBh ZGRfc2l6ZShzaXplLCBtdWxfc2l6ZShNaW4oTkJ1ZmZlcnMsCiAJCQkJCQkJCQkgICBNQVhf Q0hFQ0tQT0lOVF9SRVFVRVNUUyksCiAJCQkJCQkJCSAgIHNpemVvZihDaGVja3BvaW50ZXJS ZXF1ZXN0KSkpOwotCi0JcmV0dXJuIHNpemU7CisJU2htZW1SZXF1ZXN0U3RydWN0KC5uYW1l ID0gIkNoZWNrcG9pbnRlciBEYXRhIiwKKwkJCQkJICAgLnNpemUgPSBzaXplLAorCQkJCQkg ICAucHRyID0gKHZvaWQgKiopICZDaGVja3BvaW50ZXJTaG1lbSwKKwkJKTsKIH0KIAogLyoK ICAqIENoZWNrcG9pbnRlclNobWVtSW5pdAotICoJCUFsbG9jYXRlIGFuZCBpbml0aWFsaXpl IGNoZWNrcG9pbnRlci1yZWxhdGVkIHNoYXJlZCBtZW1vcnkKKyAqCQlJbml0aWFsaXplIGNo ZWNrcG9pbnRlci1yZWxhdGVkIHNoYXJlZCBtZW1vcnkKICAqLwotdm9pZAotQ2hlY2twb2lu dGVyU2htZW1Jbml0KHZvaWQpCitzdGF0aWMgdm9pZAorQ2hlY2twb2ludGVyU2htZW1Jbml0 KHZvaWQgKmFyZykKIHsKLQlTaXplCQlzaXplID0gQ2hlY2twb2ludGVyU2htZW1TaXplKCk7 Ci0JYm9vbAkJZm91bmQ7Ci0KLQlDaGVja3BvaW50ZXJTaG1lbSA9IChDaGVja3BvaW50ZXJT aG1lbVN0cnVjdCAqKQotCQlTaG1lbUluaXRTdHJ1Y3QoIkNoZWNrcG9pbnRlciBEYXRhIiwK LQkJCQkJCXNpemUsCi0JCQkJCQkmZm91bmQpOwotCi0JaWYgKCFmb3VuZCkKLQl7Ci0JCS8q Ci0JCSAqIEZpcnN0IHRpbWUgdGhyb3VnaCwgc28gaW5pdGlhbGl6ZS4gIE5vdGUgdGhhdCB3 ZSB6ZXJvIHRoZSB3aG9sZQotCQkgKiByZXF1ZXN0cyBhcnJheTsgdGhpcyBpcyBzbyB0aGF0 IENvbXBhY3RDaGVja3BvaW50ZXJSZXF1ZXN0UXVldWUgY2FuCi0JCSAqIGFzc3VtZSB0aGF0 IGFueSBwYWQgYnl0ZXMgaW4gdGhlIHJlcXVlc3Qgc3RydWN0cyBhcmUgemVyb2VzLgotCQkg Ki8KLQkJTWVtU2V0KENoZWNrcG9pbnRlclNobWVtLCAwLCBzaXplKTsKLQkJU3BpbkxvY2tJ bml0KCZDaGVja3BvaW50ZXJTaG1lbS0+Y2twdF9sY2spOwotCQlDaGVja3BvaW50ZXJTaG1l bS0+bWF4X3JlcXVlc3RzID0gTWluKE5CdWZmZXJzLCBNQVhfQ0hFQ0tQT0lOVF9SRVFVRVNU Uyk7Ci0JCUNoZWNrcG9pbnRlclNobWVtLT5oZWFkID0gQ2hlY2twb2ludGVyU2htZW0tPnRh aWwgPSAwOwotCQlDb25kaXRpb25WYXJpYWJsZUluaXQoJkNoZWNrcG9pbnRlclNobWVtLT5z dGFydF9jdik7Ci0JCUNvbmRpdGlvblZhcmlhYmxlSW5pdCgmQ2hlY2twb2ludGVyU2htZW0t PmRvbmVfY3YpOwotCX0KKwlTcGluTG9ja0luaXQoJkNoZWNrcG9pbnRlclNobWVtLT5ja3B0 X2xjayk7CisJQ2hlY2twb2ludGVyU2htZW0tPm1heF9yZXF1ZXN0cyA9IE1pbihOQnVmZmVy cywgTUFYX0NIRUNLUE9JTlRfUkVRVUVTVFMpOworCUNoZWNrcG9pbnRlclNobWVtLT5oZWFk ID0gQ2hlY2twb2ludGVyU2htZW0tPnRhaWwgPSAwOworCUNvbmRpdGlvblZhcmlhYmxlSW5p dCgmQ2hlY2twb2ludGVyU2htZW0tPnN0YXJ0X2N2KTsKKwlDb25kaXRpb25WYXJpYWJsZUlu aXQoJkNoZWNrcG9pbnRlclNobWVtLT5kb25lX2N2KTsKIH0KIAogLyoKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvZGF0YWNoZWNrc3VtX3N0YXRlLmMgYi9zcmMvYmFj a2VuZC9wb3N0bWFzdGVyL2RhdGFjaGVja3N1bV9zdGF0ZS5jCmluZGV4IDc2MDA0YmNlZGM2 Li5lYjdiMDFkMDk5MyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9kYXRh Y2hlY2tzdW1fc3RhdGUuYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2RhdGFjaGVj a3N1bV9zdGF0ZS5jCkBAIC0yMTEsNiArMjExLDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL2x3 bG9jay5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY2FycmF5LmgiCiAjaW5jbHVkZSAic3Rv cmFnZS9zbWdyLmgiCisjaW5jbHVkZSAic3RvcmFnZS9zdWJzeXN0ZW1zLmgiCiAjaW5jbHVk ZSAidGNvcC90Y29wcHJvdC5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgiCiAjaW5j bHVkZSAidXRpbHMvZm1ncm9pZHMuaCIKQEAgLTM0Niw2ICszNDcsNyBAQCBzdGF0aWMgdm9s YXRpbGUgc2lnX2F0b21pY190IGxhdW5jaGVyX3J1bm5pbmcgPSBmYWxzZTsKIHN0YXRpYyBE YXRhQ2hlY2tzdW1zV29ya2VyT3BlcmF0aW9uIG9wZXJhdGlvbjsKIAogLyogUHJvdG90eXBl cyAqLworc3RhdGljIHZvaWQgRGF0YUNoZWNrc3Vtc1NobWVtUmVxdWVzdCh2b2lkICphcmcp Owogc3RhdGljIGJvb2wgRGF0YWJhc2VFeGlzdHMoT2lkIGRib2lkKTsKIHN0YXRpYyBMaXN0 ICpCdWlsZERhdGFiYXNlTGlzdCh2b2lkKTsKIHN0YXRpYyBMaXN0ICpCdWlsZFJlbGF0aW9u TGlzdChib29sIHRlbXBfcmVsYXRpb25zLCBib29sIGluY2x1ZGVfc2hhcmVkKTsKQEAgLTM1 Niw2ICszNTgsMTAgQEAgc3RhdGljIGJvb2wgUHJvY2Vzc1NpbmdsZVJlbGF0aW9uRm9yayhS ZWxhdGlvbiByZWxuLCBGb3JrTnVtYmVyIGZvcmtOdW0sIEJ1ZmZlckEKIHN0YXRpYyB2b2lk IGxhdW5jaGVyX2NhbmNlbF9oYW5kbGVyKFNJR05BTF9BUkdTKTsKIHN0YXRpYyB2b2lkIFdh aXRGb3JBbGxUcmFuc2FjdGlvbnNUb0ZpbmlzaCh2b2lkKTsKIAorY29uc3QgU2htZW1DYWxs YmFja3MgRGF0YUNoZWNrc3Vtc1NobWVtQ2FsbGJhY2tzID0geworCS5yZXF1ZXN0X2ZuID0g RGF0YUNoZWNrc3Vtc1NobWVtUmVxdWVzdCwKK307CisKIC8qKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKgogICogRnVuY3Rpb25hbGl0eSBmb3IgbWFuaXB1bGF0aW5nIHRoZSBkYXRhIGNoZWNr c3VtIHN0YXRlIGluIHRoZSBjbHVzdGVyCiAgKi8KQEAgLTEyMzYsMzUgKzEyNDIsMTYgQEAg UHJvY2Vzc0FsbERhdGFiYXNlcyh2b2lkKQogfQogCiAvKgotICogRGF0YUNoZWNrc3VtU3Rh dGVTaXplCi0gKgkJQ29tcHV0ZSByZXF1aXJlZCBzcGFjZSBmb3IgZGF0YWNoZWNrc3Vtc3dv cmtlci1yZWxhdGVkIHNoYXJlZCBtZW1vcnkKLSAqLwotU2l6ZQotRGF0YUNoZWNrc3Vtc1No bWVtU2l6ZSh2b2lkKQotewotCVNpemUJCXNpemU7Ci0KLQlzaXplID0gc2l6ZW9mKERhdGFD aGVja3N1bXNTdGF0ZVN0cnVjdCk7Ci0Jc2l6ZSA9IE1BWEFMSUdOKHNpemUpOwotCi0JcmV0 dXJuIHNpemU7Ci19Ci0KLS8qCi0gKiBEYXRhQ2hlY2tzdW1TdGF0ZUluaXQKLSAqCQlBbGxv Y2F0ZSBhbmQgaW5pdGlhbGl6ZSBkYXRhY2hlY2tzdW1zd29ya2VyLXJlbGF0ZWQgc2hhcmVk IG1lbW9yeQorICogRGF0YUNoZWNrc3VtU2htZW1SZXF1ZXN0CisgKgkJUmVxdWVzdCBkYXRh Y2hlY2tzdW1zd29ya2VyLXJlbGF0ZWQgc2hhcmVkIG1lbW9yeQogICovCi12b2lkCi1EYXRh Q2hlY2tzdW1zU2htZW1Jbml0KHZvaWQpCitzdGF0aWMgdm9pZAorRGF0YUNoZWNrc3Vtc1No bWVtUmVxdWVzdCh2b2lkICphcmcpCiB7Ci0JYm9vbAkJZm91bmQ7Ci0KLQlEYXRhQ2hlY2tz dW1TdGF0ZSA9IChEYXRhQ2hlY2tzdW1zU3RhdGVTdHJ1Y3QgKikKLQkJU2htZW1Jbml0U3Ry dWN0KCJEYXRhQ2hlY2tzdW1zV29ya2VyIERhdGEiLAotCQkJCQkJRGF0YUNoZWNrc3Vtc1No bWVtU2l6ZSgpLAotCQkJCQkJJmZvdW5kKTsKLQlpZiAoIWZvdW5kKQotCQlNZW1TZXQoRGF0 YUNoZWNrc3VtU3RhdGUsIDAsIERhdGFDaGVja3N1bXNTaG1lbVNpemUoKSk7CisJU2htZW1S ZXF1ZXN0U3RydWN0KC5uYW1lID0gIkRhdGFDaGVja3N1bXNXb3JrZXIgRGF0YSIsCisJCQkJ CSAgIC5zaXplID0gc2l6ZW9mKERhdGFDaGVja3N1bXNTdGF0ZVN0cnVjdCksCisJCQkJCSAg IC5wdHIgPSAodm9pZCAqKikgJkRhdGFDaGVja3N1bVN0YXRlLAorCQkpOwogfQogCiAvKgpk aWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9wZ2FyY2guYyBiL3NyYy9iYWNr ZW5kL3Bvc3RtYXN0ZXIvcGdhcmNoLmMKaW5kZXggZmE0YmRmZTlhYjkuLjBhMWExMTQ5ZDc4 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3BnYXJjaC5jCisrKyBiL3Ny Yy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcGdhcmNoLmMKQEAgLTQ4LDYgKzQ4LDcgQEAKICNpbmNs dWRlICJzdG9yYWdlL3Byb2MuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2NzaWduYWwuaCIK ICNpbmNsdWRlICJzdG9yYWdlL3NobWVtLmgiCisjaW5jbHVkZSAic3RvcmFnZS9zdWJzeXN0 ZW1zLmgiCiAjaW5jbHVkZSAidXRpbHMvZ3VjLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRp bHMuaCIKICNpbmNsdWRlICJ1dGlscy9wc19zdGF0dXMuaCIKQEAgLTE1NCwzMyArMTU1LDMx IEBAIHN0YXRpYyBpbnQJcmVhZHlfZmlsZV9jb21wYXJhdG9yKERhdHVtIGEsIERhdHVtIGIs IHZvaWQgKmFyZyk7CiBzdGF0aWMgdm9pZCBMb2FkQXJjaGl2ZUxpYnJhcnkodm9pZCk7CiBz dGF0aWMgdm9pZCBwZ2FyY2hfY2FsbF9tb2R1bGVfc2h1dGRvd25fY2IoaW50IGNvZGUsIERh dHVtIGFyZyk7CiAKLS8qIFJlcG9ydCBzaGFyZWQgbWVtb3J5IHNwYWNlIG5lZWRlZCBieSBQ Z0FyY2hTaG1lbUluaXQgKi8KLVNpemUKLVBnQXJjaFNobWVtU2l6ZSh2b2lkKQotewotCVNp emUJCXNpemUgPSAwOworc3RhdGljIHZvaWQgUGdBcmNoU2htZW1SZXF1ZXN0KHZvaWQgKmFy Zyk7CitzdGF0aWMgdm9pZCBQZ0FyY2hTaG1lbUluaXQodm9pZCAqYXJnKTsKIAotCXNpemUg PSBhZGRfc2l6ZShzaXplLCBzaXplb2YoUGdBcmNoRGF0YSkpOworY29uc3QgU2htZW1DYWxs YmFja3MgUGdBcmNoU2htZW1DYWxsYmFja3MgPSB7CisJLnJlcXVlc3RfZm4gPSBQZ0FyY2hT aG1lbVJlcXVlc3QsCisJLmluaXRfZm4gPSBQZ0FyY2hTaG1lbUluaXQsCit9OwogCi0JcmV0 dXJuIHNpemU7CisvKiBSZWdpc3RlciBzaGFyZWQgbWVtb3J5IHNwYWNlIG5lZWRlZCBieSB0 aGUgYXJjaGl2ZXIgKi8KK3N0YXRpYyB2b2lkCitQZ0FyY2hTaG1lbVJlcXVlc3Qodm9pZCAq YXJnKQoreworCVNobWVtUmVxdWVzdFN0cnVjdCgubmFtZSA9ICJBcmNoaXZlciBEYXRhIiwK KwkJCQkJICAgLnNpemUgPSBzaXplb2YoUGdBcmNoRGF0YSksCisJCQkJCSAgIC5wdHIgPSAo dm9pZCAqKikgJlBnQXJjaCwKKwkJKTsKIH0KIAotLyogQWxsb2NhdGUgYW5kIGluaXRpYWxp emUgYXJjaGl2ZXItcmVsYXRlZCBzaGFyZWQgbWVtb3J5ICovCi12b2lkCi1QZ0FyY2hTaG1l bUluaXQodm9pZCkKKy8qIEluaXRpYWxpemUgYXJjaGl2ZXItcmVsYXRlZCBzaGFyZWQgbWVt b3J5ICovCitzdGF0aWMgdm9pZAorUGdBcmNoU2htZW1Jbml0KHZvaWQgKmFyZykKIHsKLQli b29sCQlmb3VuZDsKLQotCVBnQXJjaCA9IChQZ0FyY2hEYXRhICopCi0JCVNobWVtSW5pdFN0 cnVjdCgiQXJjaGl2ZXIgRGF0YSIsIFBnQXJjaFNobWVtU2l6ZSgpLCAmZm91bmQpOwotCi0J aWYgKCFmb3VuZCkKLQl7Ci0JCS8qIEZpcnN0IHRpbWUgdGhyb3VnaCwgc28gaW5pdGlhbGl6 ZSAqLwotCQlNZW1TZXQoUGdBcmNoLCAwLCBQZ0FyY2hTaG1lbVNpemUoKSk7Ci0JCVBnQXJj aC0+cGdwcm9jbm8gPSBJTlZBTElEX1BST0NfTlVNQkVSOwotCQlwZ19hdG9taWNfaW5pdF91 MzIoJlBnQXJjaC0+Zm9yY2VfZGlyX3NjYW4sIDApOwotCX0KKwlNZW1TZXQoUGdBcmNoLCAw LCBzaXplb2YoUGdBcmNoRGF0YSkpOworCVBnQXJjaC0+cGdwcm9jbm8gPSBJTlZBTElEX1BS T0NfTlVNQkVSOworCXBnX2F0b21pY19pbml0X3UzMigmUGdBcmNoLT5mb3JjZV9kaXJfc2Nh biwgMCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3dh bHN1bW1hcml6ZXIuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvd2Fsc3VtbWFyaXplci5j CmluZGV4IGEzN2IzMDE4YWJmLi4yMDk2MGY1YjYzMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tl bmQvcG9zdG1hc3Rlci93YWxzdW1tYXJpemVyLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1h c3Rlci93YWxzdW1tYXJpemVyLmMKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJzdG9y YWdlL3Byb2MuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2NzaWduYWwuaCIKICNpbmNsdWRl ICJzdG9yYWdlL3NobWVtLmgiCisjaW5jbHVkZSAic3RvcmFnZS9zdWJzeXN0ZW1zLmgiCiAj aW5jbHVkZSAidXRpbHMvZ3VjLmgiCiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKICNp bmNsdWRlICJ1dGlscy93YWl0X2V2ZW50LmgiCkBAIC0xMDksNiArMTEwLDE0IEBAIHR5cGVk ZWYgc3RydWN0CiAvKiBQb2ludGVyIHRvIHNoYXJlZCBtZW1vcnkgc3RhdGUuICovCiBzdGF0 aWMgV2FsU3VtbWFyaXplckRhdGEgKldhbFN1bW1hcml6ZXJDdGw7CiAKK3N0YXRpYyB2b2lk IFdhbFN1bW1hcml6ZXJTaG1lbVJlcXVlc3Qodm9pZCAqYXJnKTsKK3N0YXRpYyB2b2lkIFdh bFN1bW1hcml6ZXJTaG1lbUluaXQodm9pZCAqYXJnKTsKKworY29uc3QgU2htZW1DYWxsYmFj a3MgV2FsU3VtbWFyaXplclNobWVtQ2FsbGJhY2tzID0geworCS5yZXF1ZXN0X2ZuID0gV2Fs U3VtbWFyaXplclNobWVtUmVxdWVzdCwKKwkuaW5pdF9mbiA9IFdhbFN1bW1hcml6ZXJTaG1l bUluaXQsCit9OworCiAvKgogICogV2hlbiB3ZSByZWFjaCBlbmQgb2YgV0FMIGFuZCBuZWVk IHRvIHJlYWQgbW9yZSwgd2Ugc2xlZXAgZm9yIGEgbnVtYmVyIG9mCiAgKiBtaWxsaXNlY29u ZHMgdGhhdCBpcyBhbiBpbnRlZ2VyIG11bHRpcGxlIG9mIE1TX1BFUl9TTEVFUF9RVUFOVFVN LiBUaGlzIGlzCkBAIC0xNjgsNDMgKzE3NywzNCBAQCBzdGF0aWMgdm9pZCBzdW1tYXJpemVy X3dhaXRfZm9yX3dhbCh2b2lkKTsKIHN0YXRpYyB2b2lkIE1heWJlUmVtb3ZlT2xkV2FsU3Vt bWFyaWVzKHZvaWQpOwogCiAvKgotICogQW1vdW50IG9mIHNoYXJlZCBtZW1vcnkgcmVxdWly ZWQgZm9yIHRoaXMgbW9kdWxlLgorICogUmVnaXN0ZXIgc2hhcmVkIG1lbW9yeSBzcGFjZSBu ZWVkZWQgYnkgdGhpcyBtb2R1bGUuCiAgKi8KLVNpemUKLVdhbFN1bW1hcml6ZXJTaG1lbVNp emUodm9pZCkKK3N0YXRpYyB2b2lkCitXYWxTdW1tYXJpemVyU2htZW1SZXF1ZXN0KHZvaWQg KmFyZykKIHsKLQlyZXR1cm4gc2l6ZW9mKFdhbFN1bW1hcml6ZXJEYXRhKTsKKwlTaG1lbVJl cXVlc3RTdHJ1Y3QoLm5hbWUgPSAiV2FsIFN1bW1hcml6ZXIgQ3RsIiwKKwkJCQkJICAgLnNp emUgPSBzaXplb2YoV2FsU3VtbWFyaXplckRhdGEpLAorCQkJCQkgICAucHRyID0gKHZvaWQg KiopICZXYWxTdW1tYXJpemVyQ3RsLAorCQkpOwogfQogCiAvKgotICogQ3JlYXRlIG9yIGF0 dGFjaCB0byBzaGFyZWQgbWVtb3J5IHNlZ21lbnQgZm9yIHRoaXMgbW9kdWxlLgorICogSW5p dGlhbGl6ZSBzaGFyZWQgbWVtb3J5IGZvciB0aGlzIG1vZHVsZS4KICAqLwotdm9pZAotV2Fs U3VtbWFyaXplclNobWVtSW5pdCh2b2lkKQorc3RhdGljIHZvaWQKK1dhbFN1bW1hcml6ZXJT aG1lbUluaXQodm9pZCAqYXJnKQogewotCWJvb2wJCWZvdW5kOwotCi0JV2FsU3VtbWFyaXpl ckN0bCA9IChXYWxTdW1tYXJpemVyRGF0YSAqKQotCQlTaG1lbUluaXRTdHJ1Y3QoIldhbCBT dW1tYXJpemVyIEN0bCIsIFdhbFN1bW1hcml6ZXJTaG1lbVNpemUoKSwKLQkJCQkJCSZmb3Vu ZCk7Ci0KLQlpZiAoIWZvdW5kKQotCXsKLQkJLyoKLQkJICogRmlyc3QgdGltZSB0aHJvdWdo LCBzbyBpbml0aWFsaXplLgotCQkgKgotCQkgKiBXZSdyZSBqdXN0IGZpbGxpbmcgaW4gZHVt bXkgdmFsdWVzIGhlcmUgLS0gdGhlIHJlYWwgaW5pdGlhbGl6YXRpb24KLQkJICogd2lsbCBo YXBwZW4gd2hlbiBHZXRPbGRlc3RVbnN1bW1hcml6ZWRMU04oKSBpcyBjYWxsZWQgZm9yIHRo ZSBmaXJzdAotCQkgKiB0aW1lLgotCQkgKi8KLQkJV2FsU3VtbWFyaXplckN0bC0+aW5pdGlh bGl6ZWQgPSBmYWxzZTsKLQkJV2FsU3VtbWFyaXplckN0bC0+c3VtbWFyaXplZF90bGkgPSAw OwotCQlXYWxTdW1tYXJpemVyQ3RsLT5zdW1tYXJpemVkX2xzbiA9IEludmFsaWRYTG9nUmVj UHRyOwotCQlXYWxTdW1tYXJpemVyQ3RsLT5sc25faXNfZXhhY3QgPSBmYWxzZTsKLQkJV2Fs U3VtbWFyaXplckN0bC0+c3VtbWFyaXplcl9wZ3Byb2NubyA9IElOVkFMSURfUFJPQ19OVU1C RVI7Ci0JCVdhbFN1bW1hcml6ZXJDdGwtPnBlbmRpbmdfbHNuID0gSW52YWxpZFhMb2dSZWNQ dHI7Ci0JCUNvbmRpdGlvblZhcmlhYmxlSW5pdCgmV2FsU3VtbWFyaXplckN0bC0+c3VtbWFy eV9maWxlX2N2KTsKLQl9CisJLyoKKwkgKiBXZSdyZSBqdXN0IGZpbGxpbmcgaW4gZHVtbXkg dmFsdWVzIGhlcmUgLS0gdGhlIHJlYWwgaW5pdGlhbGl6YXRpb24gd2lsbAorCSAqIGhhcHBl biB3aGVuIEdldE9sZGVzdFVuc3VtbWFyaXplZExTTigpIGlzIGNhbGxlZCBmb3IgdGhlIGZp cnN0IHRpbWUuCisJICovCisJV2FsU3VtbWFyaXplckN0bC0+aW5pdGlhbGl6ZWQgPSBmYWxz ZTsKKwlXYWxTdW1tYXJpemVyQ3RsLT5zdW1tYXJpemVkX3RsaSA9IDA7CisJV2FsU3VtbWFy aXplckN0bC0+c3VtbWFyaXplZF9sc24gPSBJbnZhbGlkWExvZ1JlY1B0cjsKKwlXYWxTdW1t YXJpemVyQ3RsLT5sc25faXNfZXhhY3QgPSBmYWxzZTsKKwlXYWxTdW1tYXJpemVyQ3RsLT5z dW1tYXJpemVyX3BncHJvY25vID0gSU5WQUxJRF9QUk9DX05VTUJFUjsKKwlXYWxTdW1tYXJp emVyQ3RsLT5wZW5kaW5nX2xzbiA9IEludmFsaWRYTG9nUmVjUHRyOworCUNvbmRpdGlvblZh cmlhYmxlSW5pdCgmV2FsU3VtbWFyaXplckN0bC0+c3VtbWFyeV9maWxlX2N2KTsKIH0KIAog LyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNo ZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYwppbmRl eCAwOTk2NDE5ODU1MC4uOWU3NWEzZTA0ZWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvbGF1bmNoZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNh dGlvbi9sb2dpY2FsL2xhdW5jaGVyLmMKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJz dG9yYWdlL2lwYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0 b3JhZ2UvcHJvY2FycmF5LmgiCisjaW5jbHVkZSAic3RvcmFnZS9zdWJzeXN0ZW1zLmgiCiAj aW5jbHVkZSAidGNvcC90Y29wcHJvdC5oIgogI2luY2x1ZGUgInV0aWxzL2J1aWx0aW5zLmgi CiAjaW5jbHVkZSAidXRpbHMvbWVtdXRpbHMuaCIKQEAgLTcxLDYgKzcyLDE0IEBAIHR5cGVk ZWYgc3RydWN0IExvZ2ljYWxSZXBDdHhTdHJ1Y3QKIAogc3RhdGljIExvZ2ljYWxSZXBDdHhT dHJ1Y3QgKkxvZ2ljYWxSZXBDdHg7CiAKK3N0YXRpYyB2b2lkIEFwcGx5TGF1bmNoZXJTaG1l bVJlcXVlc3Qodm9pZCAqYXJnKTsKK3N0YXRpYyB2b2lkIEFwcGx5TGF1bmNoZXJTaG1lbUlu aXQodm9pZCAqYXJnKTsKKworY29uc3QgU2htZW1DYWxsYmFja3MgQXBwbHlMYXVuY2hlclNo bWVtQ2FsbGJhY2tzID0geworCS5yZXF1ZXN0X2ZuID0gQXBwbHlMYXVuY2hlclNobWVtUmVx dWVzdCwKKwkuaW5pdF9mbiA9IEFwcGx5TGF1bmNoZXJTaG1lbUluaXQsCit9OworCiAvKiBh biBlbnRyeSBpbiB0aGUgbGFzdC1zdGFydC10aW1lcyBzaGFyZWQgaGFzaCB0YWJsZSAqLwog dHlwZWRlZiBzdHJ1Y3QgTGF1bmNoZXJMYXN0U3RhcnRUaW1lc0VudHJ5CiB7CkBAIC05NzIs MTEgKzk4MSwxMSBAQCBsb2dpY2FscmVwX3BhX3dvcmtlcl9jb3VudChPaWQgc3ViaWQpCiB9 CiAKIC8qCi0gKiBBcHBseUxhdW5jaGVyU2htZW1TaXplCi0gKgkJQ29tcHV0ZSBzcGFjZSBu ZWVkZWQgZm9yIHJlcGxpY2F0aW9uIGxhdW5jaGVyIHNoYXJlZCBtZW1vcnkKKyAqIEFwcGx5 TGF1bmNoZXJTaG1lbVJlcXVlc3QKKyAqCQlSZWdpc3RlciBzaGFyZWQgbWVtb3J5IHNwYWNl IG5lZWRlZCBmb3IgcmVwbGljYXRpb24gbGF1bmNoZXIKICAqLwotU2l6ZQotQXBwbHlMYXVu Y2hlclNobWVtU2l6ZSh2b2lkKQorc3RhdGljIHZvaWQKK0FwcGx5TGF1bmNoZXJTaG1lbVJl cXVlc3Qodm9pZCAqYXJnKQogewogCVNpemUJCXNpemU7CiAKQEAgLTk4Nyw3ICs5OTYsMTAg QEAgQXBwbHlMYXVuY2hlclNobWVtU2l6ZSh2b2lkKQogCXNpemUgPSBNQVhBTElHTihzaXpl KTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgbXVsX3NpemUobWF4X2xvZ2ljYWxfcmVwbGlj YXRpb25fd29ya2VycywKIAkJCQkJCQkJICAgc2l6ZW9mKExvZ2ljYWxSZXBXb3JrZXIpKSk7 Ci0JcmV0dXJuIHNpemU7CisJU2htZW1SZXF1ZXN0U3RydWN0KC5uYW1lID0gIkxvZ2ljYWwg UmVwbGljYXRpb24gTGF1bmNoZXIgRGF0YSIsCisJCQkJCSAgIC5zaXplID0gc2l6ZSwKKwkJ CQkJICAgLnB0ciA9ICh2b2lkICoqKSAmTG9naWNhbFJlcEN0eCwKKwkJKTsKIH0KIAogLyoK QEAgLTEwMjgsMzUgKzEwNDAsMjMgQEAgQXBwbHlMYXVuY2hlclJlZ2lzdGVyKHZvaWQpCiAK IC8qCiAgKiBBcHBseUxhdW5jaGVyU2htZW1Jbml0Ci0gKgkJQWxsb2NhdGUgYW5kIGluaXRp YWxpemUgcmVwbGljYXRpb24gbGF1bmNoZXIgc2hhcmVkIG1lbW9yeQorICoJCUluaXRpYWxp emUgcmVwbGljYXRpb24gbGF1bmNoZXIgc2hhcmVkIG1lbW9yeQogICovCi12b2lkCi1BcHBs eUxhdW5jaGVyU2htZW1Jbml0KHZvaWQpCitzdGF0aWMgdm9pZAorQXBwbHlMYXVuY2hlclNo bWVtSW5pdCh2b2lkICphcmcpCiB7Ci0JYm9vbAkJZm91bmQ7CisJaW50CQkJc2xvdDsKIAot CUxvZ2ljYWxSZXBDdHggPSAoTG9naWNhbFJlcEN0eFN0cnVjdCAqKQotCQlTaG1lbUluaXRT dHJ1Y3QoIkxvZ2ljYWwgUmVwbGljYXRpb24gTGF1bmNoZXIgRGF0YSIsCi0JCQkJCQlBcHBs eUxhdW5jaGVyU2htZW1TaXplKCksCi0JCQkJCQkmZm91bmQpOworCUxvZ2ljYWxSZXBDdHgt Pmxhc3Rfc3RhcnRfZHNhID0gRFNBX0hBTkRMRV9JTlZBTElEOworCUxvZ2ljYWxSZXBDdHgt Pmxhc3Rfc3RhcnRfZHNoID0gRFNIQVNIX0hBTkRMRV9JTlZBTElEOwogCi0JaWYgKCFmb3Vu ZCkKKwkvKiBJbml0aWFsaXplIG1lbW9yeSBhbmQgc3BpbiBsb2NrcyBmb3IgZWFjaCB3b3Jr ZXIgc2xvdC4gKi8KKwlmb3IgKHNsb3QgPSAwOyBzbG90IDwgbWF4X2xvZ2ljYWxfcmVwbGlj YXRpb25fd29ya2Vyczsgc2xvdCsrKQogCXsKLQkJaW50CQkJc2xvdDsKLQotCQltZW1zZXQo TG9naWNhbFJlcEN0eCwgMCwgQXBwbHlMYXVuY2hlclNobWVtU2l6ZSgpKTsKLQotCQlMb2dp Y2FsUmVwQ3R4LT5sYXN0X3N0YXJ0X2RzYSA9IERTQV9IQU5ETEVfSU5WQUxJRDsKLQkJTG9n aWNhbFJlcEN0eC0+bGFzdF9zdGFydF9kc2ggPSBEU0hBU0hfSEFORExFX0lOVkFMSUQ7CisJ CUxvZ2ljYWxSZXBXb3JrZXIgKndvcmtlciA9ICZMb2dpY2FsUmVwQ3R4LT53b3JrZXJzW3Ns b3RdOwogCi0JCS8qIEluaXRpYWxpemUgbWVtb3J5IGFuZCBzcGluIGxvY2tzIGZvciBlYWNo IHdvcmtlciBzbG90LiAqLwotCQlmb3IgKHNsb3QgPSAwOyBzbG90IDwgbWF4X2xvZ2ljYWxf cmVwbGljYXRpb25fd29ya2Vyczsgc2xvdCsrKQotCQl7Ci0JCQlMb2dpY2FsUmVwV29ya2Vy ICp3b3JrZXIgPSAmTG9naWNhbFJlcEN0eC0+d29ya2Vyc1tzbG90XTsKLQotCQkJbWVtc2V0 KHdvcmtlciwgMCwgc2l6ZW9mKExvZ2ljYWxSZXBXb3JrZXIpKTsKLQkJCVNwaW5Mb2NrSW5p dCgmd29ya2VyLT5yZWxtdXRleCk7Ci0JCX0KKwkJbWVtc2V0KHdvcmtlciwgMCwgc2l6ZW9m KExvZ2ljYWxSZXBXb3JrZXIpKTsKKwkJU3BpbkxvY2tJbml0KCZ3b3JrZXItPnJlbG11dGV4 KTsKIAl9CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvbG9naWNhbGN0bC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9sb2dp Y2FsY3RsLmMKaW5kZXggNGUyOTI5NTEyMDEuLjcyZjY4ZWM1OGVmIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWxjdGwuYworKysgYi9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWxjdGwuYwpAQCAtNzIsNiArNzIs NyBAQAogI2luY2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJv Y2FycmF5LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jc2lnbmFsLmgiCisjaW5jbHVkZSAi c3RvcmFnZS9zdWJzeXN0ZW1zLmgiCiAjaW5jbHVkZSAidXRpbHMvaW5qZWN0aW9uX3BvaW50 LmgiCiAKIC8qCkBAIC05OCw2ICs5OSwxMiBAQCB0eXBlZGVmIHN0cnVjdCBMb2dpY2FsRGVj b2RpbmdDdGxEYXRhCiAKIHN0YXRpYyBMb2dpY2FsRGVjb2RpbmdDdGxEYXRhICpMb2dpY2Fs RGVjb2RpbmdDdGwgPSBOVUxMOwogCitzdGF0aWMgdm9pZCBMb2dpY2FsRGVjb2RpbmdDdGxT aG1lbVJlcXVlc3Qodm9pZCAqYXJnKTsKKworY29uc3QgU2htZW1DYWxsYmFja3MgTG9naWNh bERlY29kaW5nQ3RsU2htZW1DYWxsYmFja3MgPSB7CisJLnJlcXVlc3RfZm4gPSBMb2dpY2Fs RGVjb2RpbmdDdGxTaG1lbVJlcXVlc3QsCit9OworCiAvKgogICogQSBwcm9jZXNzLWxvY2Fs IGNhY2hlIG9mIExvZ2ljYWxEZWNvZGluZ0N0bC0+eGxvZ19sb2dpY2FsX2luZm8uIFRoaXMg aXMKICAqIGluaXRpYWxpemVkIGF0IHByb2Nlc3Mgc3RhcnR1cCwgYW5kIHVwZGF0ZWQgd2hl biBwcm9jZXNzaW5nIHRoZSBwcm9jZXNzCkBAIC0xMjAsMjMgKzEyNywxMyBAQCBzdGF0aWMg dm9pZCB1cGRhdGVfeGxvZ19sb2dpY2FsX2luZm8odm9pZCk7CiBzdGF0aWMgdm9pZCBhYm9y dF9sb2dpY2FsX2RlY29kaW5nX2FjdGl2YXRpb24oaW50IGNvZGUsIERhdHVtIGFyZyk7CiBz dGF0aWMgdm9pZCB3cml0ZV9sb2dpY2FsX2RlY29kaW5nX3N0YXR1c191cGRhdGVfcmVjb3Jk KGJvb2wgc3RhdHVzKTsKIAotU2l6ZQotTG9naWNhbERlY29kaW5nQ3RsU2htZW1TaXplKHZv aWQpCi17Ci0JcmV0dXJuIHNpemVvZihMb2dpY2FsRGVjb2RpbmdDdGxEYXRhKTsKLX0KLQot dm9pZAotTG9naWNhbERlY29kaW5nQ3RsU2htZW1Jbml0KHZvaWQpCitzdGF0aWMgdm9pZAor TG9naWNhbERlY29kaW5nQ3RsU2htZW1SZXF1ZXN0KHZvaWQgKmFyZykKIHsKLQlib29sCQlm b3VuZDsKLQotCUxvZ2ljYWxEZWNvZGluZ0N0bCA9IFNobWVtSW5pdFN0cnVjdCgiTG9naWNh bCBkZWNvZGluZyBjb250cm9sIiwKLQkJCQkJCQkJCQkgTG9naWNhbERlY29kaW5nQ3RsU2ht ZW1TaXplKCksCi0JCQkJCQkJCQkJICZmb3VuZCk7Ci0KLQlpZiAoIWZvdW5kKQotCQlNZW1T ZXQoTG9naWNhbERlY29kaW5nQ3RsLCAwLCBMb2dpY2FsRGVjb2RpbmdDdGxTaG1lbVNpemUo KSk7CisJU2htZW1SZXF1ZXN0U3RydWN0KC5uYW1lID0gIkxvZ2ljYWwgZGVjb2RpbmcgY29u dHJvbCIsCisJCQkJCSAgIC5zaXplID0gc2l6ZW9mKExvZ2ljYWxEZWNvZGluZ0N0bERhdGEp LAorCQkJCQkgICAucHRyID0gKHZvaWQgKiopICZMb2dpY2FsRGVjb2RpbmdDdGwsCisJCSk7 CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2Fs L29yaWdpbi5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9vcmlnaW4uYwpp bmRleCA2NjFkNjhhZDY1My4uMzcyZDc3YzQ3NWUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvb3JpZ2luLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9vcmlnaW4uYwpAQCAtODgsNiArODgsNyBAQAogI2luY2x1ZGUgInN0 b3JhZ2UvZmQuaCIKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgogI2luY2x1ZGUgInN0b3Jh Z2UvbG1nci5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvc3Vic3lzdGVtcy5oIgogI2luY2x1ZGUg InV0aWxzL2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRpbHMvZm1ncm9pZHMuaCIKICNpbmNs dWRlICJ1dGlscy9ndWMuaCIKQEAgLTE3Niw2ICsxNzcsMTYgQEAgUmVwbE9yaWdpblhhY3RT dGF0ZSByZXBsb3JpZ2luX3hhY3Rfc3RhdGUgPSB7CiAgKi8KIHN0YXRpYyBSZXBsaWNhdGlv blN0YXRlICpyZXBsaWNhdGlvbl9zdGF0ZXM7CiAKK3N0YXRpYyB2b2lkIFJlcGxpY2F0aW9u T3JpZ2luU2htZW1SZXF1ZXN0KHZvaWQgKmFyZyk7CitzdGF0aWMgdm9pZCBSZXBsaWNhdGlv bk9yaWdpblNobWVtSW5pdCh2b2lkICphcmcpOworc3RhdGljIHZvaWQgUmVwbGljYXRpb25P cmlnaW5TaG1lbUF0dGFjaCh2b2lkICphcmcpOworCitjb25zdCBTaG1lbUNhbGxiYWNrcyBS ZXBsaWNhdGlvbk9yaWdpblNobWVtQ2FsbGJhY2tzID0geworCS5yZXF1ZXN0X2ZuID0gUmVw bGljYXRpb25PcmlnaW5TaG1lbVJlcXVlc3QsCisJLmluaXRfZm4gPSBSZXBsaWNhdGlvbk9y aWdpblNobWVtSW5pdCwKKwkuYXR0YWNoX2ZuID0gUmVwbGljYXRpb25PcmlnaW5TaG1lbUF0 dGFjaCwKK307CisKIC8qCiAgKiBBY3R1YWwgc2hhcmVkIG1lbW9yeSBibG9jayAocmVwbGlj YXRpb25fc3RhdGVzW10gaXMgbm93IHBhcnQgb2YgdGhpcykuCiAgKi8KQEAgLTUzOSw1MCAr NTUwLDQ4IEBAIHJlcGxvcmlnaW5fYnlfb2lkKFJlcGxPcmlnaW5JZCByb2lkZW50LCBib29s IG1pc3Npbmdfb2ssIGNoYXIgKipyb25hbWUpCiAgKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K ICAqLwogCi1TaXplCi1SZXBsaWNhdGlvbk9yaWdpblNobWVtU2l6ZSh2b2lkKQorc3RhdGlj IHZvaWQKK1JlcGxpY2F0aW9uT3JpZ2luU2htZW1SZXF1ZXN0KHZvaWQgKmFyZykKIHsKIAlT aXplCQlzaXplID0gMDsKIAogCWlmIChtYXhfYWN0aXZlX3JlcGxpY2F0aW9uX29yaWdpbnMg PT0gMCkKLQkJcmV0dXJuIHNpemU7CisJCXJldHVybjsKIAogCXNpemUgPSBhZGRfc2l6ZShz aXplLCBvZmZzZXRvZihSZXBsaWNhdGlvblN0YXRlQ3RsLCBzdGF0ZXMpKTsKLQogCXNpemUg PSBhZGRfc2l6ZShzaXplLAogCQkJCQltdWxfc2l6ZShtYXhfYWN0aXZlX3JlcGxpY2F0aW9u X29yaWdpbnMsIHNpemVvZihSZXBsaWNhdGlvblN0YXRlKSkpOwotCXJldHVybiBzaXplOwor CVNobWVtUmVxdWVzdFN0cnVjdCgubmFtZSA9ICJSZXBsaWNhdGlvbk9yaWdpblN0YXRlIiwK KwkJCQkJICAgLnNpemUgPSBzaXplLAorCQkJCQkgICAucHRyID0gKHZvaWQgKiopICZyZXBs aWNhdGlvbl9zdGF0ZXNfY3RsLAorCQkpOwogfQogCi12b2lkCi1SZXBsaWNhdGlvbk9yaWdp blNobWVtSW5pdCh2b2lkKQorc3RhdGljIHZvaWQKK1JlcGxpY2F0aW9uT3JpZ2luU2htZW1J bml0KHZvaWQgKmFyZykKIHsKLQlib29sCQlmb3VuZDsKLQogCWlmIChtYXhfYWN0aXZlX3Jl cGxpY2F0aW9uX29yaWdpbnMgPT0gMCkKIAkJcmV0dXJuOwogCi0JcmVwbGljYXRpb25fc3Rh dGVzX2N0bCA9IChSZXBsaWNhdGlvblN0YXRlQ3RsICopCi0JCVNobWVtSW5pdFN0cnVjdCgi UmVwbGljYXRpb25PcmlnaW5TdGF0ZSIsCi0JCQkJCQlSZXBsaWNhdGlvbk9yaWdpblNobWVt U2l6ZSgpLAotCQkJCQkJJmZvdW5kKTsKIAlyZXBsaWNhdGlvbl9zdGF0ZXMgPSByZXBsaWNh dGlvbl9zdGF0ZXNfY3RsLT5zdGF0ZXM7CiAKLQlpZiAoIWZvdW5kKQotCXsKLQkJaW50CQkJ aTsKKwlyZXBsaWNhdGlvbl9zdGF0ZXNfY3RsLT50cmFuY2hlX2lkID0gTFdUUkFOQ0hFX1JF UExJQ0FUSU9OX09SSUdJTl9TVEFURTsKIAotCQlNZW1TZXQocmVwbGljYXRpb25fc3RhdGVz X2N0bCwgMCwgUmVwbGljYXRpb25PcmlnaW5TaG1lbVNpemUoKSk7CisJZm9yIChpbnQgaSA9 IDA7IGkgPCBtYXhfYWN0aXZlX3JlcGxpY2F0aW9uX29yaWdpbnM7IGkrKykKKwl7CisJCUxX TG9ja0luaXRpYWxpemUoJnJlcGxpY2F0aW9uX3N0YXRlc1tpXS5sb2NrLAorCQkJCQkJIHJl cGxpY2F0aW9uX3N0YXRlc19jdGwtPnRyYW5jaGVfaWQpOworCQlDb25kaXRpb25WYXJpYWJs ZUluaXQoJnJlcGxpY2F0aW9uX3N0YXRlc1tpXS5vcmlnaW5fY3YpOworCX0KK30KIAotCQly ZXBsaWNhdGlvbl9zdGF0ZXNfY3RsLT50cmFuY2hlX2lkID0gTFdUUkFOQ0hFX1JFUExJQ0FU SU9OX09SSUdJTl9TVEFURTsKK3N0YXRpYyB2b2lkCitSZXBsaWNhdGlvbk9yaWdpblNobWVt QXR0YWNoKHZvaWQgKmFyZykKK3sKKwlpZiAobWF4X2FjdGl2ZV9yZXBsaWNhdGlvbl9vcmln aW5zID09IDApCisJCXJldHVybjsKIAotCQlmb3IgKGkgPSAwOyBpIDwgbWF4X2FjdGl2ZV9y ZXBsaWNhdGlvbl9vcmlnaW5zOyBpKyspCi0JCXsKLQkJCUxXTG9ja0luaXRpYWxpemUoJnJl cGxpY2F0aW9uX3N0YXRlc1tpXS5sb2NrLAotCQkJCQkJCSByZXBsaWNhdGlvbl9zdGF0ZXNf Y3RsLT50cmFuY2hlX2lkKTsKLQkJCUNvbmRpdGlvblZhcmlhYmxlSW5pdCgmcmVwbGljYXRp b25fc3RhdGVzW2ldLm9yaWdpbl9jdik7Ci0JCX0KLQl9CisJcmVwbGljYXRpb25fc3RhdGVz ID0gcmVwbGljYXRpb25fc3RhdGVzX2N0bC0+c3RhdGVzOwogfQogCiAvKiAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2lj YWwvc2xvdHN5bmMuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2xvdHN5 bmMuYwppbmRleCBlNzVkYjY5ZTNmNi4uZDYxNWZmOGE4MWMgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2xvdHN5bmMuYworKysgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3Nsb3RzeW5jLmMKQEAgLTczLDYgKzczLDcgQEAKICNp bmNsdWRlICJzdG9yYWdlL2xtZ3IuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKICNp bmNsdWRlICJzdG9yYWdlL3Byb2NhcnJheS5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvc3Vic3lz dGVtcy5oIgogI2luY2x1ZGUgInRjb3AvdGNvcHByb3QuaCIKICNpbmNsdWRlICJ1dGlscy9i dWlsdGlucy5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCkBAIC0xMTgsNiArMTE5 LDE0IEBAIHR5cGVkZWYgc3RydWN0IFNsb3RTeW5jQ3R4U3RydWN0CiAKIHN0YXRpYyBTbG90 U3luY0N0eFN0cnVjdCAqU2xvdFN5bmNDdHggPSBOVUxMOwogCitzdGF0aWMgdm9pZCBTbG90 U3luY1NobWVtUmVxdWVzdCh2b2lkICphcmcpOworc3RhdGljIHZvaWQgU2xvdFN5bmNTaG1l bUluaXQodm9pZCAqYXJnKTsKKworY29uc3QgU2htZW1DYWxsYmFja3MgU2xvdFN5bmNTaG1l bUNhbGxiYWNrcyA9IHsKKwkucmVxdWVzdF9mbiA9IFNsb3RTeW5jU2htZW1SZXF1ZXN0LAor CS5pbml0X2ZuID0gU2xvdFN5bmNTaG1lbUluaXQsCit9OworCiAvKiBHVUMgdmFyaWFibGUg Ki8KIGJvb2wJCXN5bmNfcmVwbGljYXRpb25fc2xvdHMgPSBmYWxzZTsKIApAQCAtMTgyOCwz MiArMTgzNywyNiBAQCBJc1N5bmNpbmdSZXBsaWNhdGlvblNsb3RzKHZvaWQpCiB9CiAKIC8q Ci0gKiBBbW91bnQgb2Ygc2hhcmVkIG1lbW9yeSByZXF1aXJlZCBmb3Igc2xvdCBzeW5jaHJv bml6YXRpb24uCisgKiBSZWdpc3RlciBzaGFyZWQgbWVtb3J5IHNwYWNlIG5lZWRlZCBmb3Ig c2xvdCBzeW5jaHJvbml6YXRpb24uCiAgKi8KLVNpemUKLVNsb3RTeW5jU2htZW1TaXplKHZv aWQpCitzdGF0aWMgdm9pZAorU2xvdFN5bmNTaG1lbVJlcXVlc3Qodm9pZCAqYXJnKQogewot CXJldHVybiBzaXplb2YoU2xvdFN5bmNDdHhTdHJ1Y3QpOworCVNobWVtUmVxdWVzdFN0cnVj dCgubmFtZSA9ICJTbG90IFN5bmMgRGF0YSIsCisJCQkJCSAgIC5zaXplID0gc2l6ZW9mKFNs b3RTeW5jQ3R4U3RydWN0KSwKKwkJCQkJICAgLnB0ciA9ICh2b2lkICoqKSAmU2xvdFN5bmND dHgsCisJCSk7CiB9CiAKIC8qCi0gKiBBbGxvY2F0ZSBhbmQgaW5pdGlhbGl6ZSB0aGUgc2hh cmVkIG1lbW9yeSBvZiBzbG90IHN5bmNocm9uaXphdGlvbi4KKyAqIEluaXRpYWxpemUgc2hh cmVkIG1lbW9yeSBmb3Igc2xvdCBzeW5jaHJvbml6YXRpb24uCiAgKi8KLXZvaWQKLVNsb3RT eW5jU2htZW1Jbml0KHZvaWQpCitzdGF0aWMgdm9pZAorU2xvdFN5bmNTaG1lbUluaXQodm9p ZCAqYXJnKQogewotCVNpemUJCXNpemUgPSBTbG90U3luY1NobWVtU2l6ZSgpOwotCWJvb2wJ CWZvdW5kOwotCi0JU2xvdFN5bmNDdHggPSAoU2xvdFN5bmNDdHhTdHJ1Y3QgKikKLQkJU2ht ZW1Jbml0U3RydWN0KCJTbG90IFN5bmMgRGF0YSIsIHNpemUsICZmb3VuZCk7Ci0KLQlpZiAo IWZvdW5kKQotCXsKLQkJbWVtc2V0KFNsb3RTeW5jQ3R4LCAwLCBzaXplKTsKLQkJU2xvdFN5 bmNDdHgtPnBpZCA9IEludmFsaWRQaWQ7Ci0JCVNwaW5Mb2NrSW5pdCgmU2xvdFN5bmNDdHgt Pm11dGV4KTsKLQl9CisJbWVtc2V0KFNsb3RTeW5jQ3R4LCAwLCBzaXplb2YoU2xvdFN5bmND dHhTdHJ1Y3QpKTsKKwlTbG90U3luY0N0eC0+cGlkID0gSW52YWxpZFBpZDsKKwlTcGluTG9j a0luaXQoJlNsb3RTeW5jQ3R4LT5tdXRleCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9z bG90LmMKaW5kZXggYTkwOTJmYzIzODIuLjIxYTIxM2EwZWJmIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vc2xvdC5jCkBAIC01NSw2ICs1NSw3IEBACiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIK ICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2NhcnJh eS5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvc3Vic3lzdGVtcy5oIgogI2luY2x1ZGUgInV0aWxz L2J1aWx0aW5zLmgiCiAjaW5jbHVkZSAidXRpbHMvZ3VjX2hvb2tzLmgiCiAjaW5jbHVkZSAi dXRpbHMvaW5qZWN0aW9uX3BvaW50LmgiCkBAIC0xNDUsNiArMTQ2LDE0IEBAIFN0YXRpY0Fz c2VydERlY2wobGVuZ3Rob2YoU2xvdEludmFsaWRhdGlvbkNhdXNlcykgPT0gKFJTX0lOVkFM X01BWF9DQVVTRVMgKyAxKSwKIC8qIENvbnRyb2wgYXJyYXkgZm9yIHJlcGxpY2F0aW9uIHNs b3QgbWFuYWdlbWVudCAqLwogUmVwbGljYXRpb25TbG90Q3RsRGF0YSAqUmVwbGljYXRpb25T bG90Q3RsID0gTlVMTDsKIAorc3RhdGljIHZvaWQgUmVwbGljYXRpb25TbG90c1NobWVtUmVx dWVzdCh2b2lkICphcmcpOworc3RhdGljIHZvaWQgUmVwbGljYXRpb25TbG90c1NobWVtSW5p dCh2b2lkICphcmcpOworCitjb25zdCBTaG1lbUNhbGxiYWNrcyBSZXBsaWNhdGlvblNsb3Rz U2htZW1DYWxsYmFja3MgPSB7CisJLnJlcXVlc3RfZm4gPSBSZXBsaWNhdGlvblNsb3RzU2ht ZW1SZXF1ZXN0LAorCS5pbml0X2ZuID0gUmVwbGljYXRpb25TbG90c1NobWVtSW5pdCwKK307 CisKIC8qIE15IGJhY2tlbmQncyByZXBsaWNhdGlvbiBzbG90IGluIHRoZSBzaGFyZWQgbWVt b3J5IGFycmF5ICovCiBSZXBsaWNhdGlvblNsb3QgKk15UmVwbGljYXRpb25TbG90ID0gTlVM TDsKIApAQCAtMTgzLDU2ICsxOTIsNDEgQEAgc3RhdGljIHZvaWQgQ3JlYXRlU2xvdE9uRGlz ayhSZXBsaWNhdGlvblNsb3QgKnNsb3QpOwogc3RhdGljIHZvaWQgU2F2ZVNsb3RUb1BhdGgo UmVwbGljYXRpb25TbG90ICpzbG90LCBjb25zdCBjaGFyICpkaXIsIGludCBlbGV2ZWwpOwog CiAvKgotICogUmVwb3J0IHNoYXJlZC1tZW1vcnkgc3BhY2UgbmVlZGVkIGJ5IFJlcGxpY2F0 aW9uU2xvdHNTaG1lbUluaXQuCisgKiBSZWdpc3RlciBzaGFyZWQgbWVtb3J5IHNwYWNlIG5l ZWRlZCBmb3IgcmVwbGljYXRpb24gc2xvdHMuCiAgKi8KLVNpemUKLVJlcGxpY2F0aW9uU2xv dHNTaG1lbVNpemUodm9pZCkKK3N0YXRpYyB2b2lkCitSZXBsaWNhdGlvblNsb3RzU2htZW1S ZXF1ZXN0KHZvaWQgKmFyZykKIHsKLQlTaXplCQlzaXplID0gMDsKKwlTaXplCQlzaXplOwog CiAJaWYgKG1heF9yZXBsaWNhdGlvbl9zbG90cyA9PSAwKQotCQlyZXR1cm4gc2l6ZTsKKwkJ cmV0dXJuOwogCiAJc2l6ZSA9IG9mZnNldG9mKFJlcGxpY2F0aW9uU2xvdEN0bERhdGEsIHJl cGxpY2F0aW9uX3Nsb3RzKTsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwKIAkJCQkJbXVsX3Np emUobWF4X3JlcGxpY2F0aW9uX3Nsb3RzLCBzaXplb2YoUmVwbGljYXRpb25TbG90KSkpOwot Ci0JcmV0dXJuIHNpemU7CisJU2htZW1SZXF1ZXN0U3RydWN0KC5uYW1lID0gIlJlcGxpY2F0 aW9uU2xvdCBDdGwiLAorCQkJCQkgICAuc2l6ZSA9IHNpemUsCisJCQkJCSAgIC5wdHIgPSAo dm9pZCAqKikgJlJlcGxpY2F0aW9uU2xvdEN0bCwKKwkJKTsKIH0KIAogLyoKLSAqIEFsbG9j YXRlIGFuZCBpbml0aWFsaXplIHNoYXJlZCBtZW1vcnkgZm9yIHJlcGxpY2F0aW9uIHNsb3Rz LgorICogSW5pdGlhbGl6ZSBzaGFyZWQgbWVtb3J5IGZvciByZXBsaWNhdGlvbiBzbG90cy4K ICAqLwotdm9pZAotUmVwbGljYXRpb25TbG90c1NobWVtSW5pdCh2b2lkKQorc3RhdGljIHZv aWQKK1JlcGxpY2F0aW9uU2xvdHNTaG1lbUluaXQodm9pZCAqYXJnKQogewotCWJvb2wJCWZv dW5kOwotCi0JaWYgKG1heF9yZXBsaWNhdGlvbl9zbG90cyA9PSAwKQotCQlyZXR1cm47Ci0K LQlSZXBsaWNhdGlvblNsb3RDdGwgPSAoUmVwbGljYXRpb25TbG90Q3RsRGF0YSAqKQotCQlT aG1lbUluaXRTdHJ1Y3QoIlJlcGxpY2F0aW9uU2xvdCBDdGwiLCBSZXBsaWNhdGlvblNsb3Rz U2htZW1TaXplKCksCi0JCQkJCQkmZm91bmQpOwotCi0JaWYgKCFmb3VuZCkKKwlmb3IgKGlu dCBpID0gMDsgaSA8IG1heF9yZXBsaWNhdGlvbl9zbG90czsgaSsrKQogCXsKLQkJaW50CQkJ aTsKKwkJUmVwbGljYXRpb25TbG90ICpzbG90ID0gJlJlcGxpY2F0aW9uU2xvdEN0bC0+cmVw bGljYXRpb25fc2xvdHNbaV07CiAKLQkJLyogRmlyc3QgdGltZSB0aHJvdWdoLCBzbyBpbml0 aWFsaXplICovCi0JCU1lbVNldChSZXBsaWNhdGlvblNsb3RDdGwsIDAsIFJlcGxpY2F0aW9u U2xvdHNTaG1lbVNpemUoKSk7Ci0KLQkJZm9yIChpID0gMDsgaSA8IG1heF9yZXBsaWNhdGlv bl9zbG90czsgaSsrKQotCQl7Ci0JCQlSZXBsaWNhdGlvblNsb3QgKnNsb3QgPSAmUmVwbGlj YXRpb25TbG90Q3RsLT5yZXBsaWNhdGlvbl9zbG90c1tpXTsKLQotCQkJLyogZXZlcnl0aGlu ZyBlbHNlIGlzIHplcm9lZCBieSB0aGUgbWVtc2V0IGFib3ZlICovCi0JCQlzbG90LT5hY3Rp dmVfcHJvYyA9IElOVkFMSURfUFJPQ19OVU1CRVI7Ci0JCQlTcGluTG9ja0luaXQoJnNsb3Qt Pm11dGV4KTsKLQkJCUxXTG9ja0luaXRpYWxpemUoJnNsb3QtPmlvX2luX3Byb2dyZXNzX2xv Y2ssCi0JCQkJCQkJIExXVFJBTkNIRV9SRVBMSUNBVElPTl9TTE9UX0lPKTsKLQkJCUNvbmRp dGlvblZhcmlhYmxlSW5pdCgmc2xvdC0+YWN0aXZlX2N2KTsKLQkJfQorCQkvKiBldmVyeXRo aW5nIGVsc2UgaXMgemVyb2VkIGJ5IHRoZSBtZW1zZXQgYWJvdmUgKi8KKwkJc2xvdC0+YWN0 aXZlX3Byb2MgPSBJTlZBTElEX1BST0NfTlVNQkVSOworCQlTcGluTG9ja0luaXQoJnNsb3Qt Pm11dGV4KTsKKwkJTFdMb2NrSW5pdGlhbGl6ZSgmc2xvdC0+aW9faW5fcHJvZ3Jlc3NfbG9j aywKKwkJCQkJCSBMV1RSQU5DSEVfUkVQTElDQVRJT05fU0xPVF9JTyk7CisJCUNvbmRpdGlv blZhcmlhYmxlSW5pdCgmc2xvdC0+YWN0aXZlX2N2KTsKIAl9CiB9CiAKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyZnVuY3MuYyBiL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyZnVuY3MuYwppbmRleCA0NWI5ZDRmMDlmMi4u NGUwM2U3MjE4NzIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHJl Y2VpdmVyZnVuY3MuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZl cmZ1bmNzLmMKQEAgLTI5LDQ3ICsyOSw0NiBAQAogI2luY2x1ZGUgInN0b3JhZ2UvcG1zaWdu YWwuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2MuaCIKICNpbmNsdWRlICJzdG9yYWdlL3No bWVtLmgiCisjaW5jbHVkZSAic3RvcmFnZS9zdWJzeXN0ZW1zLmgiCiAjaW5jbHVkZSAidXRp bHMvdGltZXN0YW1wLmgiCiAjaW5jbHVkZSAidXRpbHMvd2FpdF9ldmVudC5oIgogCiBXYWxS Y3ZEYXRhICpXYWxSY3YgPSBOVUxMOwogCitzdGF0aWMgdm9pZCBXYWxSY3ZTaG1lbVJlcXVl c3Qodm9pZCAqYXJnKTsKK3N0YXRpYyB2b2lkIFdhbFJjdlNobWVtSW5pdCh2b2lkICphcmcp OworCitjb25zdCBTaG1lbUNhbGxiYWNrcyBXYWxSY3ZTaG1lbUNhbGxiYWNrcyA9IHsKKwku cmVxdWVzdF9mbiA9IFdhbFJjdlNobWVtUmVxdWVzdCwKKwkuaW5pdF9mbiA9IFdhbFJjdlNo bWVtSW5pdCwKK307CisKIC8qCiAgKiBIb3cgbG9uZyB0byB3YWl0IGZvciB3YWxyZWNlaXZl ciB0byBzdGFydCB1cCBhZnRlciByZXF1ZXN0aW5nCiAgKiBwb3N0bWFzdGVyIHRvIGxhdW5j aCBpdC4gSW4gc2Vjb25kcy4KICAqLwogI2RlZmluZSBXQUxSQ1ZfU1RBUlRVUF9USU1FT1VU IDEwCiAKLS8qIFJlcG9ydCBzaGFyZWQgbWVtb3J5IHNwYWNlIG5lZWRlZCBieSBXYWxSY3ZT aG1lbUluaXQgKi8KLVNpemUKLVdhbFJjdlNobWVtU2l6ZSh2b2lkKQorLyogUmVnaXN0ZXIg c2hhcmVkIG1lbW9yeSBzcGFjZSBuZWVkZWQgYnkgd2FscmVjZWl2ZXIgKi8KK3N0YXRpYyB2 b2lkCitXYWxSY3ZTaG1lbVJlcXVlc3Qodm9pZCAqYXJnKQogewotCVNpemUJCXNpemUgPSAw OwotCi0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIHNpemVvZihXYWxSY3ZEYXRhKSk7Ci0KLQly ZXR1cm4gc2l6ZTsKKwlTaG1lbVJlcXVlc3RTdHJ1Y3QoLm5hbWUgPSAiV2FsIFJlY2VpdmVy IEN0bCIsCisJCQkJCSAgIC5zaXplID0gc2l6ZW9mKFdhbFJjdkRhdGEpLAorCQkJCQkgICAu cHRyID0gKHZvaWQgKiopICZXYWxSY3YsCisJCSk7CiB9CiAKLS8qIEFsbG9jYXRlIGFuZCBp bml0aWFsaXplIHdhbHJlY2VpdmVyLXJlbGF0ZWQgc2hhcmVkIG1lbW9yeSAqLwotdm9pZAot V2FsUmN2U2htZW1Jbml0KHZvaWQpCisvKiBJbml0aWFsaXplIHdhbHJlY2VpdmVyLXJlbGF0 ZWQgc2hhcmVkIG1lbW9yeSAqLworc3RhdGljIHZvaWQKK1dhbFJjdlNobWVtSW5pdCh2b2lk ICphcmcpCiB7Ci0JYm9vbAkJZm91bmQ7Ci0KLQlXYWxSY3YgPSAoV2FsUmN2RGF0YSAqKQot CQlTaG1lbUluaXRTdHJ1Y3QoIldhbCBSZWNlaXZlciBDdGwiLCBXYWxSY3ZTaG1lbVNpemUo KSwgJmZvdW5kKTsKLQotCWlmICghZm91bmQpCi0JewotCQkvKiBGaXJzdCB0aW1lIHRocm91 Z2gsIHNvIGluaXRpYWxpemUgKi8KLQkJTWVtU2V0KFdhbFJjdiwgMCwgV2FsUmN2U2htZW1T aXplKCkpOwotCQlXYWxSY3YtPndhbFJjdlN0YXRlID0gV0FMUkNWX1NUT1BQRUQ7Ci0JCUNv bmRpdGlvblZhcmlhYmxlSW5pdCgmV2FsUmN2LT53YWxSY3ZTdG9wcGVkQ1YpOwotCQlTcGlu TG9ja0luaXQoJldhbFJjdi0+bXV0ZXgpOwotCQlwZ19hdG9taWNfaW5pdF91NjQoJldhbFJj di0+d3JpdHRlblVwdG8sIDApOwotCQlXYWxSY3YtPnByb2NubyA9IElOVkFMSURfUFJPQ19O VU1CRVI7Ci0JfQorCU1lbVNldChXYWxSY3YsIDAsIHNpemVvZihXYWxSY3ZEYXRhKSk7CisJ V2FsUmN2LT53YWxSY3ZTdGF0ZSA9IFdBTFJDVl9TVE9QUEVEOworCUNvbmRpdGlvblZhcmlh YmxlSW5pdCgmV2FsUmN2LT53YWxSY3ZTdG9wcGVkQ1YpOworCVNwaW5Mb2NrSW5pdCgmV2Fs UmN2LT5tdXRleCk7CisJcGdfYXRvbWljX2luaXRfdTY0KCZXYWxSY3YtPndyaXR0ZW5VcHRv LCAwKTsKKwlXYWxSY3YtPnByb2NubyA9IElOVkFMSURfUFJPQ19OVU1CRVI7CiB9CiAKIC8q IElzIHdhbHJlY2VpdmVyIHJ1bm5pbmcgKG9yIHN0YXJ0aW5nIHVwKT8gKi8KZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5jIGIvc3JjL2JhY2tlbmQv cmVwbGljYXRpb24vd2Fsc2VuZGVyLmMKaW5kZXggMmJiM2YzNGRjNmQuLmVjMzk5NDJiZmMx IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYworKysg Yi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYwpAQCAtODYsNiArODYsNyBA QAogI2luY2x1ZGUgInN0b3JhZ2UvcG1zaWduYWwuaCIKICNpbmNsdWRlICJzdG9yYWdlL3By b2MuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2NhcnJheS5oIgorI2luY2x1ZGUgInN0b3Jh Z2Uvc3Vic3lzdGVtcy5oIgogI2luY2x1ZGUgInRjb3AvZGVzdC5oIgogI2luY2x1ZGUgInRj b3AvdGNvcHByb3QuaCIKICNpbmNsdWRlICJ1dGlscy9hY2wuaCIKQEAgLTExNyw2ICsxMTgs MTQgQEAKIC8qIEFycmF5IG9mIFdhbFNuZHMgaW4gc2hhcmVkIG1lbW9yeSAqLwogV2FsU25k Q3RsRGF0YSAqV2FsU25kQ3RsID0gTlVMTDsKIAorc3RhdGljIHZvaWQgV2FsU25kU2htZW1S ZXF1ZXN0KHZvaWQgKmFyZyk7CitzdGF0aWMgdm9pZCBXYWxTbmRTaG1lbUluaXQodm9pZCAq YXJnKTsKKworY29uc3QgU2htZW1DYWxsYmFja3MgV2FsU25kU2htZW1DYWxsYmFja3MgPSB7 CisJLnJlcXVlc3RfZm4gPSBXYWxTbmRTaG1lbVJlcXVlc3QsCisJLmluaXRfZm4gPSBXYWxT bmRTaG1lbUluaXQsCit9OworCiAvKiBNeSBzbG90IGluIHRoZSBzaGFyZWQgbWVtb3J5IGFy cmF5ICovCiBXYWxTbmQJICAgKk15V2FsU25kID0gTlVMTDsKIApAQCAtMzc2NSw0NyArMzc3 NCwzNyBAQCBXYWxTbmRTaWduYWxzKHZvaWQpCiAJcHFzaWduYWwoU0lHQ0hMRCwgU0lHX0RG TCk7CiB9CiAKLS8qIFJlcG9ydCBzaGFyZWQtbWVtb3J5IHNwYWNlIG5lZWRlZCBieSBXYWxT bmRTaG1lbUluaXQgKi8KLVNpemUKLVdhbFNuZFNobWVtU2l6ZSh2b2lkKQorLyogUmVnaXN0 ZXIgc2hhcmVkLW1lbW9yeSBzcGFjZSBuZWVkZWQgYnkgd2Fsc2VuZGVyICovCitzdGF0aWMg dm9pZAorV2FsU25kU2htZW1SZXF1ZXN0KHZvaWQgKmFyZykKIHsKLQlTaXplCQlzaXplID0g MDsKKwlTaXplCQlzaXplOwogCiAJc2l6ZSA9IG9mZnNldG9mKFdhbFNuZEN0bERhdGEsIHdh bHNuZHMpOwogCXNpemUgPSBhZGRfc2l6ZShzaXplLCBtdWxfc2l6ZShtYXhfd2FsX3NlbmRl cnMsIHNpemVvZihXYWxTbmQpKSk7Ci0KLQlyZXR1cm4gc2l6ZTsKKwlTaG1lbVJlcXVlc3RT dHJ1Y3QoLm5hbWUgPSAiV2FsIFNlbmRlciBDdGwiLAorCQkJCQkgICAuc2l6ZSA9IHNpemUs CisJCQkJCSAgIC5wdHIgPSAodm9pZCAqKikgJldhbFNuZEN0bCwKKwkJKTsKIH0KIAotLyog QWxsb2NhdGUgYW5kIGluaXRpYWxpemUgd2Fsc2VuZGVyLXJlbGF0ZWQgc2hhcmVkIG1lbW9y eSAqLwotdm9pZAotV2FsU25kU2htZW1Jbml0KHZvaWQpCisvKiBJbml0aWFsaXplIHdhbHNl bmRlci1yZWxhdGVkIHNoYXJlZCBtZW1vcnkgKi8KK3N0YXRpYyB2b2lkCitXYWxTbmRTaG1l bUluaXQodm9pZCAqYXJnKQogewotCWJvb2wJCWZvdW5kOwotCWludAkJCWk7CisJZm9yIChp bnQgaSA9IDA7IGkgPCBOVU1fU1lOQ19SRVBfV0FJVF9NT0RFOyBpKyspCisJCWRsaXN0X2lu aXQoJihXYWxTbmRDdGwtPlN5bmNSZXBRdWV1ZVtpXSkpOwogCi0JV2FsU25kQ3RsID0gKFdh bFNuZEN0bERhdGEgKikKLQkJU2htZW1Jbml0U3RydWN0KCJXYWwgU2VuZGVyIEN0bCIsIFdh bFNuZFNobWVtU2l6ZSgpLCAmZm91bmQpOwotCi0JaWYgKCFmb3VuZCkKKwlmb3IgKGludCBp ID0gMDsgaSA8IG1heF93YWxfc2VuZGVyczsgaSsrKQogCXsKLQkJLyogRmlyc3QgdGltZSB0 aHJvdWdoLCBzbyBpbml0aWFsaXplICovCi0JCU1lbVNldChXYWxTbmRDdGwsIDAsIFdhbFNu ZFNobWVtU2l6ZSgpKTsKLQotCQlmb3IgKGkgPSAwOyBpIDwgTlVNX1NZTkNfUkVQX1dBSVRf TU9ERTsgaSsrKQotCQkJZGxpc3RfaW5pdCgmKFdhbFNuZEN0bC0+U3luY1JlcFF1ZXVlW2ld KSk7Ci0KLQkJZm9yIChpID0gMDsgaSA8IG1heF93YWxfc2VuZGVyczsgaSsrKQotCQl7Ci0J CQlXYWxTbmQJICAgKndhbHNuZCA9ICZXYWxTbmRDdGwtPndhbHNuZHNbaV07Ci0KLQkJCVNw aW5Mb2NrSW5pdCgmd2Fsc25kLT5tdXRleCk7Ci0JCX0KKwkJV2FsU25kCSAgICp3YWxzbmQg PSAmV2FsU25kQ3RsLT53YWxzbmRzW2ldOwogCi0JCUNvbmRpdGlvblZhcmlhYmxlSW5pdCgm V2FsU25kQ3RsLT53YWxfZmx1c2hfY3YpOwotCQlDb25kaXRpb25WYXJpYWJsZUluaXQoJldh bFNuZEN0bC0+d2FsX3JlcGxheV9jdik7Ci0JCUNvbmRpdGlvblZhcmlhYmxlSW5pdCgmV2Fs U25kQ3RsLT53YWxfY29uZmlybV9yY3ZfY3YpOworCQlTcGluTG9ja0luaXQoJndhbHNuZC0+ bXV0ZXgpOwogCX0KKworCUNvbmRpdGlvblZhcmlhYmxlSW5pdCgmV2FsU25kQ3RsLT53YWxf Zmx1c2hfY3YpOworCUNvbmRpdGlvblZhcmlhYmxlSW5pdCgmV2FsU25kQ3RsLT53YWxfcmVw bGF5X2N2KTsKKwlDb25kaXRpb25WYXJpYWJsZUluaXQoJldhbFNuZEN0bC0+d2FsX2NvbmZp cm1fcmN2X2N2KTsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv aXBjL2lwY2kuYyBiL3NyYy9iYWNrZW5kL3N0b3JhZ2UvaXBjL2lwY2kuYwppbmRleCBmNjRj MWQ1OWZhMy4uYmY2YjgxZTYyMWIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3N0b3JhZ2Uv aXBjL2lwY2kuYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2lwYy9pcGNpLmMKQEAgLTE0 LDQxICsxNCwxNiBAQAogICovCiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAotI2luY2x1ZGUg ImFjY2Vzcy9jbG9nLmgiCi0jaW5jbHVkZSAiYWNjZXNzL2NvbW1pdF90cy5oIgotI2luY2x1 ZGUgImFjY2Vzcy9tdWx0aXhhY3QuaCIKLSNpbmNsdWRlICJhY2Nlc3MvbmJ0cmVlLmgiCi0j aW5jbHVkZSAiYWNjZXNzL3N1YnRyYW5zLmgiCi0jaW5jbHVkZSAiYWNjZXNzL3N5bmNzY2Fu LmgiCi0jaW5jbHVkZSAiYWNjZXNzL3R3b3BoYXNlLmgiCi0jaW5jbHVkZSAiYWNjZXNzL3hs b2dwcmVmZXRjaGVyLmgiCi0jaW5jbHVkZSAiYWNjZXNzL3hsb2dyZWNvdmVyeS5oIgotI2lu Y2x1ZGUgImFjY2Vzcy94bG9nd2FpdC5oIgotI2luY2x1ZGUgImNvbW1hbmRzL2FzeW5jLmgi CiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCi0jaW5jbHVk ZSAicG9zdG1hc3Rlci9hdXRvdmFjdXVtLmgiCi0jaW5jbHVkZSAicG9zdG1hc3Rlci9iZ3dv cmtlcl9pbnRlcm5hbHMuaCIKLSNpbmNsdWRlICJwb3N0bWFzdGVyL2Jnd3JpdGVyLmgiCi0j aW5jbHVkZSAicG9zdG1hc3Rlci9kYXRhY2hlY2tzdW1fc3RhdGUuaCIKLSNpbmNsdWRlICJw b3N0bWFzdGVyL3dhbHN1bW1hcml6ZXIuaCIKLSNpbmNsdWRlICJyZXBsaWNhdGlvbi9sb2dp Y2FsbGF1bmNoZXIuaCIKLSNpbmNsdWRlICJyZXBsaWNhdGlvbi9vcmlnaW4uaCIKLSNpbmNs dWRlICJyZXBsaWNhdGlvbi9zbG90LmgiCi0jaW5jbHVkZSAicmVwbGljYXRpb24vc2xvdHN5 bmMuaCIKLSNpbmNsdWRlICJyZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oIgotI2luY2x1ZGUg InJlcGxpY2F0aW9uL3dhbHNlbmRlci5oIgotI2luY2x1ZGUgInN0b3JhZ2UvYWlvX3N1YnN5 cy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvZHNtLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMu aCIKKyNpbmNsdWRlICJzdG9yYWdlL2xvY2suaCIKICNpbmNsdWRlICJzdG9yYWdlL3BnX3No bWVtLmgiCi0jaW5jbHVkZSAic3RvcmFnZS9wcmVkaWNhdGUuaCIKICNpbmNsdWRlICJzdG9y YWdlL3Byb2MuaCIKICNpbmNsdWRlICJzdG9yYWdlL3NobWVtX2ludGVybmFsLmgiCiAjaW5j bHVkZSAic3RvcmFnZS9zdWJzeXN0ZW1zLmgiCiAjaW5jbHVkZSAidXRpbHMvZ3VjLmgiCi0j aW5jbHVkZSAidXRpbHMvaW5qZWN0aW9uX3BvaW50LmgiCi0jaW5jbHVkZSAidXRpbHMvd2Fp dF9ldmVudC5oIgogCiAvKiBHVUNzICovCiBpbnQJCQlzaGFyZWRfbWVtb3J5X3R5cGUgPSBE RUZBVUxUX1NIQVJFRF9NRU1PUllfVFlQRTsKQEAgLTU3LDggKzMyLDYgQEAgc2htZW1fc3Rh cnR1cF9ob29rX3R5cGUgc2htZW1fc3RhcnR1cF9ob29rID0gTlVMTDsKIAogc3RhdGljIFNp emUgdG90YWxfYWRkaW5fcmVxdWVzdCA9IDA7CiAKLXN0YXRpYyB2b2lkIENyZWF0ZU9yQXR0 YWNoU2htZW1TdHJ1Y3RzKHZvaWQpOwotCiAvKgogICogUmVxdWVzdEFkZGluU2htZW1TcGFj ZQogICoJCVJlcXVlc3QgdGhhdCBleHRyYSBzaG1lbSBzcGFjZSBiZSBhbGxvY2F0ZWQgZm9y IHVzZSBieQpAQCAtOTcsMzMgKzcwLDYgQEAgQ2FsY3VsYXRlU2htZW1TaXplKHZvaWQpCiAJ c2l6ZSA9IDEwMDAwMDsKIAlzaXplID0gYWRkX3NpemUoc2l6ZSwgU2htZW1HZXRSZXF1ZXN0 ZWRTaXplKCkpOwogCi0JLyogbGVnYWN5IHN1YnN5c3RlbXMgKi8KLQlzaXplID0gYWRkX3Np emUoc2l6ZSwgTG9ja01hbmFnZXJTaG1lbVNpemUoKSk7Ci0Jc2l6ZSA9IGFkZF9zaXplKHNp emUsIFhMb2dQcmVmZXRjaFNobWVtU2l6ZSgpKTsKLQlzaXplID0gYWRkX3NpemUoc2l6ZSwg WExPR1NobWVtU2l6ZSgpKTsKLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgWExvZ1JlY292ZXJ5 U2htZW1TaXplKCkpOwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBUd29QaGFzZVNobWVtU2l6 ZSgpKTsKLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgQmFja2dyb3VuZFdvcmtlclNobWVtU2l6 ZSgpKTsKLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgQmFja2VuZFN0YXR1c1NobWVtU2l6ZSgp KTsKLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgQ2hlY2twb2ludGVyU2htZW1TaXplKCkpOwot CXNpemUgPSBhZGRfc2l6ZShzaXplLCBBdXRvVmFjdXVtU2htZW1TaXplKCkpOwotCXNpemUg PSBhZGRfc2l6ZShzaXplLCBSZXBsaWNhdGlvblNsb3RzU2htZW1TaXplKCkpOwotCXNpemUg PSBhZGRfc2l6ZShzaXplLCBSZXBsaWNhdGlvbk9yaWdpblNobWVtU2l6ZSgpKTsKLQlzaXpl ID0gYWRkX3NpemUoc2l6ZSwgV2FsU25kU2htZW1TaXplKCkpOwotCXNpemUgPSBhZGRfc2l6 ZShzaXplLCBXYWxSY3ZTaG1lbVNpemUoKSk7Ci0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIFdh bFN1bW1hcml6ZXJTaG1lbVNpemUoKSk7Ci0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIFBnQXJj aFNobWVtU2l6ZSgpKTsKLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgQXBwbHlMYXVuY2hlclNo bWVtU2l6ZSgpKTsKLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgQlRyZWVTaG1lbVNpemUoKSk7 Ci0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIFN5bmNTY2FuU2htZW1TaXplKCkpOwotCXNpemUg PSBhZGRfc2l6ZShzaXplLCBTdGF0c1NobWVtU2l6ZSgpKTsKLQlzaXplID0gYWRkX3NpemUo c2l6ZSwgV2FpdEV2ZW50Q3VzdG9tU2htZW1TaXplKCkpOwotCXNpemUgPSBhZGRfc2l6ZShz aXplLCBJbmplY3Rpb25Qb2ludFNobWVtU2l6ZSgpKTsKLQlzaXplID0gYWRkX3NpemUoc2l6 ZSwgU2xvdFN5bmNTaG1lbVNpemUoKSk7Ci0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIFdhaXRM U05TaG1lbVNpemUoKSk7Ci0Jc2l6ZSA9IGFkZF9zaXplKHNpemUsIExvZ2ljYWxEZWNvZGlu Z0N0bFNobWVtU2l6ZSgpKTsKLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgRGF0YUNoZWNrc3Vt c1NobWVtU2l6ZSgpKTsKLQogCS8qIGluY2x1ZGUgYWRkaXRpb25hbCByZXF1ZXN0ZWQgc2ht ZW0gZnJvbSBwcmVsb2FkIGxpYnJhcmllcyAqLwogCXNpemUgPSBhZGRfc2l6ZShzaXplLCB0 b3RhbF9hZGRpbl9yZXF1ZXN0KTsKIApAQCAtMTU3LDcgKzEwMyw2IEBAIEF0dGFjaFNoYXJl ZE1lbW9yeVN0cnVjdHModm9pZCkKIAogCS8qIEVzdGFibGlzaCBwb2ludGVycyB0byBhbGwg c2hhcmVkIG1lbW9yeSBhcmVhcyBpbiB0aGlzIGJhY2tlbmQgKi8KIAlTaG1lbUF0dGFjaFJl cXVlc3RlZCgpOwotCUNyZWF0ZU9yQXR0YWNoU2htZW1TdHJ1Y3RzKCk7CiAKIAkvKgogCSAq IE5vdyBnaXZlIGxvYWRhYmxlIG1vZHVsZXMgYSBjaGFuY2UgdG8gc2V0IHVwIHRoZWlyIHNo bWVtIGFsbG9jYXRpb25zCkBAIC0yMDQsOSArMTQ5LDYgQEAgQ3JlYXRlU2hhcmVkTWVtb3J5 QW5kU2VtYXBob3Jlcyh2b2lkKQogCS8qIEluaXRpYWxpemUgYWxsIHNobWVtIGFyZWFzICov CiAJU2htZW1Jbml0UmVxdWVzdGVkKCk7CiAKLQkvKiBJbml0aWFsaXplIGxlZ2FjeSBzdWJz eXN0ZW1zICovCi0JQ3JlYXRlT3JBdHRhY2hTaG1lbVN0cnVjdHMoKTsKLQogCS8qIEluaXRp YWxpemUgZHluYW1pYyBzaGFyZWQgbWVtb3J5IGZhY2lsaXRpZXMuICovCiAJZHNtX3Bvc3Rt YXN0ZXJfc3RhcnR1cChzaGltKTsKIApAQCAtMjM3LDcwICsxNzksNiBAQCBSZWdpc3RlckJ1 aWx0aW5TaG1lbUNhbGxiYWNrcyh2b2lkKQogI3VuZGVmIFBHX1NITUVNX1NVQlNZU1RFTQog fQogCi0vKgotICogSW5pdGlhbGl6ZSB2YXJpb3VzIHN1YnN5c3RlbXMsIHNldHRpbmcgdXAg dGhlaXIgZGF0YSBzdHJ1Y3R1cmVzIGluCi0gKiBzaGFyZWQgbWVtb3J5LgotICoKLSAqIFRo aXMgaXMgY2FsbGVkIGJ5IHRoZSBwb3N0bWFzdGVyIG9yIGJ5IGEgc3RhbmRhbG9uZSBiYWNr ZW5kLgotICogSXQgaXMgYWxzbyBjYWxsZWQgYnkgYSBiYWNrZW5kIGZvcmtlZCBmcm9tIHRo ZSBwb3N0bWFzdGVyIGluIHRoZQotICogRVhFQ19CQUNLRU5EIGNhc2UuICBJbiB0aGUgbGF0 dGVyIGNhc2UsIHRoZSBzaGFyZWQgbWVtb3J5IHNlZ21lbnQKLSAqIGFscmVhZHkgZXhpc3Rz IGFuZCBoYXMgYmVlbiBwaHlzaWNhbGx5IGF0dGFjaGVkIHRvLCBidXQgd2UgaGF2ZSB0bwot ICogaW5pdGlhbGl6ZSBwb2ludGVycyBpbiBsb2NhbCBtZW1vcnkgdGhhdCByZWZlcmVuY2Ug dGhlIHNoYXJlZCBzdHJ1Y3R1cmVzLAotICogYmVjYXVzZSB3ZSBkaWRuJ3QgaW5oZXJpdCB0 aGUgY29ycmVjdCBwb2ludGVyIHZhbHVlcyBmcm9tIHRoZSBwb3N0bWFzdGVyCi0gKiBhcyB3 ZSBkbyBpbiB0aGUgZm9yaygpIHNjZW5hcmlvLiAgVGhlIGVhc2llc3Qgd2F5IHRvIGRvIHRo YXQgaXMgdG8gcnVuCi0gKiB0aHJvdWdoIHRoZSBzYW1lIGNvZGUgYXMgYmVmb3JlLiAgKE5v dGUgdGhhdCB0aGUgY2FsbGVkIHJvdXRpbmVzIG1vc3RseQotICogY2hlY2sgSXNVbmRlclBv c3RtYXN0ZXIsIHJhdGhlciB0aGFuIEVYRUNfQkFDS0VORCwgdG8gZGV0ZWN0IHRoaXMgY2Fz ZS4KLSAqIFRoaXMgaXMgYSBiaXQgY29kZS13YXN0ZWZ1bCBhbmQgY291bGQgYmUgY2xlYW5l ZCB1cC4pCi0gKi8KLXN0YXRpYyB2b2lkCi1DcmVhdGVPckF0dGFjaFNobWVtU3RydWN0cyh2 b2lkKQotewotCS8qCi0JICogU2V0IHVwIHhsb2csIGNsb2csIGFuZCBidWZmZXJzCi0JICov Ci0JWExPR1NobWVtSW5pdCgpOwotCVhMb2dQcmVmZXRjaFNobWVtSW5pdCgpOwotCVhMb2dS ZWNvdmVyeVNobWVtSW5pdCgpOwotCi0JLyoKLQkgKiBTZXQgdXAgbG9jayBtYW5hZ2VyCi0J ICovCi0JTG9ja01hbmFnZXJTaG1lbUluaXQoKTsKLQotCS8qCi0JICogU2V0IHVwIHByb2Nl c3MgdGFibGUKLQkgKi8KLQlCYWNrZW5kU3RhdHVzU2htZW1Jbml0KCk7Ci0JVHdvUGhhc2VT aG1lbUluaXQoKTsKLQlCYWNrZ3JvdW5kV29ya2VyU2htZW1Jbml0KCk7Ci0KLQkvKgotCSAq IFNldCB1cCBpbnRlcnByb2Nlc3Mgc2lnbmFsaW5nIG1lY2hhbmlzbXMKLQkgKi8KLQlDaGVj a3BvaW50ZXJTaG1lbUluaXQoKTsKLQlBdXRvVmFjdXVtU2htZW1Jbml0KCk7Ci0JUmVwbGlj YXRpb25TbG90c1NobWVtSW5pdCgpOwotCVJlcGxpY2F0aW9uT3JpZ2luU2htZW1Jbml0KCk7 Ci0JV2FsU25kU2htZW1Jbml0KCk7Ci0JV2FsUmN2U2htZW1Jbml0KCk7Ci0JV2FsU3VtbWFy aXplclNobWVtSW5pdCgpOwotCVBnQXJjaFNobWVtSW5pdCgpOwotCUFwcGx5TGF1bmNoZXJT aG1lbUluaXQoKTsKLQlTbG90U3luY1NobWVtSW5pdCgpOwotCURhdGFDaGVja3N1bXNTaG1l bUluaXQoKTsKLQotCS8qCi0JICogU2V0IHVwIG90aGVyIG1vZHVsZXMgdGhhdCBuZWVkIHNv bWUgc2hhcmVkIG1lbW9yeSBzcGFjZQotCSAqLwotCUJUcmVlU2htZW1Jbml0KCk7Ci0JU3lu Y1NjYW5TaG1lbUluaXQoKTsKLQlTdGF0c1NobWVtSW5pdCgpOwotCVdhaXRFdmVudEN1c3Rv bVNobWVtSW5pdCgpOwotCUluamVjdGlvblBvaW50U2htZW1Jbml0KCk7Ci0JV2FpdExTTlNo bWVtSW5pdCgpOwotCUxvZ2ljYWxEZWNvZGluZ0N0bFNobWVtSW5pdCgpOwotfQotCiAvKgog ICogSW5pdGlhbGl6ZVNobWVtR1VDcwogICoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3N0 b3JhZ2UvbG1nci9sb2NrLmMgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG9jay5jCmlu ZGV4IDc5OGM0NTNhYjM4Li5jMjIxZmU5Njg4OSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv c3RvcmFnZS9sbWdyL2xvY2suYworKysgYi9zcmMvYmFja2VuZC9zdG9yYWdlL2xtZ3IvbG9j ay5jCkBAIC00Myw4ICs0MywxMCBAQAogI2luY2x1ZGUgInN0b3JhZ2UvbG1nci5oIgogI2lu Y2x1ZGUgInN0b3JhZ2UvcHJvYy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY2FycmF5Lmgi CisjaW5jbHVkZSAic3RvcmFnZS9zaG1lbS5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc3Bpbi5o IgogI2luY2x1ZGUgInN0b3JhZ2Uvc3RhbmRieS5oIgorI2luY2x1ZGUgInN0b3JhZ2Uvc3Vi c3lzdGVtcy5oIgogI2luY2x1ZGUgInV0aWxzL21lbXV0aWxzLmgiCiAjaW5jbHVkZSAidXRp bHMvcHNfc3RhdHVzLmgiCiAjaW5jbHVkZSAidXRpbHMvcmVzb3duZXIuaCIKQEAgLTMxMiw2 ICszMTQsMTQgQEAgdHlwZWRlZiBzdHJ1Y3QKIAogc3RhdGljIHZvbGF0aWxlIEZhc3RQYXRo U3Ryb25nUmVsYXRpb25Mb2NrRGF0YSAqRmFzdFBhdGhTdHJvbmdSZWxhdGlvbkxvY2tzOwog CitzdGF0aWMgdm9pZCBMb2NrTWFuYWdlclNobWVtUmVxdWVzdCh2b2lkICphcmcpOworc3Rh dGljIHZvaWQgTG9ja01hbmFnZXJTaG1lbUluaXQodm9pZCAqYXJnKTsKKworY29uc3QgU2ht ZW1DYWxsYmFja3MgTG9ja01hbmFnZXJTaG1lbUNhbGxiYWNrcyA9IHsKKwkucmVxdWVzdF9m biA9IExvY2tNYW5hZ2VyU2htZW1SZXF1ZXN0LAorCS5pbml0X2ZuID0gTG9ja01hbmFnZXJT aG1lbUluaXQsCit9OworCiAKIC8qCiAgKiBQb2ludGVycyB0byBoYXNoIHRhYmxlcyBjb250 YWluaW5nIGxvY2sgc3RhdGUKQEAgLTQzMiwyMSArNDQyLDE1IEBAIHN0YXRpYyB2b2lkIEdl dFNpbmdsZVByb2NCbG9ja2VyU3RhdHVzRGF0YShQR1BST0MgKmJsb2NrZWRfcHJvYywKIAog CiAvKgotICogSW5pdGlhbGl6ZSB0aGUgbG9jayBtYW5hZ2VyJ3Mgc2htZW0gZGF0YSBzdHJ1 Y3R1cmVzLgorICogUmVnaXN0ZXIgdGhlIGxvY2sgbWFuYWdlcidzIHNobWVtIGRhdGEgc3Ry dWN0dXJlcy4KICAqCi0gKiBUaGlzIGlzIGNhbGxlZCBmcm9tIENyZWF0ZVNoYXJlZE1lbW9y eUFuZFNlbWFwaG9yZXMoKSwgd2hpY2ggc2VlIGZvciBtb3JlCi0gKiBjb21tZW50cy4gIElu IHRoZSBub3JtYWwgcG9zdG1hc3RlciBjYXNlLCB0aGUgc2hhcmVkIGhhc2ggdGFibGVzIGFy ZQotICogY3JlYXRlZCBoZXJlLCBhbmQgYmFja2VuZHMgaW5oZXJpdCBwb2ludGVycyB0byB0 aGVtIHZpYSBmb3JrKCkuICBJbiB0aGUKLSAqIEVYRUNfQkFDS0VORCBjYXNlLCBlYWNoIGJh Y2tlbmQgcmUtZXhlY3V0ZXMgdGhpcyBjb2RlIHRvIG9idGFpbiBwb2ludGVycyB0bwotICog dGhlIGFscmVhZHkgZXhpc3Rpbmcgc2hhcmVkIGhhc2ggdGFibGVzLiAgSW4gZWl0aGVyIGNh c2UsIGVhY2ggYmFja2VuZCBtdXN0Ci0gKiBhbHNvIGNhbGwgSW5pdExvY2tNYW5hZ2VyQWNj ZXNzKCkgdG8gY3JlYXRlIHRoZSBsb2NhbGxvY2sgaGFzaCB0YWJsZS4KKyAqIEluIGFkZGl0 aW9uIHRvIHRoaXMsIGVhY2ggYmFja2VuZCBtdXN0IGFsc28gY2FsbCBJbml0TG9ja01hbmFn ZXJBY2Nlc3MoKSB0bworICogY3JlYXRlIHRoZSBsb2NhbGxvY2sgaGFzaCB0YWJsZS4KICAq Lwotdm9pZAotTG9ja01hbmFnZXJTaG1lbUluaXQodm9pZCkKK3N0YXRpYyB2b2lkCitMb2Nr TWFuYWdlclNobWVtUmVxdWVzdCh2b2lkICphcmcpCiB7Ci0JSEFTSENUTAkJaW5mbzsKIAlp bnQ2NAkJbWF4X3RhYmxlX3NpemU7Ci0JYm9vbAkJZm91bmQ7CiAKIAkvKgogCSAqIENvbXB1 dGUgc2l6ZXMgZm9yIGxvY2sgaGFzaHRhYmxlcy4gIE5vdGUgdGhhdCB0aGVzZSBjYWxjdWxh dGlvbnMgbXVzdApAQCAtNDU1LDQ1ICs0NTksNDEgQEAgTG9ja01hbmFnZXJTaG1lbUluaXQo dm9pZCkKIAltYXhfdGFibGVfc2l6ZSA9IE5MT0NLRU5UUygpOwogCiAJLyoKLQkgKiBBbGxv Y2F0ZSBoYXNoIHRhYmxlIGZvciBMT0NLIHN0cnVjdHMuICBUaGlzIHN0b3JlcyBwZXItbG9j a2VkLW9iamVjdAorCSAqIEhhc2ggdGFibGUgZm9yIExPQ0sgc3RydWN0cy4gIFRoaXMgc3Rv cmVzIHBlci1sb2NrZWQtb2JqZWN0CiAJICogaW5mb3JtYXRpb24uCiAJICovCi0JaW5mby5r ZXlzaXplID0gc2l6ZW9mKExPQ0tUQUcpOwotCWluZm8uZW50cnlzaXplID0gc2l6ZW9mKExP Q0spOwotCWluZm8ubnVtX3BhcnRpdGlvbnMgPSBOVU1fTE9DS19QQVJUSVRJT05TOwotCi0J TG9ja01ldGhvZExvY2tIYXNoID0gU2htZW1Jbml0SGFzaCgiTE9DSyBoYXNoIiwKLQkJCQkJ CQkJCSAgIG1heF90YWJsZV9zaXplLAotCQkJCQkJCQkJICAgJmluZm8sCi0JCQkJCQkJCQkg ICBIQVNIX0VMRU0gfCBIQVNIX0JMT0JTIHwKLQkJCQkJCQkJCSAgIEhBU0hfUEFSVElUSU9O IHwgSEFTSF9GSVhFRF9TSVpFKTsKKwlTaG1lbVJlcXVlc3RIYXNoKC5uYW1lID0gIkxPQ0sg aGFzaCIsCisJCQkJCSAubmVsZW1zID0gbWF4X3RhYmxlX3NpemUsCisJCQkJCSAucHRyID0g JkxvY2tNZXRob2RMb2NrSGFzaCwKKwkJCQkJIC5oYXNoX2luZm8ua2V5c2l6ZSA9IHNpemVv ZihMT0NLVEFHKSwKKwkJCQkJIC5oYXNoX2luZm8uZW50cnlzaXplID0gc2l6ZW9mKExPQ0sp LAorCQkJCQkgLmhhc2hfaW5mby5udW1fcGFydGl0aW9ucyA9IE5VTV9MT0NLX1BBUlRJVElP TlMsCisJCQkJCSAuaGFzaF9mbGFncyA9IEhBU0hfRUxFTSB8IEhBU0hfQkxPQlMgfCBIQVNI X1BBUlRJVElPTiwKKwkJKTsKIAogCS8qIEFzc3VtZSBhbiBhdmVyYWdlIG9mIDIgaG9sZGVy cyBwZXIgbG9jayAqLwogCW1heF90YWJsZV9zaXplICo9IDI7CiAKLQkvKgotCSAqIEFsbG9j YXRlIGhhc2ggdGFibGUgZm9yIFBST0NMT0NLIHN0cnVjdHMuICBUaGlzIHN0b3JlcwotCSAq IHBlci1sb2NrLXBlci1ob2xkZXIgaW5mb3JtYXRpb24uCi0JICovCi0JaW5mby5rZXlzaXpl ID0gc2l6ZW9mKFBST0NMT0NLVEFHKTsKLQlpbmZvLmVudHJ5c2l6ZSA9IHNpemVvZihQUk9D TE9DSyk7Ci0JaW5mby5oYXNoID0gcHJvY2xvY2tfaGFzaDsKLQlpbmZvLm51bV9wYXJ0aXRp b25zID0gTlVNX0xPQ0tfUEFSVElUSU9OUzsKLQotCUxvY2tNZXRob2RQcm9jTG9ja0hhc2gg PSBTaG1lbUluaXRIYXNoKCJQUk9DTE9DSyBoYXNoIiwKLQkJCQkJCQkJCQkgICBtYXhfdGFi bGVfc2l6ZSwKLQkJCQkJCQkJCQkgICAmaW5mbywKLQkJCQkJCQkJCQkgICBIQVNIX0VMRU0g fCBIQVNIX0ZVTkNUSU9OIHwKLQkJCQkJCQkJCQkgICBIQVNIX0ZJWEVEX1NJWkUgfCBIQVNI X1BBUlRJVElPTik7CisJU2htZW1SZXF1ZXN0SGFzaCgubmFtZSA9ICJQUk9DTE9DSyBoYXNo IiwKKwkJCQkJIC5uZWxlbXMgPSBtYXhfdGFibGVfc2l6ZSwKKwkJCQkJIC5wdHIgPSAmTG9j a01ldGhvZFByb2NMb2NrSGFzaCwKKwkJCQkJIC5oYXNoX2luZm8ua2V5c2l6ZSA9IHNpemVv ZihQUk9DTE9DS1RBRyksCisJCQkJCSAuaGFzaF9pbmZvLmVudHJ5c2l6ZSA9IHNpemVvZihQ Uk9DTE9DSyksCisJCQkJCSAuaGFzaF9pbmZvLmhhc2ggPSBwcm9jbG9ja19oYXNoLAorCQkJ CQkgLmhhc2hfaW5mby5udW1fcGFydGl0aW9ucyA9IE5VTV9MT0NLX1BBUlRJVElPTlMsCisJ CQkJCSAuaGFzaF9mbGFncyA9IEhBU0hfRUxFTSB8IEhBU0hfRlVOQ1RJT04gfCBIQVNIX1BB UlRJVElPTiwKKwkJKTsKKworCVNobWVtUmVxdWVzdFN0cnVjdCgubmFtZSA9ICJGYXN0IFBh dGggU3Ryb25nIFJlbGF0aW9uIExvY2sgRGF0YSIsCisJCQkJCSAgIC5zaXplID0gc2l6ZW9m KEZhc3RQYXRoU3Ryb25nUmVsYXRpb25Mb2NrRGF0YSksCisJCQkJCSAgIC5wdHIgPSAodm9p ZCAqKikgKHZvaWQgKikgJkZhc3RQYXRoU3Ryb25nUmVsYXRpb25Mb2NrcywKKwkJKTsKK30K IAotCS8qCi0JICogQWxsb2NhdGUgZmFzdC1wYXRoIHN0cnVjdHVyZXMuCi0JICovCi0JRmFz dFBhdGhTdHJvbmdSZWxhdGlvbkxvY2tzID0KLQkJU2htZW1Jbml0U3RydWN0KCJGYXN0IFBh dGggU3Ryb25nIFJlbGF0aW9uIExvY2sgRGF0YSIsCi0JCQkJCQlzaXplb2YoRmFzdFBhdGhT dHJvbmdSZWxhdGlvbkxvY2tEYXRhKSwgJmZvdW5kKTsKLQlpZiAoIWZvdW5kKQotCQlTcGlu TG9ja0luaXQoJkZhc3RQYXRoU3Ryb25nUmVsYXRpb25Mb2Nrcy0+bXV0ZXgpOworc3RhdGlj IHZvaWQKK0xvY2tNYW5hZ2VyU2htZW1Jbml0KHZvaWQgKmFyZykKK3sKKwlTcGluTG9ja0lu aXQoJkZhc3RQYXRoU3Ryb25nUmVsYXRpb25Mb2Nrcy0+bXV0ZXgpOwogfQogCiAvKgpAQCAt Mzc1OCwyOSArMzc1OCw2IEBAIFBvc3RQcmVwYXJlX0xvY2tzKEZ1bGxUcmFuc2FjdGlvbklk IGZ4aWQpCiB9CiAKIAotLyoKLSAqIEVzdGltYXRlIHNoYXJlZC1tZW1vcnkgc3BhY2UgdXNl ZCBmb3IgbG9jayB0YWJsZXMKLSAqLwotU2l6ZQotTG9ja01hbmFnZXJTaG1lbVNpemUodm9p ZCkKLXsKLQlTaXplCQlzaXplID0gMDsKLQlsb25nCQltYXhfdGFibGVfc2l6ZTsKLQotCS8q IGxvY2sgaGFzaCB0YWJsZSAqLwotCW1heF90YWJsZV9zaXplID0gTkxPQ0tFTlRTKCk7Ci0J c2l6ZSA9IGFkZF9zaXplKHNpemUsIGhhc2hfZXN0aW1hdGVfc2l6ZShtYXhfdGFibGVfc2l6 ZSwgc2l6ZW9mKExPQ0spKSk7Ci0KLQkvKiBwcm9jbG9jayBoYXNoIHRhYmxlICovCi0JbWF4 X3RhYmxlX3NpemUgKj0gMjsKLQlzaXplID0gYWRkX3NpemUoc2l6ZSwgaGFzaF9lc3RpbWF0 ZV9zaXplKG1heF90YWJsZV9zaXplLCBzaXplb2YoUFJPQ0xPQ0spKSk7Ci0KLQkvKiBmYXN0 LXBhdGggc3RydWN0dXJlcyAqLwotCXNpemUgPSBhZGRfc2l6ZShzaXplLCBzaXplb2YoRmFz dFBhdGhTdHJvbmdSZWxhdGlvbkxvY2tEYXRhKSk7Ci0KLQlyZXR1cm4gc2l6ZTsKLX0KLQog LyoKICAqIEdldExvY2tTdGF0dXNEYXRhIC0gUmV0dXJuIGEgc3VtbWFyeSBvZiB0aGUgbG9j ayBtYW5hZ2VyJ3MgaW50ZXJuYWwKICAqIHN0YXR1cywgZm9yIHVzZSBpbiBhIHVzZXItbGV2 ZWwgcmVwb3J0aW5nIGZ1bmN0aW9uLgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMv YWN0aXZpdHkvYmFja2VuZF9zdGF0dXMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5 L2JhY2tlbmRfc3RhdHVzLmMKaW5kZXggY2QwODcxMjk0NjkuLmQ2ODVmYzVjZDg3IDEwMDY0 NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS9iYWNrZW5kX3N0YXR1cy5jCisr KyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L2JhY2tlbmRfc3RhdHVzLmMKQEAgLTE5 LDYgKzE5LDggQEAKICNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgogI2luY2x1ZGUgInN0b3Jh Z2UvcHJvYy5oIgkJLyogZm9yIE15UHJvYyAqLwogI2luY2x1ZGUgInN0b3JhZ2UvcHJvY2Fy cmF5LmgiCisjaW5jbHVkZSAic3RvcmFnZS9zaG1lbS5oIgorI2luY2x1ZGUgInN0b3JhZ2Uv c3Vic3lzdGVtcy5oIgogI2luY2x1ZGUgInV0aWxzL2FzY2lpLmgiCiAjaW5jbHVkZSAidXRp bHMvZ3VjLmgiCQkJLyogZm9yIGFwcGxpY2F0aW9uX25hbWUgKi8KICNpbmNsdWRlICJ1dGls cy9tZW11dGlscy5oIgpAQCAtNzMsMTMzICs3NSw5NyBAQCBzdGF0aWMgdm9pZCBwZ3N0YXRf YmVzaHV0ZG93bl9ob29rKGludCBjb2RlLCBEYXR1bSBhcmcpOwogc3RhdGljIHZvaWQgcGdz dGF0X3JlYWRfY3VycmVudF9zdGF0dXModm9pZCk7CiBzdGF0aWMgdm9pZCBwZ3N0YXRfc2V0 dXBfYmFja2VuZF9zdGF0dXNfY29udGV4dCh2b2lkKTsKIAorc3RhdGljIHZvaWQgQmFja2Vu ZFN0YXR1c1NobWVtUmVxdWVzdCh2b2lkICphcmcpOworc3RhdGljIHZvaWQgQmFja2VuZFN0 YXR1c1NobWVtSW5pdCh2b2lkICphcmcpOworc3RhdGljIHZvaWQgQmFja2VuZFN0YXR1c1No bWVtQXR0YWNoKHZvaWQgKmFyZyk7CisKK2NvbnN0IFNobWVtQ2FsbGJhY2tzIEJhY2tlbmRT dGF0dXNTaG1lbUNhbGxiYWNrcyA9IHsKKwkucmVxdWVzdF9mbiA9IEJhY2tlbmRTdGF0dXNT aG1lbVJlcXVlc3QsCisJLmluaXRfZm4gPSBCYWNrZW5kU3RhdHVzU2htZW1Jbml0LAorCS5h dHRhY2hfZm4gPSBCYWNrZW5kU3RhdHVzU2htZW1BdHRhY2gsCit9OwogCiAvKgotICogUmVw b3J0IHNoYXJlZC1tZW1vcnkgc3BhY2UgbmVlZGVkIGJ5IEJhY2tlbmRTdGF0dXNTaG1lbUlu aXQuCisgKiBSZWdpc3RlciBzaGFyZWQgbWVtb3J5IG5lZWRzIGZvciBiYWNrZW5kIHN0YXR1 cyByZXBvcnRpbmcuCiAgKi8KLVNpemUKLUJhY2tlbmRTdGF0dXNTaG1lbVNpemUodm9pZCkK K3N0YXRpYyB2b2lkCitCYWNrZW5kU3RhdHVzU2htZW1SZXF1ZXN0KHZvaWQgKmFyZykKIHsK LQlTaXplCQlzaXplOwotCi0JLyogQmFja2VuZFN0YXR1c0FycmF5OiAqLwotCXNpemUgPSBt dWxfc2l6ZShzaXplb2YoUGdCYWNrZW5kU3RhdHVzKSwgTnVtQmFja2VuZFN0YXRTbG90cyk7 Ci0JLyogQmFja2VuZEFwcG5hbWVCdWZmZXI6ICovCi0Jc2l6ZSA9IGFkZF9zaXplKHNpemUs Ci0JCQkJCW11bF9zaXplKE5BTUVEQVRBTEVOLCBOdW1CYWNrZW5kU3RhdFNsb3RzKSk7Ci0J LyogQmFja2VuZENsaWVudEhvc3RuYW1lQnVmZmVyOiAqLwotCXNpemUgPSBhZGRfc2l6ZShz aXplLAotCQkJCQltdWxfc2l6ZShOQU1FREFUQUxFTiwgTnVtQmFja2VuZFN0YXRTbG90cykp OwotCS8qIEJhY2tlbmRBY3Rpdml0eUJ1ZmZlcjogKi8KLQlzaXplID0gYWRkX3NpemUoc2l6 ZSwKLQkJCQkJbXVsX3NpemUocGdzdGF0X3RyYWNrX2FjdGl2aXR5X3F1ZXJ5X3NpemUsIE51 bUJhY2tlbmRTdGF0U2xvdHMpKTsKKwlTaG1lbVJlcXVlc3RTdHJ1Y3QoLm5hbWUgPSAiQmFj a2VuZCBTdGF0dXMgQXJyYXkiLAorCQkJCQkgICAuc2l6ZSA9IG11bF9zaXplKHNpemVvZihQ Z0JhY2tlbmRTdGF0dXMpLCBOdW1CYWNrZW5kU3RhdFNsb3RzKSwKKwkJCQkJICAgLnB0ciA9 ICh2b2lkICoqKSAmQmFja2VuZFN0YXR1c0FycmF5LAorCQkpOworCisJU2htZW1SZXF1ZXN0 U3RydWN0KC5uYW1lID0gIkJhY2tlbmQgQXBwbGljYXRpb24gTmFtZSBCdWZmZXIiLAorCQkJ CQkgICAuc2l6ZSA9IG11bF9zaXplKE5BTUVEQVRBTEVOLCBOdW1CYWNrZW5kU3RhdFNsb3Rz KSwKKwkJCQkJICAgLnB0ciA9ICh2b2lkICoqKSAmQmFja2VuZEFwcG5hbWVCdWZmZXIsCisJ CSk7CisKKwlTaG1lbVJlcXVlc3RTdHJ1Y3QoLm5hbWUgPSAiQmFja2VuZCBDbGllbnQgSG9z dCBOYW1lIEJ1ZmZlciIsCisJCQkJCSAgIC5zaXplID0gbXVsX3NpemUoTkFNRURBVEFMRU4s IE51bUJhY2tlbmRTdGF0U2xvdHMpLAorCQkJCQkgICAucHRyID0gKHZvaWQgKiopICZCYWNr ZW5kQ2xpZW50SG9zdG5hbWVCdWZmZXIsCisJCSk7CisKKwlCYWNrZW5kQWN0aXZpdHlCdWZm ZXJTaXplID0gbXVsX3NpemUocGdzdGF0X3RyYWNrX2FjdGl2aXR5X3F1ZXJ5X3NpemUsCisJ CQkJCQkJCQkJIE51bUJhY2tlbmRTdGF0U2xvdHMpOworCVNobWVtUmVxdWVzdFN0cnVjdCgu bmFtZSA9ICJCYWNrZW5kIEFjdGl2aXR5IEJ1ZmZlciIsCisJCQkJCSAgIC5zaXplID0gQmFj a2VuZEFjdGl2aXR5QnVmZmVyU2l6ZSwKKwkJCQkJICAgLnB0ciA9ICh2b2lkICoqKSAmQmFj a2VuZEFjdGl2aXR5QnVmZmVyCisJCSk7CisKICNpZmRlZiBVU0VfU1NMCi0JLyogQmFja2Vu ZFNzbFN0YXR1c0J1ZmZlcjogKi8KLQlzaXplID0gYWRkX3NpemUoc2l6ZSwKLQkJCQkJbXVs X3NpemUoc2l6ZW9mKFBnQmFja2VuZFNTTFN0YXR1cyksIE51bUJhY2tlbmRTdGF0U2xvdHMp KTsKKwlTaG1lbVJlcXVlc3RTdHJ1Y3QoLm5hbWUgPSAiQmFja2VuZCBTU0wgU3RhdHVzIEJ1 ZmZlciIsCisJCQkJCSAgIC5zaXplID0gbXVsX3NpemUoc2l6ZW9mKFBnQmFja2VuZFNTTFN0 YXR1cyksIE51bUJhY2tlbmRTdGF0U2xvdHMpLAorCQkJCQkgICAucHRyID0gKHZvaWQgKiop ICZCYWNrZW5kU3NsU3RhdHVzQnVmZmVyLAorCQkpOwogI2VuZGlmCisKICNpZmRlZiBFTkFC TEVfR1NTCi0JLyogQmFja2VuZEdzc1N0YXR1c0J1ZmZlcjogKi8KLQlzaXplID0gYWRkX3Np emUoc2l6ZSwKLQkJCQkJbXVsX3NpemUoc2l6ZW9mKFBnQmFja2VuZEdTU1N0YXR1cyksIE51 bUJhY2tlbmRTdGF0U2xvdHMpKTsKKwlTaG1lbVJlcXVlc3RTdHJ1Y3QoLm5hbWUgPSAiQmFj a2VuZCBHU1MgU3RhdHVzIEJ1ZmZlciIsCisJCQkJCSAgIC5zaXplID0gbXVsX3NpemUoc2l6 ZW9mKFBnQmFja2VuZEdTU1N0YXR1cyksIE51bUJhY2tlbmRTdGF0U2xvdHMpLAorCQkJCQkg ICAucHRyID0gKHZvaWQgKiopICZCYWNrZW5kR3NzU3RhdHVzQnVmZmVyLAorCQkpOwogI2Vu ZGlmCi0JcmV0dXJuIHNpemU7CiB9CiAKIC8qCiAgKiBJbml0aWFsaXplIHRoZSBzaGFyZWQg c3RhdHVzIGFycmF5IGFuZCBzZXZlcmFsIHN0cmluZyBidWZmZXJzCiAgKiBkdXJpbmcgcG9z dG1hc3RlciBzdGFydHVwLgogICovCi12b2lkCi1CYWNrZW5kU3RhdHVzU2htZW1Jbml0KHZv aWQpCitzdGF0aWMgdm9pZAorQmFja2VuZFN0YXR1c1NobWVtSW5pdCh2b2lkICphcmcpCiB7 Ci0JU2l6ZQkJc2l6ZTsKLQlib29sCQlmb3VuZDsKIAlpbnQJCQlpOwogCWNoYXIJICAgKmJ1 ZmZlcjsKIAotCS8qIENyZWF0ZSBvciBhdHRhY2ggdG8gdGhlIHNoYXJlZCBhcnJheSAqLwot CXNpemUgPSBtdWxfc2l6ZShzaXplb2YoUGdCYWNrZW5kU3RhdHVzKSwgTnVtQmFja2VuZFN0 YXRTbG90cyk7Ci0JQmFja2VuZFN0YXR1c0FycmF5ID0gKFBnQmFja2VuZFN0YXR1cyAqKQot CQlTaG1lbUluaXRTdHJ1Y3QoIkJhY2tlbmQgU3RhdHVzIEFycmF5Iiwgc2l6ZSwgJmZvdW5k KTsKLQotCWlmICghZm91bmQpCisJLyogSW5pdGlhbGl6ZSBzdF9hcHBuYW1lIHBvaW50ZXJz LiAqLworCWJ1ZmZlciA9IEJhY2tlbmRBcHBuYW1lQnVmZmVyOworCWZvciAoaSA9IDA7IGkg PCBOdW1CYWNrZW5kU3RhdFNsb3RzOyBpKyspCiAJewotCQkvKgotCQkgKiBXZSdyZSB0aGUg Zmlyc3QgLSBpbml0aWFsaXplLgotCQkgKi8KLQkJTWVtU2V0KEJhY2tlbmRTdGF0dXNBcnJh eSwgMCwgc2l6ZSk7Ci0JfQotCi0JLyogQ3JlYXRlIG9yIGF0dGFjaCB0byB0aGUgc2hhcmVk IGFwcG5hbWUgYnVmZmVyICovCi0Jc2l6ZSA9IG11bF9zaXplKE5BTUVEQVRBTEVOLCBOdW1C YWNrZW5kU3RhdFNsb3RzKTsKLQlCYWNrZW5kQXBwbmFtZUJ1ZmZlciA9IChjaGFyICopCi0J CVNobWVtSW5pdFN0cnVjdCgiQmFja2VuZCBBcHBsaWNhdGlvbiBOYW1lIEJ1ZmZlciIsIHNp emUsICZmb3VuZCk7Ci0KLQlpZiAoIWZvdW5kKQotCXsKLQkJTWVtU2V0KEJhY2tlbmRBcHBu YW1lQnVmZmVyLCAwLCBzaXplKTsKLQotCQkvKiBJbml0aWFsaXplIHN0X2FwcG5hbWUgcG9p bnRlcnMuICovCi0JCWJ1ZmZlciA9IEJhY2tlbmRBcHBuYW1lQnVmZmVyOwotCQlmb3IgKGkg PSAwOyBpIDwgTnVtQmFja2VuZFN0YXRTbG90czsgaSsrKQotCQl7Ci0JCQlCYWNrZW5kU3Rh dHVzQXJyYXlbaV0uc3RfYXBwbmFtZSA9IGJ1ZmZlcjsKLQkJCWJ1ZmZlciArPSBOQU1FREFU QUxFTjsKLQkJfQorCQlCYWNrZW5kU3RhdHVzQXJyYXlbaV0uc3RfYXBwbmFtZSA9IGJ1ZmZl cjsKKwkJYnVmZmVyICs9IE5BTUVEQVRBTEVOOwogCX0KIAotCS8qIENyZWF0ZSBvciBhdHRh Y2ggdG8gdGhlIHNoYXJlZCBjbGllbnQgaG9zdG5hbWUgYnVmZmVyICovCi0Jc2l6ZSA9IG11 bF9zaXplKE5BTUVEQVRBTEVOLCBOdW1CYWNrZW5kU3RhdFNsb3RzKTsKLQlCYWNrZW5kQ2xp ZW50SG9zdG5hbWVCdWZmZXIgPSAoY2hhciAqKQotCQlTaG1lbUluaXRTdHJ1Y3QoIkJhY2tl bmQgQ2xpZW50IEhvc3QgTmFtZSBCdWZmZXIiLCBzaXplLCAmZm91bmQpOwotCi0JaWYgKCFm b3VuZCkKKwkvKiBJbml0aWFsaXplIHN0X2NsaWVudGhvc3RuYW1lIHBvaW50ZXJzLiAqLwor CWJ1ZmZlciA9IEJhY2tlbmRDbGllbnRIb3N0bmFtZUJ1ZmZlcjsKKwlmb3IgKGkgPSAwOyBp IDwgTnVtQmFja2VuZFN0YXRTbG90czsgaSsrKQogCXsKLQkJTWVtU2V0KEJhY2tlbmRDbGll bnRIb3N0bmFtZUJ1ZmZlciwgMCwgc2l6ZSk7Ci0KLQkJLyogSW5pdGlhbGl6ZSBzdF9jbGll bnRob3N0bmFtZSBwb2ludGVycy4gKi8KLQkJYnVmZmVyID0gQmFja2VuZENsaWVudEhvc3Ru YW1lQnVmZmVyOwotCQlmb3IgKGkgPSAwOyBpIDwgTnVtQmFja2VuZFN0YXRTbG90czsgaSsr KQotCQl7Ci0JCQlCYWNrZW5kU3RhdHVzQXJyYXlbaV0uc3RfY2xpZW50aG9zdG5hbWUgPSBi dWZmZXI7Ci0JCQlidWZmZXIgKz0gTkFNRURBVEFMRU47Ci0JCX0KKwkJQmFja2VuZFN0YXR1 c0FycmF5W2ldLnN0X2NsaWVudGhvc3RuYW1lID0gYnVmZmVyOworCQlidWZmZXIgKz0gTkFN RURBVEFMRU47CiAJfQogCi0JLyogQ3JlYXRlIG9yIGF0dGFjaCB0byB0aGUgc2hhcmVkIGFj dGl2aXR5IGJ1ZmZlciAqLwotCUJhY2tlbmRBY3Rpdml0eUJ1ZmZlclNpemUgPSBtdWxfc2l6 ZShwZ3N0YXRfdHJhY2tfYWN0aXZpdHlfcXVlcnlfc2l6ZSwKLQkJCQkJCQkJCQkgTnVtQmFj a2VuZFN0YXRTbG90cyk7Ci0JQmFja2VuZEFjdGl2aXR5QnVmZmVyID0gKGNoYXIgKikKLQkJ U2htZW1Jbml0U3RydWN0KCJCYWNrZW5kIEFjdGl2aXR5IEJ1ZmZlciIsCi0JCQkJCQlCYWNr ZW5kQWN0aXZpdHlCdWZmZXJTaXplLAotCQkJCQkJJmZvdW5kKTsKLQotCWlmICghZm91bmQp CisJLyogSW5pdGlhbGl6ZSBzdF9hY3Rpdml0eSBwb2ludGVycy4gKi8KKwlidWZmZXIgPSBC YWNrZW5kQWN0aXZpdHlCdWZmZXI7CisJZm9yIChpID0gMDsgaSA8IE51bUJhY2tlbmRTdGF0 U2xvdHM7IGkrKykKIAl7Ci0JCU1lbVNldChCYWNrZW5kQWN0aXZpdHlCdWZmZXIsIDAsIEJh Y2tlbmRBY3Rpdml0eUJ1ZmZlclNpemUpOwotCi0JCS8qIEluaXRpYWxpemUgc3RfYWN0aXZp dHkgcG9pbnRlcnMuICovCi0JCWJ1ZmZlciA9IEJhY2tlbmRBY3Rpdml0eUJ1ZmZlcjsKLQkJ Zm9yIChpID0gMDsgaSA8IE51bUJhY2tlbmRTdGF0U2xvdHM7IGkrKykKLQkJewotCQkJQmFj a2VuZFN0YXR1c0FycmF5W2ldLnN0X2FjdGl2aXR5X3JhdyA9IGJ1ZmZlcjsKLQkJCWJ1ZmZl ciArPSBwZ3N0YXRfdHJhY2tfYWN0aXZpdHlfcXVlcnlfc2l6ZTsKLQkJfQorCQlCYWNrZW5k U3RhdHVzQXJyYXlbaV0uc3RfYWN0aXZpdHlfcmF3ID0gYnVmZmVyOworCQlidWZmZXIgKz0g cGdzdGF0X3RyYWNrX2FjdGl2aXR5X3F1ZXJ5X3NpemU7CiAJfQogCiAjaWZkZWYgVVNFX1NT TAotCS8qIENyZWF0ZSBvciBhdHRhY2ggdG8gdGhlIHNoYXJlZCBTU0wgc3RhdHVzIGJ1ZmZl ciAqLwotCXNpemUgPSBtdWxfc2l6ZShzaXplb2YoUGdCYWNrZW5kU1NMU3RhdHVzKSwgTnVt QmFja2VuZFN0YXRTbG90cyk7Ci0JQmFja2VuZFNzbFN0YXR1c0J1ZmZlciA9IChQZ0JhY2tl bmRTU0xTdGF0dXMgKikKLQkJU2htZW1Jbml0U3RydWN0KCJCYWNrZW5kIFNTTCBTdGF0dXMg QnVmZmVyIiwgc2l6ZSwgJmZvdW5kKTsKLQotCWlmICghZm91bmQpCiAJewogCQlQZ0JhY2tl bmRTU0xTdGF0dXMgKnB0cjsKIAotCQlNZW1TZXQoQmFja2VuZFNzbFN0YXR1c0J1ZmZlciwg MCwgc2l6ZSk7Ci0KIAkJLyogSW5pdGlhbGl6ZSBzdF9zc2xzdGF0dXMgcG9pbnRlcnMuICov CiAJCXB0ciA9IEJhY2tlbmRTc2xTdGF0dXNCdWZmZXI7CiAJCWZvciAoaSA9IDA7IGkgPCBO dW1CYWNrZW5kU3RhdFNsb3RzOyBpKyspCkBAIC0yMTEsMTcgKzE3Nyw5IEBAIEJhY2tlbmRT dGF0dXNTaG1lbUluaXQodm9pZCkKICNlbmRpZgogCiAjaWZkZWYgRU5BQkxFX0dTUwotCS8q IENyZWF0ZSBvciBhdHRhY2ggdG8gdGhlIHNoYXJlZCBHU1NBUEkgc3RhdHVzIGJ1ZmZlciAq LwotCXNpemUgPSBtdWxfc2l6ZShzaXplb2YoUGdCYWNrZW5kR1NTU3RhdHVzKSwgTnVtQmFj a2VuZFN0YXRTbG90cyk7Ci0JQmFja2VuZEdzc1N0YXR1c0J1ZmZlciA9IChQZ0JhY2tlbmRH U1NTdGF0dXMgKikKLQkJU2htZW1Jbml0U3RydWN0KCJCYWNrZW5kIEdTUyBTdGF0dXMgQnVm ZmVyIiwgc2l6ZSwgJmZvdW5kKTsKLQotCWlmICghZm91bmQpCiAJewogCQlQZ0JhY2tlbmRH U1NTdGF0dXMgKnB0cjsKIAotCQlNZW1TZXQoQmFja2VuZEdzc1N0YXR1c0J1ZmZlciwgMCwg c2l6ZSk7Ci0KIAkJLyogSW5pdGlhbGl6ZSBzdF9nc3NzdGF0dXMgcG9pbnRlcnMuICovCiAJ CXB0ciA9IEJhY2tlbmRHc3NTdGF0dXNCdWZmZXI7CiAJCWZvciAoaSA9IDA7IGkgPCBOdW1C YWNrZW5kU3RhdFNsb3RzOyBpKyspCkBAIC0yMzMsNiArMTkxLDEzIEBAIEJhY2tlbmRTdGF0 dXNTaG1lbUluaXQodm9pZCkKICNlbmRpZgogfQogCitzdGF0aWMgdm9pZAorQmFja2VuZFN0 YXR1c1NobWVtQXR0YWNoKHZvaWQgKmFyZykKK3sKKwlCYWNrZW5kQWN0aXZpdHlCdWZmZXJT aXplID0gbXVsX3NpemUocGdzdGF0X3RyYWNrX2FjdGl2aXR5X3F1ZXJ5X3NpemUsCisJCQkJ CQkJCQkJIE51bUJhY2tlbmRTdGF0U2xvdHMpOworfQorCiAvKgogICogSW5pdGlhbGl6ZSBw Z3N0YXRzIGJhY2tlbmQgYWN0aXZpdHkgc3RhdGUsIGFuZCBzZXQgdXAgb3VyIG9uLXByb2Mt ZXhpdAogICogaG9vay4gIENhbGxlZCBmcm9tIEluaXRQb3N0Z3JlcyBhbmQgQXV4aWxpYXJ5 UHJvY2Vzc01haW4uICBNeVByb2NOdW1iZXIgbXVzdApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvdXRpbHMvYWN0aXZpdHkvcGdzdGF0X3NobWVtLmMgYi9zcmMvYmFja2VuZC91dGlscy9h Y3Rpdml0eS9wZ3N0YXRfc2htZW0uYwppbmRleCAzM2ZiZGNhOTYwOS4uOTU1ZmFmNWViYzcg MTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9zaG1lbS5j CisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3Bnc3RhdF9zaG1lbS5jCkBAIC0x NCw2ICsxNCw3IEBACiAKICNpbmNsdWRlICJwZ3N0YXQuaCIKICNpbmNsdWRlICJzdG9yYWdl L3NobWVtLmgiCisjaW5jbHVkZSAic3RvcmFnZS9zdWJzeXN0ZW1zLmgiCiAjaW5jbHVkZSAi dXRpbHMvbWVtdXRpbHMuaCIKICNpbmNsdWRlICJ1dGlscy9wZ3N0YXRfaW50ZXJuYWwuaCIK IApAQCAtNTcsNiArNTgsMTMgQEAgc3RhdGljIHZvaWQgcGdzdGF0X3JlbGVhc2VfbWF0Y2hp bmdfZW50cnlfcmVmcyhib29sIGRpc2NhcmRfcGVuZGluZywgUmVsZWFzZU1hdGMKIAogc3Rh dGljIHZvaWQgcGdzdGF0X3NldHVwX21lbWN4dCh2b2lkKTsKIAorc3RhdGljIHZvaWQgU3Rh dHNTaG1lbVJlcXVlc3Qodm9pZCAqYXJnKTsKK3N0YXRpYyB2b2lkIFN0YXRzU2htZW1Jbml0 KHZvaWQgKmFyZyk7CisKK2NvbnN0IFNobWVtQ2FsbGJhY2tzIFN0YXRzU2htZW1DYWxsYmFj a3MgPSB7CisJLnJlcXVlc3RfZm4gPSBTdGF0c1NobWVtUmVxdWVzdCwKKwkuaW5pdF9mbiA9 IFN0YXRzU2htZW1Jbml0LAorfTsKIAogLyogcGFyYW1ldGVyIGZvciB0aGUgc2hhcmVkIGhh c2ggKi8KIHN0YXRpYyBjb25zdCBkc2hhc2hfcGFyYW1ldGVycyBkc2hfcGFyYW1zID0gewpA QCAtMTIzLDcgKzEzMSw3IEBAIHBnc3RhdF9kc2FfaW5pdF9zaXplKHZvaWQpCiAvKgogICog Q29tcHV0ZSBzaGFyZWQgbWVtb3J5IHNwYWNlIG5lZWRlZCBmb3IgY3VtdWxhdGl2ZSBzdGF0 aXN0aWNzCiAgKi8KLVNpemUKK3N0YXRpYyBTaXplCiBTdGF0c1NobWVtU2l6ZSh2b2lkKQog ewogCVNpemUJCXN6OwpAQCAtMTQ5LDEwMiArMTU3LDk4IEBAIFN0YXRzU2htZW1TaXplKHZv aWQpCiAJcmV0dXJuIHN6OwogfQogCisvKgorICogUmVnaXN0ZXIgc2hhcmVkIG1lbW9yeSBh cmVhIGZvciBjdW11bGF0aXZlIHN0YXRpc3RpY3MKKyAqLworc3RhdGljIHZvaWQKK1N0YXRz U2htZW1SZXF1ZXN0KHZvaWQgKmFyZykKK3sKKwlTaG1lbVJlcXVlc3RTdHJ1Y3QoLm5hbWUg PSAiU2hhcmVkIE1lbW9yeSBTdGF0cyIsCisJCQkJCSAgIC5zaXplID0gU3RhdHNTaG1lbVNp emUoKSwKKwkJCQkJICAgLnB0ciA9ICh2b2lkICoqKSAmcGdTdGF0TG9jYWwuc2htZW0sCisJ CSk7Cit9CisKIC8qCiAgKiBJbml0aWFsaXplIGN1bXVsYXRpdmUgc3RhdGlzdGljcyBzeXN0 ZW0gZHVyaW5nIHN0YXJ0dXAKICAqLwotdm9pZAotU3RhdHNTaG1lbUluaXQodm9pZCkKK3N0 YXRpYyB2b2lkCitTdGF0c1NobWVtSW5pdCh2b2lkICphcmcpCiB7Ci0JYm9vbAkJZm91bmQ7 Ci0JU2l6ZQkJc3o7CisJZHNhX2FyZWEgICAqZHNhOworCWRzaGFzaF90YWJsZSAqZHNoOwor CVBnU3RhdF9TaG1lbUNvbnRyb2wgKmN0bCA9IHBnU3RhdExvY2FsLnNobWVtOworCWNoYXIJ ICAgKnAgPSAoY2hhciAqKSBjdGw7CiAKLQlzeiA9IFN0YXRzU2htZW1TaXplKCk7Ci0JcGdT dGF0TG9jYWwuc2htZW0gPSAoUGdTdGF0X1NobWVtQ29udHJvbCAqKQotCQlTaG1lbUluaXRT dHJ1Y3QoIlNoYXJlZCBNZW1vcnkgU3RhdHMiLCBzeiwgJmZvdW5kKTsKKwkvKiB0aGUgYWxs b2NhdGlvbiBvZiBwZ1N0YXRMb2NhbC5zaG1lbSBpdHNlbGYgKi8KKwlwICs9IE1BWEFMSUdO KHNpemVvZihQZ1N0YXRfU2htZW1Db250cm9sKSk7CiAKLQlpZiAoIUlzVW5kZXJQb3N0bWFz dGVyKQotCXsKLQkJZHNhX2FyZWEgICAqZHNhOwotCQlkc2hhc2hfdGFibGUgKmRzaDsKLQkJ UGdTdGF0X1NobWVtQ29udHJvbCAqY3RsID0gcGdTdGF0TG9jYWwuc2htZW07Ci0JCWNoYXIJ ICAgKnAgPSAoY2hhciAqKSBjdGw7CisJLyoKKwkgKiBDcmVhdGUgYSBzbWFsbCBkc2EgYWxs b2NhdGlvbiBpbiBwbGFpbiBzaGFyZWQgbWVtb3J5LiBUaGlzIGlzIHJlcXVpcmVkCisJICog YmVjYXVzZSBwb3N0bWFzdGVyIGNhbm5vdCB1c2UgZHNtIHNlZ21lbnRzLiBJdCBhbHNvIHBy b3ZpZGVzIGEgc21hbGwKKwkgKiBlZmZpY2llbmN5IHdpbi4KKwkgKi8KKwljdGwtPnJhd19k c2FfYXJlYSA9IHA7CisJZHNhID0gZHNhX2NyZWF0ZV9pbl9wbGFjZShjdGwtPnJhd19kc2Ff YXJlYSwKKwkJCQkJCQkgIHBnc3RhdF9kc2FfaW5pdF9zaXplKCksCisJCQkJCQkJICBMV1RS QU5DSEVfUEdTVEFUU19EU0EsIE5VTEwpOworCWRzYV9waW4oZHNhKTsKIAotCQlBc3NlcnQo IWZvdW5kKTsKKwkvKgorCSAqIFRvIGVuc3VyZSBkc2hhc2ggaXMgY3JlYXRlZCBpbiAicGxh aW4iIHNoYXJlZCBtZW1vcnksIHRlbXBvcmFyaWx5IGxpbWl0CisJICogc2l6ZSBvZiBkc2Eg dG8gdGhlIGluaXRpYWwgc2l6ZSBvZiB0aGUgZHNhLgorCSAqLworCWRzYV9zZXRfc2l6ZV9s aW1pdChkc2EsIHBnc3RhdF9kc2FfaW5pdF9zaXplKCkpOwogCi0JCS8qIHRoZSBhbGxvY2F0 aW9uIG9mIHBnU3RhdExvY2FsLnNobWVtIGl0c2VsZiAqLwotCQlwICs9IE1BWEFMSUdOKHNp emVvZihQZ1N0YXRfU2htZW1Db250cm9sKSk7CisJLyoKKwkgKiBXaXRoIHRoZSBsaW1pdCBp biBwbGFjZSwgY3JlYXRlIHRoZSBkc2hhc2ggdGFibGUuIFhYWDogSXQnZCBiZSBuaWNlIGlm CisJICogdGhlcmUgd2VyZSBkc2hhc2hfY3JlYXRlX2luX3BsYWNlKCkuCisJICovCisJZHNo ID0gZHNoYXNoX2NyZWF0ZShkc2EsICZkc2hfcGFyYW1zLCBOVUxMKTsKKwljdGwtPmhhc2hf aGFuZGxlID0gZHNoYXNoX2dldF9oYXNoX3RhYmxlX2hhbmRsZShkc2gpOwogCi0JCS8qCi0J CSAqIENyZWF0ZSBhIHNtYWxsIGRzYSBhbGxvY2F0aW9uIGluIHBsYWluIHNoYXJlZCBtZW1v cnkuIFRoaXMgaXMKLQkJICogcmVxdWlyZWQgYmVjYXVzZSBwb3N0bWFzdGVyIGNhbm5vdCB1 c2UgZHNtIHNlZ21lbnRzLiBJdCBhbHNvCi0JCSAqIHByb3ZpZGVzIGEgc21hbGwgZWZmaWNp ZW5jeSB3aW4uCi0JCSAqLwotCQljdGwtPnJhd19kc2FfYXJlYSA9IHA7Ci0JCWRzYSA9IGRz YV9jcmVhdGVfaW5fcGxhY2UoY3RsLT5yYXdfZHNhX2FyZWEsCi0JCQkJCQkJCSAgcGdzdGF0 X2RzYV9pbml0X3NpemUoKSwKLQkJCQkJCQkJICBMV1RSQU5DSEVfUEdTVEFUU19EU0EsIE5V TEwpOwotCQlkc2FfcGluKGRzYSk7CisJLyogbGlmdCBsaW1pdCBzZXQgYWJvdmUgKi8KKwlk c2Ffc2V0X3NpemVfbGltaXQoZHNhLCAtMSk7CiAKLQkJLyoKLQkJICogVG8gZW5zdXJlIGRz aGFzaCBpcyBjcmVhdGVkIGluICJwbGFpbiIgc2hhcmVkIG1lbW9yeSwgdGVtcG9yYXJpbHkK LQkJICogbGltaXQgc2l6ZSBvZiBkc2EgdG8gdGhlIGluaXRpYWwgc2l6ZSBvZiB0aGUgZHNh LgotCQkgKi8KLQkJZHNhX3NldF9zaXplX2xpbWl0KGRzYSwgcGdzdGF0X2RzYV9pbml0X3Np emUoKSk7CisJLyoKKwkgKiBQb3N0bWFzdGVyIHdpbGwgbmV2ZXIgYWNjZXNzIHRoZXNlIGFn YWluLCB0aHVzIGZyZWUgdGhlIGxvY2FsCisJICogZHNhL2RzaGFzaCByZWZlcmVuY2VzLgor CSAqLworCWRzaGFzaF9kZXRhY2goZHNoKTsKKwlkc2FfZGV0YWNoKGRzYSk7CiAKLQkJLyoK LQkJICogV2l0aCB0aGUgbGltaXQgaW4gcGxhY2UsIGNyZWF0ZSB0aGUgZHNoYXNoIHRhYmxl LiBYWFg6IEl0J2QgYmUgbmljZQotCQkgKiBpZiB0aGVyZSB3ZXJlIGRzaGFzaF9jcmVhdGVf aW5fcGxhY2UoKS4KLQkJICovCi0JCWRzaCA9IGRzaGFzaF9jcmVhdGUoZHNhLCAmZHNoX3Bh cmFtcywgTlVMTCk7Ci0JCWN0bC0+aGFzaF9oYW5kbGUgPSBkc2hhc2hfZ2V0X2hhc2hfdGFi bGVfaGFuZGxlKGRzaCk7CisJcGdfYXRvbWljX2luaXRfdTY0KCZjdGwtPmdjX3JlcXVlc3Rf Y291bnQsIDEpOwogCi0JCS8qIGxpZnQgbGltaXQgc2V0IGFib3ZlICovCi0JCWRzYV9zZXRf c2l6ZV9saW1pdChkc2EsIC0xKTsKKwkvKiBEbyB0aGUgcGVyLWtpbmQgaW5pdGlhbGl6YXRp b24gKi8KKwlmb3IgKFBnU3RhdF9LaW5kIGtpbmQgPSBQR1NUQVRfS0lORF9NSU47IGtpbmQg PD0gUEdTVEFUX0tJTkRfTUFYOyBraW5kKyspCisJeworCQljb25zdCBQZ1N0YXRfS2luZElu Zm8gKmtpbmRfaW5mbyA9IHBnc3RhdF9nZXRfa2luZF9pbmZvKGtpbmQpOworCQljaGFyCSAg ICpwdHI7CiAKLQkJLyoKLQkJICogUG9zdG1hc3RlciB3aWxsIG5ldmVyIGFjY2VzcyB0aGVz ZSBhZ2FpbiwgdGh1cyBmcmVlIHRoZSBsb2NhbAotCQkgKiBkc2EvZHNoYXNoIHJlZmVyZW5j ZXMuCi0JCSAqLwotCQlkc2hhc2hfZGV0YWNoKGRzaCk7Ci0JCWRzYV9kZXRhY2goZHNhKTsK KwkJaWYgKCFraW5kX2luZm8pCisJCQljb250aW51ZTsKIAotCQlwZ19hdG9taWNfaW5pdF91 NjQoJmN0bC0+Z2NfcmVxdWVzdF9jb3VudCwgMSk7CisJCS8qIGluaXRpYWxpemUgZW50cnkg Y291bnQgdHJhY2tpbmcgKi8KKwkJaWYgKGtpbmRfaW5mby0+dHJhY2tfZW50cnlfY291bnQp CisJCQlwZ19hdG9taWNfaW5pdF91NjQoJmN0bC0+ZW50cnlfY291bnRzW2tpbmQgLSAxXSwg MCk7CiAKLQkJLyogRG8gdGhlIHBlci1raW5kIGluaXRpYWxpemF0aW9uICovCi0JCWZvciAo UGdTdGF0X0tpbmQga2luZCA9IFBHU1RBVF9LSU5EX01JTjsga2luZCA8PSBQR1NUQVRfS0lO RF9NQVg7IGtpbmQrKykKKwkJLyogaW5pdGlhbGl6ZSBmaXhlZC1udW1iZXJlZCBzdGF0cyAq LworCQlpZiAoa2luZF9pbmZvLT5maXhlZF9hbW91bnQpCiAJCXsKLQkJCWNvbnN0IFBnU3Rh dF9LaW5kSW5mbyAqa2luZF9pbmZvID0gcGdzdGF0X2dldF9raW5kX2luZm8oa2luZCk7Ci0J CQljaGFyCSAgICpwdHI7Ci0KLQkJCWlmICgha2luZF9pbmZvKQotCQkJCWNvbnRpbnVlOwot Ci0JCQkvKiBpbml0aWFsaXplIGVudHJ5IGNvdW50IHRyYWNraW5nICovCi0JCQlpZiAoa2lu ZF9pbmZvLT50cmFja19lbnRyeV9jb3VudCkKLQkJCQlwZ19hdG9taWNfaW5pdF91NjQoJmN0 bC0+ZW50cnlfY291bnRzW2tpbmQgLSAxXSwgMCk7Ci0KLQkJCS8qIGluaXRpYWxpemUgZml4 ZWQtbnVtYmVyZWQgc3RhdHMgKi8KLQkJCWlmIChraW5kX2luZm8tPmZpeGVkX2Ftb3VudCkK KwkJCWlmIChwZ3N0YXRfaXNfa2luZF9idWlsdGluKGtpbmQpKQorCQkJCXB0ciA9ICgoY2hh ciAqKSBjdGwpICsga2luZF9pbmZvLT5zaGFyZWRfY3RsX29mZjsKKwkJCWVsc2UKIAkJCXsK LQkJCQlpZiAocGdzdGF0X2lzX2tpbmRfYnVpbHRpbihraW5kKSkKLQkJCQkJcHRyID0gKChj aGFyICopIGN0bCkgKyBraW5kX2luZm8tPnNoYXJlZF9jdGxfb2ZmOwotCQkJCWVsc2UKLQkJ CQl7Ci0JCQkJCWludAkJCWlkeCA9IGtpbmQgLSBQR1NUQVRfS0lORF9DVVNUT01fTUlOOwot Ci0JCQkJCUFzc2VydChraW5kX2luZm8tPnNoYXJlZF9zaXplICE9IDApOwotCQkJCQljdGwt PmN1c3RvbV9kYXRhW2lkeF0gPSBTaG1lbUFsbG9jKGtpbmRfaW5mby0+c2hhcmVkX3NpemUp OwotCQkJCQlwdHIgPSBjdGwtPmN1c3RvbV9kYXRhW2lkeF07Ci0JCQkJfQotCi0JCQkJa2lu ZF9pbmZvLT5pbml0X3NobWVtX2NiKHB0cik7CisJCQkJaW50CQkJaWR4ID0ga2luZCAtIFBH U1RBVF9LSU5EX0NVU1RPTV9NSU47CisKKwkJCQlBc3NlcnQoa2luZF9pbmZvLT5zaGFyZWRf c2l6ZSAhPSAwKTsKKwkJCQljdGwtPmN1c3RvbV9kYXRhW2lkeF0gPSBTaG1lbUFsbG9jKGtp bmRfaW5mby0+c2hhcmVkX3NpemUpOworCQkJCXB0ciA9IGN0bC0+Y3VzdG9tX2RhdGFbaWR4 XTsKIAkJCX0KKworCQkJa2luZF9pbmZvLT5pbml0X3NobWVtX2NiKHB0cik7CiAJCX0KIAl9 Ci0JZWxzZQotCXsKLQkJQXNzZXJ0KGZvdW5kKTsKLQl9CiB9CiAKIHZvaWQKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYyBiL3NyYy9iYWNr ZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnQuYwppbmRleCAyYjc2OTY3Nzc2Yy4uOTU2 MzVjN2Y1NmMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRf ZXZlbnQuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50LmMK QEAgLTI1LDYgKzI1LDcgQEAKICNpbmNsdWRlICJzdG9yYWdlL2xtZ3IuaCIKICNpbmNsdWRl ICJzdG9yYWdlL2x3bG9jay5oIgogI2luY2x1ZGUgInN0b3JhZ2Uvc2htZW0uaCIKKyNpbmNs dWRlICJzdG9yYWdlL3N1YnN5c3RlbXMuaCIKICNpbmNsdWRlICJzdG9yYWdlL3NwaW4uaCIK ICNpbmNsdWRlICJ1dGlscy93YWl0X2V2ZW50LmgiCiAKQEAgLTk1LDU5ICs5Niw0NyBAQCBz dGF0aWMgV2FpdEV2ZW50Q3VzdG9tQ291bnRlckRhdGEgKldhaXRFdmVudEN1c3RvbUNvdW50 ZXI7CiBzdGF0aWMgdWludDMyIFdhaXRFdmVudEN1c3RvbU5ldyh1aW50MzIgY2xhc3NJZCwg Y29uc3QgY2hhciAqd2FpdF9ldmVudF9uYW1lKTsKIHN0YXRpYyBjb25zdCBjaGFyICpHZXRX YWl0RXZlbnRDdXN0b21JZGVudGlmaWVyKHVpbnQzMiB3YWl0X2V2ZW50X2luZm8pOwogCitz dGF0aWMgdm9pZCBXYWl0RXZlbnRDdXN0b21TaG1lbVJlcXVlc3Qodm9pZCAqYXJnKTsKK3N0 YXRpYyB2b2lkIFdhaXRFdmVudEN1c3RvbVNobWVtSW5pdCh2b2lkICphcmcpOworCitjb25z dCBTaG1lbUNhbGxiYWNrcyBXYWl0RXZlbnRDdXN0b21TaG1lbUNhbGxiYWNrcyA9IHsKKwku cmVxdWVzdF9mbiA9IFdhaXRFdmVudEN1c3RvbVNobWVtUmVxdWVzdCwKKwkuaW5pdF9mbiA9 IFdhaXRFdmVudEN1c3RvbVNobWVtSW5pdCwKK307CisKIC8qCi0gKiAgUmV0dXJuIHRoZSBz cGFjZSBmb3IgZHluYW1pYyBzaGFyZWQgaGFzaCB0YWJsZXMgYW5kIGR5bmFtaWMgYWxsb2Nh dGlvbiBjb3VudGVyLgorICogUmVnaXN0ZXIgc2htZW0gc3BhY2UgZm9yIGR5bmFtaWMgc2hh cmVkIGhhc2ggYW5kIGR5bmFtaWMgYWxsb2NhdGlvbiBjb3VudGVyLgogICovCi1TaXplCi1X YWl0RXZlbnRDdXN0b21TaG1lbVNpemUodm9pZCkKK3N0YXRpYyB2b2lkCitXYWl0RXZlbnRD dXN0b21TaG1lbVJlcXVlc3Qodm9pZCAqYXJnKQogewotCVNpemUJCXN6OwotCi0Jc3ogPSBN QVhBTElHTihzaXplb2YoV2FpdEV2ZW50Q3VzdG9tQ291bnRlckRhdGEpKTsKLQlzeiA9IGFk ZF9zaXplKHN6LCBoYXNoX2VzdGltYXRlX3NpemUoV0FJVF9FVkVOVF9DVVNUT01fSEFTSF9T SVpFLAotCQkJCQkJCQkJCSBzaXplb2YoV2FpdEV2ZW50Q3VzdG9tRW50cnlCeUluZm8pKSk7 Ci0Jc3ogPSBhZGRfc2l6ZShzeiwgaGFzaF9lc3RpbWF0ZV9zaXplKFdBSVRfRVZFTlRfQ1VT VE9NX0hBU0hfU0laRSwKLQkJCQkJCQkJCQkgc2l6ZW9mKFdhaXRFdmVudEN1c3RvbUVudHJ5 QnlOYW1lKSkpOwotCXJldHVybiBzejsKKwlTaG1lbVJlcXVlc3RTdHJ1Y3QoLm5hbWUgPSAi V2FpdEV2ZW50Q3VzdG9tQ291bnRlckRhdGEiLAorCQkJCQkgICAuc2l6ZSA9IHNpemVvZihX YWl0RXZlbnRDdXN0b21Db3VudGVyRGF0YSksCisJCQkJCSAgIC5wdHIgPSAodm9pZCAqKikg JldhaXRFdmVudEN1c3RvbUNvdW50ZXIsCisJCSk7CisJU2htZW1SZXF1ZXN0SGFzaCgubmFt ZSA9ICJXYWl0RXZlbnRDdXN0b20gaGFzaCBieSB3YWl0IGV2ZW50IGluZm9ybWF0aW9uIiwK KwkJCQkJIC5wdHIgPSAmV2FpdEV2ZW50Q3VzdG9tSGFzaEJ5SW5mbywKKwkJCQkJIC5uZWxl bXMgPSBXQUlUX0VWRU5UX0NVU1RPTV9IQVNIX1NJWkUsCisJCQkJCSAuaGFzaF9pbmZvLmtl eXNpemUgPSBzaXplb2YodWludDMyKSwKKwkJCQkJIC5oYXNoX2luZm8uZW50cnlzaXplID0g c2l6ZW9mKFdhaXRFdmVudEN1c3RvbUVudHJ5QnlJbmZvKSwKKwkJCQkJIC5oYXNoX2ZsYWdz ID0gSEFTSF9FTEVNIHwgSEFTSF9CTE9CUywKKwkJKTsKKwlTaG1lbVJlcXVlc3RIYXNoKC5u YW1lID0gIldhaXRFdmVudEN1c3RvbSBoYXNoIGJ5IG5hbWUiLAorCQkJCQkgLnB0ciA9ICZX YWl0RXZlbnRDdXN0b21IYXNoQnlOYW1lLAorCQkJCQkgLm5lbGVtcyA9IFdBSVRfRVZFTlRf Q1VTVE9NX0hBU0hfU0laRSwKKwkvKiBrZXkgaXMgYSBOVUxMLXRlcm1pbmF0ZWQgc3RyaW5n ICovCisJCQkJCSAuaGFzaF9pbmZvLmtleXNpemUgPSBzaXplb2YoY2hhcltOQU1FREFUQUxF Tl0pLAorCQkJCQkgLmhhc2hfaW5mby5lbnRyeXNpemUgPSBzaXplb2YoV2FpdEV2ZW50Q3Vz dG9tRW50cnlCeU5hbWUpLAorCQkJCQkgLmhhc2hfZmxhZ3MgPSBIQVNIX0VMRU0gfCBIQVNI X1NUUklOR1MsCisJCSk7CiB9CiAKLS8qCi0gKiBBbGxvY2F0ZSBzaG1lbSBzcGFjZSBmb3Ig ZHluYW1pYyBzaGFyZWQgaGFzaCBhbmQgZHluYW1pYyBhbGxvY2F0aW9uIGNvdW50ZXIuCi0g Ki8KLXZvaWQKLVdhaXRFdmVudEN1c3RvbVNobWVtSW5pdCh2b2lkKQorc3RhdGljIHZvaWQK K1dhaXRFdmVudEN1c3RvbVNobWVtSW5pdCh2b2lkICphcmcpCiB7Ci0JYm9vbAkJZm91bmQ7 Ci0JSEFTSENUTAkJaW5mbzsKLQotCVdhaXRFdmVudEN1c3RvbUNvdW50ZXIgPSAoV2FpdEV2 ZW50Q3VzdG9tQ291bnRlckRhdGEgKikKLQkJU2htZW1Jbml0U3RydWN0KCJXYWl0RXZlbnRD dXN0b21Db3VudGVyRGF0YSIsCi0JCQkJCQlzaXplb2YoV2FpdEV2ZW50Q3VzdG9tQ291bnRl ckRhdGEpLCAmZm91bmQpOwotCi0JaWYgKCFmb3VuZCkKLQl7Ci0JCS8qIGluaXRpYWxpemUg dGhlIGFsbG9jYXRpb24gY291bnRlciBhbmQgaXRzIHNwaW5sb2NrLiAqLwotCQlXYWl0RXZl bnRDdXN0b21Db3VudGVyLT5uZXh0SWQgPSBXQUlUX0VWRU5UX0NVU1RPTV9JTklUSUFMX0lE OwotCQlTcGluTG9ja0luaXQoJldhaXRFdmVudEN1c3RvbUNvdW50ZXItPm11dGV4KTsKLQl9 Ci0KLQkvKiBpbml0aWFsaXplIG9yIGF0dGFjaCB0aGUgaGFzaCB0YWJsZXMgdG8gc3RvcmUg Y3VzdG9tIHdhaXQgZXZlbnRzICovCi0JaW5mby5rZXlzaXplID0gc2l6ZW9mKHVpbnQzMik7 Ci0JaW5mby5lbnRyeXNpemUgPSBzaXplb2YoV2FpdEV2ZW50Q3VzdG9tRW50cnlCeUluZm8p OwotCVdhaXRFdmVudEN1c3RvbUhhc2hCeUluZm8gPQotCQlTaG1lbUluaXRIYXNoKCJXYWl0 RXZlbnRDdXN0b20gaGFzaCBieSB3YWl0IGV2ZW50IGluZm9ybWF0aW9uIiwKLQkJCQkJICBX QUlUX0VWRU5UX0NVU1RPTV9IQVNIX1NJWkUsCi0JCQkJCSAgJmluZm8sCi0JCQkJCSAgSEFT SF9FTEVNIHwgSEFTSF9CTE9CUyk7Ci0KLQkvKiBrZXkgaXMgYSBOVUxMLXRlcm1pbmF0ZWQg c3RyaW5nICovCi0JaW5mby5rZXlzaXplID0gc2l6ZW9mKGNoYXJbTkFNRURBVEFMRU5dKTsK LQlpbmZvLmVudHJ5c2l6ZSA9IHNpemVvZihXYWl0RXZlbnRDdXN0b21FbnRyeUJ5TmFtZSk7 Ci0JV2FpdEV2ZW50Q3VzdG9tSGFzaEJ5TmFtZSA9Ci0JCVNobWVtSW5pdEhhc2goIldhaXRF dmVudEN1c3RvbSBoYXNoIGJ5IG5hbWUiLAotCQkJCQkgIFdBSVRfRVZFTlRfQ1VTVE9NX0hB U0hfU0laRSwKLQkJCQkJICAmaW5mbywKLQkJCQkJICBIQVNIX0VMRU0gfCBIQVNIX1NUUklO R1MpOworCS8qIGluaXRpYWxpemUgdGhlIGFsbG9jYXRpb24gY291bnRlciBhbmQgaXRzIHNw aW5sb2NrLiAqLworCVdhaXRFdmVudEN1c3RvbUNvdW50ZXItPm5leHRJZCA9IFdBSVRfRVZF TlRfQ1VTVE9NX0lOSVRJQUxfSUQ7CisJU3BpbkxvY2tJbml0KCZXYWl0RXZlbnRDdXN0b21D b3VudGVyLT5tdXRleCk7CiB9CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC91dGls cy9taXNjL2luamVjdGlvbl9wb2ludC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9pbmpl Y3Rpb25fcG9pbnQuYwppbmRleCBjMDZiMGU5YjgwMC4uYTdjOTllMDk3ZWEgMTAwNjQ0Ci0t LSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvaW5qZWN0aW9uX3BvaW50LmMKKysrIGIvc3Jj L2JhY2tlbmQvdXRpbHMvbWlzYy9pbmplY3Rpb25fcG9pbnQuYwpAQCAtMTcsNiArMTcsNyBA QAogICovCiAjaW5jbHVkZSAicG9zdGdyZXMuaCIKIAorI2luY2x1ZGUgInN0b3JhZ2Uvc3Vi c3lzdGVtcy5oIgogI2luY2x1ZGUgInV0aWxzL2luamVjdGlvbl9wb2ludC5oIgogCiAjaWZk ZWYgVVNFX0lOSkVDVElPTl9QT0lOVFMKQEAgLTEwOSw2ICsxMTAsMTEgQEAgdHlwZWRlZiBz dHJ1Y3QgSW5qZWN0aW9uUG9pbnRDYWNoZUVudHJ5CiAKIHN0YXRpYyBIVEFCICpJbmplY3Rp b25Qb2ludENhY2hlID0gTlVMTDsKIAorI2lmZGVmIFVTRV9JTkpFQ1RJT05fUE9JTlRTCitz dGF0aWMgdm9pZCBJbmplY3Rpb25Qb2ludFNobWVtUmVxdWVzdCh2b2lkICphcmcpOworc3Rh dGljIHZvaWQgSW5qZWN0aW9uUG9pbnRTaG1lbUluaXQodm9pZCAqYXJnKTsKKyNlbmRpZgor CiAvKgogICogaW5qZWN0aW9uX3BvaW50X2NhY2hlX2FkZAogICoKQEAgLTIyNiw0NSArMjMy LDM0IEBAIGluamVjdGlvbl9wb2ludF9jYWNoZV9nZXQoY29uc3QgY2hhciAqbmFtZSkKIH0K ICNlbmRpZgkJCQkJCQkvKiBVU0VfSU5KRUNUSU9OX1BPSU5UUyAqLwogCi0vKgotICogUmV0 dXJuIHRoZSBzcGFjZSBmb3IgZHluYW1pYyBzaGFyZWQgaGFzaCB0YWJsZS4KLSAqLwotU2l6 ZQotSW5qZWN0aW9uUG9pbnRTaG1lbVNpemUodm9pZCkKLXsKK2NvbnN0IFNobWVtQ2FsbGJh Y2tzIEluamVjdGlvblBvaW50U2htZW1DYWxsYmFja3MgPSB7CiAjaWZkZWYgVVNFX0lOSkVD VElPTl9QT0lOVFMKLQlTaXplCQlzeiA9IDA7Ci0KLQlzeiA9IGFkZF9zaXplKHN6LCBzaXpl b2YoSW5qZWN0aW9uUG9pbnRzQ3RsKSk7Ci0JcmV0dXJuIHN6OwotI2Vsc2UKLQlyZXR1cm4g MDsKKwkucmVxdWVzdF9mbiA9IEluamVjdGlvblBvaW50U2htZW1SZXF1ZXN0LAorCS5pbml0 X2ZuID0gSW5qZWN0aW9uUG9pbnRTaG1lbUluaXQsCiAjZW5kaWYKLX0KK307CiAKIC8qCi0g KiBBbGxvY2F0ZSBzaG1lbSBzcGFjZSBmb3IgZHluYW1pYyBzaGFyZWQgaGFzaC4KKyAqIFJl c2VydmUgc3BhY2UgZm9yIHRoZSBkeW5hbWljIHNoYXJlZCBoYXNoIHRhYmxlCiAgKi8KLXZv aWQKLUluamVjdGlvblBvaW50U2htZW1Jbml0KHZvaWQpCi17CiAjaWZkZWYgVVNFX0lOSkVD VElPTl9QT0lOVFMKLQlib29sCQlmb3VuZDsKK3N0YXRpYyB2b2lkCitJbmplY3Rpb25Qb2lu dFNobWVtUmVxdWVzdCh2b2lkICphcmcpCit7CisJU2htZW1SZXF1ZXN0U3RydWN0KC5uYW1l ID0gIkluamVjdGlvblBvaW50IGhhc2giLAorCQkJCQkgICAuc2l6ZSA9IHNpemVvZihJbmpl Y3Rpb25Qb2ludHNDdGwpLAorCQkJCQkgICAucHRyID0gKHZvaWQgKiopICZBY3RpdmVJbmpl Y3Rpb25Qb2ludHMsCisJCSk7Cit9CiAKLQlBY3RpdmVJbmplY3Rpb25Qb2ludHMgPSBTaG1l bUluaXRTdHJ1Y3QoIkluamVjdGlvblBvaW50IGhhc2giLAotCQkJCQkJCQkJCQlzaXplb2Yo SW5qZWN0aW9uUG9pbnRzQ3RsKSwKLQkJCQkJCQkJCQkJJmZvdW5kKTsKLQlpZiAoIUlzVW5k ZXJQb3N0bWFzdGVyKQotCXsKLQkJQXNzZXJ0KCFmb3VuZCk7Ci0JCXBnX2F0b21pY19pbml0 X3UzMigmQWN0aXZlSW5qZWN0aW9uUG9pbnRzLT5tYXhfaW51c2UsIDApOwotCQlmb3IgKGlu dCBpID0gMDsgaSA8IE1BWF9JTkpFQ1RJT05fUE9JTlRTOyBpKyspCi0JCQlwZ19hdG9taWNf aW5pdF91NjQoJkFjdGl2ZUluamVjdGlvblBvaW50cy0+ZW50cmllc1tpXS5nZW5lcmF0aW9u LCAwKTsKLQl9Ci0JZWxzZQotCQlBc3NlcnQoZm91bmQpOwotI2VuZGlmCitzdGF0aWMgdm9p ZAorSW5qZWN0aW9uUG9pbnRTaG1lbUluaXQodm9pZCAqYXJnKQoreworCXBnX2F0b21pY19p bml0X3UzMigmQWN0aXZlSW5qZWN0aW9uUG9pbnRzLT5tYXhfaW51c2UsIDApOworCWZvciAo aW50IGkgPSAwOyBpIDwgTUFYX0lOSkVDVElPTl9QT0lOVFM7IGkrKykKKwkJcGdfYXRvbWlj X2luaXRfdTY0KCZBY3RpdmVJbmplY3Rpb25Qb2ludHMtPmVudHJpZXNbaV0uZ2VuZXJhdGlv biwgMCk7CiB9CisjZW5kaWYKIAogLyoKICAqIEF0dGFjaCBhIG5ldyBpbmplY3Rpb24gcG9p bnQuCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0cmVlLmggYi9zcmMvaW5j bHVkZS9hY2Nlc3MvbmJ0cmVlLmgKaW5kZXggZGE3NTAzYzU3YjYuLjMwOTdlOWJiMWFmIDEw MDY0NAotLS0gYS9zcmMvaW5jbHVkZS9hY2Nlc3MvbmJ0cmVlLmgKKysrIGIvc3JjL2luY2x1 ZGUvYWNjZXNzL25idHJlZS5oCkBAIC0xMzAwLDggKzEzMDAsNiBAQCBleHRlcm4gQlRDeWNs ZUlkIF9idF92YWN1dW1fY3ljbGVpZChSZWxhdGlvbiByZWwpOwogZXh0ZXJuIEJUQ3ljbGVJ ZCBfYnRfc3RhcnRfdmFjdXVtKFJlbGF0aW9uIHJlbCk7CiBleHRlcm4gdm9pZCBfYnRfZW5k X3ZhY3V1bShSZWxhdGlvbiByZWwpOwogZXh0ZXJuIHZvaWQgX2J0X2VuZF92YWN1dW1fY2Fs bGJhY2soaW50IGNvZGUsIERhdHVtIGFyZyk7Ci1leHRlcm4gU2l6ZSBCVHJlZVNobWVtU2l6 ZSh2b2lkKTsKLWV4dGVybiB2b2lkIEJUcmVlU2htZW1Jbml0KHZvaWQpOwogZXh0ZXJuIGJ5 dGVhICpidG9wdGlvbnMoRGF0dW0gcmVsb3B0aW9ucywgYm9vbCB2YWxpZGF0ZSk7CiBleHRl cm4gYm9vbCBidHByb3BlcnR5KE9pZCBpbmRleF9vaWQsIGludCBhdHRubywKIAkJCQkJICAg SW5kZXhBTVByb3BlcnR5IHByb3AsIGNvbnN0IGNoYXIgKnByb3BuYW1lLApkaWZmIC0tZ2l0 IGEvc3JjL2luY2x1ZGUvYWNjZXNzL3N5bmNzY2FuLmggYi9zcmMvaW5jbHVkZS9hY2Nlc3Mv c3luY3NjYW4uaAppbmRleCAyNGNmMzMyOTRlNS4uMzJmODMzMmFhZWUgMTAwNjQ0Ci0tLSBh L3NyYy9pbmNsdWRlL2FjY2Vzcy9zeW5jc2Nhbi5oCisrKyBiL3NyYy9pbmNsdWRlL2FjY2Vz cy9zeW5jc2Nhbi5oCkBAIC0yNCw3ICsyNCw1IEBAIGV4dGVybiBQR0RMTElNUE9SVCBib29s IHRyYWNlX3N5bmNzY2FuOwogCiBleHRlcm4gdm9pZCBzc19yZXBvcnRfbG9jYXRpb24oUmVs YXRpb24gcmVsLCBCbG9ja051bWJlciBsb2NhdGlvbik7CiBleHRlcm4gQmxvY2tOdW1iZXIg c3NfZ2V0X2xvY2F0aW9uKFJlbGF0aW9uIHJlbCwgQmxvY2tOdW1iZXIgcmVsbmJsb2Nrcyk7 Ci1leHRlcm4gdm9pZCBTeW5jU2NhblNobWVtSW5pdCh2b2lkKTsKLWV4dGVybiBTaXplIFN5 bmNTY2FuU2htZW1TaXplKHZvaWQpOwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy9pbmNs dWRlL2FjY2Vzcy90d29waGFzZS5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3R3b3BoYXNlLmgK aW5kZXggNzYxZDU2YTVmM2QuLjFkMmZmNDJjOWI3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVk ZS9hY2Nlc3MvdHdvcGhhc2UuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MvdHdvcGhhc2Uu aApAQCAtMzMsOSArMzMsNiBAQCB0eXBlZGVmIHN0cnVjdCBHbG9iYWxUcmFuc2FjdGlvbkRh dGEgKkdsb2JhbFRyYW5zYWN0aW9uOwogLyogR1VDIHZhcmlhYmxlICovCiBleHRlcm4gUEdE TExJTVBPUlQgaW50IG1heF9wcmVwYXJlZF94YWN0czsKIAotZXh0ZXJuIFNpemUgVHdvUGhh c2VTaG1lbVNpemUodm9pZCk7Ci1leHRlcm4gdm9pZCBUd29QaGFzZVNobWVtSW5pdCh2b2lk KTsKLQogZXh0ZXJuIHZvaWQgQXRBYm9ydF9Ud29waGFzZSh2b2lkKTsKIGV4dGVybiB2b2lk IFBvc3RQcmVwYXJlX1R3b3BoYXNlKHZvaWQpOwogCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVk ZS9hY2Nlc3MveGxvZy5oIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2cuaAppbmRleCA0YWYz OGU3NGNlNC4uNDM3YjRmMzIzNDkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy94 bG9nLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2cuaApAQCAtMjU5LDggKzI1OSw2 IEBAIGV4dGVybiB2b2lkIEluaXRMb2NhbERhdGFDaGVja3N1bVN0YXRlKHZvaWQpOwogZXh0 ZXJuIHZvaWQgU2V0TG9jYWxEYXRhQ2hlY2tzdW1TdGF0ZSh1aW50MzIgZGF0YV9jaGVja3N1 bV92ZXJzaW9uKTsKIGV4dGVybiBib29sIEdldERlZmF1bHRDaGFyU2lnbmVkbmVzcyh2b2lk KTsKIGV4dGVybiBYTG9nUmVjUHRyIEdldEZha2VMU05Gb3JVbmxvZ2dlZFJlbCh2b2lkKTsK LWV4dGVybiBTaXplIFhMT0dTaG1lbVNpemUodm9pZCk7Ci1leHRlcm4gdm9pZCBYTE9HU2ht ZW1Jbml0KHZvaWQpOwogZXh0ZXJuIHZvaWQgQm9vdFN0cmFwWExPRyh1aW50MzIgZGF0YV9j aGVja3N1bV92ZXJzaW9uKTsKIGV4dGVybiB2b2lkIEluaXRpYWxpemVXYWxDb25zaXN0ZW5j eUNoZWNraW5nKHZvaWQpOwogZXh0ZXJuIHZvaWQgTG9jYWxQcm9jZXNzQ29udHJvbEZpbGUo Ym9vbCByZXNldCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZ3ByZWZl dGNoZXIuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9ncHJlZmV0Y2hlci5oCmluZGV4IDdl YzQwYzRiNzhiLi41NmE4MTY3NmQ5MiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvYWNjZXNz L3hsb2dwcmVmZXRjaGVyLmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2dwcmVmZXRj aGVyLmgKQEAgLTM0LDkgKzM0LDYgQEAgdHlwZWRlZiBzdHJ1Y3QgWExvZ1ByZWZldGNoZXIg WExvZ1ByZWZldGNoZXI7CiAKIGV4dGVybiB2b2lkIFhMb2dQcmVmZXRjaFJlY29uZmlndXJl KHZvaWQpOwogCi1leHRlcm4gc2l6ZV90IFhMb2dQcmVmZXRjaFNobWVtU2l6ZSh2b2lkKTsK LWV4dGVybiB2b2lkIFhMb2dQcmVmZXRjaFNobWVtSW5pdCh2b2lkKTsKLQogZXh0ZXJuIHZv aWQgWExvZ1ByZWZldGNoUmVzZXRTdGF0cyh2b2lkKTsKIAogZXh0ZXJuIFhMb2dQcmVmZXRj aGVyICpYTG9nUHJlZmV0Y2hlckFsbG9jYXRlKFhMb2dSZWFkZXJTdGF0ZSAqcmVhZGVyKTsK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9ncmVjb3ZlcnkuaCBiL3NyYy9p bmNsdWRlL2FjY2Vzcy94bG9ncmVjb3ZlcnkuaAppbmRleCAyODQyMTA2YjI4NS4uYmE3NzUw ZGNhMGIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9ncmVjb3ZlcnkuaAor KysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZ3JlY292ZXJ5LmgKQEAgLTE1Myw5ICsxNTMs NiBAQCBleHRlcm4gUEdETExJTVBPUlQgYm9vbCByZWFjaGVkQ29uc2lzdGVuY3k7CiAvKiBB cmUgd2UgY3VycmVudGx5IGluIHN0YW5kYnkgbW9kZT8gKi8KIGV4dGVybiBQR0RMTElNUE9S VCBib29sIFN0YW5kYnlNb2RlOwogCi1leHRlcm4gU2l6ZSBYTG9nUmVjb3ZlcnlTaG1lbVNp emUodm9pZCk7Ci1leHRlcm4gdm9pZCBYTG9nUmVjb3ZlcnlTaG1lbUluaXQodm9pZCk7Ci0K IGV4dGVybiB2b2lkIEluaXRXYWxSZWNvdmVyeShDb250cm9sRmlsZURhdGEgKkNvbnRyb2xG aWxlLAogCQkJCQkJCWJvb2wgKndhc1NodXRkb3duX3B0ciwgYm9vbCAqaGF2ZUJhY2t1cExh YmVsX3B0ciwKIAkJCQkJCQlib29sICpoYXZlVGJsc3BjTWFwX3B0cik7CmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9hY2Nlc3MveGxvZ3dhaXQuaCBiL3NyYy9pbmNsdWRlL2FjY2Vzcy94 bG9nd2FpdC5oCmluZGV4IGQxMjUzMWQzMmI4Li4wNzE1N2YyMjBlYSAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvYWNjZXNzL3hsb2d3YWl0LmgKKysrIGIvc3JjL2luY2x1ZGUvYWNjZXNz L3hsb2d3YWl0LmgKQEAgLTEwMCw4ICsxMDAsNiBAQCB0eXBlZGVmIHN0cnVjdCBXYWl0TFNO U3RhdGUKIAogZXh0ZXJuIFBHRExMSU1QT1JUIFdhaXRMU05TdGF0ZSAqd2FpdExTTlN0YXRl OwogCi1leHRlcm4gU2l6ZSBXYWl0TFNOU2htZW1TaXplKHZvaWQpOwotZXh0ZXJuIHZvaWQg V2FpdExTTlNobWVtSW5pdCh2b2lkKTsKIGV4dGVybiBYTG9nUmVjUHRyIEdldEN1cnJlbnRM U05Gb3JXYWl0VHlwZShXYWl0TFNOVHlwZSBsc25UeXBlKTsKIGV4dGVybiB2b2lkIFdhaXRM U05XYWtldXAoV2FpdExTTlR5cGUgbHNuVHlwZSwgWExvZ1JlY1B0ciBjdXJyZW50TFNOKTsK IGV4dGVybiB2b2lkIFdhaXRMU05DbGVhbnVwKHZvaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvcGdzdGF0LmggYi9zcmMvaW5jbHVkZS9wZ3N0YXQuaAppbmRleCA4ZTM1NDljMzc1 Mi4uMjc4NmE3YzVmZmIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Bnc3RhdC5oCisrKyBi L3NyYy9pbmNsdWRlL3Bnc3RhdC5oCkBAIC01NDEsMTAgKzU0MSw2IEBAIHR5cGVkZWYgc3Ry dWN0IFBnU3RhdF9CYWNrZW5kUGVuZGluZwogICogRnVuY3Rpb25zIGluIHBnc3RhdC5jCiAg Ki8KIAotLyogZnVuY3Rpb25zIGNhbGxlZCBmcm9tIHBvc3RtYXN0ZXIgKi8KLWV4dGVybiBT aXplIFN0YXRzU2htZW1TaXplKHZvaWQpOwotZXh0ZXJuIHZvaWQgU3RhdHNTaG1lbUluaXQo dm9pZCk7Ci0KIC8qIEZ1bmN0aW9ucyBjYWxsZWQgZHVyaW5nIHNlcnZlciBzdGFydHVwIC8g c2h1dGRvd24gKi8KIGV4dGVybiB2b2lkIHBnc3RhdF9yZXN0b3JlX3N0YXRzKHZvaWQpOwog ZXh0ZXJuIHZvaWQgcGdzdGF0X2Rpc2NhcmRfc3RhdHModm9pZCk7CmRpZmYgLS1naXQgYS9z cmMvaW5jbHVkZS9wb3N0bWFzdGVyL2F1dG92YWN1dW0uaCBiL3NyYy9pbmNsdWRlL3Bvc3Rt YXN0ZXIvYXV0b3ZhY3V1bS5oCmluZGV4IGIyMWQxMTFkNGQ1Li44OTU0ZjZiMjhlZSAxMDA2 NDQKLS0tIGEvc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmgKKysrIGIvc3Jj L2luY2x1ZGUvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmgKQEAgLTY2LDggKzY2LDQgQEAgcGdf bm9yZXR1cm4gZXh0ZXJuIHZvaWQgQXV0b1ZhY1dvcmtlck1haW4oY29uc3Qgdm9pZCAqc3Rh cnR1cF9kYXRhLCBzaXplX3Qgc3RhcnQKIGV4dGVybiBib29sIEF1dG9WYWN1dW1SZXF1ZXN0 V29yayhBdXRvVmFjdXVtV29ya0l0ZW1UeXBlIHR5cGUsCiAJCQkJCQkJCSAgT2lkIHJlbGF0 aW9uSWQsIEJsb2NrTnVtYmVyIGJsa25vKTsKIAotLyogc2hhcmVkIG1lbW9yeSBzdHVmZiAq LwotZXh0ZXJuIFNpemUgQXV0b1ZhY3V1bVNobWVtU2l6ZSh2b2lkKTsKLWV4dGVybiB2b2lk IEF1dG9WYWN1dW1TaG1lbUluaXQodm9pZCk7Ci0KICNlbmRpZgkJCQkJCQkvKiBBVVRPVkFD VVVNX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvYmd3b3JrZXJf aW50ZXJuYWxzLmggYi9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2Jnd29ya2VyX2ludGVybmFs cy5oCmluZGV4IGI3ODljYWY0MDM0Li5iNjI2MWJjMDFkZiAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvcG9zdG1hc3Rlci9iZ3dvcmtlcl9pbnRlcm5hbHMuaAorKysgYi9zcmMvaW5jbHVk ZS9wb3N0bWFzdGVyL2Jnd29ya2VyX2ludGVybmFscy5oCkBAIC00MSw4ICs0MSw2IEBAIHR5 cGVkZWYgc3RydWN0IFJlZ2lzdGVyZWRCZ1dvcmtlcgogCiBleHRlcm4gUEdETExJTVBPUlQg ZGxpc3RfaGVhZCBCYWNrZ3JvdW5kV29ya2VyTGlzdDsKIAotZXh0ZXJuIFNpemUgQmFja2dy b3VuZFdvcmtlclNobWVtU2l6ZSh2b2lkKTsKLWV4dGVybiB2b2lkIEJhY2tncm91bmRXb3Jr ZXJTaG1lbUluaXQodm9pZCk7CiBleHRlcm4gdm9pZCBCYWNrZ3JvdW5kV29ya2VyU3RhdGVD aGFuZ2UoYm9vbCBhbGxvd19uZXdfd29ya2Vycyk7CiBleHRlcm4gdm9pZCBGb3JnZXRCYWNr Z3JvdW5kV29ya2VyKFJlZ2lzdGVyZWRCZ1dvcmtlciAqcncpOwogZXh0ZXJuIHZvaWQgUmVw b3J0QmFja2dyb3VuZFdvcmtlclBJRChSZWdpc3RlcmVkQmdXb3JrZXIgKnJ3KTsKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvYmd3cml0ZXIuaCBiL3NyYy9pbmNsdWRl L3Bvc3RtYXN0ZXIvYmd3cml0ZXIuaAppbmRleCA0NzQ3MGNiYTg5My4uMzZlZWEwYjFhYjAg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvYmd3cml0ZXIuaAorKysgYi9z cmMvaW5jbHVkZS9wb3N0bWFzdGVyL2Jnd3JpdGVyLmgKQEAgLTM5LDkgKzM5LDYgQEAgZXh0 ZXJuIGJvb2wgRm9yd2FyZFN5bmNSZXF1ZXN0KGNvbnN0IEZpbGVUYWcgKmZ0YWcsIFN5bmNS ZXF1ZXN0VHlwZSB0eXBlKTsKIAogZXh0ZXJuIHZvaWQgQWJzb3JiU3luY1JlcXVlc3RzKHZv aWQpOwogCi1leHRlcm4gU2l6ZSBDaGVja3BvaW50ZXJTaG1lbVNpemUodm9pZCk7Ci1leHRl cm4gdm9pZCBDaGVja3BvaW50ZXJTaG1lbUluaXQodm9pZCk7Ci0KIGV4dGVybiBib29sIEZp cnN0Q2FsbFNpbmNlTGFzdENoZWNrcG9pbnQodm9pZCk7CiAKICNlbmRpZgkJCQkJCQkvKiBf QkdXUklURVJfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9kYXRh Y2hlY2tzdW1fc3RhdGUuaCBiL3NyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvZGF0YWNoZWNrc3Vt X3N0YXRlLmgKaW5kZXggMzQzNDk0ZWRjYzguLjA1NjI1NTM5NjA0IDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9wb3N0bWFzdGVyL2RhdGFjaGVja3N1bV9zdGF0ZS5oCisrKyBiL3NyYy9p bmNsdWRlL3Bvc3RtYXN0ZXIvZGF0YWNoZWNrc3VtX3N0YXRlLmgKQEAgLTE3LDEwICsxNyw2 IEBACiAKICNpbmNsdWRlICJzdG9yYWdlL3Byb2NzaWduYWwuaCIKIAotLyogU2hhcmVkIG1l bW9yeSAqLwotZXh0ZXJuIFNpemUgRGF0YUNoZWNrc3Vtc1NobWVtU2l6ZSh2b2lkKTsKLWV4 dGVybiB2b2lkIERhdGFDaGVja3N1bXNTaG1lbUluaXQodm9pZCk7Ci0KIC8qIFBvc3NpYmxl IG9wZXJhdGlvbnMgdGhlIERhdGFjaGVja3N1bXN3b3JrZXIgY2FuIHBlcmZvcm0gKi8KIHR5 cGVkZWYgZW51bSBEYXRhQ2hlY2tzdW1zV29ya2VyT3BlcmF0aW9uCiB7CmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL3BnYXJjaC5oIGIvc3JjL2luY2x1ZGUvcG9zdG1h c3Rlci9wZ2FyY2guaAppbmRleCBmYWE3NjA5Y2Q4MS4uOTc3MmJiNTczYTEgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvcGdhcmNoLmgKKysrIGIvc3JjL2luY2x1ZGUv cG9zdG1hc3Rlci9wZ2FyY2guaApAQCAtMjYsOCArMjYsNiBAQAogI2RlZmluZSBNQVhfWEZO X0NIQVJTCTQwCiAjZGVmaW5lIFZBTElEX1hGTl9DSEFSUyAiMDEyMzQ1Njc4OUFCQ0RFRi5o aXN0b3J5LmJhY2t1cC5wYXJ0aWFsIgogCi1leHRlcm4gU2l6ZSBQZ0FyY2hTaG1lbVNpemUo dm9pZCk7Ci1leHRlcm4gdm9pZCBQZ0FyY2hTaG1lbUluaXQodm9pZCk7CiBleHRlcm4gYm9v bCBQZ0FyY2hDYW5SZXN0YXJ0KHZvaWQpOwogcGdfbm9yZXR1cm4gZXh0ZXJuIHZvaWQgUGdB cmNoaXZlck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBzaXplX3Qgc3RhcnR1cF9k YXRhX2xlbik7CiBleHRlcm4gdm9pZCBQZ0FyY2hXYWtldXAodm9pZCk7CmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL3dhbHN1bW1hcml6ZXIuaCBiL3NyYy9pbmNsdWRl L3Bvc3RtYXN0ZXIvd2Fsc3VtbWFyaXplci5oCmluZGV4IGE0YzA1NTA2NmI0Li5iOWE3NTVm YWRiYyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci93YWxzdW1tYXJpemVy LmgKKysrIGIvc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci93YWxzdW1tYXJpemVyLmgKQEAgLTE5 LDggKzE5LDYgQEAKIGV4dGVybiBQR0RMTElNUE9SVCBib29sIHN1bW1hcml6ZV93YWw7CiBl eHRlcm4gUEdETExJTVBPUlQgaW50IHdhbF9zdW1tYXJ5X2tlZXBfdGltZTsKIAotZXh0ZXJu IFNpemUgV2FsU3VtbWFyaXplclNobWVtU2l6ZSh2b2lkKTsKLWV4dGVybiB2b2lkIFdhbFN1 bW1hcml6ZXJTaG1lbUluaXQodm9pZCk7CiBwZ19ub3JldHVybiBleHRlcm4gdm9pZCBXYWxT dW1tYXJpemVyTWFpbihjb25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFydHVw X2RhdGFfbGVuKTsKIAogZXh0ZXJuIHZvaWQgR2V0V2FsU3VtbWFyaXplclN0YXRlKFRpbWVM aW5lSUQgKnN1bW1hcml6ZWRfdGxpLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGlj YXRpb24vbG9naWNhbGN0bC5oIGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbGN0 bC5oCmluZGV4IDQ5NTU1NGM1MzJjLi4wYmMxMzAyZjEzMCAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvcmVwbGljYXRpb24vbG9naWNhbGN0bC5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxp Y2F0aW9uL2xvZ2ljYWxjdGwuaApAQCAtMTQsOCArMTQsNiBAQAogI2lmbmRlZiBMT0dJQ0FM Q1RMX0gKICNkZWZpbmUgTE9HSUNBTENUTF9ICiAKLWV4dGVybiBTaXplIExvZ2ljYWxEZWNv ZGluZ0N0bFNobWVtU2l6ZSh2b2lkKTsKLWV4dGVybiB2b2lkIExvZ2ljYWxEZWNvZGluZ0N0 bFNobWVtSW5pdCh2b2lkKTsKIGV4dGVybiB2b2lkIFN0YXJ0dXBMb2dpY2FsRGVjb2RpbmdT dGF0dXMoYm9vbCBsYXN0X3N0YXR1cyk7CiBleHRlcm4gdm9pZCBJbml0aWFsaXplUHJvY2Vz c1hMb2dMb2dpY2FsSW5mbyh2b2lkKTsKIGV4dGVybiBib29sIFByb2Nlc3NCYXJyaWVyVXBk YXRlWExvZ0xvZ2ljYWxJbmZvKHZvaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vbG9naWNhbGxhdW5jaGVyLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9s b2dpY2FsbGF1bmNoZXIuaAppbmRleCA1MDRiNzEwNTM2YS4uNWYwYzFiOWM2ODIgMTAwNjQ0 Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5oCisrKyBi L3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL2xvZ2ljYWxsYXVuY2hlci5oCkBAIC0xOSw5ICsx OSw2IEBAIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgbWF4X3BhcmFsbGVsX2FwcGx5X3dvcmtl cnNfcGVyX3N1YnNjcmlwdGlvbjsKIGV4dGVybiB2b2lkIEFwcGx5TGF1bmNoZXJSZWdpc3Rl cih2b2lkKTsKIGV4dGVybiB2b2lkIEFwcGx5TGF1bmNoZXJNYWluKERhdHVtIG1haW5fYXJn KTsKIAotZXh0ZXJuIFNpemUgQXBwbHlMYXVuY2hlclNobWVtU2l6ZSh2b2lkKTsKLWV4dGVy biB2b2lkIEFwcGx5TGF1bmNoZXJTaG1lbUluaXQodm9pZCk7Ci0KIGV4dGVybiB2b2lkIEFw cGx5TGF1bmNoZXJGb3JnZXRXb3JrZXJTdGFydFRpbWUoT2lkIHN1YmlkKTsKIAogZXh0ZXJu IHZvaWQgQXBwbHlMYXVuY2hlcldha2V1cEF0Q29tbWl0KHZvaWQpOwpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvcmVwbGljYXRpb24vb3JpZ2luLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNh dGlvbi9vcmlnaW4uaAppbmRleCBlYjQ2YjQxYjRiNy4uYTY5ZmFmNmVhYWYgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL29yaWdpbi5oCisrKyBiL3NyYy9pbmNsdWRl L3JlcGxpY2F0aW9uL29yaWdpbi5oCkBAIC04NCw4ICs4NCw0IEBAIGV4dGVybiB2b2lkIHJl cGxvcmlnaW5fcmVkbyhYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCk7CiBleHRlcm4gdm9pZCBy ZXBsb3JpZ2luX2Rlc2MoU3RyaW5nSW5mbyBidWYsIFhMb2dSZWFkZXJTdGF0ZSAqcmVjb3Jk KTsKIGV4dGVybiBjb25zdCBjaGFyICpyZXBsb3JpZ2luX2lkZW50aWZ5KHVpbnQ4IGluZm8p OwogCi0vKiBzaGFyZWQgbWVtb3J5IGFsbG9jYXRpb24gKi8KLWV4dGVybiBTaXplIFJlcGxp Y2F0aW9uT3JpZ2luU2htZW1TaXplKHZvaWQpOwotZXh0ZXJuIHZvaWQgUmVwbGljYXRpb25P cmlnaW5TaG1lbUluaXQodm9pZCk7Ci0KICNlbmRpZgkJCQkJCQkvKiBQR19PUklHSU5fSCAq LwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xvdC5oIGIvc3JjL2lu Y2x1ZGUvcmVwbGljYXRpb24vc2xvdC5oCmluZGV4IDRiNDcwOWY2ZTJjLi4xYTM1NTdkZTYw NyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xvdC5oCisrKyBiL3Ny Yy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3QuaApAQCAtMzI3LDEwICszMjcsNiBAQCBleHRl cm4gUEdETExJTVBPUlQgaW50IG1heF9yZXBsaWNhdGlvbl9zbG90czsKIGV4dGVybiBQR0RM TElNUE9SVCBjaGFyICpzeW5jaHJvbml6ZWRfc3RhbmRieV9zbG90czsKIGV4dGVybiBQR0RM TElNUE9SVCBpbnQgaWRsZV9yZXBsaWNhdGlvbl9zbG90X3RpbWVvdXRfc2VjczsKIAotLyog c2htZW0gaW5pdGlhbGl6YXRpb24gZnVuY3Rpb25zICovCi1leHRlcm4gU2l6ZSBSZXBsaWNh dGlvblNsb3RzU2htZW1TaXplKHZvaWQpOwotZXh0ZXJuIHZvaWQgUmVwbGljYXRpb25TbG90 c1NobWVtSW5pdCh2b2lkKTsKLQogLyogbWFuYWdlbWVudCBvZiBpbmRpdmlkdWFsIHNsb3Rz ICovCiBleHRlcm4gdm9pZCBSZXBsaWNhdGlvblNsb3RDcmVhdGUoY29uc3QgY2hhciAqbmFt ZSwgYm9vbCBkYl9zcGVjaWZpYywKIAkJCQkJCQkJICBSZXBsaWNhdGlvblNsb3RQZXJzaXN0 ZW5jeSBwZXJzaXN0ZW5jeSwKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9u L3Nsb3RzeW5jLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9zbG90c3luYy5oCmluZGV4 IGU1NDZkMGQwNTBkLi5kMjEyMWNkM2VkNyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvcmVw bGljYXRpb24vc2xvdHN5bmMuaAorKysgYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9zbG90 c3luYy5oCkBAIC0zMSw4ICszMSw2IEBAIHBnX25vcmV0dXJuIGV4dGVybiB2b2lkIFJlcGxT bG90U3luY1dvcmtlck1haW4oY29uc3Qgdm9pZCAqc3RhcnR1cF9kYXRhLCBzaXplX3QKIGV4 dGVybiB2b2lkIFNodXREb3duU2xvdFN5bmModm9pZCk7CiBleHRlcm4gYm9vbCBTbG90U3lu Y1dvcmtlckNhblJlc3RhcnQodm9pZCk7CiBleHRlcm4gYm9vbCBJc1N5bmNpbmdSZXBsaWNh dGlvblNsb3RzKHZvaWQpOwotZXh0ZXJuIFNpemUgU2xvdFN5bmNTaG1lbVNpemUodm9pZCk7 Ci1leHRlcm4gdm9pZCBTbG90U3luY1NobWVtSW5pdCh2b2lkKTsKIGV4dGVybiB2b2lkIFN5 bmNSZXBsaWNhdGlvblNsb3RzKFdhbFJlY2VpdmVyQ29ubiAqd3Jjb25uKTsKIAogI2VuZGlm CQkJCQkJCS8qIFNMT1RTWU5DX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxp Y2F0aW9uL3dhbHJlY2VpdmVyLmggYi9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi93YWxyZWNl aXZlci5oCmluZGV4IDg1ZDI0Yzg3Mjk4Li40N2MwNzU3NGQ0ZCAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuaAorKysgYi9zcmMvaW5jbHVkZS9y ZXBsaWNhdGlvbi93YWxyZWNlaXZlci5oCkBAIC00OTEsOCArNDkxLDYgQEAgcGdfbm9yZXR1 cm4gZXh0ZXJuIHZvaWQgV2FsUmVjZWl2ZXJNYWluKGNvbnN0IHZvaWQgKnN0YXJ0dXBfZGF0 YSwgc2l6ZV90IHN0YXJ0dXAKIGV4dGVybiB2b2lkIFdhbFJjdlJlcXVlc3RBcHBseVJlcGx5 KHZvaWQpOwogCiAvKiBwcm90b3R5cGVzIGZvciBmdW5jdGlvbnMgaW4gd2FscmVjZWl2ZXJm dW5jcy5jICovCi1leHRlcm4gU2l6ZSBXYWxSY3ZTaG1lbVNpemUodm9pZCk7Ci1leHRlcm4g dm9pZCBXYWxSY3ZTaG1lbUluaXQodm9pZCk7CiBleHRlcm4gdm9pZCBTaHV0ZG93bldhbFJj dih2b2lkKTsKIGV4dGVybiBib29sIFdhbFJjdlN0cmVhbWluZyh2b2lkKTsKIGV4dGVybiBi b29sIFdhbFJjdlJ1bm5pbmcodm9pZCk7CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBs aWNhdGlvbi93YWxzZW5kZXIuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dhbHNlbmRl ci5oCmluZGV4IGE0ZGYzYjhlMGFlLi44OTUyYzg0OGQxOSAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmgKKysrIGIvc3JjL2luY2x1ZGUvcmVwbGlj YXRpb24vd2Fsc2VuZGVyLmgKQEAgLTQxLDggKzQxLDYgQEAgZXh0ZXJuIHZvaWQgV2FsU25k RXJyb3JDbGVhbnVwKHZvaWQpOwogZXh0ZXJuIHZvaWQgUGh5c2ljYWxXYWtldXBMb2dpY2Fs V2FsU25kKHZvaWQpOwogZXh0ZXJuIFhMb2dSZWNQdHIgR2V0U3RhbmRieUZsdXNoUmVjUHRy KFRpbWVMaW5lSUQgKnRsaSk7CiBleHRlcm4gdm9pZCBXYWxTbmRTaWduYWxzKHZvaWQpOwot ZXh0ZXJuIFNpemUgV2FsU25kU2htZW1TaXplKHZvaWQpOwotZXh0ZXJuIHZvaWQgV2FsU25k U2htZW1Jbml0KHZvaWQpOwogZXh0ZXJuIHZvaWQgV2FsU25kV2FrZXVwKGJvb2wgcGh5c2lj YWwsIGJvb2wgbG9naWNhbCk7CiBleHRlcm4gdm9pZCBXYWxTbmRJbml0U3RvcHBpbmcodm9p ZCk7CiBleHRlcm4gdm9pZCBXYWxTbmRXYWl0U3RvcHBpbmcodm9pZCk7CmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9zdG9yYWdlL2xvY2suaCBiL3NyYy9pbmNsdWRlL3N0b3JhZ2UvbG9j ay5oCmluZGV4IGZhNjhlNmVjZWNlLi5lZTNjYjFkYzIwMyAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvc3RvcmFnZS9sb2NrLmgKKysrIGIvc3JjL2luY2x1ZGUvc3RvcmFnZS9sb2NrLmgK QEAgLTM3NSw4ICszNzUsNiBAQCB0eXBlZGVmIGVudW0KIC8qCiAgKiBmdW5jdGlvbiBwcm90 b3R5cGVzCiAgKi8KLWV4dGVybiB2b2lkIExvY2tNYW5hZ2VyU2htZW1Jbml0KHZvaWQpOwot ZXh0ZXJuIFNpemUgTG9ja01hbmFnZXJTaG1lbVNpemUodm9pZCk7CiBleHRlcm4gdm9pZCBJ bml0TG9ja01hbmFnZXJBY2Nlc3Modm9pZCk7CiBleHRlcm4gTG9ja01ldGhvZCBHZXRMb2Nr c01ldGhvZFRhYmxlKGNvbnN0IExPQ0sgKmxvY2spOwogZXh0ZXJuIExvY2tNZXRob2QgR2V0 TG9ja1RhZ3NNZXRob2RUYWJsZShjb25zdCBMT0NLVEFHICpsb2NrdGFnKTsKZGlmZiAtLWdp dCBhL3NyYy9pbmNsdWRlL3N0b3JhZ2Uvc3Vic3lzdGVtbGlzdC5oIGIvc3JjL2luY2x1ZGUv c3RvcmFnZS9zdWJzeXN0ZW1saXN0LmgKaW5kZXggZDhlMTE3NTZhNjEuLjVlMDkyNTUyYzcy IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9zdG9yYWdlL3N1YnN5c3RlbWxpc3QuaAorKysg Yi9zcmMvaW5jbHVkZS9zdG9yYWdlL3N1YnN5c3RlbWxpc3QuaApAQCAtMzIsNiArMzIsOSBA QCBQR19TSE1FTV9TVUJTWVNURU0oRFNNUmVnaXN0cnlTaG1lbUNhbGxiYWNrcykKIAogLyog eGxvZywgY2xvZywgYW5kIGJ1ZmZlcnMgKi8KIFBHX1NITUVNX1NVQlNZU1RFTShWYXJzdXBT aG1lbUNhbGxiYWNrcykKK1BHX1NITUVNX1NVQlNZU1RFTShYTE9HU2htZW1DYWxsYmFja3Mp CitQR19TSE1FTV9TVUJTWVNURU0oWExvZ1ByZWZldGNoU2htZW1DYWxsYmFja3MpCitQR19T SE1FTV9TVUJTWVNURU0oWExvZ1JlY292ZXJ5U2htZW1DYWxsYmFja3MpCiBQR19TSE1FTV9T VUJTWVNURU0oQ0xPR1NobWVtQ2FsbGJhY2tzKQogUEdfU0hNRU1fU1VCU1lTVEVNKENvbW1p dFRzU2htZW1DYWxsYmFja3MpCiBQR19TSE1FTV9TVUJTWVNURU0oU1VCVFJBTlNTaG1lbUNh bGxiYWNrcykKQEAgLTQwLDEyICs0MywxOCBAQCBQR19TSE1FTV9TVUJTWVNURU0oQnVmZmVy TWFuYWdlclNobWVtQ2FsbGJhY2tzKQogUEdfU0hNRU1fU1VCU1lTVEVNKFN0cmF0ZWd5Q3Rs U2htZW1DYWxsYmFja3MpCiBQR19TSE1FTV9TVUJTWVNURU0oQnVmVGFibGVTaG1lbUNhbGxi YWNrcykKIAorLyogbG9jayBtYW5hZ2VyICovCitQR19TSE1FTV9TVUJTWVNURU0oTG9ja01h bmFnZXJTaG1lbUNhbGxiYWNrcykKKwogLyogcHJlZGljYXRlIGxvY2sgbWFuYWdlciAqLwog UEdfU0hNRU1fU1VCU1lTVEVNKFByZWRpY2F0ZUxvY2tTaG1lbUNhbGxiYWNrcykKIAogLyog cHJvY2VzcyB0YWJsZSAqLwogUEdfU0hNRU1fU1VCU1lTVEVNKFByb2NHbG9iYWxTaG1lbUNh bGxiYWNrcykKIFBHX1NITUVNX1NVQlNZU1RFTShQcm9jQXJyYXlTaG1lbUNhbGxiYWNrcykK K1BHX1NITUVNX1NVQlNZU1RFTShCYWNrZW5kU3RhdHVzU2htZW1DYWxsYmFja3MpCitQR19T SE1FTV9TVUJTWVNURU0oVHdvUGhhc2VTaG1lbUNhbGxiYWNrcykKK1BHX1NITUVNX1NVQlNZ U1RFTShCYWNrZ3JvdW5kV29ya2VyU2htZW1DYWxsYmFja3MpCiAKIC8qIHNoYXJlZC1pbnZh bCBtZXNzYWdpbmcgKi8KIFBHX1NITUVNX1NVQlNZU1RFTShTaGFyZWRJbnZhbFNobWVtQ2Fs bGJhY2tzKQpAQCAtNTMsOSArNjIsMjcgQEAgUEdfU0hNRU1fU1VCU1lTVEVNKFNoYXJlZElu dmFsU2htZW1DYWxsYmFja3MpCiAvKiBpbnRlcnByb2Nlc3Mgc2lnbmFsaW5nIG1lY2hhbmlz bXMgKi8KIFBHX1NITUVNX1NVQlNZU1RFTShQTVNpZ25hbFNobWVtQ2FsbGJhY2tzKQogUEdf U0hNRU1fU1VCU1lTVEVNKFByb2NTaWduYWxTaG1lbUNhbGxiYWNrcykKK1BHX1NITUVNX1NV QlNZU1RFTShDaGVja3BvaW50ZXJTaG1lbUNhbGxiYWNrcykKK1BHX1NITUVNX1NVQlNZU1RF TShBdXRvVmFjdXVtU2htZW1DYWxsYmFja3MpCitQR19TSE1FTV9TVUJTWVNURU0oUmVwbGlj YXRpb25TbG90c1NobWVtQ2FsbGJhY2tzKQorUEdfU0hNRU1fU1VCU1lTVEVNKFJlcGxpY2F0 aW9uT3JpZ2luU2htZW1DYWxsYmFja3MpCitQR19TSE1FTV9TVUJTWVNURU0oV2FsU25kU2ht ZW1DYWxsYmFja3MpCitQR19TSE1FTV9TVUJTWVNURU0oV2FsUmN2U2htZW1DYWxsYmFja3Mp CitQR19TSE1FTV9TVUJTWVNURU0oV2FsU3VtbWFyaXplclNobWVtQ2FsbGJhY2tzKQorUEdf U0hNRU1fU1VCU1lTVEVNKFBnQXJjaFNobWVtQ2FsbGJhY2tzKQorUEdfU0hNRU1fU1VCU1lT VEVNKEFwcGx5TGF1bmNoZXJTaG1lbUNhbGxiYWNrcykKK1BHX1NITUVNX1NVQlNZU1RFTShT bG90U3luY1NobWVtQ2FsbGJhY2tzKQogCiAvKiBvdGhlciBtb2R1bGVzIHRoYXQgbmVlZCBz b21lIHNoYXJlZCBtZW1vcnkgc3BhY2UgKi8KK1BHX1NITUVNX1NVQlNZU1RFTShCVHJlZVNo bWVtQ2FsbGJhY2tzKQorUEdfU0hNRU1fU1VCU1lTVEVNKFN5bmNTY2FuU2htZW1DYWxsYmFj a3MpCiBQR19TSE1FTV9TVUJTWVNURU0oQXN5bmNTaG1lbUNhbGxiYWNrcykKK1BHX1NITUVN X1NVQlNZU1RFTShTdGF0c1NobWVtQ2FsbGJhY2tzKQorUEdfU0hNRU1fU1VCU1lTVEVNKFdh aXRFdmVudEN1c3RvbVNobWVtQ2FsbGJhY2tzKQorUEdfU0hNRU1fU1VCU1lTVEVNKEluamVj dGlvblBvaW50U2htZW1DYWxsYmFja3MpCitQR19TSE1FTV9TVUJTWVNURU0oV2FpdExTTlNo bWVtQ2FsbGJhY2tzKQorUEdfU0hNRU1fU1VCU1lTVEVNKExvZ2ljYWxEZWNvZGluZ0N0bFNo bWVtQ2FsbGJhY2tzKQorUEdfU0hNRU1fU1VCU1lTVEVNKERhdGFDaGVja3N1bXNTaG1lbUNh bGxiYWNrcykKIAogLyogQUlPIHN1YnN5c3RlbS4gVGhpcyBkZWxlZ2F0ZXMgdG8gdGhlIG1l dGhvZC1zcGVjaWZpYyBjYWxsYmFja3MgKi8KIFBHX1NITUVNX1NVQlNZU1RFTShBaW9TaG1l bUNhbGxiYWNrcykKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2JhY2tlbmRfc3Rh dHVzLmggYi9zcmMvaW5jbHVkZS91dGlscy9iYWNrZW5kX3N0YXR1cy5oCmluZGV4IGRkZDA2 MzA0ZTk3Li5hMzM0ZTA5NmU0YSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvdXRpbHMvYmFj a2VuZF9zdGF0dXMuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy9iYWNrZW5kX3N0YXR1cy5o CkBAIC0yOTgsMTQgKzI5OCw2IEBAIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgcGdzdGF0X3Ry YWNrX2FjdGl2aXR5X3F1ZXJ5X3NpemU7CiBleHRlcm4gUEdETExJTVBPUlQgUGdCYWNrZW5k U3RhdHVzICpNeUJFRW50cnk7CiAKIAotLyogLS0tLS0tLS0tLQotICogRnVuY3Rpb25zIGNh bGxlZCBmcm9tIHBvc3RtYXN0ZXIKLSAqIC0tLS0tLS0tLS0KLSAqLwotZXh0ZXJuIFNpemUg QmFja2VuZFN0YXR1c1NobWVtU2l6ZSh2b2lkKTsKLWV4dGVybiB2b2lkIEJhY2tlbmRTdGF0 dXNTaG1lbUluaXQodm9pZCk7Ci0KLQogLyogLS0tLS0tLS0tLQogICogRnVuY3Rpb25zIGNh bGxlZCBmcm9tIGJhY2tlbmRzCiAgKiAtLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvaW5j bHVkZS91dGlscy9pbmplY3Rpb25fcG9pbnQuaCBiL3NyYy9pbmNsdWRlL3V0aWxzL2luamVj dGlvbl9wb2ludC5oCmluZGV4IDI3YTI1MjY1MjRmLi5mYWJkMTQ1NWMzYyAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvdXRpbHMvaW5qZWN0aW9uX3BvaW50LmgKKysrIGIvc3JjL2luY2x1 ZGUvdXRpbHMvaW5qZWN0aW9uX3BvaW50LmgKQEAgLTQ2LDkgKzQ2LDYgQEAgdHlwZWRlZiB2 b2lkICgqSW5qZWN0aW9uUG9pbnRDYWxsYmFjaykgKGNvbnN0IGNoYXIgKm5hbWUsCiAJCQkJ CQkJCQkJY29uc3Qgdm9pZCAqcHJpdmF0ZV9kYXRhLAogCQkJCQkJCQkJCXZvaWQgKmFyZyk7 CiAKLWV4dGVybiBTaXplIEluamVjdGlvblBvaW50U2htZW1TaXplKHZvaWQpOwotZXh0ZXJu IHZvaWQgSW5qZWN0aW9uUG9pbnRTaG1lbUluaXQodm9pZCk7Ci0KIGV4dGVybiB2b2lkIElu amVjdGlvblBvaW50QXR0YWNoKGNvbnN0IGNoYXIgKm5hbWUsCiAJCQkJCQkJCSBjb25zdCBj aGFyICpsaWJyYXJ5LAogCQkJCQkJCQkgY29uc3QgY2hhciAqZnVuY3Rpb24sCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmggYi9zcmMvaW5jbHVkZS91dGls cy93YWl0X2V2ZW50LmgKaW5kZXggMzRjMjdjYzNkYzMuLjg2ZWUzNDgyMjBkIDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS91dGlscy93YWl0X2V2ZW50LmgKKysrIGIvc3JjL2luY2x1ZGUv dXRpbHMvd2FpdF9ldmVudC5oCkBAIC00Miw4ICs0Miw2IEBAIGV4dGVybiBQR0RMTElNUE9S VCB1aW50MzIgKm15X3dhaXRfZXZlbnRfaW5mbzsKIGV4dGVybiB1aW50MzIgV2FpdEV2ZW50 RXh0ZW5zaW9uTmV3KGNvbnN0IGNoYXIgKndhaXRfZXZlbnRfbmFtZSk7CiBleHRlcm4gdWlu dDMyIFdhaXRFdmVudEluamVjdGlvblBvaW50TmV3KGNvbnN0IGNoYXIgKndhaXRfZXZlbnRf bmFtZSk7CiAKLWV4dGVybiB2b2lkIFdhaXRFdmVudEN1c3RvbVNobWVtSW5pdCh2b2lkKTsK LWV4dGVybiBTaXplIFdhaXRFdmVudEN1c3RvbVNobWVtU2l6ZSh2b2lkKTsKIGV4dGVybiBj aGFyICoqR2V0V2FpdEV2ZW50Q3VzdG9tTmFtZXModWludDMyIGNsYXNzSWQsIGludCAqbndh aXRldmVudHMpOwogCiAvKiAtLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1 bGVzL2luamVjdGlvbl9wb2ludHMvaW5qZWN0aW9uX3BvaW50cy5jIGIvc3JjL3Rlc3QvbW9k dWxlcy9pbmplY3Rpb25fcG9pbnRzL2luamVjdGlvbl9wb2ludHMuYwppbmRleCBkNTljNWFk MDU4Mi4uMGYxYWY1MTM2NzMgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvaW5qZWN0 aW9uX3BvaW50cy9pbmplY3Rpb25fcG9pbnRzLmMKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9p bmplY3Rpb25fcG9pbnRzL2luamVjdGlvbl9wb2ludHMuYwpAQCAtMTA3LDkgKzEwNywxMyBA QCBleHRlcm4gUEdETExFWFBPUlQgdm9pZCBpbmplY3Rpb25fd2FpdChjb25zdCBjaGFyICpu YW1lLAogLyogdHJhY2sgaWYgaW5qZWN0aW9uIHBvaW50cyBhdHRhY2hlZCBpbiB0aGlzIHBy b2Nlc3MgYXJlIGxpbmtlZCB0byBpdCAqLwogc3RhdGljIGJvb2wgaW5qZWN0aW9uX3BvaW50 X2xvY2FsID0gZmFsc2U7CiAKLS8qIFNoYXJlZCBtZW1vcnkgaW5pdCBjYWxsYmFja3MgKi8K LXN0YXRpYyBzaG1lbV9yZXF1ZXN0X2hvb2tfdHlwZSBwcmV2X3NobWVtX3JlcXVlc3RfaG9v ayA9IE5VTEw7Ci1zdGF0aWMgc2htZW1fc3RhcnR1cF9ob29rX3R5cGUgcHJldl9zaG1lbV9z dGFydHVwX2hvb2sgPSBOVUxMOworc3RhdGljIHZvaWQgaW5qZWN0aW9uX3NobWVtX3JlcXVl c3Qodm9pZCAqYXJnKTsKK3N0YXRpYyB2b2lkIGluamVjdGlvbl9zaG1lbV9pbml0KHZvaWQg KmFyZyk7CisKK3N0YXRpYyBjb25zdCBTaG1lbUNhbGxiYWNrcyBpbmplY3Rpb25fc2htZW1f Y2FsbGJhY2tzID0geworCS5yZXF1ZXN0X2ZuID0gaW5qZWN0aW9uX3NobWVtX3JlcXVlc3Qs CisJLmluaXRfZm4gPSBpbmplY3Rpb25fc2htZW1faW5pdCwKK307CiAKIC8qCiAgKiBSb3V0 aW5lIGZvciBzaGFyZWQgbWVtb3J5IGFyZWEgaW5pdGlhbGl6YXRpb24sIHVzZWQgYXMgYSBj YWxsYmFjawpAQCAtMTI2LDQ0ICsxMzAsMjMgQEAgaW5qZWN0aW9uX3BvaW50X2luaXRfc3Rh dGUodm9pZCAqcHRyLCB2b2lkICphcmcpCiAJQ29uZGl0aW9uVmFyaWFibGVJbml0KCZzdGF0 ZS0+d2FpdF9wb2ludCk7CiB9CiAKLS8qIFNoYXJlZCBtZW1vcnkgaW5pdGlhbGl6YXRpb24g d2hlbiBsb2FkaW5nIG1vZHVsZSAqLwogc3RhdGljIHZvaWQKLWluamVjdGlvbl9zaG1lbV9y ZXF1ZXN0KHZvaWQpCitpbmplY3Rpb25fc2htZW1fcmVxdWVzdCh2b2lkICphcmcpCiB7Ci0J U2l6ZQkJc2l6ZTsKLQotCWlmIChwcmV2X3NobWVtX3JlcXVlc3RfaG9vaykKLQkJcHJldl9z aG1lbV9yZXF1ZXN0X2hvb2soKTsKLQotCXNpemUgPSBNQVhBTElHTihzaXplb2YoSW5qZWN0 aW9uUG9pbnRTaGFyZWRTdGF0ZSkpOwotCVJlcXVlc3RBZGRpblNobWVtU3BhY2Uoc2l6ZSk7 CisJU2htZW1SZXF1ZXN0U3RydWN0KC5uYW1lID0gImluamVjdGlvbl9wb2ludHMiLAorCQkJ CQkgICAuc2l6ZSA9IHNpemVvZihJbmplY3Rpb25Qb2ludFNoYXJlZFN0YXRlKSwKKwkJCQkJ ICAgLnB0ciA9ICh2b2lkICoqKSAmaW5qX3N0YXRlLAorCQkpOwogfQogCiBzdGF0aWMgdm9p ZAotaW5qZWN0aW9uX3NobWVtX3N0YXJ0dXAodm9pZCkKK2luamVjdGlvbl9zaG1lbV9pbml0 KHZvaWQgKmFyZykKIHsKLQlib29sCQlmb3VuZDsKLQotCWlmIChwcmV2X3NobWVtX3N0YXJ0 dXBfaG9vaykKLQkJcHJldl9zaG1lbV9zdGFydHVwX2hvb2soKTsKLQotCS8qIENyZWF0ZSBv ciBhdHRhY2ggdG8gdGhlIHNoYXJlZCBtZW1vcnkgc3RhdGUgKi8KLQlMV0xvY2tBY3F1aXJl KEFkZGluU2htZW1Jbml0TG9jaywgTFdfRVhDTFVTSVZFKTsKLQotCWlual9zdGF0ZSA9IFNo bWVtSW5pdFN0cnVjdCgiaW5qZWN0aW9uX3BvaW50cyIsCi0JCQkJCQkJCXNpemVvZihJbmpl Y3Rpb25Qb2ludFNoYXJlZFN0YXRlKSwKLQkJCQkJCQkJJmZvdW5kKTsKLQotCWlmICghZm91 bmQpCi0JewotCQkvKgotCQkgKiBGaXJzdCB0aW1lIHRocm91Z2gsIHNvIGluaXRpYWxpemUu ICBUaGlzIGlzIHNoYXJlZCB3aXRoIHRoZSBkeW5hbWljCi0JCSAqIGluaXRpYWxpemF0aW9u IHVzaW5nIGEgRFNNLgotCQkgKi8KLQkJaW5qZWN0aW9uX3BvaW50X2luaXRfc3RhdGUoaW5q X3N0YXRlLCBOVUxMKTsKLQl9Ci0KLQlMV0xvY2tSZWxlYXNlKEFkZGluU2htZW1Jbml0TG9j ayk7CisJLyoKKwkgKiBGaXJzdCB0aW1lIHRocm91Z2gsIHNvIGluaXRpYWxpemUuICBUaGlz IGlzIHNoYXJlZCB3aXRoIHRoZSBkeW5hbWljCisJICogaW5pdGlhbGl6YXRpb24gdXNpbmcg YSBEU00uCisJICovCisJaW5qZWN0aW9uX3BvaW50X2luaXRfc3RhdGUoaW5qX3N0YXRlLCBO VUxMKTsKIH0KIAogLyoKQEAgLTYwMSw5ICs1ODQsNSBAQCBfUEdfaW5pdCh2b2lkKQogCWlm ICghcHJvY2Vzc19zaGFyZWRfcHJlbG9hZF9saWJyYXJpZXNfaW5fcHJvZ3Jlc3MpCiAJCXJl dHVybjsKIAotCS8qIFNoYXJlZCBtZW1vcnkgaW5pdGlhbGl6YXRpb24gKi8KLQlwcmV2X3No bWVtX3JlcXVlc3RfaG9vayA9IHNobWVtX3JlcXVlc3RfaG9vazsKLQlzaG1lbV9yZXF1ZXN0 X2hvb2sgPSBpbmplY3Rpb25fc2htZW1fcmVxdWVzdDsKLQlwcmV2X3NobWVtX3N0YXJ0dXBf aG9vayA9IHNobWVtX3N0YXJ0dXBfaG9vazsKLQlzaG1lbV9zdGFydHVwX2hvb2sgPSBpbmpl Y3Rpb25fc2htZW1fc3RhcnR1cDsKKwlSZWdpc3RlclNobWVtQ2FsbGJhY2tzKCZpbmplY3Rp b25fc2htZW1fY2FsbGJhY2tzKTsKIH0KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMv dGVzdF9haW8vdGVzdF9haW8uYyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9haW8vdGVzdF9h aW8uYwppbmRleCBkNzUzMDY4MTE5Mi4uMzVlZmJhMWE1ZTMgMTAwNjQ0Ci0tLSBhL3NyYy90 ZXN0L21vZHVsZXMvdGVzdF9haW8vdGVzdF9haW8uYworKysgYi9zcmMvdGVzdC9tb2R1bGVz L3Rlc3RfYWlvL3Rlc3RfYWlvLmMKQEAgLTI4LDcgKzI4LDYgQEAKICNpbmNsdWRlICJzdG9y YWdlL2J1Zm1nci5oIgogI2luY2x1ZGUgInN0b3JhZ2UvY2hlY2tzdW0uaCIKICNpbmNsdWRl ICJzdG9yYWdlL2NvbmRpdGlvbl92YXJpYWJsZS5oIgotI2luY2x1ZGUgInN0b3JhZ2UvaXBj LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9sd2xvY2suaCIKICNpbmNsdWRlICJzdG9yYWdlL3By b2MuaCIKICNpbmNsdWRlICJzdG9yYWdlL3Byb2NudW1iZXIuaCIKQEAgLTQ0LDYgKzQzLDcg QEAKIFBHX01PRFVMRV9NQUdJQzsKIAogCisvKiBJbiBzaGFyZWQgbWVtb3J5ICovCiB0eXBl ZGVmIHN0cnVjdCBJbmpJb0Vycm9yU3RhdGUKIHsKIAlDb25kaXRpb25WYXJpYWJsZSBjdjsK QEAgLTc0LDggKzc0LDE1IEBAIHR5cGVkZWYgc3RydWN0IEJsb2Nrc1JlYWRTdHJlYW1EYXRh CiBzdGF0aWMgSW5qSW9FcnJvclN0YXRlICppbmpfaW9fZXJyb3Jfc3RhdGU7CiAKIC8qIFNo YXJlZCBtZW1vcnkgaW5pdCBjYWxsYmFja3MgKi8KLXN0YXRpYyBzaG1lbV9yZXF1ZXN0X2hv b2tfdHlwZSBwcmV2X3NobWVtX3JlcXVlc3RfaG9vayA9IE5VTEw7Ci1zdGF0aWMgc2htZW1f c3RhcnR1cF9ob29rX3R5cGUgcHJldl9zaG1lbV9zdGFydHVwX2hvb2sgPSBOVUxMOworc3Rh dGljIHZvaWQgdGVzdF9haW9fc2htZW1fcmVxdWVzdCh2b2lkICphcmcpOworc3RhdGljIHZv aWQgdGVzdF9haW9fc2htZW1faW5pdCh2b2lkICphcmcpOworc3RhdGljIHZvaWQgdGVzdF9h aW9fc2htZW1fYXR0YWNoKHZvaWQgKmFyZyk7CisKK3N0YXRpYyBjb25zdCBTaG1lbUNhbGxi YWNrcyBpbmpfaW9fc2htZW1fY2FsbGJhY2tzID0geworCS5yZXF1ZXN0X2ZuID0gdGVzdF9h aW9fc2htZW1fcmVxdWVzdCwKKwkuaW5pdF9mbiA9IHRlc3RfYWlvX3NobWVtX2luaXQsCisJ LmF0dGFjaF9mbiA9IHRlc3RfYWlvX3NobWVtX2F0dGFjaCwKK307CiAKIAogc3RhdGljIFBn QWlvSGFuZGxlICpsYXN0X2hhbmRsZTsKQEAgLTgzLDcwICs5MCw1NSBAQCBzdGF0aWMgUGdB aW9IYW5kbGUgKmxhc3RfaGFuZGxlOwogCiAKIHN0YXRpYyB2b2lkCi10ZXN0X2Fpb19zaG1l bV9yZXF1ZXN0KHZvaWQpCit0ZXN0X2Fpb19zaG1lbV9yZXF1ZXN0KHZvaWQgKmFyZykKIHsK LQlpZiAocHJldl9zaG1lbV9yZXF1ZXN0X2hvb2spCi0JCXByZXZfc2htZW1fcmVxdWVzdF9o b29rKCk7Ci0KLQlSZXF1ZXN0QWRkaW5TaG1lbVNwYWNlKHNpemVvZihJbmpJb0Vycm9yU3Rh dGUpKTsKKwlTaG1lbVJlcXVlc3RTdHJ1Y3QoLm5hbWUgPSAidGVzdF9haW8gaW5qZWN0aW9u IHBvaW50cyIsCisJCQkJCSAgIC5zaXplID0gc2l6ZW9mKEluaklvRXJyb3JTdGF0ZSksCisJ CQkJCSAgIC5wdHIgPSAodm9pZCAqKikgJmlual9pb19lcnJvcl9zdGF0ZSwKKwkJKTsKIH0K IAogc3RhdGljIHZvaWQKLXRlc3RfYWlvX3NobWVtX3N0YXJ0dXAodm9pZCkKK3Rlc3RfYWlv X3NobWVtX2luaXQodm9pZCAqYXJnKQogewotCWJvb2wJCWZvdW5kOwotCi0JaWYgKHByZXZf c2htZW1fc3RhcnR1cF9ob29rKQotCQlwcmV2X3NobWVtX3N0YXJ0dXBfaG9vaygpOwotCi0J LyogQ3JlYXRlIG9yIGF0dGFjaCB0byB0aGUgc2hhcmVkIG1lbW9yeSBzdGF0ZSAqLwotCUxX TG9ja0FjcXVpcmUoQWRkaW5TaG1lbUluaXRMb2NrLCBMV19FWENMVVNJVkUpOwotCi0JaW5q X2lvX2Vycm9yX3N0YXRlID0gU2htZW1Jbml0U3RydWN0KCJpbmplY3Rpb25fcG9pbnRzIiwK LQkJCQkJCQkJCQkgc2l6ZW9mKEluaklvRXJyb3JTdGF0ZSksCi0JCQkJCQkJCQkJICZmb3Vu ZCk7Ci0KLQlpZiAoIWZvdW5kKQotCXsKLQkJLyogRmlyc3QgdGltZSB0aHJvdWdoLCBpbml0 aWFsaXplICovCi0JCWlual9pb19lcnJvcl9zdGF0ZS0+ZW5hYmxlZF9zaG9ydF9yZWFkID0g ZmFsc2U7Ci0JCWlual9pb19lcnJvcl9zdGF0ZS0+ZW5hYmxlZF9yZW9wZW4gPSBmYWxzZTsK LQkJaW5qX2lvX2Vycm9yX3N0YXRlLT5lbmFibGVkX2NvbXBsZXRpb25fd2FpdCA9IGZhbHNl OworCS8qIEZpcnN0IHRpbWUgdGhyb3VnaCwgaW5pdGlhbGl6ZSAqLworCWlual9pb19lcnJv cl9zdGF0ZS0+ZW5hYmxlZF9zaG9ydF9yZWFkID0gZmFsc2U7CisJaW5qX2lvX2Vycm9yX3N0 YXRlLT5lbmFibGVkX3Jlb3BlbiA9IGZhbHNlOworCWlual9pb19lcnJvcl9zdGF0ZS0+ZW5h YmxlZF9jb21wbGV0aW9uX3dhaXQgPSBmYWxzZTsKIAotCQlDb25kaXRpb25WYXJpYWJsZUlu aXQoJmlual9pb19lcnJvcl9zdGF0ZS0+Y3YpOwotCQlpbmpfaW9fZXJyb3Jfc3RhdGUtPmNv bXBsZXRpb25fd2FpdF9ldmVudCA9IFdhaXRFdmVudEluamVjdGlvblBvaW50TmV3KCJjb21w bGV0aW9uX3dhaXQiKTsKKwlDb25kaXRpb25WYXJpYWJsZUluaXQoJmlual9pb19lcnJvcl9z dGF0ZS0+Y3YpOworCWlual9pb19lcnJvcl9zdGF0ZS0+Y29tcGxldGlvbl93YWl0X2V2ZW50 ID0gV2FpdEV2ZW50SW5qZWN0aW9uUG9pbnROZXcoImNvbXBsZXRpb25fd2FpdCIpOwogCiAj aWZkZWYgVVNFX0lOSkVDVElPTl9QT0lOVFMKLQkJSW5qZWN0aW9uUG9pbnRBdHRhY2goImFp by1wcm9jZXNzLWNvbXBsZXRpb24tYmVmb3JlLXNoYXJlZCIsCi0JCQkJCQkJICJ0ZXN0X2Fp byIsCi0JCQkJCQkJICJpbmpfaW9fY29tcGxldGlvbl9ob29rIiwKLQkJCQkJCQkgTlVMTCwK LQkJCQkJCQkgMCk7Ci0JCUluamVjdGlvblBvaW50TG9hZCgiYWlvLXByb2Nlc3MtY29tcGxl dGlvbi1iZWZvcmUtc2hhcmVkIik7Ci0KLQkJSW5qZWN0aW9uUG9pbnRBdHRhY2goImFpby13 b3JrZXItYWZ0ZXItcmVvcGVuIiwKLQkJCQkJCQkgInRlc3RfYWlvIiwKLQkJCQkJCQkgImlu al9pb19yZW9wZW4iLAotCQkJCQkJCSBOVUxMLAotCQkJCQkJCSAwKTsKLQkJSW5qZWN0aW9u UG9pbnRMb2FkKCJhaW8td29ya2VyLWFmdGVyLXJlb3BlbiIpOworCUluamVjdGlvblBvaW50 QXR0YWNoKCJhaW8tcHJvY2Vzcy1jb21wbGV0aW9uLWJlZm9yZS1zaGFyZWQiLAorCQkJCQkJ ICJ0ZXN0X2FpbyIsCisJCQkJCQkgImlual9pb19jb21wbGV0aW9uX2hvb2siLAorCQkJCQkJ IE5VTEwsCisJCQkJCQkgMCk7CisJSW5qZWN0aW9uUG9pbnRMb2FkKCJhaW8tcHJvY2Vzcy1j b21wbGV0aW9uLWJlZm9yZS1zaGFyZWQiKTsKKworCUluamVjdGlvblBvaW50QXR0YWNoKCJh aW8td29ya2VyLWFmdGVyLXJlb3BlbiIsCisJCQkJCQkgInRlc3RfYWlvIiwKKwkJCQkJCSAi aW5qX2lvX3Jlb3BlbiIsCisJCQkJCQkgTlVMTCwKKwkJCQkJCSAwKTsKKwlJbmplY3Rpb25Q b2ludExvYWQoImFpby13b3JrZXItYWZ0ZXItcmVvcGVuIik7CiAKICNlbmRpZgotCX0KLQll bHNlCi0JewotCQkvKgotCQkgKiBQcmUtbG9hZCB0aGUgaW5qZWN0aW9uIHBvaW50cyBub3cs IHNvIHdlIGNhbiBjYWxsIHRoZW0gaW4gYQotCQkgKiBjcml0aWNhbCBzZWN0aW9uLgotCQkg Ki8KK30KKworc3RhdGljIHZvaWQKK3Rlc3RfYWlvX3NobWVtX2F0dGFjaCh2b2lkICphcmcp Cit7CisJLyoKKwkgKiBQcmUtbG9hZCB0aGUgaW5qZWN0aW9uIHBvaW50cyBub3csIHNvIHdl IGNhbiBjYWxsIHRoZW0gaW4gYSBjcml0aWNhbAorCSAqIHNlY3Rpb24uCisJICovCiAjaWZk ZWYgVVNFX0lOSkVDVElPTl9QT0lOVFMKLQkJSW5qZWN0aW9uUG9pbnRMb2FkKCJhaW8tcHJv Y2Vzcy1jb21wbGV0aW9uLWJlZm9yZS1zaGFyZWQiKTsKLQkJSW5qZWN0aW9uUG9pbnRMb2Fk KCJhaW8td29ya2VyLWFmdGVyLXJlb3BlbiIpOwotCQllbG9nKExPRywgImluamVjdGlvbiBw b2ludCBsb2FkZWQiKTsKKwlJbmplY3Rpb25Qb2ludExvYWQoImFpby1wcm9jZXNzLWNvbXBs ZXRpb24tYmVmb3JlLXNoYXJlZCIpOworCUluamVjdGlvblBvaW50TG9hZCgiYWlvLXdvcmtl ci1hZnRlci1yZW9wZW4iKTsKKwllbG9nKExPRywgImluamVjdGlvbiBwb2ludCBsb2FkZWQi KTsKICNlbmRpZgotCX0KLQotCUxXTG9ja1JlbGVhc2UoQWRkaW5TaG1lbUluaXRMb2NrKTsK IH0KIAogdm9pZApAQCAtMTU1LDEwICsxNDcsNyBAQCBfUEdfaW5pdCh2b2lkKQogCWlmICgh cHJvY2Vzc19zaGFyZWRfcHJlbG9hZF9saWJyYXJpZXNfaW5fcHJvZ3Jlc3MpCiAJCXJldHVy bjsKIAotCXByZXZfc2htZW1fcmVxdWVzdF9ob29rID0gc2htZW1fcmVxdWVzdF9ob29rOwot CXNobWVtX3JlcXVlc3RfaG9vayA9IHRlc3RfYWlvX3NobWVtX3JlcXVlc3Q7Ci0JcHJldl9z aG1lbV9zdGFydHVwX2hvb2sgPSBzaG1lbV9zdGFydHVwX2hvb2s7Ci0Jc2htZW1fc3RhcnR1 cF9ob29rID0gdGVzdF9haW9fc2htZW1fc3RhcnR1cDsKKwlSZWdpc3RlclNobWVtQ2FsbGJh Y2tzKCZpbmpfaW9fc2htZW1fY2FsbGJhY2tzKTsKIH0KIAogCi0tIAoyLjQ3LjMKCg== --------------DjaUCGyXkgmfSYE7E2Or3PMa--