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 1w2se7-000h4w-1l for pgsql-hackers@arkaria.postgresql.org; Wed, 18 Mar 2026 15:17:19 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w2se5-00BrcE-1c for pgsql-hackers@arkaria.postgresql.org; Wed, 18 Mar 2026 15:17:17 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w2se4-00Brc6-21 for pgsql-hackers@lists.postgresql.org; Wed, 18 Mar 2026 15:17:17 +0000 Received: from mail-pg1-x529.google.com ([2607:f8b0:4864:20::529]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w2se0-00000000NW6-3WhW for pgsql-hackers@lists.postgresql.org; Wed, 18 Mar 2026 15:17:15 +0000 Received: by mail-pg1-x529.google.com with SMTP id 41be03b00d2f7-c06cb8004e8so2865354a12.0 for ; Wed, 18 Mar 2026 08:17:14 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1773847033; cv=none; d=google.com; s=arc-20240605; b=jirlN2fG8BhxJlxrozCsNTl4aydGe1/Oix5wTXvkJZr9DWO+20gnkvkzRwfqypdz+a PgbTA2ZCEC0KM3FObxah/uTf9sbPoktt/e7xiC4QfSKa07XHwMfR2W7n6W8AGcf3g01m 3O/5pqSRxRMsbsXrNIfeVZ2msj5MqHeIPqYqE2v+ye3+Y1CIntNGrkkpINzjQ2NNCC0B aCK+n49CVwjbGFhv6C8n8lMcaXBz6dDkdmGOcgrZb9WFCysHS5BO6JnKTzfvr17YnDj5 s3xmKAfNsfBc4O3GRpkuR907QIC7YCms/rh05vEOG0/R1y5upkQXhUuXywUkPaCvq+lw IhCg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=whkMHsbU1fxFSk1dgvRHSd+JI+TmLSDoIWyu8EROR1A=; fh=pvClzLScNZEgujgVxzAaA7gapg65P81T7Tr0f3OFRy8=; b=UxJ1hRGdKQHToE1h/kl/4H2XG5DxVU00apE3saaGHUXt0YVgue/0enCeDplwQJVXhn UqnVFKMpM2rUXk+Zw+MCwHmGoDLVTtMbZYSZJo+cFjnCTENX5S1Lfp4EBX64if6HIO6J JvU3J5f+xpgcg5WwJb+3mjg9xzZNFqlE8ETa74lxtJraM72RZGIG8K2UGx3yrgzGP+aq 2OEwFbepL5KVCzzCSREGMX7caP7bhMCjbigGsKnLSVv8rNfI72kzY31cok+amLKs45PJ 7xBMgK4qaeqgqO1iRegyJ3O00defnG4BxCEFchYh/3o0iVg0txdlW9P4M7K0FxpZYFlA v6Xw==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1773847033; x=1774451833; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=whkMHsbU1fxFSk1dgvRHSd+JI+TmLSDoIWyu8EROR1A=; b=hPSZ9iq+ZfaxHg5UnD9SPLoQTNCAYzgRUDM1XDHdsUrgd9lpiaDAcUfq1OBqP5E3MA vE1ij1qfWXTbIgPC6gwdM8v3olVm2cOoLv0G9H4IJulckVsMmVnHN0My5PRHekxW77z1 Upk6/M7Ho4AM1ew2lWyxkGUEoMVQvpPsNvMsmoHZ5GfOFH0fCirhLXU6fVP2wU8zqnHA Ox7vwVaZm8LehKzofNmzr+bcZ7qmS/WjjoUPyKcYNLCINY18tmtl2Hdm3Q9BCR+c2Yyl gi80Ywr1Ztd3k3wU73MshqG99ijdxCdcZSMmEUCcNPShhskkzNTCkPaFP7HNco5Y0AiY LxaQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773847033; x=1774451833; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=whkMHsbU1fxFSk1dgvRHSd+JI+TmLSDoIWyu8EROR1A=; b=Ip6F2TEqg84OJqQR4Y83j8ComKuvMEcZuvDrq6IrhDgyQW0gwa4xvInyowc6D99s6S 67PjP+sBptThFBMF12lky/xuDtthMDXq6PFs6SWbYwySNKYNL4E55vZ7O62dZdOBIREs V8fmOnA3z0ErNLYh3RmavK5LBI3fk2f46vnR8FgeIZf8GwCFdIgkGemmEB0M/6jIOpuQ NtjkjM12aTxKhAh6+ToQUVzO+egLNMYF2jh7/Go+2U+LQhcdGiXb4q12BAiTX5Hlajnv xFMuUnl8Azp8nsAc9rmVAYHuH46GhQSVw4sWuxvC5SruBLg6CotzEsibdipJO/EZj9Ri jMlg== X-Forwarded-Encrypted: i=1; AJvYcCVnXlMFbwjCXQIxiM44v8RmZAwsIW0BIyoh+LRIgWKRGrELd1aFjJFs+TKzZqcTViWtnZShUiDTq3a0EvBY@lists.postgresql.org X-Gm-Message-State: AOJu0Yzq7ZG14Xkayt30xWA2VAl0BOv3U0wDdJwfXamjz3V5XQ5jyxiS D2LQFEO3uPBMc80SD5w+yjmc4dyExYKSuwB17zDYXHqjQccxEA1W7vm4UIVT5iRJ+1HRAPyx1De FdAgeJd9JoKWkB097SCOAiePCFsoB300= X-Gm-Gg: ATEYQzw75+6jkqa/LOfmgnYdY34x6wWqqKgdp6kUNejEE9lRgrV4/smzek4ror+4i1e 0QFxaauEPe7PUlzjWHZS481UQjUVtZYgBh91KMAkRCsAOTM3J+aEDfymxTS3FVVBT+9wGCmkBES rbHx+R5yihJMQsMRQQcUpuCfV6JEsPlSBcZ2sNwzE5VC6GlCOuZIxMwxQsH2zhwYeKmm1spRHn1 A3CjhT08MxeRE469e8NGeA/fjRS31W+dcf8/lVvBFUrBseOHvoSeKOQ+W9gcAuboBt+TbJUjb9/ Pjp4Gx4m X-Received: by 2002:a05:6a21:3417:b0:398:9c94:2033 with SMTP id adf61e73a8af0-39b99de5e34mr3587718637.11.1773847033141; Wed, 18 Mar 2026 08:17:13 -0700 (PDT) MIME-Version: 1.0 References: <72973471-8946-40c7-8b2d-8f95540d90e2@dunslane.net> <401bf08a-c8f1-48e2-9a30-78deaa9fa7c5@dunslane.net> In-Reply-To: From: Amul Sul Date: Wed, 18 Mar 2026 20:46:35 +0530 X-Gm-Features: AaiRm53o76kQL0iLppNdpSEJPUwaD-O3aBLeT7g97afDc43LQrtAjuPPZBVRrB4 Message-ID: Subject: Re: pg_waldump: support decoding of WAL inside tarfile To: Andrew Dunstan Cc: Robert Haas , Chao Li , Jakub Wartak , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="0000000000004c4c80064d4df2a2" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000004c4c80064d4df2a2 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Mar 18, 2026 at 5:15=E2=80=AFPM Amul Sul wrote: > > On Wed, Mar 11, 2026 at 10:38=E2=80=AFPM Andrew Dunstan wrote: > > [...] > > Looks pretty good. I have squashed them into three patches I think are = committable. Also attached is a diff showing what's changed - mainly this: > > > > . --follow + tar archive rejected (pg_waldump.c) =E2=80=94 new validati= on prevents a confusing pg_fatal when combining --follow with a tar archive > > . error messages split (archive_waldump.c) =E2=80=94 the single "could = not read file" error is now two distinct messages: "WAL segment is too shor= t" (truncated file) vs "unexpected end of archive" (archive EOF) - Fixes an= issue raised in review > > . hash table cleanup (archive_waldump.c) =E2=80=94 free_archive_reader = now iterates and frees all remaining hash entries and destroys the table > > > > The final squashed version looks good to me, thank you. But, I would > like to propose splitting the 0001 patch into two separate commits: a > preparatory refactoring of the pg_waldump code and a standalone commit > that moves the tar archive detection and compression logic to a common > location, as the latter is an independent improvement to the existing > codebase. Additionally, since the test file refactoring was only kept > separate to facilitate the review and has already been reviewed, I > suggest merging those changes into the main feature patch i.e. 0002. > All other elements should remain in a single preparatory refactoring > patch for pg_waldump. > > Attached is the version that includes the proposed split. No > additional changes to 0002 and 0003 patches. > Added the two missing 'Reviewed-by' lines to the credit section of the commit message and did a minor optimization in get_archive_wal_entry. Regards, Amul --0000000000004c4c80064d4df2a2 Content-Type: application/octet-stream; name="v19-0001-Move-tar-detection-and-compression-logic-to-comm.patch" Content-Disposition: attachment; filename="v19-0001-Move-tar-detection-and-compression-logic-to-comm.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmw5w1gu0 RnJvbSAyYjNmZWMzNWMxMDcwZTE4N2VlNzFlZTdmZGFhNzZiZWYwOWUwNzZmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFR1 ZSwgMTcgRmViIDIwMjYgMTQ6NTE6MTEgKzA1MzAKU3ViamVjdDogW1BBVENIIHYxOSAxLzRdIE1v dmUgdGFyIGRldGVjdGlvbiBhbmQgY29tcHJlc3Npb24gbG9naWMgdG8gY29tbW9uLgoKQ29uc29s aWRhdGUgdGFyIGFyY2hpdmUgaWRlbnRpZmljYXRpb24gYW5kIGNvbXByZXNzaW9uLXR5cGUgZGV0 ZWN0aW9uCmxvZ2ljIGludG8gYSBzaGFyZWQgbG9jYXRpb24uIEN1cnJlbnRseSB1c2VkIGJ5IHBn X2Jhc2ViYWNrdXAgYW5kCnBnX3ZlcmlmeWJhY2t1cCwgdGhpcyBmdW5jdGlvbmFsaXR5IGlzIGFs c28gcmVxdWlyZWQgZm9yIHVwY29taW5nCnBnX3dhbGR1bXAgZW5oYW5jZW1lbnRzLgoKVGhpcyBj aGFuZ2UgcHJvbW90ZXMgY29kZSByZXVzZSBhbmQgc2ltcGxpZmllcyBtYWludGVuYW5jZSBhY3Jv c3MKZnJvbnRlbmQgdG9vbHMuCgpBdXRob3I6IEFtdWwgU3VsIDxzdWxhbXVsQGdtYWlsLmNvbT4K UmV2aWV3ZWQtYnk6IFJvYmVydCBIYWFzIDxyb2JlcnRtaGFhc0BnbWFpbC5jb20+ClJldmlld2Vk LWJ5OiBKYWt1YiBXYXJ0YWsgPGpha3ViLndhcnRha0BlbnRlcnByaXNlZGIuY29tPgpSZXZpZXdl ZC1ieTogQ2hhbyBMaSA8bGkuZXZhbi5jaGFvQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IEV1bGVy IFRhdmVpcmEgPGV1bGVyQGV1bGVydG8uY29tPgpSZXZpZXdlZC1ieTogQW5kcmV3IER1bnN0YW4g PGFuZHJld0BkdW5zbGFuZS5uZXQ+CmRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vQ0FB Sl9iOTRicWRXTjNoMkotUHp6elEyTnBid2N0NVpRSGdnbl9Rb1lHaEMycm4tPVdRQG1haWwuZ21h aWwuY29tCi0tLQogc3JjL2Jpbi9wZ19iYXNlYmFja3VwL3BnX2Jhc2ViYWNrdXAuYyAgICAgfCAz NiArKysrKysrLS0tLS0tLS0tLS0tLS0tLQogc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvcGdfdmVy aWZ5YmFja3VwLmMgfCAxMiArLS0tLS0tLQogc3JjL2NvbW1vbi9jb21wcmVzc2lvbi5jICAgICAg ICAgICAgICAgICAgfCAzMCArKysrKysrKysrKysrKysrKysrCiBzcmMvaW5jbHVkZS9jb21tb24v Y29tcHJlc3Npb24uaCAgICAgICAgICB8ICAyICsrCiA0IGZpbGVzIGNoYW5nZWQsIDQ0IGluc2Vy dGlvbnMoKyksIDM2IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfYmFzZWJh Y2t1cC9wZ19iYXNlYmFja3VwLmMgYi9zcmMvYmluL3BnX2Jhc2ViYWNrdXAvcGdfYmFzZWJhY2t1 cC5jCmluZGV4IGZhMTY5YThkNjQyLi5jMWE0NjcyYWE2ZiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9w Z19iYXNlYmFja3VwL3BnX2Jhc2ViYWNrdXAuYworKysgYi9zcmMvYmluL3BnX2Jhc2ViYWNrdXAv cGdfYmFzZWJhY2t1cC5jCkBAIC0xMDcwLDEyICsxMDcwLDkgQEAgQ3JlYXRlQmFja3VwU3RyZWFt ZXIoY2hhciAqYXJjaGl2ZV9uYW1lLCBjaGFyICpzcGNsb2NhdGlvbiwKIAlhc3RyZWFtZXIgICpt YW5pZmVzdF9pbmplY3Rfc3RyZWFtZXIgPSBOVUxMOwogCWJvb2wJCWluamVjdF9tYW5pZmVzdDsK IAlib29sCQlpc190YXIsCi0JCQkJaXNfdGFyX2d6LAotCQkJCWlzX3Rhcl9sejQsCi0JCQkJaXNf dGFyX3pzdGQsCiAJCQkJaXNfY29tcHJlc3NlZF90YXI7CisJcGdfY29tcHJlc3NfYWxnb3JpdGht IGNvbXByZXNzZWRfdGFyX2FsZ29yaXRobTsKIAlib29sCQltdXN0X3BhcnNlX2FyY2hpdmU7Ci0J aW50CQkJYXJjaGl2ZV9uYW1lX2xlbiA9IHN0cmxlbihhcmNoaXZlX25hbWUpOwogCiAJLyoKIAkg KiBOb3JtYWxseSwgd2UgZW1pdCB0aGUgYmFja3VwIG1hbmlmZXN0IGFzIGEgc2VwYXJhdGUgZmls ZSwgYnV0IHdoZW4KQEAgLTEwODQsMjQgKzEwODEsMTMgQEAgQ3JlYXRlQmFja3VwU3RyZWFtZXIo Y2hhciAqYXJjaGl2ZV9uYW1lLCBjaGFyICpzcGNsb2NhdGlvbiwKIAkgKi8KIAlpbmplY3RfbWFu aWZlc3QgPSAoZm9ybWF0ID09ICd0JyAmJiBzdHJjbXAoYmFzZWRpciwgIi0iKSA9PSAwICYmIG1h bmlmZXN0KTsKIAotCS8qIElzIHRoaXMgYSB0YXIgYXJjaGl2ZT8gKi8KLQlpc190YXIgPSAoYXJj aGl2ZV9uYW1lX2xlbiA+IDQgJiYKLQkJCSAgc3RyY21wKGFyY2hpdmVfbmFtZSArIGFyY2hpdmVf bmFtZV9sZW4gLSA0LCAiLnRhciIpID09IDApOwotCi0JLyogSXMgdGhpcyBhIC50YXIuZ3ogYXJj aGl2ZT8gKi8KLQlpc190YXJfZ3ogPSAoYXJjaGl2ZV9uYW1lX2xlbiA+IDcgJiYKLQkJCQkgc3Ry Y21wKGFyY2hpdmVfbmFtZSArIGFyY2hpdmVfbmFtZV9sZW4gLSA3LCAiLnRhci5neiIpID09IDAp OwotCi0JLyogSXMgdGhpcyBhIC50YXIubHo0IGFyY2hpdmU/ICovCi0JaXNfdGFyX2x6NCA9IChh cmNoaXZlX25hbWVfbGVuID4gOCAmJgotCQkJCSAgc3RyY21wKGFyY2hpdmVfbmFtZSArIGFyY2hp dmVfbmFtZV9sZW4gLSA4LCAiLnRhci5sejQiKSA9PSAwKTsKLQotCS8qIElzIHRoaXMgYSAudGFy LnpzdCBhcmNoaXZlPyAqLwotCWlzX3Rhcl96c3RkID0gKGFyY2hpdmVfbmFtZV9sZW4gPiA4ICYm Ci0JCQkJICAgc3RyY21wKGFyY2hpdmVfbmFtZSArIGFyY2hpdmVfbmFtZV9sZW4gLSA4LCAiLnRh ci56c3QiKSA9PSAwKTsKKwkvKiBDaGVjayB3aGV0aGVyIGl0IGlzIGEgdGFyIGFyY2hpdmUgYW5k IGl0cyBjb21wcmVzc2lvbiB0eXBlICovCisJaXNfdGFyID0gcGFyc2VfdGFyX2NvbXByZXNzX2Fs Z29yaXRobShhcmNoaXZlX25hbWUsCisJCQkJCQkJCQkJICAmY29tcHJlc3NlZF90YXJfYWxnb3Jp dGhtKTsKIAogCS8qIElzIHRoaXMgYW55IGtpbmQgb2YgY29tcHJlc3NlZCB0YXI/ICovCi0JaXNf Y29tcHJlc3NlZF90YXIgPSBpc190YXJfZ3ogfHwgaXNfdGFyX2x6NCB8fCBpc190YXJfenN0ZDsK Kwlpc19jb21wcmVzc2VkX3RhciA9IChpc190YXIgJiYKKwkJCQkJCSBjb21wcmVzc2VkX3Rhcl9h bGdvcml0aG0gIT0gUEdfQ09NUFJFU1NJT05fTk9ORSk7CiAKIAkvKgogCSAqIEluamVjdGluZyB0 aGUgbWFuaWZlc3QgaW50byBhIGNvbXByZXNzZWQgdGFyIGZpbGUgd291bGQgYmUgcG9zc2libGUg aWYKQEAgLTExMjgsNyArMTExNCw3IEBAIENyZWF0ZUJhY2t1cFN0cmVhbWVyKGNoYXIgKmFyY2hp dmVfbmFtZSwgY2hhciAqc3BjbG9jYXRpb24sCiAJCQkJCQkgIChzcGNsb2NhdGlvbiA9PSBOVUxM ICYmIHdyaXRlcmVjb3Zlcnljb25mKSk7CiAKIAkvKiBBdCBwcmVzZW50LCB3ZSBvbmx5IGtub3cg aG93IHRvIHBhcnNlIHRhciBhcmNoaXZlcy4gKi8KLQlpZiAobXVzdF9wYXJzZV9hcmNoaXZlICYm ICFpc190YXIgJiYgIWlzX2NvbXByZXNzZWRfdGFyKQorCWlmIChtdXN0X3BhcnNlX2FyY2hpdmUg JiYgIWlzX3RhcikKIAl7CiAJCXBnX2xvZ19lcnJvcigiY2Fubm90IHBhcnNlIGFyY2hpdmUgXCIl c1wiIiwgYXJjaGl2ZV9uYW1lKTsKIAkJcGdfbG9nX2Vycm9yX2RldGFpbCgiT25seSB0YXIgYXJj aGl2ZXMgY2FuIGJlIHBhcnNlZC4iKTsKQEAgLTEyNjMsMTMgKzEyNDksMTMgQEAgQ3JlYXRlQmFj a3VwU3RyZWFtZXIoY2hhciAqYXJjaGl2ZV9uYW1lLCBjaGFyICpzcGNsb2NhdGlvbiwKIAkgKiBJ ZiB0aGUgdXNlciBoYXMgcmVxdWVzdGVkIGEgc2VydmVyIGNvbXByZXNzZWQgYXJjaGl2ZSBhbG9u ZyB3aXRoCiAJICogYXJjaGl2ZSBleHRyYWN0aW9uIGF0IGNsaWVudCB0aGVuIHdlIG5lZWQgdG8g ZGVjb21wcmVzcyBpdC4KIAkgKi8KLQlpZiAoZm9ybWF0ID09ICdwJykKKwlpZiAoZm9ybWF0ID09 ICdwJyAmJiBpc19jb21wcmVzc2VkX3RhcikKIAl7Ci0JCWlmIChpc190YXJfZ3opCisJCWlmIChj b21wcmVzc2VkX3Rhcl9hbGdvcml0aG0gPT0gUEdfQ09NUFJFU1NJT05fR1pJUCkKIAkJCXN0cmVh bWVyID0gYXN0cmVhbWVyX2d6aXBfZGVjb21wcmVzc29yX25ldyhzdHJlYW1lcik7Ci0JCWVsc2Ug aWYgKGlzX3Rhcl9sejQpCisJCWVsc2UgaWYgKGNvbXByZXNzZWRfdGFyX2FsZ29yaXRobSA9PSBQ R19DT01QUkVTU0lPTl9MWjQpCiAJCQlzdHJlYW1lciA9IGFzdHJlYW1lcl9sejRfZGVjb21wcmVz c29yX25ldyhzdHJlYW1lcik7Ci0JCWVsc2UgaWYgKGlzX3Rhcl96c3RkKQorCQllbHNlIGlmIChj b21wcmVzc2VkX3Rhcl9hbGdvcml0aG0gPT0gUEdfQ09NUFJFU1NJT05fWlNURCkKIAkJCXN0cmVh bWVyID0gYXN0cmVhbWVyX3pzdGRfZGVjb21wcmVzc29yX25ldyhzdHJlYW1lcik7CiAJfQogCmRp ZmYgLS1naXQgYS9zcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC9wZ192ZXJpZnliYWNrdXAuYyBiL3Ny Yy9iaW4vcGdfdmVyaWZ5YmFja3VwL3BnX3ZlcmlmeWJhY2t1cC5jCmluZGV4IGNiYzk0NDczODRm Li4zMWY2MDZjNDViMSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvcGdfdmVy aWZ5YmFja3VwLmMKKysrIGIvc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvcGdfdmVyaWZ5YmFja3Vw LmMKQEAgLTk0MSwxNyArOTQxLDcgQEAgcHJlY2hlY2tfdGFyX2JhY2t1cF9maWxlKHZlcmlmaWVy X2NvbnRleHQgKmNvbnRleHQsIGNoYXIgKnJlbHBhdGgsCiAJfQogCiAJLyogTm93LCBjaGVjayB0 aGUgY29tcHJlc3Npb24gdHlwZSBvZiB0aGUgdGFyICovCi0JaWYgKHN0cmNtcChzdWZmaXgsICIu dGFyIikgPT0gMCkKLQkJY29tcHJlc3NfYWxnb3JpdGhtID0gUEdfQ09NUFJFU1NJT05fTk9ORTsK LQllbHNlIGlmIChzdHJjbXAoc3VmZml4LCAiLnRneiIpID09IDApCi0JCWNvbXByZXNzX2FsZ29y aXRobSA9IFBHX0NPTVBSRVNTSU9OX0daSVA7Ci0JZWxzZSBpZiAoc3RyY21wKHN1ZmZpeCwgIi50 YXIuZ3oiKSA9PSAwKQotCQljb21wcmVzc19hbGdvcml0aG0gPSBQR19DT01QUkVTU0lPTl9HWklQ OwotCWVsc2UgaWYgKHN0cmNtcChzdWZmaXgsICIudGFyLmx6NCIpID09IDApCi0JCWNvbXByZXNz X2FsZ29yaXRobSA9IFBHX0NPTVBSRVNTSU9OX0xaNDsKLQllbHNlIGlmIChzdHJjbXAoc3VmZml4 LCAiLnRhci56c3QiKSA9PSAwKQotCQljb21wcmVzc19hbGdvcml0aG0gPSBQR19DT01QUkVTU0lP Tl9aU1REOwotCWVsc2UKKwlpZiAoIXBhcnNlX3Rhcl9jb21wcmVzc19hbGdvcml0aG0oc3VmZml4 LCAmY29tcHJlc3NfYWxnb3JpdGhtKSkKIAl7CiAJCXJlcG9ydF9iYWNrdXBfZXJyb3IoY29udGV4 dCwKIAkJCQkJCQkiZmlsZSBcIiVzXCIgaXMgbm90IGV4cGVjdGVkIGluIGEgdGFyIGZvcm1hdCBi YWNrdXAiLApkaWZmIC0tZ2l0IGEvc3JjL2NvbW1vbi9jb21wcmVzc2lvbi5jIGIvc3JjL2NvbW1v bi9jb21wcmVzc2lvbi5jCmluZGV4IDkyY2Q0ZWM3YTBkLi5mYjI3NTAxZDI5NyAxMDA2NDQKLS0t IGEvc3JjL2NvbW1vbi9jb21wcmVzc2lvbi5jCisrKyBiL3NyYy9jb21tb24vY29tcHJlc3Npb24u YwpAQCAtNDEsNiArNDEsMzYgQEAgc3RhdGljIGludAlleHBlY3RfaW50ZWdlcl92YWx1ZShjaGFy ICprZXl3b3JkLCBjaGFyICp2YWx1ZSwKIHN0YXRpYyBib29sIGV4cGVjdF9ib29sZWFuX3ZhbHVl KGNoYXIgKmtleXdvcmQsIGNoYXIgKnZhbHVlLAogCQkJCQkJCQkgcGdfY29tcHJlc3Nfc3BlY2lm aWNhdGlvbiAqcmVzdWx0KTsKIAorLyoKKyAqIExvb2sgdXAgYSBjb21wcmVzc2lvbiBhbGdvcml0 aG0gYnkgYXJjaGl2ZSBmaWxlIGV4dGVuc2lvbi4gUmV0dXJucyB0cnVlIGFuZAorICogc2V0cyAq YWxnb3JpdGhtIGlmIHRoZSBuYW1lIGlzIHJlY29nbml6ZWQuIE90aGVyd2lzZSByZXR1cm5zIGZh bHNlLgorICovCitib29sCitwYXJzZV90YXJfY29tcHJlc3NfYWxnb3JpdGhtKGNvbnN0IGNoYXIg KmZuYW1lLCBwZ19jb21wcmVzc19hbGdvcml0aG0gKmFsZ29yaXRobSkKK3sKKwlpbnQJCQlmbmFt ZV9sZW4gPSBzdHJsZW4oZm5hbWUpOworCisJaWYgKGZuYW1lX2xlbiA+PSA0ICYmCisJCXN0cmNt cChmbmFtZSArIGZuYW1lX2xlbiAtIDQsICIudGFyIikgPT0gMCkKKwkJKmFsZ29yaXRobSA9IFBH X0NPTVBSRVNTSU9OX05PTkU7CisJZWxzZSBpZiAoZm5hbWVfbGVuID49IDQgJiYKKwkJCSBzdHJj bXAoZm5hbWUgKyBmbmFtZV9sZW4gLSA0LCAiLnRneiIpID09IDApCisJCSphbGdvcml0aG0gPSBQ R19DT01QUkVTU0lPTl9HWklQOworCWVsc2UgaWYgKGZuYW1lX2xlbiA+PSA3ICYmCisJCQkgc3Ry Y21wKGZuYW1lICsgZm5hbWVfbGVuIC0gNywgIi50YXIuZ3oiKSA9PSAwKQorCQkqYWxnb3JpdGht ID0gUEdfQ09NUFJFU1NJT05fR1pJUDsKKwllbHNlIGlmIChmbmFtZV9sZW4gPj0gOCAmJgorCQkJ IHN0cmNtcChmbmFtZSArIGZuYW1lX2xlbiAtIDgsICIudGFyLmx6NCIpID09IDApCisJCSphbGdv cml0aG0gPSBQR19DT01QUkVTU0lPTl9MWjQ7CisJZWxzZSBpZiAoZm5hbWVfbGVuID49IDggJiYK KwkJCSBzdHJjbXAoZm5hbWUgKyBmbmFtZV9sZW4gLSA4LCAiLnRhci56c3QiKSA9PSAwKQorCQkq YWxnb3JpdGhtID0gUEdfQ09NUFJFU1NJT05fWlNURDsKKwllbHNlCisJCXJldHVybiBmYWxzZTsK KworCXJldHVybiB0cnVlOworfQorCiAvKgogICogTG9vayB1cCBhIGNvbXByZXNzaW9uIGFsZ29y aXRobSBieSBuYW1lLiBSZXR1cm5zIHRydWUgYW5kIHNldHMgKmFsZ29yaXRobQogICogaWYgdGhl IG5hbWUgaXMgcmVjb2duaXplZC4gT3RoZXJ3aXNlIHJldHVybnMgZmFsc2UuCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9jb21tb24vY29tcHJlc3Npb24uaCBiL3NyYy9pbmNsdWRlL2NvbW1vbi9j b21wcmVzc2lvbi5oCmluZGV4IDZjNzQ1YjkwMDY2Li5mOTljNzQ3Y2RkMyAxMDA2NDQKLS0tIGEv c3JjL2luY2x1ZGUvY29tbW9uL2NvbXByZXNzaW9uLmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbW9u L2NvbXByZXNzaW9uLmgKQEAgLTQxLDYgKzQxLDggQEAgdHlwZWRlZiBzdHJ1Y3QgcGdfY29tcHJl c3Nfc3BlY2lmaWNhdGlvbgogCiBleHRlcm4gdm9pZCBwYXJzZV9jb21wcmVzc19vcHRpb25zKGNv bnN0IGNoYXIgKm9wdGlvbiwgY2hhciAqKmFsZ29yaXRobSwKIAkJCQkJCQkJICAgY2hhciAqKmRl dGFpbCk7CitleHRlcm4gYm9vbCBwYXJzZV90YXJfY29tcHJlc3NfYWxnb3JpdGhtKGNvbnN0IGNo YXIgKmZuYW1lLAorCQkJCQkJCQkJCSBwZ19jb21wcmVzc19hbGdvcml0aG0gKmFsZ29yaXRobSk7 CiBleHRlcm4gYm9vbCBwYXJzZV9jb21wcmVzc19hbGdvcml0aG0oY2hhciAqbmFtZSwgcGdfY29t cHJlc3NfYWxnb3JpdGhtICphbGdvcml0aG0pOwogZXh0ZXJuIGNvbnN0IGNoYXIgKmdldF9jb21w cmVzc19hbGdvcml0aG1fbmFtZShwZ19jb21wcmVzc19hbGdvcml0aG0gYWxnb3JpdGhtKTsKIAot LSAKMi40Ny4xCgo= --0000000000004c4c80064d4df2a2 Content-Type: application/octet-stream; name="v19-0002-pg_waldump-Preparatory-refactoring-for-tar-archi.patch" Content-Disposition: attachment; filename="v19-0002-pg_waldump-Preparatory-refactoring-for-tar-archi.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmw5w58x1 RnJvbSAxZGU3MjMzZjM3ODVlMjAyNjYyY2QwMGI1YjdmZDJiNzUwZTI0ZmVhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFRo dSwgMjIgSmFuIDIwMjYgMTA6Mjg6MzIgKzA1MzAKU3ViamVjdDogW1BBVENIIHYxOSAyLzRdIHBn X3dhbGR1bXA6IFByZXBhcmF0b3J5IHJlZmFjdG9yaW5nIGZvciB0YXIgYXJjaGl2ZQogV0FMIGRl Y29kaW5nLgoKU2V2ZXJhbCByZWZhY3RvcmluZyBzdGVwcyBpbiBwcmVwYXJhdGlvbiBmb3IgYWRk aW5nIHRhciBhcmNoaXZlIFdBTApkZWNvZGluZyBzdXBwb3J0IHRvIHBnX3dhbGR1bXA6CgotIE1v dmUgWExvZ0R1bXBQcml2YXRlIGFuZCByZWxhdGVkIGRlY2xhcmF0aW9ucyBpbnRvIGEgbmV3IHBn X3dhbGR1bXAuaAogIGhlYWRlciwgYWxsb3dpbmcgYSBzZWNvbmQgc291cmNlIGZpbGUgdG8gc2hh cmUgdGhlbS4KCi0gRmFjdG9yIG91dCByZXF1aXJlZF9yZWFkX2xlbigpIHNvIHRoZSByZWFkLXNp emUgY2FsY3VsYXRpb24gY2FuIGJlCiAgcmV1c2VkIGZvciBib3RoIHJlZ3VsYXIgV0FMIGZpbGVz IGFuZCB0YXItYXJjaGl2ZWQgV0FMLgoKLSBNb3ZlIHRoZSBXQUwgc2VnbWVudCBzaXplIHZhcmlh YmxlIGludG8gWExvZ0R1bXBQcml2YXRlIGFuZCByZW5hbWUgaXQKICB0byBzZWdzaXplLCBtYWtp bmcgaXQgYWNjZXNzaWJsZSB0byB0aGUgYXJjaGl2ZSBzdHJlYW1lciBjb2RlLgoKQXV0aG9yOiBB bXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBSb2JlcnQgSGFhcyA8cm9i ZXJ0bWhhYXNAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogSmFrdWIgV2FydGFrIDxqYWt1Yi53YXJ0 YWtAZW50ZXJwcmlzZWRiLmNvbT4KUmV2aWV3ZWQtYnk6IENoYW8gTGkgPGxpLmV2YW4uY2hhb0Bn bWFpbC5jb20+ClJldmlld2VkLWJ5OiBFdWxlciBUYXZlaXJhIDxldWxlckBldWxlcnRvLmNvbT4K UmV2aWV3ZWQtYnk6IEFuZHJldyBEdW5zdGFuIDxhbmRyZXdAZHVuc2xhbmUubmV0PgpkaXNjdXNz aW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBQUpfYjk0YnFkV04zaDJKLVB6enpRMk5wYndjdDVa UUhnZ25fUW9ZR2hDMnJuLT1XUUBtYWlsLmdtYWlsLmNvbQotLS0KIHNyYy9iaW4vcGdfd2FsZHVt cC9wZ193YWxkdW1wLmMgfCA3OCArKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0KIHNy Yy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmggfCAyNiArKysrKysrKysrKwogMiBmaWxlcyBj aGFuZ2VkLCA3MCBpbnNlcnRpb25zKCspLCAzNCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEw MDY0NCBzcmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5oCgpkaWZmIC0tZ2l0IGEvc3JjL2Jp bi9wZ193YWxkdW1wL3BnX3dhbGR1bXAuYyBiL3NyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1w LmMKaW5kZXggZjM0NDYzODVkNmEuLjVkMzFiMTVkYmQ4IDEwMDY0NAotLS0gYS9zcmMvYmluL3Bn X3dhbGR1bXAvcGdfd2FsZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1w LmMKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJjb21tb24vbG9nZ2luZy5oIgogI2luY2x1 ZGUgImNvbW1vbi9yZWxwYXRoLmgiCiAjaW5jbHVkZSAiZ2V0b3B0X2xvbmcuaCIKKyNpbmNsdWRl ICJwZ193YWxkdW1wLmgiCiAjaW5jbHVkZSAicm1ncmRlc2MuaCIKICNpbmNsdWRlICJzdG9yYWdl L2J1ZnBhZ2UuaCIKIApAQCAtNDMsMTQgKzQ0LDYgQEAgc3RhdGljIHZvbGF0aWxlIHNpZ19hdG9t aWNfdCB0aW1lX3RvX3N0b3AgPSBmYWxzZTsKIAogc3RhdGljIGNvbnN0IFJlbEZpbGVMb2NhdG9y IGVtcHR5UmVsRmlsZUxvY2F0b3IgPSB7MCwgMCwgMH07CiAKLXR5cGVkZWYgc3RydWN0IFhMb2dE dW1wUHJpdmF0ZQotewotCVRpbWVMaW5lSUQJdGltZWxpbmU7Ci0JWExvZ1JlY1B0cglzdGFydHB0 cjsKLQlYTG9nUmVjUHRyCWVuZHB0cjsKLQlib29sCQllbmRwdHJfcmVhY2hlZDsKLX0gWExvZ0R1 bXBQcml2YXRlOwotCiB0eXBlZGVmIHN0cnVjdCBYTG9nRHVtcENvbmZpZwogewogCS8qIGRpc3Bs YXkgb3B0aW9ucyAqLwpAQCAtMzMzLDYgKzMyNiwzMiBAQCBpZGVudGlmeV90YXJnZXRfZGlyZWN0 b3J5KGNoYXIgKmRpcmVjdG9yeSwgY2hhciAqZm5hbWUsIGludCAqV2FsU2VnU3opCiAJcmV0dXJu IE5VTEw7CQkJCS8qIG5vdCByZWFjaGVkICovCiB9CiAKKy8qCisgKiBSZXR1cm5zIHRoZSBzaXpl IGluIGJ5dGVzIG9mIHRoZSBkYXRhIHRvIGJlIHJlYWQuIFJldHVybnMgLTEgaWYgdGhlIGVuZAor ICogcG9pbnQgaGFzIGFscmVhZHkgYmVlbiByZWFjaGVkLgorICovCitzdGF0aWMgaW5saW5lIGlu dAorcmVxdWlyZWRfcmVhZF9sZW4oWExvZ0R1bXBQcml2YXRlICpwcml2YXRlLCBYTG9nUmVjUHRy IHRhcmdldFBhZ2VQdHIsCisJCQkJICBpbnQgcmVxTGVuKQoreworCWludAkJCWNvdW50ID0gWExP R19CTENLU1o7CisKKwlpZiAoWExvZ1JlY1B0cklzVmFsaWQocHJpdmF0ZS0+ZW5kcHRyKSkKKwl7 CisJCWlmICh0YXJnZXRQYWdlUHRyICsgWExPR19CTENLU1ogPD0gcHJpdmF0ZS0+ZW5kcHRyKQor CQkJY291bnQgPSBYTE9HX0JMQ0tTWjsKKwkJZWxzZSBpZiAodGFyZ2V0UGFnZVB0ciArIHJlcUxl biA8PSBwcml2YXRlLT5lbmRwdHIpCisJCQljb3VudCA9IHByaXZhdGUtPmVuZHB0ciAtIHRhcmdl dFBhZ2VQdHI7CisJCWVsc2UKKwkJeworCQkJcHJpdmF0ZS0+ZW5kcHRyX3JlYWNoZWQgPSB0cnVl OworCQkJcmV0dXJuIC0xOworCQl9CisJfQorCisJcmV0dXJuIGNvdW50OworfQorCiAvKiBwZ193 YWxkdW1wJ3MgWExvZ1JlYWRlclJvdXRpbmUtPnNlZ21lbnRfb3BlbiBjYWxsYmFjayAqLwogc3Rh dGljIHZvaWQKIFdBTER1bXBPcGVuU2VnbWVudChYTG9nUmVhZGVyU3RhdGUgKnN0YXRlLCBYTG9n U2VnTm8gbmV4dFNlZ05vLApAQCAtMzkwLDIxICs0MDksMTIgQEAgV0FMRHVtcFJlYWRQYWdlKFhM b2dSZWFkZXJTdGF0ZSAqc3RhdGUsIFhMb2dSZWNQdHIgdGFyZ2V0UGFnZVB0ciwgaW50IHJlcUxl biwKIAkJCQlYTG9nUmVjUHRyIHRhcmdldFB0ciwgY2hhciAqcmVhZEJ1ZmYpCiB7CiAJWExvZ0R1 bXBQcml2YXRlICpwcml2YXRlID0gc3RhdGUtPnByaXZhdGVfZGF0YTsKLQlpbnQJCQljb3VudCA9 IFhMT0dfQkxDS1NaOworCWludAkJCWNvdW50ID0gcmVxdWlyZWRfcmVhZF9sZW4ocHJpdmF0ZSwg dGFyZ2V0UGFnZVB0ciwgcmVxTGVuKTsKIAlXQUxSZWFkRXJyb3IgZXJyaW5mbzsKIAotCWlmIChY TG9nUmVjUHRySXNWYWxpZChwcml2YXRlLT5lbmRwdHIpKQotCXsKLQkJaWYgKHRhcmdldFBhZ2VQ dHIgKyBYTE9HX0JMQ0tTWiA8PSBwcml2YXRlLT5lbmRwdHIpCi0JCQljb3VudCA9IFhMT0dfQkxD S1NaOwotCQllbHNlIGlmICh0YXJnZXRQYWdlUHRyICsgcmVxTGVuIDw9IHByaXZhdGUtPmVuZHB0 cikKLQkJCWNvdW50ID0gcHJpdmF0ZS0+ZW5kcHRyIC0gdGFyZ2V0UGFnZVB0cjsKLQkJZWxzZQot CQl7Ci0JCQlwcml2YXRlLT5lbmRwdHJfcmVhY2hlZCA9IHRydWU7Ci0JCQlyZXR1cm4gLTE7Ci0J CX0KLQl9CisJLyogQmFpbCBvdXQgaWYgdGhlIGNvdW50IHRvIGJlIHJlYWQgaXMgbm90IHZhbGlk ICovCisJaWYgKGNvdW50IDwgMCkKKwkJcmV0dXJuIC0xOwogCiAJaWYgKCFXQUxSZWFkKHN0YXRl LCByZWFkQnVmZiwgdGFyZ2V0UGFnZVB0ciwgY291bnQsIHByaXZhdGUtPnRpbWVsaW5lLAogCQkJ CSAmZXJyaW5mbykpCkBAIC04MDEsNyArODExLDYgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFy Z3YpCiAJWExvZ1JlY1B0cglmaXJzdF9yZWNvcmQ7CiAJY2hhcgkgICAqd2FsZGlyID0gTlVMTDsK IAljaGFyCSAgICplcnJvcm1zZzsKLQlpbnQJCQlXYWxTZWdTejsKIAogCXN0YXRpYyBzdHJ1Y3Qg b3B0aW9uIGxvbmdfb3B0aW9uc1tdID0gewogCQl7ImJrcC1kZXRhaWxzIiwgbm9fYXJndW1lbnQs IE5VTEwsICdiJ30sCkBAIC04NTUsNiArODY0LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFy Z3YpCiAJbWVtc2V0KCZzdGF0cywgMCwgc2l6ZW9mKFhMb2dTdGF0cykpOwogCiAJcHJpdmF0ZS50 aW1lbGluZSA9IDE7CisJcHJpdmF0ZS5zZWdzaXplID0gMDsKIAlwcml2YXRlLnN0YXJ0cHRyID0g SW52YWxpZFhMb2dSZWNQdHI7CiAJcHJpdmF0ZS5lbmRwdHIgPSBJbnZhbGlkWExvZ1JlY1B0cjsK IAlwcml2YXRlLmVuZHB0cl9yZWFjaGVkID0gZmFsc2U7CkBAIC0xMTI4LDE4ICsxMTM4LDE4IEBA IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQkJCXBnX2ZhdGFsKCJjb3VsZCBub3Qgb3Bl biBkaXJlY3RvcnkgXCIlc1wiOiAlbSIsIHdhbGRpcik7CiAJCX0KIAotCQl3YWxkaXIgPSBpZGVu dGlmeV90YXJnZXRfZGlyZWN0b3J5KHdhbGRpciwgZm5hbWUsICZXYWxTZWdTeik7CisJCXdhbGRp ciA9IGlkZW50aWZ5X3RhcmdldF9kaXJlY3Rvcnkod2FsZGlyLCBmbmFtZSwgJnByaXZhdGUuc2Vn c2l6ZSk7CiAJCWZkID0gb3Blbl9maWxlX2luX2RpcmVjdG9yeSh3YWxkaXIsIGZuYW1lKTsKIAkJ aWYgKGZkIDwgMCkKIAkJCXBnX2ZhdGFsKCJjb3VsZCBub3Qgb3BlbiBmaWxlIFwiJXNcIiIsIGZu YW1lKTsKIAkJY2xvc2UoZmQpOwogCiAJCS8qIHBhcnNlIHBvc2l0aW9uIGZyb20gZmlsZSAqLwot CQlYTG9nRnJvbUZpbGVOYW1lKGZuYW1lLCAmcHJpdmF0ZS50aW1lbGluZSwgJnNlZ25vLCBXYWxT ZWdTeik7CisJCVhMb2dGcm9tRmlsZU5hbWUoZm5hbWUsICZwcml2YXRlLnRpbWVsaW5lLCAmc2Vn bm8sIHByaXZhdGUuc2Vnc2l6ZSk7CiAKIAkJaWYgKCFYTG9nUmVjUHRySXNWYWxpZChwcml2YXRl LnN0YXJ0cHRyKSkKLQkJCVhMb2dTZWdOb09mZnNldFRvUmVjUHRyKHNlZ25vLCAwLCBXYWxTZWdT eiwgcHJpdmF0ZS5zdGFydHB0cik7Ci0JCWVsc2UgaWYgKCFYTEJ5dGVJblNlZyhwcml2YXRlLnN0 YXJ0cHRyLCBzZWdubywgV2FsU2VnU3opKQorCQkJWExvZ1NlZ05vT2Zmc2V0VG9SZWNQdHIoc2Vn bm8sIDAsIHByaXZhdGUuc2Vnc2l6ZSwgcHJpdmF0ZS5zdGFydHB0cik7CisJCWVsc2UgaWYgKCFY TEJ5dGVJblNlZyhwcml2YXRlLnN0YXJ0cHRyLCBzZWdubywgcHJpdmF0ZS5zZWdzaXplKSkKIAkJ ewogCQkJcGdfbG9nX2Vycm9yKCJzdGFydCBXQUwgbG9jYXRpb24gJVgvJTA4WCBpcyBub3QgaW5z aWRlIGZpbGUgXCIlc1wiIiwKIAkJCQkJCSBMU05fRk9STUFUX0FSR1MocHJpdmF0ZS5zdGFydHB0 ciksCkBAIC0xMTQ5LDcgKzExNTksNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAog CQkvKiBubyBzZWNvbmQgZmlsZSBzcGVjaWZpZWQsIHNldCBlbmQgcG9zaXRpb24gKi8KIAkJaWYg KCEob3B0aW5kICsgMSA8IGFyZ2MpICYmICFYTG9nUmVjUHRySXNWYWxpZChwcml2YXRlLmVuZHB0 cikpCi0JCQlYTG9nU2VnTm9PZmZzZXRUb1JlY1B0cihzZWdubyArIDEsIDAsIFdhbFNlZ1N6LCBw cml2YXRlLmVuZHB0cik7CisJCQlYTG9nU2VnTm9PZmZzZXRUb1JlY1B0cihzZWdubyArIDEsIDAs IHByaXZhdGUuc2Vnc2l6ZSwgcHJpdmF0ZS5lbmRwdHIpOwogCiAJCS8qIHBhcnNlIEVORFNFRyBp ZiBwYXNzZWQgKi8KIAkJaWYgKG9wdGluZCArIDEgPCBhcmdjKQpAQCAtMTE2NSwxNCArMTE3NSwx NCBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJCWNsb3NlKGZkKTsKIAogCQkJLyog cGFyc2UgcG9zaXRpb24gZnJvbSBmaWxlICovCi0JCQlYTG9nRnJvbUZpbGVOYW1lKGZuYW1lLCAm cHJpdmF0ZS50aW1lbGluZSwgJmVuZHNlZ25vLCBXYWxTZWdTeik7CisJCQlYTG9nRnJvbUZpbGVO YW1lKGZuYW1lLCAmcHJpdmF0ZS50aW1lbGluZSwgJmVuZHNlZ25vLCBwcml2YXRlLnNlZ3NpemUp OwogCiAJCQlpZiAoZW5kc2Vnbm8gPCBzZWdubykKIAkJCQlwZ19mYXRhbCgiRU5EU0VHICVzIGlz IGJlZm9yZSBTVEFSVFNFRyAlcyIsCiAJCQkJCQkgYXJndltvcHRpbmQgKyAxXSwgYXJndltvcHRp bmRdKTsKIAogCQkJaWYgKCFYTG9nUmVjUHRySXNWYWxpZChwcml2YXRlLmVuZHB0cikpCi0JCQkJ WExvZ1NlZ05vT2Zmc2V0VG9SZWNQdHIoZW5kc2Vnbm8gKyAxLCAwLCBXYWxTZWdTeiwKKwkJCQlY TG9nU2VnTm9PZmZzZXRUb1JlY1B0cihlbmRzZWdubyArIDEsIDAsIHByaXZhdGUuc2Vnc2l6ZSwK IAkJCQkJCQkJCQlwcml2YXRlLmVuZHB0cik7CiAKIAkJCS8qIHNldCBzZWdubyB0byBlbmRzZWdu byBmb3IgY2hlY2sgb2YgLS1lbmQgKi8KQEAgLTExODAsOCArMTE5MCw4IEBAIG1haW4oaW50IGFy Z2MsIGNoYXIgKiphcmd2KQogCQl9CiAKIAotCQlpZiAoIVhMQnl0ZUluU2VnKHByaXZhdGUuZW5k cHRyLCBzZWdubywgV2FsU2VnU3opICYmCi0JCQlwcml2YXRlLmVuZHB0ciAhPSAoc2Vnbm8gKyAx KSAqIFdhbFNlZ1N6KQorCQlpZiAoIVhMQnl0ZUluU2VnKHByaXZhdGUuZW5kcHRyLCBzZWdubywg cHJpdmF0ZS5zZWdzaXplKSAmJgorCQkJcHJpdmF0ZS5lbmRwdHIgIT0gKHNlZ25vICsgMSkgKiBw cml2YXRlLnNlZ3NpemUpCiAJCXsKIAkJCXBnX2xvZ19lcnJvcigiZW5kIFdBTCBsb2NhdGlvbiAl WC8lMDhYIGlzIG5vdCBpbnNpZGUgZmlsZSBcIiVzXCIiLAogCQkJCQkJIExTTl9GT1JNQVRfQVJH Uyhwcml2YXRlLmVuZHB0ciksCkBAIC0xMTkwLDcgKzEyMDAsNyBAQCBtYWluKGludCBhcmdjLCBj aGFyICoqYXJndikKIAkJfQogCX0KIAllbHNlCi0JCXdhbGRpciA9IGlkZW50aWZ5X3RhcmdldF9k aXJlY3Rvcnkod2FsZGlyLCBOVUxMLCAmV2FsU2VnU3opOworCQl3YWxkaXIgPSBpZGVudGlmeV90 YXJnZXRfZGlyZWN0b3J5KHdhbGRpciwgTlVMTCwgJnByaXZhdGUuc2Vnc2l6ZSk7CiAKIAkvKiB3 ZSBkb24ndCBrbm93IHdoYXQgdG8gcHJpbnQgKi8KIAlpZiAoIVhMb2dSZWNQdHJJc1ZhbGlkKHBy aXZhdGUuc3RhcnRwdHIpKQpAQCAtMTIwMyw3ICsxMjEzLDcgQEAgbWFpbihpbnQgYXJnYywgY2hh ciAqKmFyZ3YpCiAKIAkvKiB3ZSBoYXZlIGV2ZXJ5dGhpbmcgd2UgbmVlZCwgc3RhcnQgcmVhZGlu ZyAqLwogCXhsb2dyZWFkZXJfc3RhdGUgPQotCQlYTG9nUmVhZGVyQWxsb2NhdGUoV2FsU2VnU3os IHdhbGRpciwKKwkJWExvZ1JlYWRlckFsbG9jYXRlKHByaXZhdGUuc2Vnc2l6ZSwgd2FsZGlyLAog CQkJCQkJICAgWExfUk9VVElORSgucGFnZV9yZWFkID0gV0FMRHVtcFJlYWRQYWdlLAogCQkJCQkJ CQkJICAuc2VnbWVudF9vcGVuID0gV0FMRHVtcE9wZW5TZWdtZW50LAogCQkJCQkJCQkJICAuc2Vn bWVudF9jbG9zZSA9IFdBTER1bXBDbG9zZVNlZ21lbnQpLApAQCAtMTIyNCw3ICsxMjM0LDcgQEAg bWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJICogYSBzZWdtZW50IChlLmcuIHdlIHdlcmUg dXNlZCBpbiBmaWxlIG1vZGUpLgogCSAqLwogCWlmIChmaXJzdF9yZWNvcmQgIT0gcHJpdmF0ZS5z dGFydHB0ciAmJgotCQlYTG9nU2VnbWVudE9mZnNldChwcml2YXRlLnN0YXJ0cHRyLCBXYWxTZWdT eikgIT0gMCkKKwkJWExvZ1NlZ21lbnRPZmZzZXQocHJpdmF0ZS5zdGFydHB0ciwgcHJpdmF0ZS5z ZWdzaXplKSAhPSAwKQogCQlwZ19sb2dfaW5mbyhuZ2V0dGV4dCgiZmlyc3QgcmVjb3JkIGlzIGFm dGVyICVYLyUwOFgsIGF0ICVYLyUwOFgsIHNraXBwaW5nIG92ZXIgJXUgYnl0ZSIsCiAJCQkJCQkJ ICJmaXJzdCByZWNvcmQgaXMgYWZ0ZXIgJVgvJTA4WCwgYXQgJVgvJTA4WCwgc2tpcHBpbmcgb3Zl ciAldSBieXRlcyIsCiAJCQkJCQkJIChmaXJzdF9yZWNvcmQgLSBwcml2YXRlLnN0YXJ0cHRyKSks CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5oIGIvc3JjL2Jpbi9w Z193YWxkdW1wL3BnX3dhbGR1bXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw MDAwMC4uMDEzYjA1MTUwNmYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmluL3BnX3dhbGR1bXAv cGdfd2FsZHVtcC5oCkBAIC0wLDAgKzEsMjYgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAq IHBnX3dhbGR1bXAuaCAtIGRlY29kZSBhbmQgZGlzcGxheSBXQUwKKyAqCisgKiBDb3B5cmlnaHQg KGMpIDIwMjYsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKgorICogSURF TlRJRklDQVRJT04KKyAqCQkgIHNyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmgKKyAqLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLQorICovCisjaWZuZGVmIFBHX1dBTERVTVBfSAorI2RlZmluZSBQR19XQUxE VU1QX0gKKworI2luY2x1ZGUgImFjY2Vzcy94bG9nZGVmcy5oIgorCisvKiBDb250YWlucyB0aGUg bmVjZXNzYXJ5IGluZm9ybWF0aW9uIHRvIGRyaXZlIFdBTCBkZWNvZGluZyAqLwordHlwZWRlZiBz dHJ1Y3QgWExvZ0R1bXBQcml2YXRlCit7CisJVGltZUxpbmVJRAl0aW1lbGluZTsKKwlpbnQJCQlz ZWdzaXplOworCVhMb2dSZWNQdHIJc3RhcnRwdHI7CisJWExvZ1JlY1B0cgllbmRwdHI7CisJYm9v bAkJZW5kcHRyX3JlYWNoZWQ7Cit9IFhMb2dEdW1wUHJpdmF0ZTsKKworI2VuZGlmCQkJCQkJCS8q IFBHX1dBTERVTVBfSCAqLwotLSAKMi40Ny4xCgo= --0000000000004c4c80064d4df2a2 Content-Type: application/octet-stream; name="v19-0003-pg_waldump-Add-support-for-reading-WAL-from-tar-.patch" Content-Disposition: attachment; filename="v19-0003-pg_waldump-Add-support-for-reading-WAL-from-tar-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmw5wki32 RnJvbSAwZGUyNTRmMDU3ZDE3ZTc3MmIzZGNjZWJiMThiNDljYTdiYWE3ZTg1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFdl ZCwgMTggRmViIDIwMjYgMTE6MDc6NTcgKzA1MzAKU3ViamVjdDogW1BBVENIIHYxOSAzLzRdIHBn X3dhbGR1bXA6IEFkZCBzdXBwb3J0IGZvciByZWFkaW5nIFdBTCBmcm9tIHRhcgogYXJjaGl2ZXMK CnBnX3dhbGR1bXAgY2FuIG5vdyBhY2NlcHQgdGhlIHBhdGggdG8gYSB0YXIgYXJjaGl2ZSAob3B0 aW9uYWxseQpjb21wcmVzc2VkIHdpdGggZ3ppcCwgbHo0LCBvciB6c3RkKSBjb250YWluaW5nIFdB TCBmaWxlcyBhbmQgZGVjb2RlCnRoZW0uICBUaGlzIHdhcyBhZGRlZCBwcmltYXJpbHkgZm9yIHBn X3ZlcmlmeWJhY2t1cCwgd2hpY2ggcHJldmlvdXNseQpoYWQgdG8gc2tpcCBXQUwgcGFyc2luZyBm b3IgdGFyLWZvcm1hdCBiYWNrdXBzLgoKVGhlIGltcGxlbWVudGF0aW9uIHVzZXMgdGhlIGV4aXN0 aW5nIGFyY2hpdmUgc3RyZWFtZXIgaW5mcmFzdHJ1Y3R1cmUKd2l0aCBhIGhhc2ggdGFibGUgdG8g dHJhY2sgV0FMIHNlZ21lbnRzIHJlYWQgZnJvbSB0aGUgYXJjaGl2ZS4gIElmIFdBTApmaWxlcyB3 aXRoaW4gdGhlIGFyY2hpdmUgYXJlIG5vdCBpbiBzZXF1ZW50aWFsIG9yZGVyLCBvdXQtb2Ytb3Jk ZXIKc2VnbWVudHMgYXJlIHdyaXR0ZW4gdG8gYSB0ZW1wb3JhcnkgZGlyZWN0b3J5IChjcmVhdGVk IHZpYSBta2R0ZW1wIHVuZGVyCiRUTVBESVIgb3IgdGhlIGFyY2hpdmUncyBkaXJlY3RvcnkpIGFu ZCByZWFkIGJhY2sgd2hlbiBuZWVkZWQuICBBbgphdGV4aXQgY2FsbGJhY2sgZW5zdXJlcyB0aGUg dGVtcG9yYXJ5IGRpcmVjdG9yeSBpcyBjbGVhbmVkIHVwLgoKVGhlIC0tZm9sbG93IG9wdGlvbiBp cyBub3Qgc3VwcG9ydGVkIHdoZW4gcmVhZGluZyBmcm9tIGEgdGFyIGFyY2hpdmUuCgpBdXRob3I6 IEFtdWwgU3VsIDxzdWxhbXVsQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IFJvYmVydCBIYWFzIDxy b2JlcnRtaGFhc0BnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBKYWt1YiBXYXJ0YWsgPGpha3ViLndh cnRha0BlbnRlcnByaXNlZGIuY29tPgpSZXZpZXdlZC1ieTogQ2hhbyBMaSA8bGkuZXZhbi5jaGFv QGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IEV1bGVyIFRhdmVpcmEgPGV1bGVyQGV1bGVydG8uY29t PgpSZXZpZXdlZC1ieTogQW5kcmV3IER1bnN0YW4gPGFuZHJld0BkdW5zbGFuZS5uZXQ+CmRpc2N1 c3Npb246IGh0dHBzOi8vcG9zdGdyLmVzL20vQ0FBSl9iOTRicWRXTjNoMkotUHp6elEyTnBid2N0 NVpRSGdnbl9Rb1lHaEMycm4tPVdRQG1haWwuZ21haWwuY29tCi0tLQogZG9jL3NyYy9zZ21sL3Jl Zi9wZ193YWxkdW1wLnNnbWwgICAgIHwgIDIzICstCiBzcmMvYmluL3BnX3dhbGR1bXAvTWFrZWZp bGUgICAgICAgICAgfCAgIDcgKy0KIHNyYy9iaW4vcGdfd2FsZHVtcC9hcmNoaXZlX3dhbGR1bXAu YyB8IDgyNyArKysrKysrKysrKysrKysrKysrKysrKysrKysKIHNyYy9iaW4vcGdfd2FsZHVtcC9t ZXNvbi5idWlsZCAgICAgICB8ICAgNCArLQogc3JjL2Jpbi9wZ193YWxkdW1wL3BnX3dhbGR1bXAu YyAgICAgIHwgMjg2ICsrKysrKystLQogc3JjL2Jpbi9wZ193YWxkdW1wL3BnX3dhbGR1bXAuaCAg ICAgIHwgIDQ4ICsrCiBzcmMvYmluL3BnX3dhbGR1bXAvdC8wMDFfYmFzaWMucGwgICAgfCAyNDIg KysrKysrLS0KIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICB8ICAgNCArCiA4 IGZpbGVzIGNoYW5nZWQsIDEzMTUgaW5zZXJ0aW9ucygrKSwgMTI2IGRlbGV0aW9ucygtKQogY3Jl YXRlIG1vZGUgMTAwNjQ0IHNyYy9iaW4vcGdfd2FsZHVtcC9hcmNoaXZlX3dhbGR1bXAuYwoKZGlm ZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvcGdfd2FsZHVtcC5zZ21sIGIvZG9jL3NyYy9zZ21s L3JlZi9wZ193YWxkdW1wLnNnbWwKaW5kZXggZDE3MTVmZjUxMjQuLjliYmI0YmQ1NzcyIDEwMDY0 NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL3BnX3dhbGR1bXAuc2dtbAorKysgYi9kb2Mvc3JjL3Nn bWwvcmVmL3BnX3dhbGR1bXAuc2dtbApAQCAtMTQxLDEzICsxNDEsMjEgQEAgUG9zdGdyZVNRTCBk b2N1bWVudGF0aW9uCiAgICAgICA8dGVybT48b3B0aW9uPi0tcGF0aD08cmVwbGFjZWFibGU+cGF0 aDwvcmVwbGFjZWFibGU+PC9vcHRpb24+PC90ZXJtPgogICAgICAgPGxpc3RpdGVtPgogICAgICAg IDxwYXJhPgotICAgICAgICBTcGVjaWZpZXMgYSBkaXJlY3RvcnkgdG8gc2VhcmNoIGZvciBXQUwg c2VnbWVudCBmaWxlcyBvciBhCi0gICAgICAgIGRpcmVjdG9yeSB3aXRoIGEgPGxpdGVyYWw+cGdf d2FsPC9saXRlcmFsPiBzdWJkaXJlY3RvcnkgdGhhdAorICAgICAgICBTcGVjaWZpZXMgYSB0YXIg YXJjaGl2ZSBvciBhIGRpcmVjdG9yeSB0byBzZWFyY2ggZm9yIFdBTCBzZWdtZW50IGZpbGVzCisg ICAgICAgIG9yIGEgZGlyZWN0b3J5IHdpdGggYSA8bGl0ZXJhbD5wZ193YWw8L2xpdGVyYWw+IHN1 YmRpcmVjdG9yeSB0aGF0CiAgICAgICAgIGNvbnRhaW5zIHN1Y2ggZmlsZXMuICBUaGUgZGVmYXVs dCBpcyB0byBzZWFyY2ggaW4gdGhlIGN1cnJlbnQKICAgICAgICAgZGlyZWN0b3J5LCB0aGUgPGxp dGVyYWw+cGdfd2FsPC9saXRlcmFsPiBzdWJkaXJlY3Rvcnkgb2YgdGhlCiAgICAgICAgIGN1cnJl bnQgZGlyZWN0b3J5LCBhbmQgdGhlIDxsaXRlcmFsPnBnX3dhbDwvbGl0ZXJhbD4gc3ViZGlyZWN0 b3J5CiAgICAgICAgIG9mIDxlbnZhcj5QR0RBVEE8L2VudmFyPi4KICAgICAgICA8L3BhcmE+Cisg ICAgICAgPHBhcmE+CisgICAgICAgIElmIGEgdGFyIGFyY2hpdmUgaXMgcHJvdmlkZWQgYW5kIGl0 cyBXQUwgc2VnbWVudCBmaWxlcyBhcmUgbm90IGluCisgICAgICAgIHNlcXVlbnRpYWwgb3JkZXIs IHRob3NlIGZpbGVzIHdpbGwgYmUgd3JpdHRlbiB0byBhIHRlbXBvcmFyeSBkaXJlY3RvcnkKKyAg ICAgICAgbmFtZWQgc3RhcnRpbmcgd2l0aCA8ZmlsZW5hbWU+d2FsZHVtcF90bXA8L2ZpbGVuYW1l Pi4gVGhpcyBkaXJlY3Rvcnkgd2lsbCBiZQorICAgICAgICBjcmVhdGVkIGluc2lkZSB0aGUgZGly ZWN0b3J5IHNwZWNpZmllZCBieSB0aGUgPGVudmFyPlRNUERJUjwvZW52YXI+CisgICAgICAgIGVu dmlyb25tZW50IHZhcmlhYmxlIGlmIGl0IGlzIHNldDsgb3RoZXJ3aXNlLCBpdCB3aWxsIGJlIGNy ZWF0ZWQgd2l0aGluCisgICAgICAgIHRoZSBzYW1lIGRpcmVjdG9yeSBhcyB0aGUgdGFyIGFyY2hp dmUuCisgICAgICAgPC9wYXJhPgogICAgICAgPC9saXN0aXRlbT4KICAgICAgPC92YXJsaXN0ZW50 cnk+CiAKQEAgLTM4Myw2ICszOTEsMTcgQEAgUG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCiAgICAg IDwvcGFyYT4KICAgICA8L2xpc3RpdGVtPgogICAgPC92YXJsaXN0ZW50cnk+CisKKyAgIDx2YXJs aXN0ZW50cnk+CisgICAgPHRlcm0+PGVudmFyPlRNUERJUjwvZW52YXI+PC90ZXJtPgorICAgIDxs aXN0aXRlbT4KKyAgICAgPHBhcmE+CisgICAgICBEaXJlY3RvcnkgaW4gd2hpY2ggdG8gY3JlYXRl IHRlbXBvcmFyeSBmaWxlcyB3aGVuIHJlYWRpbmcgV0FMIGZyb20gYQorICAgICAgdGFyIGFyY2hp dmUgd2l0aCBvdXQtb2Ytb3JkZXIgc2VnbWVudCBmaWxlcy4gSWYgbm90IHNldCwgdGhlIHRlbXBv cmFyeQorICAgICAgZGlyZWN0b3J5IGlzIGNyZWF0ZWQgd2l0aGluIHRoZSBzYW1lIGRpcmVjdG9y eSBhcyB0aGUgdGFyIGFyY2hpdmUuCisgICAgIDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAg PC92YXJsaXN0ZW50cnk+CiAgIDwvdmFyaWFibGVsaXN0PgogIDwvcmVmc2VjdDE+CiAKZGlmZiAt LWdpdCBhL3NyYy9iaW4vcGdfd2FsZHVtcC9NYWtlZmlsZSBiL3NyYy9iaW4vcGdfd2FsZHVtcC9N YWtlZmlsZQppbmRleCA0YzFlZTY0OTUwMS4uYWFiYjg3NTY2YTIgMTAwNjQ0Ci0tLSBhL3NyYy9i aW4vcGdfd2FsZHVtcC9NYWtlZmlsZQorKysgYi9zcmMvYmluL3BnX3dhbGR1bXAvTWFrZWZpbGUK QEAgLTMsNiArMyw5IEBACiBQR0ZJTEVERVNDID0gInBnX3dhbGR1bXAgLSBkZWNvZGUgYW5kIGRp c3BsYXkgV0FMIgogUEdBUFBJQ09OPXdpbjMyCiAKKyMgbWFrZSB0aGVzZSBhdmFpbGFibGUgdG8g VEFQIHRlc3Qgc2NyaXB0cworZXhwb3J0IFRBUgorCiBzdWJkaXIgPSBzcmMvYmluL3BnX3dhbGR1 bXAKIHRvcF9idWlsZGRpciA9IC4uLy4uLy4uCiBpbmNsdWRlICQodG9wX2J1aWxkZGlyKS9zcmMv TWFrZWZpbGUuZ2xvYmFsCkBAIC0xMCwxMyArMTMsMTUgQEAgaW5jbHVkZSAkKHRvcF9idWlsZGRp cikvc3JjL01ha2VmaWxlLmdsb2JhbAogT0JKUyA9IFwKIAkkKFJNR1JERVNDT0JKUykgXAogCSQo V0lOMzJSRVMpIFwKKwlhcmNoaXZlX3dhbGR1bXAubyBcCiAJY29tcGF0Lm8gXAogCXBnX3dhbGR1 bXAubyBcCiAJcm1ncmRlc2MubyBcCiAJeGxvZ3JlYWRlci5vIFwKIAl4bG9nc3RhdHMubwogCi1v dmVycmlkZSBDUFBGTEFHUyA6PSAtREZST05URU5EICQoQ1BQRkxBR1MpCitvdmVycmlkZSBDUFBG TEFHUyA6PSAtREZST05URU5EIC1JJChsaWJwcV9zcmNkaXIpICQoQ1BQRkxBR1MpCitMREZMQUdT X0lOVEVSTkFMICs9IC1MJCh0b3BfYnVpbGRkaXIpL3NyYy9mZV91dGlscyAtbHBnZmV1dGlscwog CiBSTUdSREVTQ1NPVVJDRVMgPSAkKHNvcnQgJChub3RkaXIgJCh3aWxkY2FyZCAkKHRvcF9zcmNk aXIpL3NyYy9iYWNrZW5kL2FjY2Vzcy9ybWdyZGVzYy8qZGVzYyouYykpKQogUk1HUkRFU0NPQkpT ID0gJChwYXRzdWJzdCAlLmMsJS5vLCQoUk1HUkRFU0NTT1VSQ0VTKSkKZGlmZiAtLWdpdCBhL3Ny Yy9iaW4vcGdfd2FsZHVtcC9hcmNoaXZlX3dhbGR1bXAuYyBiL3NyYy9iaW4vcGdfd2FsZHVtcC9h cmNoaXZlX3dhbGR1bXAuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4u ZjM2ZGU5OTFkYzYKLS0tIC9kZXYvbnVsbAorKysgYi9zcmMvYmluL3BnX3dhbGR1bXAvYXJjaGl2 ZV93YWxkdW1wLmMKQEAgLTAsMCArMSw4MjcgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAq IGFyY2hpdmVfd2FsZHVtcC5jCisgKgkJQSBnZW5lcmljIGZhY2lsaXR5IGZvciByZWFkaW5nIFdB TCBkYXRhIGZyb20gdGFyIGFyY2hpdmVzIHZpYSBhcmNoaXZlCisgKgkJc3RyZWFtZXIuCisgKgor ICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDI2LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9w bWVudCBHcm91cAorICoKKyAqIElERU5USUZJQ0FUSU9OCisgKgkJc3JjL2Jpbi9wZ193YWxkdW1w L2FyY2hpdmVfd2FsZHVtcC5jCisgKgorICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKi8KKworI2luY2x1 ZGUgInBvc3RncmVzX2ZlLmgiCisKKyNpbmNsdWRlIDx1bmlzdGQuaD4KKworI2luY2x1ZGUgImFj Y2Vzcy94bG9nX2ludGVybmFsLmgiCisjaW5jbHVkZSAiY29tbW9uL2ZpbGVfcGVybS5oIgorI2lu Y2x1ZGUgImNvbW1vbi9oYXNoZm4uaCIKKyNpbmNsdWRlICJjb21tb24vbG9nZ2luZy5oIgorI2lu Y2x1ZGUgImZlX3V0aWxzL3NpbXBsZV9saXN0LmgiCisjaW5jbHVkZSAicGdfd2FsZHVtcC5oIgor CisvKgorICogSG93IG1hbnkgYnl0ZXMgc2hvdWxkIHdlIHRyeSB0byByZWFkIGZyb20gYSBmaWxl IGF0IG9uY2U/CisgKi8KKyNkZWZpbmUgUkVBRF9DSFVOS19TSVpFCQkJCSgxMjggKiAxMDI0KQor CisvKiBUZW1wb3JhcnkgZXhwb3J0ZWQgV0FMIGZpbGUgZGlyZWN0b3J5ICovCitjaGFyCSAgICpU bXBXYWxTZWdEaXIgPSBOVUxMOworCisvKgorICogQ2hlY2sgaWYgdGhlIHN0YXJ0IHNlZ21lbnQg bnVtYmVyIGlzIHplcm87IHRoaXMgaW5kaWNhdGVzIGEgcmVxdWVzdCB0byByZWFkCisgKiBhbnkg V0FMIGZpbGUuCisgKi8KKyNkZWZpbmUgUkVBRF9BTllfV0FMKHByaXZhdGVJbmZvKQkoKHByaXZh dGVJbmZvKS0+c3RhcnRfc2Vnbm8gPT0gMCkKKworLyoKKyAqIEhhc2ggZW50cnkgcmVwcmVzZW50 aW5nIGEgV0FMIHNlZ21lbnQgcmV0cmlldmVkIGZyb20gdGhlIGFyY2hpdmUuCisgKgorICogV2hp bGUgV0FMIHNlZ21lbnRzIGFyZSB0eXBpY2FsbHkgcmVhZCBzZXF1ZW50aWFsbHksIGluZGl2aWR1 YWwgZW50cmllcworICogbWFpbnRhaW4gdGhlaXIgb3duIGJ1ZmZlcnMgZm9yIHRoZSBmb2xsb3dp bmcgcmVhc29uczoKKyAqCisgKiAxLiBCb3VuZGFyeSBIYW5kbGluZzogVGhlIGFyY2hpdmUgc3Ry ZWFtZXIgcHJvdmlkZXMgYSBjb250aW51b3VzIGJ5dGUKKyAqIHN0cmVhbS4gQSBzaW5nbGUgc3Ry ZWFtaW5nIGNodW5rIG1heSBjb250YWluIHRoZSBlbmQgb2Ygb25lIFdBTCBzZWdtZW50CisgKiBh bmQgdGhlIHN0YXJ0IG9mIHRoZSBuZXh0LiBTZXBhcmF0ZSBidWZmZXJzIGFsbG93IHVzIHRvIGVh c2lseQorICogcGFydGl0aW9uIGFuZCB0cmFjayB0aGVzZSBieXRlcyBieSB0aGVpciByZXNwZWN0 aXZlIHNlZ21lbnRzLgorICoKKyAqIDIuIE91dC1vZi1PcmRlciBTdXBwb3J0OiBEZWRpY2F0ZWQg YnVmZmVycyBzaW1wbGlmeSBsb2dpYyBpZiBzZWdtZW50cworICogYXJlIGV2ZXIgYXJjaGl2ZWQg b3IgcmV0cmlldmVkIG91dCBvZiBzZXF1ZW5jZS4KKyAqCisgKiBUbyBtaW5pbWl6ZSB0aGUgbWVt b3J5IGZvb3RwcmludCwgZW50cmllcyBhbmQgdGhlaXIgYXNzb2NpYXRlZCBidWZmZXJzIGFyZQor ICogZnJlZWQgaW1tZWRpYXRlbHkgb25jZSBjb25zdW1lZC4gU2luY2UgcGdfd2FsZHVtcCBkb2Vz IG5vdCByZXF1ZXN0IHRoZSBzYW1lCisgKiBieXRlcyB0d2ljZSwgYSBzZWdtZW50IGlzIGRpc2Nh cmRlZCBhcyBzb29uIGFzIHBnX3dhbGR1bXAgbW92ZXMgcGFzdCBpdC4KKyAqLwordHlwZWRlZiBz dHJ1Y3QgQXJjaGl2ZWRXQUxGaWxlCit7CisJdWludDMyCQlzdGF0dXM7CQkJLyogaGFzaCBzdGF0 dXMgKi8KKwljb25zdCBjaGFyICpmbmFtZTsJCQkvKiBoYXNoIGtleTogV0FMIHNlZ21lbnQgbmFt ZSAqLworCisJU3RyaW5nSW5mbwlidWY7CQkJLyogaG9sZHMgV0FMIGJ5dGVzIHJlYWQgZnJvbSBh cmNoaXZlICovCisJYm9vbAkJc3BpbGxlZDsJCS8qIHRydWUgaWYgdGhlIFdBTCBkYXRhIHdhcyBz cGlsbGVkIHRvIGEKKwkJCQkJCQkJICogdGVtcG9yYXJ5IGZpbGUgKi8KKworCWludAkJCXJlYWRf bGVuOwkJLyogdG90YWwgYnl0ZXMgb2YgYSBXQUwgcmVhZCBmcm9tIGFyY2hpdmUgKi8KK30gQXJj aGl2ZWRXQUxGaWxlOworCitzdGF0aWMgdWludDMyIGhhc2hfc3RyaW5nX3BvaW50ZXIoY29uc3Qg Y2hhciAqcyk7CisjZGVmaW5lIFNIX1BSRUZJWAkJCQlBcmNoaXZlZFdBTAorI2RlZmluZSBTSF9F TEVNRU5UX1RZUEUJCQlBcmNoaXZlZFdBTEZpbGUKKyNkZWZpbmUgU0hfS0VZX1RZUEUJCQkJY29u c3QgY2hhciAqCisjZGVmaW5lIFNIX0tFWQkJCQkJZm5hbWUKKyNkZWZpbmUgU0hfSEFTSF9LRVko dGIsIGtleSkJaGFzaF9zdHJpbmdfcG9pbnRlcihrZXkpCisjZGVmaW5lIFNIX0VRVUFMKHRiLCBh LCBiKQkJKHN0cmNtcChhLCBiKSA9PSAwKQorI2RlZmluZSBTSF9TQ09QRQkJCQlzdGF0aWMgaW5s aW5lCisjZGVmaW5lIFNIX1JBV19BTExPQ0FUT1IJCXBnX21hbGxvYzAKKyNkZWZpbmUgU0hfREVD TEFSRQorI2RlZmluZSBTSF9ERUZJTkUKKyNpbmNsdWRlICJsaWIvc2ltcGxlaGFzaC5oIgorCit0 eXBlZGVmIHN0cnVjdCBhc3RyZWFtZXJfd2FsZHVtcAoreworCWFzdHJlYW1lcgliYXNlOworCVhM b2dEdW1wUHJpdmF0ZSAqcHJpdmF0ZUluZm87Cit9IGFzdHJlYW1lcl93YWxkdW1wOworCitzdGF0 aWMgQXJjaGl2ZWRXQUxGaWxlICpnZXRfYXJjaGl2ZV93YWxfZW50cnkoY29uc3QgY2hhciAqZm5h bWUsCisJCQkJCQkJCQkJCSAgWExvZ0R1bXBQcml2YXRlICpwcml2YXRlSW5mbywKKwkJCQkJCQkJ CQkJICBpbnQgV2FsU2VnU3opOworc3RhdGljIGludAlyZWFkX2FyY2hpdmVfZmlsZShYTG9nRHVt cFByaXZhdGUgKnByaXZhdGVJbmZvLCBTaXplIGNvdW50KTsKK3N0YXRpYyB2b2lkIHNldHVwX3Rt cHdhbF9kaXIoY29uc3QgY2hhciAqd2FsZGlyKTsKK3N0YXRpYyB2b2lkIGNsZWFudXBfdG1wd2Fs X2Rpcl9hdGV4aXQodm9pZCk7CisKK3N0YXRpYyBGSUxFICpwcmVwYXJlX3RtcF93cml0ZShjb25z dCBjaGFyICpmbmFtZSk7CitzdGF0aWMgdm9pZCBwZXJmb3JtX3RtcF93cml0ZShjb25zdCBjaGFy ICpmbmFtZSwgU3RyaW5nSW5mbyBidWYsIEZJTEUgKmZpbGUpOworCitzdGF0aWMgYXN0cmVhbWVy ICphc3RyZWFtZXJfd2FsZHVtcF9uZXcoWExvZ0R1bXBQcml2YXRlICpwcml2YXRlSW5mbyk7Citz dGF0aWMgdm9pZCBhc3RyZWFtZXJfd2FsZHVtcF9jb250ZW50KGFzdHJlYW1lciAqc3RyZWFtZXIs CisJCQkJCQkJCQkgIGFzdHJlYW1lcl9tZW1iZXIgKm1lbWJlciwKKwkJCQkJCQkJCSAgY29uc3Qg Y2hhciAqZGF0YSwgaW50IGxlbiwKKwkJCQkJCQkJCSAgYXN0cmVhbWVyX2FyY2hpdmVfY29udGV4 dCBjb250ZXh0KTsKK3N0YXRpYyB2b2lkIGFzdHJlYW1lcl93YWxkdW1wX2ZpbmFsaXplKGFzdHJl YW1lciAqc3RyZWFtZXIpOworc3RhdGljIHZvaWQgYXN0cmVhbWVyX3dhbGR1bXBfZnJlZShhc3Ry ZWFtZXIgKnN0cmVhbWVyKTsKKworc3RhdGljIGJvb2wgbWVtYmVyX2lzX3dhbF9maWxlKGFzdHJl YW1lcl93YWxkdW1wICpteXN0cmVhbWVyLAorCQkJCQkJCSAgIGFzdHJlYW1lcl9tZW1iZXIgKm1l bWJlciwKKwkJCQkJCQkgICBjaGFyICoqZm5hbWUpOworCitzdGF0aWMgY29uc3QgYXN0cmVhbWVy X29wcyBhc3RyZWFtZXJfd2FsZHVtcF9vcHMgPSB7CisJLmNvbnRlbnQgPSBhc3RyZWFtZXJfd2Fs ZHVtcF9jb250ZW50LAorCS5maW5hbGl6ZSA9IGFzdHJlYW1lcl93YWxkdW1wX2ZpbmFsaXplLAor CS5mcmVlID0gYXN0cmVhbWVyX3dhbGR1bXBfZnJlZQorfTsKKworLyoKKyAqIEluaXRpYWxpemVz IHRoZSB0YXIgYXJjaGl2ZSByZWFkZXIsIGNyZWF0ZXMgYSBoYXNoIHRhYmxlIGZvciBXQUwgZW50 cmllcywKKyAqIGNoZWNrcyBmb3IgZXhpc3RpbmcgdmFsaWQgV0FMIHNlZ21lbnRzIGluIHRoZSBh cmNoaXZlIGZpbGUgYW5kIHJldHJpZXZlcyB0aGUKKyAqIHNlZ21lbnQgc2l6ZSwgYW5kIHNldHMg dXAgZmlsdGVycyBmb3IgcmVsZXZhbnQgZW50cmllcy4gSXQgYWxzbyBjb25maWd1cmVzIGEKKyAq IHRlbXBvcmFyeSBkaXJlY3RvcnkgZm9yIG91dC1vZi1vcmRlciBXQUwgZGF0YSBhbmQgcmVnaXN0 ZXJzIGFuIGV4aXQgY2FsbGJhY2sKKyAqIHRvIGNsZWFuIHVwIHRlbXBvcmFyeSBmaWxlcy4KKyAq Lwordm9pZAoraW5pdF9hcmNoaXZlX3JlYWRlcihYTG9nRHVtcFByaXZhdGUgKnByaXZhdGVJbmZv LCBjb25zdCBjaGFyICp3YWxkaXIsCisJCQkJCWludCAqV2FsU2VnU3osIHBnX2NvbXByZXNzX2Fs Z29yaXRobSBjb21wcmVzc2lvbikKK3sKKwlpbnQJCQlmZDsKKwlhc3RyZWFtZXIgICpzdHJlYW1l cjsKKwlBcmNoaXZlZFdBTEZpbGUgKmVudHJ5ID0gTlVMTDsKKwlYTG9nTG9uZ1BhZ2VIZWFkZXIg bG9uZ2hkcjsKKwlYTG9nU2VnTm8Jc2Vnbm87CisJVGltZUxpbmVJRAl0aW1lbGluZTsKKworCS8q IE9wZW4gdGFyIGFyY2hpdmUgYW5kIHN0b3JlIGl0cyBmaWxlIGRlc2NyaXB0b3IgKi8KKwlmZCA9 IG9wZW5fZmlsZV9pbl9kaXJlY3Rvcnkod2FsZGlyLCBwcml2YXRlSW5mby0+YXJjaGl2ZV9uYW1l KTsKKworCWlmIChmZCA8IDApCisJCXBnX2ZhdGFsKCJjb3VsZCBub3Qgb3BlbiBmaWxlIFwiJXNc IiIsIHByaXZhdGVJbmZvLT5hcmNoaXZlX25hbWUpOworCisJcHJpdmF0ZUluZm8tPmFyY2hpdmVf ZmQgPSBmZDsKKworCXN0cmVhbWVyID0gYXN0cmVhbWVyX3dhbGR1bXBfbmV3KHByaXZhdGVJbmZv KTsKKworCS8qIFdlIG11c3QgZmlyc3QgcGFyc2UgdGhlIHRhciBhcmNoaXZlLiAqLworCXN0cmVh bWVyID0gYXN0cmVhbWVyX3Rhcl9wYXJzZXJfbmV3KHN0cmVhbWVyKTsKKworCS8qIElmIHRoZSBh cmNoaXZlIGlzIGNvbXByZXNzZWQsIGRlY29tcHJlc3MgYmVmb3JlIHBhcnNpbmcuICovCisJaWYg KGNvbXByZXNzaW9uID09IFBHX0NPTVBSRVNTSU9OX0daSVApCisJCXN0cmVhbWVyID0gYXN0cmVh bWVyX2d6aXBfZGVjb21wcmVzc29yX25ldyhzdHJlYW1lcik7CisJZWxzZSBpZiAoY29tcHJlc3Np b24gPT0gUEdfQ09NUFJFU1NJT05fTFo0KQorCQlzdHJlYW1lciA9IGFzdHJlYW1lcl9sejRfZGVj b21wcmVzc29yX25ldyhzdHJlYW1lcik7CisJZWxzZSBpZiAoY29tcHJlc3Npb24gPT0gUEdfQ09N UFJFU1NJT05fWlNURCkKKwkJc3RyZWFtZXIgPSBhc3RyZWFtZXJfenN0ZF9kZWNvbXByZXNzb3Jf bmV3KHN0cmVhbWVyKTsKKworCXByaXZhdGVJbmZvLT5hcmNoaXZlX3N0cmVhbWVyID0gc3RyZWFt ZXI7CisKKwkvKgorCSAqIEFsbG9jYXRlIGEgYnVmZmVyIGZvciByZWFkaW5nIHRoZSBhcmNoaXZl IGZpbGUgdG8gZmFjaWxpdGF0ZSBjb250ZW50CisJICogZGVjb2Rpbmc7IHJlYWQgcmVxdWVzdHMg bXVzdCBub3QgZXhjZWVkIHRoZSBhbGxvY2F0ZWQgYnVmZmVyIHNpemUuCisJICovCisJcHJpdmF0 ZUluZm8tPmFyY2hpdmVfcmVhZF9idWYgPSBwZ19tYWxsb2MoUkVBRF9DSFVOS19TSVpFKTsKKwlw cml2YXRlSW5mby0+YXJjaGl2ZV9yZWFkX2J1Zl9zaXplID0gUkVBRF9DSFVOS19TSVpFOworCisJ LyoKKwkgKiBIYXNoIHRhYmxlIHN0b3JpbmcgV0FMIGVudHJpZXMgcmVhZCBmcm9tIHRoZSBhcmNo aXZlIHdpdGggYW4gYXJiaXRyYXJ5CisJICogaW5pdGlhbCBzaXplCisJICovCisJcHJpdmF0ZUlu Zm8tPmFyY2hpdmVfd2FsX2h0YWIgPSBBcmNoaXZlZFdBTF9jcmVhdGUoOCwgTlVMTCk7CisKKwkv KgorCSAqIFZlcmlmeSB0aGF0IHRoZSBhcmNoaXZlIGNvbnRhaW5zIHZhbGlkIFdBTCBmaWxlcyBh bmQgZmV0Y2ggV0FMIHNlZ21lbnQKKwkgKiBzaXplCisJICovCisJd2hpbGUgKGVudHJ5ID09IE5V TEwgfHwgZW50cnktPmJ1Zi0+bGVuIDwgWExPR19CTENLU1opCisJeworCQlpZiAocmVhZF9hcmNo aXZlX2ZpbGUocHJpdmF0ZUluZm8sIFhMT0dfQkxDS1NaKSA9PSAwKQorCQkJcGdfZmF0YWwoImNv dWxkIG5vdCBmaW5kIFdBTCBpbiBhcmNoaXZlIFwiJXNcIiIsCisJCQkJCSBwcml2YXRlSW5mby0+ YXJjaGl2ZV9uYW1lKTsKKworCQllbnRyeSA9IHByaXZhdGVJbmZvLT5jdXJfZmlsZTsKKwl9CisK KwkvKiBTZXQgV2FsU2VnU3ogaWYgV0FMIGRhdGEgaXMgc3VjY2Vzc2Z1bGx5IHJlYWQgKi8KKwls b25naGRyID0gKFhMb2dMb25nUGFnZUhlYWRlcikgZW50cnktPmJ1Zi0+ZGF0YTsKKworCWlmICgh SXNWYWxpZFdhbFNlZ1NpemUobG9uZ2hkci0+eGxwX3NlZ19zaXplKSkKKwl7CisJCXBnX2xvZ19l cnJvcihuZ2V0dGV4dCgiaW52YWxpZCBXQUwgc2VnbWVudCBzaXplIGluIFdBTCBmaWxlIGZyb20g YXJjaGl2ZSBcIiVzXCIgKCVkIGJ5dGUpIiwKKwkJCQkJCQkgICJpbnZhbGlkIFdBTCBzZWdtZW50 IHNpemUgaW4gV0FMIGZpbGUgZnJvbSBhcmNoaXZlIFwiJXNcIiAoJWQgYnl0ZXMpIiwKKwkJCQkJ CQkgIGxvbmdoZHItPnhscF9zZWdfc2l6ZSksCisJCQkJCSBwcml2YXRlSW5mby0+YXJjaGl2ZV9u YW1lLCBsb25naGRyLT54bHBfc2VnX3NpemUpOworCQlwZ19sb2dfZXJyb3JfZGV0YWlsKCJUaGUg V0FMIHNlZ21lbnQgc2l6ZSBtdXN0IGJlIGEgcG93ZXIgb2YgdHdvIGJldHdlZW4gMSBNQiBhbmQg MSBHQi4iKTsKKwkJZXhpdCgxKTsKKwl9CisKKwkqV2FsU2VnU3ogPSBsb25naGRyLT54bHBfc2Vn X3NpemU7CisKKwkvKgorCSAqIFdpdGggdGhlIFdBTCBzZWdtZW50IHNpemUgYXZhaWxhYmxlLCB3 ZSBjYW4gbm93IGluaXRpYWxpemUgdGhlCisJICogZGVwZW5kZW50IHN0YXJ0IGFuZCBlbmQgc2Vn bWVudCBudW1iZXJzLgorCSAqLworCUFzc2VydCghWExvZ1JlY1B0cklzSW52YWxpZChwcml2YXRl SW5mby0+c3RhcnRwdHIpKTsKKwlYTEJ5dGVUb1NlZyhwcml2YXRlSW5mby0+c3RhcnRwdHIsIHBy aXZhdGVJbmZvLT5zdGFydF9zZWdubywgKldhbFNlZ1N6KTsKKworCWlmICghWExvZ1JlY1B0cklz SW52YWxpZChwcml2YXRlSW5mby0+ZW5kcHRyKSkKKwkJWExCeXRlVG9TZWcocHJpdmF0ZUluZm8t PmVuZHB0ciwgcHJpdmF0ZUluZm8tPmVuZF9zZWdubywgKldhbFNlZ1N6KTsKKworCS8qCisJICog VGhpcyBXQUwgcmVjb3JkIHdhcyBmZXRjaGVkIGJlZm9yZSB0aGUgZmlsdGVyaW5nIHBhcmFtZXRl cnMKKwkgKiAoc3RhcnRfc2Vnbm8gYW5kIGVuZF9zZWdubykgd2VyZSBmdWxseSBpbml0aWFsaXpl ZC4gUGVyZm9ybSB0aGUKKwkgKiByZWxldmFuY2UgY2hlY2sgYWdhaW5zdCB0aGUgdXNlci1wcm92 aWRlZCByYW5nZSBub3c7IGlmIHRoZSBXQUwgZmFsbHMKKwkgKiBvdXRzaWRlIHRoaXMgcmFuZ2Us IHJlbW92ZSBpdCBmcm9tIHRoZSBoYXNoIHRhYmxlLiBTdWJzZXF1ZW50IFdBTCB3aWxsCisJICog YmUgZmlsdGVyZWQgYXV0b21hdGljYWxseSBieSB0aGUgYXJjaGl2ZWQgc3RyZWFtZXIgdXNpbmcg dGhlIHVwZGF0ZWQKKwkgKiBzdGFydF9zZWdubyBhbmQgZW5kX3NlZ25vIHZhbHVlcy4KKwkgKi8K KwlYTG9nRnJvbUZpbGVOYW1lKGVudHJ5LT5mbmFtZSwgJnRpbWVsaW5lLCAmc2Vnbm8sIHByaXZh dGVJbmZvLT5zZWdzaXplKTsKKwlpZiAocHJpdmF0ZUluZm8tPnRpbWVsaW5lICE9IHRpbWVsaW5l IHx8CisJCXByaXZhdGVJbmZvLT5zdGFydF9zZWdubyA+IHNlZ25vIHx8CisJCXByaXZhdGVJbmZv LT5lbmRfc2Vnbm8gPCBzZWdubykKKwkJZnJlZV9hcmNoaXZlX3dhbF9lbnRyeShlbnRyeS0+Zm5h bWUsIHByaXZhdGVJbmZvKTsKKworCS8qCisJICogU2V0dXAgdGVtcG9yYXJ5IGRpcmVjdG9yeSB0 byBzdG9yZSBXQUwgc2VnbWVudHMgYW5kIHNldCB1cCBhbiBleGl0CisJICogY2FsbGJhY2sgdG8g cmVtb3ZlIGl0IHVwb24gY29tcGxldGlvbi4KKwkgKi8KKwlzZXR1cF90bXB3YWxfZGlyKHdhbGRp cik7CisJYXRleGl0KGNsZWFudXBfdG1wd2FsX2Rpcl9hdGV4aXQpOworfQorCisvKgorICogUmVs ZWFzZSB0aGUgYXJjaGl2ZSBzdHJlYW1lciBjaGFpbiBhbmQgY2xvc2UgdGhlIGFyY2hpdmUgZmls ZS4KKyAqLwordm9pZAorZnJlZV9hcmNoaXZlX3JlYWRlcihYTG9nRHVtcFByaXZhdGUgKnByaXZh dGVJbmZvKQoreworCS8qCisJICogTkI6IE5vcm1hbGx5LCBhc3RyZWFtZXJfZmluYWxpemUoKSBp cyBjYWxsZWQgYmVmb3JlIGFzdHJlYW1lcl9mcmVlKCkgdG8KKwkgKiBmbHVzaCBhbnkgcmVtYWlu aW5nIGJ1ZmZlcmVkIGRhdGEgb3IgdG8gZW5zdXJlIHRoZSBlbmQgb2YgdGhlIHRhcgorCSAqIGFy Y2hpdmUgaXMgcmVhY2hlZC4gSG93ZXZlciwgd2hlbiBkZWNvZGluZyBhIFdBTCBmaWxlLCBvbmNl IHdlIGhpdCB0aGUKKwkgKiBlbmQgTFNOLCBhbnkgcmVtYWluaW5nIFdBTCBkYXRhIGluIHRoZSBi dWZmZXIgb3IgdGhlIHRhciBhcmNoaXZlJ3MKKwkgKiB1bnJlYWNoZWQgZW5kIGNhbiBiZSBzYWZl bHkgaWdub3JlZC4KKwkgKi8KKwlhc3RyZWFtZXJfZnJlZShwcml2YXRlSW5mby0+YXJjaGl2ZV9z dHJlYW1lcik7CisKKwkvKiBGcmVlIGFueSByZW1haW5pbmcgaGFzaCB0YWJsZSBlbnRyaWVzIGFu ZCB0aGVpciBidWZmZXJzLiAqLworCWlmIChwcml2YXRlSW5mby0+YXJjaGl2ZV93YWxfaHRhYiAh PSBOVUxMKQorCXsKKwkJQXJjaGl2ZWRXQUxfaXRlcmF0b3IgaXRlcjsKKwkJQXJjaGl2ZWRXQUxG aWxlICplbnRyeTsKKworCQlBcmNoaXZlZFdBTF9zdGFydF9pdGVyYXRlKHByaXZhdGVJbmZvLT5h cmNoaXZlX3dhbF9odGFiLCAmaXRlcik7CisJCXdoaWxlICgoZW50cnkgPSBBcmNoaXZlZFdBTF9p dGVyYXRlKHByaXZhdGVJbmZvLT5hcmNoaXZlX3dhbF9odGFiLAorCQkJCQkJCQkJCQkmaXRlcikp ICE9IE5VTEwpCisJCXsKKwkJCWlmIChlbnRyeS0+YnVmICE9IE5VTEwpCisJCQkJZGVzdHJveVN0 cmluZ0luZm8oZW50cnktPmJ1Zik7CisJCX0KKwkJQXJjaGl2ZWRXQUxfZGVzdHJveShwcml2YXRl SW5mby0+YXJjaGl2ZV93YWxfaHRhYik7CisJCXByaXZhdGVJbmZvLT5hcmNoaXZlX3dhbF9odGFi ID0gTlVMTDsKKwl9CisKKwkvKiBGcmVlIHRoZSByZXVzYWJsZSByZWFkIGJ1ZmZlci4gKi8KKwlp ZiAocHJpdmF0ZUluZm8tPmFyY2hpdmVfcmVhZF9idWYgIT0gTlVMTCkKKwl7CisJCXBnX2ZyZWUo cHJpdmF0ZUluZm8tPmFyY2hpdmVfcmVhZF9idWYpOworCQlwcml2YXRlSW5mby0+YXJjaGl2ZV9y ZWFkX2J1ZiA9IE5VTEw7CisJfQorCisJLyogQ2xvc2UgdGhlIGZpbGUuICovCisJaWYgKGNsb3Nl KHByaXZhdGVJbmZvLT5hcmNoaXZlX2ZkKSAhPSAwKQorCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5v dCBjbG9zZSBmaWxlIFwiJXNcIjogJW0iLAorCQkJCQkgcHJpdmF0ZUluZm8tPmFyY2hpdmVfbmFt ZSk7Cit9CisKKy8qCisgKiBDb3BpZXMgV0FMIGRhdGEgZnJvbSBhc3RyZWFtZXIgdG8gcmVhZEJ1 ZmY7IGlmIHVuYXZhaWxhYmxlLCBmZXRjaGVzIG1vcmUKKyAqIGZyb20gdGhlIHRhciBhcmNoaXZl IHZpYSBhc3RyZWFtZXIuCisgKi8KK2ludAorcmVhZF9hcmNoaXZlX3dhbF9wYWdlKFhMb2dEdW1w UHJpdmF0ZSAqcHJpdmF0ZUluZm8sIFhMb2dSZWNQdHIgdGFyZ2V0UGFnZVB0ciwKKwkJCQkJICBT aXplIGNvdW50LCBjaGFyICpyZWFkQnVmZiwgaW50IFdhbFNlZ1N6KQoreworCWNoYXIJICAgKnAg PSByZWFkQnVmZjsKKwlTaXplCQluYnl0ZXMgPSBjb3VudDsKKwlYTG9nUmVjUHRyCXJlY3B0ciA9 IHRhcmdldFBhZ2VQdHI7CisJWExvZ1NlZ05vCXNlZ25vOworCWNoYXIJCWZuYW1lW01BWEZOQU1F TEVOXTsKKwlBcmNoaXZlZFdBTEZpbGUgKmVudHJ5OworCisJLyogSWRlbnRpZnkgdGhlIHNlZ21l bnQgYW5kIGxvY2F0ZSBpdHMgZW50cnkgaW4gdGhlIGFyY2hpdmUgaGFzaCAqLworCVhMQnl0ZVRv U2VnKHRhcmdldFBhZ2VQdHIsIHNlZ25vLCBXYWxTZWdTeik7CisJWExvZ0ZpbGVOYW1lKGZuYW1l LCBwcml2YXRlSW5mby0+dGltZWxpbmUsIHNlZ25vLCBXYWxTZWdTeik7CisJZW50cnkgPSBnZXRf YXJjaGl2ZV93YWxfZW50cnkoZm5hbWUsIHByaXZhdGVJbmZvLCBXYWxTZWdTeik7CisKKwl3aGls ZSAobmJ5dGVzID4gMCkKKwl7CisJCWNoYXIJICAgKmJ1ZiA9IGVudHJ5LT5idWYtPmRhdGE7CisJ CWludAkJCWJ1ZkxlbiA9IGVudHJ5LT5idWYtPmxlbjsKKwkJWExvZ1JlY1B0cgllbmRQdHI7CisJ CVhMb2dSZWNQdHIJc3RhcnRQdHI7CisKKwkJLyogQ2FsY3VsYXRlIHRoZSBMU04gcmFuZ2UgY3Vy cmVudGx5IHJlc2lkaW5nIGluIHRoZSBidWZmZXIgKi8KKwkJWExvZ1NlZ05vT2Zmc2V0VG9SZWNQ dHIoc2Vnbm8sIGVudHJ5LT5yZWFkX2xlbiwgV2FsU2VnU3osIGVuZFB0cik7CisJCXN0YXJ0UHRy ID0gZW5kUHRyIC0gYnVmTGVuOworCisJCS8qCisJCSAqIENvcHkgdGhlIHJlcXVlc3RlZCBXQUwg cmVjb3JkIGlmIGl0IGV4aXN0cyBpbiB0aGUgYnVmZmVyLgorCQkgKi8KKwkJaWYgKGJ1ZkxlbiA+ IDAgJiYgc3RhcnRQdHIgPD0gcmVjcHRyICYmIHJlY3B0ciA8IGVuZFB0cikKKwkJeworCQkJaW50 CQkJY29weUJ5dGVzOworCQkJaW50CQkJb2Zmc2V0ID0gcmVjcHRyIC0gc3RhcnRQdHI7CisKKwkJ CS8qCisJCQkgKiBHaXZlbiBzdGFydFB0ciA8PSByZWNwdHIgPCBlbmRQdHIgYW5kIGEgdG90YWwg YnVmZmVyIHNpemUKKwkJCSAqICdidWZMZW4nLCB0aGUgb2Zmc2V0IChyZWNwdHIgLSBzdGFydFB0 cikgd2lsbCBhbHdheXMgYmUgbGVzcworCQkJICogdGhhbiAnYnVmTGVuJy4KKwkJCSAqLworCQkJ QXNzZXJ0KG9mZnNldCA8IGJ1Zkxlbik7CisKKwkJCWNvcHlCeXRlcyA9IE1pbihuYnl0ZXMsIGJ1 ZkxlbiAtIG9mZnNldCk7CisJCQltZW1jcHkocCwgYnVmICsgb2Zmc2V0LCBjb3B5Qnl0ZXMpOwor CisJCQkvKiBVcGRhdGUgc3RhdGUgZm9yIHJlYWQgKi8KKwkJCXJlY3B0ciArPSBjb3B5Qnl0ZXM7 CisJCQluYnl0ZXMgLT0gY29weUJ5dGVzOworCQkJcCArPSBjb3B5Qnl0ZXM7CisJCX0KKwkJZWxz ZQorCQl7CisJCQkvKgorCQkJICogQmVmb3JlIHN0YXJ0aW5nIHRoZSBhY3R1YWwgZGVjb2Rpbmcg bG9vcCwgcGdfd2FsZHVtcCB0cmllcyB0bworCQkJICogbG9jYXRlIHRoZSBmaXJzdCB2YWxpZCBy ZWNvcmQgZnJvbSB0aGUgdXNlci1zcGVjaWZpZWQgc3RhcnQKKwkJCSAqIHBvc2l0aW9uLCB3aGlj aCBtaWdodCBub3QgYmUgdGhlIHN0YXJ0IG9mIGEgV0FMIHJlY29yZCBhbmQKKwkJCSAqIGNvdWxk IGZhbGwgaW4gdGhlIG1pZGRsZSBvZiBhIHJlY29yZCB0aGF0IHNwYW5zIG11bHRpcGxlIHBhZ2Vz LgorCQkJICogQ29uc2VxdWVudGx5LCB0aGUgdmFsaWQgc3RhcnQgcG9zaXRpb24gdGhlIGRlY29k ZXIgaXMgbG9va2luZworCQkJICogZm9yIGNvdWxkIGJlIGZhciBhd2F5IGZyb20gdGhhdCBpbml0 aWFsIHBvc2l0aW9uLgorCQkJICoKKwkJCSAqIFRoaXMgbWF5IGludm9sdmUgcmVhZGluZyBhY3Jv c3MgbXVsdGlwbGUgcGFnZXMsIGFuZCB0aGlzCisJCQkgKiBwcmUtcmVhZGluZyBmZXRjaGVzIGRh dGEgaW4gbXVsdGlwbGUgcm91bmRzIGZyb20gdGhlIGFyY2hpdmUKKwkJCSAqIHN0cmVhbWVyOyBu b3JtYWxseSwgd2Ugd291bGQgdGhyb3cgYXdheSBleGlzdGluZyBidWZmZXIKKwkJCSAqIGNvbnRl bnRzIHRvIGZldGNoIHRoZSBuZXh0IHNldCBvZiBkYXRhLCBidXQgdGhhdCBleGlzdGluZyBkYXRh CisJCQkgKiBtaWdodCBiZSBuZWVkZWQgb25jZSB0aGUgbWFpbiBsb29wIHN0YXJ0cy4gQmVjYXVz ZSBwcmV2aW91c2x5CisJCQkgKiByZWFkIGRhdGEgY2Fubm90IGJlIHJlLXJlYWQgYnkgdGhlIGFy Y2hpdmUgc3RyZWFtZXIsIHdlIGRlbGF5CisJCQkgKiByZXNldHRpbmcgdGhlIGJ1ZmZlciB1bnRp bCB0aGUgbWFpbiBkZWNvZGluZyBsb29wIGlzIGVudGVyZWQuCisJCQkgKgorCQkJICogT25jZSBw Z193YWxkdW1wIGhhcyBlbnRlcmVkIHRoZSBtYWluIGxvb3AsIGl0IG1heSByZS1yZWFkIHRoZQor CQkJICogY3VycmVudGx5IGFjdGl2ZSBwYWdlLCBidXQgbmV2ZXIgYW4gb2xkZXIgb25lOyB0aGVy ZWZvcmUsIGFueQorCQkJICogZnVsbHkgY29uc3VtZWQgV0FMIGRhdGEgcHJlY2VkaW5nIHRoZSBj dXJyZW50IHBhZ2UgY2FuIHRoZW4gYmUKKwkJCSAqIHNhZmVseSBkaXNjYXJkZWQuCisJCQkgKi8K KwkJCWlmIChwcml2YXRlSW5mby0+ZGVjb2Rpbmdfc3RhcnRlZCkKKwkJCXsKKwkJCQlyZXNldFN0 cmluZ0luZm8oZW50cnktPmJ1Zik7CisKKwkJCQkvKgorCQkJCSAqIFB1c2ggYmFjayB0aGUgcGFy dGlhbCBwYWdlIGRhdGEgZm9yIHRoZSBjdXJyZW50IHBhZ2UgdG8gdGhlCisJCQkJICogYnVmZmVy LCBlbnN1cmluZyBpdCByZW1haW5zIGZ1bGwgcGFnZSBhdmFpbGFibGUgZm9yCisJCQkJICogcmUt cmVhZGluZyBpZiByZXF1ZXN0ZWQuCisJCQkJICovCisJCQkJaWYgKHAgPiByZWFkQnVmZikKKwkJ CQl7CisJCQkJCUFzc2VydCgoY291bnQgLSBuYnl0ZXMpID4gMCk7CisJCQkJCWFwcGVuZEJpbmFy eVN0cmluZ0luZm8oZW50cnktPmJ1ZiwgcmVhZEJ1ZmYsIGNvdW50IC0gbmJ5dGVzKTsKKwkJCQl9 CisJCQl9CisKKwkJCS8qCisJCQkgKiBOb3csIGZldGNoIG1vcmUgZGF0YS4gIFJhaXNlIGFuIGVy cm9yIGlmIHRoZSBhcmNoaXZlIHN0cmVhbWVyCisJCQkgKiBoYXMgbW92ZWQgcGFzdCBvdXIgc2Vn bWVudCAobWVhbmluZyB0aGUgV0FMIGZpbGUgaW4gdGhlIGFyY2hpdmUKKwkJCSAqIGlzIHNob3J0 ZXIgdGhhbiBleHBlY3RlZCkgb3IgaWYgcmVhZGluZyB0aGUgYXJjaGl2ZSByZWFjaGVkCisJCQkg KiBFT0YuCisJCQkgKi8KKwkJCWlmIChwcml2YXRlSW5mby0+Y3VyX2ZpbGUgIT0gZW50cnkpCisJ CQkJcGdfZmF0YWwoIldBTCBzZWdtZW50IFwiJXNcIiBpbiBhcmNoaXZlIFwiJXNcIiBpcyB0b28g c2hvcnQ6IHJlYWQgJWxsZCBvZiAlbGxkIGJ5dGVzIiwKKwkJCQkJCSBmbmFtZSwgcHJpdmF0ZUlu Zm8tPmFyY2hpdmVfbmFtZSwKKwkJCQkJCSAobG9uZyBsb25nIGludCkgKGNvdW50IC0gbmJ5dGVz KSwKKwkJCQkJCSAobG9uZyBsb25nIGludCkgY291bnQpOworCQkJaWYgKHJlYWRfYXJjaGl2ZV9m aWxlKHByaXZhdGVJbmZvLCBSRUFEX0NIVU5LX1NJWkUpID09IDApCisJCQkJcGdfZmF0YWwoInVu ZXhwZWN0ZWQgZW5kIG9mIGFyY2hpdmUgXCIlc1wiIHdoaWxlIHJlYWRpbmcgXCIlc1wiOiByZWFk ICVsbGQgb2YgJWxsZCBieXRlcyIsCisJCQkJCQkgcHJpdmF0ZUluZm8tPmFyY2hpdmVfbmFtZSwg Zm5hbWUsCisJCQkJCQkgKGxvbmcgbG9uZyBpbnQpIChjb3VudCAtIG5ieXRlcyksCisJCQkJCQkg KGxvbmcgbG9uZyBpbnQpIGNvdW50KTsKKwkJfQorCX0KKworCS8qCisJICogU2hvdWxkIGhhdmUg c3VjY2Vzc2Z1bGx5IHJlYWQgYWxsIHRoZSByZXF1ZXN0ZWQgYnl0ZXMgb3IgcmVwb3J0ZWQgYQor CSAqIGZhaWx1cmUgYmVmb3JlIHRoaXMgcG9pbnQuCisJICovCisJQXNzZXJ0KG5ieXRlcyA9PSAw KTsKKworCS8qCisJICogTkI6IFdlIHJldHVybiB0aGUgZml4ZWQgdmFsdWUgcHJvdmlkZWQgYXMg aW5wdXQuIFdlIGNvdWxkIHJldHVybiBhCisJICogYm9vbGVhbiBzaW5jZSB3ZSBlaXRoZXIgc3Vj Y2Vzc2Z1bGx5IHJlYWQgdGhlIFdBTCBwYWdlIG9yIHJhaXNlIGFuCisJICogZXJyb3IsIGJ1dCB0 aGUgY2FsbGVyIGV4cGVjdHMgdGhpcyB2YWx1ZSB0byBiZSByZXR1cm5lZC4gVGhlIHJvdXRpbmUK KwkgKiB0aGF0IHJlYWRzIFdBTCBwYWdlcyBmcm9tIHRoZSBwaHlzaWNhbCBXQUwgZmlsZSBmb2xs b3dzIHRoZSBzYW1lCisJICogY29udmVudGlvbi4KKwkgKi8KKwlyZXR1cm4gY291bnQ7Cit9CisK Ky8qCisgKiBDbGVhcnMgdGhlIGJ1ZmZlciBvZiBhIFdBTCBlbnRyeSB0aGF0IGlzIGJlaW5nIGln bm9yZWQuICBUaGlzIGZyZWVzIHVwIG1lbW9yeQorICogYW5kIHByZXZlbnRzIHRoZSBhY2N1bXVs YXRpb24gb2YgaXJyZWxldmFudCBXQUwgZGF0YS4gIEFkZGl0aW9uYWxseSwKKyAqIGNvbmRpdGlv bmFsbHkgc2V0dGluZyBjdXJfZmlsZSB3aXRoaW4gcHJpdmF0ZUluZm8gdG8gTlVMTCBlbnN1cmVz IHRoZQorICogYXJjaGl2ZSBzdHJlYW1lciBza2lwcyB1bm5lY2Vzc2FyeSBjb3B5IG9wZXJhdGlv bnMuCisgKi8KK3ZvaWQKK2ZyZWVfYXJjaGl2ZV93YWxfZW50cnkoY29uc3QgY2hhciAqZm5hbWUs IFhMb2dEdW1wUHJpdmF0ZSAqcHJpdmF0ZUluZm8pCit7CisJQXJjaGl2ZWRXQUxGaWxlICplbnRy eTsKKworCWVudHJ5ID0gQXJjaGl2ZWRXQUxfbG9va3VwKHByaXZhdGVJbmZvLT5hcmNoaXZlX3dh bF9odGFiLCBmbmFtZSk7CisKKwlpZiAoZW50cnkgPT0gTlVMTCkKKwkJcmV0dXJuOworCisJLyog RGVzdHJveSB0aGUgYnVmZmVyICovCisJZGVzdHJveVN0cmluZ0luZm8oZW50cnktPmJ1Zik7CisJ ZW50cnktPmJ1ZiA9IE5VTEw7CisKKwkvKiBSZW1vdmUgdGVtcG9yYXJ5IGZpbGUgaWYgYW55ICov CisJaWYgKGVudHJ5LT5zcGlsbGVkKQorCXsKKwkJY2hhcgkJZnBhdGhbTUFYUEdQQVRIXTsKKwor CQlzbnByaW50ZihmcGF0aCwgTUFYUEdQQVRILCAiJXMvJXMiLCBUbXBXYWxTZWdEaXIsIGZuYW1l KTsKKworCQlpZiAodW5saW5rKGZwYXRoKSA9PSAwKQorCQkJcGdfbG9nX2RlYnVnKCJyZW1vdmVk IGZpbGUgXCIlc1wiIiwgZnBhdGgpOworCX0KKworCS8qIFNldCBjdXJfZmlsZSB0byBOVUxMIGlm IGl0IG1hdGNoZXMgdGhlIGVudHJ5IGJlaW5nIGlnbm9yZWQgKi8KKwlpZiAocHJpdmF0ZUluZm8t PmN1cl9maWxlID09IGVudHJ5KQorCQlwcml2YXRlSW5mby0+Y3VyX2ZpbGUgPSBOVUxMOworCisJ QXJjaGl2ZWRXQUxfZGVsZXRlX2l0ZW0ocHJpdmF0ZUluZm8tPmFyY2hpdmVfd2FsX2h0YWIsIGVu dHJ5KTsKK30KKworLyoKKyAqIFJldHVybnMgdGhlIGFyY2hpdmVkIFdBTCBlbnRyeSBmcm9tIHRo ZSBoYXNoIHRhYmxlIGlmIGl0IGV4aXN0cy4gIE90aGVyd2lzZSwKKyAqIGl0IGludm9rZXMgdGhl IHJvdXRpbmUgdG8gcmVhZCB0aGUgYXJjaGl2ZWQgZmlsZSwgd2hpY2ggdGhlbiBwb3B1bGF0ZXMg dGhlCisgKiBlbnRyeSBpbiB0aGUgaGFzaCB0YWJsZSBpZiB0aGF0IFdBTCBleGlzdHMgaW4gdGhl IGFyY2hpdmUuCisgKiBJZiB0aGUgYXJjaGl2ZSBzdHJlYW1lciBoYXBwZW5zIHRvIGJlIHJlYWRp bmcgYQorICogV0FMIGZyb20gYXJjaGl2ZSBmaWxlIHRoYXQgaXMgbm90IGN1cnJlbnRseSBuZWVk ZWQsIHRoYXQgV0FMIGRhdGEgaXMgd3JpdHRlbgorICogdG8gYSB0ZW1wb3JhcnkgZmlsZS4KKyAq Lworc3RhdGljIEFyY2hpdmVkV0FMRmlsZSAqCitnZXRfYXJjaGl2ZV93YWxfZW50cnkoY29uc3Qg Y2hhciAqZm5hbWUsIFhMb2dEdW1wUHJpdmF0ZSAqcHJpdmF0ZUluZm8sCisJCQkJCSAgaW50IFdh bFNlZ1N6KQoreworCUFyY2hpdmVkV0FMRmlsZSAqZW50cnkgPSBOVUxMOworCUZJTEUJICAgKndy aXRlX2ZwID0gTlVMTDsKKworCS8qCisJICogU2VhcmNoIHRoZSBoYXNoIHRhYmxlIGZpcnN0LiBJ ZiB0aGUgZW50cnkgaXMgZm91bmQsIHJldHVybiBpdC4KKwkgKiBPdGhlcndpc2UsIHRoZSByZXF1 ZXN0ZWQgV0FMIGVudHJ5IGhhc24ndCBiZWVuIHJlYWQgZnJvbSB0aGUgYXJjaGl2ZQorCSAqIHll dDsgaW52b2tlIHRoZSBhcmNoaXZlIHN0cmVhbWVyIHRvIGZldGNoIGl0LgorCSAqLworCXdoaWxl ICgxKQorCXsKKwkJLyoKKwkJICogU2VhcmNoIGhhc2ggdGFibGUuCisJCSAqCisJCSAqIFdlIHBl cmZvcm0gdGhlIHNlYXJjaCBpbnNpZGUgdGhlIGxvb3AgYmVjYXVzZSBhIHNpbmdsZSBpdGVyYXRp b24gb2YKKwkJICogdGhlIGFyY2hpdmUgcmVhZGVyIG1heSBkZWNvbXByZXNzIGFuZCBleHRyYWN0 IG11bHRpcGxlIGZpbGVzIGludG8KKwkJICogdGhlIGhhc2ggdGFibGUuIE9uZSBvZiB0aGVzZSBu ZXdseSBhZGRlZCBmaWxlcyBjb3VsZCBiZSB0aGUgb25lIHdlCisJCSAqIGFyZSBzZWVraW5nLgor CQkgKi8KKwkJZW50cnkgPSBBcmNoaXZlZFdBTF9sb29rdXAocHJpdmF0ZUluZm8tPmFyY2hpdmVf d2FsX2h0YWIsIGZuYW1lKTsKKworCQlpZiAoZW50cnkgIT0gTlVMTCkKKwkJCXJldHVybiBlbnRy eTsKKworCQkvKgorCQkgKiBUaGUgV0FMIGZpbGUgZW50cnkgY3VycmVudGx5IGJlaW5nIHByb2Nl c3NlZCBtYXkgY2hhbmdlIGR1cmluZworCQkgKiBhcmNoaXZlIHN0cmVhbWVyIGV4ZWN1dGlvbi4g VGhlcmVmb3JlLCBtYWludGFpbiBhIGxvY2FsIHZhcmlhYmxlIHRvCisJCSAqIHJlZmVyZW5jZSB0 aGUgcHJldmlvdXMgZW50cnksIGVuc3VyaW5nIHRoYXQgYW55IHJlbWFpbmluZyBkYXRhIGluCisJ CSAqIGl0cyBidWZmZXIgaXMgc3VjY2Vzc2Z1bGx5IGZsdXNoZWQgdG8gdGhlIHRlbXBvcmFyeSBm aWxlIGJlZm9yZQorCQkgKiBzd2l0Y2hpbmcgdG8gdGhlIG5leHQgV0FMIGVudHJ5LgorCQkgKi8K KwkJZW50cnkgPSBwcml2YXRlSW5mby0+Y3VyX2ZpbGU7CisKKwkJLyogRmV0Y2ggbW9yZSBkYXRh ICovCisJCWlmIChlbnRyeSA9PSBOVUxMIHx8IGVudHJ5LT5idWYtPmxlbiA9PSAwKQorCQl7CisJ CQlpZiAocmVhZF9hcmNoaXZlX2ZpbGUocHJpdmF0ZUluZm8sIFJFQURfQ0hVTktfU0laRSkgPT0g MCkKKwkJCQlicmVhazsJCQkvKiBhcmNoaXZlIGZpbGUgZW5kZWQgKi8KKwkJfQorCisJCS8qCisJ CSAqIEFyY2hpdmVkIHN0cmVhbWVyIGlzIHJlYWRpbmcgYSBub24tV0FMIGZpbGUgb3IgYW4gaXJy ZWxldmFudCBXQUwKKwkJICogZmlsZS4KKwkJICovCisJCWlmIChlbnRyeSA9PSBOVUxMKQorCQkJ Y29udGludWU7CisKKwkJLyoKKwkJICogQXJjaGl2ZSBzdHJlYW1lciBpcyBjdXJyZW50bHkgcmVh ZGluZyBhIGZpbGUgdGhhdCBpc24ndCB0aGUgb25lCisJCSAqIGFza2VkIGZvciwgYnV0IGl0J3Mg cmVxdWlyZWQgaW4gdGhlIGZ1dHVyZS4gSXQgc2hvdWxkIGJlIHdyaXR0ZW4gdG8KKwkJICogYSB0 ZW1wb3JhcnkgbG9jYXRpb24gZm9yIHJldHJpZXZhbCB3aGVuIG5lZWRlZC4KKwkJICovCisKKwkJ LyogQ3JlYXRlIGEgdGVtcG9yYXJ5IGZpbGUgaWYgb25lIGRvZXMgbm90IGFscmVhZHkgZXhpc3Qg Ki8KKwkJaWYgKCFlbnRyeS0+c3BpbGxlZCkKKwkJeworCQkJd3JpdGVfZnAgPSBwcmVwYXJlX3Rt cF93cml0ZShlbnRyeS0+Zm5hbWUpOworCQkJZW50cnktPnNwaWxsZWQgPSB0cnVlOworCQl9CisK KwkJLyogRmx1c2ggZGF0YSBmcm9tIHRoZSBidWZmZXIgdG8gdGhlIGZpbGUgKi8KKwkJcGVyZm9y bV90bXBfd3JpdGUoZW50cnktPmZuYW1lLCBlbnRyeS0+YnVmLCB3cml0ZV9mcCk7CisJCXJlc2V0 U3RyaW5nSW5mbyhlbnRyeS0+YnVmKTsKKworCQkvKgorCQkgKiBUaGUgY2hhbmdlIGluIHRoZSBj dXJyZW50IHNlZ21lbnQgZW50cnkgaW5kaWNhdGVzIHRoYXQgdGhlIHJlYWRpbmcKKwkJICogb2Yg dGhpcyBmaWxlIGhhcyBlbmRlZC4KKwkJICovCisJCWlmIChlbnRyeSAhPSBwcml2YXRlSW5mby0+ Y3VyX2ZpbGUgJiYgd3JpdGVfZnAgIT0gTlVMTCkKKwkJeworCQkJZmNsb3NlKHdyaXRlX2ZwKTsK KwkJCXdyaXRlX2ZwID0gTlVMTDsKKwkJfQorCX0KKworCS8qIFJlcXVlc3RlZCBXQUwgc2VnbWVu dCBub3QgZm91bmQgKi8KKwlwZ19mYXRhbCgiY291bGQgbm90IGZpbmQgV0FMIFwiJXNcIiBpbiBh cmNoaXZlIFwiJXNcIiIsCisJCQkgZm5hbWUsIHByaXZhdGVJbmZvLT5hcmNoaXZlX25hbWUpOwor fQorCisvKgorICogUmVhZHMgdGhlIGFyY2hpdmUgZmlsZSBhbmQgcGFzc2VzIGl0IHRvIHRoZSBh cmNoaXZlIHN0cmVhbWVyIGZvcgorICogZGVjb21wcmVzc2lvbi4KKyAqLworc3RhdGljIGludAor cmVhZF9hcmNoaXZlX2ZpbGUoWExvZ0R1bXBQcml2YXRlICpwcml2YXRlSW5mbywgU2l6ZSBjb3Vu dCkKK3sKKwlpbnQJCQlyYzsKKworCS8qIFRoZSByZWFkIHJlcXVlc3QgbXVzdCBub3QgZXhjZWVk IHRoZSBhbGxvY2F0ZWQgYnVmZmVyIHNpemUuICovCisJQXNzZXJ0KHByaXZhdGVJbmZvLT5hcmNo aXZlX3JlYWRfYnVmX3NpemUgPj0gY291bnQpOworCisJcmMgPSByZWFkKHByaXZhdGVJbmZvLT5h cmNoaXZlX2ZkLCBwcml2YXRlSW5mby0+YXJjaGl2ZV9yZWFkX2J1ZiwgY291bnQpOworCWlmIChy YyA8IDApCisJCXBnX2ZhdGFsKCJjb3VsZCBub3QgcmVhZCBmaWxlIFwiJXNcIjogJW0iLAorCQkJ CSBwcml2YXRlSW5mby0+YXJjaGl2ZV9uYW1lKTsKKworCS8qCisJICogRGVjb21wcmVzcyAoaWYg cmVxdWlyZWQpLCBhbmQgdGhlbiBwYXJzZSB0aGUgcHJldmlvdXNseSByZWFkIGNvbnRlbnRzCisJ ICogb2YgdGhlIHRhciBmaWxlLgorCSAqLworCWlmIChyYyA+IDApCisJCWFzdHJlYW1lcl9jb250 ZW50KHByaXZhdGVJbmZvLT5hcmNoaXZlX3N0cmVhbWVyLCBOVUxMLAorCQkJCQkJICBwcml2YXRl SW5mby0+YXJjaGl2ZV9yZWFkX2J1ZiwgcmMsCisJCQkJCQkgIEFTVFJFQU1FUl9VTktOT1dOKTsK KworCXJldHVybiByYzsKK30KKworLyoKKyAqIFNldCB1cCBhIHRlbXBvcmFyeSBkaXJlY3Rvcnkg dG8gdGVtcG9yYXJpbHkgc3RvcmUgV0FMIHNlZ21lbnRzLgorICovCitzdGF0aWMgdm9pZAorc2V0 dXBfdG1wd2FsX2Rpcihjb25zdCBjaGFyICp3YWxkaXIpCit7CisJY2hhcgkgICAqdGVtcGxhdGU7 CisKKwkvKgorCSAqIFVzZSB0aGUgZGlyZWN0b3J5IHNwZWNpZmllZCBieSB0aGUgVE1QRElSIGVu dmlyb25tZW50IHZhcmlhYmxlLiBJZiBpdCdzCisJICogbm90IHNldCwgdXNlIHRoZSBwcm92aWRl ZCBXQUwgZGlyZWN0b3J5IHRvIGV4dHJhY3QgV0FMIGZpbGUKKwkgKiB0ZW1wb3JhcmlseS4KKwkg Ki8KKwl0ZW1wbGF0ZSA9IHBzcHJpbnRmKCIlcy93YWxkdW1wX3RtcC1YWFhYWFgiLAorCQkJCQkJ Z2V0ZW52KCJUTVBESVIiKSA/IGdldGVudigiVE1QRElSIikgOiB3YWxkaXIpOworCVRtcFdhbFNl Z0RpciA9IG1rZHRlbXAodGVtcGxhdGUpOworCisJaWYgKFRtcFdhbFNlZ0RpciA9PSBOVUxMKQor CQlwZ19mYXRhbCgiY291bGQgbm90IGNyZWF0ZSBkaXJlY3RvcnkgXCIlc1wiOiAlbSIsIHRlbXBs YXRlKTsKKworCWNhbm9uaWNhbGl6ZV9wYXRoKFRtcFdhbFNlZ0Rpcik7CisKKwlwZ19sb2dfZGVi dWcoImNyZWF0ZWQgZGlyZWN0b3J5IFwiJXNcIiIsIFRtcFdhbFNlZ0Rpcik7Cit9CisKKy8qCisg KiBSZW1vdmUgdGVtcG9yYXJ5IGRpcmVjdG9yeSBhdCBleGl0LCBpZiBhbnkuCisgKi8KK3N0YXRp YyB2b2lkCitjbGVhbnVwX3RtcHdhbF9kaXJfYXRleGl0KHZvaWQpCit7CisJcm10cmVlKFRtcFdh bFNlZ0RpciwgdHJ1ZSk7Cit9CisKKy8qCisgKiBDcmVhdGUgYW4gZW1wdHkgcGxhY2Vob2xkZXIg ZmlsZSBhbmQgcmV0dXJuIGl0cyBoYW5kbGUuCisgKi8KK3N0YXRpYyBGSUxFICoKK3ByZXBhcmVf dG1wX3dyaXRlKGNvbnN0IGNoYXIgKmZuYW1lKQoreworCWNoYXIJCWZwYXRoW01BWFBHUEFUSF07 CisJRklMRQkgICAqZmlsZTsKKworCXNucHJpbnRmKGZwYXRoLCBNQVhQR1BBVEgsICIlcy8lcyIs IFRtcFdhbFNlZ0RpciwgZm5hbWUpOworCisJLyogQ3JlYXRlIGFuIGVtcHR5IHBsYWNlaG9sZGVy ICovCisJZmlsZSA9IGZvcGVuKGZwYXRoLCBQR19CSU5BUllfVyk7CisJaWYgKGZpbGUgPT0gTlVM TCkKKwkJcGdfZmF0YWwoImNvdWxkIG5vdCBjcmVhdGUgZmlsZSBcIiVzXCI6ICVtIiwgZnBhdGgp OworCisjaWZuZGVmIFdJTjMyCisJaWYgKGNobW9kKGZwYXRoLCBwZ19maWxlX2NyZWF0ZV9tb2Rl KSkKKwkJcGdfZmF0YWwoImNvdWxkIG5vdCBzZXQgcGVybWlzc2lvbnMgb24gZmlsZSBcIiVzXCI6 ICVtIiwKKwkJCQkgZnBhdGgpOworI2VuZGlmCisKKwlwZ19sb2dfZGVidWcoInNwaWxsaW5nIHRv IHRlbXBvcmFyeSBmaWxlIFwiJXNcIiIsIGZwYXRoKTsKKworCXJldHVybiBmaWxlOworfQorCisv KgorICogV3JpdGUgYnVmZmVyIGRhdGEgdG8gdGhlIGdpdmVuIGZpbGUgaGFuZGxlLgorICovCitz dGF0aWMgdm9pZAorcGVyZm9ybV90bXBfd3JpdGUoY29uc3QgY2hhciAqZm5hbWUsIFN0cmluZ0lu Zm8gYnVmLCBGSUxFICpmaWxlKQoreworCUFzc2VydChmaWxlKTsKKworCWVycm5vID0gMDsKKwlp ZiAoYnVmLT5sZW4gPiAwICYmIGZ3cml0ZShidWYtPmRhdGEsIGJ1Zi0+bGVuLCAxLCBmaWxlKSAh PSAxKQorCXsKKwkJLyoKKwkJICogSWYgd3JpdGUgZGlkbid0IHNldCBlcnJubywgYXNzdW1lIHBy b2JsZW0gaXMgbm8gZGlzayBzcGFjZQorCQkgKi8KKwkJaWYgKGVycm5vID09IDApCisJCQllcnJu byA9IEVOT1NQQzsKKwkJcGdfZmF0YWwoImNvdWxkIG5vdCB3cml0ZSB0byBmaWxlIFwiJXNcIjog JW0iLCBmbmFtZSk7CisJfQorfQorCisvKgorICogQ3JlYXRlIGFuIGFzdHJlYW1lciB0aGF0IGNh biByZWFkIFdBTCBmcm9tIHRhciBmaWxlLgorICovCitzdGF0aWMgYXN0cmVhbWVyICoKK2FzdHJl YW1lcl93YWxkdW1wX25ldyhYTG9nRHVtcFByaXZhdGUgKnByaXZhdGVJbmZvKQoreworCWFzdHJl YW1lcl93YWxkdW1wICpzdHJlYW1lcjsKKworCXN0cmVhbWVyID0gcGFsbG9jMF9vYmplY3QoYXN0 cmVhbWVyX3dhbGR1bXApOworCSooKGNvbnN0IGFzdHJlYW1lcl9vcHMgKiopICZzdHJlYW1lci0+ YmFzZS5iYnNfb3BzKSA9CisJCSZhc3RyZWFtZXJfd2FsZHVtcF9vcHM7CisKKwlzdHJlYW1lci0+ cHJpdmF0ZUluZm8gPSBwcml2YXRlSW5mbzsKKworCXJldHVybiAmc3RyZWFtZXItPmJhc2U7Cit9 CisKKy8qCisgKiBNYWluIGVudHJ5IHBvaW50IG9mIHRoZSBhcmNoaXZlIHN0cmVhbWVyIGZvciBy ZWFkaW5nIFdBTCBkYXRhIGZyb20gYSB0YXIKKyAqIGZpbGUuIElmIGEgbWVtYmVyIGlzIGlkZW50 aWZpZWQgYXMgYSB2YWxpZCBXQUwgZmlsZSwgYSBoYXNoIGVudHJ5IGlzIGNyZWF0ZWQKKyAqIGZv ciBpdCwgYW5kIGl0cyBjb250ZW50cyBhcmUgY29waWVkIGludG8gdGhhdCBlbnRyeSdzIGJ1ZmZl ciwgbWFraW5nIHRoZW0KKyAqIGFjY2Vzc2libGUgdG8gdGhlIGRlY29kaW5nIHJvdXRpbmUuCisg Ki8KK3N0YXRpYyB2b2lkCithc3RyZWFtZXJfd2FsZHVtcF9jb250ZW50KGFzdHJlYW1lciAqc3Ry ZWFtZXIsIGFzdHJlYW1lcl9tZW1iZXIgKm1lbWJlciwKKwkJCQkJCSAgY29uc3QgY2hhciAqZGF0 YSwgaW50IGxlbiwKKwkJCQkJCSAgYXN0cmVhbWVyX2FyY2hpdmVfY29udGV4dCBjb250ZXh0KQor eworCWFzdHJlYW1lcl93YWxkdW1wICpteXN0cmVhbWVyID0gKGFzdHJlYW1lcl93YWxkdW1wICop IHN0cmVhbWVyOworCVhMb2dEdW1wUHJpdmF0ZSAqcHJpdmF0ZUluZm8gPSBteXN0cmVhbWVyLT5w cml2YXRlSW5mbzsKKworCUFzc2VydChjb250ZXh0ICE9IEFTVFJFQU1FUl9VTktOT1dOKTsKKwor CXN3aXRjaCAoY29udGV4dCkKKwl7CisJCWNhc2UgQVNUUkVBTUVSX01FTUJFUl9IRUFERVI6CisJ CQl7CisJCQkJY2hhcgkgICAqZm5hbWUgPSBOVUxMOworCQkJCUFyY2hpdmVkV0FMRmlsZSAqZW50 cnk7CisJCQkJYm9vbAkJZm91bmQ7CisKKwkJCQlwZ19sb2dfZGVidWcoInJlYWRpbmcgXCIlc1wi IiwgbWVtYmVyLT5wYXRobmFtZSk7CisKKwkJCQlpZiAoIW1lbWJlcl9pc193YWxfZmlsZShteXN0 cmVhbWVyLCBtZW1iZXIsICZmbmFtZSkpCisJCQkJCWJyZWFrOworCisJCQkJLyoKKwkJCQkgKiBG dXJ0aGVyIGNoZWNrcyBhcmUgc2tpcHBlZCBpZiBhbnkgV0FMIGZpbGUgY2FuIGJlIHJlYWQuCisJ CQkJICogVGhpcyB0eXBpY2FsbHkgb2NjdXJzIGR1cmluZyBpbml0aWFsIHZlcmlmaWNhdGlvbi4K KwkJCQkgKi8KKwkJCQlpZiAoIVJFQURfQU5ZX1dBTChwcml2YXRlSW5mbykpCisJCQkJeworCQkJ CQlYTG9nU2VnTm8Jc2Vnbm87CisJCQkJCVRpbWVMaW5lSUQJdGltZWxpbmU7CisKKwkJCQkJLyoK KwkJCQkJICogU2tpcCB0aGUgc2VnbWVudCBpZiB0aGUgdGltZWxpbmUgZG9lcyBub3QgbWF0Y2gs IGlmIGl0CisJCQkJCSAqIGZhbGxzIG91dHNpZGUgdGhlIGNhbGxlci1zcGVjaWZpZWQgcmFuZ2Uu CisJCQkJCSAqLworCQkJCQlYTG9nRnJvbUZpbGVOYW1lKGZuYW1lLCAmdGltZWxpbmUsICZzZWdu bywgcHJpdmF0ZUluZm8tPnNlZ3NpemUpOworCQkJCQlpZiAocHJpdmF0ZUluZm8tPnRpbWVsaW5l ICE9IHRpbWVsaW5lIHx8CisJCQkJCQlwcml2YXRlSW5mby0+c3RhcnRfc2Vnbm8gPiBzZWdubyB8 fAorCQkJCQkJcHJpdmF0ZUluZm8tPmVuZF9zZWdubyA8IHNlZ25vKQorCQkJCQl7CisJCQkJCQlw ZnJlZShmbmFtZSk7CisJCQkJCQlicmVhazsKKwkJCQkJfQorCQkJCX0KKworCQkJCWVudHJ5ID0g QXJjaGl2ZWRXQUxfaW5zZXJ0KHByaXZhdGVJbmZvLT5hcmNoaXZlX3dhbF9odGFiLAorCQkJCQkJ CQkJCSAgIGZuYW1lLCAmZm91bmQpOworCisJCQkJLyoKKwkJCQkgKiBTaG91bGRuJ3QgaGFwcGVu LCBidXQgaWYgaXQgZG9lcywgc2ltcGx5IGlnbm9yZSB0aGUKKwkJCQkgKiBkdXBsaWNhdGUgV0FM IGZpbGUuCisJCQkJICovCisJCQkJaWYgKGZvdW5kKQorCQkJCXsKKwkJCQkJcGdfbG9nX3dhcm5p bmcoImlnbm9yaW5nIGR1cGxpY2F0ZSBXQUwgXCIlc1wiIGZvdW5kIGluIGFyY2hpdmUgXCIlc1wi IiwKKwkJCQkJCQkJICAgbWVtYmVyLT5wYXRobmFtZSwgcHJpdmF0ZUluZm8tPmFyY2hpdmVfbmFt ZSk7CisJCQkJCXBmcmVlKGZuYW1lKTsKKwkJCQkJYnJlYWs7CisJCQkJfQorCisJCQkJZW50cnkt PmJ1ZiA9IG1ha2VTdHJpbmdJbmZvKCk7CisJCQkJZW50cnktPnNwaWxsZWQgPSBmYWxzZTsKKwkJ CQllbnRyeS0+cmVhZF9sZW4gPSAwOworCQkJCXByaXZhdGVJbmZvLT5jdXJfZmlsZSA9IGVudHJ5 OworCQkJfQorCQkJYnJlYWs7CisKKwkJY2FzZSBBU1RSRUFNRVJfTUVNQkVSX0NPTlRFTlRTOgor CQkJaWYgKHByaXZhdGVJbmZvLT5jdXJfZmlsZSkKKwkJCXsKKwkJCQlhcHBlbmRCaW5hcnlTdHJp bmdJbmZvKHByaXZhdGVJbmZvLT5jdXJfZmlsZS0+YnVmLCBkYXRhLCBsZW4pOworCQkJCXByaXZh dGVJbmZvLT5jdXJfZmlsZS0+cmVhZF9sZW4gKz0gbGVuOworCQkJfQorCQkJYnJlYWs7CisKKwkJ Y2FzZSBBU1RSRUFNRVJfTUVNQkVSX1RSQUlMRVI6CisJCQlwcml2YXRlSW5mby0+Y3VyX2ZpbGUg PSBOVUxMOworCQkJYnJlYWs7CisKKwkJY2FzZSBBU1RSRUFNRVJfQVJDSElWRV9UUkFJTEVSOgor CQkJYnJlYWs7CisKKwkJZGVmYXVsdDoKKwkJCS8qIFNob3VsZG4ndCBoYXBwZW4uICovCisJCQlw Z19mYXRhbCgidW5leHBlY3RlZCBzdGF0ZSB3aGlsZSBwYXJzaW5nIHRhciBmaWxlIik7CisJfQor fQorCisvKgorICogRW5kLW9mLXN0cmVhbSBwcm9jZXNzaW5nIGZvciBhbiBhc3RyZWFtZXJfd2Fs ZHVtcCBzdHJlYW0uCisgKi8KK3N0YXRpYyB2b2lkCithc3RyZWFtZXJfd2FsZHVtcF9maW5hbGl6 ZShhc3RyZWFtZXIgKnN0cmVhbWVyKQoreworCUFzc2VydChzdHJlYW1lci0+YmJzX25leHQgPT0g TlVMTCk7Cit9CisKKy8qCisgKiBGcmVlIG1lbW9yeSBhc3NvY2lhdGVkIHdpdGggYW4gYXN0cmVh bWVyX3dhbGR1bXAgc3RyZWFtLgorICovCitzdGF0aWMgdm9pZAorYXN0cmVhbWVyX3dhbGR1bXBf ZnJlZShhc3RyZWFtZXIgKnN0cmVhbWVyKQoreworCUFzc2VydChzdHJlYW1lci0+YmJzX25leHQg PT0gTlVMTCk7CisJcGZyZWUoc3RyZWFtZXIpOworfQorCisvKgorICogUmV0dXJucyB0cnVlIGlm IHRoZSBhcmNoaXZlIG1lbWJlciBuYW1lIG1hdGNoZXMgdGhlIFdBTCBuYW1pbmcgZm9ybWF0LiBJ ZgorICogc3VjY2Vzc2Z1bCwgaXQgYWxzbyBvdXRwdXRzIHRoZSBXQUwgc2VnbWVudCBuYW1lLgor ICovCitzdGF0aWMgYm9vbAorbWVtYmVyX2lzX3dhbF9maWxlKGFzdHJlYW1lcl93YWxkdW1wICpt eXN0cmVhbWVyLCBhc3RyZWFtZXJfbWVtYmVyICptZW1iZXIsCisJCQkJICAgY2hhciAqKmZuYW1l KQoreworCWludAkJCXBhdGhsZW47CisJY2hhcgkJcGF0aG5hbWVbTUFYUEdQQVRIXTsKKwljaGFy CSAgICpmaWxlbmFtZTsKKworCS8qIFdlIGFyZSBvbmx5IGludGVyZXN0ZWQgaW4gbm9ybWFsIGZp bGVzLiAqLworCWlmIChtZW1iZXItPmlzX2RpcmVjdG9yeSB8fCBtZW1iZXItPmlzX2xpbmspCisJ CXJldHVybiBmYWxzZTsKKworCWlmIChzdHJsZW4obWVtYmVyLT5wYXRobmFtZSkgPCBYTE9HX0ZO QU1FX0xFTikKKwkJcmV0dXJuIGZhbHNlOworCisJLyoKKwkgKiBGb3IgYSBjb3JyZWN0IGNvbXBh cmlzb24sIHdlIG11c3QgcmVtb3ZlIGFueSAnLicgb3IgJy4uJyBjb21wb25lbnRzCisJICogZnJv bSB0aGUgbWVtYmVyIHBhdGhuYW1lLiBTaW1pbGFyIHRvIG1lbWJlcl92ZXJpZnlfaGVhZGVyKCks IHdlIHByZXBlbmQKKwkgKiAnLi8nIHRvIHRoZSBwYXRoIHNvIHRoYXQgY2Fub25pY2FsaXplX3Bh dGgoKSBjYW4gcHJvcGVybHkgcmVzb2x2ZSBhbmQKKwkgKiBzdHJpcCB0aGVzZSByZWZlcmVuY2Vz IGZyb20gdGhlIHRhciBtZW1iZXIgbmFtZQorCSAqLworCXNucHJpbnRmKHBhdGhuYW1lLCBNQVhQ R1BBVEgsICIuLyVzIiwgbWVtYmVyLT5wYXRobmFtZSk7CisJY2Fub25pY2FsaXplX3BhdGgocGF0 aG5hbWUpOworCXBhdGhsZW4gPSBzdHJsZW4ocGF0aG5hbWUpOworCisJLyogV0FMIGZpbGVzIGZy b20gdGhlIHRvcC1sZXZlbCBvciBwZ193YWwgZGlyZWN0b3J5IHdpbGwgYmUgZGVjb2RlZCAqLwor CWlmIChwYXRobGVuID4gWExPR19GTkFNRV9MRU4gJiYKKwkJc3RybmNtcChwYXRobmFtZSwgWExP R0RJUiwgc3RybGVuKFhMT0dESVIpKSAhPSAwKQorCQlyZXR1cm4gZmFsc2U7CisKKwkvKiBXQUwg ZmlsZSBjb3VsZCBiZSB3aXRoIGZ1bGwgcGF0aCAqLworCWZpbGVuYW1lID0gcGF0aG5hbWUgKyAo cGF0aGxlbiAtIFhMT0dfRk5BTUVfTEVOKTsKKwlpZiAoIUlzWExvZ0ZpbGVOYW1lKGZpbGVuYW1l KSkKKwkJcmV0dXJuIGZhbHNlOworCisJKmZuYW1lID0gcG5zdHJkdXAoZmlsZW5hbWUsIFhMT0df Rk5BTUVfTEVOKTsKKworCXJldHVybiB0cnVlOworfQorCisvKgorICogSGVscGVyIGZ1bmN0aW9u IGZvciBmaWxlbWFwIGhhc2ggdGFibGUuCisgKi8KK3N0YXRpYyB1aW50MzIKK2hhc2hfc3RyaW5n X3BvaW50ZXIoY29uc3QgY2hhciAqcykKK3sKKwl1bnNpZ25lZCBjaGFyICpzcyA9ICh1bnNpZ25l ZCBjaGFyICopIHM7CisKKwlyZXR1cm4gaGFzaF9ieXRlcyhzcywgc3RybGVuKHMpKTsKK30KZGlm ZiAtLWdpdCBhL3NyYy9iaW4vcGdfd2FsZHVtcC9tZXNvbi5idWlsZCBiL3NyYy9iaW4vcGdfd2Fs ZHVtcC9tZXNvbi5idWlsZAppbmRleCA2MzNhOTg3NGJiNS4uNTI5NmYyMWI4MmMgMTAwNjQ0Ci0t LSBhL3NyYy9iaW4vcGdfd2FsZHVtcC9tZXNvbi5idWlsZAorKysgYi9zcmMvYmluL3BnX3dhbGR1 bXAvbWVzb24uYnVpbGQKQEAgLTEsNiArMSw3IEBACiAjIENvcHlyaWdodCAoYykgMjAyMi0yMDI2 LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAogCiBwZ193YWxkdW1wX3NvdXJj ZXMgPSBmaWxlcygKKyAgJ2FyY2hpdmVfd2FsZHVtcC5jJywKICAgJ2NvbXBhdC5jJywKICAgJ3Bn X3dhbGR1bXAuYycsCiAgICdybWdyZGVzYy5jJywKQEAgLTE4LDcgKzE5LDcgQEAgZW5kaWYKIAog cGdfd2FsZHVtcCA9IGV4ZWN1dGFibGUoJ3BnX3dhbGR1bXAnLAogICBwZ193YWxkdW1wX3NvdXJj ZXMsCi0gIGRlcGVuZGVuY2llczogW2Zyb250ZW5kX2NvZGUsIGx6NCwgenN0ZF0sCisgIGRlcGVu ZGVuY2llczogW2Zyb250ZW5kX2NvZGUsIGxpYnBxLCBsejQsIHpzdGRdLAogICBjX2FyZ3M6IFsn LURGUk9OVEVORCddLCAjIG5lZWRlZCBmb3IgeGxvZ3JlYWRlciBldCBhbAogICBrd2FyZ3M6IGRl ZmF1bHRfYmluX2FyZ3MsCiApCkBAIC0yOSw2ICszMCw3IEBAIHRlc3RzICs9IHsKICAgJ3NkJzog bWVzb24uY3VycmVudF9zb3VyY2VfZGlyKCksCiAgICdiZCc6IG1lc29uLmN1cnJlbnRfYnVpbGRf ZGlyKCksCiAgICd0YXAnOiB7CisgICAgJ2Vudic6IHsnVEFSJzogdGFyLmZvdW5kKCkgPyB0YXIu ZnVsbF9wYXRoKCkgOiAnJ30sCiAgICAgJ3Rlc3RzJzogWwogICAgICAgJ3QvMDAxX2Jhc2ljLnBs JywKICAgICAgICd0LzAwMl9zYXZlX2Z1bGxwYWdlLnBsJywKZGlmZiAtLWdpdCBhL3NyYy9iaW4v cGdfd2FsZHVtcC9wZ193YWxkdW1wLmMgYi9zcmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5j CmluZGV4IDVkMzFiMTVkYmQ4Li5iMTNjZWRhYTNlNyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ193 YWxkdW1wL3BnX3dhbGR1bXAuYworKysgYi9zcmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5j CkBAIC0xNzYsNyArMTc2LDcgQEAgc3BsaXRfcGF0aChjb25zdCBjaGFyICpwYXRoLCBjaGFyICoq ZGlyLCBjaGFyICoqZm5hbWUpCiAgKgogICogcmV0dXJuIGEgcmVhZCBvbmx5IGZkCiAgKi8KLXN0 YXRpYyBpbnQKK2ludAogb3Blbl9maWxlX2luX2RpcmVjdG9yeShjb25zdCBjaGFyICpkaXJlY3Rv cnksIGNvbnN0IGNoYXIgKmZuYW1lKQogewogCWludAkJCWZkID0gLTE7CkBAIC00NDAsNiArNDQw LDEwMyBAQCBXQUxEdW1wUmVhZFBhZ2UoWExvZ1JlYWRlclN0YXRlICpzdGF0ZSwgWExvZ1JlY1B0 ciB0YXJnZXRQYWdlUHRyLCBpbnQgcmVxTGVuLAogCXJldHVybiBjb3VudDsKIH0KIAorLyoKKyAq IHBnX3dhbGR1bXAncyBYTG9nUmVhZGVyUm91dGluZS0+c2VnbWVudF9vcGVuIGNhbGxiYWNrIHRv IHN1cHBvcnQgZHVtcGluZyBXQUwKKyAqIGZpbGVzIGZyb20gdGFyIGFyY2hpdmVzLgorICovCitz dGF0aWMgdm9pZAorVGFyV0FMRHVtcE9wZW5TZWdtZW50KFhMb2dSZWFkZXJTdGF0ZSAqc3RhdGUs IFhMb2dTZWdObyBuZXh0U2VnTm8sCisJCQkJCSAgVGltZUxpbmVJRCAqdGxpX3ApCit7CisJLyog Tm8gYWN0aW9uIG5lZWRlZCAqLworfQorCisvKgorICogcGdfd2FsZHVtcCdzIFhMb2dSZWFkZXJS b3V0aW5lLT5zZWdtZW50X2Nsb3NlIGNhbGxiYWNrLgorICovCitzdGF0aWMgdm9pZAorVGFyV0FM RHVtcENsb3NlU2VnbWVudChYTG9nUmVhZGVyU3RhdGUgKnN0YXRlKQoreworCS8qIE5vIGFjdGlv biBuZWVkZWQgKi8KK30KKworLyoKKyAqIHBnX3dhbGR1bXAncyBYTG9nUmVhZGVyUm91dGluZS0+ cGFnZV9yZWFkIGNhbGxiYWNrIHRvIHN1cHBvcnQgZHVtcGluZyBXQUwKKyAqIGZpbGVzIGZyb20g dGFyIGFyY2hpdmVzLgorICovCitzdGF0aWMgaW50CitUYXJXQUxEdW1wUmVhZFBhZ2UoWExvZ1Jl YWRlclN0YXRlICpzdGF0ZSwgWExvZ1JlY1B0ciB0YXJnZXRQYWdlUHRyLCBpbnQgcmVxTGVuLAor CQkJCSAgIFhMb2dSZWNQdHIgdGFyZ2V0UHRyLCBjaGFyICpyZWFkQnVmZikKK3sKKwlYTG9nRHVt cFByaXZhdGUgKnByaXZhdGUgPSBzdGF0ZS0+cHJpdmF0ZV9kYXRhOworCWludAkJCWNvdW50ID0g cmVxdWlyZWRfcmVhZF9sZW4ocHJpdmF0ZSwgdGFyZ2V0UGFnZVB0ciwgcmVxTGVuKTsKKwlpbnQJ CQlXYWxTZWdTeiA9IHN0YXRlLT5zZWdjeHQud3Nfc2Vnc2l6ZTsKKwlYTG9nU2VnTm8JY3VyU2Vn Tm87CisKKwkvKiBCYWlsIG91dCBpZiB0aGUgY291bnQgdG8gYmUgcmVhZCBpcyBub3QgdmFsaWQg Ki8KKwlpZiAoY291bnQgPCAwKQorCQlyZXR1cm4gLTE7CisKKwkvKgorCSAqIElmIHRoZSB0YXJn ZXQgcGFnZSBpcyBpbiBhIGRpZmZlcmVudCBzZWdtZW50LCBmcmVlIHRoZSBidWZmZXIgYW5kL29y CisJICogdGVtcG9yYXJ5IGZpbGUgZGlzayBzcGFjZSBvY2N1cGllZCBieSB0aGUgcHJldmlvdXMg c2VnbWVudCdzIGRhdGEuCisJICogU2luY2UgcGdfd2FsZHVtcCBuZXZlciByZXF1ZXN0cyB0aGUg c2FtZSBXQUwgYnl0ZXMgdHdpY2UsIG1vdmluZyB0byBhCisJICogbmV3IHNlZ21lbnQgaW1wbGll cyB0aGUgcHJldmlvdXMgYnVmZmVyJ3MgZGF0YSBhbmQgdGhhdCBzZWdtZW50IHdpbGwKKwkgKiBu b3QgYmUgbmVlZGVkIGFnYWluLgorCSAqCisJICogQWZ0ZXJ3YXJkLCBjaGVjayBmb3IgdGhlIG5l eHQgcmVxdWlyZWQgV0FMIHNlZ21lbnQncyBwaHlzaWNhbCBleGlzdGVuY2UKKwkgKiBpbiB0aGUg dGVtcG9yYXJ5IGRpcmVjdG9yeSBmaXJzdCBiZWZvcmUgaW52b2tpbmcgdGhlIGFyY2hpdmUgc3Ry ZWFtZXIuCisJICovCisJY3VyU2VnTm8gPSBzdGF0ZS0+c2VnLndzX3NlZ25vOworCWlmICghWExC eXRlSW5TZWcodGFyZ2V0UGFnZVB0ciwgY3VyU2VnTm8sIFdhbFNlZ1N6KSkKKwl7CisJCWNoYXIJ CWZuYW1lW01BWEZOQU1FTEVOXTsKKwkJWExvZ1NlZ05vCW5leHRTZWdObzsKKworCQkvKgorCQkg KiBDYWxjdWxhdGUgdGhlIG5leHQgV0FMIHNlZ21lbnQgdG8gYmUgZGVjb2RlZCBmcm9tIHRoZSBn aXZlbiBwYWdlCisJCSAqIHBvaW50ZXIKKwkJICovCisJCVhMQnl0ZVRvU2VnKHRhcmdldFBhZ2VQ dHIsIG5leHRTZWdObywgV2FsU2VnU3opOworCQlzdGF0ZS0+c2VnLndzX3RsaSA9IHByaXZhdGUt PnRpbWVsaW5lOworCQlzdGF0ZS0+c2VnLndzX3NlZ25vID0gbmV4dFNlZ05vOworCisJCS8qIENs b3NlIHRoZSBXQUwgc2VnbWVudCBmaWxlIGlmIGl0IGlzIGN1cnJlbnRseSBvcGVuICovCisJCWlm IChzdGF0ZS0+c2VnLndzX2ZpbGUgPj0gMCkKKwkJeworCQkJY2xvc2Uoc3RhdGUtPnNlZy53c19m aWxlKTsKKwkJCXN0YXRlLT5zZWcud3NfZmlsZSA9IC0xOworCQl9CisKKwkJLyoKKwkJICogSWYg aW4gcHJlLXJlYWRpbmcgbW9kZSAocHJpb3IgdG8gYWN0dWFsIGRlY29kaW5nKSwgZG8gbm90IGRl bGV0ZQorCQkgKiBhbnkgZW50cmllcyB0aGF0IG1pZ2h0IGJlIHJlcXVlc3RlZCBhZ2FpbiBvbmNl IHRoZSBkZWNvZGluZyBsb29wCisJCSAqIHN0YXJ0cy4gRm9yIG1vcmUgZGV0YWlscywgc2VlIHRo ZSBjb21tZW50cyBpbgorCQkgKiByZWFkX2FyY2hpdmVfd2FsX3BhZ2UoKS4KKwkJICovCisJCWlm IChwcml2YXRlLT5kZWNvZGluZ19zdGFydGVkICYmIGN1clNlZ05vIDwgbmV4dFNlZ05vKQorCQl7 CisJCQlYTG9nRmlsZU5hbWUoZm5hbWUsIHN0YXRlLT5zZWcud3NfdGxpLCBjdXJTZWdObywgV2Fs U2VnU3opOworCQkJZnJlZV9hcmNoaXZlX3dhbF9lbnRyeShmbmFtZSwgcHJpdmF0ZSk7CisJCX0K KworCQkvKgorCQkgKiBJZiB0aGUgbmV4dCBzZWdtZW50IGV4aXN0cywgb3BlbiBpdCBhbmQgY29u dGludWUgcmVhZGluZyBmcm9tIHRoZXJlCisJCSAqLworCQlYTG9nRmlsZU5hbWUoZm5hbWUsIHN0 YXRlLT5zZWcud3NfdGxpLCBuZXh0U2VnTm8sIFdhbFNlZ1N6KTsKKwkJc3RhdGUtPnNlZy53c19m aWxlID0gb3Blbl9maWxlX2luX2RpcmVjdG9yeShUbXBXYWxTZWdEaXIsIGZuYW1lKTsKKwl9CisK KwkvKiBDb250aW51ZSByZWFkaW5nIGZyb20gdGhlIG9wZW4gV0FMIHNlZ21lbnQsIGlmIGFueSAq LworCWlmIChzdGF0ZS0+c2VnLndzX2ZpbGUgPj0gMCkKKwkJcmV0dXJuIFdBTER1bXBSZWFkUGFn ZShzdGF0ZSwgdGFyZ2V0UGFnZVB0ciwgY291bnQsIHRhcmdldFB0ciwKKwkJCQkJCQkgICByZWFk QnVmZik7CisKKwkvKiBPdGhlcndpc2UsIHJlYWQgdGhlIFdBTCBwYWdlIGZyb20gdGhlIGFyY2hp dmUgc3RyZWFtZXIgKi8KKwlyZXR1cm4gcmVhZF9hcmNoaXZlX3dhbF9wYWdlKHByaXZhdGUsIHRh cmdldFBhZ2VQdHIsIGNvdW50LCByZWFkQnVmZiwKKwkJCQkJCQkJIFdhbFNlZ1N6KTsKK30KKwog LyoKICAqIEJvb2xlYW4gdG8gcmV0dXJuIHdoZXRoZXIgdGhlIGdpdmVuIFdBTCByZWNvcmQgbWF0 Y2hlcyBhIHNwZWNpZmljIHJlbGF0aW9uCiAgKiBhbmQgb3B0aW9uYWxseSBibG9jay4KQEAgLTc3 Nyw4ICs4NzQsOCBAQCB1c2FnZSh2b2lkKQogCXByaW50ZihfKCIgIC1GLCAtLWZvcms9Rk9SSyAg ICAgICAgb25seSBzaG93IHJlY29yZHMgdGhhdCBtb2RpZnkgYmxvY2tzIGluIGZvcmsgRk9SSztc biIKIAkJCSAiICAgICAgICAgICAgICAgICAgICAgICAgIHZhbGlkIG5hbWVzIGFyZSBtYWluLCBm c20sIHZtLCBpbml0XG4iKSk7CiAJcHJpbnRmKF8oIiAgLW4sIC0tbGltaXQ9TiAgICAgICAgICBu dW1iZXIgb2YgcmVjb3JkcyB0byBkaXNwbGF5XG4iKSk7Ci0JcHJpbnRmKF8oIiAgLXAsIC0tcGF0 aD1QQVRIICAgICAgICBkaXJlY3RvcnkgaW4gd2hpY2ggdG8gZmluZCBXQUwgc2VnbWVudCBmaWxl cyBvciBhXG4iCi0JCQkgIiAgICAgICAgICAgICAgICAgICAgICAgICBkaXJlY3Rvcnkgd2l0aCBh IC4vcGdfd2FsIHRoYXQgY29udGFpbnMgc3VjaCBmaWxlc1xuIgorCXByaW50ZihfKCIgIC1wLCAt LXBhdGg9UEFUSCAgICAgICAgYSB0YXIgYXJjaGl2ZSBvciBhIGRpcmVjdG9yeSBpbiB3aGljaCB0 byBmaW5kIFdBTCBzZWdtZW50IGZpbGVzIG9yXG4iCisJCQkgIiAgICAgICAgICAgICAgICAgICAg ICAgICBhIGRpcmVjdG9yeSB3aXRoIGEgLi9wZ193YWwgdGhhdCBjb250YWlucyBzdWNoIGZpbGVz XG4iCiAJCQkgIiAgICAgICAgICAgICAgICAgICAgICAgICAoZGVmYXVsdDogY3VycmVudCBkaXJl Y3RvcnksIC4vcGdfd2FsLCAkUEdEQVRBL3BnX3dhbClcbiIpKTsKIAlwcmludGYoXygiICAtcSwg LS1xdWlldCAgICAgICAgICAgIGRvIG5vdCBwcmludCBhbnkgb3V0cHV0LCBleGNlcHQgZm9yIGVy cm9yc1xuIikpOwogCXByaW50ZihfKCIgIC1yLCAtLXJtZ3I9Uk1HUiAgICAgICAgb25seSBzaG93 IHJlY29yZHMgZ2VuZXJhdGVkIGJ5IHJlc291cmNlIG1hbmFnZXIgUk1HUjtcbiIKQEAgLTgxMCw3 ICs5MDcsOSBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAlYTG9nUmVjb3JkICpyZWNv cmQ7CiAJWExvZ1JlY1B0cglmaXJzdF9yZWNvcmQ7CiAJY2hhcgkgICAqd2FsZGlyID0gTlVMTDsK KwljaGFyCSAgICp3YWxwYXRoID0gTlVMTDsKIAljaGFyCSAgICplcnJvcm1zZzsKKwlwZ19jb21w cmVzc19hbGdvcml0aG0gY29tcHJlc3Npb24gPSBQR19DT01QUkVTU0lPTl9OT05FOwogCiAJc3Rh dGljIHN0cnVjdCBvcHRpb24gbG9uZ19vcHRpb25zW10gPSB7CiAJCXsiYmtwLWRldGFpbHMiLCBu b19hcmd1bWVudCwgTlVMTCwgJ2InfSwKQEAgLTg2OCw2ICs5NjcsMTAgQEAgbWFpbihpbnQgYXJn YywgY2hhciAqKmFyZ3YpCiAJcHJpdmF0ZS5zdGFydHB0ciA9IEludmFsaWRYTG9nUmVjUHRyOwog CXByaXZhdGUuZW5kcHRyID0gSW52YWxpZFhMb2dSZWNQdHI7CiAJcHJpdmF0ZS5lbmRwdHJfcmVh Y2hlZCA9IGZhbHNlOworCXByaXZhdGUuZGVjb2Rpbmdfc3RhcnRlZCA9IGZhbHNlOworCXByaXZh dGUuYXJjaGl2ZV9uYW1lID0gTlVMTDsKKwlwcml2YXRlLnN0YXJ0X3NlZ25vID0gMDsKKwlwcml2 YXRlLmVuZF9zZWdubyA9IFVJTlQ2NF9NQVg7CiAKIAljb25maWcucXVpZXQgPSBmYWxzZTsKIAlj b25maWcuYmtwX2RldGFpbHMgPSBmYWxzZTsKQEAgLTk0Myw3ICsxMDQ2LDcgQEAgbWFpbihpbnQg YXJnYywgY2hhciAqKmFyZ3YpCiAJCQkJfQogCQkJCWJyZWFrOwogCQkJY2FzZSAncCc6Ci0JCQkJ d2FsZGlyID0gcGdfc3RyZHVwKG9wdGFyZyk7CisJCQkJd2FscGF0aCA9IHBnX3N0cmR1cChvcHRh cmcpOwogCQkJCWJyZWFrOwogCQkJY2FzZSAncSc6CiAJCQkJY29uZmlnLnF1aWV0ID0gdHJ1ZTsK QEAgLTExMDcsMTIgKzEyMTAsMjEgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCWdv dG8gYmFkX2FyZ3VtZW50OwogCX0KIAotCWlmICh3YWxkaXIgIT0gTlVMTCkKKwlpZiAod2FscGF0 aCAhPSBOVUxMKQogCXsKKwkJLyogdmFsaWRhdGUgcGF0aCBwb2ludHMgdG8gdGFyIGFyY2hpdmUg Ki8KKwkJaWYgKHBhcnNlX3Rhcl9jb21wcmVzc19hbGdvcml0aG0od2FscGF0aCwgJmNvbXByZXNz aW9uKSkKKwkJeworCQkJY2hhcgkgICAqZm5hbWUgPSBOVUxMOworCisJCQlzcGxpdF9wYXRoKHdh bHBhdGgsICZ3YWxkaXIsICZmbmFtZSk7CisKKwkJCXByaXZhdGUuYXJjaGl2ZV9uYW1lID0gZm5h bWU7CisJCX0KIAkJLyogdmFsaWRhdGUgcGF0aCBwb2ludHMgdG8gZGlyZWN0b3J5ICovCi0JCWlm ICghdmVyaWZ5X2RpcmVjdG9yeSh3YWxkaXIpKQorCQllbHNlIGlmICghdmVyaWZ5X2RpcmVjdG9y eSh3YWxwYXRoKSkKIAkJewotCQkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3Qgb3BlbiBkaXJlY3Rv cnkgXCIlc1wiOiAlbSIsIHdhbGRpcik7CisJCQlwZ19sb2dfZXJyb3IoImNvdWxkIG5vdCBvcGVu IGRpcmVjdG9yeSBcIiVzXCI6ICVtIiwgd2FscGF0aCk7CiAJCQlnb3RvIGJhZF9hcmd1bWVudDsK IAkJfQogCX0KQEAgLTExMjgsNiArMTI0MCwxNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJn dikKIAkJaW50CQkJZmQ7CiAJCVhMb2dTZWdObwlzZWdubzsKIAorCQkvKgorCQkgKiBJZiBhIHRh ciBhcmNoaXZlIGlzIHBhc3NlZCB1c2luZyB0aGUgLS1wYXRoIG9wdGlvbiwgYWxsIG90aGVyCisJ CSAqIGFyZ3VtZW50cyBiZWNvbWUgdW5uZWNlc3NhcnkuCisJCSAqLworCQlpZiAocHJpdmF0ZS5h cmNoaXZlX25hbWUpCisJCXsKKwkJCXBnX2xvZ19lcnJvcigidW5uZWNlc3NhcnkgY29tbWFuZC1s aW5lIGFyZ3VtZW50cyBzcGVjaWZpZWQgd2l0aCB0YXIgYXJjaGl2ZSAoZmlyc3QgaXMgXCIlc1wi KSIsCisJCQkJCQkgYXJndltvcHRpbmRdKTsKKwkJCWdvdG8gYmFkX2FyZ3VtZW50OworCQl9CisK IAkJc3BsaXRfcGF0aChhcmd2W29wdGluZF0sICZkaXJlY3RvcnksICZmbmFtZSk7CiAKIAkJaWYg KHdhbGRpciA9PSBOVUxMICYmIGRpcmVjdG9yeSAhPSBOVUxMKQpAQCAtMTEzOCw2OSArMTI2MSw3 NSBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJCQlwZ19mYXRhbCgiY291bGQgbm90 IG9wZW4gZGlyZWN0b3J5IFwiJXNcIjogJW0iLCB3YWxkaXIpOwogCQl9CiAKLQkJd2FsZGlyID0g aWRlbnRpZnlfdGFyZ2V0X2RpcmVjdG9yeSh3YWxkaXIsIGZuYW1lLCAmcHJpdmF0ZS5zZWdzaXpl KTsKLQkJZmQgPSBvcGVuX2ZpbGVfaW5fZGlyZWN0b3J5KHdhbGRpciwgZm5hbWUpOwotCQlpZiAo ZmQgPCAwKQotCQkJcGdfZmF0YWwoImNvdWxkIG5vdCBvcGVuIGZpbGUgXCIlc1wiIiwgZm5hbWUp OwotCQljbG9zZShmZCk7Ci0KLQkJLyogcGFyc2UgcG9zaXRpb24gZnJvbSBmaWxlICovCi0JCVhM b2dGcm9tRmlsZU5hbWUoZm5hbWUsICZwcml2YXRlLnRpbWVsaW5lLCAmc2Vnbm8sIHByaXZhdGUu c2Vnc2l6ZSk7Ci0KLQkJaWYgKCFYTG9nUmVjUHRySXNWYWxpZChwcml2YXRlLnN0YXJ0cHRyKSkK LQkJCVhMb2dTZWdOb09mZnNldFRvUmVjUHRyKHNlZ25vLCAwLCBwcml2YXRlLnNlZ3NpemUsIHBy aXZhdGUuc3RhcnRwdHIpOwotCQllbHNlIGlmICghWExCeXRlSW5TZWcocHJpdmF0ZS5zdGFydHB0 ciwgc2Vnbm8sIHByaXZhdGUuc2Vnc2l6ZSkpCisJCWlmIChmbmFtZSAhPSBOVUxMICYmIHBhcnNl X3Rhcl9jb21wcmVzc19hbGdvcml0aG0oZm5hbWUsICZjb21wcmVzc2lvbikpCiAJCXsKLQkJCXBn X2xvZ19lcnJvcigic3RhcnQgV0FMIGxvY2F0aW9uICVYLyUwOFggaXMgbm90IGluc2lkZSBmaWxl IFwiJXNcIiIsCi0JCQkJCQkgTFNOX0ZPUk1BVF9BUkdTKHByaXZhdGUuc3RhcnRwdHIpLAotCQkJ CQkJIGZuYW1lKTsKLQkJCWdvdG8gYmFkX2FyZ3VtZW50OworCQkJcHJpdmF0ZS5hcmNoaXZlX25h bWUgPSBmbmFtZTsKIAkJfQotCi0JCS8qIG5vIHNlY29uZCBmaWxlIHNwZWNpZmllZCwgc2V0IGVu ZCBwb3NpdGlvbiAqLwotCQlpZiAoIShvcHRpbmQgKyAxIDwgYXJnYykgJiYgIVhMb2dSZWNQdHJJ c1ZhbGlkKHByaXZhdGUuZW5kcHRyKSkKLQkJCVhMb2dTZWdOb09mZnNldFRvUmVjUHRyKHNlZ25v ICsgMSwgMCwgcHJpdmF0ZS5zZWdzaXplLCBwcml2YXRlLmVuZHB0cik7Ci0KLQkJLyogcGFyc2Ug RU5EU0VHIGlmIHBhc3NlZCAqLwotCQlpZiAob3B0aW5kICsgMSA8IGFyZ2MpCisJCWVsc2UKIAkJ ewotCQkJWExvZ1NlZ05vCWVuZHNlZ25vOwotCi0JCQkvKiBpZ25vcmUgZGlyZWN0b3J5LCBhbHJl YWR5IGhhdmUgdGhhdCAqLwotCQkJc3BsaXRfcGF0aChhcmd2W29wdGluZCArIDFdLCAmZGlyZWN0 b3J5LCAmZm5hbWUpOwotCisJCQl3YWxkaXIgPSBpZGVudGlmeV90YXJnZXRfZGlyZWN0b3J5KHdh bGRpciwgZm5hbWUsICZwcml2YXRlLnNlZ3NpemUpOwogCQkJZmQgPSBvcGVuX2ZpbGVfaW5fZGly ZWN0b3J5KHdhbGRpciwgZm5hbWUpOwogCQkJaWYgKGZkIDwgMCkKIAkJCQlwZ19mYXRhbCgiY291 bGQgbm90IG9wZW4gZmlsZSBcIiVzXCIiLCBmbmFtZSk7CiAJCQljbG9zZShmZCk7CiAKIAkJCS8q IHBhcnNlIHBvc2l0aW9uIGZyb20gZmlsZSAqLwotCQkJWExvZ0Zyb21GaWxlTmFtZShmbmFtZSwg JnByaXZhdGUudGltZWxpbmUsICZlbmRzZWdubywgcHJpdmF0ZS5zZWdzaXplKTsKKwkJCVhMb2dG cm9tRmlsZU5hbWUoZm5hbWUsICZwcml2YXRlLnRpbWVsaW5lLCAmc2Vnbm8sIHByaXZhdGUuc2Vn c2l6ZSk7CiAKLQkJCWlmIChlbmRzZWdubyA8IHNlZ25vKQotCQkJCXBnX2ZhdGFsKCJFTkRTRUcg JXMgaXMgYmVmb3JlIFNUQVJUU0VHICVzIiwKLQkJCQkJCSBhcmd2W29wdGluZCArIDFdLCBhcmd2 W29wdGluZF0pOworCQkJaWYgKCFYTG9nUmVjUHRySXNWYWxpZChwcml2YXRlLnN0YXJ0cHRyKSkK KwkJCQlYTG9nU2VnTm9PZmZzZXRUb1JlY1B0cihzZWdubywgMCwgcHJpdmF0ZS5zZWdzaXplLCBw cml2YXRlLnN0YXJ0cHRyKTsKKwkJCWVsc2UgaWYgKCFYTEJ5dGVJblNlZyhwcml2YXRlLnN0YXJ0 cHRyLCBzZWdubywgcHJpdmF0ZS5zZWdzaXplKSkKKwkJCXsKKwkJCQlwZ19sb2dfZXJyb3IoInN0 YXJ0IFdBTCBsb2NhdGlvbiAlWC8lMDhYIGlzIG5vdCBpbnNpZGUgZmlsZSBcIiVzXCIiLAorCQkJ CQkJCSBMU05fRk9STUFUX0FSR1MocHJpdmF0ZS5zdGFydHB0ciksCisJCQkJCQkJIGZuYW1lKTsK KwkJCQlnb3RvIGJhZF9hcmd1bWVudDsKKwkJCX0KIAotCQkJaWYgKCFYTG9nUmVjUHRySXNWYWxp ZChwcml2YXRlLmVuZHB0cikpCi0JCQkJWExvZ1NlZ05vT2Zmc2V0VG9SZWNQdHIoZW5kc2Vnbm8g KyAxLCAwLCBwcml2YXRlLnNlZ3NpemUsCi0JCQkJCQkJCQkJcHJpdmF0ZS5lbmRwdHIpOworCQkJ Lyogbm8gc2Vjb25kIGZpbGUgc3BlY2lmaWVkLCBzZXQgZW5kIHBvc2l0aW9uICovCisJCQlpZiAo IShvcHRpbmQgKyAxIDwgYXJnYykgJiYgIVhMb2dSZWNQdHJJc1ZhbGlkKHByaXZhdGUuZW5kcHRy KSkKKwkJCQlYTG9nU2VnTm9PZmZzZXRUb1JlY1B0cihzZWdubyArIDEsIDAsIHByaXZhdGUuc2Vn c2l6ZSwgcHJpdmF0ZS5lbmRwdHIpOwogCi0JCQkvKiBzZXQgc2Vnbm8gdG8gZW5kc2Vnbm8gZm9y IGNoZWNrIG9mIC0tZW5kICovCi0JCQlzZWdubyA9IGVuZHNlZ25vOwotCQl9CisJCQkvKiBwYXJz ZSBFTkRTRUcgaWYgcGFzc2VkICovCisJCQlpZiAob3B0aW5kICsgMSA8IGFyZ2MpCisJCQl7CisJ CQkJWExvZ1NlZ05vCWVuZHNlZ25vOwogCisJCQkJLyogaWdub3JlIGRpcmVjdG9yeSwgYWxyZWFk eSBoYXZlIHRoYXQgKi8KKwkJCQlzcGxpdF9wYXRoKGFyZ3Zbb3B0aW5kICsgMV0sICZkaXJlY3Rv cnksICZmbmFtZSk7CiAKLQkJaWYgKCFYTEJ5dGVJblNlZyhwcml2YXRlLmVuZHB0ciwgc2Vnbm8s IHByaXZhdGUuc2Vnc2l6ZSkgJiYKLQkJCXByaXZhdGUuZW5kcHRyICE9IChzZWdubyArIDEpICog cHJpdmF0ZS5zZWdzaXplKQotCQl7Ci0JCQlwZ19sb2dfZXJyb3IoImVuZCBXQUwgbG9jYXRpb24g JVgvJTA4WCBpcyBub3QgaW5zaWRlIGZpbGUgXCIlc1wiIiwKLQkJCQkJCSBMU05fRk9STUFUX0FS R1MocHJpdmF0ZS5lbmRwdHIpLAotCQkJCQkJIGFyZ3ZbYXJnYyAtIDFdKTsKLQkJCWdvdG8gYmFk X2FyZ3VtZW50OworCQkJCWZkID0gb3Blbl9maWxlX2luX2RpcmVjdG9yeSh3YWxkaXIsIGZuYW1l KTsKKwkJCQlpZiAoZmQgPCAwKQorCQkJCQlwZ19mYXRhbCgiY291bGQgbm90IG9wZW4gZmlsZSBc IiVzXCIiLCBmbmFtZSk7CisJCQkJY2xvc2UoZmQpOworCisJCQkJLyogcGFyc2UgcG9zaXRpb24g ZnJvbSBmaWxlICovCisJCQkJWExvZ0Zyb21GaWxlTmFtZShmbmFtZSwgJnByaXZhdGUudGltZWxp bmUsICZlbmRzZWdubywgcHJpdmF0ZS5zZWdzaXplKTsKKworCQkJCWlmIChlbmRzZWdubyA8IHNl Z25vKQorCQkJCQlwZ19mYXRhbCgiRU5EU0VHICVzIGlzIGJlZm9yZSBTVEFSVFNFRyAlcyIsCisJ CQkJCQkJIGFyZ3Zbb3B0aW5kICsgMV0sIGFyZ3Zbb3B0aW5kXSk7CisKKwkJCQlpZiAoIVhMb2dS ZWNQdHJJc1ZhbGlkKHByaXZhdGUuZW5kcHRyKSkKKwkJCQkJWExvZ1NlZ05vT2Zmc2V0VG9SZWNQ dHIoZW5kc2Vnbm8gKyAxLCAwLCBwcml2YXRlLnNlZ3NpemUsCisJCQkJCQkJCQkJCXByaXZhdGUu ZW5kcHRyKTsKKworCQkJCS8qIHNldCBzZWdubyB0byBlbmRzZWdubyBmb3IgY2hlY2sgb2YgLS1l bmQgKi8KKwkJCQlzZWdubyA9IGVuZHNlZ25vOworCQkJfQorCisJCQlpZiAoIVhMQnl0ZUluU2Vn KHByaXZhdGUuZW5kcHRyLCBzZWdubywgcHJpdmF0ZS5zZWdzaXplKSAmJgorCQkJCXByaXZhdGUu ZW5kcHRyICE9IChzZWdubyArIDEpICogcHJpdmF0ZS5zZWdzaXplKQorCQkJeworCQkJCXBnX2xv Z19lcnJvcigiZW5kIFdBTCBsb2NhdGlvbiAlWC8lMDhYIGlzIG5vdCBpbnNpZGUgZmlsZSBcIiVz XCIiLAorCQkJCQkJCSBMU05fRk9STUFUX0FSR1MocHJpdmF0ZS5lbmRwdHIpLAorCQkJCQkJCSBh cmd2W2FyZ2MgLSAxXSk7CisJCQkJZ290byBiYWRfYXJndW1lbnQ7CisJCQl9CiAJCX0KIAl9Ci0J ZWxzZQotCQl3YWxkaXIgPSBpZGVudGlmeV90YXJnZXRfZGlyZWN0b3J5KHdhbGRpciwgTlVMTCwg JnByaXZhdGUuc2Vnc2l6ZSk7CisJZWxzZSBpZiAoIXByaXZhdGUuYXJjaGl2ZV9uYW1lKQorCQl3 YWxkaXIgPSBpZGVudGlmeV90YXJnZXRfZGlyZWN0b3J5KHdhbHBhdGgsIE5VTEwsICZwcml2YXRl LnNlZ3NpemUpOwogCiAJLyogd2UgZG9uJ3Qga25vdyB3aGF0IHRvIHByaW50ICovCiAJaWYgKCFY TG9nUmVjUHRySXNWYWxpZChwcml2YXRlLnN0YXJ0cHRyKSkKQEAgLTEyMDksMTUgKzEzMzgsNDYg QEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCWdvdG8gYmFkX2FyZ3VtZW50OwogCX0K IAorCS8qIC0tZm9sbG93IGlzIG5vdCBzdXBwb3J0ZWQgd2l0aCB0YXIgYXJjaGl2ZXMgKi8KKwlp ZiAoY29uZmlnLmZvbGxvdyAmJiBwcml2YXRlLmFyY2hpdmVfbmFtZSkKKwl7CisJCXBnX2xvZ19l cnJvcigiLS1mb2xsb3cgaXMgbm90IHN1cHBvcnRlZCB3aGVuIHJlYWRpbmcgZnJvbSBhIHRhciBh cmNoaXZlIik7CisJCWdvdG8gYmFkX2FyZ3VtZW50OworCX0KKwogCS8qIGRvbmUgd2l0aCBhcmd1 bWVudCBwYXJzaW5nLCBkbyB0aGUgYWN0dWFsIHdvcmsgKi8KIAogCS8qIHdlIGhhdmUgZXZlcnl0 aGluZyB3ZSBuZWVkLCBzdGFydCByZWFkaW5nICovCi0JeGxvZ3JlYWRlcl9zdGF0ZSA9Ci0JCVhM b2dSZWFkZXJBbGxvY2F0ZShwcml2YXRlLnNlZ3NpemUsIHdhbGRpciwKLQkJCQkJCSAgIFhMX1JP VVRJTkUoLnBhZ2VfcmVhZCA9IFdBTER1bXBSZWFkUGFnZSwKLQkJCQkJCQkJCSAgLnNlZ21lbnRf b3BlbiA9IFdBTER1bXBPcGVuU2VnbWVudCwKLQkJCQkJCQkJCSAgLnNlZ21lbnRfY2xvc2UgPSBX QUxEdW1wQ2xvc2VTZWdtZW50KSwKLQkJCQkJCSAgICZwcml2YXRlKTsKKwlpZiAocHJpdmF0ZS5h cmNoaXZlX25hbWUpCisJeworCQkvKgorCQkgKiBBIE5VTEwgV0FMIGRpcmVjdG9yeSBpbmRpY2F0 ZXMgdGhhdCB0aGUgYXJjaGl2ZSBmaWxlIGlzIGxvY2F0ZWQgaW4KKwkJICogdGhlIGN1cnJlbnQg d29ya2luZyBkaXJlY3Rvcnkgb2YgdGhlIHBnX3dhbGR1bXAgZXhlY3V0aW9uCisJCSAqLworCQlp ZiAod2FsZGlyID09IE5VTEwpCisJCQl3YWxkaXIgPSBwZ19zdHJkdXAoIi4iKTsKKworCQkvKiBT ZXQgdXAgZm9yIHJlYWRpbmcgdGFyIGZpbGUgKi8KKwkJaW5pdF9hcmNoaXZlX3JlYWRlcigmcHJp dmF0ZSwgd2FsZGlyLCAmcHJpdmF0ZS5zZWdzaXplLCBjb21wcmVzc2lvbik7CisKKwkJLyogUm91 dGluZSB0byBkZWNvZGUgV0FMIGZpbGVzIGluIHRhciBhcmNoaXZlICovCisJCXhsb2dyZWFkZXJf c3RhdGUgPQorCQkJWExvZ1JlYWRlckFsbG9jYXRlKHByaXZhdGUuc2Vnc2l6ZSwgd2FsZGlyLAor CQkJCQkJCSAgIFhMX1JPVVRJTkUoLnBhZ2VfcmVhZCA9IFRhcldBTER1bXBSZWFkUGFnZSwKKwkJ CQkJCQkJCQkgIC5zZWdtZW50X29wZW4gPSBUYXJXQUxEdW1wT3BlblNlZ21lbnQsCisJCQkJCQkJ CQkJICAuc2VnbWVudF9jbG9zZSA9IFRhcldBTER1bXBDbG9zZVNlZ21lbnQpLAorCQkJCQkJCSAg ICZwcml2YXRlKTsKKwl9CisJZWxzZQorCXsKKwkJeGxvZ3JlYWRlcl9zdGF0ZSA9CisJCQlYTG9n UmVhZGVyQWxsb2NhdGUocHJpdmF0ZS5zZWdzaXplLCB3YWxkaXIsCisJCQkJCQkJICAgWExfUk9V VElORSgucGFnZV9yZWFkID0gV0FMRHVtcFJlYWRQYWdlLAorCQkJCQkJCQkJCSAgLnNlZ21lbnRf b3BlbiA9IFdBTER1bXBPcGVuU2VnbWVudCwKKwkJCQkJCQkJCQkgIC5zZWdtZW50X2Nsb3NlID0g V0FMRHVtcENsb3NlU2VnbWVudCksCisJCQkJCQkJICAgJnByaXZhdGUpOworCX0KKwogCWlmICgh eGxvZ3JlYWRlcl9zdGF0ZSkKIAkJcGdfZmF0YWwoIm91dCBvZiBtZW1vcnkgd2hpbGUgYWxsb2Nh dGluZyBhIFdBTCByZWFkaW5nIHByb2Nlc3NvciIpOwogCkBAIC0xMjQ1LDYgKzE0MDUsOSBAQCBt YWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAlpZiAoY29uZmlnLnN0YXRzID09IHRydWUgJiYg IWNvbmZpZy5xdWlldCkKIAkJc3RhdHMuc3RhcnRwdHIgPSBmaXJzdF9yZWNvcmQ7CiAKKwkvKiBG bGFnIGluZGljYXRpbmcgdGhhdCB0aGUgZGVjb2RpbmcgbG9vcCBoYXMgYmVlbiBlbnRlcmVkICov CisJcHJpdmF0ZS5kZWNvZGluZ19zdGFydGVkID0gdHJ1ZTsKKwogCWZvciAoOzspCiAJewogCQlp ZiAodGltZV90b19zdG9wKQpAQCAtMTMyNiw2ICsxNDg5LDkgQEAgbWFpbihpbnQgYXJnYywgY2hh ciAqKmFyZ3YpCiAKIAlYTG9nUmVhZGVyRnJlZSh4bG9ncmVhZGVyX3N0YXRlKTsKIAorCWlmIChw cml2YXRlLmFyY2hpdmVfbmFtZSkKKwkJZnJlZV9hcmNoaXZlX3JlYWRlcigmcHJpdmF0ZSk7CisK IAlyZXR1cm4gRVhJVF9TVUNDRVNTOwogCiBiYWRfYXJndW1lbnQ6CmRpZmYgLS1naXQgYS9zcmMv YmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5oIGIvc3JjL2Jpbi9wZ193YWxkdW1wL3BnX3dhbGR1 bXAuaAppbmRleCAwMTNiMDUxNTA2Zi4uMTA5NzM5MGQ1NzUgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4v cGdfd2FsZHVtcC9wZ193YWxkdW1wLmgKKysrIGIvc3JjL2Jpbi9wZ193YWxkdW1wL3BnX3dhbGR1 bXAuaApAQCAtMTIsNiArMTIsMTQgQEAKICNkZWZpbmUgUEdfV0FMRFVNUF9ICiAKICNpbmNsdWRl ICJhY2Nlc3MveGxvZ2RlZnMuaCIKKyNpbmNsdWRlICJmZV91dGlscy9hc3RyZWFtZXIuaCIKKwor LyogRm9yd2FyZCBkZWNsYXJhdGlvbiAqLworc3RydWN0IEFyY2hpdmVkV0FMRmlsZTsKK3N0cnVj dCBBcmNoaXZlZFdBTF9oYXNoOworCisvKiBUZW1wb3JhcnkgZGlyZWN0b3J5ICovCitleHRlcm4g Y2hhciAqVG1wV2FsU2VnRGlyOwogCiAvKiBDb250YWlucyB0aGUgbmVjZXNzYXJ5IGluZm9ybWF0 aW9uIHRvIGRyaXZlIFdBTCBkZWNvZGluZyAqLwogdHlwZWRlZiBzdHJ1Y3QgWExvZ0R1bXBQcml2 YXRlCkBAIC0yMSw2ICsyOSw0NiBAQCB0eXBlZGVmIHN0cnVjdCBYTG9nRHVtcFByaXZhdGUKIAlY TG9nUmVjUHRyCXN0YXJ0cHRyOwogCVhMb2dSZWNQdHIJZW5kcHRyOwogCWJvb2wJCWVuZHB0cl9y ZWFjaGVkOworCWJvb2wJCWRlY29kaW5nX3N0YXJ0ZWQ7CisKKwkvKiBGaWVsZHMgcmVxdWlyZWQg dG8gcmVhZCBXQUwgZnJvbSBhcmNoaXZlICovCisJY2hhcgkgICAqYXJjaGl2ZV9uYW1lOwkvKiBU YXIgYXJjaGl2ZSBuYW1lICovCisJaW50CQkJYXJjaGl2ZV9mZDsJCS8qIEZpbGUgZGVzY3JpcHRv ciBmb3IgdGhlIG9wZW4gdGFyIGZpbGUgKi8KKworCWFzdHJlYW1lciAgKmFyY2hpdmVfc3RyZWFt ZXI7CisJY2hhcgkgICAqYXJjaGl2ZV9yZWFkX2J1ZjsJLyogUmV1c2FibGUgcmVhZCBidWZmZXIg Zm9yIGFyY2hpdmUgSS9PICovCisJU2l6ZQkJYXJjaGl2ZV9yZWFkX2J1Zl9zaXplOworCisJLyog V2hhdCB0aGUgYXJjaGl2ZSBzdHJlYW1lciBpcyBjdXJyZW50bHkgcmVhZGluZyAqLworCXN0cnVj dCBBcmNoaXZlZFdBTEZpbGUgKmN1cl9maWxlOworCisJLyoKKwkgKiBIYXNoIHRhYmxlIG9mIGFs bCBXQUwgZmlsZXMgdGhhdCB0aGUgYXJjaGl2ZSBzdHJlYW0gaGFzIHJlYWQsIGluY2x1ZGluZwor CSAqIHRoZSBvbmUgY3VycmVudGx5IGluIHByb2dyZXNzLgorCSAqLworCXN0cnVjdCBBcmNoaXZl ZFdBTF9oYXNoICphcmNoaXZlX3dhbF9odGFiOworCisJLyoKKwkgKiBBbHRob3VnaCB0aGVzZSB2 YWx1ZXMgY2FuIGJlIGVhc2lseSBkZXJpdmVkIGZyb20gc3RhcnRwdHIgYW5kIGVuZHB0ciwKKwkg KiBkb2luZyBzbyByZXBlYXRlZGx5IGZvciBlYWNoIGFyY2hpdmVkIG1lbWJlciB3b3VsZCBiZSBp bmVmZmljaWVudCwgYXMKKwkgKiBpdCB3b3VsZCBpbnZvbHZlIHJlY2FsY3VsYXRpbmcgYW5kIGZp bHRlcmluZyBvdXQgaXJyZWxldmFudCBXQUwKKwkgKiBzZWdtZW50cy4KKwkgKi8KKwlYTG9nU2Vn Tm8Jc3RhcnRfc2Vnbm87CisJWExvZ1NlZ05vCWVuZF9zZWdubzsKIH0gWExvZ0R1bXBQcml2YXRl OwogCitleHRlcm4gaW50CW9wZW5fZmlsZV9pbl9kaXJlY3RvcnkoY29uc3QgY2hhciAqZGlyZWN0 b3J5LCBjb25zdCBjaGFyICpmbmFtZSk7CisKK2V4dGVybiB2b2lkIGluaXRfYXJjaGl2ZV9yZWFk ZXIoWExvZ0R1bXBQcml2YXRlICpwcml2YXRlSW5mbywKKwkJCQkJCQkJY29uc3QgY2hhciAqd2Fs ZGlyLCBpbnQgKldhbFNlZ1N6LAorCQkJCQkJCQlwZ19jb21wcmVzc19hbGdvcml0aG0gY29tcHJl c3Npb24pOworZXh0ZXJuIHZvaWQgZnJlZV9hcmNoaXZlX3JlYWRlcihYTG9nRHVtcFByaXZhdGUg KnByaXZhdGVJbmZvKTsKK2V4dGVybiBpbnQJcmVhZF9hcmNoaXZlX3dhbF9wYWdlKFhMb2dEdW1w UHJpdmF0ZSAqcHJpdmF0ZUluZm8sCisJCQkJCQkJCSAgWExvZ1JlY1B0ciB0YXJnZXRQYWdlUHRy LAorCQkJCQkJCQkgIFNpemUgY291bnQsIGNoYXIgKnJlYWRCdWZmLAorCQkJCQkJCQkgIGludCBX YWxTZWdTeik7CitleHRlcm4gdm9pZCBmcmVlX2FyY2hpdmVfd2FsX2VudHJ5KGNvbnN0IGNoYXIg KmZuYW1lLAorCQkJCQkJCQkgICBYTG9nRHVtcFByaXZhdGUgKnByaXZhdGVJbmZvKTsKKwogI2Vu ZGlmCQkJCQkJCS8qIFBHX1dBTERVTVBfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ193YWxk dW1wL3QvMDAxX2Jhc2ljLnBsIGIvc3JjL2Jpbi9wZ193YWxkdW1wL3QvMDAxX2Jhc2ljLnBsCmlu ZGV4IDVkYjVkMjAxMzZmLi42OTYwYmQ0NmJhNCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ193YWxk dW1wL3QvMDAxX2Jhc2ljLnBsCisrKyBiL3NyYy9iaW4vcGdfd2FsZHVtcC90LzAwMV9iYXNpYy5w bApAQCAtMyw5ICszLDEzIEBACiAKIHVzZSBzdHJpY3Q7CiB1c2Ugd2FybmluZ3MgRkFUQUwgPT4g J2FsbCc7Cit1c2UgQ3dkOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9z dGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsKK3VzZSBMaXN0OjpVdGlsIHF3 KHNodWZmbGUpOworCitteSAkdGFyID0gJEVOVntUQVJ9OwogCiBwcm9ncmFtX2hlbHBfb2soJ3Bn X3dhbGR1bXAnKTsKIHByb2dyYW1fdmVyc2lvbl9vaygncGdfd2FsZHVtcCcpOwpAQCAtMTYyLDYg KzE2Niw0MiBAQCBDUkVBVEUgVEFCTEVTUEFDRSB0czEgTE9DQVRJT04gJyR0YmxzcGNfcGF0aCc7 CiBEUk9QIFRBQkxFU1BBQ0UgdHMxOwogfSk7CiAKKyMgVGVzdDogRGVjb2RlIGEgY29udGludWF0 aW9uIHJlY29yZCAoY29udHJlY29yZCkgdGhhdCBzcGFucyBtdWx0aXBsZSBXQUwKKyMgc2VnbWVu dHMuCisjCisjIE5vdyBjb25zdW1lIGFsbCByZW1haW5pbmcgcm9vbSBpbiB0aGUgY3VycmVudCBX QUwgc2VnbWVudCwgbGVhdmluZworIyBzcGFjZSBlbm91Z2ggb25seSBmb3IgdGhlIHN0YXJ0IG9m IGEgbGFyZ2lzaCByZWNvcmQuCiskbm9kZS0+c2FmZV9wc3FsKAorCSdwb3N0Z3JlcycsIHF7CitE TyAkJAorREVDTEFSRQorICAgIHdhbF9zZWdzaXplIGludCA6PSBzZXR0aW5nOjppbnQgRlJPTSBw Z19zZXR0aW5ncyBXSEVSRSBuYW1lID0gJ3dhbF9zZWdtZW50X3NpemUnOworICAgIHJlbWFpbiBp bnQ7CisgICAgaXRlcnMgIGludCA6PSAwOworQkVHSU4KKyAgICBMT09QCisgICAgICAgIElOU0VS VCBpbnRvIHQxKGIpCisgICAgICAgIHNlbGVjdCByZXBlYXQoZW5jb2RlKHNoYTI1NihnOjp0ZXh0 OjpieXRlYSksICdoZXgnKSwgKHJhbmRvbSgpICogMTUgKyAxKTo6aW50KQorICAgICAgICBmcm9t IGdlbmVyYXRlX3NlcmllcygxLCAxMCkgZzsKKworICAgICAgICByZW1haW4gOj0gd2FsX3NlZ3Np emUgLSAocGdfY3VycmVudF93YWxfaW5zZXJ0X2xzbigpIC0gJzAvMCcpICUgd2FsX3NlZ3NpemU7 CisgICAgICAgIElGIHJlbWFpbiA8IDIgKiBzZXR0aW5nOjppbnQgZnJvbSBwZ19zZXR0aW5ncyB3 aGVyZSBuYW1lID0gJ2Jsb2NrX3NpemUnIFRIRU4KKyAgICAgICAgICAgIFJBSVNFIGxvZyAnZXhp dGluZyBhZnRlciAlIGl0ZXJhdGlvbnMsICUgYnl0ZXMgdG8gZW5kIG9mIFdBTCBzZWdtZW50Jywg aXRlcnMsIHJlbWFpbjsKKyAgICAgICAgICAgIEVYSVQ7CisgICAgICAgIEVORCBJRjsKKyAgICAg ICAgaXRlcnMgOj0gaXRlcnMgKyAxOworICAgIEVORCBMT09QOworRU5ECiskJDsKK30pOworCitt eSAkY29udHJlY29yZF9sc24gPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJJ1NFTEVD VCBwZ19jdXJyZW50X3dhbF9pbnNlcnRfbHNuKCknKTsKKyMgR2VuZXJhdGUgY29udHJlY29yZCBy ZWNvcmQKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwlxcXtTRUxFQ1QgcGdfbG9naWNh bF9lbWl0X21lc3NhZ2UodHJ1ZSwgJ3Rlc3QgMDI2JywgcmVwZWF0KCd4eXp4eicsIDEyMzQ1Nikp fQorKTsKKwogbXkgKCRlbmRfbHNuLCAkZW5kX3dhbGZpbGUpID0gc3BsaXQgL1x8LywKICAgJG5v ZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCXF7U0VMRUNUIHBnX2N1cnJlbnRfd2FsX2luc2Vy dF9sc24oKSwgcGdfd2FsZmlsZV9uYW1lKHBnX2N1cnJlbnRfd2FsX2luc2VydF9sc24oKSl9CkBA IC0xOTgsMjggKzIzOCw2IEBAIGNvbW1hbmRfbGlrZSgKIAldLAogCXFyLy4vLAogCSdydW5zIHdp dGggc3RhcnQgYW5kIGVuZCBzZWdtZW50IHNwZWNpZmllZCcpOwotY29tbWFuZF9mYWlsc19saWtl KAotCVsgJ3BnX3dhbGR1bXAnLCAnLS1wYXRoJyA9PiAkbm9kZS0+ZGF0YV9kaXIgXSwKLQlxci9l cnJvcjogbm8gc3RhcnQgV0FMIGxvY2F0aW9uIGdpdmVuLywKLQkncGF0aCBvcHRpb24gcmVxdWly ZXMgc3RhcnQgbG9jYXRpb24nKTsKLWNvbW1hbmRfbGlrZSgKLQlbCi0JCSdwZ193YWxkdW1wJywK LQkJJy0tcGF0aCcgPT4gJG5vZGUtPmRhdGFfZGlyLAotCQknLS1zdGFydCcgPT4gJHN0YXJ0X2xz biwKLQkJJy0tZW5kJyA9PiAkZW5kX2xzbiwKLQldLAotCXFyLy4vLAotCSdydW5zIHdpdGggcGF0 aCBvcHRpb24gYW5kIHN0YXJ0IGFuZCBlbmQgbG9jYXRpb25zJyk7Ci1jb21tYW5kX2ZhaWxzX2xp a2UoCi0JWwotCQkncGdfd2FsZHVtcCcsCi0JCSctLXBhdGgnID0+ICRub2RlLT5kYXRhX2RpciwK LQkJJy0tc3RhcnQnID0+ICRzdGFydF9sc24sCi0JXSwKLQlxci9lcnJvcjogZXJyb3IgaW4gV0FM IHJlY29yZCBhdC8sCi0JJ2ZhbGxpbmcgb2ZmIHRoZSBlbmQgb2YgdGhlIFdBTCByZXN1bHRzIGlu IGFuIGVycm9yJyk7Ci0KIGNvbW1hbmRfbGlrZSgKIAlbCiAJCSdwZ193YWxkdW1wJywgJy0tcXVp ZXQnLApAQCAtMjI3LDIyICsyNDUsMTYgQEAgY29tbWFuZF9saWtlKAogCV0sCiAJcXIvXiQvLAog CSdubyBvdXRwdXQgd2l0aCAtLXF1aWV0IG9wdGlvbicpOwotY29tbWFuZF9mYWlsc19saWtlKAot CVsKLQkJJ3BnX3dhbGR1bXAnLCAnLS1xdWlldCcsCi0JCSctLXBhdGgnID0+ICRub2RlLT5kYXRh X2RpciwKLQkJJy0tc3RhcnQnID0+ICRzdGFydF9sc24KLQldLAotCXFyL2Vycm9yOiBlcnJvciBp biBXQUwgcmVjb3JkIGF0LywKLQknZXJyb3JzIGFyZSBzaG93biB3aXRoIC0tcXVpZXQnKTsKLQog CiAjIFRlc3QgZm9yOiBEaXNwbGF5IGEgbWVzc2FnZSB0aGF0IHdlJ3JlIHNraXBwaW5nIGRhdGEg aWYgYGZyb21gCiAjIHdhc24ndCBhIHBvaW50ZXIgdG8gdGhlIHN0YXJ0IG9mIGEgcmVjb3JkLgor c3ViIHRlc3RfcGdfd2FsZHVtcF9za2lwX2J5dGVzCiB7CisJbXkgKCRwYXRoLCAkc3RhcnRsc24s ICRlbmRsc24pID0gQF87CisKIAkjIENvbnN0cnVjdCBhIG5ldyBMU04gdGhhdCBpcyBvbmUgYnl0 ZSBwYXN0IHRoZSBvcmlnaW5hbAogCSMgc3RhcnRfbHNuLgotCW15ICgkcGFydDEsICRwYXJ0Mikg PSBzcGxpdCBxcnsvfSwgJHN0YXJ0X2xzbjsKKwlteSAoJHBhcnQxLCAkcGFydDIpID0gc3BsaXQg cXJ7L30sICRzdGFydGxzbjsKIAlteSAkbHNuMiA9IGhleCAkcGFydDI7CiAJJGxzbjIrKzsKIAlt eSAkbmV3X3N0YXJ0ID0gc3ByaW50ZigiJXMvJVgiLCAkcGFydDEsICRsc24yKTsKQEAgLTI1Miw3 ICsyNjQsOCBAQCBjb21tYW5kX2ZhaWxzX2xpa2UoCiAJbXkgJHJlc3VsdCA9IElQQzo6UnVuOjpy dW4gWwogCQkncGdfd2FsZHVtcCcsCiAJCSctLXN0YXJ0JyA9PiAkbmV3X3N0YXJ0LAotCQkkbm9k ZS0+ZGF0YV9kaXIgLiAnL3BnX3dhbC8nIC4gJHN0YXJ0X3dhbGZpbGUKKwkJJy0tZW5kJyA9PiAk ZW5kbHNuLAorCQknLS1wYXRoJyA9PiAkcGF0aCwKIAkgIF0sCiAJICAnPicgPT4gXCRzdGRvdXQs CiAJICAnMj4nID0+IFwkc3RkZXJyOwpAQCAtMjY2LDE1ICsyNzksMTUgQEAgY29tbWFuZF9mYWls c19saWtlKAogc3ViIHRlc3RfcGdfd2FsZHVtcAogewogCWxvY2FsICRUZXN0OjpCdWlsZGVyOjpM ZXZlbCA9ICRUZXN0OjpCdWlsZGVyOjpMZXZlbCArIDE7Ci0JbXkgQG9wdHMgPSBAXzsKKwlteSAo JHBhdGgsICRzdGFydGxzbiwgJGVuZGxzbiwgQG9wdHMpID0gQF87CiAKIAlteSAoJHN0ZG91dCwg JHN0ZGVycik7CiAKIAlteSAkcmVzdWx0ID0gSVBDOjpSdW46OnJ1biBbCiAJCSdwZ193YWxkdW1w JywKLQkJJy0tcGF0aCcgPT4gJG5vZGUtPmRhdGFfZGlyLAotCQknLS1zdGFydCcgPT4gJHN0YXJ0 X2xzbiwKLQkJJy0tZW5kJyA9PiAkZW5kX2xzbiwKKwkJJy0tc3RhcnQnID0+ICRzdGFydGxzbiwK KwkJJy0tZW5kJyA9PiAkZW5kbHNuLAorCQknLS1wYXRoJyA9PiAkcGF0aCwKIAkJQG9wdHMKIAkg IF0sCiAJICAnPicgPT4gXCRzdGRvdXQsCkBAIC0yODYsNDAgKzI5OSwxNDUgQEAgc3ViIHRlc3Rf cGdfd2FsZHVtcAogCXJldHVybiBAbGluZXM7CiB9CiAKLW15IEBsaW5lczsKKyMgQ3JlYXRlIGEg dGFyIGFyY2hpdmUsIHNvcnRpbmcgdGhlIGZpbGUgb3JkZXIKK3N1YiBnZW5lcmF0ZV9hcmNoaXZl Cit7CisJbXkgKCRhcmNoaXZlLCAkZGlyZWN0b3J5LCAkY29tcHJlc3Npb25fZmxhZ3MpID0gQF87 CiAKLUBsaW5lcyA9IHRlc3RfcGdfd2FsZHVtcDsKLWlzKGdyZXAoIS9ecm1ncjogXHcvLCBAbGlu ZXMpLCAwLCAnYWxsIG91dHB1dCBsaW5lcyBhcmUgcm1nciBsaW5lcycpOworCW15IEBmaWxlczsK KwlvcGVuZGlyIG15ICRkaCwgJGRpcmVjdG9yeSBvciBkaWUgIm9wZW5kaXI6ICQhIjsKKwl3aGls ZSAobXkgJGVudHJ5ID0gcmVhZGRpciAkZGgpIHsKKwkJIyBTa2lwICcuJyBhbmQgJy4uJworCQlu ZXh0IGlmICRlbnRyeSBlcSAnLicgfHwgJGVudHJ5IGVxICcuLic7CisJCXB1c2ggQGZpbGVzLCAk ZW50cnk7CisJfQorCWNsb3NlZGlyICRkaDsKIAotQGxpbmVzID0gdGVzdF9wZ193YWxkdW1wKCct LWxpbWl0JyA9PiA2KTsKLWlzKEBsaW5lcywgNiwgJ2xpbWl0IG9wdGlvbiBvYnNlcnZlZCcpOwor CUBmaWxlcyA9IHNodWZmbGUgQGZpbGVzOwogCi1AbGluZXMgPSB0ZXN0X3BnX3dhbGR1bXAoJy0t ZnVsbHBhZ2UnKTsKLWlzKGdyZXAoIS9ecm1ncjouKlxiRlBXXGIvLCBAbGluZXMpLCAwLCAnYWxs IG91dHB1dCBsaW5lcyBhcmUgRlBXJyk7CisJIyBtb3ZlIGludG8gdGhlIFdBTCBkaXJlY3Rvcnkg YmVmb3JlIGFyY2hpdmluZyBmaWxlcworCW15ICRjd2QgPSBnZXRjd2Q7CisJY2hkaXIoJGRpcmVj dG9yeSkgfHwgZGllICJjaGRpcjogJCEiOworCWNvbW1hbmRfb2soWyR0YXIsICRjb21wcmVzc2lv bl9mbGFncywgJGFyY2hpdmUsIEBmaWxlc10pOworCWNoZGlyKCRjd2QpIHx8IGRpZSAiY2hkaXI6 ICQhIjsKK30KIAotQGxpbmVzID0gdGVzdF9wZ193YWxkdW1wKCctLXN0YXRzJyk7Ci1saWtlKCRs aW5lc1swXSwgcXIvV0FMIHN0YXRpc3RpY3MvLCAic3RhdGlzdGljcyBvbiBzdGRvdXQiKTsKLWlz KGdyZXAoL15ybWdyOi8sIEBsaW5lcyksIDAsICdubyBybWdyIGxpbmVzIG91dHB1dCcpOworbXkg JHRtcF9kaXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGVtcGRpcl9zaG9ydCgpOwogCi1A bGluZXMgPSB0ZXN0X3BnX3dhbGR1bXAoJy0tc3RhdHM9cmVjb3JkJyk7Ci1saWtlKCRsaW5lc1sw XSwgcXIvV0FMIHN0YXRpc3RpY3MvLCAic3RhdGlzdGljcyBvbiBzdGRvdXQiKTsKLWlzKGdyZXAo L15ybWdyOi8sIEBsaW5lcyksIDAsICdubyBybWdyIGxpbmVzIG91dHB1dCcpOworbXkgQHNjZW5h cmlvcyA9ICgKKwl7CisJCSdwYXRoJyA9PiAkbm9kZS0+ZGF0YV9kaXIsCisJCSdpc19hcmNoaXZl JyA9PiAwLAorCQknZW5hYmxlZCcgPT4gMQorCX0sCisJeworCQkncGF0aCcgPT4gIiR0bXBfZGly L3BnX3dhbC50YXIiLAorCQknY29tcHJlc3Npb25fbWV0aG9kJyA9PiAnbm9uZScsCisJCSdjb21w cmVzc2lvbl9mbGFncycgPT4gJy1jZicsCisJCSdpc19hcmNoaXZlJyA9PiAxLAorCQknZW5hYmxl ZCcgPT4gMQorCX0sCisJeworCQkncGF0aCcgPT4gIiR0bXBfZGlyL3BnX3dhbC50YXIuZ3oiLAor CQknY29tcHJlc3Npb25fbWV0aG9kJyA9PiAnZ3ppcCcsCisJCSdjb21wcmVzc2lvbl9mbGFncycg PT4gJy1jemYnLAorCQknaXNfYXJjaGl2ZScgPT4gMSwKKwkJJ2VuYWJsZWQnID0+IGNoZWNrX3Bn X2NvbmZpZygiI2RlZmluZSBIQVZFX0xJQlogMSIpCisJfSk7CiAKLUBsaW5lcyA9IHRlc3RfcGdf d2FsZHVtcCgnLS1ybWdyJyA9PiAnQnRyZWUnKTsKLWlzKGdyZXAoIS9ecm1ncjogQnRyZWUvLCBA bGluZXMpLCAwLCAnb25seSBCdHJlZSBsaW5lcycpOworZm9yIG15ICRzY2VuYXJpbyAoQHNjZW5h cmlvcykKK3sKKwlteSAkcGF0aCA9ICRzY2VuYXJpby0+eydwYXRoJ307CiAKLUBsaW5lcyA9IHRl c3RfcGdfd2FsZHVtcCgnLS1mb3JrJyA9PiAnaW5pdCcpOwotaXMoZ3JlcCghL2ZvcmsgaW5pdC8s IEBsaW5lcyksIDAsICdvbmx5IGluaXQgZm9yayBsaW5lcycpOworCVNLSVA6CisJeworCQlza2lw ICJ0YXIgY29tbWFuZCBpcyBub3QgYXZhaWxhYmxlIiwgNTYKKwkJICBpZiAhZGVmaW5lZCAkdGFy ICYmICRzY2VuYXJpby0+eydpc19hcmNoaXZlJ307CisJCXNraXAgIiRzY2VuYXJpby0+eydjb21w cmVzc2lvbl9tZXRob2QnfSBjb21wcmVzc2lvbiBub3Qgc3VwcG9ydGVkIGJ5IHRoaXMgYnVpbGQi LCA1NgorCQkgIGlmICEkc2NlbmFyaW8tPnsnZW5hYmxlZCd9ICYmICRzY2VuYXJpby0+eydpc19h cmNoaXZlJ307CiAKLUBsaW5lcyA9IHRlc3RfcGdfd2FsZHVtcCgKLQknLS1yZWxhdGlvbicgPT4g IiRkZWZhdWx0X3RzX29pZC8kcG9zdGdyZXNfZGJfb2lkLyRyZWxfdDFfb2lkIik7Ci1pcyhncmVw KCEvcmVsICRkZWZhdWx0X3RzX29pZFwvJHBvc3RncmVzX2RiX29pZFwvJHJlbF90MV9vaWQvLCBA bGluZXMpLAotCTAsICdvbmx5IGxpbmVzIGZvciBzZWxlY3RlZCByZWxhdGlvbicpOworCQkgICMg Y3JlYXRlIHBnX3dhbCBhcmNoaXZlCisJCSAgaWYgKCRzY2VuYXJpby0+eydpc19hcmNoaXZlJ30p CisJCSAgeworCQkJICBnZW5lcmF0ZV9hcmNoaXZlKCRwYXRoLAorCQkJCSAgJG5vZGUtPmRhdGFf ZGlyIC4gJy9wZ193YWwnLAorCQkJCSAgJHNjZW5hcmlvLT57J2NvbXByZXNzaW9uX2ZsYWdzJ30p OworCQkgIH0KIAotQGxpbmVzID0gdGVzdF9wZ193YWxkdW1wKAotCSctLXJlbGF0aW9uJyA9PiAi JGRlZmF1bHRfdHNfb2lkLyRwb3N0Z3Jlc19kYl9vaWQvJHJlbF9pMWFfb2lkIiwKLQknLS1ibG9j aycgPT4gMSk7Ci1pcyhncmVwKCEvXGJibGsgMVxiLywgQGxpbmVzKSwgMCwgJ29ubHkgbGluZXMg Zm9yIHNlbGVjdGVkIGJsb2NrJyk7CisJCWNvbW1hbmRfZmFpbHNfbGlrZSgKKwkJCVsgJ3BnX3dh bGR1bXAnLCAnLS1wYXRoJyA9PiAkcGF0aCBdLAorCQkJcXIvZXJyb3I6IG5vIHN0YXJ0IFdBTCBs b2NhdGlvbiBnaXZlbi8sCisJCQkncGF0aCBvcHRpb24gcmVxdWlyZXMgc3RhcnQgbG9jYXRpb24n KTsKKwkJY29tbWFuZF9saWtlKAorCQkJWworCQkJCSdwZ193YWxkdW1wJywKKwkJCQknLS1wYXRo JyA9PiAkcGF0aCwKKwkJCQknLS1zdGFydCcgPT4gJHN0YXJ0X2xzbiwKKwkJCQknLS1lbmQnID0+ ICRlbmRfbHNuLAorCQkJXSwKKwkJCXFyLy4vLAorCQkJJ3J1bnMgd2l0aCBwYXRoIG9wdGlvbiBh bmQgc3RhcnQgYW5kIGVuZCBsb2NhdGlvbnMnKTsKKwkJY29tbWFuZF9mYWlsc19saWtlKAorCQkJ WworCQkJCSdwZ193YWxkdW1wJywKKwkJCQknLS1wYXRoJyA9PiAkcGF0aCwKKwkJCQknLS1zdGFy dCcgPT4gJHN0YXJ0X2xzbiwKKwkJCV0sCisJCQlxci9lcnJvcjogZXJyb3IgaW4gV0FMIHJlY29y ZCBhdC8sCisJCQknZmFsbGluZyBvZmYgdGhlIGVuZCBvZiB0aGUgV0FMIHJlc3VsdHMgaW4gYW4g ZXJyb3InKTsKIAorCQljb21tYW5kX2ZhaWxzX2xpa2UoCisJCQlbCisJCQkJJ3BnX3dhbGR1bXAn LCAnLS1xdWlldCcsCisJCQkJJy0tcGF0aCcgPT4gJHBhdGgsCisJCQkJJy0tc3RhcnQnID0+ICRz dGFydF9sc24KKwkJCV0sCisJCQlxci9lcnJvcjogZXJyb3IgaW4gV0FMIHJlY29yZCBhdC8sCisJ CQknZXJyb3JzIGFyZSBzaG93biB3aXRoIC0tcXVpZXQnKTsKKworCQl0ZXN0X3BnX3dhbGR1bXBf c2tpcF9ieXRlcygkcGF0aCwgJHN0YXJ0X2xzbiwgJGVuZF9sc24pOworCisJCW15IEBsaW5lcyA9 IHRlc3RfcGdfd2FsZHVtcCgkcGF0aCwgJHN0YXJ0X2xzbiwgJGVuZF9sc24pOworCQlpcyhncmVw KCEvXnJtZ3I6IFx3LywgQGxpbmVzKSwgMCwgJ2FsbCBvdXRwdXQgbGluZXMgYXJlIHJtZ3IgbGlu ZXMnKTsKKworCQlAbGluZXMgPSB0ZXN0X3BnX3dhbGR1bXAoJHBhdGgsICRjb250cmVjb3JkX2xz biwgJGVuZF9sc24pOworCQlpcyhncmVwKCEvXnJtZ3I6IFx3LywgQGxpbmVzKSwgMCwgJ2FsbCBv dXRwdXQgbGluZXMgYXJlIHJtZ3IgbGluZXMnKTsKKworCQl0ZXN0X3BnX3dhbGR1bXBfc2tpcF9i eXRlcygkcGF0aCwgJGNvbnRyZWNvcmRfbHNuLCAkZW5kX2xzbik7CisKKwkJQGxpbmVzID0gdGVz dF9wZ193YWxkdW1wKCRwYXRoLCAkc3RhcnRfbHNuLCAkZW5kX2xzbiwgJy0tbGltaXQnID0+IDYp OworCQlpcyhAbGluZXMsIDYsICdsaW1pdCBvcHRpb24gb2JzZXJ2ZWQnKTsKKworCQlAbGluZXMg PSB0ZXN0X3BnX3dhbGR1bXAoJHBhdGgsICRzdGFydF9sc24sICRlbmRfbHNuLCAnLS1mdWxscGFn ZScpOworCQlpcyhncmVwKCEvXnJtZ3I6LipcYkZQV1xiLywgQGxpbmVzKSwgMCwgJ2FsbCBvdXRw dXQgbGluZXMgYXJlIEZQVycpOworCisJCUBsaW5lcyA9IHRlc3RfcGdfd2FsZHVtcCgkcGF0aCwg JHN0YXJ0X2xzbiwgJGVuZF9sc24sICctLXN0YXRzJyk7CisJCWxpa2UoJGxpbmVzWzBdLCBxci9X QUwgc3RhdGlzdGljcy8sICJzdGF0aXN0aWNzIG9uIHN0ZG91dCIpOworCQlpcyhncmVwKC9ecm1n cjovLCBAbGluZXMpLCAwLCAnbm8gcm1nciBsaW5lcyBvdXRwdXQnKTsKKworCQlAbGluZXMgPSB0 ZXN0X3BnX3dhbGR1bXAoJHBhdGgsICRzdGFydF9sc24sICRlbmRfbHNuLCAnLS1zdGF0cz1yZWNv cmQnKTsKKwkJbGlrZSgkbGluZXNbMF0sIHFyL1dBTCBzdGF0aXN0aWNzLywgInN0YXRpc3RpY3Mg b24gc3Rkb3V0Iik7CisJCWlzKGdyZXAoL15ybWdyOi8sIEBsaW5lcyksIDAsICdubyBybWdyIGxp bmVzIG91dHB1dCcpOworCisJCUBsaW5lcyA9IHRlc3RfcGdfd2FsZHVtcCgkcGF0aCwgJHN0YXJ0 X2xzbiwgJGVuZF9sc24sICctLXJtZ3InID0+ICdCdHJlZScpOworCQlpcyhncmVwKCEvXnJtZ3I6 IEJ0cmVlLywgQGxpbmVzKSwgMCwgJ29ubHkgQnRyZWUgbGluZXMnKTsKKworCQlAbGluZXMgPSB0 ZXN0X3BnX3dhbGR1bXAoJHBhdGgsICRzdGFydF9sc24sICRlbmRfbHNuLCAnLS1mb3JrJyA9PiAn aW5pdCcpOworCQlpcyhncmVwKCEvZm9yayBpbml0LywgQGxpbmVzKSwgMCwgJ29ubHkgaW5pdCBm b3JrIGxpbmVzJyk7CisKKwkJQGxpbmVzID0gdGVzdF9wZ193YWxkdW1wKCRwYXRoLCAkc3RhcnRf bHNuLCAkZW5kX2xzbiwKKwkJCSctLXJlbGF0aW9uJyA9PiAiJGRlZmF1bHRfdHNfb2lkLyRwb3N0 Z3Jlc19kYl9vaWQvJHJlbF90MV9vaWQiKTsKKwkJaXMoZ3JlcCghL3JlbCAkZGVmYXVsdF90c19v aWRcLyRwb3N0Z3Jlc19kYl9vaWRcLyRyZWxfdDFfb2lkLywgQGxpbmVzKSwKKwkJCTAsICdvbmx5 IGxpbmVzIGZvciBzZWxlY3RlZCByZWxhdGlvbicpOworCisJCUBsaW5lcyA9IHRlc3RfcGdfd2Fs ZHVtcCgkcGF0aCwgJHN0YXJ0X2xzbiwgJGVuZF9sc24sCisJCQknLS1yZWxhdGlvbicgPT4gIiRk ZWZhdWx0X3RzX29pZC8kcG9zdGdyZXNfZGJfb2lkLyRyZWxfaTFhX29pZCIsCisJCQknLS1ibG9j aycgPT4gMSk7CisJCWlzKGdyZXAoIS9cYmJsayAxXGIvLCBAbGluZXMpLCAwLCAnb25seSBsaW5l cyBmb3Igc2VsZWN0ZWQgYmxvY2snKTsKKworCQkjIENsZWFudXAuCisJCXVubGluayAkcGF0aCBp ZiAkc2NlbmFyaW8tPnsnaXNfYXJjaGl2ZSd9OworCX0KK30KIAogZG9uZV90ZXN0aW5nKCk7CmRp ZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9w Z2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IDUyZjg2MDNhN2JlLi40OTYxYzMwMjRhZiAxMDA2 NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xz L3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTE0Nyw2ICsxNDcsOSBAQCBBcmNoaXZlT3B0cwog QXJjaGl2ZVNodXRkb3duQ0IKIEFyY2hpdmVTdGFydHVwQ0IKIEFyY2hpdmVTdHJlYW1TdGF0ZQor QXJjaGl2ZWRXQUxGaWxlCitBcmNoaXZlZFdBTF9oYXNoCitBcmNoaXZlZFdBTF9pdGVyYXRvcgog QXJjaGl2ZXJPdXRwdXQKIEFyY2hpdmVyU3RhZ2UKIEFycmF5QW5hbHl6ZUV4dHJhRGF0YQpAQCAt MzU0MCw2ICszNTQzLDcgQEAgYXN0cmVhbWVyX3JlY292ZXJ5X2luamVjdG9yCiBhc3RyZWFtZXJf dGFyX2FyY2hpdmVyCiBhc3RyZWFtZXJfdGFyX3BhcnNlcgogYXN0cmVhbWVyX3ZlcmlmeQorYXN0 cmVhbWVyX3dhbGR1bXAKIGFzdHJlYW1lcl96c3RkX2ZyYW1lCiBhdXRoX3Bhc3N3b3JkX2hvb2tf dHlwCiBhdXRvdmFjX3RhYmxlCi0tIAoyLjQ3LjEKCg== --0000000000004c4c80064d4df2a2 Content-Type: application/octet-stream; name="v19-0004-pg_verifybackup-Enable-WAL-parsing-for-tar-forma.patch" Content-Disposition: attachment; filename="v19-0004-pg_verifybackup-Enable-WAL-parsing-for-tar-forma.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmw5wpfd3 RnJvbSAzODJjMGM3MGQxMjMwOWYxZmM3MTAwMWM3NzA1YjQ2NjIxZDc0MzMyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbmRyZXcgRHVuc3RhbiA8YW5kcmV3QGR1bnNsYW5lLm5ldD4K RGF0ZTogV2VkLCAxMSBNYXIgMjAyNiAxMToyNjozNiAtMDQwMApTdWJqZWN0OiBbUEFUQ0ggdjE5 IDQvNF0gcGdfdmVyaWZ5YmFja3VwOiBFbmFibGUgV0FMIHBhcnNpbmcgZm9yIHRhci1mb3JtYXQK IGJhY2t1cHMKCk5vdyB0aGF0IHBnX3dhbGR1bXAgc3VwcG9ydHMgcmVhZGluZyBXQUwgZnJvbSB0 YXIgYXJjaGl2ZXMsIHJlbW92ZSB0aGUKcmVzdHJpY3Rpb24gdGhhdCBmb3JjZWQgLS1uby1wYXJz ZS13YWwgZm9yIHRhci1mb3JtYXQgYmFja3Vwcy4KCnBnX3ZlcmlmeWJhY2t1cCBub3cgYXV0b21h dGljYWxseSBsb2NhdGVzIHRoZSBXQUwgYXJjaGl2ZTogaXQgbG9va3MgZm9yCmEgc2VwYXJhdGUg cGdfd2FsLnRhciBmaXJzdCwgdGhlbiBmYWxscyBiYWNrIHRvIHRoZSBtYWluIGJhc2UudGFyLiAg QQpuZXcgLS13YWwtcGF0aCBvcHRpb24gKHJlcGxhY2luZyB0aGUgb2xkIC0td2FsLWRpcmVjdG9y eSwgd2hpY2ggaXMga2VwdAphcyBhIHNpbGVudCBhbGlhcykgYWNjZXB0cyBlaXRoZXIgYSBkaXJl Y3Rvcnkgb3IgYSB0YXIgYXJjaGl2ZSBwYXRoLgoKVGhlIGRlZmF1bHQgV0FMIGRpcmVjdG9yeSBw cmVwYXJhdGlvbiBpcyBkZWZlcnJlZCB1bnRpbCB0aGUgYmFja3VwCmZvcm1hdCBpcyBrbm93biwg c2luY2UgdGFyLWZvcm1hdCBiYWNrdXBzIHJlc29sdmUgdGhlIFdBTCBwYXRoCmRpZmZlcmVudGx5 IGZyb20gcGxhaW4tZm9ybWF0IG9uZXMuCgpBdXRob3I6IEFtdWwgU3VsIDxzdWxhbXVsQGdtYWls LmNvbT4KUmV2aWV3ZWQtYnk6IFJvYmVydCBIYWFzIDxyb2JlcnRtaGFhc0BnbWFpbC5jb20+ClJl dmlld2VkLWJ5OiBKYWt1YiBXYXJ0YWsgPGpha3ViLndhcnRha0BlbnRlcnByaXNlZGIuY29tPgpS ZXZpZXdlZC1ieTogQ2hhbyBMaSA8bGkuZXZhbi5jaGFvQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6 IEV1bGVyIFRhdmVpcmEgPGV1bGVyQGV1bGVydG8uY29tPgpSZXZpZXdlZC1ieTogQW5kcmV3IER1 bnN0YW4gPGFuZHJld0BkdW5zbGFuZS5uZXQ+CmRpc2N1c3Npb246IGh0dHBzOi8vcG9zdGdyLmVz L20vQ0FBSl9iOTRicWRXTjNoMkotUHp6elEyTnBid2N0NVpRSGdnbl9Rb1lHaEMycm4tPVdRQG1h aWwuZ21haWwuY29tCi0tLQogZG9jL3NyYy9zZ21sL3JlZi9wZ192ZXJpZnliYWNrdXAuc2dtbCAg ICAgICAgIHwgMTQgKystCiBzcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC9wZ192ZXJpZnliYWNrdXAu YyAgICAgfCA4OSArKysrKysrKysrKystLS0tLS0tCiBzcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC90 LzAwMl9hbGdvcml0aG0ucGwgICAgfCAgNCAtCiBzcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC90LzAw M19jb3JydXB0aW9uLnBsICAgfCAgNCArLQogc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvdC8wMDdf d2FsLnBsICAgICAgICAgIHwgMjAgKysrKy0KIHNyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3QvMDA4 X3VudGFyLnBsICAgICAgICB8ICA1ICstCiBzcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC90LzAxMF9j bGllbnRfdW50YXIucGwgfCAgNSArLQogNyBmaWxlcyBjaGFuZ2VkLCA4NSBpbnNlcnRpb25zKCsp LCA1NiBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3BnX3Zlcmlm eWJhY2t1cC5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9wZ192ZXJpZnliYWNrdXAuc2dtbAppbmRl eCA2MWMxMjk3NWU0YS4uMTY5NWNmZTkxYzggMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYv cGdfdmVyaWZ5YmFja3VwLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9wZ192ZXJpZnliYWNr dXAuc2dtbApAQCAtMzYsMTAgKzM2LDcgQEAgUG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCiAgICA8 bGl0ZXJhbD5iYWNrdXBfbWFuaWZlc3Q8L2xpdGVyYWw+IGdlbmVyYXRlZCBieSB0aGUgc2VydmVy IGF0IHRoZSB0aW1lCiAgICBvZiB0aGUgYmFja3VwLiBUaGUgYmFja3VwIG1heSBiZSBzdG9yZWQg ZWl0aGVyIGluIHRoZSAicGxhaW4iIG9yIHRoZSAidGFyIgogICAgZm9ybWF0OyB0aGlzIGluY2x1 ZGVzIHRhci1mb3JtYXQgYmFja3VwcyBjb21wcmVzc2VkIHdpdGggYW55IGFsZ29yaXRobQotICAg c3VwcG9ydGVkIGJ5IDxhcHBsaWNhdGlvbj5wZ19iYXNlYmFja3VwPC9hcHBsaWNhdGlvbj4uIEhv d2V2ZXIsIGF0IHByZXNlbnQsCi0gICA8bGl0ZXJhbD5XQUw8L2xpdGVyYWw+IHZlcmlmaWNhdGlv biBpcyBzdXBwb3J0ZWQgb25seSBmb3IgcGxhaW4tZm9ybWF0Ci0gICBiYWNrdXBzLiBUaGVyZWZv cmUsIGlmIHRoZSBiYWNrdXAgaXMgc3RvcmVkIGluIHRhci1mb3JtYXQsIHRoZQotICAgPGxpdGVy YWw+LW4sIC0tbm8tcGFyc2Utd2FsPC9saXRlcmFsPiBvcHRpb24gc2hvdWxkIGJlIHVzZWQuCisg ICBzdXBwb3J0ZWQgYnkgPGFwcGxpY2F0aW9uPnBnX2Jhc2ViYWNrdXA8L2FwcGxpY2F0aW9uPi4K ICAgPC9wYXJhPgogCiAgIDxwYXJhPgpAQCAtMjYxLDEyICsyNTgsMTMgQEAgUG9zdGdyZVNRTCBk b2N1bWVudGF0aW9uCiAKICAgICAgPHZhcmxpc3RlbnRyeT4KICAgICAgIDx0ZXJtPjxvcHRpb24+ LXcgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnBhdGg8L3JlcGxhY2VhYmxlPjwvb3B0 aW9uPjwvdGVybT4KLSAgICAgIDx0ZXJtPjxvcHRpb24+LS13YWwtZGlyZWN0b3J5PTxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXRoPC9yZXBsYWNlYWJsZT48L29wdGlvbj48L3Rlcm0+ CisgICAgICA8dGVybT48b3B0aW9uPi0td2FsLXBhdGg9PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJh bWV0ZXIiPnBhdGg8L3JlcGxhY2VhYmxlPjwvb3B0aW9uPjwvdGVybT4KICAgICAgIDxsaXN0aXRl bT4KICAgICAgICA8cGFyYT4KLSAgICAgICAgVHJ5IHRvIHBhcnNlIFdBTCBmaWxlcyBzdG9yZWQg aW4gdGhlIHNwZWNpZmllZCBkaXJlY3RvcnksIHJhdGhlciB0aGFuCi0gICAgICAgIGluIDxsaXRl cmFsPnBnX3dhbDwvbGl0ZXJhbD4uIFRoaXMgbWF5IGJlIHVzZWZ1bCBpZiB0aGUgYmFja3VwIGlz Ci0gICAgICAgIHN0b3JlZCBpbiBhIHNlcGFyYXRlIGxvY2F0aW9uIGZyb20gdGhlIFdBTCBhcmNo aXZlLgorICAgICAgICBUcnkgdG8gcGFyc2UgV0FMIGZpbGVzIHN0b3JlZCBpbiB0aGUgc3BlY2lm aWVkIGRpcmVjdG9yeSBvciB0YXIKKyAgICAgICAgYXJjaGl2ZSwgcmF0aGVyIHRoYW4gaW4gPGxp dGVyYWw+cGdfd2FsPC9saXRlcmFsPi4gVGhpcyBtYXkgYmUKKyAgICAgICAgdXNlZnVsIGlmIHRo ZSBiYWNrdXAgaXMgc3RvcmVkIGluIGEgc2VwYXJhdGUgbG9jYXRpb24gZnJvbSB0aGUgV0FMCisg ICAgICAgIGFyY2hpdmUuCiAgICAgICAgPC9wYXJhPgogICAgICAgPC9saXN0aXRlbT4KICAgICAg PC92YXJsaXN0ZW50cnk+CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC9wZ192 ZXJpZnliYWNrdXAuYyBiL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3BnX3ZlcmlmeWJhY2t1cC5j CmluZGV4IDMxZjYwNmM0NWIxLi5kYjc5ZGQzOTEwMyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ192 ZXJpZnliYWNrdXAvcGdfdmVyaWZ5YmFja3VwLmMKKysrIGIvc3JjL2Jpbi9wZ192ZXJpZnliYWNr dXAvcGdfdmVyaWZ5YmFja3VwLmMKQEAgLTc0LDcgKzc0LDkgQEAgcGdfbm9yZXR1cm4gc3RhdGlj IHZvaWQgcmVwb3J0X21hbmlmZXN0X2Vycm9yKEpzb25NYW5pZmVzdFBhcnNlQ29udGV4dCAqY29u dGV4dCwKIAkJCQkJCQkJCQkJICBjb25zdCBjaGFyICpmbXQsLi4uKQogCQkJcGdfYXR0cmlidXRl X3ByaW50ZigyLCAzKTsKIAotc3RhdGljIHZvaWQgdmVyaWZ5X3Rhcl9iYWNrdXAodmVyaWZpZXJf Y29udGV4dCAqY29udGV4dCwgRElSICpkaXIpOworc3RhdGljIHZvaWQgdmVyaWZ5X3Rhcl9iYWNr dXAodmVyaWZpZXJfY29udGV4dCAqY29udGV4dCwgRElSICpkaXIsCisJCQkJCQkJICBjaGFyICoq YmFzZV9hcmNoaXZlX3BhdGgsCisJCQkJCQkJICBjaGFyICoqd2FsX2FyY2hpdmVfcGF0aCk7CiBz dGF0aWMgdm9pZCB2ZXJpZnlfcGxhaW5fYmFja3VwX2RpcmVjdG9yeSh2ZXJpZmllcl9jb250ZXh0 ICpjb250ZXh0LAogCQkJCQkJCQkJCSAgY2hhciAqcmVscGF0aCwgY2hhciAqZnVsbHBhdGgsCiAJ CQkJCQkJCQkJICBESVIgKmRpcik7CkBAIC04Myw3ICs4NSw5IEBAIHN0YXRpYyB2b2lkIHZlcmlm eV9wbGFpbl9iYWNrdXBfZmlsZSh2ZXJpZmllcl9jb250ZXh0ICpjb250ZXh0LCBjaGFyICpyZWxw YXRoLAogc3RhdGljIHZvaWQgdmVyaWZ5X2NvbnRyb2xfZmlsZShjb25zdCBjaGFyICpjb250cm9s cGF0aCwKIAkJCQkJCQkJdWludDY0IG1hbmlmZXN0X3N5c3RlbV9pZGVudGlmaWVyKTsKIHN0YXRp YyB2b2lkIHByZWNoZWNrX3Rhcl9iYWNrdXBfZmlsZSh2ZXJpZmllcl9jb250ZXh0ICpjb250ZXh0 LCBjaGFyICpyZWxwYXRoLAotCQkJCQkJCQkJIGNoYXIgKmZ1bGxwYXRoLCBTaW1wbGVQdHJMaXN0 ICp0YXJmaWxlcyk7CisJCQkJCQkJCQkgY2hhciAqZnVsbHBhdGgsIFNpbXBsZVB0ckxpc3QgKnRh cmZpbGVzLAorCQkJCQkJCQkJIGNoYXIgKipiYXNlX2FyY2hpdmVfcGF0aCwKKwkJCQkJCQkJCSBj aGFyICoqd2FsX2FyY2hpdmVfcGF0aCk7CiBzdGF0aWMgdm9pZCB2ZXJpZnlfdGFyX2ZpbGUodmVy aWZpZXJfY29udGV4dCAqY29udGV4dCwgY2hhciAqcmVscGF0aCwKIAkJCQkJCQljaGFyICpmdWxs cGF0aCwgYXN0cmVhbWVyICpzdHJlYW1lcik7CiBzdGF0aWMgdm9pZCByZXBvcnRfZXh0cmFfYmFj a3VwX2ZpbGVzKHZlcmlmaWVyX2NvbnRleHQgKmNvbnRleHQpOwpAQCAtOTMsNyArOTcsNyBAQCBz dGF0aWMgdm9pZCB2ZXJpZnlfZmlsZV9jaGVja3N1bSh2ZXJpZmllcl9jb250ZXh0ICpjb250ZXh0 LAogCQkJCQkJCQkgdWludDggKmJ1ZmZlcik7CiBzdGF0aWMgdm9pZCBwYXJzZV9yZXF1aXJlZF93 YWwodmVyaWZpZXJfY29udGV4dCAqY29udGV4dCwKIAkJCQkJCQkgICBjaGFyICpwZ193YWxkdW1w X3BhdGgsCi0JCQkJCQkJICAgY2hhciAqd2FsX2RpcmVjdG9yeSk7CisJCQkJCQkJICAgY2hhciAq d2FsX3BhdGgpOwogc3RhdGljIGFzdHJlYW1lciAqY3JlYXRlX2FyY2hpdmVfdmVyaWZpZXIodmVy aWZpZXJfY29udGV4dCAqY29udGV4dCwKIAkJCQkJCQkJCQkgIGNoYXIgKmFyY2hpdmVfbmFtZSwK IAkJCQkJCQkJCQkgIE9pZCB0YmxzcGNfb2lkLApAQCAtMTI2LDcgKzEzMCw4IEBAIG1haW4oaW50 IGFyZ2MsIGNoYXIgKiphcmd2KQogCQl7InByb2dyZXNzIiwgbm9fYXJndW1lbnQsIE5VTEwsICdQ J30sCiAJCXsicXVpZXQiLCBub19hcmd1bWVudCwgTlVMTCwgJ3EnfSwKIAkJeyJza2lwLWNoZWNr c3VtcyIsIG5vX2FyZ3VtZW50LCBOVUxMLCAncyd9LAotCQl7IndhbC1kaXJlY3RvcnkiLCByZXF1 aXJlZF9hcmd1bWVudCwgTlVMTCwgJ3cnfSwKKwkJeyJ3YWwtcGF0aCIsIHJlcXVpcmVkX2FyZ3Vt ZW50LCBOVUxMLCAndyd9LAorCQl7IndhbC1kaXJlY3RvcnkiLCByZXF1aXJlZF9hcmd1bWVudCwg TlVMTCwgJ3cnfSwJLyogZGVwcmVjYXRlZCAqLwogCQl7TlVMTCwgMCwgTlVMTCwgMH0KIAl9Owog CkBAIC0xMzUsNyArMTQwLDkgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJY2hhcgkg ICAqbWFuaWZlc3RfcGF0aCA9IE5VTEw7CiAJYm9vbAkJbm9fcGFyc2Vfd2FsID0gZmFsc2U7CiAJ Ym9vbAkJcXVpZXQgPSBmYWxzZTsKLQljaGFyCSAgICp3YWxfZGlyZWN0b3J5ID0gTlVMTDsKKwlj aGFyCSAgICp3YWxfcGF0aCA9IE5VTEw7CisJY2hhcgkgICAqYmFzZV9hcmNoaXZlX3BhdGggPSBO VUxMOworCWNoYXIJICAgKndhbF9hcmNoaXZlX3BhdGggPSBOVUxMOwogCWNoYXIJICAgKnBnX3dh bGR1bXBfcGF0aCA9IE5VTEw7CiAJRElSCQkgICAqZGlyOwogCkBAIC0yMjEsOCArMjI4LDggQEAg bWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCQkJY29udGV4dC5za2lwX2NoZWNrc3VtcyA9 IHRydWU7CiAJCQkJYnJlYWs7CiAJCQljYXNlICd3JzoKLQkJCQl3YWxfZGlyZWN0b3J5ID0gcHN0 cmR1cChvcHRhcmcpOwotCQkJCWNhbm9uaWNhbGl6ZV9wYXRoKHdhbF9kaXJlY3RvcnkpOworCQkJ CXdhbF9wYXRoID0gcHN0cmR1cChvcHRhcmcpOworCQkJCWNhbm9uaWNhbGl6ZV9wYXRoKHdhbF9w YXRoKTsKIAkJCQlicmVhazsKIAkJCWRlZmF1bHQ6CiAJCQkJLyogZ2V0b3B0X2xvbmcgYWxyZWFk eSBlbWl0dGVkIGEgY29tcGxhaW50ICovCkBAIC0yODUsMTAgKzI5Miw2IEBAIG1haW4oaW50IGFy Z2MsIGNoYXIgKiphcmd2KQogCQltYW5pZmVzdF9wYXRoID0gcHNwcmludGYoIiVzL2JhY2t1cF9t YW5pZmVzdCIsCiAJCQkJCQkJCSBjb250ZXh0LmJhY2t1cF9kaXJlY3RvcnkpOwogCi0JLyogQnkg ZGVmYXVsdCwgbG9vayBmb3IgdGhlIFdBTCBpbiB0aGUgYmFja3VwIGRpcmVjdG9yeSwgdG9vLiAq LwotCWlmICh3YWxfZGlyZWN0b3J5ID09IE5VTEwpCi0JCXdhbF9kaXJlY3RvcnkgPSBwc3ByaW50 ZigiJXMvcGdfd2FsIiwgY29udGV4dC5iYWNrdXBfZGlyZWN0b3J5KTsKLQogCS8qCiAJICogVHJ5 IHRvIHJlYWQgdGhlIG1hbmlmZXN0LiBXZSB0cmVhdCBhbnkgZXJyb3JzIGVuY291bnRlcmVkIHdo aWxlIHBhcnNpbmcKIAkgKiB0aGUgbWFuaWZlc3QgYXMgZmF0YWw7IHRoZXJlIGRvZXNuJ3Qgc2Vl bSB0byBiZSBtdWNoIHBvaW50IGluIHRyeWluZyB0bwpAQCAtMzMxLDE3ICszMzQsNiBAQCBtYWlu KGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJcGZyZWUocGF0aCk7CiAJfQogCi0JLyoKLQkgKiBY WFg6IEluIHRoZSBmdXR1cmUsIHdlIHNob3VsZCBjb25zaWRlciBlbmhhbmNpbmcgcGdfd2FsZHVt cCB0byByZWFkIFdBTAotCSAqIGZpbGVzIGZyb20gYW4gYXJjaGl2ZS4KLQkgKi8KLQlpZiAoIW5v X3BhcnNlX3dhbCAmJiBjb250ZXh0LmZvcm1hdCA9PSAndCcpCi0JewotCQlwZ19sb2dfZXJyb3Io InBnX3dhbGR1bXAgY2Fubm90IHJlYWQgdGFyIGZpbGVzIik7Ci0JCXBnX2xvZ19lcnJvcl9oaW50 KCJZb3UgbXVzdCB1c2UgLW4vLS1uby1wYXJzZS13YWwgd2hlbiB2ZXJpZnlpbmcgYSB0YXItZm9y bWF0IGJhY2t1cC4iKTsKLQkJZXhpdCgxKTsKLQl9Ci0KIAkvKgogCSAqIFBlcmZvcm0gdGhlIGFw cHJvcHJpYXRlIHR5cGUgb2YgdmVyaWZpY2F0aW9uIGFwcHJvcHJpYXRlIGJhc2VkIG9uIHRoZQog CSAqIGJhY2t1cCBmb3JtYXQuIFRoaXMgd2lsbCBjbG9zZSAnZGlyJy4KQEAgLTM1MCw3ICszNDIs NyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJdmVyaWZ5X3BsYWluX2JhY2t1cF9k aXJlY3RvcnkoJmNvbnRleHQsIE5VTEwsIGNvbnRleHQuYmFja3VwX2RpcmVjdG9yeSwKIAkJCQkJ CQkJCSAgZGlyKTsKIAllbHNlCi0JCXZlcmlmeV90YXJfYmFja3VwKCZjb250ZXh0LCBkaXIpOwor CQl2ZXJpZnlfdGFyX2JhY2t1cCgmY29udGV4dCwgZGlyLCAmYmFzZV9hcmNoaXZlX3BhdGgsICZ3 YWxfYXJjaGl2ZV9wYXRoKTsKIAogCS8qCiAJICogVGhlICJtYXRjaGVkIiBmbGFnIHNob3VsZCBu b3cgYmUgc2V0IG9uIGV2ZXJ5IGVudHJ5IGluIHRoZSBoYXNoIHRhYmxlLgpAQCAtMzY4LDEyICsz NjAsMzUgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJaWYgKGNvbnRleHQuZm9ybWF0 ID09ICdwJyAmJiAhY29udGV4dC5za2lwX2NoZWNrc3VtcykKIAkJdmVyaWZ5X2JhY2t1cF9jaGVj a3N1bXMoJmNvbnRleHQpOwogCisJLyoKKwkgKiBCeSBkZWZhdWx0LCBXQUwgZmlsZXMgYXJlIGV4 cGVjdGVkIHRvIGJlIGZvdW5kIGluIHRoZSBiYWNrdXAgZGlyZWN0b3J5CisJICogZm9yIHBsYWlu LWZvcm1hdCBiYWNrdXBzLiBJbiB0aGUgY2FzZSBvZiB0YXItZm9ybWF0IGJhY2t1cHMsIGlmIGEK KwkgKiBzZXBhcmF0ZSBXQUwgYXJjaGl2ZSBpcyBub3QgZm91bmQsIHRoZSBXQUwgZmlsZXMgYXJl IG1vc3QgbGlrZWx5CisJICogaW5jbHVkZWQgd2l0aGluIHRoZSBtYWluIGRhdGEgZGlyZWN0b3J5 IGFyY2hpdmUuCisJICovCisJaWYgKHdhbF9wYXRoID09IE5VTEwpCisJeworCQlpZiAoY29udGV4 dC5mb3JtYXQgPT0gJ3AnKQorCQkJd2FsX3BhdGggPSBwc3ByaW50ZigiJXMvcGdfd2FsIiwgY29u dGV4dC5iYWNrdXBfZGlyZWN0b3J5KTsKKwkJZWxzZSBpZiAod2FsX2FyY2hpdmVfcGF0aCkKKwkJ CXdhbF9wYXRoID0gd2FsX2FyY2hpdmVfcGF0aDsKKwkJZWxzZSBpZiAoYmFzZV9hcmNoaXZlX3Bh dGgpCisJCQl3YWxfcGF0aCA9IGJhc2VfYXJjaGl2ZV9wYXRoOworCQllbHNlCisJCXsKKwkJCXBn X2xvZ19lcnJvcigiV0FMIGFyY2hpdmUgbm90IGZvdW5kIik7CisJCQlwZ19sb2dfZXJyb3JfaGlu dCgiU3BlY2lmeSB0aGUgY29ycmVjdCBwYXRoIHVzaW5nIHRoZSBvcHRpb24gLXcvLS13YWwtcGF0 aC4gICIKKwkJCQkJCQkgICJPciB5b3UgbXVzdCB1c2UgLW4vLS1uby1wYXJzZS13YWwgd2hlbiB2 ZXJpZnlpbmcgYSB0YXItZm9ybWF0IGJhY2t1cC4iKTsKKwkJCWV4aXQoMSk7CisJCX0KKwl9CisK IAkvKgogCSAqIFRyeSB0byBwYXJzZSB0aGUgcmVxdWlyZWQgcmFuZ2VzIG9mIFdBTCByZWNvcmRz LCB1bmxlc3Mgd2Ugd2VyZSB0b2xkCiAJICogbm90IHRvIGRvIHNvLgogCSAqLwogCWlmICghbm9f cGFyc2Vfd2FsKQotCQlwYXJzZV9yZXF1aXJlZF93YWwoJmNvbnRleHQsIHBnX3dhbGR1bXBfcGF0 aCwgd2FsX2RpcmVjdG9yeSk7CisJCXBhcnNlX3JlcXVpcmVkX3dhbCgmY29udGV4dCwgcGdfd2Fs ZHVtcF9wYXRoLCB3YWxfcGF0aCk7CiAKIAkvKgogCSAqIElmIGV2ZXJ5dGhpbmcgbG9va3MgT0ss IHRlbGwgdGhlIHVzZXIgdGhpcywgdW5sZXNzIHdlIHdlcmUgYXNrZWQgdG8KQEAgLTc4Nyw3ICs4 MDIsOCBAQCB2ZXJpZnlfY29udHJvbF9maWxlKGNvbnN0IGNoYXIgKmNvbnRyb2xwYXRoLCB1aW50 NjQgbWFuaWZlc3Rfc3lzdGVtX2lkZW50aWZpZXIpCiAgKiBjbG9zZSB3aGVuIHdlJ3JlIGRvbmUg d2l0aCBpdC4KICAqLwogc3RhdGljIHZvaWQKLXZlcmlmeV90YXJfYmFja3VwKHZlcmlmaWVyX2Nv bnRleHQgKmNvbnRleHQsIERJUiAqZGlyKQordmVyaWZ5X3Rhcl9iYWNrdXAodmVyaWZpZXJfY29u dGV4dCAqY29udGV4dCwgRElSICpkaXIsIGNoYXIgKipiYXNlX2FyY2hpdmVfcGF0aCwKKwkJCQkg IGNoYXIgKip3YWxfYXJjaGl2ZV9wYXRoKQogewogCXN0cnVjdCBkaXJlbnQgKmRpcmVudDsKIAlT aW1wbGVQdHJMaXN0IHRhcmZpbGVzID0ge05VTEwsIE5VTEx9OwpAQCAtODE2LDcgKzgzMiw4IEBA IHZlcmlmeV90YXJfYmFja3VwKHZlcmlmaWVyX2NvbnRleHQgKmNvbnRleHQsIERJUiAqZGlyKQog CQkJY2hhcgkgICAqZnVsbHBhdGg7CiAKIAkJCWZ1bGxwYXRoID0gcHNwcmludGYoIiVzLyVzIiwg Y29udGV4dC0+YmFja3VwX2RpcmVjdG9yeSwgZmlsZW5hbWUpOwotCQkJcHJlY2hlY2tfdGFyX2Jh Y2t1cF9maWxlKGNvbnRleHQsIGZpbGVuYW1lLCBmdWxscGF0aCwgJnRhcmZpbGVzKTsKKwkJCXBy ZWNoZWNrX3Rhcl9iYWNrdXBfZmlsZShjb250ZXh0LCBmaWxlbmFtZSwgZnVsbHBhdGgsICZ0YXJm aWxlcywKKwkJCQkJCQkJCSBiYXNlX2FyY2hpdmVfcGF0aCwgd2FsX2FyY2hpdmVfcGF0aCk7CiAJ CQlwZnJlZShmdWxscGF0aCk7CiAJCX0KIAl9CkBAIC04NzUsMTEgKzg5MiwxMyBAQCB2ZXJpZnlf dGFyX2JhY2t1cCh2ZXJpZmllcl9jb250ZXh0ICpjb250ZXh0LCBESVIgKmRpcikKICAqCiAgKiBU aGUgYXJndW1lbnRzIHRvIHRoaXMgZnVuY3Rpb24gYXJlIG1vc3RseSB0aGUgc2FtZSBhcyB0aGUK ICAqIHZlcmlmeV9wbGFpbl9iYWNrdXBfZmlsZS4gVGhlIGFkZGl0aW9uYWwgYXJndW1lbnQgb3V0 cHV0cyBhIGxpc3Qgb2YgdmFsaWQKLSAqIHRhciBmaWxlcy4KKyAqIHRhciBmaWxlcywgYWxvbmcg d2l0aCB0aGUgZnVsbCBwYXRocyB0byB0aGUgbWFpbiBhcmNoaXZlIGFuZCB0aGUgV0FMCisgKiBk aXJlY3RvcnkgYXJjaGl2ZS4KICAqLwogc3RhdGljIHZvaWQKIHByZWNoZWNrX3Rhcl9iYWNrdXBf ZmlsZSh2ZXJpZmllcl9jb250ZXh0ICpjb250ZXh0LCBjaGFyICpyZWxwYXRoLAotCQkJCQkJIGNo YXIgKmZ1bGxwYXRoLCBTaW1wbGVQdHJMaXN0ICp0YXJmaWxlcykKKwkJCQkJCSBjaGFyICpmdWxs cGF0aCwgU2ltcGxlUHRyTGlzdCAqdGFyZmlsZXMsCisJCQkJCQkgY2hhciAqKmJhc2VfYXJjaGl2 ZV9wYXRoLCBjaGFyICoqd2FsX2FyY2hpdmVfcGF0aCkKIHsKIAlzdHJ1Y3Qgc3RhdCBzYjsKIAlP aWQJCQl0YmxzcGNfb2lkID0gSW52YWxpZE9pZDsKQEAgLTkxOCw5ICs5MzcsMTcgQEAgcHJlY2hl Y2tfdGFyX2JhY2t1cF9maWxlKHZlcmlmaWVyX2NvbnRleHQgKmNvbnRleHQsIGNoYXIgKnJlbHBh dGgsCiAJICogZXh0ZW5zaW9uIHN1Y2ggYXMgLmd6LCAubHo0LCBvciAuenN0LgogCSAqLwogCWlm IChzdHJuY21wKCJiYXNlIiwgcmVscGF0aCwgNCkgPT0gMCkKKwl7CiAJCXN1ZmZpeCA9IHJlbHBh dGggKyA0OworCisJCSpiYXNlX2FyY2hpdmVfcGF0aCA9IHBzdHJkdXAoZnVsbHBhdGgpOworCX0K IAllbHNlIGlmIChzdHJuY21wKCJwZ193YWwiLCByZWxwYXRoLCA2KSA9PSAwKQorCXsKIAkJc3Vm Zml4ID0gcmVscGF0aCArIDY7CisKKwkJKndhbF9hcmNoaXZlX3BhdGggPSBwc3RyZHVwKGZ1bGxw YXRoKTsKKwl9CiAJZWxzZQogCXsKIAkJLyogRXhwZWN0ZWQgYSA8dGFibGVzcGFjZW9pZD4udGFy IGZpbGUgaGVyZS4gKi8KQEAgLTExODgsNyArMTIxNSw3IEBAIHZlcmlmeV9maWxlX2NoZWNrc3Vt KHZlcmlmaWVyX2NvbnRleHQgKmNvbnRleHQsIG1hbmlmZXN0X2ZpbGUgKm0sCiAgKi8KIHN0YXRp YyB2b2lkCiBwYXJzZV9yZXF1aXJlZF93YWwodmVyaWZpZXJfY29udGV4dCAqY29udGV4dCwgY2hh ciAqcGdfd2FsZHVtcF9wYXRoLAotCQkJCSAgIGNoYXIgKndhbF9kaXJlY3RvcnkpCisJCQkJICAg Y2hhciAqd2FsX3BhdGgpCiB7CiAJbWFuaWZlc3RfZGF0YSAqbWFuaWZlc3QgPSBjb250ZXh0LT5t YW5pZmVzdDsKIAltYW5pZmVzdF93YWxfcmFuZ2UgKnRoaXNfd2FsX3JhbmdlID0gbWFuaWZlc3Qt PmZpcnN0X3dhbF9yYW5nZTsKQEAgLTExOTgsNyArMTIyNSw3IEBAIHBhcnNlX3JlcXVpcmVkX3dh bCh2ZXJpZmllcl9jb250ZXh0ICpjb250ZXh0LCBjaGFyICpwZ193YWxkdW1wX3BhdGgsCiAJCWNo YXIJICAgKnBnX3dhbGR1bXBfY21kOwogCiAJCXBnX3dhbGR1bXBfY21kID0gcHNwcmludGYoIlwi JXNcIiAtLXF1aWV0IC0tcGF0aD1cIiVzXCIgLS10aW1lbGluZT0ldSAtLXN0YXJ0PSVYLyUwOFgg LS1lbmQ9JVgvJTA4WFxuIiwKLQkJCQkJCQkJICBwZ193YWxkdW1wX3BhdGgsIHdhbF9kaXJlY3Rv cnksIHRoaXNfd2FsX3JhbmdlLT50bGksCisJCQkJCQkJCSAgcGdfd2FsZHVtcF9wYXRoLCB3YWxf cGF0aCwgdGhpc193YWxfcmFuZ2UtPnRsaSwKIAkJCQkJCQkJICBMU05fRk9STUFUX0FSR1ModGhp c193YWxfcmFuZ2UtPnN0YXJ0X2xzbiksCiAJCQkJCQkJCSAgTFNOX0ZPUk1BVF9BUkdTKHRoaXNf d2FsX3JhbmdlLT5lbmRfbHNuKSk7CiAJCWZmbHVzaChOVUxMKTsKQEAgLTEzNjYsNyArMTM5Myw3 IEBAIHVzYWdlKHZvaWQpCiAJcHJpbnRmKF8oIiAgLVAsIC0tcHJvZ3Jlc3MgICAgICAgICAgICAg IHNob3cgcHJvZ3Jlc3MgaW5mb3JtYXRpb25cbiIpKTsKIAlwcmludGYoXygiICAtcSwgLS1xdWll dCAgICAgICAgICAgICAgICAgZG8gbm90IHByaW50IGFueSBvdXRwdXQsIGV4Y2VwdCBmb3IgZXJy b3JzXG4iKSk7CiAJcHJpbnRmKF8oIiAgLXMsIC0tc2tpcC1jaGVja3N1bXMgICAgICAgIHNraXAg Y2hlY2tzdW0gdmVyaWZpY2F0aW9uXG4iKSk7Ci0JcHJpbnRmKF8oIiAgLXcsIC0td2FsLWRpcmVj dG9yeT1QQVRIICAgIHVzZSBzcGVjaWZpZWQgcGF0aCBmb3IgV0FMIGZpbGVzXG4iKSk7CisJcHJp bnRmKF8oIiAgLXcsIC0td2FsLXBhdGg9UEFUSCAgICAgICAgIHVzZSBzcGVjaWZpZWQgcGF0aCBm b3IgV0FMIGZpbGVzXG4iKSk7CiAJcHJpbnRmKF8oIiAgLVYsIC0tdmVyc2lvbiAgICAgICAgICAg ICAgIG91dHB1dCB2ZXJzaW9uIGluZm9ybWF0aW9uLCB0aGVuIGV4aXRcbiIpKTsKIAlwcmludGYo XygiICAtPywgLS1oZWxwICAgICAgICAgICAgICAgICAgc2hvdyB0aGlzIGhlbHAsIHRoZW4gZXhp dFxuIikpOwogCXByaW50ZihfKCJcblJlcG9ydCBidWdzIHRvIDwlcz4uXG4iKSwgUEFDS0FHRV9C VUdSRVBPUlQpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvdC8wMDJfYWxn b3JpdGhtLnBsIGIvc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvdC8wMDJfYWxnb3JpdGhtLnBsCmlu ZGV4IDA1NTYxOTFlYzlkLi5lZGM1MTVkNTkwNCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ192ZXJp ZnliYWNrdXAvdC8wMDJfYWxnb3JpdGhtLnBsCisrKyBiL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3Vw L3QvMDAyX2FsZ29yaXRobS5wbApAQCAtMzAsMTAgKzMwLDYgQEAgc3ViIHRlc3RfY2hlY2tzdW1z CiAJewogCQkjIEFkZCBzd2l0Y2ggdG8gZ2V0IGEgdGFyLWZvcm1hdCBiYWNrdXAKIAkJcHVzaCBA YmFja3VwLCAoJy0tZm9ybWF0JyA9PiAndGFyJyk7Ci0KLQkJIyBBZGQgc3dpdGNoIHRvIHNraXAg V0FMIHZlcmlmaWNhdGlvbiwgd2hpY2ggaXMgbm90IHlldCBzdXBwb3J0ZWQgZm9yCi0JCSMgdGFy LWZvcm1hdCBiYWNrdXBzCi0JCXB1c2ggQHZlcmlmeSwgKCctLW5vLXBhcnNlLXdhbCcpOwogCX0K IAogCSMgQSBiYWNrdXAgd2l0aCBhIGJvZ3VzIGFsZ29yaXRobSBzaG91bGQgZmFpbC4KZGlmZiAt LWdpdCBhL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3QvMDAzX2NvcnJ1cHRpb24ucGwgYi9zcmMv YmluL3BnX3ZlcmlmeWJhY2t1cC90LzAwM19jb3JydXB0aW9uLnBsCmluZGV4IGIxZDY1YjhhYTBm Li44ODJkNzVkOWRjMiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvdC8wMDNf Y29ycnVwdGlvbi5wbAorKysgYi9zcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC90LzAwM19jb3JydXB0 aW9uLnBsCkBAIC0xOTMsMTAgKzE5Myw4IEBAIGZvciBteSAkc2NlbmFyaW8gKEBzY2VuYXJpbykK IAkJCWNvbW1hbmRfb2soWyAkdGFyLCAnLWNmJyA9PiAiJHRhcl9iYWNrdXBfcGF0aC9iYXNlLnRh ciIsICcuJyBdKTsKIAkJCWNoZGlyKCRjd2QpIHx8IGRpZSAiY2hkaXI6ICQhIjsKIAotCQkJIyBO b3cgY2hlY2sgdGhhdCB0aGUgYmFja3VwIG5vIGxvbmdlciB2ZXJpZmllcy4gV2UgbXVzdCB1c2Ug LW4KLQkJCSMgaGVyZSwgYmVjYXVzZSBwZ193YWxkdW1wIGNhbid0IHlldCByZWFkIFdBTCBmcm9t IGEgdGFyZmlsZS4KIAkJCWNvbW1hbmRfZmFpbHNfbGlrZSgKLQkJCQlbICdwZ192ZXJpZnliYWNr dXAnLCAnLS1uby1wYXJzZS13YWwnLCAkdGFyX2JhY2t1cF9wYXRoIF0sCisJCQkJWyAncGdfdmVy aWZ5YmFja3VwJywgJHRhcl9iYWNrdXBfcGF0aCBdLAogCQkJCSRzY2VuYXJpby0+eydmYWlsc19s aWtlJ30sCiAJCQkJImNvcnJ1cHQgYmFja3VwIGZhaWxzIHZlcmlmaWNhdGlvbjogJG5hbWUiKTsK IApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvdC8wMDdfd2FsLnBsIGIvc3Jj L2Jpbi9wZ192ZXJpZnliYWNrdXAvdC8wMDdfd2FsLnBsCmluZGV4IDc5MDg3YTFmNmJlLi4wZTAz NzdiZmFjYyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvdC8wMDdfd2FsLnBs CisrKyBiL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3QvMDA3X3dhbC5wbApAQCAtNDIsMTAgKzQy LDEwIEBAIGNvbW1hbmRfb2soWyAncGdfdmVyaWZ5YmFja3VwJywgJy0tbm8tcGFyc2Utd2FsJywg JGJhY2t1cF9wYXRoIF0sCiBjb21tYW5kX29rKAogCVsKIAkJJ3BnX3ZlcmlmeWJhY2t1cCcsCi0J CSctLXdhbC1kaXJlY3RvcnknID0+ICRyZWxvY2F0ZWRfcGdfd2FsLAorCQknLS13YWwtcGF0aCcg PT4gJHJlbG9jYXRlZF9wZ193YWwsCiAJCSRiYWNrdXBfcGF0aAogCV0sCi0JJy0td2FsLWRpcmVj dG9yeSBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IFdBTCBkaXJlY3RvcnknKTsKKwknLS13YWwtcGF0 aCBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IFdBTCBkaXJlY3RvcnknKTsKIAogIyBNb3ZlIGRpcmVj dG9yeSBiYWNrIHRvIG9yaWdpbmFsIGxvY2F0aW9uLgogcmVuYW1lKCRyZWxvY2F0ZWRfcGdfd2Fs LCAkb3JpZ2luYWxfcGdfd2FsKSB8fCBkaWUgInJlbmFtZSBwZ193YWwgYmFjazogJCEiOwpAQCAt OTAsNCArOTAsMjAgQEAgY29tbWFuZF9vaygKIAlbICdwZ192ZXJpZnliYWNrdXAnLCAkYmFja3Vw X3BhdGgyIF0sCiAJJ3ZhbGlkIGJhc2UgYmFja3VwIHdpdGggdGltZWxpbmUgPiAxJyk7CiAKKyMg VGVzdCBXQUwgdmVyaWZpY2F0aW9uIGZvciBhIHRhci1mb3JtYXQgYmFja3VwIHdpdGggYSBzZXBh cmF0ZSBwZ193YWwudGFyLAorIyBhcyBwcm9kdWNlZCBieSBwZ19iYXNlYmFja3VwIC0tZm9ybWF0 PXRhciAtLXdhbC1tZXRob2Q9c3RyZWFtLgorbXkgJGJhY2t1cF9wYXRoMyA9ICRwcmltYXJ5LT5i YWNrdXBfZGlyIC4gJy90ZXN0X3Rhcl93YWwnOworJHByaW1hcnktPmNvbW1hbmRfb2soCisJWwor CQkncGdfYmFzZWJhY2t1cCcsCisJCSctLXBnZGF0YScgPT4gJGJhY2t1cF9wYXRoMywKKwkJJy0t bm8tc3luYycsCisJCSctLWZvcm1hdCcgPT4gJ3RhcicsCisJCSctLWNoZWNrcG9pbnQnID0+ICdm YXN0JworCV0sCisJInRhciBiYWNrdXAgd2l0aCBzZXBhcmF0ZSBwZ193YWwudGFyIik7Citjb21t YW5kX29rKAorCVsgJ3BnX3ZlcmlmeWJhY2t1cCcsICRiYWNrdXBfcGF0aDMgXSwKKwknV0FMIHZl cmlmaWNhdGlvbiBzdWNjZWVkcyB3aXRoIHNlcGFyYXRlIHBnX3dhbC50YXInKTsKKwogZG9uZV90 ZXN0aW5nKCk7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC90LzAwOF91bnRh ci5wbCBiL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3QvMDA4X3VudGFyLnBsCmluZGV4IGFlNjdh ZTg1YTMxLi4xNjFjMDhjMTkwZCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAv dC8wMDhfdW50YXIucGwKKysrIGIvc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvdC8wMDhfdW50YXIu cGwKQEAgLTQ3LDcgKzQ3LDYgQEAgbXkgJHRzb2lkID0gJHByaW1hcnktPnNhZmVfcHNxbCgKIAkJ U0VMRUNUIG9pZCBGUk9NIHBnX3RhYmxlc3BhY2UgV0hFUkUgc3BjbmFtZSA9ICdyZWdyZXNzX3Rz MScpKTsKIAogbXkgJGJhY2t1cF9wYXRoID0gJHByaW1hcnktPmJhY2t1cF9kaXIgLiAnL3NlcnZl ci1iYWNrdXAnOwotbXkgJGV4dHJhY3RfcGF0aCA9ICRwcmltYXJ5LT5iYWNrdXBfZGlyIC4gJy9l eHRyYWN0ZWQtYmFja3VwJzsKIAogbXkgQHRlc3RfY29uZmlndXJhdGlvbiA9ICgKIAl7CkBAIC0x MjMsMTQgKzEyMiwxMiBAQCBmb3IgbXkgJHRjIChAdGVzdF9jb25maWd1cmF0aW9uKQogCQkjIFZl cmlmeSB0YXIgYmFja3VwLgogCQkkcHJpbWFyeS0+Y29tbWFuZF9vaygKIAkJCVsKLQkJCQkncGdf dmVyaWZ5YmFja3VwJywgJy0tbm8tcGFyc2Utd2FsJywKLQkJCQknLS1leGl0LW9uLWVycm9yJywg JGJhY2t1cF9wYXRoLAorCQkJCSdwZ192ZXJpZnliYWNrdXAnLCAnLS1leGl0LW9uLWVycm9yJywg JGJhY2t1cF9wYXRoLAogCQkJXSwKIAkJCSJ2ZXJpZnkgYmFja3VwLCBjb21wcmVzc2lvbiAkbWV0 aG9kIik7CiAKIAkJIyBDbGVhbnVwLgogCQlybXRyZWUoJGJhY2t1cF9wYXRoKTsKLQkJcm10cmVl KCRleHRyYWN0X3BhdGgpOwogCX0KIH0KIApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ192ZXJpZnli YWNrdXAvdC8wMTBfY2xpZW50X3VudGFyLnBsIGIvc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvdC8w MTBfY2xpZW50X3VudGFyLnBsCmluZGV4IDFhYzdiNWRiNzVhLi45NjcwZmJlNGZkYSAxMDA2NDQK LS0tIGEvc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvdC8wMTBfY2xpZW50X3VudGFyLnBsCisrKyBi L3NyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3QvMDEwX2NsaWVudF91bnRhci5wbApAQCAtMzIsNyAr MzIsNiBAQCBwcmludCAkamYgJGp1bmtfZGF0YTsKIGNsb3NlICRqZjsKIAogbXkgJGJhY2t1cF9w YXRoID0gJHByaW1hcnktPmJhY2t1cF9kaXIgLiAnL2NsaWVudC1iYWNrdXAnOwotbXkgJGV4dHJh Y3RfcGF0aCA9ICRwcmltYXJ5LT5iYWNrdXBfZGlyIC4gJy9leHRyYWN0ZWQtYmFja3VwJzsKIAog bXkgQHRlc3RfY29uZmlndXJhdGlvbiA9ICgKIAl7CkBAIC0xMzcsMTMgKzEzNiwxMSBAQCBmb3Ig bXkgJHRjIChAdGVzdF9jb25maWd1cmF0aW9uKQogCQkjIFZlcmlmeSB0YXIgYmFja3VwLgogCQkk cHJpbWFyeS0+Y29tbWFuZF9vaygKIAkJCVsKLQkJCQkncGdfdmVyaWZ5YmFja3VwJywgJy0tbm8t cGFyc2Utd2FsJywKLQkJCQknLS1leGl0LW9uLWVycm9yJywgJGJhY2t1cF9wYXRoLAorCQkJCSdw Z192ZXJpZnliYWNrdXAnLCAnLS1leGl0LW9uLWVycm9yJywgJGJhY2t1cF9wYXRoLAogCQkJXSwK IAkJCSJ2ZXJpZnkgYmFja3VwLCBjb21wcmVzc2lvbiAkbWV0aG9kIik7CiAKIAkJIyBDbGVhbnVw LgotCQlybXRyZWUoJGV4dHJhY3RfcGF0aCk7CiAJCXJtdHJlZSgkYmFja3VwX3BhdGgpOwogCX0K IH0KLS0gCjIuNDcuMQoK --0000000000004c4c80064d4df2a2--