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.94.2) (envelope-from ) id 1v1hIH-00BXJi-1k for pgsql-hackers@arkaria.postgresql.org; Thu, 25 Sep 2025 08:25:37 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1v1hIF-001Cif-OB for pgsql-hackers@arkaria.postgresql.org; Thu, 25 Sep 2025 08:25:35 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1v1hIF-001CiW-8o for pgsql-hackers@lists.postgresql.org; Thu, 25 Sep 2025 08:25:35 +0000 Received: from mail-ej1-x634.google.com ([2a00:1450:4864:20::634]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1v1hIB-002mF1-0i for pgsql-hackers@lists.postgresql.org; Thu, 25 Sep 2025 08:25:34 +0000 Received: by mail-ej1-x634.google.com with SMTP id a640c23a62f3a-b2fcfef5600so110668066b.3 for ; Thu, 25 Sep 2025 01:25:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1758788731; x=1759393531; 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=7tr9alcHrTmI5fbissX7EFSJqYL6N8VuJ1lWpELCh+0=; b=L/rImu6/eHALv4m7KJ0pZICNtUCzgJ/ErdDBm5brGY2Jj0utsfjCb46QHcAbDodnDc FUMdN0g9lCrsaP6FiTGuOOQq1j4c3TkHMl6gvoxU8HTi4u808tMQHg2sNNyCHMUPKQyY AswSGMhLi6nFX2ZRpCrNvN783NfJAhTddyZDgrHTc+8aF1Y2OMgZS/bO50/AVGyhoqrH Q2Ssu/37+8D3QyynYUrtEPgxT8pjEdFfWKpokhLtRDzaMDLmg2/B0YyNwLtJ2uu1Ndy6 gLh64gIqS15YI4FuoD89nxwdAjahh/VByFdjxqI15hkmfm/WrngxY22scrOwUYatU7sP T31Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1758788731; x=1759393531; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=7tr9alcHrTmI5fbissX7EFSJqYL6N8VuJ1lWpELCh+0=; b=YNqaE0eAzOWAH6eZjt4ioSW26Owlg9cKt4t2GIjFyDx9ykjkeY1xf1ob6F7nsFhUvL qgxuJVw5cA71eacIkV0nqcBBGEPTcH+esfpMtWWmQ+GzVFhXkhIUMeov2/i5/A0PmqcR MrPAfTshr+PDhY4DddhpWX4bw/37CGAYkb1QMsl4M6ihBl7+zW491sDjrdaTJhY9ndIJ HHrvGKu7fT2R26O01SJ+YFunZvlt+zZ0aP3dk7w0AvDA3dvZw5P0jF5lwTwSN2hgTUtH iMMNz+Vg38xKHZ0CuEjzUUV5YqHFZiYVRzSA424feDCet1ZTiBVjHTtc99tLrXFmL0XI 4buw== X-Gm-Message-State: AOJu0YybVAKBWPBj9OzDDqyohFGgMKbaxScob94nd4Kk01MaPyOBniGu yW19Q6zcDuR9IOv3JsObqsfhYfwRlUZ2+bxS1RC61wQC6bizxI2+MPF7nab9KFdOJho5yXEI2fE cYN4n7RepsPQzi9D5dMZlPdwNEZ25F88= X-Gm-Gg: ASbGncsOM66RGtPQaJ99myQVz/u4XpKDXqLIa2rg4qpDBp+1pHUNbzssrV9L9zlsfhb YDACShDdHikmBQnFalI3ICcaSBe4WFE1FXjF98OYX5w23wVIKkCzk7qFodw4Cg53phsN3nS2b6d gVdGojDDm/D1BqZDzs+wCWXnFEmLdPXIuYImVD/bgKTwwUaQj1xJQ+X0lIU7+gLrWnIo9rFyDEQ QtBsXfgJA== X-Google-Smtp-Source: AGHT+IGDE4lBynIDkWOhAVyq2h1vZZlH+WP4k4ezJ7Sdu7K4DggZQS85p46sw50WTUKavj5EGUVNtjtU5NKwmCHouhM= X-Received: by 2002:a17:907:3dab:b0:b04:5059:3b50 with SMTP id a640c23a62f3a-b34b73f3ab7mr278958166b.15.1758788731374; Thu, 25 Sep 2025 01:25:31 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Amul Sul Date: Thu, 25 Sep 2025 13:54:51 +0530 X-Gm-Features: AS18NWDSUdakKG-vUSkgLZzh7HXL5zUuZp2ZIZs4YsvgTNhj5TH_42vWemvV1nE Message-ID: Subject: Re: pg_waldump: support decoding of WAL inside tarfile To: Robert Haas Cc: PostgreSQL Hackers Content-Type: multipart/mixed; boundary="0000000000009207e5063f9be993" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000009207e5063f9be993 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, Sep 12, 2025 at 11:58=E2=80=AFPM Robert Haas wrote: > > Here are some review comments on v3-0004: > Thanks for the review. My replies are below. > There doesn't seem to be any reason for > astreamer_waldump_content_new() to take an astreamer *next argument. > If you look at astreamer.h, you'll see that some astreamer_BLAH_new() > functions take such an argument, and others don't. The ones that do > forward their input to another astreamer; the ones that don't, like > astreamer_plain_writer_new(), send it somewhere else. AFAICT, this > astreamer is never going to send its output to another astreamer, so > there's no reason for this argument. > Done. > I'm also a little confused by the choice of the name > astreamer_waldump_content_new(). I would have thought this would be > something like astreamer_waldump_new() or astreamer_xlogreader_new(). > The word "content" doesn't seem to me to be adding much here, and it > invites confusion with the "content" callback. > Done -- renamed to astreamer_waldump_new(). > I think you can merge setup_astreamer() into > init_tar_archive_reader(). The only other caller is > verify_tar_archive(), but that does exactly the same additional steps > as init_tar_archive_reader(), as far as I can see. > Done. > The return statement for astreamer_wal_read is really odd: > > + return (count - nbytes) ? (count - nbytes) : -1; > Agreed, that's a bit odd. This seems to be leftover code from the experimen= tal patch. The astreamer_wal_read() function should behave like WALRead(): it should either successfully read all the requested bytes or throw an error. Corrected in the attached version. > > I would suggest changing the name of the variable from "readBuff" to > "readBuf". There are no existing uses of readBuff in the code base. > The existing WALDumpReadPage() function has a "readBuff" argument, and I've used it that way for consistency. > I think this comment also needs improvement: > > + /* > + * Ignore existing data if the required target page > has not yet been > + * read. > + */ > + if (recptr >=3D endPtr) > + { > + len =3D 0; > + > + /* Reset the buffer */ > + resetStringInfo(astreamer_buf); > + } > > This comment is problematic for a few reasons. First, we're not > ignoring the existing data: we're throwing it out. Second, the comment > doesn't say why we're doing what we're doing, only that we're doing > it. Here's my guess at the actual explanation -- please correct me if > I'm wrong: "pg_waldump never reads the same WAL bytes more than once, > so if we're now being asked for data beyond the end of what we've > already read, that means none of the data we currently have in the > buffer will ever be consulted again. So, we can discard the existing > buffer contents and start over." By the way, if this explanation is > correct, it might be nice to add an assertion someplace that verifies > it, like asserting that we're always reading from an LSN greater than > or equal to (or exactly equal to?) the LSN immediately following the > last data we read. > Updated the comment. The similar assertion exists right before copying to the readBuff. > > Another thing that isn't so nice right now is that > verify_tar_archive() has to open and close the archive only for > init_tar_archive_reader() to be called to reopen it again just moments > later. It would be nicer to open the file just once and then keep it > open. Here again, I wonder if the separation of duties could be a bit > cleaner. > Prefer to keep those separate, assuming that reopening the file won't cause any significant harm. Let me know if you think otherwise. Attached the updated version, kindly have a look. Regards, Amul --0000000000009207e5063f9be993 Content-Type: application/x-patch; name="v4-0001-Refactor-pg_waldump-Move-some-declarations-to-new.patch" Content-Disposition: attachment; filename="v4-0001-Refactor-pg_waldump-Move-some-declarations-to-new.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfz56yk60 RnJvbSA4ZWI4NGI1NTNkODU2YmJiZmZkYTI1NGU0MTkxNTJjMjM2MzQ2ODQ4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFR1 ZSwgMjQgSnVuIDIwMjUgMTE6MzM6MjAgKzA1MzAKU3ViamVjdDogW1BBVENIIHY0IDEvOF0gUmVm YWN0b3I6IHBnX3dhbGR1bXA6IE1vdmUgc29tZSBkZWNsYXJhdGlvbnMgdG8gbmV3CiBwZ193YWxk dW1wLmgKClRoaXMgY2hhbmdlIHByZXBhcmVzIGZvciBhIHNlY29uZCBzb3VyY2UgZmlsZSBpbiB0 aGlzIGRpcmVjdG9yeSB0bwpzdXBwb3J0IHJlYWRpbmcgV0FMIGZyb20gdGFyIGZpbGVzLiBDb21t b24gc3RydWN0dXJlcywgZGVjbGFyYXRpb25zLAphbmQgZnVuY3Rpb25zIGFyZSBiZWluZyBleHBv cnRlZCB0aHJvdWdoIHRoaXMgaW5jbHVkZSBmaWxlIHNvCnRoZXkgY2FuIGJlIHVzZWQgaW4gYm90 aCBmaWxlcy4KLS0tCiBzcmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5jIHwgMTEgKystLS0t LS0tLS0KIHNyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmggfCAyNyArKysrKysrKysrKysr KysrKysrKysrKysrKysKIDIgZmlsZXMgY2hhbmdlZCwgMjkgaW5zZXJ0aW9ucygrKSwgOSBkZWxl dGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVt cC5oCgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ193YWxkdW1wL3BnX3dhbGR1bXAuYyBiL3NyYy9i aW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmMKaW5kZXggMTNkM2VjMmY1YmUuLmE0OWIyZmQ5NmM3 IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5jCisrKyBiL3NyYy9i aW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmMKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJj b21tb24vbG9nZ2luZy5oIgogI2luY2x1ZGUgImNvbW1vbi9yZWxwYXRoLmgiCiAjaW5jbHVkZSAi Z2V0b3B0X2xvbmcuaCIKKyNpbmNsdWRlICJwZ193YWxkdW1wLmgiCiAjaW5jbHVkZSAicm1ncmRl c2MuaCIKICNpbmNsdWRlICJzdG9yYWdlL2J1ZnBhZ2UuaCIKIApAQCAtMzksMTkgKzQwLDExIEBA CiAKIHN0YXRpYyBjb25zdCBjaGFyICpwcm9nbmFtZTsKIAotc3RhdGljIGludAlXYWxTZWdTejsK K2ludAkJCVdhbFNlZ1N6ID0gREVGQVVMVF9YTE9HX1NFR19TSVpFOwogc3RhdGljIHZvbGF0aWxl IHNpZ19hdG9taWNfdCB0aW1lX3RvX3N0b3AgPSBmYWxzZTsKIAogc3RhdGljIGNvbnN0IFJlbEZp bGVMb2NhdG9yIGVtcHR5UmVsRmlsZUxvY2F0b3IgPSB7MCwgMCwgMH07CiAKLXR5cGVkZWYgc3Ry dWN0IFhMb2dEdW1wUHJpdmF0ZQotewotCVRpbWVMaW5lSUQJdGltZWxpbmU7Ci0JWExvZ1JlY1B0 cglzdGFydHB0cjsKLQlYTG9nUmVjUHRyCWVuZHB0cjsKLQlib29sCQllbmRwdHJfcmVhY2hlZDsK LX0gWExvZ0R1bXBQcml2YXRlOwotCiB0eXBlZGVmIHN0cnVjdCBYTG9nRHVtcENvbmZpZwogewog CS8qIGRpc3BsYXkgb3B0aW9ucyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ193YWxkdW1wL3Bn X3dhbGR1bXAuaCBiL3NyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmgKbmV3IGZpbGUgbW9k ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjllNjJiNjRlYWQ1Ci0tLSAvZGV2L251bGwKKysr IGIvc3JjL2Jpbi9wZ193YWxkdW1wL3BnX3dhbGR1bXAuaApAQCAtMCwwICsxLDI3IEBACisvKi0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyAqCisgKiBwZ193YWxkdW1wLmggLSBkZWNvZGUgYW5kIGRpc3BsYXkg V0FMCisgKgorICogQ29weXJpZ2h0IChjKSAyMDEzLTIwMjUsIFBvc3RncmVTUUwgR2xvYmFsIERl dmVsb3BtZW50IEdyb3VwCisgKgorICogSURFTlRJRklDQVRJT04KKyAqCQkgIHNyYy9iaW4vcGdf d2FsZHVtcC9wZ193YWxkdW1wLmgKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisjaWZuZGVmIFBH X1dBTERVTVBfSAorI2RlZmluZSBQR19XQUxEVU1QX0gKKworI2luY2x1ZGUgImFjY2Vzcy94bG9n ZGVmcy5oIgorCitleHRlcm4gaW50CVdhbFNlZ1N6OworCisvKiBDb250YWlucyB0aGUgbmVjZXNz YXJ5IGluZm9ybWF0aW9uIHRvIGRyaXZlIFdBTCBkZWNvZGluZyAqLwordHlwZWRlZiBzdHJ1Y3Qg WExvZ0R1bXBQcml2YXRlCit7CisJVGltZUxpbmVJRAl0aW1lbGluZTsKKwlYTG9nUmVjUHRyCXN0 YXJ0cHRyOworCVhMb2dSZWNQdHIJZW5kcHRyOworCWJvb2wJCWVuZHB0cl9yZWFjaGVkOworfSBY TG9nRHVtcFByaXZhdGU7CisKKyNlbmRpZgkJLyogZW5kIG9mIFBHX1dBTERVTVBfSCAqLwotLSAK Mi40Ny4xCgo= --0000000000009207e5063f9be993 Content-Type: application/x-patch; name="v4-0002-Refactor-pg_waldump-Separate-logic-used-to-calcul.patch" Content-Disposition: attachment; filename="v4-0002-Refactor-pg_waldump-Separate-logic-used-to-calcul.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfz574b11 RnJvbSA5ZjcxOWQ1NzQ0YzI5M2E5MWFjYTVhOTMzYjM1NzI5NjE4MDI4MWZmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFRo dSwgMjYgSnVuIDIwMjUgMTE6NDI6NTMgKzA1MzAKU3ViamVjdDogW1BBVENIIHY0IDIvOF0gUmVm YWN0b3I6IHBnX3dhbGR1bXA6IFNlcGFyYXRlIGxvZ2ljIHVzZWQgdG8gY2FsY3VsYXRlCiB0aGUg cmVxdWlyZWQgcmVhZCBzaXplLgoKVGhpcyByZWZhY3RvcmluZyBwcmVwYXJlcyB0aGUgY29kZWJh c2UgZm9yIGFuIHVwY29taW5nIHBhdGNoIHRoYXQgd2lsbApzdXBwb3J0IHJlYWRpbmcgV0FMIGZy b20gdGFyIGZpbGVzLiBUaGUgbG9naWMgZm9yIGNhbGN1bGF0aW5nIHRoZQpyZXF1aXJlZCByZWFk IHNpemUgaGFzIGJlZW4gdXBkYXRlZCB0byBoYW5kbGUgYm90aCBub3JtYWwgV0FMIGZpbGVzCmFu ZCBXQUwgZmlsZXMgbG9jYXRlZCBpbnNpZGUgYSB0YXIgYXJjaGl2ZS4KLS0tCiBzcmMvYmluL3Bn X3dhbGR1bXAvcGdfd2FsZHVtcC5jIHwgMzkgKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0t LS0tCiAxIGZpbGUgY2hhbmdlZCwgMjYgaW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ193YWxkdW1wL3BnX3dhbGR1bXAuYyBiL3NyYy9iaW4vcGdf d2FsZHVtcC9wZ193YWxkdW1wLmMKaW5kZXggYTQ5YjJmZDk2YzcuLjhkMGNkOWU3MTU2IDEwMDY0 NAotLS0gYS9zcmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdf d2FsZHVtcC9wZ193YWxkdW1wLmMKQEAgLTMyNiw2ICszMjYsMjkgQEAgaWRlbnRpZnlfdGFyZ2V0 X2RpcmVjdG9yeShjaGFyICpkaXJlY3RvcnksIGNoYXIgKmZuYW1lKQogCXJldHVybiBOVUxMOwkJ CQkvKiBub3QgcmVhY2hlZCAqLwogfQogCisvKiBSZXR1cm5zIHRoZSBzaXplIGluIGJ5dGVzIG9m IHRoZSBkYXRhIHRvIGJlIHJlYWQuICovCitzdGF0aWMgaW5saW5lIGludAorcmVxdWlyZWRfcmVh ZF9sZW4oWExvZ0R1bXBQcml2YXRlICpwcml2YXRlLCBYTG9nUmVjUHRyIHRhcmdldFBhZ2VQdHIs CisJCQkJICBpbnQgcmVxTGVuKQoreworCWludAkJCWNvdW50ID0gWExPR19CTENLU1o7CisKKwlp ZiAocHJpdmF0ZS0+ZW5kcHRyICE9IEludmFsaWRYTG9nUmVjUHRyKQorCXsKKwkJaWYgKHRhcmdl dFBhZ2VQdHIgKyBYTE9HX0JMQ0tTWiA8PSBwcml2YXRlLT5lbmRwdHIpCisJCQljb3VudCA9IFhM T0dfQkxDS1NaOworCQllbHNlIGlmICh0YXJnZXRQYWdlUHRyICsgcmVxTGVuIDw9IHByaXZhdGUt PmVuZHB0cikKKwkJCWNvdW50ID0gcHJpdmF0ZS0+ZW5kcHRyIC0gdGFyZ2V0UGFnZVB0cjsKKwkJ ZWxzZQorCQl7CisJCQlwcml2YXRlLT5lbmRwdHJfcmVhY2hlZCA9IHRydWU7CisJCQlyZXR1cm4g LTE7CisJCX0KKwl9CisKKwlyZXR1cm4gY291bnQ7Cit9CisKIC8qIHBnX3dhbGR1bXAncyBYTG9n UmVhZGVyUm91dGluZS0+c2VnbWVudF9vcGVuIGNhbGxiYWNrICovCiBzdGF0aWMgdm9pZAogV0FM RHVtcE9wZW5TZWdtZW50KFhMb2dSZWFkZXJTdGF0ZSAqc3RhdGUsIFhMb2dTZWdObyBuZXh0U2Vn Tm8sCkBAIC0zODMsMjEgKzQwNiwxMSBAQCBXQUxEdW1wUmVhZFBhZ2UoWExvZ1JlYWRlclN0YXRl ICpzdGF0ZSwgWExvZ1JlY1B0ciB0YXJnZXRQYWdlUHRyLCBpbnQgcmVxTGVuLAogCQkJCVhMb2dS ZWNQdHIgdGFyZ2V0UHRyLCBjaGFyICpyZWFkQnVmZikKIHsKIAlYTG9nRHVtcFByaXZhdGUgKnBy aXZhdGUgPSBzdGF0ZS0+cHJpdmF0ZV9kYXRhOwotCWludAkJCWNvdW50ID0gWExPR19CTENLU1o7 CisJaW50CQkJY291bnQgPSByZXF1aXJlZF9yZWFkX2xlbihwcml2YXRlLCB0YXJnZXRQYWdlUHRy LCByZXFMZW4pOwogCVdBTFJlYWRFcnJvciBlcnJpbmZvOwogCi0JaWYgKHByaXZhdGUtPmVuZHB0 ciAhPSBJbnZhbGlkWExvZ1JlY1B0cikKLQl7Ci0JCWlmICh0YXJnZXRQYWdlUHRyICsgWExPR19C TENLU1ogPD0gcHJpdmF0ZS0+ZW5kcHRyKQotCQkJY291bnQgPSBYTE9HX0JMQ0tTWjsKLQkJZWxz ZSBpZiAodGFyZ2V0UGFnZVB0ciArIHJlcUxlbiA8PSBwcml2YXRlLT5lbmRwdHIpCi0JCQljb3Vu dCA9IHByaXZhdGUtPmVuZHB0ciAtIHRhcmdldFBhZ2VQdHI7Ci0JCWVsc2UKLQkJewotCQkJcHJp dmF0ZS0+ZW5kcHRyX3JlYWNoZWQgPSB0cnVlOwotCQkJcmV0dXJuIC0xOwotCQl9Ci0JfQorCWlm IChwcml2YXRlLT5lbmRwdHJfcmVhY2hlZCkKKwkJcmV0dXJuIC0xOwogCiAJaWYgKCFXQUxSZWFk KHN0YXRlLCByZWFkQnVmZiwgdGFyZ2V0UGFnZVB0ciwgY291bnQsIHByaXZhdGUtPnRpbWVsaW5l LAogCQkJCSAmZXJyaW5mbykpCi0tIAoyLjQ3LjEKCg== --0000000000009207e5063f9be993 Content-Type: application/x-patch; name="v4-0003-Refactor-pg_waldump-Restructure-TAP-tests.patch" Content-Disposition: attachment; filename="v4-0003-Refactor-pg_waldump-Restructure-TAP-tests.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfz578xk2 RnJvbSBmNTFkZGI2ZDAyZWY2ZTMzODNiZWViZGQ0NDg2ZDEwMTkxNDk5OTU1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFdl ZCwgMzAgSnVsIDIwMjUgMTI6NDM6MzAgKzA1MzAKU3ViamVjdDogW1BBVENIIHY0IDMvOF0gUmVm YWN0b3I6IHBnX3dhbGR1bXA6IFJlc3RydWN0dXJlIFRBUCB0ZXN0cy4KClJlc3RydWN0dXJlZCBz b21lIHRlc3RzIHRvIHJ1biBpbnNpZGUgYSBsb29wLCBmYWNpbGl0YXRpbmcgdGhlaXIKcmUtZXhl Y3V0aW9uIGZvciBkZWNvZGluZyBXQUwgZnJvbSB0YXIgYXJjaGl2ZXMuCi0tLQogc3JjL2Jpbi9w Z193YWxkdW1wL3QvMDAxX2Jhc2ljLnBsIHwgMTIzICsrKysrKysrKysrKysrKystLS0tLS0tLS0t LS0tLQogMSBmaWxlIGNoYW5nZWQsIDY3IGluc2VydGlvbnMoKyksIDU2IGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfd2FsZHVtcC90LzAwMV9iYXNpYy5wbCBiL3NyYy9iaW4v cGdfd2FsZHVtcC90LzAwMV9iYXNpYy5wbAppbmRleCBmMjZkNzVlMDFjZi4uMWI3MTJlOGQ3NGQg MTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfd2FsZHVtcC90LzAwMV9iYXNpYy5wbAorKysgYi9zcmMv YmluL3BnX3dhbGR1bXAvdC8wMDFfYmFzaWMucGwKQEAgLTE5OCwyOCArMTk4LDYgQEAgY29tbWFu ZF9saWtlKAogCV0sCiAJcXIvLi8sCiAJJ3J1bnMgd2l0aCBzdGFydCBhbmQgZW5kIHNlZ21lbnQg c3BlY2lmaWVkJyk7Ci1jb21tYW5kX2ZhaWxzX2xpa2UoCi0JWyAncGdfd2FsZHVtcCcsICctLXBh dGgnID0+ICRub2RlLT5kYXRhX2RpciBdLAotCXFyL2Vycm9yOiBubyBzdGFydCBXQUwgbG9jYXRp b24gZ2l2ZW4vLAotCSdwYXRoIG9wdGlvbiByZXF1aXJlcyBzdGFydCBsb2NhdGlvbicpOwotY29t bWFuZF9saWtlKAotCVsKLQkJJ3BnX3dhbGR1bXAnLAotCQknLS1wYXRoJyA9PiAkbm9kZS0+ZGF0 YV9kaXIsCi0JCSctLXN0YXJ0JyA9PiAkc3RhcnRfbHNuLAotCQknLS1lbmQnID0+ICRlbmRfbHNu LAotCV0sCi0JcXIvLi8sCi0JJ3J1bnMgd2l0aCBwYXRoIG9wdGlvbiBhbmQgc3RhcnQgYW5kIGVu ZCBsb2NhdGlvbnMnKTsKLWNvbW1hbmRfZmFpbHNfbGlrZSgKLQlbCi0JCSdwZ193YWxkdW1wJywK LQkJJy0tcGF0aCcgPT4gJG5vZGUtPmRhdGFfZGlyLAotCQknLS1zdGFydCcgPT4gJHN0YXJ0X2xz biwKLQldLAotCXFyL2Vycm9yOiBlcnJvciBpbiBXQUwgcmVjb3JkIGF0LywKLQknZmFsbGluZyBv ZmYgdGhlIGVuZCBvZiB0aGUgV0FMIHJlc3VsdHMgaW4gYW4gZXJyb3InKTsKLQogY29tbWFuZF9s aWtlKAogCVsKIAkJJ3BnX3dhbGR1bXAnLCAnLS1xdWlldCcsCkBAIC0yMjcsMTUgKzIwNSw2IEBA IGNvbW1hbmRfbGlrZSgKIAldLAogCXFyL14kLywKIAknbm8gb3V0cHV0IHdpdGggLS1xdWlldCBv cHRpb24nKTsKLWNvbW1hbmRfZmFpbHNfbGlrZSgKLQlbCi0JCSdwZ193YWxkdW1wJywgJy0tcXVp ZXQnLAotCQknLS1wYXRoJyA9PiAkbm9kZS0+ZGF0YV9kaXIsCi0JCSctLXN0YXJ0JyA9PiAkc3Rh cnRfbHNuCi0JXSwKLQlxci9lcnJvcjogZXJyb3IgaW4gV0FMIHJlY29yZCBhdC8sCi0JJ2Vycm9y cyBhcmUgc2hvd24gd2l0aCAtLXF1aWV0Jyk7Ci0KIAogIyBUZXN0IGZvcjogRGlzcGxheSBhIG1l c3NhZ2UgdGhhdCB3ZSdyZSBza2lwcGluZyBkYXRhIGlmIGBmcm9tYAogIyB3YXNuJ3QgYSBwb2lu dGVyIHRvIHRoZSBzdGFydCBvZiBhIHJlY29yZC4KQEAgLTI3Miw3ICsyNDEsNiBAQCBzdWIgdGVz dF9wZ193YWxkdW1wCiAKIAlteSAkcmVzdWx0ID0gSVBDOjpSdW46OnJ1biBbCiAJCSdwZ193YWxk dW1wJywKLQkJJy0tcGF0aCcgPT4gJG5vZGUtPmRhdGFfZGlyLAogCQknLS1zdGFydCcgPT4gJHN0 YXJ0X2xzbiwKIAkJJy0tZW5kJyA9PiAkZW5kX2xzbiwKIAkJQG9wdHMKQEAgLTI4OCwzOCArMjU2 LDgxIEBAIHN1YiB0ZXN0X3BnX3dhbGR1bXAKIAogbXkgQGxpbmVzOwogCi1AbGluZXMgPSB0ZXN0 X3BnX3dhbGR1bXA7Ci1pcyhncmVwKCEvXnJtZ3I6IFx3LywgQGxpbmVzKSwgMCwgJ2FsbCBvdXRw dXQgbGluZXMgYXJlIHJtZ3IgbGluZXMnKTsKK215IEBzY2VuYXJpbyA9ICgKKwl7CisJCSdwYXRo JyA9PiAkbm9kZS0+ZGF0YV9kaXIKKwl9KTsKIAotQGxpbmVzID0gdGVzdF9wZ193YWxkdW1wKCct LWxpbWl0JyA9PiA2KTsKLWlzKEBsaW5lcywgNiwgJ2xpbWl0IG9wdGlvbiBvYnNlcnZlZCcpOwor Zm9yIG15ICRzY2VuYXJpbyAoQHNjZW5hcmlvKQoreworCW15ICRwYXRoID0gJHNjZW5hcmlvLT57 J3BhdGgnfTsKIAotQGxpbmVzID0gdGVzdF9wZ193YWxkdW1wKCctLWZ1bGxwYWdlJyk7Ci1pcyhn cmVwKCEvXnJtZ3I6LipcYkZQV1xiLywgQGxpbmVzKSwgMCwgJ2FsbCBvdXRwdXQgbGluZXMgYXJl IEZQVycpOworCVNLSVA6CisJeworCQljb21tYW5kX2ZhaWxzX2xpa2UoCisJCQlbICdwZ193YWxk dW1wJywgJy0tcGF0aCcgPT4gJHBhdGggXSwKKwkJCXFyL2Vycm9yOiBubyBzdGFydCBXQUwgbG9j YXRpb24gZ2l2ZW4vLAorCQkJJ3BhdGggb3B0aW9uIHJlcXVpcmVzIHN0YXJ0IGxvY2F0aW9uJyk7 CisJCWNvbW1hbmRfbGlrZSgKKwkJCVsKKwkJCQkncGdfd2FsZHVtcCcsCisJCQkJJy0tcGF0aCcg PT4gJHBhdGgsCisJCQkJJy0tc3RhcnQnID0+ICRzdGFydF9sc24sCisJCQkJJy0tZW5kJyA9PiAk ZW5kX2xzbiwKKwkJCV0sCisJCQlxci8uLywKKwkJCSdydW5zIHdpdGggcGF0aCBvcHRpb24gYW5k IHN0YXJ0IGFuZCBlbmQgbG9jYXRpb25zJyk7CisJCWNvbW1hbmRfZmFpbHNfbGlrZSgKKwkJCVsK KwkJCQkncGdfd2FsZHVtcCcsCisJCQkJJy0tcGF0aCcgPT4gJHBhdGgsCisJCQkJJy0tc3RhcnQn ID0+ICRzdGFydF9sc24sCisJCQldLAorCQkJcXIvZXJyb3I6IGVycm9yIGluIFdBTCByZWNvcmQg YXQvLAorCQkJJ2ZhbGxpbmcgb2ZmIHRoZSBlbmQgb2YgdGhlIFdBTCByZXN1bHRzIGluIGFuIGVy cm9yJyk7CiAKLUBsaW5lcyA9IHRlc3RfcGdfd2FsZHVtcCgnLS1zdGF0cycpOwotbGlrZSgkbGlu ZXNbMF0sIHFyL1dBTCBzdGF0aXN0aWNzLywgInN0YXRpc3RpY3Mgb24gc3Rkb3V0Iik7Ci1pcyhn cmVwKC9ecm1ncjovLCBAbGluZXMpLCAwLCAnbm8gcm1nciBsaW5lcyBvdXRwdXQnKTsKKwkJY29t bWFuZF9mYWlsc19saWtlKAorCQkJWworCQkJCSdwZ193YWxkdW1wJywgJy0tcXVpZXQnLAorCQkJ CSctLXBhdGgnID0+ICRwYXRoLAorCQkJCSctLXN0YXJ0JyA9PiAkc3RhcnRfbHNuCisJCQldLAor CQkJcXIvZXJyb3I6IGVycm9yIGluIFdBTCByZWNvcmQgYXQvLAorCQkJJ2Vycm9ycyBhcmUgc2hv d24gd2l0aCAtLXF1aWV0Jyk7CiAKLUBsaW5lcyA9IHRlc3RfcGdfd2FsZHVtcCgnLS1zdGF0cz1y ZWNvcmQnKTsKLWxpa2UoJGxpbmVzWzBdLCBxci9XQUwgc3RhdGlzdGljcy8sICJzdGF0aXN0aWNz IG9uIHN0ZG91dCIpOwotaXMoZ3JlcCgvXnJtZ3I6LywgQGxpbmVzKSwgMCwgJ25vIHJtZ3IgbGlu ZXMgb3V0cHV0Jyk7CisJCUBsaW5lcyA9IHRlc3RfcGdfd2FsZHVtcCgnLS1wYXRoJyA9PiAkcGF0 aCk7CisJCWlzKGdyZXAoIS9ecm1ncjogXHcvLCBAbGluZXMpLCAwLCAnYWxsIG91dHB1dCBsaW5l cyBhcmUgcm1nciBsaW5lcycpOwogCi1AbGluZXMgPSB0ZXN0X3BnX3dhbGR1bXAoJy0tcm1ncicg PT4gJ0J0cmVlJyk7Ci1pcyhncmVwKCEvXnJtZ3I6IEJ0cmVlLywgQGxpbmVzKSwgMCwgJ29ubHkg QnRyZWUgbGluZXMnKTsKKwkJQGxpbmVzID0gdGVzdF9wZ193YWxkdW1wKCctLXBhdGgnID0+ICRw YXRoLCAnLS1saW1pdCcgPT4gNik7CisJCWlzKEBsaW5lcywgNiwgJ2xpbWl0IG9wdGlvbiBvYnNl cnZlZCcpOwogCi1AbGluZXMgPSB0ZXN0X3BnX3dhbGR1bXAoJy0tZm9yaycgPT4gJ2luaXQnKTsK LWlzKGdyZXAoIS9mb3JrIGluaXQvLCBAbGluZXMpLCAwLCAnb25seSBpbml0IGZvcmsgbGluZXMn KTsKKwkJQGxpbmVzID0gdGVzdF9wZ193YWxkdW1wKCctLXBhdGgnID0+ICRwYXRoLCAnLS1mdWxs cGFnZScpOworCQlpcyhncmVwKCEvXnJtZ3I6LipcYkZQV1xiLywgQGxpbmVzKSwgMCwgJ2FsbCBv dXRwdXQgbGluZXMgYXJlIEZQVycpOwogCi1AbGluZXMgPSB0ZXN0X3BnX3dhbGR1bXAoCi0JJy0t cmVsYXRpb24nID0+ICIkZGVmYXVsdF90c19vaWQvJHBvc3RncmVzX2RiX29pZC8kcmVsX3QxX29p ZCIpOwotaXMoZ3JlcCghL3JlbCAkZGVmYXVsdF90c19vaWRcLyRwb3N0Z3Jlc19kYl9vaWRcLyRy ZWxfdDFfb2lkLywgQGxpbmVzKSwKLQkwLCAnb25seSBsaW5lcyBmb3Igc2VsZWN0ZWQgcmVsYXRp b24nKTsKKwkJQGxpbmVzID0gdGVzdF9wZ193YWxkdW1wKCctLXBhdGgnID0+ICRwYXRoLCAnLS1z dGF0cycpOworCQlsaWtlKCRsaW5lc1swXSwgcXIvV0FMIHN0YXRpc3RpY3MvLCAic3RhdGlzdGlj cyBvbiBzdGRvdXQiKTsKKwkJaXMoZ3JlcCgvXnJtZ3I6LywgQGxpbmVzKSwgMCwgJ25vIHJtZ3Ig bGluZXMgb3V0cHV0Jyk7CiAKLUBsaW5lcyA9IHRlc3RfcGdfd2FsZHVtcCgKLQknLS1yZWxhdGlv bicgPT4gIiRkZWZhdWx0X3RzX29pZC8kcG9zdGdyZXNfZGJfb2lkLyRyZWxfaTFhX29pZCIsCi0J Jy0tYmxvY2snID0+IDEpOwotaXMoZ3JlcCghL1xiYmxrIDFcYi8sIEBsaW5lcyksIDAsICdvbmx5 IGxpbmVzIGZvciBzZWxlY3RlZCBibG9jaycpOworCQlAbGluZXMgPSB0ZXN0X3BnX3dhbGR1bXAo Jy0tcGF0aCcgPT4gJHBhdGgsICctLXN0YXRzPXJlY29yZCcpOworCQlsaWtlKCRsaW5lc1swXSwg cXIvV0FMIHN0YXRpc3RpY3MvLCAic3RhdGlzdGljcyBvbiBzdGRvdXQiKTsKKwkJaXMoZ3JlcCgv XnJtZ3I6LywgQGxpbmVzKSwgMCwgJ25vIHJtZ3IgbGluZXMgb3V0cHV0Jyk7CiAKKwkJQGxpbmVz ID0gdGVzdF9wZ193YWxkdW1wKCctLXBhdGgnID0+ICRwYXRoLCAnLS1ybWdyJyA9PiAnQnRyZWUn KTsKKwkJaXMoZ3JlcCghL15ybWdyOiBCdHJlZS8sIEBsaW5lcyksIDAsICdvbmx5IEJ0cmVlIGxp bmVzJyk7CisKKwkJQGxpbmVzID0gdGVzdF9wZ193YWxkdW1wKCctLXBhdGgnID0+ICRwYXRoLCAn LS1mb3JrJyA9PiAnaW5pdCcpOworCQlpcyhncmVwKCEvZm9yayBpbml0LywgQGxpbmVzKSwgMCwg J29ubHkgaW5pdCBmb3JrIGxpbmVzJyk7CisKKwkJQGxpbmVzID0gdGVzdF9wZ193YWxkdW1wKCct LXBhdGgnID0+ICRwYXRoLAorCQkJJy0tcmVsYXRpb24nID0+ICIkZGVmYXVsdF90c19vaWQvJHBv c3RncmVzX2RiX29pZC8kcmVsX3QxX29pZCIpOworCQlpcyhncmVwKCEvcmVsICRkZWZhdWx0X3Rz X29pZFwvJHBvc3RncmVzX2RiX29pZFwvJHJlbF90MV9vaWQvLCBAbGluZXMpLAorCQkJMCwgJ29u bHkgbGluZXMgZm9yIHNlbGVjdGVkIHJlbGF0aW9uJyk7CisKKwkJQGxpbmVzID0gdGVzdF9wZ193 YWxkdW1wKCctLXBhdGgnID0+ICRwYXRoLAorCQkJJy0tcmVsYXRpb24nID0+ICIkZGVmYXVsdF90 c19vaWQvJHBvc3RncmVzX2RiX29pZC8kcmVsX2kxYV9vaWQiLAorCQkJJy0tYmxvY2snID0+IDEp OworCQlpcyhncmVwKCEvXGJibGsgMVxiLywgQGxpbmVzKSwgMCwgJ29ubHkgbGluZXMgZm9yIHNl bGVjdGVkIGJsb2NrJyk7CisJfQorfQogCiBkb25lX3Rlc3RpbmcoKTsKLS0gCjIuNDcuMQoK --0000000000009207e5063f9be993 Content-Type: application/x-patch; name="v4-0004-pg_waldump-Add-support-for-archived-WAL-decoding.patch" Content-Disposition: attachment; filename="v4-0004-pg_waldump-Add-support-for-archived-WAL-decoding.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfz57do83 RnJvbSBiZTBjZjliMGQ0ZmY5OTYzMDI5OGU0OTlmOTNkMDlhMTdlZWFlMTQxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFdl ZCwgMTYgSnVsIDIwMjUgMTg6Mzc6NTkgKzA1MzAKU3ViamVjdDogW1BBVENIIHY0IDQvOF0gcGdf d2FsZHVtcDogQWRkIHN1cHBvcnQgZm9yIGFyY2hpdmVkIFdBTCBkZWNvZGluZy4KCnBnX3dhbGR1 bXAgY2FuIG5vdyBhY2NlcHQgdGhlIHBhdGggdG8gYSB0YXIgYXJjaGl2ZSBjb250YWluaW5nIFdB TApmaWxlcyBhbmQgZGVjb2RlIHRoZW0uIFRoaXMgZmVhdHVyZSB3YXMgYWRkZWQgcHJpbWFyaWx5 IGZvcgpwZ192ZXJpZnliYWNrdXAsIHdoaWNoIHByZXZpb3VzbHkgZGlzYWJsZWQgV0FMIHBhcnNp bmcgZm9yCnRhci1mb3JtYXR0ZWQgYmFja3Vwcy4KCk5vdGUgdGhhdCB0aGlzIHBhdGNoIHJlcXVp cmVzIHRoYXQgdGhlIFdBTCBmaWxlcyB3aXRoaW4gdGhlIGFyY2hpdmUgYmUKaW4gc2VxdWVudGlh bCBvcmRlcjsgYW4gZXJyb3Igd2lsbCBiZSByZXBvcnRlZCBvdGhlcndpc2UuIFRoZSBuZXh0CnBh dGNoIGlzIHBsYW5uZWQgdG8gcmVtb3ZlIHRoaXMgcmVzdHJpY3Rpb24uCi0tLQogZG9jL3NyYy9z Z21sL3JlZi9wZ193YWxkdW1wLnNnbWwgICAgICAgfCAgIDggKy0KIHNyYy9iaW4vcGdfd2FsZHVt cC9NYWtlZmlsZSAgICAgICAgICAgIHwgICA3ICstCiBzcmMvYmluL3BnX3dhbGR1bXAvYXN0cmVh bWVyX3dhbGR1bXAuYyB8IDM4OCArKysrKysrKysrKysrKysrKysrKysrKysrCiBzcmMvYmluL3Bn X3dhbGR1bXAvbWVzb24uYnVpbGQgICAgICAgICB8ICAgNCArLQogc3JjL2Jpbi9wZ193YWxkdW1w L3BnX3dhbGR1bXAuYyAgICAgICAgfCAzNjUgKysrKysrKysrKysrKysrKysrKy0tLS0KIHNyYy9i aW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmggICAgICAgIHwgIDIwICstCiBzcmMvYmluL3BnX3dh bGR1bXAvdC8wMDFfYmFzaWMucGwgICAgICB8ICA4NCArKysrKy0KIHNyYy90b29scy9wZ2luZGVu dC90eXBlZGVmcy5saXN0ICAgICAgIHwgICAxICsKIDggZmlsZXMgY2hhbmdlZCwgNzk5IGluc2Vy dGlvbnMoKyksIDc4IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iaW4vcGdf d2FsZHVtcC9hc3RyZWFtZXJfd2FsZHVtcC5jCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3Jl Zi9wZ193YWxkdW1wLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL3BnX3dhbGR1bXAuc2dtbAppbmRl eCBjZTIzYWRkNTU3Ny4uZDAwNGJiMGY2N2UgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYv cGdfd2FsZHVtcC5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvcGdfd2FsZHVtcC5zZ21sCkBA IC0xNDEsMTMgKzE0MSwxNyBAQCBQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24KICAgICAgIDx0ZXJt PjxvcHRpb24+LS1wYXRoPTxyZXBsYWNlYWJsZT5wYXRoPC9yZXBsYWNlYWJsZT48L29wdGlvbj48 L3Rlcm0+CiAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgPHBhcmE+Ci0gICAgICAgIFNwZWNpZmll cyBhIGRpcmVjdG9yeSB0byBzZWFyY2ggZm9yIFdBTCBzZWdtZW50IGZpbGVzIG9yIGEKLSAgICAg ICAgZGlyZWN0b3J5IHdpdGggYSA8bGl0ZXJhbD5wZ193YWw8L2xpdGVyYWw+IHN1YmRpcmVjdG9y eSB0aGF0CisgICAgICAgIFNwZWNpZmllcyBhIHRhciBhcmNoaXZlIG9yIGEgZGlyZWN0b3J5IHRv IHNlYXJjaCBmb3IgV0FMIHNlZ21lbnQgZmlsZXMKKyAgICAgICAgb3IgYSBkaXJlY3Rvcnkgd2l0 aCBhIDxsaXRlcmFsPnBnX3dhbDwvbGl0ZXJhbD4gc3ViZGlyZWN0b3J5IHRoYXQKICAgICAgICAg Y29udGFpbnMgc3VjaCBmaWxlcy4gIFRoZSBkZWZhdWx0IGlzIHRvIHNlYXJjaCBpbiB0aGUgY3Vy cmVudAogICAgICAgICBkaXJlY3RvcnksIHRoZSA8bGl0ZXJhbD5wZ193YWw8L2xpdGVyYWw+IHN1 YmRpcmVjdG9yeSBvZiB0aGUKICAgICAgICAgY3VycmVudCBkaXJlY3RvcnksIGFuZCB0aGUgPGxp dGVyYWw+cGdfd2FsPC9saXRlcmFsPiBzdWJkaXJlY3RvcnkKICAgICAgICAgb2YgPGVudmFyPlBH REFUQTwvZW52YXI+LgogICAgICAgIDwvcGFyYT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgSWYg YSB0YXIgYXJjaGl2ZSBpcyBwcm92aWRlZCwgaXRzIFdBTCBzZWdtZW50IGZpbGVzIG11c3QgYmUg aW4KKyAgICAgICAgc2VxdWVudGlhbCBvcmRlcjsgb3RoZXJ3aXNlLCBhbiBlcnJvciB3aWxsIGJl IHJlcG9ydGVkLgorICAgICAgIDwvcGFyYT4KICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwvdmFy bGlzdGVudHJ5PgogCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3dhbGR1bXAvTWFrZWZpbGUgYi9z cmMvYmluL3BnX3dhbGR1bXAvTWFrZWZpbGUKaW5kZXggNGMxZWU2NDk1MDEuLmIyMzQ2MTNlYjUw IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3dhbGR1bXAvTWFrZWZpbGUKKysrIGIvc3JjL2Jpbi9w Z193YWxkdW1wL01ha2VmaWxlCkBAIC0zLDYgKzMsOSBAQAogUEdGSUxFREVTQyA9ICJwZ193YWxk dW1wIC0gZGVjb2RlIGFuZCBkaXNwbGF5IFdBTCIKIFBHQVBQSUNPTj13aW4zMgogCisjIG1ha2Ug dGhlc2UgYXZhaWxhYmxlIHRvIFRBUCB0ZXN0IHNjcmlwdHMKK2V4cG9ydCBUQVIKKwogc3ViZGly ID0gc3JjL2Jpbi9wZ193YWxkdW1wCiB0b3BfYnVpbGRkaXIgPSAuLi8uLi8uLgogaW5jbHVkZSAk KHRvcF9idWlsZGRpcikvc3JjL01ha2VmaWxlLmdsb2JhbApAQCAtMTIsMTEgKzE1LDEzIEBAIE9C SlMgPSBcCiAJJChXSU4zMlJFUykgXAogCWNvbXBhdC5vIFwKIAlwZ193YWxkdW1wLm8gXAorCWFz dHJlYW1lcl93YWxkdW1wLm8gXAogCXJtZ3JkZXNjLm8gXAogCXhsb2dyZWFkZXIubyBcCiAJeGxv Z3N0YXRzLm8KIAotb3ZlcnJpZGUgQ1BQRkxBR1MgOj0gLURGUk9OVEVORCAkKENQUEZMQUdTKQor b3ZlcnJpZGUgQ1BQRkxBR1MgOj0gLURGUk9OVEVORCAtSSQobGlicHFfc3JjZGlyKSAkKENQUEZM QUdTKQorTERGTEFHU19JTlRFUk5BTCArPSAtTCQodG9wX2J1aWxkZGlyKS9zcmMvZmVfdXRpbHMg LWxwZ2ZldXRpbHMKIAogUk1HUkRFU0NTT1VSQ0VTID0gJChzb3J0ICQobm90ZGlyICQod2lsZGNh cmQgJCh0b3Bfc3JjZGlyKS9zcmMvYmFja2VuZC9hY2Nlc3Mvcm1ncmRlc2MvKmRlc2MqLmMpKSkK IFJNR1JERVNDT0JKUyA9ICQocGF0c3Vic3QgJS5jLCUubywkKFJNR1JERVNDU09VUkNFUykpCmRp ZmYgLS1naXQgYS9zcmMvYmluL3BnX3dhbGR1bXAvYXN0cmVhbWVyX3dhbGR1bXAuYyBiL3NyYy9i aW4vcGdfd2FsZHVtcC9hc3RyZWFtZXJfd2FsZHVtcC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IDAwMDAwMDAwMDAwLi5jYWY3ZGE2Y2NiOAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iaW4v cGdfd2FsZHVtcC9hc3RyZWFtZXJfd2FsZHVtcC5jCkBAIC0wLDAgKzEsMzg4IEBACisvKi0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyAqCisgKiBhc3RyZWFtZXJfd2FsZHVtcC5jCisgKgkJQSBnZW5lcmljIGZh Y2lsaXR5IGZvciByZWFkaW5nIFdBTCBkYXRhIGZyb20gdGFyIGFyY2hpdmVzIHZpYSBhcmNoaXZl CisgKgkJc3RyZWFtZXIuCisgKgorICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDI1LCBQb3N0 Z3JlU1FMIEdsb2JhbCBEZXZlbG9wbWVudCBHcm91cAorICoKKyAqIElERU5USUZJQ0FUSU9OCisg KgkJc3JjL2Jpbi9wZ193YWxkdW1wL2FzdHJlYW1lcl93YWxkdW1wLmMKKyAqCisgKi0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAqLworCisjaW5jbHVkZSAicG9zdGdyZXNfZmUuaCIKKworI2luY2x1ZGUgPHVu aXN0ZC5oPgorCisjaW5jbHVkZSAiYWNjZXNzL3hsb2dfaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJh Y2Nlc3MveGxvZ2RlZnMuaCIKKyNpbmNsdWRlICJjb21tb24vbG9nZ2luZy5oIgorI2luY2x1ZGUg ImZlX3V0aWxzL3NpbXBsZV9saXN0LmgiCisjaW5jbHVkZSAicGdfd2FsZHVtcC5oIgorCisvKgor ICogSG93IG1hbnkgYnl0ZXMgc2hvdWxkIHdlIHRyeSB0byByZWFkIGZyb20gYSBmaWxlIGF0IG9u Y2U/CisgKi8KKyNkZWZpbmUgUkVBRF9DSFVOS19TSVpFCQkJCSgxMjggKiAxMDI0KQorCisvKgor ICogV2hlbiBuZXh0U2VnTm8gaXMgMCwgcmVhZCBmcm9tIGFueSBhdmFpbGFibGUgV0FMIGZpbGUu CisgKi8KKyNkZWZpbmUgUkVBRF9BTllfV0FMKG15c3RyZWFtZXIpCSgobXlzdHJlYW1lciktPm5l eHRTZWdObyA9PSAwKQorCit0eXBlZGVmIHN0cnVjdCBhc3RyZWFtZXJfd2FsZHVtcAoreworCS8q IFRoZXNlIGZpZWxkcyBkb24ndCBjaGFuZ2Ugb25jZSBpbml0aWFsaXplZC4gKi8KKwlhc3RyZWFt ZXIJYmFzZTsKKwlYTG9nU2VnTm8Jc3RhcnRTZWdObzsKKwlYTG9nU2VnTm8JZW5kU2VnTm87CisJ WExvZ0R1bXBQcml2YXRlICpwcml2YXRlSW5mbzsKKworCS8qIFRoZXNlIGZpZWxkcyBjaGFuZ2Ug d2l0aCBhcmNoaXZlIG1lbWJlci4gKi8KKwlib29sCQlza2lwVGhpc1NlZzsKKwlYTG9nU2VnTm8J bmV4dFNlZ05vOwkJLyogTmV4dCBleHBlY3RlZCBzZWdtZW50IHRvIHN0cmVhbSAqLworfSBhc3Ry ZWFtZXJfd2FsZHVtcDsKKworc3RhdGljIGludAlhc3RyZWFtZXJfYXJjaGl2ZV9yZWFkKFhMb2dE dW1wUHJpdmF0ZSAqcHJpdmF0ZUluZm8pOworc3RhdGljIHZvaWQgYXN0cmVhbWVyX3dhbGR1bXBf Y29udGVudChhc3RyZWFtZXIgKnN0cmVhbWVyLAorCQkJCQkJCQkJICBhc3RyZWFtZXJfbWVtYmVy ICptZW1iZXIsCisJCQkJCQkJCQkgIGNvbnN0IGNoYXIgKmRhdGEsIGludCBsZW4sCisJCQkJCQkJ CQkgIGFzdHJlYW1lcl9hcmNoaXZlX2NvbnRleHQgY29udGV4dCk7CitzdGF0aWMgdm9pZCBhc3Ry ZWFtZXJfd2FsZHVtcF9maW5hbGl6ZShhc3RyZWFtZXIgKnN0cmVhbWVyKTsKK3N0YXRpYyB2b2lk IGFzdHJlYW1lcl93YWxkdW1wX2ZyZWUoYXN0cmVhbWVyICpzdHJlYW1lcik7CisKK3N0YXRpYyBi b29sIG1lbWJlcl9pc19yZWxldmFudF93YWwoYXN0cmVhbWVyX3dhbGR1bXAgKm15c3RyZWFtZXIs CisJCQkJCQkJCSAgIGFzdHJlYW1lcl9tZW1iZXIgKm1lbWJlciwKKwkJCQkJCQkJICAgVGltZUxp bmVJRCBzdGFydFRpbWVMaW5lSUQsCisJCQkJCQkJCSAgIFhMb2dTZWdObyAqY3VyU2VnTm8pOwor CitzdGF0aWMgY29uc3QgYXN0cmVhbWVyX29wcyBhc3RyZWFtZXJfd2FsZHVtcF9vcHMgPSB7CisJ LmNvbnRlbnQgPSBhc3RyZWFtZXJfd2FsZHVtcF9jb250ZW50LAorCS5maW5hbGl6ZSA9IGFzdHJl YW1lcl93YWxkdW1wX2ZpbmFsaXplLAorCS5mcmVlID0gYXN0cmVhbWVyX3dhbGR1bXBfZnJlZQor fTsKKworLyoKKyAqIENvcGllcyBXQUwgZGF0YSBmcm9tIGFzdHJlYW1lciB0byByZWFkQnVmZjsg aWYgdW5hdmFpbGFibGUsIGZldGNoZXMgbW9yZQorICogZnJvbSB0aGUgdGFyIGFyY2hpdmUgdmlh IGFzdHJlYW1lci4KKyAqLworaW50Cithc3RyZWFtZXJfd2FsX3JlYWQoY2hhciAqcmVhZEJ1ZmYs IFhMb2dSZWNQdHIgdGFyZ2V0UGFnZVB0ciwgU2l6ZSBjb3VudCwKKwkJCQkgICBYTG9nRHVtcFBy aXZhdGUgKnByaXZhdGVJbmZvKQoreworCWNoYXIJICAgKnAgPSByZWFkQnVmZjsKKwlTaXplCQlu Ynl0ZXMgPSBjb3VudDsKKwlYTG9nUmVjUHRyCXJlY3B0ciA9IHRhcmdldFBhZ2VQdHI7CisJdm9s YXRpbGUgU3RyaW5nSW5mbyBhc3RyZWFtZXJfYnVmID0gcHJpdmF0ZUluZm8tPmFyY2hpdmVfc3Ry ZWFtZXJfYnVmOworCisJd2hpbGUgKG5ieXRlcyA+IDApCisJeworCQljaGFyCSAgICpidWYgPSBh c3RyZWFtZXJfYnVmLT5kYXRhOworCQlpbnQJCQlsZW4gPSBhc3RyZWFtZXJfYnVmLT5sZW47CisK KwkJLyogV0FMIHJlY29yZCByYW5nZSB0aGF0IHRoZSBidWZmZXIgY29udGFpbnMgKi8KKwkJWExv Z1JlY1B0cgllbmRQdHIgPSBwcml2YXRlSW5mby0+YXJjaGl2ZV9zdHJlYW1lcl9yZWFkX3B0cjsK KwkJWExvZ1JlY1B0cglzdGFydFB0ciA9IChlbmRQdHIgPiBsZW4pID8gZW5kUHRyIC0gbGVuIDog MDsKKworCQkvKgorCQkgKiBwZ193YWxkdW1wIG5ldmVyIGFzayB0aGUgc2FtZSBXQUwgYnl0ZXMg bW9yZSB0aGFuIG9uY2UsIHNvIGlmIHdlJ3JlCisJCSAqIG5vdyBiZWluZyBhc2tlZCBmb3IgZGF0 YSBiZXlvbmQgdGhlIGVuZCBvZiB3aGF0IHdlJ3ZlIGFscmVhZHkgcmVhZCwKKwkJICogdGhhdCBt ZWFucyBub25lIG9mIHRoZSBkYXRhIHdlIGN1cnJlbnRseSBoYXZlIGluIHRoZSBidWZmZXIgd2ls bAorCQkgKiBldmVyIGJlIGNvbnN1bHRlZCBhZ2Fpbi4gU28sIHdlIGNhbiBkaXNjYXJkIHRoZSBl eGlzdGluZyBidWZmZXIKKwkJICogY29udGVudHMgYW5kIHN0YXJ0IG92ZXIuCisJCSAqLworCQlp ZiAocmVjcHRyID49IGVuZFB0cikKKwkJeworCQkJbGVuID0gMDsKKworCQkJLyogRGlzY2FyZCB0 aGUgYnVmZmVyZWQgZGF0YSAqLworCQkJcmVzZXRTdHJpbmdJbmZvKGFzdHJlYW1lcl9idWYpOwor CQl9CisKKwkJaWYgKGxlbiA+IDAgJiYgcmVjcHRyID4gc3RhcnRQdHIpCisJCXsKKwkJCWludAkJ CXNraXBCeXRlcyA9IDA7CisKKwkJCS8qCisJCQkgKiBUaGUgcmVxdWlyZWQgb2Zmc2V0IGlzIG5v dCBhdCB0aGUgc3RhcnQgb2YgdGhlIGFyY2hpdmUgc3RyZWFtZXIKKwkJCSAqIGJ1ZmZlciwgc28g c2tpcCBieXRlcyB1bnRpbCByZWFjaGluZyB0aGUgZGVzaXJlZCBvZmZzZXQgb2YgdGhlCisJCQkg KiB0YXJnZXQgcGFnZS4KKwkJCSAqLworCQkJc2tpcEJ5dGVzID0gcmVjcHRyIC0gc3RhcnRQdHI7 CisKKwkJCWJ1ZiArPSBza2lwQnl0ZXM7CisJCQlsZW4gLT0gc2tpcEJ5dGVzOworCQl9CisKKwkJ aWYgKGxlbiA+IDApCisJCXsKKwkJCWludAkJCXJlYWRCeXRlcyA9IGxlbiA+PSBuYnl0ZXMgPyBu Ynl0ZXMgOiBsZW47CisKKwkJCS8qCisJCQkgKiBFbnN1cmUgd2UgYXJlIHJlYWRpbmcgdGhlIGNv cnJlY3QgcGFnZSwgdW5sZXNzIHdlJ3ZlIHJlY2VpdmVkCisJCQkgKiBhbiBpbnZhbGlkIHJlY29y ZCBwb2ludGVyLiBJbiB0aGF0IHNwZWNpZmljIGNhc2UsIGl0J3MKKwkJCSAqIGFjY2VwdGFibGUg dG8gcmVhZCBhbnkgcGFnZS4KKwkJCSAqLworCQkJQXNzZXJ0KFhMb2dSZWNQdHJJc0ludmFsaWQo cmVjcHRyKSB8fAorCQkJCSAgIChyZWNwdHIgPj0gc3RhcnRQdHIgJiYgcmVjcHRyIDwgZW5kUHRy KSk7CisKKwkJCW1lbWNweShwLCBidWYsIHJlYWRCeXRlcyk7CisKKwkJCS8qIFVwZGF0ZSBzdGF0 ZSBmb3IgcmVhZCAqLworCQkJbmJ5dGVzIC09IHJlYWRCeXRlczsKKwkJCXAgKz0gcmVhZEJ5dGVz OworCQkJcmVjcHRyICs9IHJlYWRCeXRlczsKKwkJfQorCQllbHNlCisJCXsKKwkJCS8qIEZldGNo IG1vcmUgZGF0YSAqLworCQkJaWYgKGFzdHJlYW1lcl9hcmNoaXZlX3JlYWQocHJpdmF0ZUluZm8p ID09IDApCisJCQl7CisJCQkJY2hhcgkJZm5hbWVbTUFYRk5BTUVMRU5dOworCQkJCVhMb2dTZWdO bwlzZWdubzsKKworCQkJCVhMQnl0ZVRvU2VnKHRhcmdldFBhZ2VQdHIsIHNlZ25vLCBXYWxTZWdT eik7CisJCQkJWExvZ0ZpbGVOYW1lKGZuYW1lLCBwcml2YXRlSW5mby0+dGltZWxpbmUsIHNlZ25v LCBXYWxTZWdTeik7CisKKwkJCQlwZ19mYXRhbCgiY291bGQgbm90IGZpbmQgZmlsZSBcIiVzXCIg aW4gXCIlc1wiIGFyY2hpdmUiLAorCQkJCQkJIGZuYW1lLCBwcml2YXRlSW5mby0+YXJjaGl2ZV9u YW1lKTsKKwkJCX0KKwkJfQorCX0KKworCS8qCisJICogU2hvdWxkIGhhdmUgZWl0aGVyIGhhdmUg c3VjY2Vzc2Z1bGx5IHJlYWQgYWxsIHRoZSByZXF1ZXN0ZWQgYnl0ZXMgb3IKKwkgKiByZXBvcnRl ZCBhIGZhaWx1cmUgYmVmb3JlIHRoaXMgcG9pbnQuCisJICovCisJQXNzZXJ0KG5ieXRlcyA9PSAw KTsKKworCXJldHVybiBjb3VudDsKK30KKworLyoKKyAqIFJlYWRzIHRoZSBhcmNoaXZlIGFuZCBw YXNzZXMgaXQgdG8gdGhlIGFyY2hpdmUgc3RyZWFtZXIgZm9yIGRlY29tcHJlc3Npb24uCisgKi8K K3N0YXRpYyBpbnQKK2FzdHJlYW1lcl9hcmNoaXZlX3JlYWQoWExvZ0R1bXBQcml2YXRlICpwcml2 YXRlSW5mbykKK3sKKwlpbnQJCQlyYzsKKwljaGFyCSAgICpidWZmZXI7CisKKwlidWZmZXIgPSBw Z19tYWxsb2MoUkVBRF9DSFVOS19TSVpFICogc2l6ZW9mKHVpbnQ4KSk7CisKKwkvKiBSZWFkIG1v cmUgZGF0YSBmcm9tIHRoZSB0YXIgZmlsZSAqLworCXJjID0gcmVhZChwcml2YXRlSW5mby0+YXJj aGl2ZV9mZCwgYnVmZmVyLCBSRUFEX0NIVU5LX1NJWkUpOworCWlmIChyYyA8IDApCisJCXBnX2Zh dGFsKCJjb3VsZCBub3QgcmVhZCBmaWxlIFwiJXNcIjogJW0iLAorCQkJCSBwcml2YXRlSW5mby0+ YXJjaGl2ZV9uYW1lKTsKKworCS8qCisJICogRGVjcnlwdCAoaWYgcmVxdWlyZWQpLCBhbmQgdGhl biBwYXJzZSB0aGUgcHJldmlvdXNseSByZWFkIGNvbnRlbnRzIG9mCisJICogdGhlIHRhciBmaWxl LgorCSAqLworCWlmIChyYyA+IDApCisJCWFzdHJlYW1lcl9jb250ZW50KHByaXZhdGVJbmZvLT5h cmNoaXZlX3N0cmVhbWVyLCBOVUxMLAorCQkJCQkJICBidWZmZXIsIHJjLCBBU1RSRUFNRVJfVU5L Tk9XTik7CisJcGdfZnJlZShidWZmZXIpOworCisJcmV0dXJuIHJjOworfQorCisvKgorICogQ3Jl YXRlIGFuIGFzdHJlYW1lciB0aGF0IGNhbiByZWFkIFdBTCBmcm9tIHRhciBmaWxlLgorICovCith c3RyZWFtZXIgKgorYXN0cmVhbWVyX3dhbGR1bXBfbmV3KFhMb2dSZWNQdHIgc3RhcnRwdHIsIFhM b2dSZWNQdHIgZW5kUHRyLAorCQkJCQkgIFhMb2dEdW1wUHJpdmF0ZSAqcHJpdmF0ZUluZm8pCit7 CisJYXN0cmVhbWVyX3dhbGR1bXAgKnN0cmVhbWVyOworCisJc3RyZWFtZXIgPSBwYWxsb2MwKHNp emVvZihhc3RyZWFtZXJfd2FsZHVtcCkpOworCSooKGNvbnN0IGFzdHJlYW1lcl9vcHMgKiopICZz dHJlYW1lci0+YmFzZS5iYnNfb3BzKSA9CisJCSZhc3RyZWFtZXJfd2FsZHVtcF9vcHM7CisKKwlp bml0U3RyaW5nSW5mbygmc3RyZWFtZXItPmJhc2UuYmJzX2J1ZmZlcik7CisKKwlpZiAoWExvZ1Jl Y1B0cklzSW52YWxpZChzdGFydHB0cikpCisJCXN0cmVhbWVyLT5zdGFydFNlZ05vID0gMDsKKwll bHNlCisJeworCQlYTEJ5dGVUb1NlZyhzdGFydHB0ciwgc3RyZWFtZXItPnN0YXJ0U2VnTm8sIFdh bFNlZ1N6KTsKKworCQkvKgorCQkgKiBJbml0aWFsaXplIHRoZSByZWNvcmQgcG9pbnRlciB0byB0 aGUgYmVnaW5uaW5nIG9mIHRoZSBmaXJzdAorCQkgKiBzZWdtZW50OyB0aGlzIHBvaW50ZXIgd2ls bCB0cmFjayB0aGUgV0FMIHJlY29yZCByZWFkaW5nIHN0YXR1cy4KKwkJICovCisJCVhMb2dTZWdO b09mZnNldFRvUmVjUHRyKHN0cmVhbWVyLT5zdGFydFNlZ05vLCAwLCBXYWxTZWdTeiwKKwkJCQkJ CQkJcHJpdmF0ZUluZm8tPmFyY2hpdmVfc3RyZWFtZXJfcmVhZF9wdHIpOworCX0KKworCWlmIChY TG9nUmVjUHRySXNJbnZhbGlkKGVuZFB0cikpCisJCXN0cmVhbWVyLT5lbmRTZWdObyA9IFVJTlQ2 NF9NQVg7CisJZWxzZQorCQlYTEJ5dGVUb1NlZyhlbmRQdHIsIHN0cmVhbWVyLT5lbmRTZWdObywg V2FsU2VnU3opOworCisJc3RyZWFtZXItPm5leHRTZWdObyA9IHN0cmVhbWVyLT5zdGFydFNlZ05v OworCXN0cmVhbWVyLT5wcml2YXRlSW5mbyA9IHByaXZhdGVJbmZvOworCisJcmV0dXJuICZzdHJl YW1lci0+YmFzZTsKK30KKworLyoKKyAqIE1haW4gZW50cnkgcG9pbnQgb2YgdGhlIGFyY2hpdmUg c3RyZWFtZXIgZm9yIHJlYWRpbmcgV0FMIGZyb20gYSB0YXIgZmlsZS4KKyAqLworc3RhdGljIHZv aWQKK2FzdHJlYW1lcl93YWxkdW1wX2NvbnRlbnQoYXN0cmVhbWVyICpzdHJlYW1lciwgYXN0cmVh bWVyX21lbWJlciAqbWVtYmVyLAorCQkJCQkJICBjb25zdCBjaGFyICpkYXRhLCBpbnQgbGVuLAor CQkJCQkJICBhc3RyZWFtZXJfYXJjaGl2ZV9jb250ZXh0IGNvbnRleHQpCit7CisJYXN0cmVhbWVy X3dhbGR1bXAgKm15c3RyZWFtZXIgPSAoYXN0cmVhbWVyX3dhbGR1bXAgKikgc3RyZWFtZXI7CisJ WExvZ0R1bXBQcml2YXRlICpwcml2YXRlSW5mbyA9IG15c3RyZWFtZXItPnByaXZhdGVJbmZvOwor CisJQXNzZXJ0KGNvbnRleHQgIT0gQVNUUkVBTUVSX1VOS05PV04pOworCisJc3dpdGNoIChjb250 ZXh0KQorCXsKKwkJY2FzZSBBU1RSRUFNRVJfTUVNQkVSX0hFQURFUjoKKwkJCXsKKwkJCQlYTG9n U2VnTm8Jc2VnTm87CisKKwkJCQlwZ19sb2dfZGVidWcoInBnX3dhbGR1bXA6IHJlYWRpbmcgXCIl c1wiIiwgbWVtYmVyLT5wYXRobmFtZSk7CisKKwkJCQlteXN0cmVhbWVyLT5za2lwVGhpc1NlZyA9 IGZhbHNlOworCisJCQkJaWYgKCFtZW1iZXJfaXNfcmVsZXZhbnRfd2FsKG15c3RyZWFtZXIsIG1l bWJlciwKKwkJCQkJCQkJCQkJcHJpdmF0ZUluZm8tPnRpbWVsaW5lLCAmc2VnTm8pKQorCQkJCXsK KwkJCQkJbXlzdHJlYW1lci0+c2tpcFRoaXNTZWcgPSB0cnVlOworCQkJCQlicmVhazsKKwkJCQl9 CisKKwkJCQkvKgorCQkJCSAqIEZ1cnRoZXIgY2hlY2tzIGFyZSBza2lwcGVkIGlmIGFueSBXQUwg ZmlsZSBjYW4gYmUgcmVhZC4KKwkJCQkgKiBUaGlzIHR5cGljYWxseSBvY2N1cnMgZHVyaW5nIGlu aXRpYWwgdmVyaWZpY2F0aW9uLgorCQkJCSAqLworCQkJCWlmIChSRUFEX0FOWV9XQUwobXlzdHJl YW1lcikpCisJCQkJCWJyZWFrOworCisJCQkJLyogV0FMIHNlZ21lbnRzIG11c3QgYmUgYXJjaGl2 ZWQgaW4gb3JkZXIgKi8KKwkJCQlpZiAobXlzdHJlYW1lci0+bmV4dFNlZ05vICE9IHNlZ05vKQor CQkJCXsKKwkJCQkJcGdfbG9nX2Vycm9yKCJXQUwgZmlsZXMgYXJlIG5vdCBhcmNoaXZlZCBpbiBz ZXF1ZW50aWFsIG9yZGVyIik7CisJCQkJCXBnX2xvZ19lcnJvcl9kZXRhaWwoIkV4cGVjdGluZyBz ZWdtZW50IG51bWJlciAiIFVJTlQ2NF9GT1JNQVQgIiBidXQgZm91bmQgIiBVSU5UNjRfRk9STUFU ICIuIiwKKwkJCQkJCQkJCQlteXN0cmVhbWVyLT5uZXh0U2VnTm8sIHNlZ05vKTsKKwkJCQkJZXhp dCgxKTsKKwkJCQl9CisKKwkJCQkvKgorCQkJCSAqIFdlIHRyYWNrIHRoZSByZWFkaW5nIG9mIFdB TCBzZWdtZW50IHJlY29yZHMgdXNpbmcgYSBwb2ludGVyCisJCQkJICogdGhhdCdzIGNvbnRpbnVv dXNseSBpbmNyZW1lbnRlZCBieSB0aGUgbGVuZ3RoIG9mIHRoZQorCQkJCSAqIHJlY2VpdmVkIGRh dGEuIFRoaXMgcG9pbnRlciBpcyBjcnVjaWFsIGZvciBzZXJ2aW5nIFdBTCBwYWdlCisJCQkJICog cmVxdWVzdHMgZnJvbSB0aGUgV0FMIGRlY29kaW5nIHJvdXRpbmUsIHNvIGl0IG11c3QgYmUKKwkJ CQkgKiBhY2N1cmF0ZS4KKwkJCQkgKi8KKyNpZmRlZiBVU0VfQVNTRVJUX0NIRUNLSU5HCisJCQkJ aWYgKG15c3RyZWFtZXItPm5leHRTZWdObyAhPSAwKQorCQkJCXsKKwkJCQkJWExvZ1JlY1B0cgly ZWNQdHI7CisKKwkJCQkJWExvZ1NlZ05vT2Zmc2V0VG9SZWNQdHIoc2VnTm8sIDAsIFdhbFNlZ1N6 LCByZWNQdHIpOworCQkJCQlBc3NlcnQocHJpdmF0ZUluZm8tPmFyY2hpdmVfc3RyZWFtZXJfcmVh ZF9wdHIgPT0gcmVjUHRyKTsKKwkJCQl9CisjZW5kaWYKKwkJCQkvKiBVcGRhdGUgdGhlIG5leHQg ZXhwZWN0ZWQgc2VnbWVudCBudW1iZXIgKi8KKwkJCQlteXN0cmVhbWVyLT5uZXh0U2VnTm8gKz0g MTsKKwkJCX0KKwkJCWJyZWFrOworCisJCWNhc2UgQVNUUkVBTUVSX01FTUJFUl9DT05URU5UUzoK KwkJCS8qIFNraXAgdGhpcyBzZWdtZW50ICovCisJCQlpZiAobXlzdHJlYW1lci0+c2tpcFRoaXNT ZWcpCisJCQkJYnJlYWs7CisKKwkJCS8qIE9yLCBjb3B5IGNvbnRlbnRzIHRvIGJ1ZmZlciAqLwor CQkJcHJpdmF0ZUluZm8tPmFyY2hpdmVfc3RyZWFtZXJfcmVhZF9wdHIgKz0gbGVuOworCQkJYXN0 cmVhbWVyX2J1ZmZlcl9ieXRlcyhzdHJlYW1lciwgJmRhdGEsICZsZW4sIGxlbik7CisJCQlicmVh azsKKworCQljYXNlIEFTVFJFQU1FUl9NRU1CRVJfVFJBSUxFUjoKKwkJCWJyZWFrOworCisJCWNh c2UgQVNUUkVBTUVSX0FSQ0hJVkVfVFJBSUxFUjoKKwkJCWJyZWFrOworCisJCWRlZmF1bHQ6CisJ CQkvKiBTaG91bGRuJ3QgaGFwcGVuLiAqLworCQkJcGdfZmF0YWwoInVuZXhwZWN0ZWQgc3RhdGUg d2hpbGUgcGFyc2luZyB0YXIgZmlsZSIpOworCX0KK30KKworLyoKKyAqIEVuZC1vZi1zdHJlYW0g cHJvY2Vzc2luZyBmb3IgYSBhc3RyZWFtZXJfd2FsZHVtcCBzdHJlYW0uCisgKi8KK3N0YXRpYyB2 b2lkCithc3RyZWFtZXJfd2FsZHVtcF9maW5hbGl6ZShhc3RyZWFtZXIgKnN0cmVhbWVyKQorewor CUFzc2VydChzdHJlYW1lci0+YmJzX25leHQgPT0gTlVMTCk7Cit9CisKKy8qCisgKiBGcmVlIG1l bW9yeSBhc3NvY2lhdGVkIHdpdGggYSBhc3RyZWFtZXJfd2FsZHVtcCBzdHJlYW0uCisgKi8KK3N0 YXRpYyB2b2lkCithc3RyZWFtZXJfd2FsZHVtcF9mcmVlKGFzdHJlYW1lciAqc3RyZWFtZXIpCit7 CisJQXNzZXJ0KHN0cmVhbWVyLT5iYnNfbmV4dCA9PSBOVUxMKTsKKworCXBmcmVlKHN0cmVhbWVy LT5iYnNfYnVmZmVyLmRhdGEpOworCXBmcmVlKHN0cmVhbWVyKTsKK30KKworLyoKKyAqIFJldHVy bnMgdHJ1ZSBpZiB0aGUgYXJjaGl2ZSBtZW1iZXIgbmFtZSBtYXRjaGVzIHRoZSBXQUwgbmFtaW5n IGZvcm1hdCBhbmQKKyAqIHRoZSBjb3JyZXNwb25kaW5nIFdBTCBzZWdtZW50IGZhbGxzIHdpdGhp biB0aGUgV0FMIGRlY29kaW5nIHRhcmdldCByYW5nZTsKKyAqIG90aGVyd2lzZSwgcmV0dXJucyBm YWxzZS4KKyAqLworc3RhdGljIGJvb2wKK21lbWJlcl9pc19yZWxldmFudF93YWwoYXN0cmVhbWVy X3dhbGR1bXAgKm15c3RyZWFtZXIsIGFzdHJlYW1lcl9tZW1iZXIgKm1lbWJlciwKKwkJCQkJICAg VGltZUxpbmVJRCBzdGFydFRpbWVMaW5lSUQsIFhMb2dTZWdObyAqY3VyU2VnTm8pCit7CisJaW50 CQkJcGF0aGxlbjsKKwlYTG9nU2VnTm8Jc2VnTm87CisJVGltZUxpbmVJRAl0aW1lbGluZTsKKwlj aGFyCSAgICpmbmFtZTsKKworCS8qIFdlIGFyZSBvbmx5IGludGVyZXN0ZWQgaW4gbm9ybWFsIGZp bGVzLiAqLworCWlmIChtZW1iZXItPmlzX2RpcmVjdG9yeSB8fCBtZW1iZXItPmlzX2xpbmspCisJ CXJldHVybiBmYWxzZTsKKworCXBhdGhsZW4gPSBzdHJsZW4obWVtYmVyLT5wYXRobmFtZSk7CisJ aWYgKHBhdGhsZW4gPCBYTE9HX0ZOQU1FX0xFTikKKwkJcmV0dXJuIGZhbHNlOworCisJLyogV0FM IGZpbGUgY291bGQgYmUgd2l0aCBmdWxsIHBhdGggKi8KKwlmbmFtZSA9IG1lbWJlci0+cGF0aG5h bWUgKyAocGF0aGxlbiAtIFhMT0dfRk5BTUVfTEVOKTsKKwlpZiAoIUlzWExvZ0ZpbGVOYW1lKGZu YW1lKSkKKwkJcmV0dXJuIGZhbHNlOworCisJLyogUGFyc2UgcG9zaXRpb24gZnJvbSBmaWxlICov CisJWExvZ0Zyb21GaWxlTmFtZShmbmFtZSwgJnRpbWVsaW5lLCAmc2VnTm8sIFdhbFNlZ1N6KTsK KworCS8qIE5vIGZ1cnRoZXIgY2hlY2tzIGFyZSBuZWVkZWQgaWYgYW55IGZpbGUgYXNrIHRvIHJl YWQgKi8KKwlpZiAoIVJFQURfQU5ZX1dBTChteXN0cmVhbWVyKSkKKwl7CisJCS8qIElnbm9yZSBp ZiB0aGUgdGltZWxpbmUgaXMgZGlmZmVyZW50ICovCisJCWlmIChzdGFydFRpbWVMaW5lSUQgIT0g dGltZWxpbmUpCisJCQlyZXR1cm4gZmFsc2U7CisKKwkJLyogU2tpcCBpZiB0aGUgY3VycmVudCBz ZWdtZW50IGlzIG5vdCB0aGUgZGVzaXJlZCBvbmUgKi8KKwkJaWYgKG15c3RyZWFtZXItPnN0YXJ0 U2VnTm8gPiBzZWdObyB8fCBteXN0cmVhbWVyLT5lbmRTZWdObyA8IHNlZ05vKQorCQkJcmV0dXJu IGZhbHNlOworCX0KKworCSpjdXJTZWdObyA9IHNlZ05vOworCisJcmV0dXJuIHRydWU7Cit9CmRp ZmYgLS1naXQgYS9zcmMvYmluL3BnX3dhbGR1bXAvbWVzb24uYnVpbGQgYi9zcmMvYmluL3BnX3dh bGR1bXAvbWVzb24uYnVpbGQKaW5kZXggOTM3ZTBkNjg4NDEuLjJhMDMwMGRjMzM5IDEwMDY0NAot LS0gYS9zcmMvYmluL3BnX3dhbGR1bXAvbWVzb24uYnVpbGQKKysrIGIvc3JjL2Jpbi9wZ193YWxk dW1wL21lc29uLmJ1aWxkCkBAIC0zLDYgKzMsNyBAQAogcGdfd2FsZHVtcF9zb3VyY2VzID0gZmls ZXMoCiAgICdjb21wYXQuYycsCiAgICdwZ193YWxkdW1wLmMnLAorICAnYXN0cmVhbWVyX3dhbGR1 bXAuYycsCiAgICdybWdyZGVzYy5jJywKICkKIApAQCAtMTgsNyArMTksNyBAQCBlbmRpZgogCiBw Z193YWxkdW1wID0gZXhlY3V0YWJsZSgncGdfd2FsZHVtcCcsCiAgIHBnX3dhbGR1bXBfc291cmNl cywKLSAgZGVwZW5kZW5jaWVzOiBbZnJvbnRlbmRfY29kZSwgbHo0LCB6c3RkXSwKKyAgZGVwZW5k ZW5jaWVzOiBbZnJvbnRlbmRfY29kZSwgbHo0LCB6c3RkLCBsaWJwcV0sCiAgIGNfYXJnczogWyct REZST05URU5EJ10sICMgbmVlZGVkIGZvciB4bG9ncmVhZGVyIGV0IGFsCiAgIGt3YXJnczogZGVm YXVsdF9iaW5fYXJncywKICkKQEAgLTI5LDYgKzMwLDcgQEAgdGVzdHMgKz0gewogICAnc2QnOiBt ZXNvbi5jdXJyZW50X3NvdXJjZV9kaXIoKSwKICAgJ2JkJzogbWVzb24uY3VycmVudF9idWlsZF9k aXIoKSwKICAgJ3RhcCc6IHsKKyAgICAnZW52JzogeydUQVInOiB0YXIuZm91bmQoKSA/IHRhci5m dWxsX3BhdGgoKSA6ICcnfSwKICAgICAndGVzdHMnOiBbCiAgICAgICAndC8wMDFfYmFzaWMucGwn LAogICAgICAgJ3QvMDAyX3NhdmVfZnVsbHBhZ2UucGwnLApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9w Z193YWxkdW1wL3BnX3dhbGR1bXAuYyBiL3NyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmMK aW5kZXggOGQwY2Q5ZTcxNTYuLjM5M2Q2YmZhOWVmIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3dh bGR1bXAvcGdfd2FsZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmMK QEAgLTMyNiw2ICszMjYsMTQ4IEBAIGlkZW50aWZ5X3RhcmdldF9kaXJlY3RvcnkoY2hhciAqZGly ZWN0b3J5LCBjaGFyICpmbmFtZSkKIAlyZXR1cm4gTlVMTDsJCQkJLyogbm90IHJlYWNoZWQgKi8K IH0KIAorLyoKKyAqIFJldHVybnMgdHJ1ZSBpZiB0aGUgZ2l2ZW4gZmlsZSBpcyBhIHRhciBhcmNo aXZlIGFuZCBvdXRwdXRzIGl0cyBjb21wcmVzc2lvbgorICogYWxnb3JpdGhtLgorICovCitzdGF0 aWMgYm9vbAoraXNfdGFyX2ZpbGUoY29uc3QgY2hhciAqZm5hbWUsIHBnX2NvbXByZXNzX2FsZ29y aXRobSAqY29tcHJlc3Npb24pCit7CisJaW50CQkJZm5hbWVfbGVuID0gc3RybGVuKGZuYW1lKTsK KwlwZ19jb21wcmVzc19hbGdvcml0aG0gY29tcHJlc3NfYWxnbzsKKworCS8qIE5vdywgY2hlY2sg dGhlIGNvbXByZXNzaW9uIHR5cGUgb2YgdGhlIHRhciAqLworCWlmIChmbmFtZV9sZW4gPiA0ICYm CisJCXN0cmNtcChmbmFtZSArIGZuYW1lX2xlbiAtIDQsICIudGFyIikgPT0gMCkKKwkJY29tcHJl c3NfYWxnbyA9IFBHX0NPTVBSRVNTSU9OX05PTkU7CisJZWxzZSBpZiAoZm5hbWVfbGVuID4gNCAm JgorCQkJIHN0cmNtcChmbmFtZSArIGZuYW1lX2xlbiAtIDQsICIudGd6IikgPT0gMCkKKwkJY29t cHJlc3NfYWxnbyA9IFBHX0NPTVBSRVNTSU9OX0daSVA7CisJZWxzZSBpZiAoZm5hbWVfbGVuID4g NyAmJgorCQkJIHN0cmNtcChmbmFtZSArIGZuYW1lX2xlbiAtIDcsICIudGFyLmd6IikgPT0gMCkK KwkJY29tcHJlc3NfYWxnbyA9IFBHX0NPTVBSRVNTSU9OX0daSVA7CisJZWxzZSBpZiAoZm5hbWVf bGVuID4gOCAmJgorCQkJIHN0cmNtcChmbmFtZSArIGZuYW1lX2xlbiAtIDgsICIudGFyLmx6NCIp ID09IDApCisJCWNvbXByZXNzX2FsZ28gPSBQR19DT01QUkVTU0lPTl9MWjQ7CisJZWxzZSBpZiAo Zm5hbWVfbGVuID4gOCAmJgorCQkJIHN0cmNtcChmbmFtZSArIGZuYW1lX2xlbiAtIDgsICIudGFy LnpzdCIpID09IDApCisJCWNvbXByZXNzX2FsZ28gPSBQR19DT01QUkVTU0lPTl9aU1REOworCWVs c2UKKwkJcmV0dXJuIGZhbHNlOworCisJKmNvbXByZXNzaW9uID0gY29tcHJlc3NfYWxnbzsKKwor CXJldHVybiB0cnVlOworfQorCisvKgorICogSW5pdGlhbGl6ZXMgdGhlIHRhciBhcmNoaXZlIHJl YWRlciBhbmQgYSB0ZW1wb3JhcnkgZGlyZWN0b3J5IGZvciBXQUwgZmlsZXMuCisgKi8KK3N0YXRp YyB2b2lkCitpbml0X3Rhcl9hcmNoaXZlX3JlYWRlcihYTG9nRHVtcFByaXZhdGUgKnByaXZhdGUs IGNvbnN0IGNoYXIgKndhbGRpciwKKwkJCQkJCVhMb2dSZWNQdHIgc3RhcnRwdHIsIFhMb2dSZWNQ dHIgZW5kcHRyLAorCQkJCQkJcGdfY29tcHJlc3NfYWxnb3JpdGhtIGNvbXByZXNzaW9uKQorewor CWludAkJCWZkOworCWFzdHJlYW1lciAgKnN0cmVhbWVyOworCisJLyogT3BlbiB0YXIgYXJjaGl2 ZSBhbmQgc3RvcmUgaXRzIGZpbGUgZGVzY3JpcHRvciAqLworCWZkID0gb3Blbl9maWxlX2luX2Rp cmVjdG9yeSh3YWxkaXIsIHByaXZhdGUtPmFyY2hpdmVfbmFtZSk7CisKKwlpZiAoZmQgPCAwKQor CQlwZ19mYXRhbCgiY291bGQgbm90IG9wZW4gZmlsZSBcIiVzXCIiLCBwcml2YXRlLT5hcmNoaXZl X25hbWUpOworCisJcHJpdmF0ZS0+YXJjaGl2ZV9mZCA9IGZkOworCisJLyoKKwkgKiBDcmVhdGUg YW4gYXBwcm9wcmlhdGUgY2hhaW4gb2YgYXJjaGl2ZSBzdHJlYW1lcnMgZm9yIHJlYWRpbmcgdGhl IGdpdmVuCisJICogdGFyIGFyY2hpdmUuCisJICovCisJc3RyZWFtZXIgPSBhc3RyZWFtZXJfd2Fs ZHVtcF9uZXcoc3RhcnRwdHIsIGVuZHB0ciwgcHJpdmF0ZSk7CisKKwkvKgorCSAqIEZpbmFsIGV4 dHJhY3RlZCBXQUwgZGF0YSB3aWxsIHJlc2lkZSBpbiB0aGlzIHN0cmVhbWVyLiBIb3dldmVyLCBz aW5jZQorCSAqIGl0IHNpdHMgYXQgdGhlIGJvdHRvbSBvZiB0aGUgc3RhY2sgYW5kIGlzbid0IGRl c2lnbmVkIHRvIHByb3BhZ2F0ZSBkYXRhCisJICogdXB3YXJkLCB3ZSBuZWVkIHRvIGhvbGQgYSBw b2ludGVyIHRvIGl0cyBkYXRhIGJ1ZmZlciBpbiBvcmRlciB0byBjb3B5LgorCSAqLworCXByaXZh dGUtPmFyY2hpdmVfc3RyZWFtZXJfYnVmID0gJnN0cmVhbWVyLT5iYnNfYnVmZmVyOworCisJLyog QmVmb3JlIHRoYXQgd2UgbXVzdCBwYXJzZSB0aGUgdGFyIGFyY2hpdmUuICovCisJc3RyZWFtZXIg PSBhc3RyZWFtZXJfdGFyX3BhcnNlcl9uZXcoc3RyZWFtZXIpOworCisJLyogQmVmb3JlIHRoYXQg d2UgbXVzdCBkZWNvbXByZXNzLCBpZiBhcmNoaXZlIGlzIGNvbXByZXNzZWQuICovCisJaWYgKGNv bXByZXNzaW9uID09IFBHX0NPTVBSRVNTSU9OX0daSVApCisJCXN0cmVhbWVyID0gYXN0cmVhbWVy X2d6aXBfZGVjb21wcmVzc29yX25ldyhzdHJlYW1lcik7CisJZWxzZSBpZiAoY29tcHJlc3Npb24g PT0gUEdfQ09NUFJFU1NJT05fTFo0KQorCQlzdHJlYW1lciA9IGFzdHJlYW1lcl9sejRfZGVjb21w cmVzc29yX25ldyhzdHJlYW1lcik7CisJZWxzZSBpZiAoY29tcHJlc3Npb24gPT0gUEdfQ09NUFJF U1NJT05fWlNURCkKKwkJc3RyZWFtZXIgPSBhc3RyZWFtZXJfenN0ZF9kZWNvbXByZXNzb3JfbmV3 KHN0cmVhbWVyKTsKKworCXByaXZhdGUtPmFyY2hpdmVfc3RyZWFtZXIgPSBzdHJlYW1lcjsKK30K KworLyoKKyAqIFJlbGVhc2UgdGhlIGFyY2hpdmUgc3RyZWFtZXIgY2hhaW4gYW5kIGNsb3NlIHRo ZSBhcmNoaXZlIGZpbGUuCisgKi8KK3N0YXRpYyB2b2lkCitmcmVlX3Rhcl9hcmNoaXZlX3JlYWRl cihYTG9nRHVtcFByaXZhdGUgKnByaXZhdGUpCit7CisJLyoKKwkgKiBOQjogTm9ybWFsbHksIGFz dHJlYW1lcl9maW5hbGl6ZSgpIGlzIGNhbGxlZCBiZWZvcmUgYXN0cmVhbWVyX2ZyZWUoKSB0bwor CSAqIGZsdXNoIGFueSByZW1haW5pbmcgYnVmZmVyZWQgZGF0YSBvciB0byBlbnN1cmUgdGhlIGVu ZCBvZiB0aGUgdGFyCisJICogYXJjaGl2ZSBpcyByZWFjaGVkLiBIb3dldmVyLCB3aGVuIGRlY29k aW5nIGEgV0FMIGZpbGUsIG9uY2Ugd2UgaGl0IHRoZQorCSAqIGVuZCBMU04sIGFueSByZW1haW5p bmcgV0FMIGRhdGEgaW4gdGhlIGJ1ZmZlciBvciB0aGUgdGFyIGFyY2hpdmUncworCSAqIHVucmVh Y2hlZCBlbmQgY2FuIGJlIHNhZmVseSBpZ25vcmVkLgorCSAqLworCWFzdHJlYW1lcl9mcmVlKHBy aXZhdGUtPmFyY2hpdmVfc3RyZWFtZXIpOworCisJLyogQ2xvc2UgdGhlIGZpbGUuICovCisJaWYg KGNsb3NlKHByaXZhdGUtPmFyY2hpdmVfZmQpICE9IDApCisJCXBnX2xvZ19lcnJvcigiY291bGQg bm90IGNsb3NlIGZpbGUgXCIlc1wiOiAlbSIsCisJCQkJCSBwcml2YXRlLT5hcmNoaXZlX25hbWUp OworfQorCisvKgorICogUmVhZHMgYSBXQUwgcGFnZSBmcm9tIHRoZSBhcmNoaXZlIGFuZCB2ZXJp ZmllcyBXQUwgc2VnbWVudCBzaXplLgorICovCitzdGF0aWMgdm9pZAordmVyaWZ5X3Rhcl9hcmNo aXZlKFhMb2dEdW1wUHJpdmF0ZSAqcHJpdmF0ZSwgY29uc3QgY2hhciAqd2FsZGlyLAorCQkJCSAg IHBnX2NvbXByZXNzX2FsZ29yaXRobSBjb21wcmVzc2lvbikKK3sKKwlQR0FsaWduZWRYTG9nQmxv Y2sgYnVmOworCWludAkJCXI7CisKKwkvKiBJbml0aWFsaXplIHRoZSByZWFkZXIgdG8gc3RyZWFt IFdBTCBkYXRhIGZyb20gYSB0YXIgZmlsZSAqLworCWluaXRfdGFyX2FyY2hpdmVfcmVhZGVyKHBy aXZhdGUsIHdhbGRpciwgSW52YWxpZFhMb2dSZWNQdHIsCisJCQkJCQkJSW52YWxpZFhMb2dSZWNQ dHIsIGNvbXByZXNzaW9uKTsKKworCS8qIFJlYWQgYSB3YWwgcGFnZSAqLworCXIgPSBhc3RyZWFt ZXJfd2FsX3JlYWQoYnVmLmRhdGEsIEludmFsaWRYTG9nUmVjUHRyLCBYTE9HX0JMQ0tTWiwgcHJp dmF0ZSk7CisKKwkvKiBTZXQgV2FsU2VnU3ogaWYgV0FMIGRhdGEgaXMgc3VjY2Vzc2Z1bGx5IHJl YWQgKi8KKwlpZiAociA9PSBYTE9HX0JMQ0tTWikKKwl7CisJCVhMb2dMb25nUGFnZUhlYWRlciBs b25naGRyID0gKFhMb2dMb25nUGFnZUhlYWRlcikgYnVmLmRhdGE7CisKKwkJV2FsU2VnU3ogPSBs b25naGRyLT54bHBfc2VnX3NpemU7CisKKwkJaWYgKCFJc1ZhbGlkV2FsU2VnU2l6ZShXYWxTZWdT eikpCisJCXsKKwkJCXBnX2xvZ19lcnJvcihuZ2V0dGV4dCgiaW52YWxpZCBXQUwgc2VnbWVudCBz aXplIGluIFdBTCBmaWxlIFwiJXNcIiAoJWQgYnl0ZSkiLAorCQkJCQkJCQkgICJpbnZhbGlkIFdB TCBzZWdtZW50IHNpemUgaW4gV0FMIGZpbGUgXCIlc1wiICglZCBieXRlcykiLAorCQkJCQkJCQkg IFdhbFNlZ1N6KSwKKwkJCQkJCSBwcml2YXRlLT5hcmNoaXZlX25hbWUsIFdhbFNlZ1N6KTsKKwkJ CXBnX2xvZ19lcnJvcl9kZXRhaWwoIlRoZSBXQUwgc2VnbWVudCBzaXplIG11c3QgYmUgYSBwb3dl ciBvZiB0d28gYmV0d2VlbiAxIE1CIGFuZCAxIEdCLiIpOworCQkJZXhpdCgxKTsKKwkJfQorCX0K KwllbHNlCisJCXBnX2ZhdGFsKCJjb3VsZCBub3QgcmVhZCBXQUwgZGF0YSBmcm9tIFwiJXNcIiBh cmNoaXZlOiByZWFkICVkIG9mICVkIiwKKwkJCQkgcHJpdmF0ZS0+YXJjaGl2ZV9uYW1lLCByLCBY TE9HX0JMQ0tTWik7CisKKwlmcmVlX3Rhcl9hcmNoaXZlX3JlYWRlcihwcml2YXRlKTsKK30KKwog LyogUmV0dXJucyB0aGUgc2l6ZSBpbiBieXRlcyBvZiB0aGUgZGF0YSB0byBiZSByZWFkLiAqLwog c3RhdGljIGlubGluZSBpbnQKIHJlcXVpcmVkX3JlYWRfbGVuKFhMb2dEdW1wUHJpdmF0ZSAqcHJp dmF0ZSwgWExvZ1JlY1B0ciB0YXJnZXRQYWdlUHRyLApAQCAtNDA2LDcgKzU0OCw3IEBAIFdBTER1 bXBSZWFkUGFnZShYTG9nUmVhZGVyU3RhdGUgKnN0YXRlLCBYTG9nUmVjUHRyIHRhcmdldFBhZ2VQ dHIsIGludCByZXFMZW4sCiAJCQkJWExvZ1JlY1B0ciB0YXJnZXRQdHIsIGNoYXIgKnJlYWRCdWZm KQogewogCVhMb2dEdW1wUHJpdmF0ZSAqcHJpdmF0ZSA9IHN0YXRlLT5wcml2YXRlX2RhdGE7Ci0J aW50CQkJY291bnQgPSByZXF1aXJlZF9yZWFkX2xlbihwcml2YXRlLCB0YXJnZXRQYWdlUHRyLCBy ZXFMZW4pOworCWludAkJCWNvdW50ID0gcmVxdWlyZWRfcmVhZF9sZW4ocHJpdmF0ZSwgdGFyZ2V0 UHRyLCByZXFMZW4pOwogCVdBTFJlYWRFcnJvciBlcnJpbmZvOwogCiAJaWYgKHByaXZhdGUtPmVu ZHB0cl9yZWFjaGVkKQpAQCAtNDM2LDYgKzU3OCw0NCBAQCBXQUxEdW1wUmVhZFBhZ2UoWExvZ1Jl YWRlclN0YXRlICpzdGF0ZSwgWExvZ1JlY1B0ciB0YXJnZXRQYWdlUHRyLCBpbnQgcmVxTGVuLAog CXJldHVybiBjb3VudDsKIH0KIAorLyoKKyAqIHBnX3dhbGR1bXAncyBYTG9nUmVhZGVyUm91dGlu ZS0+c2VnbWVudF9vcGVuIGNhbGxiYWNrIHRvIHN1cHBvcnQgZHVtcGluZyBXQUwKKyAqIGZpbGVz IGZyb20gdGFyIGFyY2hpdmVzLgorICovCitzdGF0aWMgdm9pZAorVGFyV0FMRHVtcE9wZW5TZWdt ZW50KFhMb2dSZWFkZXJTdGF0ZSAqc3RhdGUsIFhMb2dTZWdObyBuZXh0U2VnTm8sCisJCQkJCSAg VGltZUxpbmVJRCAqdGxpX3ApCit7CisJLyogTm8gYWN0aW9uIG5lZWRlZCAqLworfQorCisvKgor ICogcGdfd2FsZHVtcCdzIFhMb2dSZWFkZXJSb3V0aW5lLT5zZWdtZW50X2Nsb3NlIGNhbGxiYWNr LgorICovCitzdGF0aWMgdm9pZAorVGFyV0FMRHVtcENsb3NlU2VnbWVudChYTG9nUmVhZGVyU3Rh dGUgKnN0YXRlKQoreworCS8qIE5vIGFjdGlvbiBuZWVkZWQgKi8KK30KKworLyoKKyAqIHBnX3dh bGR1bXAncyBYTG9nUmVhZGVyUm91dGluZS0+cGFnZV9yZWFkIGNhbGxiYWNrIHRvIHN1cHBvcnQg ZHVtcGluZyBXQUwKKyAqIGZpbGVzIGZyb20gdGFyIGFyY2hpdmVzLgorICovCitzdGF0aWMgaW50 CitUYXJXQUxEdW1wUmVhZFBhZ2UoWExvZ1JlYWRlclN0YXRlICpzdGF0ZSwgWExvZ1JlY1B0ciB0 YXJnZXRQYWdlUHRyLCBpbnQgcmVxTGVuLAorCQkJCSAgIFhMb2dSZWNQdHIgdGFyZ2V0UHRyLCBj aGFyICpyZWFkQnVmZikKK3sKKwlYTG9nRHVtcFByaXZhdGUgKnByaXZhdGUgPSBzdGF0ZS0+cHJp dmF0ZV9kYXRhOworCWludAkJCWNvdW50ID0gcmVxdWlyZWRfcmVhZF9sZW4ocHJpdmF0ZSwgdGFy Z2V0UHRyLCByZXFMZW4pOworCisJaWYgKHByaXZhdGUtPmVuZHB0cl9yZWFjaGVkKQorCQlyZXR1 cm4gLTE7CisKKwkvKiBSZWFkIHRoZSBXQUwgcGFnZSBmcm9tIHRoZSBhcmNoaXZlIHN0cmVhbWVy ICovCisJcmV0dXJuIGFzdHJlYW1lcl93YWxfcmVhZChyZWFkQnVmZiwgdGFyZ2V0UGFnZVB0ciwg Y291bnQsIHByaXZhdGUpOworfQorCiAvKgogICogQm9vbGVhbiB0byByZXR1cm4gd2hldGhlciB0 aGUgZ2l2ZW4gV0FMIHJlY29yZCBtYXRjaGVzIGEgc3BlY2lmaWMgcmVsYXRpb24KICAqIGFuZCBv cHRpb25hbGx5IGJsb2NrLgpAQCAtNzczLDggKzk1Myw4IEBAIHVzYWdlKHZvaWQpCiAJcHJpbnRm KF8oIiAgLUYsIC0tZm9yaz1GT1JLICAgICAgICBvbmx5IHNob3cgcmVjb3JkcyB0aGF0IG1vZGlm eSBibG9ja3MgaW4gZm9yayBGT1JLO1xuIgogCQkJICIgICAgICAgICAgICAgICAgICAgICAgICAg dmFsaWQgbmFtZXMgYXJlIG1haW4sIGZzbSwgdm0sIGluaXRcbiIpKTsKIAlwcmludGYoXygiICAt biwgLS1saW1pdD1OICAgICAgICAgIG51bWJlciBvZiByZWNvcmRzIHRvIGRpc3BsYXlcbiIpKTsK LQlwcmludGYoXygiICAtcCwgLS1wYXRoPVBBVEggICAgICAgIGRpcmVjdG9yeSBpbiB3aGljaCB0 byBmaW5kIFdBTCBzZWdtZW50IGZpbGVzIG9yIGFcbiIKLQkJCSAiICAgICAgICAgICAgICAgICAg ICAgICAgIGRpcmVjdG9yeSB3aXRoIGEgLi9wZ193YWwgdGhhdCBjb250YWlucyBzdWNoIGZpbGVz XG4iCisJcHJpbnRmKF8oIiAgLXAsIC0tcGF0aD1QQVRIICAgICAgICB0YXIgYXJjaGl2ZSBvciBh IGRpcmVjdG9yeSBpbiB3aGljaCB0byBmaW5kIFdBTCBzZWdtZW50IGZpbGVzIG9yXG4iCisJCQkg IiAgICAgICAgICAgICAgICAgICAgICAgICBhIGRpcmVjdG9yeSB3aXRoIGEgLi9wZ193YWwgdGhh dCBjb250YWlucyBzdWNoIGZpbGVzXG4iCiAJCQkgIiAgICAgICAgICAgICAgICAgICAgICAgICAo ZGVmYXVsdDogY3VycmVudCBkaXJlY3RvcnksIC4vcGdfd2FsLCAkUEdEQVRBL3BnX3dhbClcbiIp KTsKIAlwcmludGYoXygiICAtcSwgLS1xdWlldCAgICAgICAgICAgIGRvIG5vdCBwcmludCBhbnkg b3V0cHV0LCBleGNlcHQgZm9yIGVycm9yc1xuIikpOwogCXByaW50ZihfKCIgIC1yLCAtLXJtZ3I9 Uk1HUiAgICAgICAgb25seSBzaG93IHJlY29yZHMgZ2VuZXJhdGVkIGJ5IHJlc291cmNlIG1hbmFn ZXIgUk1HUjtcbiIKQEAgLTgwNiw3ICs5ODYsMTAgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFy Z3YpCiAJWExvZ1JlY29yZCAqcmVjb3JkOwogCVhMb2dSZWNQdHIJZmlyc3RfcmVjb3JkOwogCWNo YXIJICAgKndhbGRpciA9IE5VTEw7CisJY2hhcgkgICAqd2FscGF0aCA9IE5VTEw7CiAJY2hhcgkg ICAqZXJyb3Jtc2c7CisJYm9vbAkJaXNfdGFyID0gZmFsc2U7CisJcGdfY29tcHJlc3NfYWxnb3Jp dGhtIGNvbXByZXNzaW9uOwogCiAJc3RhdGljIHN0cnVjdCBvcHRpb24gbG9uZ19vcHRpb25zW10g PSB7CiAJCXsiYmtwLWRldGFpbHMiLCBub19hcmd1bWVudCwgTlVMTCwgJ2InfSwKQEAgLTkzOCw3 ICsxMTIxLDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCQkJfQogCQkJCWJyZWFr OwogCQkJY2FzZSAncCc6Ci0JCQkJd2FsZGlyID0gcGdfc3RyZHVwKG9wdGFyZyk7CisJCQkJd2Fs cGF0aCA9IHBnX3N0cmR1cChvcHRhcmcpOwogCQkJCWJyZWFrOwogCQkJY2FzZSAncSc6CiAJCQkJ Y29uZmlnLnF1aWV0ID0gdHJ1ZTsKQEAgLTExMDIsMTAgKzEyODUsMjAgQEAgbWFpbihpbnQgYXJn YywgY2hhciAqKmFyZ3YpCiAJCWdvdG8gYmFkX2FyZ3VtZW50OwogCX0KIAotCWlmICh3YWxkaXIg IT0gTlVMTCkKKwlpZiAod2FscGF0aCAhPSBOVUxMKQogCXsKKwkJLyogdmFsaWRhdGUgcGF0aCBw b2ludHMgdG8gdGFyIGFyY2hpdmUgKi8KKwkJaWYgKGlzX3Rhcl9maWxlKHdhbHBhdGgsICZjb21w cmVzc2lvbikpCisJCXsKKwkJCWNoYXIJICAgKmZuYW1lID0gTlVMTDsKKworCQkJc3BsaXRfcGF0 aCh3YWxwYXRoLCAmd2FsZGlyLCAmZm5hbWUpOworCisJCQlwcml2YXRlLmFyY2hpdmVfbmFtZSA9 IGZuYW1lOworCQkJaXNfdGFyID0gdHJ1ZTsKKwkJfQogCQkvKiB2YWxpZGF0ZSBwYXRoIHBvaW50 cyB0byBkaXJlY3RvcnkgKi8KLQkJaWYgKCF2ZXJpZnlfZGlyZWN0b3J5KHdhbGRpcikpCisJCWVs c2UgaWYgKCF2ZXJpZnlfZGlyZWN0b3J5KHdhbHBhdGgpKQogCQl7CiAJCQlwZ19sb2dfZXJyb3Io ImNvdWxkIG5vdCBvcGVuIGRpcmVjdG9yeSBcIiVzXCI6ICVtIiwgd2FsZGlyKTsKIAkJCWdvdG8g YmFkX2FyZ3VtZW50OwpAQCAtMTEyMyw0NiArMTMxNiwzNiBAQCBtYWluKGludCBhcmdjLCBjaGFy ICoqYXJndikKIAkJaW50CQkJZmQ7CiAJCVhMb2dTZWdObwlzZWdubzsKIAorCQkvKgorCQkgKiBJ ZiBhIHRhciBhcmNoaXZlIGlzIHBhc3NlZCB1c2luZyB0aGUgLS1wYXRoIG9wdGlvbiwgYWxsIG90 aGVyCisJCSAqIGFyZ3VtZW50cyBiZWNvbWUgdW5uZWNlc3NhcnkuCisJCSAqLworCQlpZiAoaXNf dGFyKQorCQl7CisJCQlwZ19sb2dfZXJyb3IoInVubmVjZXNzYXJ5IGNvbW1hbmQtbGluZSBhcmd1 bWVudHMgc3BlY2lmaWVkIHdpdGggdGFyIGFyY2hpdmUgKGZpcnN0IGlzIFwiJXNcIikiLAorCQkJ CQkJIGFyZ3Zbb3B0aW5kXSk7CisJCQlnb3RvIGJhZF9hcmd1bWVudDsKKwkJfQorCiAJCXNwbGl0 X3BhdGgoYXJndltvcHRpbmRdLCAmZGlyZWN0b3J5LCAmZm5hbWUpOwogCi0JCWlmICh3YWxkaXIg PT0gTlVMTCAmJiBkaXJlY3RvcnkgIT0gTlVMTCkKKwkJaWYgKHdhbHBhdGggPT0gTlVMTCAmJiBk aXJlY3RvcnkgIT0gTlVMTCkKIAkJewotCQkJd2FsZGlyID0gZGlyZWN0b3J5OworCQkJd2FscGF0 aCA9IGRpcmVjdG9yeTsKIAotCQkJaWYgKCF2ZXJpZnlfZGlyZWN0b3J5KHdhbGRpcikpCisJCQlp ZiAoIXZlcmlmeV9kaXJlY3Rvcnkod2FscGF0aCkpCiAJCQkJcGdfZmF0YWwoImNvdWxkIG5vdCBv cGVuIGRpcmVjdG9yeSBcIiVzXCI6ICVtIiwgd2FsZGlyKTsKIAkJfQogCi0JCXdhbGRpciA9IGlk ZW50aWZ5X3RhcmdldF9kaXJlY3Rvcnkod2FsZGlyLCBmbmFtZSk7Ci0JCWZkID0gb3Blbl9maWxl X2luX2RpcmVjdG9yeSh3YWxkaXIsIGZuYW1lKTsKLQkJaWYgKGZkIDwgMCkKLQkJCXBnX2ZhdGFs KCJjb3VsZCBub3Qgb3BlbiBmaWxlIFwiJXNcIiIsIGZuYW1lKTsKLQkJY2xvc2UoZmQpOwotCi0J CS8qIHBhcnNlIHBvc2l0aW9uIGZyb20gZmlsZSAqLwotCQlYTG9nRnJvbUZpbGVOYW1lKGZuYW1l LCAmcHJpdmF0ZS50aW1lbGluZSwgJnNlZ25vLCBXYWxTZWdTeik7Ci0KLQkJaWYgKFhMb2dSZWNQ dHJJc0ludmFsaWQocHJpdmF0ZS5zdGFydHB0cikpCi0JCQlYTG9nU2VnTm9PZmZzZXRUb1JlY1B0 cihzZWdubywgMCwgV2FsU2VnU3osIHByaXZhdGUuc3RhcnRwdHIpOwotCQllbHNlIGlmICghWExC eXRlSW5TZWcocHJpdmF0ZS5zdGFydHB0ciwgc2Vnbm8sIFdhbFNlZ1N6KSkKKwkJaWYgKGZuYW1l ICE9IE5VTEwgJiYgaXNfdGFyX2ZpbGUoZm5hbWUsICZjb21wcmVzc2lvbikpCiAJCXsKLQkJCXBn X2xvZ19lcnJvcigic3RhcnQgV0FMIGxvY2F0aW9uICVYLyUwOFggaXMgbm90IGluc2lkZSBmaWxl IFwiJXNcIiIsCi0JCQkJCQkgTFNOX0ZPUk1BVF9BUkdTKHByaXZhdGUuc3RhcnRwdHIpLAotCQkJ CQkJIGZuYW1lKTsKLQkJCWdvdG8gYmFkX2FyZ3VtZW50OworCQkJcHJpdmF0ZS5hcmNoaXZlX25h bWUgPSBmbmFtZTsKKwkJCXdhbGRpciA9IHdhbHBhdGggPyBwZ19zdHJkdXAod2FscGF0aCkgOiBw Z19zdHJkdXAoIi4iKTsKKwkJCWlzX3RhciA9IHRydWU7CiAJCX0KLQotCQkvKiBubyBzZWNvbmQg ZmlsZSBzcGVjaWZpZWQsIHNldCBlbmQgcG9zaXRpb24gKi8KLQkJaWYgKCEob3B0aW5kICsgMSA8 IGFyZ2MpICYmIFhMb2dSZWNQdHJJc0ludmFsaWQocHJpdmF0ZS5lbmRwdHIpKQotCQkJWExvZ1Nl Z05vT2Zmc2V0VG9SZWNQdHIoc2Vnbm8gKyAxLCAwLCBXYWxTZWdTeiwgcHJpdmF0ZS5lbmRwdHIp OwotCi0JCS8qIHBhcnNlIEVORFNFRyBpZiBwYXNzZWQgKi8KLQkJaWYgKG9wdGluZCArIDEgPCBh cmdjKQorCQllbHNlCiAJCXsKLQkJCVhMb2dTZWdObwllbmRzZWdubzsKLQotCQkJLyogaWdub3Jl IGRpcmVjdG9yeSwgYWxyZWFkeSBoYXZlIHRoYXQgKi8KLQkJCXNwbGl0X3BhdGgoYXJndltvcHRp bmQgKyAxXSwgJmRpcmVjdG9yeSwgJmZuYW1lKTsKKwkJCXdhbGRpciA9IGlkZW50aWZ5X3Rhcmdl dF9kaXJlY3Rvcnkod2FscGF0aCwgZm5hbWUpOwogCiAJCQlmZCA9IG9wZW5fZmlsZV9pbl9kaXJl Y3Rvcnkod2FsZGlyLCBmbmFtZSk7CiAJCQlpZiAoZmQgPCAwKQpAQCAtMTE3MCwzMiArMTM1Myw3 MCBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJCWNsb3NlKGZkKTsKIAogCQkJLyog cGFyc2UgcG9zaXRpb24gZnJvbSBmaWxlICovCi0JCQlYTG9nRnJvbUZpbGVOYW1lKGZuYW1lLCAm cHJpdmF0ZS50aW1lbGluZSwgJmVuZHNlZ25vLCBXYWxTZWdTeik7CisJCQlYTG9nRnJvbUZpbGVO YW1lKGZuYW1lLCAmcHJpdmF0ZS50aW1lbGluZSwgJnNlZ25vLCBXYWxTZWdTeik7CiAKLQkJCWlm IChlbmRzZWdubyA8IHNlZ25vKQotCQkJCXBnX2ZhdGFsKCJFTkRTRUcgJXMgaXMgYmVmb3JlIFNU QVJUU0VHICVzIiwKLQkJCQkJCSBhcmd2W29wdGluZCArIDFdLCBhcmd2W29wdGluZF0pOworCQkJ aWYgKFhMb2dSZWNQdHJJc0ludmFsaWQocHJpdmF0ZS5zdGFydHB0cikpCisJCQkJWExvZ1NlZ05v T2Zmc2V0VG9SZWNQdHIoc2Vnbm8sIDAsIFdhbFNlZ1N6LCBwcml2YXRlLnN0YXJ0cHRyKTsKKwkJ CWVsc2UgaWYgKCFYTEJ5dGVJblNlZyhwcml2YXRlLnN0YXJ0cHRyLCBzZWdubywgV2FsU2VnU3op KQorCQkJeworCQkJCXBnX2xvZ19lcnJvcigic3RhcnQgV0FMIGxvY2F0aW9uICVYLyUwOFggaXMg bm90IGluc2lkZSBmaWxlIFwiJXNcIiIsCisJCQkJCQkJIExTTl9GT1JNQVRfQVJHUyhwcml2YXRl LnN0YXJ0cHRyKSwKKwkJCQkJCQkgZm5hbWUpOworCQkJCWdvdG8gYmFkX2FyZ3VtZW50OworCQkJ fQogCi0JCQlpZiAoWExvZ1JlY1B0cklzSW52YWxpZChwcml2YXRlLmVuZHB0cikpCi0JCQkJWExv Z1NlZ05vT2Zmc2V0VG9SZWNQdHIoZW5kc2Vnbm8gKyAxLCAwLCBXYWxTZWdTeiwKLQkJCQkJCQkJ CQlwcml2YXRlLmVuZHB0cik7CisJCQkvKiBubyBzZWNvbmQgZmlsZSBzcGVjaWZpZWQsIHNldCBl bmQgcG9zaXRpb24gKi8KKwkJCWlmICghKG9wdGluZCArIDEgPCBhcmdjKSAmJiBYTG9nUmVjUHRy SXNJbnZhbGlkKHByaXZhdGUuZW5kcHRyKSkKKwkJCQlYTG9nU2VnTm9PZmZzZXRUb1JlY1B0cihz ZWdubyArIDEsIDAsIFdhbFNlZ1N6LCBwcml2YXRlLmVuZHB0cik7CiAKLQkJCS8qIHNldCBzZWdu byB0byBlbmRzZWdubyBmb3IgY2hlY2sgb2YgLS1lbmQgKi8KLQkJCXNlZ25vID0gZW5kc2Vnbm87 Ci0JCX0KKwkJCS8qIHBhcnNlIEVORFNFRyBpZiBwYXNzZWQgKi8KKwkJCWlmIChvcHRpbmQgKyAx IDwgYXJnYykKKwkJCXsKKwkJCQlYTG9nU2VnTm8JZW5kc2Vnbm87CisKKwkJCQkvKiBpZ25vcmUg ZGlyZWN0b3J5LCBhbHJlYWR5IGhhdmUgdGhhdCAqLworCQkJCXNwbGl0X3BhdGgoYXJndltvcHRp bmQgKyAxXSwgJmRpcmVjdG9yeSwgJmZuYW1lKTsKKworCQkJCWZkID0gb3Blbl9maWxlX2luX2Rp cmVjdG9yeSh3YWxkaXIsIGZuYW1lKTsKKwkJCQlpZiAoZmQgPCAwKQorCQkJCQlwZ19mYXRhbCgi Y291bGQgbm90IG9wZW4gZmlsZSBcIiVzXCIiLCBmbmFtZSk7CisJCQkJY2xvc2UoZmQpOworCisJ CQkJLyogcGFyc2UgcG9zaXRpb24gZnJvbSBmaWxlICovCisJCQkJWExvZ0Zyb21GaWxlTmFtZShm bmFtZSwgJnByaXZhdGUudGltZWxpbmUsICZlbmRzZWdubywgV2FsU2VnU3opOworCisJCQkJaWYg KGVuZHNlZ25vIDwgc2Vnbm8pCisJCQkJCXBnX2ZhdGFsKCJFTkRTRUcgJXMgaXMgYmVmb3JlIFNU QVJUU0VHICVzIiwKKwkJCQkJCQkgYXJndltvcHRpbmQgKyAxXSwgYXJndltvcHRpbmRdKTsKIAor CQkJCWlmIChYTG9nUmVjUHRySXNJbnZhbGlkKHByaXZhdGUuZW5kcHRyKSkKKwkJCQkJWExvZ1Nl Z05vT2Zmc2V0VG9SZWNQdHIoZW5kc2Vnbm8gKyAxLCAwLCBXYWxTZWdTeiwKKwkJCQkJCQkJCQkJ cHJpdmF0ZS5lbmRwdHIpOwogCi0JCWlmICghWExCeXRlSW5TZWcocHJpdmF0ZS5lbmRwdHIsIHNl Z25vLCBXYWxTZWdTeikgJiYKLQkJCXByaXZhdGUuZW5kcHRyICE9IChzZWdubyArIDEpICogV2Fs U2VnU3opCi0JCXsKLQkJCXBnX2xvZ19lcnJvcigiZW5kIFdBTCBsb2NhdGlvbiAlWC8lMDhYIGlz IG5vdCBpbnNpZGUgZmlsZSBcIiVzXCIiLAotCQkJCQkJIExTTl9GT1JNQVRfQVJHUyhwcml2YXRl LmVuZHB0ciksCi0JCQkJCQkgYXJndlthcmdjIC0gMV0pOwotCQkJZ290byBiYWRfYXJndW1lbnQ7 CisJCQkJLyogc2V0IHNlZ25vIHRvIGVuZHNlZ25vIGZvciBjaGVjayBvZiAtLWVuZCAqLworCQkJ CXNlZ25vID0gZW5kc2Vnbm87CisJCQl9CisKKworCQkJaWYgKCFYTEJ5dGVJblNlZyhwcml2YXRl LmVuZHB0ciwgc2Vnbm8sIFdhbFNlZ1N6KSAmJgorCQkJCXByaXZhdGUuZW5kcHRyICE9IChzZWdu byArIDEpICogV2FsU2VnU3opCisJCQl7CisJCQkJcGdfbG9nX2Vycm9yKCJlbmQgV0FMIGxvY2F0 aW9uICVYLyUwOFggaXMgbm90IGluc2lkZSBmaWxlIFwiJXNcIiIsCisJCQkJCQkJIExTTl9GT1JN QVRfQVJHUyhwcml2YXRlLmVuZHB0ciksCisJCQkJCQkJIGFyZ3ZbYXJnYyAtIDFdKTsKKwkJCQln b3RvIGJhZF9hcmd1bWVudDsKKwkJCX0KIAkJfQogCX0KLQllbHNlCi0JCXdhbGRpciA9IGlkZW50 aWZ5X3RhcmdldF9kaXJlY3Rvcnkod2FsZGlyLCBOVUxMKTsKKwllbHNlIGlmICghaXNfdGFyKQor CQl3YWxkaXIgPSBpZGVudGlmeV90YXJnZXRfZGlyZWN0b3J5KHdhbHBhdGgsIE5VTEwpOworCisJ LyogVmVyaWZ5IHRoYXQgdGhlIGFyY2hpdmUgY29udGFpbnMgdmFsaWQgV0FMIGZpbGVzICovCisJ aWYgKGlzX3RhcikKKwl7CisJCXdhbGRpciA9IHdhbGRpciA/IHBnX3N0cmR1cCh3YWxkaXIpIDog cGdfc3RyZHVwKCIuIik7CisJCXZlcmlmeV90YXJfYXJjaGl2ZSgmcHJpdmF0ZSwgd2FsZGlyLCBj b21wcmVzc2lvbik7CisJfQogCiAJLyogd2UgZG9uJ3Qga25vdyB3aGF0IHRvIHByaW50ICovCiAJ aWYgKFhMb2dSZWNQdHJJc0ludmFsaWQocHJpdmF0ZS5zdGFydHB0cikpCkBAIC0xMjA3LDEyICsx NDI4LDMxIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCS8qIGRvbmUgd2l0aCBhcmd1 bWVudCBwYXJzaW5nLCBkbyB0aGUgYWN0dWFsIHdvcmsgKi8KIAogCS8qIHdlIGhhdmUgZXZlcnl0 aGluZyB3ZSBuZWVkLCBzdGFydCByZWFkaW5nICovCi0JeGxvZ3JlYWRlcl9zdGF0ZSA9Ci0JCVhM b2dSZWFkZXJBbGxvY2F0ZShXYWxTZWdTeiwgd2FsZGlyLAotCQkJCQkJICAgWExfUk9VVElORSgu cGFnZV9yZWFkID0gV0FMRHVtcFJlYWRQYWdlLAotCQkJCQkJCQkJICAuc2VnbWVudF9vcGVuID0g V0FMRHVtcE9wZW5TZWdtZW50LAotCQkJCQkJCQkJICAuc2VnbWVudF9jbG9zZSA9IFdBTER1bXBD bG9zZVNlZ21lbnQpLAotCQkJCQkJICAgJnByaXZhdGUpOworCWlmIChpc190YXIpCisJeworCQkv KiBTZXQgdXAgZm9yIHJlYWRpbmcgdGFyIGZpbGUgKi8KKwkJaW5pdF90YXJfYXJjaGl2ZV9yZWFk ZXIoJnByaXZhdGUsIHdhbGRpciwgcHJpdmF0ZS5zdGFydHB0ciwKKwkJCQkJCQkJcHJpdmF0ZS5l bmRwdHIsIGNvbXByZXNzaW9uKTsKKworCQkvKiBSb3V0aW5lIHRvIGRlY29kZSBXQUwgZmlsZXMg aW4gdGFyIGFyY2hpdmUgKi8KKwkJeGxvZ3JlYWRlcl9zdGF0ZSA9CisJCQlYTG9nUmVhZGVyQWxs b2NhdGUoV2FsU2VnU3osIHdhbGRpciwKKwkJCQkJCQkgICBYTF9ST1VUSU5FKC5wYWdlX3JlYWQg PSBUYXJXQUxEdW1wUmVhZFBhZ2UsCisJCQkJCQkJCQkJICAuc2VnbWVudF9vcGVuID0gVGFyV0FM RHVtcE9wZW5TZWdtZW50LAorCQkJCQkJCQkJCSAgLnNlZ21lbnRfY2xvc2UgPSBUYXJXQUxEdW1w Q2xvc2VTZWdtZW50KSwKKwkJCQkJCQkgICAmcHJpdmF0ZSk7CisJfQorCWVsc2UKKwl7CisJCS8q IFJvdXRpbmUgdG8gZGVjb2RlIFdBTCBmaWxlcyAqLworCQl4bG9ncmVhZGVyX3N0YXRlID0KKwkJ CVhMb2dSZWFkZXJBbGxvY2F0ZShXYWxTZWdTeiwgd2FsZGlyLAorCQkJCQkJCSAgIFhMX1JPVVRJ TkUoLnBhZ2VfcmVhZCA9IFdBTER1bXBSZWFkUGFnZSwKKwkJCQkJCQkJCQkgIC5zZWdtZW50X29w ZW4gPSBXQUxEdW1wT3BlblNlZ21lbnQsCisJCQkJCQkJCQkJICAuc2VnbWVudF9jbG9zZSA9IFdB TER1bXBDbG9zZVNlZ21lbnQpLAorCQkJCQkJCSAgICZwcml2YXRlKTsKKwl9CisKIAlpZiAoIXhs b2dyZWFkZXJfc3RhdGUpCiAJCXBnX2ZhdGFsKCJvdXQgb2YgbWVtb3J5IHdoaWxlIGFsbG9jYXRp bmcgYSBXQUwgcmVhZGluZyBwcm9jZXNzb3IiKTsKIApAQCAtMTMyMSw2ICsxNTYxLDkgQEAgbWFp bihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAKIAlYTG9nUmVhZGVyRnJlZSh4bG9ncmVhZGVyX3N0 YXRlKTsKIAorCWlmIChpc190YXIpCisJCWZyZWVfdGFyX2FyY2hpdmVfcmVhZGVyKCZwcml2YXRl KTsKKwogCXJldHVybiBFWElUX1NVQ0NFU1M7CiAKIGJhZF9hcmd1bWVudDoKZGlmZiAtLWdpdCBh L3NyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmggYi9zcmMvYmluL3BnX3dhbGR1bXAvcGdf d2FsZHVtcC5oCmluZGV4IDllNjJiNjRlYWQ1Li40MjA1ZTBlZjU5NyAxMDA2NDQKLS0tIGEvc3Jj L2Jpbi9wZ193YWxkdW1wL3BnX3dhbGR1bXAuaAorKysgYi9zcmMvYmluL3BnX3dhbGR1bXAvcGdf d2FsZHVtcC5oCkBAIC0xMiw2ICsxMiw4IEBACiAjZGVmaW5lIFBHX1dBTERVTVBfSAogCiAjaW5j bHVkZSAiYWNjZXNzL3hsb2dkZWZzLmgiCisjaW5jbHVkZSAiZmVfdXRpbHMvYXN0cmVhbWVyLmgi CisjaW5jbHVkZSAibGliL3N0cmluZ2luZm8uaCIKIAogZXh0ZXJuIGludAlXYWxTZWdTejsKIApA QCAtMjIsNiArMjQsMjIgQEAgdHlwZWRlZiBzdHJ1Y3QgWExvZ0R1bXBQcml2YXRlCiAJWExvZ1Jl Y1B0cglzdGFydHB0cjsKIAlYTG9nUmVjUHRyCWVuZHB0cjsKIAlib29sCQllbmRwdHJfcmVhY2hl ZDsKKworCS8qIEZpZWxkcyByZXF1aXJlZCB0byByZWFkIFdBTCBmcm9tIGFyY2hpdmUgKi8KKwlj aGFyCSAgICphcmNoaXZlX25hbWU7CS8qIFRhciBhcmNoaXZlIG5hbWUgKi8KKwlpbnQJCQlhcmNo aXZlX2ZkOwkJLyogRmlsZSBkZXNjcmlwdG9yIGZvciB0aGUgb3BlbiB0YXIgZmlsZSAqLworCisJ YXN0cmVhbWVyICAqYXJjaGl2ZV9zdHJlYW1lcjsKKwlTdHJpbmdJbmZvCWFyY2hpdmVfc3RyZWFt ZXJfYnVmOwkvKiBCdWZmZXIgZm9yIHJlY2VpdmluZyBXQUwgZGF0YSAqLworCVhMb2dSZWNQdHIJ YXJjaGl2ZV9zdHJlYW1lcl9yZWFkX3B0cjsgLyogUG9wdWxhdGUgdGhlIGJ1ZmZlciB3aXRoIHJl Y29yZHMKKwkJCQkJCQkJCQkJICB1bnRpbCB0aGlzIHJlY29yZCBwb2ludGVyICovCiB9IFhMb2dE dW1wUHJpdmF0ZTsKIAotI2VuZGlmCQkvKiBlbmQgb2YgUEdfV0FMRFVNUF9IICovCisKK2V4dGVy biBhc3RyZWFtZXIgKmFzdHJlYW1lcl93YWxkdW1wX25ldyhYTG9nUmVjUHRyIHN0YXJ0cHRyLAor CQkJCQkJCQkJCVhMb2dSZWNQdHIgZW5kcHRyLAorCQkJCQkJCQkJCVhMb2dEdW1wUHJpdmF0ZSAq cHJpdmF0ZUluZm8pOworZXh0ZXJuIGludCBhc3RyZWFtZXJfd2FsX3JlYWQoY2hhciAqcmVhZEJ1 ZmYsIFhMb2dSZWNQdHIgc3RhcnRwdHIsIFNpemUgY291bnQsCisJCQkJCQkJICBYTG9nRHVtcFBy aXZhdGUgKnByaXZhdGVJbmZvKTsKKworI2VuZGlmCQkJCQkJCS8qIGVuZCBvZiBQR19XQUxEVU1Q X0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfd2FsZHVtcC90LzAwMV9iYXNpYy5wbCBiL3Ny Yy9iaW4vcGdfd2FsZHVtcC90LzAwMV9iYXNpYy5wbAppbmRleCAxYjcxMmU4ZDc0ZC4uNDQzMTI2 YTljZTYgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfd2FsZHVtcC90LzAwMV9iYXNpYy5wbAorKysg Yi9zcmMvYmluL3BnX3dhbGR1bXAvdC8wMDFfYmFzaWMucGwKQEAgLTMsMTAgKzMsMTMgQEAKIAog dXNlIHN0cmljdDsKIHVzZSB3YXJuaW5ncyBGQVRBTCA9PiAnYWxsJzsKK3VzZSBDd2Q7CiB1c2Ug UG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsK IHVzZSBUZXN0OjpNb3JlOwogCitteSAkdGFyID0gJEVOVntUQVJ9OworCiBwcm9ncmFtX2hlbHBf b2soJ3BnX3dhbGR1bXAnKTsKIHByb2dyYW1fdmVyc2lvbl9vaygncGdfd2FsZHVtcCcpOwogcHJv Z3JhbV9vcHRpb25zX2hhbmRsaW5nX29rKCdwZ193YWxkdW1wJyk7CkBAIC0yMzUsNyArMjM4LDcg QEAgY29tbWFuZF9saWtlKAogc3ViIHRlc3RfcGdfd2FsZHVtcAogewogCWxvY2FsICRUZXN0OjpC dWlsZGVyOjpMZXZlbCA9ICRUZXN0OjpCdWlsZGVyOjpMZXZlbCArIDE7Ci0JbXkgQG9wdHMgPSBA XzsKKwlteSAoJHBhdGgsIEBvcHRzKSA9IEBfOwogCiAJbXkgKCRzdGRvdXQsICRzdGRlcnIpOwog CkBAIC0yNDMsNiArMjQ2LDcgQEAgc3ViIHRlc3RfcGdfd2FsZHVtcAogCQkncGdfd2FsZHVtcCcs CiAJCSctLXN0YXJ0JyA9PiAkc3RhcnRfbHNuLAogCQknLS1lbmQnID0+ICRlbmRfbHNuLAorCQkn LS1wYXRoJyA9PiAkcGF0aCwKIAkJQG9wdHMKIAkgIF0sCiAJICAnPicgPT4gXCRzdGRvdXQsCkBA IC0yNTQsMTEgKzI1OCw1MCBAQCBzdWIgdGVzdF9wZ193YWxkdW1wCiAJcmV0dXJuIEBsaW5lczsK IH0KIAotbXkgQGxpbmVzOworIyBDcmVhdGUgYSB0YXIgYXJjaGl2ZSwgc29ydGluZyB0aGUgZmls ZSBvcmRlcgorc3ViIGdlbmVyYXRlX2FyY2hpdmUKK3sKKwlteSAoJGFyY2hpdmUsICRkaXJlY3Rv cnksICRjb21wcmVzc2lvbl9mbGFncykgPSBAXzsKKworCW15IEBmaWxlczsKKwlvcGVuZGlyIG15 ICRkaCwgJGRpcmVjdG9yeSBvciBkaWUgIm9wZW5kaXI6ICQhIjsKKwl3aGlsZSAobXkgJGVudHJ5 ID0gcmVhZGRpciAkZGgpIHsKKwkJIyBTa2lwICcuJyBhbmQgJy4uJworCQluZXh0IGlmICRlbnRy eSBlcSAnLicgfHwgJGVudHJ5IGVxICcuLic7CisJCXB1c2ggQGZpbGVzLCAkZW50cnk7CisJfQor CWNsb3NlZGlyICRkaDsKKworCUBmaWxlcyA9IHNvcnQgQGZpbGVzOworCisJIyBtb3ZlIGludG8g dGhlIFdBTCBkaXJlY3RvcnkgYmVmb3JlIGFyY2hpdmluZyBmaWxlcworCW15ICRjd2QgPSBnZXRj d2Q7CisJY2hkaXIoJGRpcmVjdG9yeSkgfHwgZGllICJjaGRpcjogJCEiOworCWNvbW1hbmRfb2so WyR0YXIsICRjb21wcmVzc2lvbl9mbGFncywgJGFyY2hpdmUsIEBmaWxlc10pOworCWNoZGlyKCRj d2QpIHx8IGRpZSAiY2hkaXI6ICQhIjsKK30KKworbXkgJHRtcF9kaXIgPSBQb3N0Z3JlU1FMOjpU ZXN0OjpVdGlsczo6dGVtcGRpcl9zaG9ydCgpOwogCiBteSBAc2NlbmFyaW8gPSAoCiAJewotCQkn cGF0aCcgPT4gJG5vZGUtPmRhdGFfZGlyCisJCSdwYXRoJyA9PiAkbm9kZS0+ZGF0YV9kaXIsCisJ CSdpc19hcmNoaXZlJyA9PiAwLAorCQknZW5hYmxlZCcgPT4gMQorCX0sCisJeworCQkncGF0aCcg PT4gIiR0bXBfZGlyL3BnX3dhbC50YXIiLAorCQknY29tcHJlc3Npb25fbWV0aG9kJyA9PiAnbm9u ZScsCisJCSdjb21wcmVzc2lvbl9mbGFncycgPT4gJy1jZicsCisJCSdpc19hcmNoaXZlJyA9PiAx LAorCQknZW5hYmxlZCcgPT4gMQorCX0sCisJeworCQkncGF0aCcgPT4gIiR0bXBfZGlyL3BnX3dh bC50YXIuZ3oiLAorCQknY29tcHJlc3Npb25fbWV0aG9kJyA9PiAnZ3ppcCcsCisJCSdjb21wcmVz c2lvbl9mbGFncycgPT4gJy1jemYnLAorCQknaXNfYXJjaGl2ZScgPT4gMSwKKwkJJ2VuYWJsZWQn ID0+IGNoZWNrX3BnX2NvbmZpZygiI2RlZmluZSBIQVZFX0xJQlogMSIpCiAJfSk7CiAKIGZvciBt eSAkc2NlbmFyaW8gKEBzY2VuYXJpbykKQEAgLTI2Nyw2ICszMTAsMTkgQEAgZm9yIG15ICRzY2Vu YXJpbyAoQHNjZW5hcmlvKQogCiAJU0tJUDoKIAl7CisJCXNraXAgInRhciBjb21tYW5kIGlzIG5v dCBhdmFpbGFibGUiLCAzCisJCSAgaWYgIWRlZmluZWQgJHRhcjsKKwkJc2tpcCAiJHNjZW5hcmlv LT57J2NvbXByZXNzaW9uX21ldGhvZCd9IGNvbXByZXNzaW9uIG5vdCBzdXBwb3J0ZWQgYnkgdGhp cyBidWlsZCIsIDMKKwkJICBpZiAhJHNjZW5hcmlvLT57J2VuYWJsZWQnfSAmJiAkc2NlbmFyaW8t PnsnaXNfYXJjaGl2ZSd9OworCisJCSAgIyBjcmVhdGUgcGdfd2FsIGFyY2hpdmUKKwkJICBpZiAo JHNjZW5hcmlvLT57J2lzX2FyY2hpdmUnfSkKKwkJICB7CisJCQkgIGdlbmVyYXRlX2FyY2hpdmUo JHBhdGgsCisJCQkJICAkbm9kZS0+ZGF0YV9kaXIgLiAnL3BnX3dhbCcsCisJCQkJICAkc2NlbmFy aW8tPnsnY29tcHJlc3Npb25fZmxhZ3MnfSk7CisJCSAgfQorCiAJCWNvbW1hbmRfZmFpbHNfbGlr ZSgKIAkJCVsgJ3BnX3dhbGR1bXAnLCAnLS1wYXRoJyA9PiAkcGF0aCBdLAogCQkJcXIvZXJyb3I6 IG5vIHN0YXJ0IFdBTCBsb2NhdGlvbiBnaXZlbi8sCkBAIC0yOTgsMzggKzM1NCw0MiBAQCBmb3Ig bXkgJHNjZW5hcmlvIChAc2NlbmFyaW8pCiAJCQlxci9lcnJvcjogZXJyb3IgaW4gV0FMIHJlY29y ZCBhdC8sCiAJCQknZXJyb3JzIGFyZSBzaG93biB3aXRoIC0tcXVpZXQnKTsKIAotCQlAbGluZXMg PSB0ZXN0X3BnX3dhbGR1bXAoJy0tcGF0aCcgPT4gJHBhdGgpOworCQlteSBAbGluZXM7CisJCUBs aW5lcyA9IHRlc3RfcGdfd2FsZHVtcCgkcGF0aCk7CiAJCWlzKGdyZXAoIS9ecm1ncjogXHcvLCBA bGluZXMpLCAwLCAnYWxsIG91dHB1dCBsaW5lcyBhcmUgcm1nciBsaW5lcycpOwogCi0JCUBsaW5l cyA9IHRlc3RfcGdfd2FsZHVtcCgnLS1wYXRoJyA9PiAkcGF0aCwgJy0tbGltaXQnID0+IDYpOwor CQlAbGluZXMgPSB0ZXN0X3BnX3dhbGR1bXAoJHBhdGgsICctLWxpbWl0JyA9PiA2KTsKIAkJaXMo QGxpbmVzLCA2LCAnbGltaXQgb3B0aW9uIG9ic2VydmVkJyk7CiAKLQkJQGxpbmVzID0gdGVzdF9w Z193YWxkdW1wKCctLXBhdGgnID0+ICRwYXRoLCAnLS1mdWxscGFnZScpOworCQlAbGluZXMgPSB0 ZXN0X3BnX3dhbGR1bXAoJHBhdGgsICctLWZ1bGxwYWdlJyk7CiAJCWlzKGdyZXAoIS9ecm1ncjou KlxiRlBXXGIvLCBAbGluZXMpLCAwLCAnYWxsIG91dHB1dCBsaW5lcyBhcmUgRlBXJyk7CiAKLQkJ QGxpbmVzID0gdGVzdF9wZ193YWxkdW1wKCctLXBhdGgnID0+ICRwYXRoLCAnLS1zdGF0cycpOwor CQlAbGluZXMgPSB0ZXN0X3BnX3dhbGR1bXAoJHBhdGgsICctLXN0YXRzJyk7CiAJCWxpa2UoJGxp bmVzWzBdLCBxci9XQUwgc3RhdGlzdGljcy8sICJzdGF0aXN0aWNzIG9uIHN0ZG91dCIpOwogCQlp cyhncmVwKC9ecm1ncjovLCBAbGluZXMpLCAwLCAnbm8gcm1nciBsaW5lcyBvdXRwdXQnKTsKIAot CQlAbGluZXMgPSB0ZXN0X3BnX3dhbGR1bXAoJy0tcGF0aCcgPT4gJHBhdGgsICctLXN0YXRzPXJl Y29yZCcpOworCQlAbGluZXMgPSB0ZXN0X3BnX3dhbGR1bXAoJHBhdGgsICctLXN0YXRzPXJlY29y ZCcpOwogCQlsaWtlKCRsaW5lc1swXSwgcXIvV0FMIHN0YXRpc3RpY3MvLCAic3RhdGlzdGljcyBv biBzdGRvdXQiKTsKIAkJaXMoZ3JlcCgvXnJtZ3I6LywgQGxpbmVzKSwgMCwgJ25vIHJtZ3IgbGlu ZXMgb3V0cHV0Jyk7CiAKLQkJQGxpbmVzID0gdGVzdF9wZ193YWxkdW1wKCctLXBhdGgnID0+ICRw YXRoLCAnLS1ybWdyJyA9PiAnQnRyZWUnKTsKKwkJQGxpbmVzID0gdGVzdF9wZ193YWxkdW1wKCRw YXRoLCAnLS1ybWdyJyA9PiAnQnRyZWUnKTsKIAkJaXMoZ3JlcCghL15ybWdyOiBCdHJlZS8sIEBs aW5lcyksIDAsICdvbmx5IEJ0cmVlIGxpbmVzJyk7CiAKLQkJQGxpbmVzID0gdGVzdF9wZ193YWxk dW1wKCctLXBhdGgnID0+ICRwYXRoLCAnLS1mb3JrJyA9PiAnaW5pdCcpOworCQlAbGluZXMgPSB0 ZXN0X3BnX3dhbGR1bXAoJHBhdGgsICctLWZvcmsnID0+ICdpbml0Jyk7CiAJCWlzKGdyZXAoIS9m b3JrIGluaXQvLCBAbGluZXMpLCAwLCAnb25seSBpbml0IGZvcmsgbGluZXMnKTsKIAotCQlAbGlu ZXMgPSB0ZXN0X3BnX3dhbGR1bXAoJy0tcGF0aCcgPT4gJHBhdGgsCisJCUBsaW5lcyA9IHRlc3Rf cGdfd2FsZHVtcCgkcGF0aCwKIAkJCSctLXJlbGF0aW9uJyA9PiAiJGRlZmF1bHRfdHNfb2lkLyRw b3N0Z3Jlc19kYl9vaWQvJHJlbF90MV9vaWQiKTsKIAkJaXMoZ3JlcCghL3JlbCAkZGVmYXVsdF90 c19vaWRcLyRwb3N0Z3Jlc19kYl9vaWRcLyRyZWxfdDFfb2lkLywgQGxpbmVzKSwKIAkJCTAsICdv bmx5IGxpbmVzIGZvciBzZWxlY3RlZCByZWxhdGlvbicpOwogCi0JCUBsaW5lcyA9IHRlc3RfcGdf d2FsZHVtcCgnLS1wYXRoJyA9PiAkcGF0aCwKKwkJQGxpbmVzID0gdGVzdF9wZ193YWxkdW1wKCRw YXRoLAogCQkJJy0tcmVsYXRpb24nID0+ICIkZGVmYXVsdF90c19vaWQvJHBvc3RncmVzX2RiX29p ZC8kcmVsX2kxYV9vaWQiLAogCQkJJy0tYmxvY2snID0+IDEpOwogCQlpcyhncmVwKCEvXGJibGsg MVxiLywgQGxpbmVzKSwgMCwgJ29ubHkgbGluZXMgZm9yIHNlbGVjdGVkIGJsb2NrJyk7CisKKwkJ IyBDbGVhbnVwLgorCQl1bmxpbmsgJHBhdGggaWYgJHNjZW5hcmlvLT57J2lzX2FyY2hpdmUnfTsK IAl9CiB9CiAKZGlmZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIv c3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggYTEzZTgxNjI4OTAuLmI0MDZj YTA0MWVjIDEwMDY0NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysg Yi9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtMzQ0NCw2ICszNDQ0LDcgQEAg YXN0cmVhbWVyX3JlY292ZXJ5X2luamVjdG9yCiBhc3RyZWFtZXJfdGFyX2FyY2hpdmVyCiBhc3Ry ZWFtZXJfdGFyX3BhcnNlcgogYXN0cmVhbWVyX3ZlcmlmeQorYXN0cmVhbWVyX3dhbGR1bXAKIGFz dHJlYW1lcl96c3RkX2ZyYW1lCiBhdXRoX3Bhc3N3b3JkX2hvb2tfdHlwCiBhdXRvdmFjX3RhYmxl Ci0tIAoyLjQ3LjEKCg== --0000000000009207e5063f9be993 Content-Type: application/x-patch; name="v4-0005-pg_waldump-Remove-the-restriction-on-the-order-of.patch" Content-Disposition: attachment; filename="v4-0005-pg_waldump-Remove-the-restriction-on-the-order-of.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfz57j5d4 RnJvbSBkNzlhNTA1YWY5NTMyYmFhZTY3NTU1N2RlMGVmYjFiY2MzNWQ3MmY1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IE1v biwgMjUgQXVnIDIwMjUgMTc6MjY6MjkgKzA1MzAKU3ViamVjdDogW1BBVENIIHY0IDUvOF0gcGdf d2FsZHVtcDogUmVtb3ZlIHRoZSByZXN0cmljdGlvbiBvbiB0aGUgb3JkZXIgb2YKIGFyY2hpdmVk IFdBTCBmaWxlcy4KCldpdGggcHJldmlvdXMgcGF0Y2gsIHBnX3dhbGR1bXAgd291bGQgc3RvcCBk ZWNvZGluZyBpZiBXQUwgZmlsZXMgd2VyZQpub3QgaW4gdGhlIHJlcXVpcmVkIHNlcXVlbmNlLiBX aXRoIHRoaXMgcGF0Y2gsIGRlY29kaW5nIHdpbGwgbm93CmNvbnRpbnVlLiAgQW55IFdBTCBmaWxl IHRoYXQgaXMgb3V0IG9mIG9yZGVyIHdpbGwgYmUgd3JpdHRlbiB0byBhCnRlbXBvcmFyeSBsb2Nh dGlvbiwgZnJvbSB3aGljaCBpdCB3aWxsIGJlIHJlYWQgbGF0ZXIuIE9uY2UgYSB0ZW1wb3JhcnkK ZmlsZSBoYXMgYmVlbiByZWFkLCBpdCB3aWxsIGJlIHJlbW92ZWQuCi0tLQogZG9jL3NyYy9zZ21s L3JlZi9wZ193YWxkdW1wLnNnbWwgICAgICAgfCAgIDcgKy0KIHNyYy9iaW4vcGdfd2FsZHVtcC9h c3RyZWFtZXJfd2FsZHVtcC5jIHwgMjE0ICsrKysrKysrKysrKysrKysrKysrKy0tLS0KIHNyYy9i aW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmMgICAgICAgIHwgMTEyICsrKysrKysrKysrKy0KIHNy Yy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmggICAgICAgIHwgIDMwICsrKy0KIHNyYy9iaW4v cGdfd2FsZHVtcC90LzAwMV9iYXNpYy5wbCAgICAgIHwgICAzICstCiA1IGZpbGVzIGNoYW5nZWQs IDMyMyBpbnNlcnRpb25zKCspLCA0MyBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3Jj L3NnbWwvcmVmL3BnX3dhbGR1bXAuc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvcGdfd2FsZHVtcC5z Z21sCmluZGV4IGQwMDRiYjBmNjdlLi5jMWFmYjQwOTdiNSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9z Z21sL3JlZi9wZ193YWxkdW1wLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9wZ193YWxkdW1w LnNnbWwKQEAgLTE0OSw4ICsxNDksMTEgQEAgUG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCiAgICAg ICAgIG9mIDxlbnZhcj5QR0RBVEE8L2VudmFyPi4KICAgICAgICA8L3BhcmE+CiAgICAgICAgPHBh cmE+Ci0gICAgICAgIElmIGEgdGFyIGFyY2hpdmUgaXMgcHJvdmlkZWQsIGl0cyBXQUwgc2VnbWVu dCBmaWxlcyBtdXN0IGJlIGluCi0gICAgICAgIHNlcXVlbnRpYWwgb3JkZXI7IG90aGVyd2lzZSwg YW4gZXJyb3Igd2lsbCBiZSByZXBvcnRlZC4KKyAgICAgICAgSWYgYSB0YXIgYXJjaGl2ZSBpcyBw cm92aWRlZCBhbmQgaXRzIFdBTCBzZWdtZW50IGZpbGVzIGFyZSBub3QgaW4KKyAgICAgICAgc2Vx dWVudGlhbCBvcmRlciwgdGhvc2UgZmlsZXMgd2lsbCBiZSB3cml0dGVuIHRlbXBvcmFyaWx5LiBU aGVzZSBmaWxlcworICAgICAgICB3aWxsIGJlIGNyZWF0ZWQgaW5zaWRlIHRoZSBkaXJlY3Rvcnkg c3BlY2lmaWVkIGJ5IHRoZSA8ZW52YXI+VE1QRElSPC9lbnZhcj4KKyAgICAgICAgZW52aXJvbm1l bnQgdmFyaWFibGUgaWYgaXQgaXMgc2V0OyBvdGhlcndpc2UsIHRoZSB0ZW1wb3JhcnkgZmlsZXMg d2lsbAorICAgICAgICBiZSBjcmVhdGVkIHdpdGhpbiB0aGUgc2FtZSBkaXJlY3RvcnkgYXMgdGhl IHRhciBhcmNoaXZlIGl0c2VsZi4KICAgICAgICA8L3BhcmE+CiAgICAgICA8L2xpc3RpdGVtPgog ICAgICA8L3Zhcmxpc3RlbnRyeT4KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfd2FsZHVtcC9hc3Ry ZWFtZXJfd2FsZHVtcC5jIGIvc3JjL2Jpbi9wZ193YWxkdW1wL2FzdHJlYW1lcl93YWxkdW1wLmMK aW5kZXggY2FmN2RhNmNjYjguLjQwODc2Yzc3ZjZjIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3dh bGR1bXAvYXN0cmVhbWVyX3dhbGR1bXAuYworKysgYi9zcmMvYmluL3BnX3dhbGR1bXAvYXN0cmVh bWVyX3dhbGR1bXAuYwpAQCAtMTgsOCArMTgsOCBAQAogCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2df aW50ZXJuYWwuaCIKICNpbmNsdWRlICJhY2Nlc3MveGxvZ2RlZnMuaCIKKyNpbmNsdWRlICJjb21t b24vZmlsZV9wZXJtLmgiCiAjaW5jbHVkZSAiY29tbW9uL2xvZ2dpbmcuaCIKLSNpbmNsdWRlICJm ZV91dGlscy9zaW1wbGVfbGlzdC5oIgogI2luY2x1ZGUgInBnX3dhbGR1bXAuaCIKIAogLyoKQEAg LTQyLDEwICs0MiwxMSBAQCB0eXBlZGVmIHN0cnVjdCBhc3RyZWFtZXJfd2FsZHVtcAogCiAJLyog VGhlc2UgZmllbGRzIGNoYW5nZSB3aXRoIGFyY2hpdmUgbWVtYmVyLiAqLwogCWJvb2wJCXNraXBU aGlzU2VnOworCWJvb2wJCXdyaXRlVGhpc1NlZzsKKwlGSUxFCSAgICpzZWdGcDsKIAlYTG9nU2Vn Tm8JbmV4dFNlZ05vOwkJLyogTmV4dCBleHBlY3RlZCBzZWdtZW50IHRvIHN0cmVhbSAqLwogfSBh c3RyZWFtZXJfd2FsZHVtcDsKIAotc3RhdGljIGludAlhc3RyZWFtZXJfYXJjaGl2ZV9yZWFkKFhM b2dEdW1wUHJpdmF0ZSAqcHJpdmF0ZUluZm8pOwogc3RhdGljIHZvaWQgYXN0cmVhbWVyX3dhbGR1 bXBfY29udGVudChhc3RyZWFtZXIgKnN0cmVhbWVyLAogCQkJCQkJCQkJICBhc3RyZWFtZXJfbWVt YmVyICptZW1iZXIsCiAJCQkJCQkJCQkgIGNvbnN0IGNoYXIgKmRhdGEsIGludCBsZW4sCkBAIC01 Niw3ICs1NywxMiBAQCBzdGF0aWMgdm9pZCBhc3RyZWFtZXJfd2FsZHVtcF9mcmVlKGFzdHJlYW1l ciAqc3RyZWFtZXIpOwogc3RhdGljIGJvb2wgbWVtYmVyX2lzX3JlbGV2YW50X3dhbChhc3RyZWFt ZXJfd2FsZHVtcCAqbXlzdHJlYW1lciwKIAkJCQkJCQkJICAgYXN0cmVhbWVyX21lbWJlciAqbWVt YmVyLAogCQkJCQkJCQkgICBUaW1lTGluZUlEIHN0YXJ0VGltZUxpbmVJRCwKKwkJCQkJCQkJICAg Y2hhciAqKmN1ckZuYW1lLAogCQkJCQkJCQkgICBYTG9nU2VnTm8gKmN1clNlZ05vKTsKK3N0YXRp YyBGSUxFICptZW1iZXJfcHJlcGFyZV90bXBfd3JpdGUoWExvZ1NlZ05vIGN1clNlZ05vLAorCQkJ CQkJCQkJICBjb25zdCBjaGFyICpmbmFtZSk7CitzdGF0aWMgWExvZ1NlZ05vIG1lbWJlcl9uZXh0 X3NlZ25vKFhMb2dTZWdObyBjdXJTZWdObywKKwkJCQkJCQkJICAgVGltZUxpbmVJRCB0aW1lbGlu ZSk7CiAKIHN0YXRpYyBjb25zdCBhc3RyZWFtZXJfb3BzIGFzdHJlYW1lcl93YWxkdW1wX29wcyA9 IHsKIAkuY29udGVudCA9IGFzdHJlYW1lcl93YWxkdW1wX2NvbnRlbnQsCkBAIC0xNjQsNyArMTcw LDcgQEAgYXN0cmVhbWVyX3dhbF9yZWFkKGNoYXIgKnJlYWRCdWZmLCBYTG9nUmVjUHRyIHRhcmdl dFBhZ2VQdHIsIFNpemUgY291bnQsCiAvKgogICogUmVhZHMgdGhlIGFyY2hpdmUgYW5kIHBhc3Nl cyBpdCB0byB0aGUgYXJjaGl2ZSBzdHJlYW1lciBmb3IgZGVjb21wcmVzc2lvbi4KICAqLwotc3Rh dGljIGludAoraW50CiBhc3RyZWFtZXJfYXJjaGl2ZV9yZWFkKFhMb2dEdW1wUHJpdmF0ZSAqcHJp dmF0ZUluZm8pCiB7CiAJaW50CQkJcmM7CkBAIC0yMDgsMTcgKzIxNCw4IEBAIGFzdHJlYW1lcl93 YWxkdW1wX25ldyhYTG9nUmVjUHRyIHN0YXJ0cHRyLCBYTG9nUmVjUHRyIGVuZFB0ciwKIAlpZiAo WExvZ1JlY1B0cklzSW52YWxpZChzdGFydHB0cikpCiAJCXN0cmVhbWVyLT5zdGFydFNlZ05vID0g MDsKIAllbHNlCi0JewogCQlYTEJ5dGVUb1NlZyhzdGFydHB0ciwgc3RyZWFtZXItPnN0YXJ0U2Vn Tm8sIFdhbFNlZ1N6KTsKIAotCQkvKgotCQkgKiBJbml0aWFsaXplIHRoZSByZWNvcmQgcG9pbnRl ciB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBmaXJzdAotCQkgKiBzZWdtZW50OyB0aGlzIHBvaW50 ZXIgd2lsbCB0cmFjayB0aGUgV0FMIHJlY29yZCByZWFkaW5nIHN0YXR1cy4KLQkJICovCi0JCVhM b2dTZWdOb09mZnNldFRvUmVjUHRyKHN0cmVhbWVyLT5zdGFydFNlZ05vLCAwLCBXYWxTZWdTeiwK LQkJCQkJCQkJcHJpdmF0ZUluZm8tPmFyY2hpdmVfc3RyZWFtZXJfcmVhZF9wdHIpOwotCX0KLQog CWlmIChYTG9nUmVjUHRySXNJbnZhbGlkKGVuZFB0cikpCiAJCXN0cmVhbWVyLT5lbmRTZWdObyA9 IFVJTlQ2NF9NQVg7CiAJZWxzZQpAQCAtMjQ3LDE0ICsyNDQsMTYgQEAgYXN0cmVhbWVyX3dhbGR1 bXBfY29udGVudChhc3RyZWFtZXIgKnN0cmVhbWVyLCBhc3RyZWFtZXJfbWVtYmVyICptZW1iZXIs CiAJewogCQljYXNlIEFTVFJFQU1FUl9NRU1CRVJfSEVBREVSOgogCQkJewotCQkJCVhMb2dTZWdO bwlzZWdObzsKKwkJCQljaGFyCSAgICpmbmFtZTsKIAogCQkJCXBnX2xvZ19kZWJ1ZygicGdfd2Fs ZHVtcDogcmVhZGluZyBcIiVzXCIiLCBtZW1iZXItPnBhdGhuYW1lKTsKIAogCQkJCW15c3RyZWFt ZXItPnNraXBUaGlzU2VnID0gZmFsc2U7CisJCQkJbXlzdHJlYW1lci0+d3JpdGVUaGlzU2VnID0g ZmFsc2U7CiAKIAkJCQlpZiAoIW1lbWJlcl9pc19yZWxldmFudF93YWwobXlzdHJlYW1lciwgbWVt YmVyLAotCQkJCQkJCQkJCQlwcml2YXRlSW5mby0+dGltZWxpbmUsICZzZWdObykpCisJCQkJCQkJ CQkJCXByaXZhdGVJbmZvLT50aW1lbGluZSwKKwkJCQkJCQkJCQkJJmZuYW1lLCAmcHJpdmF0ZUlu Zm8tPmN1clNlZ05vKSkKIAkJCQl7CiAJCQkJCW15c3RyZWFtZXItPnNraXBUaGlzU2VnID0gdHJ1 ZTsKIAkJCQkJYnJlYWs7CkBAIC0yNjcsMzMgKzI2Niw2NyBAQCBhc3RyZWFtZXJfd2FsZHVtcF9j b250ZW50KGFzdHJlYW1lciAqc3RyZWFtZXIsIGFzdHJlYW1lcl9tZW1iZXIgKm1lbWJlciwKIAkJ CQlpZiAoUkVBRF9BTllfV0FMKG15c3RyZWFtZXIpKQogCQkJCQlicmVhazsKIAotCQkJCS8qIFdB TCBzZWdtZW50cyBtdXN0IGJlIGFyY2hpdmVkIGluIG9yZGVyICovCi0JCQkJaWYgKG15c3RyZWFt ZXItPm5leHRTZWdObyAhPSBzZWdObykKKwkJCQkvKgorCQkJCSAqIFdoZW4gV0FMIHNlZ21lbnRz IGFyZSBub3QgYXJjaGl2ZWQgc2VxdWVudGlhbGx5LCBpdCBiZWNvbWVzCisJCQkJICogbmVjZXNz YXJ5IHRvIHdyaXRlIG91dCAob3IgcHJlc2VydmUpIHNlZ21lbnRzIHRoYXQgbWlnaHQgYmUKKwkJ CQkgKiByZXF1aXJlZCBhdCBhIGxhdGVyIHBvaW50LgorCQkJCSAqLworCQkJCWlmIChteXN0cmVh bWVyLT5uZXh0U2VnTm8gIT0gcHJpdmF0ZUluZm8tPmN1clNlZ05vKQogCQkJCXsKLQkJCQkJcGdf bG9nX2Vycm9yKCJXQUwgZmlsZXMgYXJlIG5vdCBhcmNoaXZlZCBpbiBzZXF1ZW50aWFsIG9yZGVy Iik7Ci0JCQkJCXBnX2xvZ19lcnJvcl9kZXRhaWwoIkV4cGVjdGluZyBzZWdtZW50IG51bWJlciAi IFVJTlQ2NF9GT1JNQVQgIiBidXQgZm91bmQgIiBVSU5UNjRfRk9STUFUICIuIiwKLQkJCQkJCQkJ CQlteXN0cmVhbWVyLT5uZXh0U2VnTm8sIHNlZ05vKTsKLQkJCQkJZXhpdCgxKTsKKwkJCQkJbXlz dHJlYW1lci0+d3JpdGVUaGlzU2VnID0gdHJ1ZTsKKwkJCQkJbXlzdHJlYW1lci0+c2VnRnAgPQor CQkJCQkJbWVtYmVyX3ByZXBhcmVfdG1wX3dyaXRlKHByaXZhdGVJbmZvLT5jdXJTZWdObywgZm5h bWUpOworCQkJCQlicmVhazsKIAkJCQl9CiAKIAkJCQkvKgotCQkJCSAqIFdlIHRyYWNrIHRoZSBy ZWFkaW5nIG9mIFdBTCBzZWdtZW50IHJlY29yZHMgdXNpbmcgYSBwb2ludGVyCi0JCQkJICogdGhh dCdzIGNvbnRpbnVvdXNseSBpbmNyZW1lbnRlZCBieSB0aGUgbGVuZ3RoIG9mIHRoZQotCQkJCSAq IHJlY2VpdmVkIGRhdGEuIFRoaXMgcG9pbnRlciBpcyBjcnVjaWFsIGZvciBzZXJ2aW5nIFdBTCBw YWdlCi0JCQkJICogcmVxdWVzdHMgZnJvbSB0aGUgV0FMIGRlY29kaW5nIHJvdXRpbmUsIHNvIGl0 IG11c3QgYmUKLQkJCQkgKiBhY2N1cmF0ZS4KKwkJCQkgKiBJZiB0aGUgYnVmZmVyIGNvbnRhaW5z IGRhdGEsIHRoZSBuZXh0IFdBTCByZWNvcmQgbXVzdAorCQkJCSAqIGxvZ2ljYWxseSBmb2xsb3cg aXQuIE90aGVyd2lzZSwgdGhpcyBmaWxlIGlzbid0IHRoZSBvbmUgd2UKKwkJCQkgKiBuZWVkLCBh bmQgd2UgbXVzdCBleHBvcnQgaXQuCiAJCQkJICovCi0jaWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lO RwotCQkJCWlmIChteXN0cmVhbWVyLT5uZXh0U2VnTm8gIT0gMCkKKwkJCQllbHNlIGlmIChwcml2 YXRlSW5mby0+YXJjaGl2ZV9zdHJlYW1lcl9idWYtPmxlbiAhPSAwKQogCQkJCXsKIAkJCQkJWExv Z1JlY1B0cglyZWNQdHI7CiAKLQkJCQkJWExvZ1NlZ05vT2Zmc2V0VG9SZWNQdHIoc2VnTm8sIDAs IFdhbFNlZ1N6LCByZWNQdHIpOwotCQkJCQlBc3NlcnQocHJpdmF0ZUluZm8tPmFyY2hpdmVfc3Ry ZWFtZXJfcmVhZF9wdHIgPT0gcmVjUHRyKTsKKwkJCQkJWExvZ1NlZ05vT2Zmc2V0VG9SZWNQdHIo cHJpdmF0ZUluZm8tPmN1clNlZ05vLCAwLCBXYWxTZWdTeiwKKwkJCQkJCQkJCQkJcmVjUHRyKTsK KworCQkJCQlpZiAocHJpdmF0ZUluZm8tPmFyY2hpdmVfc3RyZWFtZXJfcmVhZF9wdHIgIT0gcmVj UHRyKQorCQkJCQl7CisJCQkJCQlteXN0cmVhbWVyLT53cml0ZVRoaXNTZWcgPSB0cnVlOworCQkJ CQkJbXlzdHJlYW1lci0+c2VnRnAgPQorCQkJCQkJCW1lbWJlcl9wcmVwYXJlX3RtcF93cml0ZShw cml2YXRlSW5mby0+Y3VyU2VnTm8sIGZuYW1lKTsKKworCQkJCQkJLyogVXBkYXRlIHRoZSBuZXh0 IGV4cGVjdGVkIHNlZ21lbnQgbnVtYmVyIGFmdGVyIHRoaXMgKi8KKwkJCQkJCW15c3RyZWFtZXIt Pm5leHRTZWdObyA9CisJCQkJCQkJbWVtYmVyX25leHRfc2Vnbm8ocHJpdmF0ZUluZm8tPmN1clNl Z05vICsgMSwKKwkJCQkJCQkJCQkJICBwcml2YXRlSW5mby0+dGltZWxpbmUpOworCQkJCQkJYnJl YWs7CisJCQkJCX0KIAkJCQl9Ci0jZW5kaWYKKworCQkJCUFzc2VydCghbXlzdHJlYW1lci0+c2tp cFRoaXNTZWcpOworCQkJCUFzc2VydCghbXlzdHJlYW1lci0+d3JpdGVUaGlzU2VnKTsKKworCQkJ CS8qCisJCQkJICogV2UgYXJlIG5vdyBzdHJlYW1pbmcgc2VnbWVudCBjb250YWludC4KKwkJCQkg KgorCQkJCSAqIFdlIG5lZWQgdG8gdHJhY2sgdGhlIHJlYWRpbmcgb2YgV0FMIHNlZ21lbnQgcmVj b3JkcyB1c2luZyBhCisJCQkJICogcG9pbnRlciB0aGF0J3MgdHlwaWNhbGx5IGluY3JlbWVudGVk IGJ5IHRoZSBsZW5ndGggb2YgdGhlCisJCQkJICogZGF0YSByZWFkLiBIb3dldmVyLCB3ZSBzb21l dGltZXMgZXhwb3J0IHRoZSBXQUwgZmlsZSB0bworCQkJCSAqIHRlbXBvcmFyeSBzdG9yYWdlLCBh bGxvd2luZyB0aGUgZGVjb2Rpbmcgcm91dGluZSB0byByZWFkCisJCQkJICogZGlyZWN0bHkgZnJv bSB0aGVyZS4gVGhpcyBtYWtlcyBjb250aW51b3VzIHBvaW50ZXIKKwkJCQkgKiBpbmNyZW1lbnRp bmcgY2hhbGxlbmdpbmcsIGFzIGZpbGUgcmVhZHMgY2FuIG9jY3VyIGZyb20gYW55CisJCQkJICog b2Zmc2V0LCBsZWFkaW5nIHRvIHBvdGVudGlhbCBlcnJvcnMuIFRoZXJlZm9yZSwgd2Ugbm93CisJ CQkJICogcmVzZXQgdGhlIHBvaW50ZXIgd2hlbiByZWFkaW5nIGZyb20gYSBmaWxlIGZvciBzdHJl YW1pbmcuCisJCQkJICovCisJCQkJWExvZ1NlZ05vT2Zmc2V0VG9SZWNQdHIocHJpdmF0ZUluZm8t PmN1clNlZ05vLCAwLCBXYWxTZWdTeiwKKwkJCQkJCQkJCQlwcml2YXRlSW5mby0+YXJjaGl2ZV9z dHJlYW1lcl9yZWFkX3B0cik7CisKIAkJCQkvKiBVcGRhdGUgdGhlIG5leHQgZXhwZWN0ZWQgc2Vn bWVudCBudW1iZXIgKi8KLQkJCQlteXN0cmVhbWVyLT5uZXh0U2VnTm8gKz0gMTsKKwkJCQlteXN0 cmVhbWVyLT5uZXh0U2VnTm8gPQorCQkJCQltZW1iZXJfbmV4dF9zZWdubyhwcml2YXRlSW5mby0+ Y3VyU2VnTm8sCisJCQkJCQkJCQkgIHByaXZhdGVJbmZvLT50aW1lbGluZSk7CiAJCQl9CiAJCQli cmVhazsKIApAQCAtMzAyLDEyICszMzUsNDUgQEAgYXN0cmVhbWVyX3dhbGR1bXBfY29udGVudChh c3RyZWFtZXIgKnN0cmVhbWVyLCBhc3RyZWFtZXJfbWVtYmVyICptZW1iZXIsCiAJCQlpZiAobXlz dHJlYW1lci0+c2tpcFRoaXNTZWcpCiAJCQkJYnJlYWs7CiAKKwkJCS8qIE9yLCB3cml0ZSBjb250 ZW50cyB0byBmaWxlICovCisJCQlpZiAobXlzdHJlYW1lci0+d3JpdGVUaGlzU2VnKQorCQkJewor CQkJCUFzc2VydChteXN0cmVhbWVyLT5zZWdGcCAhPSBOVUxMKTsKKworCQkJCWVycm5vID0gMDsK KwkJCQlpZiAobGVuID4gMCAmJiBmd3JpdGUoZGF0YSwgbGVuLCAxLCBteXN0cmVhbWVyLT5zZWdG cCkgIT0gMSkKKwkJCQl7CisJCQkJCWNoYXIJICAgKmZuYW1lOworCQkJCQlpbnQJCQlwYXRobGVu ID0gc3RybGVuKG1lbWJlci0+cGF0aG5hbWUpOworCisJCQkJCUFzc2VydChwYXRobGVuID49IFhM T0dfRk5BTUVfTEVOKTsKKworCQkJCQlmbmFtZSA9IG1lbWJlci0+cGF0aG5hbWUgKyAocGF0aGxl biAtIFhMT0dfRk5BTUVfTEVOKTsKKworCQkJCQkvKgorCQkJCQkgKiBJZiB3cml0ZSBkaWRuJ3Qg c2V0IGVycm5vLCBhc3N1bWUgcHJvYmxlbSBpcyBubyBkaXNrCisJCQkJCSAqIHNwYWNlCisJCQkJ CSAqLworCQkJCQlpZiAoZXJybm8gPT0gMCkKKwkJCQkJCWVycm5vID0gRU5PU1BDOworCQkJCQlw Z19mYXRhbCgiY291bGQgbm90IHdyaXRlIHRvIGZpbGUgXCIlc1wiOiAlbSIsCisJCQkJCQkJIGdl dF90bXBfd2FsX2ZpbGVfcGF0aChmbmFtZSkpOworCQkJCX0KKwkJCQlicmVhazsKKwkJCX0KKwog CQkJLyogT3IsIGNvcHkgY29udGVudHMgdG8gYnVmZmVyICovCiAJCQlwcml2YXRlSW5mby0+YXJj aGl2ZV9zdHJlYW1lcl9yZWFkX3B0ciArPSBsZW47CiAJCQlhc3RyZWFtZXJfYnVmZmVyX2J5dGVz KHN0cmVhbWVyLCAmZGF0YSwgJmxlbiwgbGVuKTsKIAkJCWJyZWFrOwogCiAJCWNhc2UgQVNUUkVB TUVSX01FTUJFUl9UUkFJTEVSOgorCQkJaWYgKG15c3RyZWFtZXItPnNlZ0ZwICE9IE5VTEwpCisJ CQl7CisJCQkJZmNsb3NlKG15c3RyZWFtZXItPnNlZ0ZwKTsKKwkJCQlteXN0cmVhbWVyLT5zZWdG cCA9IE5VTEw7CisJCQl9CisJCQlwcml2YXRlSW5mby0+Y3VyU2VnTm8gPSAwOwogCQkJYnJlYWs7 CiAKIAkJY2FzZSBBU1RSRUFNRVJfQVJDSElWRV9UUkFJTEVSOgpAQCAtMzM0LDggKzQwMCwxNCBA QCBhc3RyZWFtZXJfd2FsZHVtcF9maW5hbGl6ZShhc3RyZWFtZXIgKnN0cmVhbWVyKQogc3RhdGlj IHZvaWQKIGFzdHJlYW1lcl93YWxkdW1wX2ZyZWUoYXN0cmVhbWVyICpzdHJlYW1lcikKIHsKKwlh c3RyZWFtZXJfd2FsZHVtcCAqbXlzdHJlYW1lcjsKKwogCUFzc2VydChzdHJlYW1lci0+YmJzX25l eHQgPT0gTlVMTCk7CiAKKwlteXN0cmVhbWVyID0gKGFzdHJlYW1lcl93YWxkdW1wICopIHN0cmVh bWVyOworCWlmIChteXN0cmVhbWVyLT5zZWdGcCAhPSBOVUxMKQorCQlmY2xvc2UobXlzdHJlYW1l ci0+c2VnRnApOworCiAJcGZyZWUoc3RyZWFtZXItPmJic19idWZmZXIuZGF0YSk7CiAJcGZyZWUo c3RyZWFtZXIpOwogfQpAQCAtMzQ3LDcgKzQxOSw4IEBAIGFzdHJlYW1lcl93YWxkdW1wX2ZyZWUo YXN0cmVhbWVyICpzdHJlYW1lcikKICAqLwogc3RhdGljIGJvb2wKIG1lbWJlcl9pc19yZWxldmFu dF93YWwoYXN0cmVhbWVyX3dhbGR1bXAgKm15c3RyZWFtZXIsIGFzdHJlYW1lcl9tZW1iZXIgKm1l bWJlciwKLQkJCQkJICAgVGltZUxpbmVJRCBzdGFydFRpbWVMaW5lSUQsIFhMb2dTZWdObyAqY3Vy U2VnTm8pCisJCQkJCSAgIFRpbWVMaW5lSUQgc3RhcnRUaW1lTGluZUlELCBjaGFyICoqY3VyRm5h bWUsCisJCQkJCSAgIFhMb2dTZWdObyAqY3VyU2VnTm8pCiB7CiAJaW50CQkJcGF0aGxlbjsKIAlY TG9nU2VnTm8Jc2VnTm87CkBAIC0zODIsNyArNDU1LDg0IEBAIG1lbWJlcl9pc19yZWxldmFudF93 YWwoYXN0cmVhbWVyX3dhbGR1bXAgKm15c3RyZWFtZXIsIGFzdHJlYW1lcl9tZW1iZXIgKm1lbWJl ciwKIAkJCXJldHVybiBmYWxzZTsKIAl9CiAKKwkqY3VyRm5hbWUgPSBmbmFtZTsKIAkqY3VyU2Vn Tm8gPSBzZWdObzsKIAogCXJldHVybiB0cnVlOwogfQorCisvKgorICogQ3JlYXRlIGFuIGVtcHR5 IHBsYWNlaG9sZGVyIGZpbGUgYW5kIHJldHVybiBpdHMgaGFuZGxlLiAgVGhlIGZpbGUgaXMgYWxz bworICogYWRkZWQgdG8gYW4gZXhwb3J0ZWQgbGlzdCBmb3IgZnV0dXJlIG1hbmFnZW1lbnQsIGUu Zy4gIGFjY2VzcywgZGVsZXRpb24sIGFuZAorICogZXhpc3RlbmNlIGNoZWNrcy4KKyAqLworc3Rh dGljIEZJTEUgKgorbWVtYmVyX3ByZXBhcmVfdG1wX3dyaXRlKFhMb2dTZWdObyBjdXJTZWdObywg Y29uc3QgY2hhciAqZm5hbWUpCit7CisJRklMRQkgICAqZmlsZTsKKwljaGFyCSAgICpmcGF0aCA9 IGdldF90bXBfd2FsX2ZpbGVfcGF0aChmbmFtZSk7CisKKwkvKiBDcmVhdGUgYW4gZW1wdHkgcGxh Y2Vob2xkZXIgKi8KKwlmaWxlID0gZm9wZW4oZnBhdGgsIFBHX0JJTkFSWV9XKTsKKwlpZiAoZmls ZSA9PSBOVUxMKQorCQlwZ19mYXRhbCgiY291bGQgbm90IGNyZWF0ZSBmaWxlIFwiJXNcIjogJW0i LCBmcGF0aCk7CisKKyNpZm5kZWYgV0lOMzIKKwlpZiAoY2htb2QoZnBhdGgsIHBnX2ZpbGVfY3Jl YXRlX21vZGUpKQorCQlwZ19mYXRhbCgiY291bGQgbm90IHNldCBwZXJtaXNzaW9ucyBvbiBmaWxl IFwiJXNcIjogJW0iLAorCQkJCSBmcGF0aCk7CisjZW5kaWYKKworCXBnX2xvZ19pbmZvKCJ0ZW1w b3JhcmlseSBleHBvcnRpbmcgZmlsZSBcIiVzXCIiLCBmcGF0aCk7CisKKwkvKiBSZWNvcmQgdGhp cyBzZWdtZW50J3MgZXhwb3J0ICovCisJc2ltcGxlX3N0cmluZ19saXN0X2FwcGVuZCgmVG1wV2Fs U2VnTGlzdCwgZm5hbWUpOworCXBmcmVlKGZwYXRoKTsKKworCXJldHVybiBmaWxlOworfQorCisv KgorICogR2V0IG5leHQgV0FMIHNlZ21lbnQgdGhhdCBuZWVkcyB0byBiZSByZXRyaWV2ZWQgZnJv bSB0aGUgYXJjaGl2ZS4KKyAqCisgKiBUaGUgZnVuY3Rpb24gY2hlY2tzIGZvciB0aGUgcHJlc2Vu Y2Ugb2YgYSBwcmV2aW91c2x5IHJlYWQgYW5kIGV4dHJhY3RlZCBXQUwKKyAqIHNlZ21lbnQgaW4g dGhlIHRlbXBvcmFyeSBzdG9yYWdlLiBJZiBhIHRlbXBvcmFyeSBmaWxlIGlzIGZvdW5kIGZvciB0 aGF0CisgKiBzZWdtZW50LCBpdCBpbmRpY2F0ZXMgdGhlIHNlZ21lbnQgaGFzIGFscmVhZHkgYmVl biBzdWNjZXNzZnVsbHkgcmV0cmlldmVkCisgKiBmcm9tIHRoZSBhcmNoaXZlLiBJbiB0aGlzIGNh c2UsIHRoZSBmdW5jdGlvbiBpbmNyZW1lbnRzIHRoZSBzZWdtZW50IG51bWJlcgorICogYW5kIHJl cGVhdHMgdGhlIGNoZWNrLiBUaGlzIHByb2Nlc3MgY29udGludWVzIHVudGlsIGEgc2VnbWVudCB0 aGF0IGhhcyBub3QKKyAqIHlldCBiZWVuIHJldHJpZXZlZCBpcyBmb3VuZCwgYXQgd2hpY2ggcG9p bnQgdGhlIGZ1bmN0aW9uIHJldHVybnMgaXRzIG51bWJlci4KKyAqLworc3RhdGljIFhMb2dTZWdO bworbWVtYmVyX25leHRfc2Vnbm8oWExvZ1NlZ05vIGN1clNlZ05vLCBUaW1lTGluZUlEIHRpbWVs aW5lKQoreworCVhMb2dTZWdObwluZXh0U2VnTm8gPSBjdXJTZWdObyArIDE7CisJYm9vbAkJZXhp c3RzOworCisJLyoKKwkgKiBJZiB3ZSBmaW5kIGEgZmlsZSB0aGF0IHdhcyBwcmV2aW91c2x5IHdy aXR0ZW4gdG8gdGhlIHRlbXBvcmFyeSBzcGFjZSwKKwkgKiBpdCBpbmRpY2F0ZXMgdGhhdCB0aGUg Y29ycmVzcG9uZGluZyBXQUwgc2VnbWVudCByZXF1ZXN0IGhhcyBhbHJlYWR5CisJICogYmVlbiBm dWxmaWxsZWQuIEluIHRoYXQgY2FzZSwgd2UgaW5jcmVtZW50IHRoZSBuZXh0U2VnTm8gY291bnRl ciBhbmQKKwkgKiBjaGVjayBhZ2FpbiB3aGV0aGVyIHRoYXQgc2VnbWVudCBudW1iZXIgYWdhaW4u IGlmIGZvdW5kIGFib3ZlIHN0ZXBzCisJICogd2lsbCBiZSByZXR1cm4gaWYgbm90IHRoZW4gd2Ug cmV0dXJuIHRoYXQgc2VnbWVudCBudW1iZXIgd2hpY2ggd291bGQgYmUKKwkgKiBuZWVkZWQgZnJv bSB0aGUgYXJjaGl2ZS4KKwkgKi8KKwlkbworCXsKKwkJY2hhcgkJZm5hbWVbTUFYRk5BTUVMRU5d OworCisJCVhMb2dGaWxlTmFtZShmbmFtZSwgdGltZWxpbmUsIG5leHRTZWdObywgV2FsU2VnU3op OworCisJCS8qCisJCSAqIElmIHRoZSBXQUwgc2VnbWVudCBoYXMgYWxyZWFkeSBiZWVuIGV4cG9y dGVkLCBpbmNyZW1lbnQgdGhlIGNvdW50ZXIKKwkJICogYW5kIGNoZWNrIGZvciB0aGUgbmV4dCBz ZWdtZW50LgorCQkgKi8KKwkJZXhpc3RzID0gZmFsc2U7CisJCWlmIChzaW1wbGVfc3RyaW5nX2xp c3RfbWVtYmVyKCZUbXBXYWxTZWdMaXN0LCBmbmFtZSkpCisJCXsKKwkJCW5leHRTZWdObyArPSAx OworCQkJZXhpc3RzID0gdHJ1ZTsKKwkJfQorCX0gd2hpbGUgKGV4aXN0cyk7CisKKwlyZXR1cm4g bmV4dFNlZ05vOworfQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ193YWxkdW1wL3BnX3dhbGR1bXAu YyBiL3NyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmMKaW5kZXggMzkzZDZiZmE5ZWYuLjYx NTIyN2I2OTFjIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5jCisr KyBiL3NyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmMKQEAgLTQzLDYgKzQzLDEwIEBAIHN0 YXRpYyBjb25zdCBjaGFyICpwcm9nbmFtZTsKIGludAkJCVdhbFNlZ1N6ID0gREVGQVVMVF9YTE9H X1NFR19TSVpFOwogc3RhdGljIHZvbGF0aWxlIHNpZ19hdG9taWNfdCB0aW1lX3RvX3N0b3AgPSBm YWxzZTsKIAorLyogVGVtcG9yYXJ5IGV4cG9ydGVkIFdBTCBmaWxlIGRpcmVjdG9yeSBhbmQgdGhl IGxpc3QgKi8KK2NoYXIJICAgKlRtcFdhbFNlZ0RpciA9IE5VTEw7CitTaW1wbGVTdHJpbmdMaXN0 IFRtcFdhbFNlZ0xpc3QgPSB7TlVMTCwgTlVMTH07CisKIHN0YXRpYyBjb25zdCBSZWxGaWxlTG9j YXRvciBlbXB0eVJlbEZpbGVMb2NhdG9yID0gezAsIDAsIDB9OwogCiB0eXBlZGVmIHN0cnVjdCBY TG9nRHVtcENvbmZpZwpAQCAtMzYwLDYgKzM2NCw0MSBAQCBpc190YXJfZmlsZShjb25zdCBjaGFy ICpmbmFtZSwgcGdfY29tcHJlc3NfYWxnb3JpdGhtICpjb21wcmVzc2lvbikKIAlyZXR1cm4gdHJ1 ZTsKIH0KIAorLyoKKyAqIFNldCB1cCBhIHRlbXBvcmFyeSBkaXJlY3RvcnkgdG8gdGVtcG9yYXJp bHkgc3RvcmUgV0FMIHNlZ21lbnRzLgorICovCitzdGF0aWMgdm9pZAorc2V0dXBfdG1wX3dhbHNl Z19kaXIoY29uc3QgY2hhciAqd2FsZGlyKQoreworCS8qCisJICogVXNlIHRoZSBkaXJlY3Rvcnkg c3BlY2lmaWVkIGJ5IHRoZSBURU1ESVIgZW52aXJvbm1lbnQgdmFyaWFibGUuIElmIGl0J3MKKwkg KiBub3Qgc2V0LCB1c2UgdGhlIHByb3ZpZGVkIFdBTCBkaXJlY3RvcnkuCisJICovCisJVG1wV2Fs U2VnRGlyID0gZ2V0ZW52KCJUTVBESVIiKSA/CisJCXBnX3N0cmR1cChnZXRlbnYoIlRNUERJUiIp KSA6IHBnX3N0cmR1cCh3YWxkaXIpOworCWNhbm9uaWNhbGl6ZV9wYXRoKFRtcFdhbFNlZ0Rpcik7 Cit9CisKKy8qCisgKiBSZW1vdmVzIHRoZSB0ZW1wb3JhcmlseSBzdG9yZSBXQUwgc2VnbWVudHMs IGlmIGFueSBhdCBleGl0aW5nLgorICovCitzdGF0aWMgdm9pZAorcmVtb3ZlX3RtcF93YWxzZWdf ZGlyX2F0ZXhpdCh2b2lkKQoreworCVNpbXBsZVN0cmluZ0xpc3RDZWxsICpjZWxsOworCisJLyog Q2xlYXIgb3V0IGFueSBleGlzdGluZyB0ZW1wb3JhcnkgZmlsZXMgKi8KKwlmb3IgKGNlbGwgPSBU bXBXYWxTZWdMaXN0LmhlYWQ7IGNlbGw7IGNlbGwgPSBjZWxsLT5uZXh0KQorCXsKKwkJY2hhcgkg ICAqZnBhdGggPSBnZXRfdG1wX3dhbF9maWxlX3BhdGgoY2VsbC0+dmFsKTsKKworCQlpZiAodW5s aW5rKGZwYXRoKSA9PSAwKQorCQkJcGdfbG9nX2luZm8oInJlbW92ZWQgZmlsZSBcIiVzXCIiLCBm cGF0aCk7CisJCXBmcmVlKGZwYXRoKTsKKwl9Cit9CisKKwogLyoKICAqIEluaXRpYWxpemVzIHRo ZSB0YXIgYXJjaGl2ZSByZWFkZXIgYW5kIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeSBmb3IgV0FMIGZp bGVzLgogICovCkBAIC00MDQsNiArNDQzLDcgQEAgaW5pdF90YXJfYXJjaGl2ZV9yZWFkZXIoWExv Z0R1bXBQcml2YXRlICpwcml2YXRlLCBjb25zdCBjaGFyICp3YWxkaXIsCiAJCXN0cmVhbWVyID0g YXN0cmVhbWVyX3pzdGRfZGVjb21wcmVzc29yX25ldyhzdHJlYW1lcik7CiAKIAlwcml2YXRlLT5h cmNoaXZlX3N0cmVhbWVyID0gc3RyZWFtZXI7CisJcHJpdmF0ZS0+Y3VyU2VnTm8gPSAwOwogfQog CiAvKgpAQCAtNTQ4LDcgKzU4OCw3IEBAIFdBTER1bXBSZWFkUGFnZShYTG9nUmVhZGVyU3RhdGUg KnN0YXRlLCBYTG9nUmVjUHRyIHRhcmdldFBhZ2VQdHIsIGludCByZXFMZW4sCiAJCQkJWExvZ1Jl Y1B0ciB0YXJnZXRQdHIsIGNoYXIgKnJlYWRCdWZmKQogewogCVhMb2dEdW1wUHJpdmF0ZSAqcHJp dmF0ZSA9IHN0YXRlLT5wcml2YXRlX2RhdGE7Ci0JaW50CQkJY291bnQgPSByZXF1aXJlZF9yZWFk X2xlbihwcml2YXRlLCB0YXJnZXRQdHIsIHJlcUxlbik7CisJaW50CQkJY291bnQgPSByZXF1aXJl ZF9yZWFkX2xlbihwcml2YXRlLCB0YXJnZXRQYWdlUHRyLCByZXFMZW4pOwogCVdBTFJlYWRFcnJv ciBlcnJpbmZvOwogCiAJaWYgKHByaXZhdGUtPmVuZHB0cl9yZWFjaGVkKQpAQCAtNjA3LDEyICs2 NDcsNzAgQEAgVGFyV0FMRHVtcFJlYWRQYWdlKFhMb2dSZWFkZXJTdGF0ZSAqc3RhdGUsIFhMb2dS ZWNQdHIgdGFyZ2V0UGFnZVB0ciwgaW50IHJlcUxlbiwKIAkJCQkgICBYTG9nUmVjUHRyIHRhcmdl dFB0ciwgY2hhciAqcmVhZEJ1ZmYpCiB7CiAJWExvZ0R1bXBQcml2YXRlICpwcml2YXRlID0gc3Rh dGUtPnByaXZhdGVfZGF0YTsKLQlpbnQJCQljb3VudCA9IHJlcXVpcmVkX3JlYWRfbGVuKHByaXZh dGUsIHRhcmdldFB0ciwgcmVxTGVuKTsKKwlpbnQJCQljb3VudCA9IHJlcXVpcmVkX3JlYWRfbGVu KHByaXZhdGUsIHRhcmdldFBhZ2VQdHIsIHJlcUxlbik7CisJWExvZ1NlZ05vCW5leHRTZWdObzsK IAogCWlmIChwcml2YXRlLT5lbmRwdHJfcmVhY2hlZCkKIAkJcmV0dXJuIC0xOwogCi0JLyogUmVh ZCB0aGUgV0FMIHBhZ2UgZnJvbSB0aGUgYXJjaGl2ZSBzdHJlYW1lciAqLworCS8qCisJICogSWYg dGhlIHRhcmdldCBwYWdlIGlzIGluIGEgZGlmZmVyZW50IHNlZ21lbnQsIGZpcnN0IGNoZWNrIGZv ciB0aGUgV0FMCisJICogc2VnbWVudCdzIHBoeXNpY2FsIGV4aXN0ZW5jZSBpbiB0aGUgdGVtcG9y YXJ5IGRpcmVjdG9yeS4KKwkgKi8KKwluZXh0U2VnTm8gPSBzdGF0ZS0+c2VnLndzX3NlZ25vOwor CWlmICghWExCeXRlSW5TZWcodGFyZ2V0UGFnZVB0ciwgbmV4dFNlZ05vLCBXYWxTZWdTeikpCisJ eworCQljaGFyCQlmbmFtZVtNQVhGTkFNRUxFTl07CisJCWNoYXIJICAgKmZwYXRoOworCisJCWlm IChzdGF0ZS0+c2VnLndzX2ZpbGUgPj0gMCkKKwkJeworCQkJY2xvc2Uoc3RhdGUtPnNlZy53c19m aWxlKTsKKwkJCXN0YXRlLT5zZWcud3NfZmlsZSA9IC0xOworCisJCQkvKiBSZW1vdmUgdGhpcyBm aWxlLCBhcyBpdCBpcyBubyBsb25nZXIgbmVlZGVkLiAqLworCQkJWExvZ0ZpbGVOYW1lKGZuYW1l LCBzdGF0ZS0+c2VnLndzX3RsaSwgbmV4dFNlZ05vLCBXYWxTZWdTeik7CisJCQlmcGF0aCA9IGdl dF90bXBfd2FsX2ZpbGVfcGF0aChmbmFtZSk7CisJCQlwZ19sb2dfaW5mbygicmVtb3ZpbmcgZmls ZSBcIiVzXCIiLCBmcGF0aCk7CisJCQl1bmxpbmsoZnBhdGgpOworCQkJcGZyZWUoZnBhdGgpOwor CQl9CisKKwkJWExCeXRlVG9TZWcodGFyZ2V0UGFnZVB0ciwgbmV4dFNlZ05vLCBXYWxTZWdTeik7 CisJCXN0YXRlLT5zZWcud3NfdGxpID0gcHJpdmF0ZS0+dGltZWxpbmU7CisJCXN0YXRlLT5zZWcu d3Nfc2Vnbm8gPSBuZXh0U2VnTm87CisKKwkJLyoKKwkJICogSWYgdGhlIG5leHQgc2VnbWVudCBl eGlzdHMsIG9wZW4gaXQgYW5kIGNvbnRpbnVlIHJlYWRpbmcgZnJvbSB0aGVyZQorCQkgKi8KKwkJ WExvZ0ZpbGVOYW1lKGZuYW1lLCBwcml2YXRlLT50aW1lbGluZSwgbmV4dFNlZ05vLCBXYWxTZWdT eik7CisJCWlmIChzaW1wbGVfc3RyaW5nX2xpc3RfbWVtYmVyKCZUbXBXYWxTZWdMaXN0LCBmbmFt ZSkpCisJCXsKKwkJCWZwYXRoID0gZ2V0X3RtcF93YWxfZmlsZV9wYXRoKGZuYW1lKTsKKwkJCXN0 YXRlLT5zZWcud3NfZmlsZSA9IG9wZW4oZnBhdGgsIE9fUkRPTkxZIHwgUEdfQklOQVJZLCAwKTsK KworCQkJaWYgKHN0YXRlLT5zZWcud3NfZmlsZSA8IDApCisJCQkJcGdfZmF0YWwoImNvdWxkIG5v dCBvcGVuIGZpbGUgXCIlc1wiOiAlbSIsIGZwYXRoKTsKKwkJCXBmcmVlKGZwYXRoKTsKKwkJfQor CX0KKworCS8qIENvbnRpbnVlIHJlYWRpbmcgZnJvbSB0aGUgb3BlbiBXQUwgc2VnbWVudCwgaWYg YW55ICovCisJaWYgKHN0YXRlLT5zZWcud3NfZmlsZSA+PSAwKQorCXsKKwkJLyoKKwkJICogVG8g cHJldmVudCBhIHJhY2UgY29uZGl0aW9uIHdoZXJlIHRoZSBhcmNoaXZlIHN0cmVhbWVyIGlzIHN0 aWxsCisJCSAqIGV4cG9ydGluZyBhIGZpbGUgdGhhdCB3ZSBhcmUgdHJ5aW5nIHRvIHJlYWQsIHdl IGludm9rZSB0aGUgc3RyZWFtZXIKKwkJICogdG8gZW5zdXJlIGVub3VnaCBkYXRhIGlzIGF2YWls YWJsZS4KKwkJICovCisJCWlmIChwcml2YXRlLT5jdXJTZWdObyA9PSBzdGF0ZS0+c2VnLndzX3Nl Z25vKQorCQkJYXN0cmVhbWVyX2FyY2hpdmVfcmVhZChwcml2YXRlKTsKKworCQlyZXR1cm4gV0FM RHVtcFJlYWRQYWdlKHN0YXRlLCB0YXJnZXRQYWdlUHRyLCByZXFMZW4sIHRhcmdldFB0ciwKKwkJ CQkJCQkgICByZWFkQnVmZik7CisJfQorCisJLyogT3RoZXJ3aXNlLCByZWFkIHRoZSBXQUwgcGFn ZSBmcm9tIHRoZSBhcmNoaXZlIHN0cmVhbWVyICovCiAJcmV0dXJuIGFzdHJlYW1lcl93YWxfcmVh ZChyZWFkQnVmZiwgdGFyZ2V0UGFnZVB0ciwgY291bnQsIHByaXZhdGUpOwogfQogCkBAIC0xMzQw LDcgKzE0MzgsNiBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJaWYgKGZuYW1lICE9 IE5VTEwgJiYgaXNfdGFyX2ZpbGUoZm5hbWUsICZjb21wcmVzc2lvbikpCiAJCXsKIAkJCXByaXZh dGUuYXJjaGl2ZV9uYW1lID0gZm5hbWU7Ci0JCQl3YWxkaXIgPSB3YWxwYXRoID8gcGdfc3RyZHVw KHdhbHBhdGgpIDogcGdfc3RyZHVwKCIuIik7CiAJCQlpc190YXIgPSB0cnVlOwogCQl9CiAJCWVs c2UKQEAgLTE0MzQsNiArMTUzMSwxMyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAkJ aW5pdF90YXJfYXJjaGl2ZV9yZWFkZXIoJnByaXZhdGUsIHdhbGRpciwgcHJpdmF0ZS5zdGFydHB0 ciwKIAkJCQkJCQkJcHJpdmF0ZS5lbmRwdHIsIGNvbXByZXNzaW9uKTsKIAorCQkvKgorCQkgKiBT ZXR1cCB0ZW1wb3JhcnkgZGlyZWN0b3J5IHRvIHN0b3JlIFdBTCBzZWdtZW50cyBhbmQgc2V0IHVw IGFuIGV4aXQKKwkJICogY2FsbGJhY2sgdG8gcmVtb3ZlIGl0IHVwb24gY29tcGxldGlvbi4KKwkJ ICovCisJCXNldHVwX3RtcF93YWxzZWdfZGlyKHdhbGRpcik7CisJCWF0ZXhpdChyZW1vdmVfdG1w X3dhbHNlZ19kaXJfYXRleGl0KTsKKwogCQkvKiBSb3V0aW5lIHRvIGRlY29kZSBXQUwgZmlsZXMg aW4gdGFyIGFyY2hpdmUgKi8KIAkJeGxvZ3JlYWRlcl9zdGF0ZSA9CiAJCQlYTG9nUmVhZGVyQWxs b2NhdGUoV2FsU2VnU3osIHdhbGRpciwKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfd2FsZHVtcC9w Z193YWxkdW1wLmggYi9zcmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5oCmluZGV4IDQyMDVl MGVmNTk3Li4xYTFjZjM1ZTZmMyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ193YWxkdW1wL3BnX3dh bGR1bXAuaAorKysgYi9zcmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5oCkBAIC0xMyw5ICsx MywxNCBAQAogCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dkZWZzLmgiCiAjaW5jbHVkZSAiZmVfdXRp bHMvYXN0cmVhbWVyLmgiCisjaW5jbHVkZSAiZmVfdXRpbHMvc2ltcGxlX2xpc3QuaCIKICNpbmNs dWRlICJsaWIvc3RyaW5naW5mby5oIgogCisjZGVmaW5lIFRFTVBfRklMRV9FWFQJIndhbGR1bXAu dG1wIgorCiBleHRlcm4gaW50CVdhbFNlZ1N6OworZXh0ZXJuIGNoYXIgKlRtcFdhbFNlZ0RpcjsK K2V4dGVybiBTaW1wbGVTdHJpbmdMaXN0IFRtcFdhbFNlZ0xpc3Q7CiAKIC8qIENvbnRhaW5zIHRo ZSBuZWNlc3NhcnkgaW5mb3JtYXRpb24gdG8gZHJpdmUgV0FMIGRlY29kaW5nICovCiB0eXBlZGVm IHN0cnVjdCBYTG9nRHVtcFByaXZhdGUKQEAgLTMxLDE1ICszNiwzMiBAQCB0eXBlZGVmIHN0cnVj dCBYTG9nRHVtcFByaXZhdGUKIAogCWFzdHJlYW1lciAgKmFyY2hpdmVfc3RyZWFtZXI7CiAJU3Ry aW5nSW5mbwlhcmNoaXZlX3N0cmVhbWVyX2J1ZjsJLyogQnVmZmVyIGZvciByZWNlaXZpbmcgV0FM IGRhdGEgKi8KLQlYTG9nUmVjUHRyCWFyY2hpdmVfc3RyZWFtZXJfcmVhZF9wdHI7IC8qIFBvcHVs YXRlIHRoZSBidWZmZXIgd2l0aCByZWNvcmRzCi0JCQkJCQkJCQkJCSAgdW50aWwgdGhpcyByZWNv cmQgcG9pbnRlciAqLworCVhMb2dSZWNQdHIJYXJjaGl2ZV9zdHJlYW1lcl9yZWFkX3B0cjsJLyog UG9wdWxhdGUgdGhlIGJ1ZmZlciB3aXRoCisJCQkJCQkJCQkJCSAqIHJlY29yZHMgdW50aWwgdGhp cyByZWNvcmQKKwkJCQkJCQkJCQkJICogcG9pbnRlciAqLworCVhMb2dTZWdObwljdXJTZWdObzsJ CS8qIEN1cnJlbnQgc2VnbWVudCBiZWluZyByZWFkICovCiB9IFhMb2dEdW1wUHJpdmF0ZTsKIAor LyoKKyAqIEdlbmVyYXRlIHRoZSB0ZW1wb3JhcnkgV0FMIGZpbGUgcGF0aC4KKyAqCisgKiBOb3Rl IHRoYXQgdGhlIGNhbGxlciBpcyByZXNwb25zaWJsZSB0byBwZnJlZSBpdC4KKyAqLworc3RhdGlj IGlubGluZSBjaGFyICoKK2dldF90bXBfd2FsX2ZpbGVfcGF0aChjb25zdCBjaGFyICpmbmFtZSkK K3sKKwljaGFyCSAgICpmcGF0aCA9IChjaGFyICopIHBhbGxvYyhNQVhQR1BBVEgpOwogCi1leHRl cm4gYXN0cmVhbWVyICphc3RyZWFtZXJfd2FsZHVtcF9uZXcoWExvZ1JlY1B0ciBzdGFydHB0ciwK LQkJCQkJCQkJCQlYTG9nUmVjUHRyIGVuZHB0ciwKKwlzbnByaW50ZihmcGF0aCwgTUFYUEdQQVRI LCAiJXMvJXMuJXMiLCBUbXBXYWxTZWdEaXIsIGZuYW1lLAorCQkJIFRFTVBfRklMRV9FWFQpOwor CisJcmV0dXJuIGZwYXRoOworfQorCitleHRlcm4gYXN0cmVhbWVyICphc3RyZWFtZXJfd2FsZHVt cF9uZXcoWExvZ1JlY1B0ciBzdGFydHB0ciwgWExvZ1JlY1B0ciBlbmRwdHIsCiAJCQkJCQkJCQkJ WExvZ0R1bXBQcml2YXRlICpwcml2YXRlSW5mbyk7CiBleHRlcm4gaW50IGFzdHJlYW1lcl93YWxf cmVhZChjaGFyICpyZWFkQnVmZiwgWExvZ1JlY1B0ciBzdGFydHB0ciwgU2l6ZSBjb3VudCwKIAkJ CQkJCQkgIFhMb2dEdW1wUHJpdmF0ZSAqcHJpdmF0ZUluZm8pOworZXh0ZXJuIGludCBhc3RyZWFt ZXJfYXJjaGl2ZV9yZWFkKFhMb2dEdW1wUHJpdmF0ZSAqcHJpdmF0ZUluZm8pOwogCiAjZW5kaWYJ CQkJCQkJLyogZW5kIG9mIFBHX1dBTERVTVBfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ193 YWxkdW1wL3QvMDAxX2Jhc2ljLnBsIGIvc3JjL2Jpbi9wZ193YWxkdW1wL3QvMDAxX2Jhc2ljLnBs CmluZGV4IDQ0MzEyNmE5Y2U2Li5kNWZhMWY2ZDI4ZCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ193 YWxkdW1wL3QvMDAxX2Jhc2ljLnBsCisrKyBiL3NyYy9iaW4vcGdfd2FsZHVtcC90LzAwMV9iYXNp Yy5wbApAQCAtNyw2ICs3LDcgQEAgdXNlIEN3ZDsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVz dGVyOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOwogdXNlIFRlc3Q6Ok1vcmU7Cit1c2Ug TGlzdDo6VXRpbCBxdyhzaHVmZmxlKTsKIAogbXkgJHRhciA9ICRFTlZ7VEFSfTsKIApAQCAtMjcy LDcgKzI3Myw3IEBAIHN1YiBnZW5lcmF0ZV9hcmNoaXZlCiAJfQogCWNsb3NlZGlyICRkaDsKIAot CUBmaWxlcyA9IHNvcnQgQGZpbGVzOworCUBmaWxlcyA9IHNodWZmbGUgQGZpbGVzOwogCiAJIyBt b3ZlIGludG8gdGhlIFdBTCBkaXJlY3RvcnkgYmVmb3JlIGFyY2hpdmluZyBmaWxlcwogCW15ICRj d2QgPSBnZXRjd2Q7Ci0tIAoyLjQ3LjEKCg== --0000000000009207e5063f9be993 Content-Type: application/x-patch; name="v4-0006-pg_verifybackup-Delay-default-WAL-directory-prepa.patch" Content-Disposition: attachment; filename="v4-0006-pg_verifybackup-Delay-default-WAL-directory-prepa.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfz57oxq5 RnJvbSA5Yzc2ODQ2NmUzNTM4NGQzMzY2YWJkNmNlMGQwNGI2OTMyMTE2MjU2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFdl ZCwgMTYgSnVsIDIwMjUgMTQ6NDc6NDMgKzA1MzAKU3ViamVjdDogW1BBVENIIHY0IDYvOF0gcGdf dmVyaWZ5YmFja3VwOiBEZWxheSBkZWZhdWx0IFdBTCBkaXJlY3RvcnkKIHByZXBhcmF0aW9uLgoK V2UgYXJlIG5vdCBzdXJlIHdoZXRoZXIgdG8gcGFyc2UgV0FMIGZyb20gYSBkaXJlY3Rvcnkgb3Ig YW4gYXJjaGl2ZQp1bnRpbCB0aGUgYmFja3VwIGZvcm1hdCBpcyBrbm93bi4gVGhlcmVmb3JlLCB3 ZSBkZWxheSBwcmVwYXJpbmcgdGhlCmRlZmF1bHQgV0FMIGRpcmVjdG9yeSB1bnRpbCB0aGUgcG9p bnQgb2YgcGFyc2luZy4gVGhpcyBkZWxheSBpcwpoYXJtbGVzcywgYXMgdGhlIFdBTCBkaXJlY3Rv cnkgaXMgbm90IHVzZWQgZWxzZXdoZXJlLgotLS0KIHNyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3Bn X3ZlcmlmeWJhY2t1cC5jIHwgOCArKysrLS0tLQogMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9u cygrKSwgNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3ZlcmlmeWJhY2t1 cC9wZ192ZXJpZnliYWNrdXAuYyBiL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3BnX3ZlcmlmeWJh Y2t1cC5jCmluZGV4IDVlNmMxM2JiOTIxLi4zMWViYzE1ODFmYiAxMDA2NDQKLS0tIGEvc3JjL2Jp bi9wZ192ZXJpZnliYWNrdXAvcGdfdmVyaWZ5YmFja3VwLmMKKysrIGIvc3JjL2Jpbi9wZ192ZXJp ZnliYWNrdXAvcGdfdmVyaWZ5YmFja3VwLmMKQEAgLTI4NSwxMCArMjg1LDYgQEAgbWFpbihpbnQg YXJnYywgY2hhciAqKmFyZ3YpCiAJCW1hbmlmZXN0X3BhdGggPSBwc3ByaW50ZigiJXMvYmFja3Vw X21hbmlmZXN0IiwKIAkJCQkJCQkJIGNvbnRleHQuYmFja3VwX2RpcmVjdG9yeSk7CiAKLQkvKiBC eSBkZWZhdWx0LCBsb29rIGZvciB0aGUgV0FMIGluIHRoZSBiYWNrdXAgZGlyZWN0b3J5LCB0b28u ICovCi0JaWYgKHdhbF9kaXJlY3RvcnkgPT0gTlVMTCkKLQkJd2FsX2RpcmVjdG9yeSA9IHBzcHJp bnRmKCIlcy9wZ193YWwiLCBjb250ZXh0LmJhY2t1cF9kaXJlY3RvcnkpOwotCiAJLyoKIAkgKiBU cnkgdG8gcmVhZCB0aGUgbWFuaWZlc3QuIFdlIHRyZWF0IGFueSBlcnJvcnMgZW5jb3VudGVyZWQg d2hpbGUgcGFyc2luZwogCSAqIHRoZSBtYW5pZmVzdCBhcyBmYXRhbDsgdGhlcmUgZG9lc24ndCBz ZWVtIHRvIGJlIG11Y2ggcG9pbnQgaW4gdHJ5aW5nIHRvCkBAIC0zNjgsNiArMzY0LDEwIEBAIG1h aW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCWlmIChjb250ZXh0LmZvcm1hdCA9PSAncCcgJiYg IWNvbnRleHQuc2tpcF9jaGVja3N1bXMpCiAJCXZlcmlmeV9iYWNrdXBfY2hlY2tzdW1zKCZjb250 ZXh0KTsKIAorCS8qIEJ5IGRlZmF1bHQsIGxvb2sgZm9yIHRoZSBXQUwgaW4gdGhlIGJhY2t1cCBk aXJlY3RvcnksIHRvby4gKi8KKwlpZiAod2FsX2RpcmVjdG9yeSA9PSBOVUxMKQorCQl3YWxfZGly ZWN0b3J5ID0gcHNwcmludGYoIiVzL3BnX3dhbCIsIGNvbnRleHQuYmFja3VwX2RpcmVjdG9yeSk7 CisKIAkvKgogCSAqIFRyeSB0byBwYXJzZSB0aGUgcmVxdWlyZWQgcmFuZ2VzIG9mIFdBTCByZWNv cmRzLCB1bmxlc3Mgd2Ugd2VyZSB0b2xkCiAJICogbm90IHRvIGRvIHNvLgotLSAKMi40Ny4xCgo= --0000000000009207e5063f9be993 Content-Type: application/x-patch; name="v4-0007-pg_verifybackup-Rename-the-wal-directory-switch-t.patch" Content-Disposition: attachment; filename="v4-0007-pg_verifybackup-Rename-the-wal-directory-switch-t.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfz57uqj6 RnJvbSA0M2M1OThjNDgyMTcxZTFjNWQ3NjRlYWQ2NjE0Yzk1MTA0MjA3YWE0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFRo dSwgMjQgSnVsIDIwMjUgMTY6Mzc6NDMgKzA1MzAKU3ViamVjdDogW1BBVENIIHY0IDcvOF0gcGdf dmVyaWZ5YmFja3VwOiBSZW5hbWUgdGhlIHdhbC1kaXJlY3Rvcnkgc3dpdGNoIHRvCiB3YWwtcGF0 aAoKV2l0aCBwcmV2aW91cyBwYXRjaGVzIHRvIHBnX3dhbGR1bXAgY2FuIG5vdyBkZWNvZGUgV0FM IGRpcmVjdGx5IGZyb20KdGFyIGZpbGVzLiAgVGhpcyBtZWFucyB5b3UnbGwgYmUgYWJsZSB0byBz cGVjaWZ5IGEgdGFyIGFyY2hpdmUgcGF0aAppbnN0ZWFkIG9mIGEgdHJhZGl0aW9uYWwgV0FMIGRp cmVjdG9yeS4KClRvIGtlZXAgdGhpbmdzIGNvbnNpc3RlbnQgYW5kIG1vcmUgdmVyc2F0aWxlLCB3 ZSBzaG91bGQgYWxzbwpnZW5lcmFsaXplIHRoZSBpbnB1dCBzd2l0Y2ggZm9yIHBnX3ZlcmlmeWJh Y2t1cC4gSXQgc2hvdWxkIGFjY2VwdAplaXRoZXIgYSBkaXJlY3Rvcnkgb3IgYSB0YXIgZmlsZSBw YXRoIHRoYXQgY29udGFpbnMgV0FMcy4gVGhpcyBjaGFuZ2UKd2lsbCBhbHNvIGFsaWduaW5nIGl0 IHdpdGggdGhlIGV4aXN0aW5nIG1hbmlmZXN0LXBhdGggc3dpdGNoIG5hbWluZy4KLS0tCiBkb2Mv c3JjL3NnbWwvcmVmL3BnX3ZlcmlmeWJhY2t1cC5zZ21sICAgICB8ICAyICstCiBzcmMvYmluL3Bn X3ZlcmlmeWJhY2t1cC9wZ192ZXJpZnliYWNrdXAuYyB8IDIyICsrKysrKysrKysrLS0tLS0tLS0t LS0KIHNyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3BvL2RlLnBvICAgICAgICAgIHwgIDQgKystLQog c3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvcG8vZWwucG8gICAgICAgICAgfCAgNCArKy0tCiBzcmMv YmluL3BnX3ZlcmlmeWJhY2t1cC9wby9lcy5wbyAgICAgICAgICB8ICA0ICsrLS0KIHNyYy9iaW4v cGdfdmVyaWZ5YmFja3VwL3BvL2ZyLnBvICAgICAgICAgIHwgIDQgKystLQogc3JjL2Jpbi9wZ192 ZXJpZnliYWNrdXAvcG8vaXQucG8gICAgICAgICAgfCAgNCArKy0tCiBzcmMvYmluL3BnX3Zlcmlm eWJhY2t1cC9wby9qYS5wbyAgICAgICAgICB8ICA0ICsrLS0KIHNyYy9iaW4vcGdfdmVyaWZ5YmFj a3VwL3BvL2thLnBvICAgICAgICAgIHwgIDQgKystLQogc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAv cG8va28ucG8gICAgICAgICAgfCAgNCArKy0tCiBzcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC9wby9y dS5wbyAgICAgICAgICB8ICA0ICsrLS0KIHNyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3BvL3N2LnBv ICAgICAgICAgIHwgIDQgKystLQogc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvcG8vdWsucG8gICAg ICAgICAgfCAgNCArKy0tCiBzcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC9wby96aF9DTi5wbyAgICAg ICB8ICA0ICsrLS0KIHNyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3BvL3poX1RXLnBvICAgICAgIHwg IDQgKystLQogc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvdC8wMDdfd2FsLnBsICAgICAgfCAgNCAr Ky0tCiAxNiBmaWxlcyBjaGFuZ2VkLCA0MCBpbnNlcnRpb25zKCspLCA0MCBkZWxldGlvbnMoLSkK CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3BnX3ZlcmlmeWJhY2t1cC5zZ21sIGIvZG9j L3NyYy9zZ21sL3JlZi9wZ192ZXJpZnliYWNrdXAuc2dtbAppbmRleCA2MWMxMjk3NWU0YS4uZTli OGJmZDUxYjEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvcGdfdmVyaWZ5YmFja3VwLnNn bWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9wZ192ZXJpZnliYWNrdXAuc2dtbApAQCAtMjYxLDcg KzI2MSw3IEBAIFBvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgogCiAgICAgIDx2YXJsaXN0ZW50cnk+ CiAgICAgICA8dGVybT48b3B0aW9uPi13IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5w YXRoPC9yZXBsYWNlYWJsZT48L29wdGlvbj48L3Rlcm0+Ci0gICAgICA8dGVybT48b3B0aW9uPi0t d2FsLWRpcmVjdG9yeT08cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cGF0aDwvcmVwbGFj ZWFibGU+PC9vcHRpb24+PC90ZXJtPgorICAgICAgPHRlcm0+PG9wdGlvbj4tLXdhbC1wYXRoPTxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXRoPC9yZXBsYWNlYWJsZT48L29wdGlvbj48 L3Rlcm0+CiAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgPHBhcmE+CiAgICAgICAgIFRyeSB0byBw YXJzZSBXQUwgZmlsZXMgc3RvcmVkIGluIHRoZSBzcGVjaWZpZWQgZGlyZWN0b3J5LCByYXRoZXIg dGhhbgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvcGdfdmVyaWZ5YmFja3Vw LmMgYi9zcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC9wZ192ZXJpZnliYWNrdXAuYwppbmRleCAzMWVi YzE1ODFmYi4uMWVlNDAwMTk5ZGEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3Vw L3BnX3ZlcmlmeWJhY2t1cC5jCisrKyBiL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3BnX3Zlcmlm eWJhY2t1cC5jCkBAIC05Myw3ICs5Myw3IEBAIHN0YXRpYyB2b2lkIHZlcmlmeV9maWxlX2NoZWNr c3VtKHZlcmlmaWVyX2NvbnRleHQgKmNvbnRleHQsCiAJCQkJCQkJCSB1aW50OCAqYnVmZmVyKTsK IHN0YXRpYyB2b2lkIHBhcnNlX3JlcXVpcmVkX3dhbCh2ZXJpZmllcl9jb250ZXh0ICpjb250ZXh0 LAogCQkJCQkJCSAgIGNoYXIgKnBnX3dhbGR1bXBfcGF0aCwKLQkJCQkJCQkgICBjaGFyICp3YWxf ZGlyZWN0b3J5KTsKKwkJCQkJCQkgICBjaGFyICp3YWxfcGF0aCk7CiBzdGF0aWMgYXN0cmVhbWVy ICpjcmVhdGVfYXJjaGl2ZV92ZXJpZmllcih2ZXJpZmllcl9jb250ZXh0ICpjb250ZXh0LAogCQkJ CQkJCQkJCSAgY2hhciAqYXJjaGl2ZV9uYW1lLAogCQkJCQkJCQkJCSAgT2lkIHRibHNwY19vaWQs CkBAIC0xMjYsNyArMTI2LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCXsicHJv Z3Jlc3MiLCBub19hcmd1bWVudCwgTlVMTCwgJ1AnfSwKIAkJeyJxdWlldCIsIG5vX2FyZ3VtZW50 LCBOVUxMLCAncSd9LAogCQl7InNraXAtY2hlY2tzdW1zIiwgbm9fYXJndW1lbnQsIE5VTEwsICdz J30sCi0JCXsid2FsLWRpcmVjdG9yeSIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAndyd9LAor CQl7IndhbC1wYXRoIiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICd3J30sCiAJCXtOVUxMLCAw LCBOVUxMLCAwfQogCX07CiAKQEAgLTEzNSw3ICsxMzUsNyBAQCBtYWluKGludCBhcmdjLCBjaGFy ICoqYXJndikKIAljaGFyCSAgICptYW5pZmVzdF9wYXRoID0gTlVMTDsKIAlib29sCQlub19wYXJz ZV93YWwgPSBmYWxzZTsKIAlib29sCQlxdWlldCA9IGZhbHNlOwotCWNoYXIJICAgKndhbF9kaXJl Y3RvcnkgPSBOVUxMOworCWNoYXIJICAgKndhbF9wYXRoID0gTlVMTDsKIAljaGFyCSAgICpwZ193 YWxkdW1wX3BhdGggPSBOVUxMOwogCURJUgkJICAgKmRpcjsKIApAQCAtMjIxLDggKzIyMSw4IEBA IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQkJCWNvbnRleHQuc2tpcF9jaGVja3N1bXMg PSB0cnVlOwogCQkJCWJyZWFrOwogCQkJY2FzZSAndyc6Ci0JCQkJd2FsX2RpcmVjdG9yeSA9IHBz dHJkdXAob3B0YXJnKTsKLQkJCQljYW5vbmljYWxpemVfcGF0aCh3YWxfZGlyZWN0b3J5KTsKKwkJ CQl3YWxfcGF0aCA9IHBzdHJkdXAob3B0YXJnKTsKKwkJCQljYW5vbmljYWxpemVfcGF0aCh3YWxf cGF0aCk7CiAJCQkJYnJlYWs7CiAJCQlkZWZhdWx0OgogCQkJCS8qIGdldG9wdF9sb25nIGFscmVh ZHkgZW1pdHRlZCBhIGNvbXBsYWludCAqLwpAQCAtMzY1LDE1ICszNjUsMTUgQEAgbWFpbihpbnQg YXJnYywgY2hhciAqKmFyZ3YpCiAJCXZlcmlmeV9iYWNrdXBfY2hlY2tzdW1zKCZjb250ZXh0KTsK IAogCS8qIEJ5IGRlZmF1bHQsIGxvb2sgZm9yIHRoZSBXQUwgaW4gdGhlIGJhY2t1cCBkaXJlY3Rv cnksIHRvby4gKi8KLQlpZiAod2FsX2RpcmVjdG9yeSA9PSBOVUxMKQotCQl3YWxfZGlyZWN0b3J5 ID0gcHNwcmludGYoIiVzL3BnX3dhbCIsIGNvbnRleHQuYmFja3VwX2RpcmVjdG9yeSk7CisJaWYg KHdhbF9wYXRoID09IE5VTEwpCisJCXdhbF9wYXRoID0gcHNwcmludGYoIiVzL3BnX3dhbCIsIGNv bnRleHQuYmFja3VwX2RpcmVjdG9yeSk7CiAKIAkvKgogCSAqIFRyeSB0byBwYXJzZSB0aGUgcmVx dWlyZWQgcmFuZ2VzIG9mIFdBTCByZWNvcmRzLCB1bmxlc3Mgd2Ugd2VyZSB0b2xkCiAJICogbm90 IHRvIGRvIHNvLgogCSAqLwogCWlmICghbm9fcGFyc2Vfd2FsKQotCQlwYXJzZV9yZXF1aXJlZF93 YWwoJmNvbnRleHQsIHBnX3dhbGR1bXBfcGF0aCwgd2FsX2RpcmVjdG9yeSk7CisJCXBhcnNlX3Jl cXVpcmVkX3dhbCgmY29udGV4dCwgcGdfd2FsZHVtcF9wYXRoLCB3YWxfcGF0aCk7CiAKIAkvKgog CSAqIElmIGV2ZXJ5dGhpbmcgbG9va3MgT0ssIHRlbGwgdGhlIHVzZXIgdGhpcywgdW5sZXNzIHdl IHdlcmUgYXNrZWQgdG8KQEAgLTExOTgsNyArMTE5OCw3IEBAIHZlcmlmeV9maWxlX2NoZWNrc3Vt KHZlcmlmaWVyX2NvbnRleHQgKmNvbnRleHQsIG1hbmlmZXN0X2ZpbGUgKm0sCiAgKi8KIHN0YXRp YyB2b2lkCiBwYXJzZV9yZXF1aXJlZF93YWwodmVyaWZpZXJfY29udGV4dCAqY29udGV4dCwgY2hh ciAqcGdfd2FsZHVtcF9wYXRoLAotCQkJCSAgIGNoYXIgKndhbF9kaXJlY3RvcnkpCisJCQkJICAg Y2hhciAqd2FsX3BhdGgpCiB7CiAJbWFuaWZlc3RfZGF0YSAqbWFuaWZlc3QgPSBjb250ZXh0LT5t YW5pZmVzdDsKIAltYW5pZmVzdF93YWxfcmFuZ2UgKnRoaXNfd2FsX3JhbmdlID0gbWFuaWZlc3Qt PmZpcnN0X3dhbF9yYW5nZTsKQEAgLTEyMDgsNyArMTIwOCw3IEBAIHBhcnNlX3JlcXVpcmVkX3dh bCh2ZXJpZmllcl9jb250ZXh0ICpjb250ZXh0LCBjaGFyICpwZ193YWxkdW1wX3BhdGgsCiAJCWNo YXIJICAgKnBnX3dhbGR1bXBfY21kOwogCiAJCXBnX3dhbGR1bXBfY21kID0gcHNwcmludGYoIlwi JXNcIiAtLXF1aWV0IC0tcGF0aD1cIiVzXCIgLS10aW1lbGluZT0ldSAtLXN0YXJ0PSVYLyUwOFgg LS1lbmQ9JVgvJTA4WFxuIiwKLQkJCQkJCQkJICBwZ193YWxkdW1wX3BhdGgsIHdhbF9kaXJlY3Rv cnksIHRoaXNfd2FsX3JhbmdlLT50bGksCisJCQkJCQkJCSAgcGdfd2FsZHVtcF9wYXRoLCB3YWxf cGF0aCwgdGhpc193YWxfcmFuZ2UtPnRsaSwKIAkJCQkJCQkJICBMU05fRk9STUFUX0FSR1ModGhp c193YWxfcmFuZ2UtPnN0YXJ0X2xzbiksCiAJCQkJCQkJCSAgTFNOX0ZPUk1BVF9BUkdTKHRoaXNf d2FsX3JhbmdlLT5lbmRfbHNuKSk7CiAJCWZmbHVzaChOVUxMKTsKQEAgLTEzNzYsNyArMTM3Niw3 IEBAIHVzYWdlKHZvaWQpCiAJcHJpbnRmKF8oIiAgLVAsIC0tcHJvZ3Jlc3MgICAgICAgICAgICAg IHNob3cgcHJvZ3Jlc3MgaW5mb3JtYXRpb25cbiIpKTsKIAlwcmludGYoXygiICAtcSwgLS1xdWll dCAgICAgICAgICAgICAgICAgZG8gbm90IHByaW50IGFueSBvdXRwdXQsIGV4Y2VwdCBmb3IgZXJy b3JzXG4iKSk7CiAJcHJpbnRmKF8oIiAgLXMsIC0tc2tpcC1jaGVja3N1bXMgICAgICAgIHNraXAg Y2hlY2tzdW0gdmVyaWZpY2F0aW9uXG4iKSk7Ci0JcHJpbnRmKF8oIiAgLXcsIC0td2FsLWRpcmVj dG9yeT1QQVRIICAgIHVzZSBzcGVjaWZpZWQgcGF0aCBmb3IgV0FMIGZpbGVzXG4iKSk7CisJcHJp bnRmKF8oIiAgLXcsIC0td2FsLXBhdGg9UEFUSCAgICAgICAgIHVzZSBzcGVjaWZpZWQgcGF0aCBm b3IgV0FMIGZpbGVzXG4iKSk7CiAJcHJpbnRmKF8oIiAgLVYsIC0tdmVyc2lvbiAgICAgICAgICAg ICAgIG91dHB1dCB2ZXJzaW9uIGluZm9ybWF0aW9uLCB0aGVuIGV4aXRcbiIpKTsKIAlwcmludGYo XygiICAtPywgLS1oZWxwICAgICAgICAgICAgICAgICAgc2hvdyB0aGlzIGhlbHAsIHRoZW4gZXhp dFxuIikpOwogCXByaW50ZihfKCJcblJlcG9ydCBidWdzIHRvIDwlcz4uXG4iKSwgUEFDS0FHRV9C VUdSRVBPUlQpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvcG8vZGUucG8g Yi9zcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC9wby9kZS5wbwppbmRleCBhOWUyNDkzMTEwMC4uOWI1 Y2Q1ODk4Y2YgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3BvL2RlLnBvCisr KyBiL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3BvL2RlLnBvCkBAIC03ODUsOCArNzg1LDggQEAg bXNnc3RyICIgIC1zLCAtLXNraXAtY2hlY2tzdW1zICAgICAgICDDnGJlcnByw7xmdW5nIGRlciBQ csO8ZnN1bW1lbiDDvGJlcnNwcmluZ2UKIAogIzogcGdfdmVyaWZ5YmFja3VwLmM6MTM3OQogIywg Yy1mb3JtYXQKLW1zZ2lkICIgIC13LCAtLXdhbC1kaXJlY3Rvcnk9UEFUSCAgICB1c2Ugc3BlY2lm aWVkIHBhdGggZm9yIFdBTCBmaWxlc1xuIgotbXNnc3RyICIgIC13LCAtLXdhbC1kaXJlY3Rvcnk9 UEZBRCAgICBhbmdlZ2ViZW5lbiBQZmFkIGbDvHIgV0FMLURhdGVpZW4gdmVyd2VuZGVuXG4iCitt c2dpZCAiICAtdywgLS13YWwtcGF0aD1QQVRIICAgIHVzZSBzcGVjaWZpZWQgcGF0aCBmb3IgV0FM IGZpbGVzXG4iCittc2dzdHIgIiAgLXcsIC0td2FsLXBhdGg9UEZBRCAgICBhbmdlZ2ViZW5lbiBQ ZmFkIGbDvHIgV0FMLURhdGVpZW4gdmVyd2VuZGVuXG4iCiAKICM6IHBnX3ZlcmlmeWJhY2t1cC5j OjEzODAKICMsIGMtZm9ybWF0CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC9w by9lbC5wbyBiL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3BvL2VsLnBvCmluZGV4IDNlM2YyMGM2 N2M1Li44MTQ0MmY1MWMxNyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvcG8v ZWwucG8KKysrIGIvc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvcG8vZWwucG8KQEAgLTQ5NCw4ICs0 OTQsOCBAQCBtc2dzdHIgIiAgLXMsIC0tc2tpcC1jaGVja3N1bXMgICAgICAgIM+AzrHPgc6szrrO sc68z4jOtSDPhM63zr0gzrXPgM6xzrvOrs64zrXPhQogCiAjOiBwZ192ZXJpZnliYWNrdXAuYzo5 OTIKICMsIGMtZm9ybWF0Ci1tc2dpZCAiICAtdywgLS13YWwtZGlyZWN0b3J5PVBBVEggICAgdXNl IHNwZWNpZmllZCBwYXRoIGZvciBXQUwgZmlsZXNcbiIKLW1zZ3N0ciAiICAtdywgLS13YWwtZGly ZWN0b3J5PVBBVEggICAgz4fPgc63z4POuc68zr/PgM6/zq/Ot8+DzrUgz4TOt869IM66zrHOuM6/ z4HOuc+DzrzOrc69zrcgzrTOuc6xzrTPgc6/zrzOriDOs865zrEgzrHPgc+HzrXOr86xIFdBTFxu IgorbXNnaWQgIiAgLXcsIC0td2FsLXBhdGg9UEFUSCAgICB1c2Ugc3BlY2lmaWVkIHBhdGggZm9y IFdBTCBmaWxlc1xuIgorbXNnc3RyICIgIC13LCAtLXdhbC1wYXRoPVBBVEggICAgz4fPgc63z4PO uc68zr/PgM6/zq/Ot8+DzrUgz4TOt869IM66zrHOuM6/z4HOuc+DzrzOrc69zrcgzrTOuc6xzrTP gc6/zrzOriDOs865zrEgzrHPgc+HzrXOr86xIFdBTFxuIgogCiAjOiBwZ192ZXJpZnliYWNrdXAu Yzo5OTMKICMsIGMtZm9ybWF0CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC9w by9lcy5wbyBiL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3BvL2VzLnBvCmluZGV4IDBjYjk1OGYz NDQ4Li43ZjcyOWZhMzViYSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvcG8v ZXMucG8KKysrIGIvc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvcG8vZXMucG8KQEAgLTQ5NSw4ICs0 OTUsOCBAQCBtc2dzdHIgIiAgLXMsIC0tc2tpcC1jaGVja3N1bXMgICAgICAgIG9taXRpciBsYSB2 ZXJpZmljYWNpw7NuIGRlIGxhIHN1bWEgZGUgY29tcAogCiAjOiBwZ192ZXJpZnliYWNrdXAuYzo5 OTIKICMsIGMtZm9ybWF0Ci1tc2dpZCAiICAtdywgLS13YWwtZGlyZWN0b3J5PVBBVEggICAgdXNl IHNwZWNpZmllZCBwYXRoIGZvciBXQUwgZmlsZXNcbiIKLW1zZ3N0ciAiICAtdywgLS13YWwtZGly ZWN0b3J5PVBBVEggICAgdXRpbGl6YXIgbGEgcnV0YSBlc3BlY2lmaWNhZGEgcGFyYSBsb3MgYXJj aGl2b3MgV0FMXG4iCittc2dpZCAiICAtdywgLS13YWwtcGF0aD1QQVRIICAgIHVzZSBzcGVjaWZp ZWQgcGF0aCBmb3IgV0FMIGZpbGVzXG4iCittc2dzdHIgIiAgLXcsIC0td2FsLXBhdGg9UEFUSCAg ICB1dGlsaXphciBsYSBydXRhIGVzcGVjaWZpY2FkYSBwYXJhIGxvcyBhcmNoaXZvcyBXQUxcbiIK IAogIzogcGdfdmVyaWZ5YmFja3VwLmM6OTkzCiAjLCBjLWZvcm1hdApkaWZmIC0tZ2l0IGEvc3Jj L2Jpbi9wZ192ZXJpZnliYWNrdXAvcG8vZnIucG8gYi9zcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC9w by9mci5wbwppbmRleCBkYThjNzJmNjQyNy4uMDk5Mzc5NjZmYTcgMTAwNjQ0Ci0tLSBhL3NyYy9i aW4vcGdfdmVyaWZ5YmFja3VwL3BvL2ZyLnBvCisrKyBiL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3Vw L3BvL2ZyLnBvCkBAIC00OTgsOCArNDk4LDggQEAgbXNnc3RyICIgIC1zLCAtLXNraXAtY2hlY2tz dW1zICAgICAgICBpZ25vcmUgbGEgdsOpcmlmaWNhdGlvbiBkZXMgc29tbWVzIGRlIGNvbnQKIAog IzogcGdfdmVyaWZ5YmFja3VwLmM6OTkyCiAjLCBjLWZvcm1hdAotbXNnaWQgIiAgLXcsIC0td2Fs LWRpcmVjdG9yeT1QQVRIICAgIHVzZSBzcGVjaWZpZWQgcGF0aCBmb3IgV0FMIGZpbGVzXG4iCi1t c2dzdHIgIiAgLXcsIC0td2FsLWRpcmVjdG9yeT1DSEVNSU4gIHV0aWxpc2UgbGUgY2hlbWluIHNw w6ljaWZpw6kgcG91ciBsZXMgZmljaGllcnMgV0FMXG4iCittc2dpZCAiICAtdywgLS13YWwtcGF0 aD1QQVRIICAgIHVzZSBzcGVjaWZpZWQgcGF0aCBmb3IgV0FMIGZpbGVzXG4iCittc2dzdHIgIiAg LXcsIC0td2FsLXBhdGg9Q0hFTUlOICB1dGlsaXNlIGxlIGNoZW1pbiBzcMOpY2lmacOpIHBvdXIg bGVzIGZpY2hpZXJzIFdBTFxuIgogCiAjOiBwZ192ZXJpZnliYWNrdXAuYzo5OTMKICMsIGMtZm9y bWF0CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC9wby9pdC5wbyBiL3NyYy9i aW4vcGdfdmVyaWZ5YmFja3VwL3BvL2l0LnBvCmluZGV4IDMxN2IwYjcxZTdmLi40ZGE2OGQwMDc0 ZSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvcG8vaXQucG8KKysrIGIvc3Jj L2Jpbi9wZ192ZXJpZnliYWNrdXAvcG8vaXQucG8KQEAgLTQ3Miw4ICs0NzIsOCBAQCBtc2dzdHIg IiAgLXMsIC0tc2tpcC1jaGVja3N1bXMgICAgICAgICBzYWx0YSBsYSB2ZXJpZmljYSBkZWwgY2hl Y2tzdW1cbiIKIAogIzogcGdfdmVyaWZ5YmFja3VwLmM6OTExCiAjLCBjLWZvcm1hdAotbXNnaWQg IiAgLXcsIC0td2FsLWRpcmVjdG9yeT1QQVRIICAgIHVzZSBzcGVjaWZpZWQgcGF0aCBmb3IgV0FM IGZpbGVzXG4iCi1tc2dzdHIgIiAgLXcsIC0td2FsLWRpcmVjdG9yeT1QQVRIICAgICB1c2EgaWwg cGVyY29yc28gc3BlY2lmaWNhdG8gcGVyIGkgZmlsZSBXQUxcbiIKK21zZ2lkICIgIC13LCAtLXdh bC1wYXRoPVBBVEggICAgdXNlIHNwZWNpZmllZCBwYXRoIGZvciBXQUwgZmlsZXNcbiIKK21zZ3N0 ciAiICAtdywgLS13YWwtcGF0aD1QQVRIICAgICB1c2EgaWwgcGVyY29yc28gc3BlY2lmaWNhdG8g cGVyIGkgZmlsZSBXQUxcbiIKIAogIzogcGdfdmVyaWZ5YmFja3VwLmM6OTEyCiAjLCBjLWZvcm1h dApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvcG8vamEucG8gYi9zcmMvYmlu L3BnX3ZlcmlmeWJhY2t1cC9wby9qYS5wbwppbmRleCBjOTEwZmIyMzZjYy4uYTk0ODk1OWI1NGYg MTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3BvL2phLnBvCisrKyBiL3NyYy9i aW4vcGdfdmVyaWZ5YmFja3VwL3BvL2phLnBvCkBAIC02NzIsOCArNjcyLDggQEAgbXNnc3RyICIg IC1zLCAtLXNraXAtY2hlY2tzdW1zICAgICAgICDjg4Hjgqfjg4Pjgq/jgrXjg6DmpJzoqLzjgpLj grnjgq3jg4Pjg5dcbiIKIAogIzogcGdfdmVyaWZ5YmFja3VwLmM6MTM3OQogIywgYy1mb3JtYXQK LW1zZ2lkICIgIC13LCAtLXdhbC1kaXJlY3Rvcnk9UEFUSCAgICB1c2Ugc3BlY2lmaWVkIHBhdGgg Zm9yIFdBTCBmaWxlc1xuIgotbXNnc3RyICIgIC13LCAtLXdhbC1kaXJlY3Rvcnk9UEFUSCAgICBX QUzjg5XjgqHjgqTjg6vjgavmjIflrprjgZfjgZ/jg5HjgrnjgpLkvb/nlKjjgZnjgotcbiIKK21z Z2lkICIgIC13LCAtLXdhbC1wYXRoPVBBVEggICAgdXNlIHNwZWNpZmllZCBwYXRoIGZvciBXQUwg ZmlsZXNcbiIKK21zZ3N0ciAiICAtdywgLS13YWwtcGF0aD1QQVRIICAgIFdBTOODleOCoeOCpOOD q+OBq+aMh+WumuOBl+OBn+ODkeOCueOCkuS9v+eUqOOBmeOCi1xuIgogCiAjOiBwZ192ZXJpZnli YWNrdXAuYzoxMzgwCiAjLCBjLWZvcm1hdApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ192ZXJpZnli YWNrdXAvcG8va2EucG8gYi9zcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC9wby9rYS5wbwppbmRleCA5 ODI3NTE5ODRjNy4uZWYyNzk5MzE2YTggMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfdmVyaWZ5YmFj a3VwL3BvL2thLnBvCisrKyBiL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3BvL2thLnBvCkBAIC03 ODQsOCArNzg0LDggQEAgbXNnc3RyICIgIC1zLCAtLXNraXAtY2hlY2tzdW1zICAgICAgICDhg6Hh g5Dhg5nhg53hg5zhg6Lhg6Dhg53hg5rhg50g4YOv4YOQ4YObCiAKICM6IHBnX3ZlcmlmeWJhY2t1 cC5jOjEzNzkKICMsIGMtZm9ybWF0Ci1tc2dpZCAiICAtdywgLS13YWwtZGlyZWN0b3J5PVBBVEgg ICAgdXNlIHNwZWNpZmllZCBwYXRoIGZvciBXQUwgZmlsZXNcbiIKLW1zZ3N0ciAiICAtdywgLS13 YWwtZGlyZWN0b3J5PeGDkeGDmOGDmuGDmOGDmeGDmCAgICBXQUwg4YOk4YOQ4YOY4YOa4YOU4YOR 4YOY4YOh4YOX4YOV4YOY4YOhIOGDm+GDmOGDl+GDmOGDl+GDlOGDkeGDo+GDmuGDmCDhg5Hhg5jh g5rhg5jhg5nhg5jhg6Eg4YOS4YOQ4YOb4YOd4YOn4YOU4YOc4YOU4YOR4YOQXG4iCittc2dpZCAi ICAtdywgLS13YWwtcGF0aD1QQVRIICAgIHVzZSBzcGVjaWZpZWQgcGF0aCBmb3IgV0FMIGZpbGVz XG4iCittc2dzdHIgIiAgLXcsIC0td2FsLXBhdGg94YOR4YOY4YOa4YOY4YOZ4YOYICAgIFdBTCDh g6Thg5Dhg5jhg5rhg5Thg5Hhg5jhg6Hhg5fhg5Xhg5jhg6Eg4YOb4YOY4YOX4YOY4YOX4YOU4YOR 4YOj4YOa4YOYIOGDkeGDmOGDmuGDmOGDmeGDmOGDoSDhg5Lhg5Dhg5vhg53hg6fhg5Thg5zhg5Th g5Hhg5BcbiIKIAogIzogcGdfdmVyaWZ5YmFja3VwLmM6MTM4MAogIywgYy1mb3JtYXQKZGlmZiAt LWdpdCBhL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3BvL2tvLnBvIGIvc3JjL2Jpbi9wZ192ZXJp ZnliYWNrdXAvcG8va28ucG8KaW5kZXggYWNkYzNkYTVlMDIuLmVhZjkxZWYxZTk4IDEwMDY0NAot LS0gYS9zcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC9wby9rby5wbworKysgYi9zcmMvYmluL3BnX3Zl cmlmeWJhY2t1cC9wby9rby5wbwpAQCAtNTAxLDggKzUwMSw4IEBAIG1zZ3N0ciAiICAtcywgLS1z a2lwLWNoZWNrc3VtcyAgICAgICAg7LK07YGs7ISsIOqygOyCrCDqsbTrhIjrnIBcbiIKIAogIzog cGdfdmVyaWZ5YmFja3VwLmM6OTkyCiAjLCBjLWZvcm1hdAotbXNnaWQgIiAgLXcsIC0td2FsLWRp cmVjdG9yeT1QQVRIICAgIHVzZSBzcGVjaWZpZWQgcGF0aCBmb3IgV0FMIGZpbGVzXG4iCi1tc2dz dHIgIiAgLXcsIC0td2FsLWRpcmVjdG9yeT3qsr3roZwgICAgV0FMIO2MjOydvOydtCDsnojripQg 6rK966GcIOyngOyglVxuIgorbXNnaWQgIiAgLXcsIC0td2FsLXBhdGg9UEFUSCAgICB1c2Ugc3Bl Y2lmaWVkIHBhdGggZm9yIFdBTCBmaWxlc1xuIgorbXNnc3RyICIgIC13LCAtLXdhbC1wYXRoPeqy veuhnCAgICBXQUwg7YyM7J287J20IOyeiOuKlCDqsr3roZwg7KeA7KCVXG4iCiAKICM6IHBnX3Zl cmlmeWJhY2t1cC5jOjk5MwogIywgYy1mb3JtYXQKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfdmVy aWZ5YmFja3VwL3BvL3J1LnBvIGIvc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvcG8vcnUucG8KaW5k ZXggNjQwMDVmZWVkZmQuLjdmYjBlNWFiMWY2IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3Zlcmlm eWJhY2t1cC9wby9ydS5wbworKysgYi9zcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC9wby9ydS5wbwpA QCAtNTA3LDkgKzUwNyw5IEBAIG1zZ3N0ciAiICAtcywgLS1za2lwLWNoZWNrc3VtcyAgICAgICAg 0L/RgNC+0L/Rg9GB0YLQuNGC0Ywg0L/RgNC+0LLQtdGA0LrRgyDQutC+CiAKICM6IHBnX3Zlcmlm eWJhY2t1cC5jOjk5MgogIywgYy1mb3JtYXQKLW1zZ2lkICIgIC13LCAtLXdhbC1kaXJlY3Rvcnk9 UEFUSCAgICB1c2Ugc3BlY2lmaWVkIHBhdGggZm9yIFdBTCBmaWxlc1xuIgorbXNnaWQgIiAgLXcs IC0td2FsLXBhdGg9UEFUSCAgICB1c2Ugc3BlY2lmaWVkIHBhdGggZm9yIFdBTCBmaWxlc1xuIgog bXNnc3RyICIiCi0iICAtdywgLS13YWwtZGlyZWN0b3J5PdCf0KPQotCsICAgINC40YHQv9C+0LvR jNC30L7QstCw0YLRjCDQt9Cw0LTQsNC90L3Ri9C5INC/0YPRgtGMINC6INGE0LDQudC70LDQvCBX QUxcbiIKKyIgIC13LCAtLXdhbC1wYXRoPdCf0KPQotCsICAgINC40YHQv9C+0LvRjNC30L7QstCw 0YLRjCDQt9Cw0LTQsNC90L3Ri9C5INC/0YPRgtGMINC6INGE0LDQudC70LDQvCBXQUxcbiIKIAog IzogcGdfdmVyaWZ5YmFja3VwLmM6OTkzCiAjLCBjLWZvcm1hdApkaWZmIC0tZ2l0IGEvc3JjL2Jp bi9wZ192ZXJpZnliYWNrdXAvcG8vc3YucG8gYi9zcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC9wby9z di5wbwppbmRleCAxNzI0MGZlZWI1Yy4uOTcxMjU4MzhlOGMgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4v cGdfdmVyaWZ5YmFja3VwL3BvL3N2LnBvCisrKyBiL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3Bv L3N2LnBvCkBAIC00OTIsOCArNDkyLDggQEAgbXNnc3RyICIgIC1zLCAtLXNraXAtY2hlY2tzdW1z ICAgICAgICBob3BwYSDDtnZlciB2ZXJpZmllcmluZyBhdiBrb250cm9sbHN1bW1vclwKIAogIzog cGdfdmVyaWZ5YmFja3VwLmM6OTkyCiAjLCBjLWZvcm1hdAotbXNnaWQgIiAgLXcsIC0td2FsLWRp cmVjdG9yeT1QQVRIICAgIHVzZSBzcGVjaWZpZWQgcGF0aCBmb3IgV0FMIGZpbGVzXG4iCi1tc2dz dHIgIiAgLXcsIC0td2FsLWRpcmVjdG9yeT1Tw5ZLVsOERyAgYW52w6RuZCBkZW5uYSBzw7ZrdsOk ZyB0aWxsIFdBTC1maWxlclxuIgorbXNnaWQgIiAgLXcsIC0td2FsLXBhdGg9UEFUSCAgICB1c2Ug c3BlY2lmaWVkIHBhdGggZm9yIFdBTCBmaWxlc1xuIgorbXNnc3RyICIgIC13LCAtLXdhbC1wYXRo PVPDlktWw4RHICBhbnbDpG5kIGRlbm5hIHPDtmt2w6RnIHRpbGwgV0FMLWZpbGVyXG4iCiAKICM6 IHBnX3ZlcmlmeWJhY2t1cC5jOjk5MwogIywgYy1mb3JtYXQKZGlmZiAtLWdpdCBhL3NyYy9iaW4v cGdfdmVyaWZ5YmFja3VwL3BvL3VrLnBvIGIvc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvcG8vdWsu cG8KaW5kZXggMDM0Yjk3NjQyMzIuLjYzZjgwNDFhYjM4IDEwMDY0NAotLS0gYS9zcmMvYmluL3Bn X3ZlcmlmeWJhY2t1cC9wby91ay5wbworKysgYi9zcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC9wby91 ay5wbwpAQCAtNDg0LDggKzQ4NCw4IEBAIG1zZ3N0ciAiICAtcywgLS1za2lwLWNoZWNrc3VtcyDQ vdC1INC/0LXRgNC10LLRltGA0Y/RgtC4INC60L7QvdGC0YDQvtC70YzQvdGWINGBCiAKICM6IHBn X3ZlcmlmeWJhY2t1cC5jOjk5MgogIywgYy1mb3JtYXQKLW1zZ2lkICIgIC13LCAtLXdhbC1kaXJl Y3Rvcnk9UEFUSCAgICB1c2Ugc3BlY2lmaWVkIHBhdGggZm9yIFdBTCBmaWxlc1xuIgotbXNnc3Ry ICIgIC13LCAtLXdhbC1kaXJlY3Rvcnk9UEFUSCDQstC40LrQvtGA0LjRgdGC0L7QstGD0LLQsNGC 0Lgg0LLQutCw0LfQsNC90LjQuSDRiNC70Y/RhSDQtNC70Y8g0YTQsNC50LvRltCyIFdBTFxuIgor bXNnaWQgIiAgLXcsIC0td2FsLXBhdGg9UEFUSCAgICB1c2Ugc3BlY2lmaWVkIHBhdGggZm9yIFdB TCBmaWxlc1xuIgorbXNnc3RyICIgIC13LCAtLXdhbC1wYXRoPVBBVEgg0LLQuNC60L7RgNC40YHR gtC+0LLRg9Cy0LDRgtC4INCy0LrQsNC30LDQvdC40Lkg0YjQu9GP0YUg0LTQu9GPINGE0LDQudC7 0ZbQsiBXQUxcbiIKIAogIzogcGdfdmVyaWZ5YmFja3VwLmM6OTkzCiAjLCBjLWZvcm1hdApkaWZm IC0tZ2l0IGEvc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvcG8vemhfQ04ucG8gYi9zcmMvYmluL3Bn X3ZlcmlmeWJhY2t1cC9wby96aF9DTi5wbwppbmRleCBiN2Q5N2M4OTc2ZC4uZmI2ZmNhZThiODIg MTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3BvL3poX0NOLnBvCisrKyBiL3Ny Yy9iaW4vcGdfdmVyaWZ5YmFja3VwL3BvL3poX0NOLnBvCkBAIC00NjUsOCArNDY1LDggQEAgbXNn c3RyICIgIC1zLCAtLXNraXAtY2hlY2tzdW1zICAgICAgICDot7Pov4fmoKHpqozlkozpqozor4Fc biIKIAogIzogcGdfdmVyaWZ5YmFja3VwLmM6OTE5CiAjLCBjLWZvcm1hdAotbXNnaWQgIiAgLXcs IC0td2FsLWRpcmVjdG9yeT1QQVRIICAgIHVzZSBzcGVjaWZpZWQgcGF0aCBmb3IgV0FMIGZpbGVz XG4iCi1tc2dzdHIgIiAgLXcsIC0td2FsLWRpcmVjdG9yeT1QQVRIICAgIOWvuVdBTOaWh+S7tuS9 v+eUqOaMh+Wumui3r+W+hFxuIgorbXNnaWQgIiAgLXcsIC0td2FsLXBhdGg9UEFUSCAgICB1c2Ug c3BlY2lmaWVkIHBhdGggZm9yIFdBTCBmaWxlc1xuIgorbXNnc3RyICIgIC13LCAtLXdhbC1wYXRo PVBBVEggICAg5a+5V0FM5paH5Lu25L2/55So5oyH5a6a6Lev5b6EXG4iCiAKICM6IHBnX3Zlcmlm eWJhY2t1cC5jOjkyMAogIywgYy1mb3JtYXQKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfdmVyaWZ5 YmFja3VwL3BvL3poX1RXLnBvIGIvc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvcG8vemhfVFcucG8K aW5kZXggYzFiNzEwYjBhMzYuLjU2OGY5NzJiMGJiIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3Zl cmlmeWJhY2t1cC9wby96aF9UVy5wbworKysgYi9zcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC9wby96 aF9UVy5wbwpAQCAtNTU1LDggKzU1NSw4IEBAIG1zZ3N0ciAiICAtcywgLS1za2lwLWNoZWNrc3Vt cyAgICAgICAg6Lez6YGO5qqi5p+l56K86amX6K2JXG4iCiAKICM6IHBnX3ZlcmlmeWJhY2t1cC5j Ojk5MgogIywgYy1mb3JtYXQKLW1zZ2lkICIgIC13LCAtLXdhbC1kaXJlY3Rvcnk9UEFUSCAgICB1 c2Ugc3BlY2lmaWVkIHBhdGggZm9yIFdBTCBmaWxlc1xuIgotbXNnc3RyICIgIC13LCAtLXdhbC1k aXJlY3Rvcnk9UEFUSCAgICDnlKjmjIflrprnmoTot6/lvpHlrZjmlL4gV0FMIOaqlFxuIgorbXNn aWQgIiAgLXcsIC0td2FsLXBhdGg9UEFUSCAgICB1c2Ugc3BlY2lmaWVkIHBhdGggZm9yIFdBTCBm aWxlc1xuIgorbXNnc3RyICIgIC13LCAtLXdhbC1wYXRoPVBBVEggICAg55So5oyH5a6a55qE6Lev 5b6R5a2Y5pS+IFdBTCDmqpRcbiIKIAogIzogcGdfdmVyaWZ5YmFja3VwLmM6OTkzCiAjLCBjLWZv cm1hdApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvdC8wMDdfd2FsLnBsIGIv c3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvdC8wMDdfd2FsLnBsCmluZGV4IGJhYmM0ZjBhODZiLi5i MDdmODA3MTliMCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvdC8wMDdfd2Fs LnBsCisrKyBiL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3QvMDA3X3dhbC5wbApAQCAtNDIsMTAg KzQyLDEwIEBAIGNvbW1hbmRfb2soWyAncGdfdmVyaWZ5YmFja3VwJywgJy0tbm8tcGFyc2Utd2Fs JywgJGJhY2t1cF9wYXRoIF0sCiBjb21tYW5kX29rKAogCVsKIAkJJ3BnX3ZlcmlmeWJhY2t1cCcs Ci0JCSctLXdhbC1kaXJlY3RvcnknID0+ICRyZWxvY2F0ZWRfcGdfd2FsLAorCQknLS13YWwtcGF0 aCcgPT4gJHJlbG9jYXRlZF9wZ193YWwsCiAJCSRiYWNrdXBfcGF0aAogCV0sCi0JJy0td2FsLWRp cmVjdG9yeSBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IFdBTCBkaXJlY3RvcnknKTsKKwknLS13YWwt cGF0aCBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IFdBTCBkaXJlY3RvcnknKTsKIAogIyBNb3ZlIGRp cmVjdG9yeSBiYWNrIHRvIG9yaWdpbmFsIGxvY2F0aW9uLgogcmVuYW1lKCRyZWxvY2F0ZWRfcGdf d2FsLCAkb3JpZ2luYWxfcGdfd2FsKSB8fCBkaWUgInJlbmFtZSBwZ193YWwgYmFjazogJCEiOwot LSAKMi40Ny4xCgo= --0000000000009207e5063f9be993 Content-Type: application/x-patch; name="v4-0008-pg_verifybackup-enabled-WAL-parsing-for-tar-forma.patch" Content-Disposition: attachment; filename="v4-0008-pg_verifybackup-enabled-WAL-parsing-for-tar-forma.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mfz580t87 RnJvbSBjYTliM2NjZWM4MTQzYTUzYzJkYmNhZTNhMTFhMGVkZjA5ZjViOTZiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFRo dSwgMTcgSnVsIDIwMjUgMTY6Mzk6MzYgKzA1MzAKU3ViamVjdDogW1BBVENIIHY0IDgvOF0gcGdf dmVyaWZ5YmFja3VwOiBlbmFibGVkIFdBTCBwYXJzaW5nIGZvciB0YXItZm9ybWF0CiBiYWNrdXAK Ck5vdyB0aGF0IHBnX3dhbGR1bXAgc3VwcG9ydHMgZGVjb2RpbmcgZnJvbSB0YXIgYXJjaGl2ZXMs IHdlIHNob3VsZApsZXZlcmFnZSB0aGlzIGZ1bmN0aW9uYWxpdHkgdG8gcmVtb3ZlIHRoZSBwcmV2 aW91cyByZXN0cmljdGlvbiBvbiBXQUwKcGFyc2luZyBmb3IgdGFyLWJhY2tlZCBmb3JtYXRzLgot LS0KIGRvYy9zcmMvc2dtbC9yZWYvcGdfdmVyaWZ5YmFja3VwLnNnbWwgICAgICAgICB8ICA1ICst CiBzcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC9wZ192ZXJpZnliYWNrdXAuYyAgICAgfCA2NiArKysr KysrKysrKysrLS0tLS0tCiBzcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC90LzAwMl9hbGdvcml0aG0u cGwgICAgfCAgNCAtLQogc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvdC8wMDNfY29ycnVwdGlvbi5w bCAgIHwgIDQgKy0KIHNyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3QvMDA4X3VudGFyLnBsICAgICAg ICB8ICAzICstCiBzcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC90LzAxMF9jbGllbnRfdW50YXIucGwg fCAgMyArLQogNiBmaWxlcyBjaGFuZ2VkLCA1MCBpbnNlcnRpb25zKCspLCAzNSBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3BnX3ZlcmlmeWJhY2t1cC5zZ21sIGIv ZG9jL3NyYy9zZ21sL3JlZi9wZ192ZXJpZnliYWNrdXAuc2dtbAppbmRleCBlOWI4YmZkNTFiMS4u MTZiNTBiNWE0ZGYgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvcGdfdmVyaWZ5YmFja3Vw LnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9wZ192ZXJpZnliYWNrdXAuc2dtbApAQCAtMzYs MTAgKzM2LDcgQEAgUG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCiAgICA8bGl0ZXJhbD5iYWNrdXBf bWFuaWZlc3Q8L2xpdGVyYWw+IGdlbmVyYXRlZCBieSB0aGUgc2VydmVyIGF0IHRoZSB0aW1lCiAg ICBvZiB0aGUgYmFja3VwLiBUaGUgYmFja3VwIG1heSBiZSBzdG9yZWQgZWl0aGVyIGluIHRoZSAi cGxhaW4iIG9yIHRoZSAidGFyIgogICAgZm9ybWF0OyB0aGlzIGluY2x1ZGVzIHRhci1mb3JtYXQg YmFja3VwcyBjb21wcmVzc2VkIHdpdGggYW55IGFsZ29yaXRobQotICAgc3VwcG9ydGVkIGJ5IDxh cHBsaWNhdGlvbj5wZ19iYXNlYmFja3VwPC9hcHBsaWNhdGlvbj4uIEhvd2V2ZXIsIGF0IHByZXNl bnQsCi0gICA8bGl0ZXJhbD5XQUw8L2xpdGVyYWw+IHZlcmlmaWNhdGlvbiBpcyBzdXBwb3J0ZWQg b25seSBmb3IgcGxhaW4tZm9ybWF0Ci0gICBiYWNrdXBzLiBUaGVyZWZvcmUsIGlmIHRoZSBiYWNr dXAgaXMgc3RvcmVkIGluIHRhci1mb3JtYXQsIHRoZQotICAgPGxpdGVyYWw+LW4sIC0tbm8tcGFy c2Utd2FsPC9saXRlcmFsPiBvcHRpb24gc2hvdWxkIGJlIHVzZWQuCisgICBzdXBwb3J0ZWQgYnkg PGFwcGxpY2F0aW9uPnBnX2Jhc2ViYWNrdXA8L2FwcGxpY2F0aW9uPi4KICAgPC9wYXJhPgogCiAg IDxwYXJhPgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvcGdfdmVyaWZ5YmFj a3VwLmMgYi9zcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC9wZ192ZXJpZnliYWNrdXAuYwppbmRleCAx ZWU0MDAxOTlkYS4uNGJmZTZmZGZmMTYgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfdmVyaWZ5YmFj a3VwL3BnX3ZlcmlmeWJhY2t1cC5jCisrKyBiL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3BnX3Zl cmlmeWJhY2t1cC5jCkBAIC03NCw3ICs3NCw5IEBAIHBnX25vcmV0dXJuIHN0YXRpYyB2b2lkIHJl cG9ydF9tYW5pZmVzdF9lcnJvcihKc29uTWFuaWZlc3RQYXJzZUNvbnRleHQgKmNvbnRleHQsCiAJ CQkJCQkJCQkJCSAgY29uc3QgY2hhciAqZm10LC4uLikKIAkJCXBnX2F0dHJpYnV0ZV9wcmludGYo MiwgMyk7CiAKLXN0YXRpYyB2b2lkIHZlcmlmeV90YXJfYmFja3VwKHZlcmlmaWVyX2NvbnRleHQg KmNvbnRleHQsIERJUiAqZGlyKTsKK3N0YXRpYyB2b2lkIHZlcmlmeV90YXJfYmFja3VwKHZlcmlm aWVyX2NvbnRleHQgKmNvbnRleHQsIERJUiAqZGlyLAorCQkJCQkJCSAgY2hhciAqKmJhc2VfYXJj aGl2ZV9wYXRoLAorCQkJCQkJCSAgY2hhciAqKndhbF9hcmNoaXZlX3BhdGgpOwogc3RhdGljIHZv aWQgdmVyaWZ5X3BsYWluX2JhY2t1cF9kaXJlY3RvcnkodmVyaWZpZXJfY29udGV4dCAqY29udGV4 dCwKIAkJCQkJCQkJCQkgIGNoYXIgKnJlbHBhdGgsIGNoYXIgKmZ1bGxwYXRoLAogCQkJCQkJCQkJ CSAgRElSICpkaXIpOwpAQCAtODMsNyArODUsOSBAQCBzdGF0aWMgdm9pZCB2ZXJpZnlfcGxhaW5f YmFja3VwX2ZpbGUodmVyaWZpZXJfY29udGV4dCAqY29udGV4dCwgY2hhciAqcmVscGF0aCwKIHN0 YXRpYyB2b2lkIHZlcmlmeV9jb250cm9sX2ZpbGUoY29uc3QgY2hhciAqY29udHJvbHBhdGgsCiAJ CQkJCQkJCXVpbnQ2NCBtYW5pZmVzdF9zeXN0ZW1faWRlbnRpZmllcik7CiBzdGF0aWMgdm9pZCBw cmVjaGVja190YXJfYmFja3VwX2ZpbGUodmVyaWZpZXJfY29udGV4dCAqY29udGV4dCwgY2hhciAq cmVscGF0aCwKLQkJCQkJCQkJCSBjaGFyICpmdWxscGF0aCwgU2ltcGxlUHRyTGlzdCAqdGFyZmls ZXMpOworCQkJCQkJCQkJIGNoYXIgKmZ1bGxwYXRoLCBTaW1wbGVQdHJMaXN0ICp0YXJmaWxlcywK KwkJCQkJCQkJCSBjaGFyICoqYmFzZV9hcmNoaXZlX3BhdGgsCisJCQkJCQkJCQkgY2hhciAqKndh bF9hcmNoaXZlX3BhdGgpOwogc3RhdGljIHZvaWQgdmVyaWZ5X3Rhcl9maWxlKHZlcmlmaWVyX2Nv bnRleHQgKmNvbnRleHQsIGNoYXIgKnJlbHBhdGgsCiAJCQkJCQkJY2hhciAqZnVsbHBhdGgsIGFz dHJlYW1lciAqc3RyZWFtZXIpOwogc3RhdGljIHZvaWQgcmVwb3J0X2V4dHJhX2JhY2t1cF9maWxl cyh2ZXJpZmllcl9jb250ZXh0ICpjb250ZXh0KTsKQEAgLTEzNiw2ICsxNDAsOCBAQCBtYWluKGlu dCBhcmdjLCBjaGFyICoqYXJndikKIAlib29sCQlub19wYXJzZV93YWwgPSBmYWxzZTsKIAlib29s CQlxdWlldCA9IGZhbHNlOwogCWNoYXIJICAgKndhbF9wYXRoID0gTlVMTDsKKwljaGFyCSAgICpi YXNlX2FyY2hpdmVfcGF0aCA9IE5VTEw7CisJY2hhcgkgICAqd2FsX2FyY2hpdmVfcGF0aCA9IE5V TEw7CiAJY2hhcgkgICAqcGdfd2FsZHVtcF9wYXRoID0gTlVMTDsKIAlESVIJCSAgICpkaXI7CiAK QEAgLTMyNywxNyArMzMzLDYgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCXBmcmVl KHBhdGgpOwogCX0KIAotCS8qCi0JICogWFhYOiBJbiB0aGUgZnV0dXJlLCB3ZSBzaG91bGQgY29u c2lkZXIgZW5oYW5jaW5nIHBnX3dhbGR1bXAgdG8gcmVhZCBXQUwKLQkgKiBmaWxlcyBmcm9tIGFu IGFyY2hpdmUuCi0JICovCi0JaWYgKCFub19wYXJzZV93YWwgJiYgY29udGV4dC5mb3JtYXQgPT0g J3QnKQotCXsKLQkJcGdfbG9nX2Vycm9yKCJwZ193YWxkdW1wIGNhbm5vdCByZWFkIHRhciBmaWxl cyIpOwotCQlwZ19sb2dfZXJyb3JfaGludCgiWW91IG11c3QgdXNlIC1uLy0tbm8tcGFyc2Utd2Fs IHdoZW4gdmVyaWZ5aW5nIGEgdGFyLWZvcm1hdCBiYWNrdXAuIik7Ci0JCWV4aXQoMSk7Ci0JfQot CiAJLyoKIAkgKiBQZXJmb3JtIHRoZSBhcHByb3ByaWF0ZSB0eXBlIG9mIHZlcmlmaWNhdGlvbiBh cHByb3ByaWF0ZSBiYXNlZCBvbiB0aGUKIAkgKiBiYWNrdXAgZm9ybWF0LiBUaGlzIHdpbGwgY2xv c2UgJ2RpcicuCkBAIC0zNDYsNyArMzQxLDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3Yp CiAJCXZlcmlmeV9wbGFpbl9iYWNrdXBfZGlyZWN0b3J5KCZjb250ZXh0LCBOVUxMLCBjb250ZXh0 LmJhY2t1cF9kaXJlY3RvcnksCiAJCQkJCQkJCQkgIGRpcik7CiAJZWxzZQotCQl2ZXJpZnlfdGFy X2JhY2t1cCgmY29udGV4dCwgZGlyKTsKKwkJdmVyaWZ5X3Rhcl9iYWNrdXAoJmNvbnRleHQsIGRp ciwgJmJhc2VfYXJjaGl2ZV9wYXRoLCAmd2FsX2FyY2hpdmVfcGF0aCk7CiAKIAkvKgogCSAqIFRo ZSAibWF0Y2hlZCIgZmxhZyBzaG91bGQgbm93IGJlIHNldCBvbiBldmVyeSBlbnRyeSBpbiB0aGUg aGFzaCB0YWJsZS4KQEAgLTM2NCw5ICszNTksMjggQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFy Z3YpCiAJaWYgKGNvbnRleHQuZm9ybWF0ID09ICdwJyAmJiAhY29udGV4dC5za2lwX2NoZWNrc3Vt cykKIAkJdmVyaWZ5X2JhY2t1cF9jaGVja3N1bXMoJmNvbnRleHQpOwogCi0JLyogQnkgZGVmYXVs dCwgbG9vayBmb3IgdGhlIFdBTCBpbiB0aGUgYmFja3VwIGRpcmVjdG9yeSwgdG9vLiAqLworCS8q CisJICogQnkgZGVmYXVsdCwgV0FMIGZpbGVzIGFyZSBleHBlY3RlZCB0byBiZSBmb3VuZCBpbiB0 aGUgYmFja3VwIGRpcmVjdG9yeQorCSAqIGZvciBwbGFpbi1mb3JtYXQgYmFja3Vwcy4gSW4gdGhl IGNhc2Ugb2YgdGFyLWZvcm1hdCBiYWNrdXBzLCBpZiBhCisJICogc2VwYXJhdGUgV0FMIGFyY2hp dmUgaXMgbm90IGZvdW5kLCB0aGUgV0FMIGZpbGVzIGFyZSBtb3N0IGxpa2VseQorCSAqIGluY2x1 ZGVkIHdpdGhpbiB0aGUgbWFpbiBkYXRhIGRpcmVjdG9yeSBhcmNoaXZlLgorCSAqLwogCWlmICh3 YWxfcGF0aCA9PSBOVUxMKQotCQl3YWxfcGF0aCA9IHBzcHJpbnRmKCIlcy9wZ193YWwiLCBjb250 ZXh0LmJhY2t1cF9kaXJlY3RvcnkpOworCXsKKwkJaWYgKGNvbnRleHQuZm9ybWF0ID09ICdwJykK KwkJCXdhbF9wYXRoID0gcHNwcmludGYoIiVzL3BnX3dhbCIsIGNvbnRleHQuYmFja3VwX2RpcmVj dG9yeSk7CisJCWVsc2UgaWYgKHdhbF9hcmNoaXZlX3BhdGgpCisJCQl3YWxfcGF0aCA9IHdhbF9h cmNoaXZlX3BhdGg7CisJCWVsc2UgaWYgKGJhc2VfYXJjaGl2ZV9wYXRoKQorCQkJd2FsX3BhdGgg PSBiYXNlX2FyY2hpdmVfcGF0aDsKKwkJZWxzZQorCQl7CisJCQlwZ19sb2dfZXJyb3IoIndhbCBh cmNoaXZlIG5vdCBmb3VuZCIpOworCQkJcGdfbG9nX2Vycm9yX2hpbnQoIlNwZWNpZnkgdGhlIGNv cnJlY3QgcGF0aCB1c2luZyB0aGUgb3B0aW9uIC13Ly0td2FsLXBhdGguIgorCQkJCQkJCSAgIk9y IHlvdSBtdXN0IHVzZSAtbi8tLW5vLXBhcnNlLXdhbCB3aGVuIHZlcmlmeWluZyBhIHRhci1mb3Jt YXQgYmFja3VwLiIpOworCQkJZXhpdCgxKTsKKwkJfQorCX0KIAogCS8qCiAJICogVHJ5IHRvIHBh cnNlIHRoZSByZXF1aXJlZCByYW5nZXMgb2YgV0FMIHJlY29yZHMsIHVubGVzcyB3ZSB3ZXJlIHRv bGQKQEAgLTc4Nyw3ICs4MDEsOCBAQCB2ZXJpZnlfY29udHJvbF9maWxlKGNvbnN0IGNoYXIgKmNv bnRyb2xwYXRoLCB1aW50NjQgbWFuaWZlc3Rfc3lzdGVtX2lkZW50aWZpZXIpCiAgKiBjbG9zZSB3 aGVuIHdlJ3JlIGRvbmUgd2l0aCBpdC4KICAqLwogc3RhdGljIHZvaWQKLXZlcmlmeV90YXJfYmFj a3VwKHZlcmlmaWVyX2NvbnRleHQgKmNvbnRleHQsIERJUiAqZGlyKQordmVyaWZ5X3Rhcl9iYWNr dXAodmVyaWZpZXJfY29udGV4dCAqY29udGV4dCwgRElSICpkaXIsIGNoYXIgKipiYXNlX2FyY2hp dmVfcGF0aCwKKwkJCQkgIGNoYXIgKip3YWxfYXJjaGl2ZV9wYXRoKQogewogCXN0cnVjdCBkaXJl bnQgKmRpcmVudDsKIAlTaW1wbGVQdHJMaXN0IHRhcmZpbGVzID0ge05VTEwsIE5VTEx9OwpAQCAt ODE2LDcgKzgzMSw4IEBAIHZlcmlmeV90YXJfYmFja3VwKHZlcmlmaWVyX2NvbnRleHQgKmNvbnRl eHQsIERJUiAqZGlyKQogCQkJY2hhcgkgICAqZnVsbHBhdGg7CiAKIAkJCWZ1bGxwYXRoID0gcHNw cmludGYoIiVzLyVzIiwgY29udGV4dC0+YmFja3VwX2RpcmVjdG9yeSwgZmlsZW5hbWUpOwotCQkJ cHJlY2hlY2tfdGFyX2JhY2t1cF9maWxlKGNvbnRleHQsIGZpbGVuYW1lLCBmdWxscGF0aCwgJnRh cmZpbGVzKTsKKwkJCXByZWNoZWNrX3Rhcl9iYWNrdXBfZmlsZShjb250ZXh0LCBmaWxlbmFtZSwg ZnVsbHBhdGgsICZ0YXJmaWxlcywKKwkJCQkJCQkJCSBiYXNlX2FyY2hpdmVfcGF0aCwgd2FsX2Fy Y2hpdmVfcGF0aCk7CiAJCQlwZnJlZShmdWxscGF0aCk7CiAJCX0KIAl9CkBAIC04NzUsMTEgKzg5 MSwxMyBAQCB2ZXJpZnlfdGFyX2JhY2t1cCh2ZXJpZmllcl9jb250ZXh0ICpjb250ZXh0LCBESVIg KmRpcikKICAqCiAgKiBUaGUgYXJndW1lbnRzIHRvIHRoaXMgZnVuY3Rpb24gYXJlIG1vc3RseSB0 aGUgc2FtZSBhcyB0aGUKICAqIHZlcmlmeV9wbGFpbl9iYWNrdXBfZmlsZS4gVGhlIGFkZGl0aW9u YWwgYXJndW1lbnQgb3V0cHV0cyBhIGxpc3Qgb2YgdmFsaWQKLSAqIHRhciBmaWxlcy4KKyAqIHRh ciBmaWxlcywgYWxvbmcgd2l0aCB0aGUgZnVsbCBwYXRocyB0byB0aGUgbWFpbiBhcmNoaXZlIGFu ZCB0aGUgV0FMCisgKiBkaXJlY3RvcnkgYXJjaGl2ZS4KICAqLwogc3RhdGljIHZvaWQKIHByZWNo ZWNrX3Rhcl9iYWNrdXBfZmlsZSh2ZXJpZmllcl9jb250ZXh0ICpjb250ZXh0LCBjaGFyICpyZWxw YXRoLAotCQkJCQkJIGNoYXIgKmZ1bGxwYXRoLCBTaW1wbGVQdHJMaXN0ICp0YXJmaWxlcykKKwkJ CQkJCSBjaGFyICpmdWxscGF0aCwgU2ltcGxlUHRyTGlzdCAqdGFyZmlsZXMsCisJCQkJCQkgY2hh ciAqKmJhc2VfYXJjaGl2ZV9wYXRoLCBjaGFyICoqd2FsX2FyY2hpdmVfcGF0aCkKIHsKIAlzdHJ1 Y3Qgc3RhdCBzYjsKIAlPaWQJCQl0YmxzcGNfb2lkID0gSW52YWxpZE9pZDsKQEAgLTkxOCw5ICs5 MzYsMTcgQEAgcHJlY2hlY2tfdGFyX2JhY2t1cF9maWxlKHZlcmlmaWVyX2NvbnRleHQgKmNvbnRl eHQsIGNoYXIgKnJlbHBhdGgsCiAJICogZXh0ZW5zaW9uIHN1Y2ggYXMgLmd6LCAubHo0LCBvciAu enN0LgogCSAqLwogCWlmIChzdHJuY21wKCJiYXNlIiwgcmVscGF0aCwgNCkgPT0gMCkKKwl7CiAJ CXN1ZmZpeCA9IHJlbHBhdGggKyA0OworCisJCSpiYXNlX2FyY2hpdmVfcGF0aCA9IHBzdHJkdXAo ZnVsbHBhdGgpOworCX0KIAllbHNlIGlmIChzdHJuY21wKCJwZ193YWwiLCByZWxwYXRoLCA2KSA9 PSAwKQorCXsKIAkJc3VmZml4ID0gcmVscGF0aCArIDY7CisKKwkJKndhbF9hcmNoaXZlX3BhdGgg PSBwc3RyZHVwKGZ1bGxwYXRoKTsKKwl9CiAJZWxzZQogCXsKIAkJLyogRXhwZWN0ZWQgYSA8dGFi bGVzcGFjZW9pZD4udGFyIGZpbGUgaGVyZS4gKi8KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfdmVy aWZ5YmFja3VwL3QvMDAyX2FsZ29yaXRobS5wbCBiL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3Qv MDAyX2FsZ29yaXRobS5wbAppbmRleCBhZTE2YzExYmM0ZC4uNGYyODRhOWU4MjggMTAwNjQ0Ci0t LSBhL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3QvMDAyX2FsZ29yaXRobS5wbAorKysgYi9zcmMv YmluL3BnX3ZlcmlmeWJhY2t1cC90LzAwMl9hbGdvcml0aG0ucGwKQEAgLTMwLDEwICszMCw2IEBA IHN1YiB0ZXN0X2NoZWNrc3VtcwogCXsKIAkJIyBBZGQgc3dpdGNoIHRvIGdldCBhIHRhci1mb3Jt YXQgYmFja3VwCiAJCXB1c2ggQGJhY2t1cCwgKCctLWZvcm1hdCcgPT4gJ3RhcicpOwotCi0JCSMg QWRkIHN3aXRjaCB0byBza2lwIFdBTCB2ZXJpZmljYXRpb24sIHdoaWNoIGlzIG5vdCB5ZXQgc3Vw cG9ydGVkIGZvcgotCQkjIHRhci1mb3JtYXQgYmFja3VwcwotCQlwdXNoIEB2ZXJpZnksICgnLS1u by1wYXJzZS13YWwnKTsKIAl9CiAKIAkjIEEgYmFja3VwIHdpdGggYSBib2d1cyBhbGdvcml0aG0g c2hvdWxkIGZhaWwuCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC90LzAwM19j b3JydXB0aW9uLnBsIGIvc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvdC8wMDNfY29ycnVwdGlvbi5w bAppbmRleCAxZGQ2MGY3MDljZi4uZjFlYmRiYjQ2YjQgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdf dmVyaWZ5YmFja3VwL3QvMDAzX2NvcnJ1cHRpb24ucGwKKysrIGIvc3JjL2Jpbi9wZ192ZXJpZnli YWNrdXAvdC8wMDNfY29ycnVwdGlvbi5wbApAQCAtMTkzLDEwICsxOTMsOCBAQCBmb3IgbXkgJHNj ZW5hcmlvIChAc2NlbmFyaW8pCiAJCQljb21tYW5kX29rKFsgJHRhciwgJy1jZicgPT4gIiR0YXJf YmFja3VwX3BhdGgvYmFzZS50YXIiLCAnLicgXSk7CiAJCQljaGRpcigkY3dkKSB8fCBkaWUgImNo ZGlyOiAkISI7CiAKLQkJCSMgTm93IGNoZWNrIHRoYXQgdGhlIGJhY2t1cCBubyBsb25nZXIgdmVy aWZpZXMuIFdlIG11c3QgdXNlIC1uCi0JCQkjIGhlcmUsIGJlY2F1c2UgcGdfd2FsZHVtcCBjYW4n dCB5ZXQgcmVhZCBXQUwgZnJvbSBhIHRhcmZpbGUuCiAJCQljb21tYW5kX2ZhaWxzX2xpa2UoCi0J CQkJWyAncGdfdmVyaWZ5YmFja3VwJywgJy0tbm8tcGFyc2Utd2FsJywgJHRhcl9iYWNrdXBfcGF0 aCBdLAorCQkJCVsgJ3BnX3ZlcmlmeWJhY2t1cCcsICR0YXJfYmFja3VwX3BhdGggXSwKIAkJCQkk c2NlbmFyaW8tPnsnZmFpbHNfbGlrZSd9LAogCQkJCSJjb3JydXB0IGJhY2t1cCBmYWlscyB2ZXJp ZmljYXRpb246ICRuYW1lIik7CiAKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3Vw L3QvMDA4X3VudGFyLnBsIGIvc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvdC8wMDhfdW50YXIucGwK aW5kZXggYmMzZDZiMzUyYWQuLjBjZmUxZjk1MzJjIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3Zl cmlmeWJhY2t1cC90LzAwOF91bnRhci5wbAorKysgYi9zcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC90 LzAwOF91bnRhci5wbApAQCAtMTIzLDggKzEyMyw3IEBAIGZvciBteSAkdGMgKEB0ZXN0X2NvbmZp Z3VyYXRpb24pCiAJCSMgVmVyaWZ5IHRhciBiYWNrdXAuCiAJCSRwcmltYXJ5LT5jb21tYW5kX29r KAogCQkJWwotCQkJCSdwZ192ZXJpZnliYWNrdXAnLCAnLS1uby1wYXJzZS13YWwnLAotCQkJCSct LWV4aXQtb24tZXJyb3InLCAkYmFja3VwX3BhdGgsCisJCQkJJ3BnX3ZlcmlmeWJhY2t1cCcsICct LWV4aXQtb24tZXJyb3InLCAkYmFja3VwX3BhdGgsCiAJCQldLAogCQkJInZlcmlmeSBiYWNrdXAs IGNvbXByZXNzaW9uICRtZXRob2QiKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ192ZXJpZnli YWNrdXAvdC8wMTBfY2xpZW50X3VudGFyLnBsIGIvc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvdC8w MTBfY2xpZW50X3VudGFyLnBsCmluZGV4IGI2MmZhZWI1YWNmLi43NjI2OWE3MzY3MyAxMDA2NDQK LS0tIGEvc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvdC8wMTBfY2xpZW50X3VudGFyLnBsCisrKyBi L3NyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3QvMDEwX2NsaWVudF91bnRhci5wbApAQCAtMTM3LDgg KzEzNyw3IEBAIGZvciBteSAkdGMgKEB0ZXN0X2NvbmZpZ3VyYXRpb24pCiAJCSMgVmVyaWZ5IHRh ciBiYWNrdXAuCiAJCSRwcmltYXJ5LT5jb21tYW5kX29rKAogCQkJWwotCQkJCSdwZ192ZXJpZnli YWNrdXAnLCAnLS1uby1wYXJzZS13YWwnLAotCQkJCSctLWV4aXQtb24tZXJyb3InLCAkYmFja3Vw X3BhdGgsCisJCQkJJ3BnX3ZlcmlmeWJhY2t1cCcsICctLWV4aXQtb24tZXJyb3InLCAkYmFja3Vw X3BhdGgsCiAJCQldLAogCQkJInZlcmlmeSBiYWNrdXAsIGNvbXByZXNzaW9uICRtZXRob2QiKTsK IAotLSAKMi40Ny4xCgo= --0000000000009207e5063f9be993--