Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vsbWg-009QML-2P for pgsql-hackers@arkaria.postgresql.org; Wed, 18 Feb 2026 06:59:11 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vsbWg-00ETwx-04 for pgsql-hackers@arkaria.postgresql.org; Wed, 18 Feb 2026 06:59:10 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vsbWf-00ETwJ-0b for pgsql-hackers@lists.postgresql.org; Wed, 18 Feb 2026 06:59:09 +0000 Received: from mail-pl1-x62e.google.com ([2607:f8b0:4864:20::62e]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vsbWc-00000001B7v-0CrP for pgsql-hackers@lists.postgresql.org; Wed, 18 Feb 2026 06:59:08 +0000 Received: by mail-pl1-x62e.google.com with SMTP id d9443c01a7336-2aad1dc8856so33982305ad.1 for ; Tue, 17 Feb 2026 22:59:06 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1771397946; cv=none; d=google.com; s=arc-20240605; b=lFcJe2PqOco7mh8RU469fLyfCkduqCEzRp5E7kgWXLopzAgQyo0LjgQDWdzlV0/Xm3 zV563UAbFp7iuRw8XJqNi4HsZoAaHPAZyEqCGXtBJs5T8o4ATQX8wKgm7Tfj6LeWKC43 Y8rR7zUO/xJiHpvH2Aw4WgmT/l2s+U4FBV0+euU8owug1W2LbzqLadblCcFTn4fbn0Rl GmZT95SqHsSNtuK1i4952WbtdGe8zjXjJMZVTyzsR3qfVDWyVC0bSZzFtvDLKev5CkH4 2ml/e/7ROpf7FeT3mgV9Pkv+wGDv5Lz1pD2SxVNi/5Ml5GdZT/ARXChlZXdz1TVyNyFL Gi0Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=hshuBQv7JncrDGNfrN0P4sJhKy5Y5rCH8WZanFoxM4U=; fh=rjYvHDgSfxasGeSh1taRFgQP8DDiqL28sGVQHiGCKRg=; b=QEk1kqvHA+vS4j6YUzo2ceIlyR97S5lErO17gVK5gRasHeOAxBuoyE3TgsZacAFtPI Oy+j4Hcig7fN/bowt8fjDtJAfP3G+QoYKRZvgAocFSqaeckwUPwHjHjifJ/B6QDqbVTL BEAv1zCJ1LhqZbUJ4gi58mZjqOruzAi6iijqhV3a3dgARwkLldTQw2HIDDXOKtowjJtf fAlaaQnQ9oVcnLP4exbJR4dW4lXS2vDQtVtYg6einr6M2aAUYC8zAZMm9e+plZ4bOwlO Agy06LuEUZBTBKE57yoWmF59/xT/fDf9s7cN4lfp4jjqkztFiDGrMV0vVPhDIblQqLq6 2hvA==; darn=lists.postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1771397946; x=1772002746; 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=hshuBQv7JncrDGNfrN0P4sJhKy5Y5rCH8WZanFoxM4U=; b=NlPkCnWarsFE8a3Bq9DskOlkFLXfJQsBwM75+aDjDCeTbgCNPX/p5J69TxQCMBrrFg ZAE6jxY6xK3ldXzygWHYRHcA4W05X6v3WG0BJgO4usi8f744zeWZN+GUJG/D6kGjKAkn qOlrU8931QuccJH+zjt+yfadteOMPN0SbylHr3065uOvLzkbZqU7KDljVrqXhsbF4tl4 5n7Xo2e/8clZ5toGt/bI1Lx0tPKSLJvS1POQtCvT9D6F/xAGxG5S6CcFYk9b6cFiXsfa zxsiOd9vpKBPizp519Onltr3GwDjMfi9PZiHYwtqmFIT0yiK+SbbYjf5oWz4An22CJH4 n38Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1771397946; x=1772002746; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=hshuBQv7JncrDGNfrN0P4sJhKy5Y5rCH8WZanFoxM4U=; b=U9TLmUVrppHsPk7hC1R/56k2TSuFq8ykFkGla1NcuBNVZn0GcZ7L0ZhZ76xv22nsKN GJ8FrTtHnJg2AcYp66gedC6/42DKfUfm8GJ1ODbwdL+5ybCgNupmYIPZns7mu80G/8vG Q26eZwUrnARB6RaNb69M+n+/atlk+GUxaHOAHBl/NW3CVEBEP8RF6f+fr2NrbAwMjzmy oVfRPpu2J1Q3bE7z5SX/tW5y9FhTBwup5FEXTiCW5efvrvGElP2bDkYLzW86xStPmMkp XRb49uJMq1pxAyGqevFQLDwaQGnhB5zpRRS6Y8VHFti2+Bc0QKNNuR0SKeVKnMGoAE2u +b1w== X-Forwarded-Encrypted: i=1; AJvYcCXPymSMAcy+Vy+IItZy7cJ4OVBTn+YSRaOhMmLM4XV1I8BErIQozZ6yO6QAjVucB2eHpbIg2oQEatWsQ1Wq@lists.postgresql.org X-Gm-Message-State: AOJu0YxyduM0iRR7gsjyViVosaafWsdym+NVKBlLFkqwnZL6oPxdAFSO jUyJ0nhj2ha6hG78AnBvhvrrNAMv8PtvMK6trHTC4LnzNGMVLDAL4i7OqudJSO2kSgD1/3uuBOx cEmRos/f92iO+VUffW5WjRQabaGih+AU= X-Gm-Gg: AZuq6aLtIfWc5zb/68E/91oVRkT7PbrkzWw7DzcuyekTR2lq6gTXwdLK+SMg7gceFH0 qXKyH56PCIypWhAO4L/GFr6DoaJyOWON1OmKLkOcT/92oD1R2OjjrcVjgnmfjAHPqdKYD9Vmzy8 F98hCpVam+V/X1mDOqw6RIzlq5TPLfG8UI74Rhno4qjSlEHbulSNoqTgBQKKbLgJBTT3+6NVYN0 o2F4CbqYZjhNV20y/SL0bo2CQ+EEExZxyOHjaB7EPZaDyWYrXX1XG9OYixL8EsO8ZfCA4Onlv4x mBwVKjkm X-Received: by 2002:a17:902:cccc:b0:2aa:e6fa:2f6d with SMTP id d9443c01a7336-2ad17431a99mr119156575ad.1.1771397945692; Tue, 17 Feb 2026 22:59:05 -0800 (PST) MIME-Version: 1.0 References: <731ADE6F-01C5-4996-BAEE-5851DFC3F502@gmail.com> In-Reply-To: From: Amul Sul Date: Wed, 18 Feb 2026 12:28:27 +0530 X-Gm-Features: AaiRm513NDyT7jxeguosCER-YnwkICw5lSuERWDsxo0bc1v8NOOEW8DKMyRzVYY Message-ID: Subject: Re: pg_waldump: support decoding of WAL inside tarfile To: Robert Haas Cc: Chao Li , Jakub Wartak , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="0000000000004f3241064b13b9d4" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000004f3241064b13b9d4 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, Feb 10, 2026 at 3:06=E2=80=AFPM Amul Sul wrote: > > On Wed, Feb 4, 2026 at 6:39=E2=80=AFPM Amul Sul wrote= : > > > > On Wed, Jan 28, 2026 at 2:41=E2=80=AFAM Robert Haas wrote: > > > > > > On Tue, Jan 27, 2026 at 7:07=E2=80=AFAM Amul Sul = wrote: > > > > In the attached version, I am using the WAL segment name as the has= h > > > > key, which is much more straightforward. I have rewritten > > > > read_archive_wal_page(), and it looks much cleaner than before. The > > > > logic to discard irrelevant WAL files is still within > > > > get_archive_wal_entry. I added an explanation for setting cur_wal t= o > > > > NULL, which is now handled in the separate function I mentioned > > > > previously. > > > > > > > > Kindly have a look at the attached version; let me know if you are > > > > still not happy with the current approach for filtering/discarding > > > > irrelevant WAL segments. It isn't much different from the previous > > > > version, but I have tried to keep it in a separate routine for bett= er > > > > code readability, with comments to make it easier to understand. I > > > > also added a comment for ArchivedWALFile. > > > > > > I feel like the division of labor between get_archive_wal_entry() and > > > read_archive_wal_page() is odd. I noticed this in the last version, > > > too, and it still seems to be the case. get_archive_wal_entry() first > > > calls ArchivedWAL_lookup(). If that finds an entry, it just returns. > > > If it doesn't, it loops until an entry for the requested file shows u= p > > > and then returns it. Then control returns to read_archive_wal_page() > > > which loops some more until we have all the data we need for the > > > requested file. But it seems odd to me to have two separate loops > > > here. I think that the first loop is going to call read_archive_file(= ) > > > until we find the beginning of the file that we care about and then > > > the second one is going to call read_archive_file() some more until w= e > > > have read enough of it to satisfy the request. It feels odd to me to > > > do it that way, as if we told somebody to first wait until 9 o'clock > > > and then wait another 30 minutes, instead of just telling them to wai= t > > > until 9:30. I realize it's not quite the same thing, because apart > > > from calling read_archive_file(), the two loops do different things, > > > but I still think it looks odd. > > > > > > + /* > > > + * Ignore if the timeline is different or the current segment is not > > > + * the desired one. > > > + */ > > > + XLogFromFileName(entry->fname, &curSegTimeline, &curSegNo, WalSegSz= ); > > > + if (privateInfo->timeline !=3D curSegTimeline || > > > + privateInfo->startSegNo > curSegNo || > > > + privateInfo->endSegNo < curSegNo || > > > + segno > curSegNo) > > > + { > > > + free_archive_wal_entry(entry->fname, privateInfo); > > > + continue; > > > + } > > > > > > The comment doesn't match the code. If it did, the test would be > > > (privateInfo->timeline !=3D curSegTimeline || segno !=3D curSegno). B= ut > > > instead the segno test is > rather than !=3D, and the checks against > > > startSegNo and endSegNo aren't explained at all. I think I understand > > > why the segno test uses > rather than !=3D, but it's the point of the > > > comment to explain things like that, rather than leaving the reader t= o > > > guess. And I don't know why we also need to test startSegNo and > > > endSegNo. > > > > > > I also wonder what the point is of doing XLogFromFileName() on the > > > fname provided by the caller and then again on entry->fname. Couldn't > > > you just compare the strings? > > > > > > Again, the division of labor is really odd here. It's the job of > > > astreamer_waldump_content() to skip things that aren't WAL files at > > > all, but it's the job of get_archive_wal_entry() to skip things that > > > are WAL files but not the one we want. I disagree with putting those > > > checks in completely separate parts of the code. > > > > > > > Keeping the timeline and segment start-end range checks inside the > > archive streamer creates a circular dependency that cannot be resolved > > without a 'dirty hack'. We must read the first available WAL file page > > to determine the wal_segment_size before it can calculate the target > > segment range. Moving the checks inside the streamer would make it > > impossible to process that initial file, as the necessary filtering > > parameters -- would still be unknown which would need to be skipped > > for the first read somehow. What if later we realized that the first > > WAL file which was allowed to be streamed by skipping that check is > > irrelevant and doesn't fall under the start-end segment range? > > > > Please have a look at the attached version, specifically patch 0005. > In astreamer_waldump_content(), I have moved the WAL file filtration > check from get_archive_wal_entry(). This check will be skipped during > the initial read in init_archive_reader(), which instead performs it > explicitly once it determines the WAL segment size and the start/end > segments. > > To access the WAL segment size inside astreamer_waldump_content(), I > have moved the WAL segment size variable into the XLogDumpPrivate > structure in the separate 0004 patch. Attached is an updated version including the aforesaid changes. It includes a new refactoring patch (0001) that moves the logic for identifying tar archives and their compression types from pg_basebackup and pg_verifybackup into a separate-reusable function, per a suggestion from Euler [1]. Additionally, I have added a test for the contrecord decoding to the main patch (now 0006). 1] http://postgr.es/m/3c8e7b02-2152-495a-a0b6-e37cf9286a70@app.fastmail.com Regards, Amul --0000000000004f3241064b13b9d4 Content-Type: application/x-patch; name="v13-0001-Refactor-Move-tar-archive-parsing-into-a-common-.patch" Content-Disposition: attachment; filename="v13-0001-Refactor-Move-tar-archive-parsing-into-a-common-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mlrogsit0 RnJvbSA2ZTQzMzFiY2JiOTgxNjAzNjVmZTAyNTAyYWUwYTVjZDJhZWExNzI2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFR1 ZSwgMTcgRmViIDIwMjYgMTQ6NTE6MTEgKzA1MzAKU3ViamVjdDogW1BBVENIIHYxMyAwMS8xMF0g UmVmYWN0b3I6IE1vdmUgdGFyIGFyY2hpdmUgcGFyc2luZyBpbnRvIGEgY29tbW9uCiBsb2NhdGlv bi4KCnBnX2Jhc2ViYWNrdXAgYW5kIHBnX3ZlcmlmeWJhY2t1cCBib3RoIHJlcXVpcmUgbG9naWMg dG8gaWRlbnRpZnkgdGFyCmZpbGVzIGFuZCBkZXRlcm1pbmUgdGhlaXIgY29tcHJlc3Npb24gdHlw ZXMuIFNpbWlsYXIgZnVuY3Rpb25hbGl0eQp3aWxsIGJlIG5lZWRlZCBmb3IgcGdfd2FsZHVtcCB3 aGVuIGl0IGdldHMgdGhlIGNhcGFiaWxpdHkgdG8gZGVjb2RlCldBTCBmaWxlcyBmcm9tIHRhciBh cmNoaXZlcy4gTW92aW5nIHRoaXMgbG9naWMgdG8gYSBjb21tb24gbG9jYXRpb24KYWxsb3dzIGZv ciByZXVzZSBhbmQgcHJldmVudHMgY29kZSBkdXBsaWNhdGlvbi4KLS0tCiBzcmMvYmluL3BnX2Jh c2ViYWNrdXAvcGdfYmFzZWJhY2t1cC5jICAgICB8IDM2ICsrKysrKystLS0tLS0tLS0tLS0tLS0t CiBzcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC9wZ192ZXJpZnliYWNrdXAuYyB8IDEyICstLS0tLS0t CiBzcmMvY29tbW9uL2NvbXByZXNzaW9uLmMgICAgICAgICAgICAgICAgICB8IDMwICsrKysrKysr KysrKysrKysrKysKIHNyYy9pbmNsdWRlL2NvbW1vbi9jb21wcmVzc2lvbi5oICAgICAgICAgIHwg IDIgKysKIDQgZmlsZXMgY2hhbmdlZCwgNDQgaW5zZXJ0aW9ucygrKSwgMzYgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19iYXNlYmFja3VwL3BnX2Jhc2ViYWNrdXAuYyBiL3Ny Yy9iaW4vcGdfYmFzZWJhY2t1cC9wZ19iYXNlYmFja3VwLmMKaW5kZXggMWUzYTgyMDNmNzcuLjg5 MTFiOGI5MjFkIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2Jhc2ViYWNrdXAvcGdfYmFzZWJhY2t1 cC5jCisrKyBiL3NyYy9iaW4vcGdfYmFzZWJhY2t1cC9wZ19iYXNlYmFja3VwLmMKQEAgLTEwNzAs MTIgKzEwNzAsOSBAQCBDcmVhdGVCYWNrdXBTdHJlYW1lcihjaGFyICphcmNoaXZlX25hbWUsIGNo YXIgKnNwY2xvY2F0aW9uLAogCWFzdHJlYW1lciAgKm1hbmlmZXN0X2luamVjdF9zdHJlYW1lciA9 IE5VTEw7CiAJYm9vbAkJaW5qZWN0X21hbmlmZXN0OwogCWJvb2wJCWlzX3RhciwKLQkJCQlpc190 YXJfZ3osCi0JCQkJaXNfdGFyX2x6NCwKLQkJCQlpc190YXJfenN0ZCwKIAkJCQlpc19jb21wcmVz c2VkX3RhcjsKKwlwZ19jb21wcmVzc19hbGdvcml0aG0gY29tcHJlc3NlZF90YXJfYWxnb3JpdGht OwogCWJvb2wJCW11c3RfcGFyc2VfYXJjaGl2ZTsKLQlpbnQJCQlhcmNoaXZlX25hbWVfbGVuID0g c3RybGVuKGFyY2hpdmVfbmFtZSk7CiAKIAkvKgogCSAqIE5vcm1hbGx5LCB3ZSBlbWl0IHRoZSBi YWNrdXAgbWFuaWZlc3QgYXMgYSBzZXBhcmF0ZSBmaWxlLCBidXQgd2hlbgpAQCAtMTA4NCwyNCAr MTA4MSwxMyBAQCBDcmVhdGVCYWNrdXBTdHJlYW1lcihjaGFyICphcmNoaXZlX25hbWUsIGNoYXIg KnNwY2xvY2F0aW9uLAogCSAqLwogCWluamVjdF9tYW5pZmVzdCA9IChmb3JtYXQgPT0gJ3QnICYm IHN0cmNtcChiYXNlZGlyLCAiLSIpID09IDAgJiYgbWFuaWZlc3QpOwogCi0JLyogSXMgdGhpcyBh IHRhciBhcmNoaXZlPyAqLwotCWlzX3RhciA9IChhcmNoaXZlX25hbWVfbGVuID4gNCAmJgotCQkJ ICBzdHJjbXAoYXJjaGl2ZV9uYW1lICsgYXJjaGl2ZV9uYW1lX2xlbiAtIDQsICIudGFyIikgPT0g MCk7Ci0KLQkvKiBJcyB0aGlzIGEgLnRhci5neiBhcmNoaXZlPyAqLwotCWlzX3Rhcl9neiA9IChh cmNoaXZlX25hbWVfbGVuID4gNyAmJgotCQkJCSBzdHJjbXAoYXJjaGl2ZV9uYW1lICsgYXJjaGl2 ZV9uYW1lX2xlbiAtIDcsICIudGFyLmd6IikgPT0gMCk7Ci0KLQkvKiBJcyB0aGlzIGEgLnRhci5s ejQgYXJjaGl2ZT8gKi8KLQlpc190YXJfbHo0ID0gKGFyY2hpdmVfbmFtZV9sZW4gPiA4ICYmCi0J CQkJICBzdHJjbXAoYXJjaGl2ZV9uYW1lICsgYXJjaGl2ZV9uYW1lX2xlbiAtIDgsICIudGFyLmx6 NCIpID09IDApOwotCi0JLyogSXMgdGhpcyBhIC50YXIuenN0IGFyY2hpdmU/ICovCi0JaXNfdGFy X3pzdGQgPSAoYXJjaGl2ZV9uYW1lX2xlbiA+IDggJiYKLQkJCQkgICBzdHJjbXAoYXJjaGl2ZV9u YW1lICsgYXJjaGl2ZV9uYW1lX2xlbiAtIDgsICIudGFyLnpzdCIpID09IDApOworCS8qIENoZWNr IHdlYXRoZXIgaXQgaXMgdGFyIGFyY2hpdmUgYW5kIGl0cyBjb21wcmVzcyB0eXBlICovCisJaXNf dGFyID0gcGFyc2VfdGFyX2NvbXByZXNzX2FsZ29yaXRobShhcmNoaXZlX25hbWUsCisJCQkJCQkJ CQkJICAmY29tcHJlc3NlZF90YXJfYWxnb3JpdGhtKTsKIAogCS8qIElzIHRoaXMgYW55IGtpbmQg b2YgY29tcHJlc3NlZCB0YXI/ICovCi0JaXNfY29tcHJlc3NlZF90YXIgPSBpc190YXJfZ3ogfHwg aXNfdGFyX2x6NCB8fCBpc190YXJfenN0ZDsKKwlpc19jb21wcmVzc2VkX3RhciA9IChpc190YXIg JiYKKwkJCQkJCSBjb21wcmVzc2VkX3Rhcl9hbGdvcml0aG0gIT0gUEdfQ09NUFJFU1NJT05fTk9O RSk7CiAKIAkvKgogCSAqIEluamVjdGluZyB0aGUgbWFuaWZlc3QgaW50byBhIGNvbXByZXNzZWQg dGFyIGZpbGUgd291bGQgYmUgcG9zc2libGUgaWYKQEAgLTExMjgsNyArMTExNCw3IEBAIENyZWF0 ZUJhY2t1cFN0cmVhbWVyKGNoYXIgKmFyY2hpdmVfbmFtZSwgY2hhciAqc3BjbG9jYXRpb24sCiAJ CQkJCQkgIChzcGNsb2NhdGlvbiA9PSBOVUxMICYmIHdyaXRlcmVjb3Zlcnljb25mKSk7CiAKIAkv KiBBdCBwcmVzZW50LCB3ZSBvbmx5IGtub3cgaG93IHRvIHBhcnNlIHRhciBhcmNoaXZlcy4gKi8K LQlpZiAobXVzdF9wYXJzZV9hcmNoaXZlICYmICFpc190YXIgJiYgIWlzX2NvbXByZXNzZWRfdGFy KQorCWlmIChtdXN0X3BhcnNlX2FyY2hpdmUgJiYgIWlzX3RhcikKIAl7CiAJCXBnX2xvZ19lcnJv cigiY2Fubm90IHBhcnNlIGFyY2hpdmUgXCIlc1wiIiwgYXJjaGl2ZV9uYW1lKTsKIAkJcGdfbG9n X2Vycm9yX2RldGFpbCgiT25seSB0YXIgYXJjaGl2ZXMgY2FuIGJlIHBhcnNlZC4iKTsKQEAgLTEy NjMsMTMgKzEyNDksMTMgQEAgQ3JlYXRlQmFja3VwU3RyZWFtZXIoY2hhciAqYXJjaGl2ZV9uYW1l LCBjaGFyICpzcGNsb2NhdGlvbiwKIAkgKiBJZiB0aGUgdXNlciBoYXMgcmVxdWVzdGVkIGEgc2Vy dmVyIGNvbXByZXNzZWQgYXJjaGl2ZSBhbG9uZyB3aXRoCiAJICogYXJjaGl2ZSBleHRyYWN0aW9u IGF0IGNsaWVudCB0aGVuIHdlIG5lZWQgdG8gZGVjb21wcmVzcyBpdC4KIAkgKi8KLQlpZiAoZm9y bWF0ID09ICdwJykKKwlpZiAoZm9ybWF0ID09ICdwJyAmJiBpc19jb21wcmVzc2VkX3RhcikKIAl7 Ci0JCWlmIChpc190YXJfZ3opCisJCWlmIChjb21wcmVzc2VkX3Rhcl9hbGdvcml0aG0gPT0gUEdf Q09NUFJFU1NJT05fR1pJUCkKIAkJCXN0cmVhbWVyID0gYXN0cmVhbWVyX2d6aXBfZGVjb21wcmVz c29yX25ldyhzdHJlYW1lcik7Ci0JCWVsc2UgaWYgKGlzX3Rhcl9sejQpCisJCWVsc2UgaWYgKGNv bXByZXNzZWRfdGFyX2FsZ29yaXRobSA9PSBQR19DT01QUkVTU0lPTl9MWjQpCiAJCQlzdHJlYW1l ciA9IGFzdHJlYW1lcl9sejRfZGVjb21wcmVzc29yX25ldyhzdHJlYW1lcik7Ci0JCWVsc2UgaWYg KGlzX3Rhcl96c3RkKQorCQllbHNlIGlmIChjb21wcmVzc2VkX3Rhcl9hbGdvcml0aG0gPT0gUEdf Q09NUFJFU1NJT05fWlNURCkKIAkJCXN0cmVhbWVyID0gYXN0cmVhbWVyX3pzdGRfZGVjb21wcmVz c29yX25ldyhzdHJlYW1lcik7CiAJfQogCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3ZlcmlmeWJh Y2t1cC9wZ192ZXJpZnliYWNrdXAuYyBiL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3BnX3Zlcmlm eWJhY2t1cC5jCmluZGV4IGY5ZjJkNDU3ZjJmLi41ZGRjNGMzM2ZlYiAxMDA2NDQKLS0tIGEvc3Jj L2Jpbi9wZ192ZXJpZnliYWNrdXAvcGdfdmVyaWZ5YmFja3VwLmMKKysrIGIvc3JjL2Jpbi9wZ192 ZXJpZnliYWNrdXAvcGdfdmVyaWZ5YmFja3VwLmMKQEAgLTk0MSwxNyArOTQxLDcgQEAgcHJlY2hl Y2tfdGFyX2JhY2t1cF9maWxlKHZlcmlmaWVyX2NvbnRleHQgKmNvbnRleHQsIGNoYXIgKnJlbHBh dGgsCiAJfQogCiAJLyogTm93LCBjaGVjayB0aGUgY29tcHJlc3Npb24gdHlwZSBvZiB0aGUgdGFy ICovCi0JaWYgKHN0cmNtcChzdWZmaXgsICIudGFyIikgPT0gMCkKLQkJY29tcHJlc3NfYWxnb3Jp dGhtID0gUEdfQ09NUFJFU1NJT05fTk9ORTsKLQllbHNlIGlmIChzdHJjbXAoc3VmZml4LCAiLnRn eiIpID09IDApCi0JCWNvbXByZXNzX2FsZ29yaXRobSA9IFBHX0NPTVBSRVNTSU9OX0daSVA7Ci0J ZWxzZSBpZiAoc3RyY21wKHN1ZmZpeCwgIi50YXIuZ3oiKSA9PSAwKQotCQljb21wcmVzc19hbGdv cml0aG0gPSBQR19DT01QUkVTU0lPTl9HWklQOwotCWVsc2UgaWYgKHN0cmNtcChzdWZmaXgsICIu dGFyLmx6NCIpID09IDApCi0JCWNvbXByZXNzX2FsZ29yaXRobSA9IFBHX0NPTVBSRVNTSU9OX0xa NDsKLQllbHNlIGlmIChzdHJjbXAoc3VmZml4LCAiLnRhci56c3QiKSA9PSAwKQotCQljb21wcmVz c19hbGdvcml0aG0gPSBQR19DT01QUkVTU0lPTl9aU1REOwotCWVsc2UKKwlpZiAoIXBhcnNlX3Rh cl9jb21wcmVzc19hbGdvcml0aG0oc3VmZml4LCAmY29tcHJlc3NfYWxnb3JpdGhtKSkKIAl7CiAJ CXJlcG9ydF9iYWNrdXBfZXJyb3IoY29udGV4dCwKIAkJCQkJCQkiZmlsZSBcIiVzXCIgaXMgbm90 IGV4cGVjdGVkIGluIGEgdGFyIGZvcm1hdCBiYWNrdXAiLApkaWZmIC0tZ2l0IGEvc3JjL2NvbW1v bi9jb21wcmVzc2lvbi5jIGIvc3JjL2NvbW1vbi9jb21wcmVzc2lvbi5jCmluZGV4IDkyY2Q0ZWM3 YTBkLi5mMTE3ZTIxMjM3ZiAxMDA2NDQKLS0tIGEvc3JjL2NvbW1vbi9jb21wcmVzc2lvbi5jCisr KyBiL3NyYy9jb21tb24vY29tcHJlc3Npb24uYwpAQCAtNDEsNiArNDEsMzYgQEAgc3RhdGljIGlu dAlleHBlY3RfaW50ZWdlcl92YWx1ZShjaGFyICprZXl3b3JkLCBjaGFyICp2YWx1ZSwKIHN0YXRp YyBib29sIGV4cGVjdF9ib29sZWFuX3ZhbHVlKGNoYXIgKmtleXdvcmQsIGNoYXIgKnZhbHVlLAog CQkJCQkJCQkgcGdfY29tcHJlc3Nfc3BlY2lmaWNhdGlvbiAqcmVzdWx0KTsKIAorLyoKKyAqIExv b2sgdXAgYSBjb21wcmVzc2lvbiBhbGdvcml0aG0gYnkgYXJjaGl2ZSBmaWxlIGV4dGVuc2lvbi4g UmV0dXJucyB0cnVlIGFuZAorICogc2V0cyAqYWxnb3JpdGhtIGlmIHRoZSBuYW1lIGlzIHJlY29n bml6ZWQuIE90aGVyd2lzZSByZXR1cm5zIGZhbHNlLgorICovCitib29sCitwYXJzZV90YXJfY29t cHJlc3NfYWxnb3JpdGhtKGNoYXIgKmZuYW1lLCBwZ19jb21wcmVzc19hbGdvcml0aG0gKmFsZ29y aXRobSkKK3sKKwlpbnQJCQlmbmFtZV9sZW4gPSBzdHJsZW4oZm5hbWUpOworCisJaWYgKGZuYW1l X2xlbiA+PSA0ICYmCisJCXN0cmNtcChmbmFtZSArIGZuYW1lX2xlbiAtIDQsICIudGFyIikgPT0g MCkKKwkJKmFsZ29yaXRobSA9IFBHX0NPTVBSRVNTSU9OX05PTkU7CisJZWxzZSBpZiAoZm5hbWVf bGVuID49IDQgJiYKKwkJCSBzdHJjbXAoZm5hbWUgKyBmbmFtZV9sZW4gLSA0LCAiLnRneiIpID09 IDApCisJCSphbGdvcml0aG0gPSBQR19DT01QUkVTU0lPTl9HWklQOworCWVsc2UgaWYgKGZuYW1l X2xlbiA+PSA3ICYmCisJCQkgc3RyY21wKGZuYW1lICsgZm5hbWVfbGVuIC0gNywgIi50YXIuZ3oi KSA9PSAwKQorCQkqYWxnb3JpdGhtID0gUEdfQ09NUFJFU1NJT05fR1pJUDsKKwllbHNlIGlmIChm bmFtZV9sZW4gPj0gOCAmJgorCQkJIHN0cmNtcChmbmFtZSArIGZuYW1lX2xlbiAtIDgsICIudGFy Lmx6NCIpID09IDApCisJCSphbGdvcml0aG0gPSBQR19DT01QUkVTU0lPTl9MWjQ7CisJZWxzZSBp ZiAoZm5hbWVfbGVuID49IDggJiYKKwkJCSBzdHJjbXAoZm5hbWUgKyBmbmFtZV9sZW4gLSA4LCAi LnRhci56c3QiKSA9PSAwKQorCQkqYWxnb3JpdGhtID0gUEdfQ09NUFJFU1NJT05fWlNURDsKKwll bHNlCisJCXJldHVybiBmYWxzZTsKKworCXJldHVybiB0cnVlOworfQorCiAvKgogICogTG9vayB1 cCBhIGNvbXByZXNzaW9uIGFsZ29yaXRobSBieSBuYW1lLiBSZXR1cm5zIHRydWUgYW5kIHNldHMg KmFsZ29yaXRobQogICogaWYgdGhlIG5hbWUgaXMgcmVjb2duaXplZC4gT3RoZXJ3aXNlIHJldHVy bnMgZmFsc2UuCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tb24vY29tcHJlc3Npb24uaCBi L3NyYy9pbmNsdWRlL2NvbW1vbi9jb21wcmVzc2lvbi5oCmluZGV4IDZjNzQ1YjkwMDY2Li41MGYy MTY1NmI4OCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbW9uL2NvbXByZXNzaW9uLmgKKysr IGIvc3JjL2luY2x1ZGUvY29tbW9uL2NvbXByZXNzaW9uLmgKQEAgLTQxLDYgKzQxLDggQEAgdHlw ZWRlZiBzdHJ1Y3QgcGdfY29tcHJlc3Nfc3BlY2lmaWNhdGlvbgogCiBleHRlcm4gdm9pZCBwYXJz ZV9jb21wcmVzc19vcHRpb25zKGNvbnN0IGNoYXIgKm9wdGlvbiwgY2hhciAqKmFsZ29yaXRobSwK IAkJCQkJCQkJICAgY2hhciAqKmRldGFpbCk7CitleHRlcm4gYm9vbCBwYXJzZV90YXJfY29tcHJl c3NfYWxnb3JpdGhtKGNoYXIgKmZuYW1lLAorCQkJCQkJCQkJCSBwZ19jb21wcmVzc19hbGdvcml0 aG0gKmFsZ29yaXRobSk7CiBleHRlcm4gYm9vbCBwYXJzZV9jb21wcmVzc19hbGdvcml0aG0oY2hh ciAqbmFtZSwgcGdfY29tcHJlc3NfYWxnb3JpdGhtICphbGdvcml0aG0pOwogZXh0ZXJuIGNvbnN0 IGNoYXIgKmdldF9jb21wcmVzc19hbGdvcml0aG1fbmFtZShwZ19jb21wcmVzc19hbGdvcml0aG0g YWxnb3JpdGhtKTsKIAotLSAKMi40Ny4xCgo= --0000000000004f3241064b13b9d4 Content-Type: application/x-patch; name="v13-0002-Refactor-pg_waldump-Move-some-declarations-to-ne.patch" Content-Disposition: attachment; filename="v13-0002-Refactor-pg_waldump-Move-some-declarations-to-ne.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mlrogx501 RnJvbSAxN2ZlM2I5YThiNjQ5ZjAxNDZmZTIzN2Y4ZWQyOTYwMjQ2ZjI2OTA3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFRo dSwgMjIgSmFuIDIwMjYgMTA6Mjg6MzIgKzA1MzAKU3ViamVjdDogW1BBVENIIHYxMyAwMi8xMF0g UmVmYWN0b3I6IHBnX3dhbGR1bXA6IE1vdmUgc29tZSBkZWNsYXJhdGlvbnMgdG8gbmV3CiBwZ193 YWxkdW1wLmgKClRoaXMgY2hhbmdlIHByZXBhcmVzIGZvciBhIHNlY29uZCBzb3VyY2UgZmlsZSBp biB0aGlzIGRpcmVjdG9yeSB0bwpzdXBwb3J0IHJlYWRpbmcgV0FMIGZyb20gdGFyIGZpbGVzLiBD b21tb24gc3RydWN0dXJlcywgZGVjbGFyYXRpb25zLAphbmQgZnVuY3Rpb25zIGFyZSBiZWluZyBl eHBvcnRlZCB0aHJvdWdoIHRoaXMgaW5jbHVkZSBmaWxlIHNvCnRoZXkgY2FuIGJlIHVzZWQgaW4g Ym90aCBmaWxlcy4KLS0tCiBzcmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5jIHwgIDkgKy0t LS0tLS0tCiBzcmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5oIHwgMjUgKysrKysrKysrKysr KysrKysrKysrKysrKwogMiBmaWxlcyBjaGFuZ2VkLCAyNiBpbnNlcnRpb25zKCspLCA4IGRlbGV0 aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1w LmgKCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5jIGIvc3JjL2Jp bi9wZ193YWxkdW1wL3BnX3dhbGR1bXAuYwppbmRleCBmMzQ0NjM4NWQ2YS4uNGI3NDExYTY0OTgg MTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmMKKysrIGIvc3JjL2Jp bi9wZ193YWxkdW1wL3BnX3dhbGR1bXAuYwpAQCAtMjksNiArMjksNyBAQAogI2luY2x1ZGUgImNv bW1vbi9sb2dnaW5nLmgiCiAjaW5jbHVkZSAiY29tbW9uL3JlbHBhdGguaCIKICNpbmNsdWRlICJn ZXRvcHRfbG9uZy5oIgorI2luY2x1ZGUgInBnX3dhbGR1bXAuaCIKICNpbmNsdWRlICJybWdyZGVz Yy5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYnVmcGFnZS5oIgogCkBAIC00MywxNCArNDQsNiBAQCBz dGF0aWMgdm9sYXRpbGUgc2lnX2F0b21pY190IHRpbWVfdG9fc3RvcCA9IGZhbHNlOwogCiBzdGF0 aWMgY29uc3QgUmVsRmlsZUxvY2F0b3IgZW1wdHlSZWxGaWxlTG9jYXRvciA9IHswLCAwLCAwfTsK IAotdHlwZWRlZiBzdHJ1Y3QgWExvZ0R1bXBQcml2YXRlCi17Ci0JVGltZUxpbmVJRAl0aW1lbGlu ZTsKLQlYTG9nUmVjUHRyCXN0YXJ0cHRyOwotCVhMb2dSZWNQdHIJZW5kcHRyOwotCWJvb2wJCWVu ZHB0cl9yZWFjaGVkOwotfSBYTG9nRHVtcFByaXZhdGU7Ci0KIHR5cGVkZWYgc3RydWN0IFhMb2dE dW1wQ29uZmlnCiB7CiAJLyogZGlzcGxheSBvcHRpb25zICovCmRpZmYgLS1naXQgYS9zcmMvYmlu L3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5oIGIvc3JjL2Jpbi9wZ193YWxkdW1wL3BnX3dhbGR1bXAu aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uYjg4NTQzODU2ZTUKLS0t IC9kZXYvbnVsbAorKysgYi9zcmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5oCkBAIC0wLDAg KzEsMjUgQEAKKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICoKKyAqIHBnX3dhbGR1bXAuaCAtIGRlY29k ZSBhbmQgZGlzcGxheSBXQUwKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDIwMjYsIFBvc3RncmVTUUwg R2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisgKgorICogSURFTlRJRklDQVRJT04KKyAqCQkgIHNy Yy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmgKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisj aWZuZGVmIFBHX1dBTERVTVBfSAorI2RlZmluZSBQR19XQUxEVU1QX0gKKworI2luY2x1ZGUgImFj Y2Vzcy94bG9nZGVmcy5oIgorCisvKiBDb250YWlucyB0aGUgbmVjZXNzYXJ5IGluZm9ybWF0aW9u IHRvIGRyaXZlIFdBTCBkZWNvZGluZyAqLwordHlwZWRlZiBzdHJ1Y3QgWExvZ0R1bXBQcml2YXRl Cit7CisJVGltZUxpbmVJRAl0aW1lbGluZTsKKwlYTG9nUmVjUHRyCXN0YXJ0cHRyOworCVhMb2dS ZWNQdHIJZW5kcHRyOworCWJvb2wJCWVuZHB0cl9yZWFjaGVkOworfSBYTG9nRHVtcFByaXZhdGU7 CisKKyNlbmRpZgkJCQkJCQkvKiBlbmQgb2YgUEdfV0FMRFVNUF9IICovCi0tIAoyLjQ3LjEKCg== --0000000000004f3241064b13b9d4 Content-Type: application/x-patch; name="v13-0003-Refactor-pg_waldump-Separate-logic-used-to-calcu.patch" Content-Disposition: attachment; filename="v13-0003-Refactor-pg_waldump-Separate-logic-used-to-calcu.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mlroh2n12 RnJvbSAwMTg0MzQ3ZjU1ODJiNTk3M2I4MDA1NmQwM2ViNmNhY2M4NTcyNWMyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFRo dSwgMjIgSmFuIDIwMjYgMTA6Mzg6MTYgKzA1MzAKU3ViamVjdDogW1BBVENIIHYxMyAwMy8xMF0g UmVmYWN0b3I6IHBnX3dhbGR1bXA6IFNlcGFyYXRlIGxvZ2ljIHVzZWQgdG8KIGNhbGN1bGF0ZSB0 aGUgcmVxdWlyZWQgcmVhZCBzaXplLgoKVGhpcyByZWZhY3RvcmluZyBwcmVwYXJlcyB0aGUgY29k ZWJhc2UgZm9yIGFuIHVwY29taW5nIHBhdGNoIHRoYXQgd2lsbApzdXBwb3J0IHJlYWRpbmcgV0FM IGZyb20gdGFyIGZpbGVzLiBUaGUgbG9naWMgZm9yIGNhbGN1bGF0aW5nIHRoZQpyZXF1aXJlZCBy ZWFkIHNpemUgaGFzIGJlZW4gdXBkYXRlZCB0byBoYW5kbGUgYm90aCBub3JtYWwgV0FMIGZpbGVz CmFuZCBXQUwgZmlsZXMgbG9jYXRlZCBpbnNpZGUgYSB0YXIgYXJjaGl2ZS4KLS0tCiBzcmMvYmlu L3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5jIHwgNDMgKysrKysrKysrKysrKysrKysrKysrKystLS0t LS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgMzAgaW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0p CgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ193YWxkdW1wL3BnX3dhbGR1bXAuYyBiL3NyYy9iaW4v cGdfd2FsZHVtcC9wZ193YWxkdW1wLmMKaW5kZXggNGI3NDExYTY0OTguLjk1OGE3MWEwMWNmIDEw MDY0NAotLS0gYS9zcmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5jCisrKyBiL3NyYy9iaW4v cGdfd2FsZHVtcC9wZ193YWxkdW1wLmMKQEAgLTMyNiw2ICszMjYsMzIgQEAgaWRlbnRpZnlfdGFy Z2V0X2RpcmVjdG9yeShjaGFyICpkaXJlY3RvcnksIGNoYXIgKmZuYW1lLCBpbnQgKldhbFNlZ1N6 KQogCXJldHVybiBOVUxMOwkJCQkvKiBub3QgcmVhY2hlZCAqLwogfQogCisvKgorICogUmV0dXJu cyB0aGUgc2l6ZSBpbiBieXRlcyBvZiB0aGUgZGF0YSB0byBiZSByZWFkLiBSZXR1cm5zIC0xIGlm IHRoZSBlbmQKKyAqIHBvaW50IGhhcyBhbHJlYWR5IGJlZW4gcmVhY2hlZC4KKyAqLworc3RhdGlj IGlubGluZSBpbnQKK3JlcXVpcmVkX3JlYWRfbGVuKFhMb2dEdW1wUHJpdmF0ZSAqcHJpdmF0ZSwg WExvZ1JlY1B0ciB0YXJnZXRQYWdlUHRyLAorCQkJCSAgaW50IHJlcUxlbikKK3sKKwlpbnQJCQlj b3VudCA9IFhMT0dfQkxDS1NaOworCisJaWYgKFhMb2dSZWNQdHJJc1ZhbGlkKHByaXZhdGUtPmVu ZHB0cikpCisJeworCQlpZiAodGFyZ2V0UGFnZVB0ciArIFhMT0dfQkxDS1NaIDw9IHByaXZhdGUt PmVuZHB0cikKKwkJCWNvdW50ID0gWExPR19CTENLU1o7CisJCWVsc2UgaWYgKHRhcmdldFBhZ2VQ dHIgKyByZXFMZW4gPD0gcHJpdmF0ZS0+ZW5kcHRyKQorCQkJY291bnQgPSBwcml2YXRlLT5lbmRw dHIgLSB0YXJnZXRQYWdlUHRyOworCQllbHNlCisJCXsKKwkJCXByaXZhdGUtPmVuZHB0cl9yZWFj aGVkID0gdHJ1ZTsKKwkJCXJldHVybiAtMTsKKwkJfQorCX0KKworCXJldHVybiBjb3VudDsKK30K KwogLyogcGdfd2FsZHVtcCdzIFhMb2dSZWFkZXJSb3V0aW5lLT5zZWdtZW50X29wZW4gY2FsbGJh Y2sgKi8KIHN0YXRpYyB2b2lkCiBXQUxEdW1wT3BlblNlZ21lbnQoWExvZ1JlYWRlclN0YXRlICpz dGF0ZSwgWExvZ1NlZ05vIG5leHRTZWdObywKQEAgLTM4MywyMSArNDA5LDEyIEBAIFdBTER1bXBS ZWFkUGFnZShYTG9nUmVhZGVyU3RhdGUgKnN0YXRlLCBYTG9nUmVjUHRyIHRhcmdldFBhZ2VQdHIs IGludCByZXFMZW4sCiAJCQkJWExvZ1JlY1B0ciB0YXJnZXRQdHIsIGNoYXIgKnJlYWRCdWZmKQog ewogCVhMb2dEdW1wUHJpdmF0ZSAqcHJpdmF0ZSA9IHN0YXRlLT5wcml2YXRlX2RhdGE7Ci0JaW50 CQkJY291bnQgPSBYTE9HX0JMQ0tTWjsKKwlpbnQJCQljb3VudCA9IHJlcXVpcmVkX3JlYWRfbGVu KHByaXZhdGUsIHRhcmdldFBhZ2VQdHIsIHJlcUxlbik7CiAJV0FMUmVhZEVycm9yIGVycmluZm87 CiAKLQlpZiAoWExvZ1JlY1B0cklzVmFsaWQocHJpdmF0ZS0+ZW5kcHRyKSkKLQl7Ci0JCWlmICh0 YXJnZXRQYWdlUHRyICsgWExPR19CTENLU1ogPD0gcHJpdmF0ZS0+ZW5kcHRyKQotCQkJY291bnQg PSBYTE9HX0JMQ0tTWjsKLQkJZWxzZSBpZiAodGFyZ2V0UGFnZVB0ciArIHJlcUxlbiA8PSBwcml2 YXRlLT5lbmRwdHIpCi0JCQljb3VudCA9IHByaXZhdGUtPmVuZHB0ciAtIHRhcmdldFBhZ2VQdHI7 Ci0JCWVsc2UKLQkJewotCQkJcHJpdmF0ZS0+ZW5kcHRyX3JlYWNoZWQgPSB0cnVlOwotCQkJcmV0 dXJuIC0xOwotCQl9Ci0JfQorCS8qIEJhaWwgb3V0IGlmIHRoZSBjb3VudCB0byBiZSByZWFkIGlz IG5vdCB2YWxpZCAqLworCWlmIChjb3VudCA8IDApCisJCXJldHVybiAtMTsKIAogCWlmICghV0FM UmVhZChzdGF0ZSwgcmVhZEJ1ZmYsIHRhcmdldFBhZ2VQdHIsIGNvdW50LCBwcml2YXRlLT50aW1l bGluZSwKIAkJCQkgJmVycmluZm8pKQotLSAKMi40Ny4xCgo= --0000000000004f3241064b13b9d4 Content-Type: application/x-patch; name="v13-0004-Refactor-pg_waldump-Restructure-TAP-tests.patch" Content-Disposition: attachment; filename="v13-0004-Refactor-pg_waldump-Restructure-TAP-tests.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mlroh8op3 RnJvbSBiNTI5ODA3NmFkYzMxNTY1OWE2Y2RlM2FlOGY2ODgzZWUwMjVmM2Q2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFdl ZCwgMTggRmViIDIwMjYgMTE6MDc6NTcgKzA1MzAKU3ViamVjdDogW1BBVENIIHYxMyAwNC8xMF0g UmVmYWN0b3I6IHBnX3dhbGR1bXA6IFJlc3RydWN0dXJlIFRBUCB0ZXN0cy4KClJlc3RydWN0dXJl ZCB0ZXN0cyB0aGF0IGRvIG5vdCBoYXZlIGEgV0FMIGZpbGUgYXJndW1lbnQgdG8gcnVuIHdpdGhp bgphIGxvb3AsIGZhY2lsaXRhdGluZyB0aGVpciByZS1leGVjdXRpb24gZm9yIGRlY29kaW5nIFdB TCBmcm9tIHRhcgphcmNoaXZlcy4KCj09IE5PVEUgPT0KICBUaGlzIGlzIG5vdCBpbnRlbmRlZCB0 byBiZSBjb21taXR0ZWQgc2VwYXJhdGVseS4gSXQgY2FuIGJlIG1lcmdlZAogIHdpdGggdGhlIG5l eHQgcGF0Y2gsIHdoaWNoIGlzIHRoZSBtYWluIHBhdGNoIGltcGxlbWVudGluZyB0aGlzCiAgZmVh dHVyZS4KLS0tCiBzcmMvYmluL3BnX3dhbGR1bXAvdC8wMDFfYmFzaWMucGwgfCAxNDAgKysrKysr KysrKysrKysrKystLS0tLS0tLS0tLS0tCiAxIGZpbGUgY2hhbmdlZCwgNzkgaW5zZXJ0aW9ucygr KSwgNjEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ193YWxkdW1wL3QvMDAx X2Jhc2ljLnBsIGIvc3JjL2Jpbi9wZ193YWxkdW1wL3QvMDAxX2Jhc2ljLnBsCmluZGV4IDVkYjVk MjAxMzZmLi5mMTJiYTUyY2JmYyAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ193YWxkdW1wL3QvMDAx X2Jhc2ljLnBsCisrKyBiL3NyYy9iaW4vcGdfd2FsZHVtcC90LzAwMV9iYXNpYy5wbApAQCAtMTk4 LDI4ICsxOTgsNiBAQCBjb21tYW5kX2xpa2UoCiAJXSwKIAlxci8uLywKIAkncnVucyB3aXRoIHN0 YXJ0IGFuZCBlbmQgc2VnbWVudCBzcGVjaWZpZWQnKTsKLWNvbW1hbmRfZmFpbHNfbGlrZSgKLQlb ICdwZ193YWxkdW1wJywgJy0tcGF0aCcgPT4gJG5vZGUtPmRhdGFfZGlyIF0sCi0JcXIvZXJyb3I6 IG5vIHN0YXJ0IFdBTCBsb2NhdGlvbiBnaXZlbi8sCi0JJ3BhdGggb3B0aW9uIHJlcXVpcmVzIHN0 YXJ0IGxvY2F0aW9uJyk7Ci1jb21tYW5kX2xpa2UoCi0JWwotCQkncGdfd2FsZHVtcCcsCi0JCSct LXBhdGgnID0+ICRub2RlLT5kYXRhX2RpciwKLQkJJy0tc3RhcnQnID0+ICRzdGFydF9sc24sCi0J CSctLWVuZCcgPT4gJGVuZF9sc24sCi0JXSwKLQlxci8uLywKLQkncnVucyB3aXRoIHBhdGggb3B0 aW9uIGFuZCBzdGFydCBhbmQgZW5kIGxvY2F0aW9ucycpOwotY29tbWFuZF9mYWlsc19saWtlKAot CVsKLQkJJ3BnX3dhbGR1bXAnLAotCQknLS1wYXRoJyA9PiAkbm9kZS0+ZGF0YV9kaXIsCi0JCSct LXN0YXJ0JyA9PiAkc3RhcnRfbHNuLAotCV0sCi0JcXIvZXJyb3I6IGVycm9yIGluIFdBTCByZWNv cmQgYXQvLAotCSdmYWxsaW5nIG9mZiB0aGUgZW5kIG9mIHRoZSBXQUwgcmVzdWx0cyBpbiBhbiBl cnJvcicpOwotCiBjb21tYW5kX2xpa2UoCiAJWwogCQkncGdfd2FsZHVtcCcsICctLXF1aWV0JywK QEAgLTIyNywyMiArMjA1LDE2IEBAIGNvbW1hbmRfbGlrZSgKIAldLAogCXFyL14kLywKIAknbm8g b3V0cHV0IHdpdGggLS1xdWlldCBvcHRpb24nKTsKLWNvbW1hbmRfZmFpbHNfbGlrZSgKLQlbCi0J CSdwZ193YWxkdW1wJywgJy0tcXVpZXQnLAotCQknLS1wYXRoJyA9PiAkbm9kZS0+ZGF0YV9kaXIs Ci0JCSctLXN0YXJ0JyA9PiAkc3RhcnRfbHNuCi0JXSwKLQlxci9lcnJvcjogZXJyb3IgaW4gV0FM IHJlY29yZCBhdC8sCi0JJ2Vycm9ycyBhcmUgc2hvd24gd2l0aCAtLXF1aWV0Jyk7Ci0KIAogIyBU ZXN0IGZvcjogRGlzcGxheSBhIG1lc3NhZ2UgdGhhdCB3ZSdyZSBza2lwcGluZyBkYXRhIGlmIGBm cm9tYAogIyB3YXNuJ3QgYSBwb2ludGVyIHRvIHRoZSBzdGFydCBvZiBhIHJlY29yZC4KK3N1YiB0 ZXN0X3BnX3dhbGR1bXBfc2tpcF9ieXRlcwogeworCW15ICgkcGF0aCwgJHN0YXJ0bHNuLCAkZW5k bHNuKSA9IEBfOworCiAJIyBDb25zdHJ1Y3QgYSBuZXcgTFNOIHRoYXQgaXMgb25lIGJ5dGUgcGFz dCB0aGUgb3JpZ2luYWwKIAkjIHN0YXJ0X2xzbi4KLQlteSAoJHBhcnQxLCAkcGFydDIpID0gc3Bs aXQgcXJ7L30sICRzdGFydF9sc247CisJbXkgKCRwYXJ0MSwgJHBhcnQyKSA9IHNwbGl0IHFyey99 LCAkc3RhcnRsc247CiAJbXkgJGxzbjIgPSBoZXggJHBhcnQyOwogCSRsc24yKys7CiAJbXkgJG5l d19zdGFydCA9IHNwcmludGYoIiVzLyVYIiwgJHBhcnQxLCAkbHNuMik7CkBAIC0yNTIsNyArMjI0 LDggQEAgY29tbWFuZF9mYWlsc19saWtlKAogCW15ICRyZXN1bHQgPSBJUEM6OlJ1bjo6cnVuIFsK IAkJJ3BnX3dhbGR1bXAnLAogCQknLS1zdGFydCcgPT4gJG5ld19zdGFydCwKLQkJJG5vZGUtPmRh dGFfZGlyIC4gJy9wZ193YWwvJyAuICRzdGFydF93YWxmaWxlCisJCSctLWVuZCcgPT4gJGVuZGxz biwKKwkJJy0tcGF0aCcgPT4gJHBhdGgsCiAJICBdLAogCSAgJz4nID0+IFwkc3Rkb3V0LAogCSAg JzI+JyA9PiBcJHN0ZGVycjsKQEAgLTI2NiwxNSArMjM5LDE1IEBAIGNvbW1hbmRfZmFpbHNfbGlr ZSgKIHN1YiB0ZXN0X3BnX3dhbGR1bXAKIHsKIAlsb2NhbCAkVGVzdDo6QnVpbGRlcjo6TGV2ZWwg PSAkVGVzdDo6QnVpbGRlcjo6TGV2ZWwgKyAxOwotCW15IEBvcHRzID0gQF87CisJbXkgKCRwYXRo LCAkc3RhcnRsc24sICRlbmRsc24sIEBvcHRzKSA9IEBfOwogCiAJbXkgKCRzdGRvdXQsICRzdGRl cnIpOwogCiAJbXkgJHJlc3VsdCA9IElQQzo6UnVuOjpydW4gWwogCQkncGdfd2FsZHVtcCcsCi0J CSctLXBhdGgnID0+ICRub2RlLT5kYXRhX2RpciwKLQkJJy0tc3RhcnQnID0+ICRzdGFydF9sc24s Ci0JCSctLWVuZCcgPT4gJGVuZF9sc24sCisJCSctLXN0YXJ0JyA9PiAkc3RhcnRsc24sCisJCSct LWVuZCcgPT4gJGVuZGxzbiwKKwkJJy0tcGF0aCcgPT4gJHBhdGgsCiAJCUBvcHRzCiAJICBdLAog CSAgJz4nID0+IFwkc3Rkb3V0LApAQCAtMjg4LDM4ICsyNjEsODMgQEAgc3ViIHRlc3RfcGdfd2Fs ZHVtcAogCiBteSBAbGluZXM7CiAKLUBsaW5lcyA9IHRlc3RfcGdfd2FsZHVtcDsKLWlzKGdyZXAo IS9ecm1ncjogXHcvLCBAbGluZXMpLCAwLCAnYWxsIG91dHB1dCBsaW5lcyBhcmUgcm1nciBsaW5l cycpOworbXkgQHNjZW5hcmlvcyA9ICgKKwl7CisJCSdwYXRoJyA9PiAkbm9kZS0+ZGF0YV9kaXIK Kwl9KTsKIAotQGxpbmVzID0gdGVzdF9wZ193YWxkdW1wKCctLWxpbWl0JyA9PiA2KTsKLWlzKEBs aW5lcywgNiwgJ2xpbWl0IG9wdGlvbiBvYnNlcnZlZCcpOworZm9yIG15ICRzY2VuYXJpbyAoQHNj ZW5hcmlvcykKK3sKKwlteSAkcGF0aCA9ICRzY2VuYXJpby0+eydwYXRoJ307CiAKLUBsaW5lcyA9 IHRlc3RfcGdfd2FsZHVtcCgnLS1mdWxscGFnZScpOwotaXMoZ3JlcCghL15ybWdyOi4qXGJGUFdc Yi8sIEBsaW5lcyksIDAsICdhbGwgb3V0cHV0IGxpbmVzIGFyZSBGUFcnKTsKKwlTS0lQOgorCXsK KwkJY29tbWFuZF9mYWlsc19saWtlKAorCQkJWyAncGdfd2FsZHVtcCcsICctLXBhdGgnID0+ICRw YXRoIF0sCisJCQlxci9lcnJvcjogbm8gc3RhcnQgV0FMIGxvY2F0aW9uIGdpdmVuLywKKwkJCSdw YXRoIG9wdGlvbiByZXF1aXJlcyBzdGFydCBsb2NhdGlvbicpOworCQljb21tYW5kX2xpa2UoCisJ CQlbCisJCQkJJ3BnX3dhbGR1bXAnLAorCQkJCSctLXBhdGgnID0+ICRwYXRoLAorCQkJCSctLXN0 YXJ0JyA9PiAkc3RhcnRfbHNuLAorCQkJCSctLWVuZCcgPT4gJGVuZF9sc24sCisJCQldLAorCQkJ cXIvLi8sCisJCQkncnVucyB3aXRoIHBhdGggb3B0aW9uIGFuZCBzdGFydCBhbmQgZW5kIGxvY2F0 aW9ucycpOworCQljb21tYW5kX2ZhaWxzX2xpa2UoCisJCQlbCisJCQkJJ3BnX3dhbGR1bXAnLAor CQkJCSctLXBhdGgnID0+ICRwYXRoLAorCQkJCSctLXN0YXJ0JyA9PiAkc3RhcnRfbHNuLAorCQkJ XSwKKwkJCXFyL2Vycm9yOiBlcnJvciBpbiBXQUwgcmVjb3JkIGF0LywKKwkJCSdmYWxsaW5nIG9m ZiB0aGUgZW5kIG9mIHRoZSBXQUwgcmVzdWx0cyBpbiBhbiBlcnJvcicpOwogCi1AbGluZXMgPSB0 ZXN0X3BnX3dhbGR1bXAoJy0tc3RhdHMnKTsKLWxpa2UoJGxpbmVzWzBdLCBxci9XQUwgc3RhdGlz dGljcy8sICJzdGF0aXN0aWNzIG9uIHN0ZG91dCIpOwotaXMoZ3JlcCgvXnJtZ3I6LywgQGxpbmVz KSwgMCwgJ25vIHJtZ3IgbGluZXMgb3V0cHV0Jyk7CisJCWNvbW1hbmRfZmFpbHNfbGlrZSgKKwkJ CVsKKwkJCQkncGdfd2FsZHVtcCcsICctLXF1aWV0JywKKwkJCQknLS1wYXRoJyA9PiAkcGF0aCwK KwkJCQknLS1zdGFydCcgPT4gJHN0YXJ0X2xzbgorCQkJXSwKKwkJCXFyL2Vycm9yOiBlcnJvciBp biBXQUwgcmVjb3JkIGF0LywKKwkJCSdlcnJvcnMgYXJlIHNob3duIHdpdGggLS1xdWlldCcpOwog Ci1AbGluZXMgPSB0ZXN0X3BnX3dhbGR1bXAoJy0tc3RhdHM9cmVjb3JkJyk7Ci1saWtlKCRsaW5l c1swXSwgcXIvV0FMIHN0YXRpc3RpY3MvLCAic3RhdGlzdGljcyBvbiBzdGRvdXQiKTsKLWlzKGdy ZXAoL15ybWdyOi8sIEBsaW5lcyksIDAsICdubyBybWdyIGxpbmVzIG91dHB1dCcpOworCQl0ZXN0 X3BnX3dhbGR1bXBfc2tpcF9ieXRlcygkcGF0aCwgJHN0YXJ0X2xzbiwgJGVuZF9sc24pOwogCi1A bGluZXMgPSB0ZXN0X3BnX3dhbGR1bXAoJy0tcm1ncicgPT4gJ0J0cmVlJyk7Ci1pcyhncmVwKCEv XnJtZ3I6IEJ0cmVlLywgQGxpbmVzKSwgMCwgJ29ubHkgQnRyZWUgbGluZXMnKTsKKwkJQGxpbmVz ID0gdGVzdF9wZ193YWxkdW1wKCRwYXRoLCAkc3RhcnRfbHNuLCAkZW5kX2xzbik7CisJCWlzKGdy ZXAoIS9ecm1ncjogXHcvLCBAbGluZXMpLCAwLCAnYWxsIG91dHB1dCBsaW5lcyBhcmUgcm1nciBs aW5lcycpOwogCi1AbGluZXMgPSB0ZXN0X3BnX3dhbGR1bXAoJy0tZm9yaycgPT4gJ2luaXQnKTsK LWlzKGdyZXAoIS9mb3JrIGluaXQvLCBAbGluZXMpLCAwLCAnb25seSBpbml0IGZvcmsgbGluZXMn KTsKKwkJQGxpbmVzID0gdGVzdF9wZ193YWxkdW1wKCRwYXRoLCAkc3RhcnRfbHNuLCAkZW5kX2xz biwgJy0tbGltaXQnID0+IDYpOworCQlpcyhAbGluZXMsIDYsICdsaW1pdCBvcHRpb24gb2JzZXJ2 ZWQnKTsKIAotQGxpbmVzID0gdGVzdF9wZ193YWxkdW1wKAotCSctLXJlbGF0aW9uJyA9PiAiJGRl ZmF1bHRfdHNfb2lkLyRwb3N0Z3Jlc19kYl9vaWQvJHJlbF90MV9vaWQiKTsKLWlzKGdyZXAoIS9y ZWwgJGRlZmF1bHRfdHNfb2lkXC8kcG9zdGdyZXNfZGJfb2lkXC8kcmVsX3QxX29pZC8sIEBsaW5l cyksCi0JMCwgJ29ubHkgbGluZXMgZm9yIHNlbGVjdGVkIHJlbGF0aW9uJyk7CisJCUBsaW5lcyA9 IHRlc3RfcGdfd2FsZHVtcCgkcGF0aCwgJHN0YXJ0X2xzbiwgJGVuZF9sc24sICctLWZ1bGxwYWdl Jyk7CisJCWlzKGdyZXAoIS9ecm1ncjouKlxiRlBXXGIvLCBAbGluZXMpLCAwLCAnYWxsIG91dHB1 dCBsaW5lcyBhcmUgRlBXJyk7CiAKLUBsaW5lcyA9IHRlc3RfcGdfd2FsZHVtcCgKLQknLS1yZWxh dGlvbicgPT4gIiRkZWZhdWx0X3RzX29pZC8kcG9zdGdyZXNfZGJfb2lkLyRyZWxfaTFhX29pZCIs Ci0JJy0tYmxvY2snID0+IDEpOwotaXMoZ3JlcCghL1xiYmxrIDFcYi8sIEBsaW5lcyksIDAsICdv bmx5IGxpbmVzIGZvciBzZWxlY3RlZCBibG9jaycpOworCQlAbGluZXMgPSB0ZXN0X3BnX3dhbGR1 bXAoJHBhdGgsICRzdGFydF9sc24sICRlbmRfbHNuLCAnLS1zdGF0cycpOworCQlsaWtlKCRsaW5l c1swXSwgcXIvV0FMIHN0YXRpc3RpY3MvLCAic3RhdGlzdGljcyBvbiBzdGRvdXQiKTsKKwkJaXMo Z3JlcCgvXnJtZ3I6LywgQGxpbmVzKSwgMCwgJ25vIHJtZ3IgbGluZXMgb3V0cHV0Jyk7CiAKKwkJ QGxpbmVzID0gdGVzdF9wZ193YWxkdW1wKCRwYXRoLCAkc3RhcnRfbHNuLCAkZW5kX2xzbiwgJy0t c3RhdHM9cmVjb3JkJyk7CisJCWxpa2UoJGxpbmVzWzBdLCBxci9XQUwgc3RhdGlzdGljcy8sICJz dGF0aXN0aWNzIG9uIHN0ZG91dCIpOworCQlpcyhncmVwKC9ecm1ncjovLCBAbGluZXMpLCAwLCAn bm8gcm1nciBsaW5lcyBvdXRwdXQnKTsKKworCQlAbGluZXMgPSB0ZXN0X3BnX3dhbGR1bXAoJHBh dGgsICRzdGFydF9sc24sICRlbmRfbHNuLCAnLS1ybWdyJyA9PiAnQnRyZWUnKTsKKwkJaXMoZ3Jl cCghL15ybWdyOiBCdHJlZS8sIEBsaW5lcyksIDAsICdvbmx5IEJ0cmVlIGxpbmVzJyk7CisKKwkJ QGxpbmVzID0gdGVzdF9wZ193YWxkdW1wKCRwYXRoLCAkc3RhcnRfbHNuLCAkZW5kX2xzbiwgJy0t Zm9yaycgPT4gJ2luaXQnKTsKKwkJaXMoZ3JlcCghL2ZvcmsgaW5pdC8sIEBsaW5lcyksIDAsICdv bmx5IGluaXQgZm9yayBsaW5lcycpOworCisJCUBsaW5lcyA9IHRlc3RfcGdfd2FsZHVtcCgkcGF0 aCwgJHN0YXJ0X2xzbiwgJGVuZF9sc24sCisJCQknLS1yZWxhdGlvbicgPT4gIiRkZWZhdWx0X3Rz X29pZC8kcG9zdGdyZXNfZGJfb2lkLyRyZWxfdDFfb2lkIik7CisJCWlzKGdyZXAoIS9yZWwgJGRl ZmF1bHRfdHNfb2lkXC8kcG9zdGdyZXNfZGJfb2lkXC8kcmVsX3QxX29pZC8sIEBsaW5lcyksCisJ CQkwLCAnb25seSBsaW5lcyBmb3Igc2VsZWN0ZWQgcmVsYXRpb24nKTsKKworCQlAbGluZXMgPSB0 ZXN0X3BnX3dhbGR1bXAoJHBhdGgsICRzdGFydF9sc24sICRlbmRfbHNuLAorCQkJJy0tcmVsYXRp b24nID0+ICIkZGVmYXVsdF90c19vaWQvJHBvc3RncmVzX2RiX29pZC8kcmVsX2kxYV9vaWQiLAor CQkJJy0tYmxvY2snID0+IDEpOworCQlpcyhncmVwKCEvXGJibGsgMVxiLywgQGxpbmVzKSwgMCwg J29ubHkgbGluZXMgZm9yIHNlbGVjdGVkIGJsb2NrJyk7CisJfQorfQogCiBkb25lX3Rlc3Rpbmco KTsKLS0gCjIuNDcuMQoK --0000000000004f3241064b13b9d4 Content-Type: application/x-patch; name="v13-0005-Refactor-pg_waldump-Move-WAL-segment-size-to-XLo.patch" Content-Disposition: attachment; filename="v13-0005-Refactor-pg_waldump-Move-WAL-segment-size-to-XLo.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mlrohfhx4 RnJvbSA2YjM4YTliN2JkODFhMTViYTg2NDdmNTFkNTMxNTZiOGE5ZGQ0MDVjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFdl ZCwgNCBGZWIgMjAyNiAxNTozMTo1MSArMDUzMApTdWJqZWN0OiBbUEFUQ0ggdjEzIDA1LzEwXSBS ZWZhY3RvcjogcGdfd2FsZHVtcDogTW92ZSBXQUwgc2VnbWVudCBzaXplIHRvCiBYTG9nRHVtcFBy aXZhdGUuCgpSZWxvY2F0ZSB0aGUgV0FMIHNlZ21lbnQgc2l6ZSB2YXJpYWJsZSB0byB0aGUgWExv Z0R1bXBQcml2YXRlCnN0cnVjdHVyZSBhbmQgcmVuYW1lIGl0IHRvIHNlZ3NpemUgZm9yIGNvbnNp c3RlbmN5LiBUaGlzIGNoYW5nZSBpcwpyZXF1aXJlZCB0byBtYWtlIHRoZSBzZWdtZW50IHNpemUg YWNjZXNzaWJsZSB0byB0aGUgYXJjaGl2ZSBzdHJlYW1lcgpjb2RlLCB3aGVyZSBwYXNzaW5nIGl0 IGFzIGEgZnVuY3Rpb24gYXJndW1lbnQgaXMgbm90IGZlYXNpYmxlLgotLS0KIHNyYy9iaW4vcGdf d2FsZHVtcC9wZ193YWxkdW1wLmMgfCAyNiArKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQogc3Jj L2Jpbi9wZ193YWxkdW1wL3BnX3dhbGR1bXAuaCB8ICAxICsKIDIgZmlsZXMgY2hhbmdlZCwgMTQg aW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ193 YWxkdW1wL3BnX3dhbGR1bXAuYyBiL3NyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmMKaW5k ZXggOTU4YTcxYTAxY2YuLjVkMzFiMTVkYmQ4IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3dhbGR1 bXAvcGdfd2FsZHVtcC5jCisrKyBiL3NyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmMKQEAg LTgxMSw3ICs4MTEsNiBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAlYTG9nUmVjUHRy CWZpcnN0X3JlY29yZDsKIAljaGFyCSAgICp3YWxkaXIgPSBOVUxMOwogCWNoYXIJICAgKmVycm9y bXNnOwotCWludAkJCVdhbFNlZ1N6OwogCiAJc3RhdGljIHN0cnVjdCBvcHRpb24gbG9uZ19vcHRp b25zW10gPSB7CiAJCXsiYmtwLWRldGFpbHMiLCBub19hcmd1bWVudCwgTlVMTCwgJ2InfSwKQEAg LTg2NSw2ICs4NjQsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAltZW1zZXQoJnN0 YXRzLCAwLCBzaXplb2YoWExvZ1N0YXRzKSk7CiAKIAlwcml2YXRlLnRpbWVsaW5lID0gMTsKKwlw cml2YXRlLnNlZ3NpemUgPSAwOwogCXByaXZhdGUuc3RhcnRwdHIgPSBJbnZhbGlkWExvZ1JlY1B0 cjsKIAlwcml2YXRlLmVuZHB0ciA9IEludmFsaWRYTG9nUmVjUHRyOwogCXByaXZhdGUuZW5kcHRy X3JlYWNoZWQgPSBmYWxzZTsKQEAgLTExMzgsMTggKzExMzgsMTggQEAgbWFpbihpbnQgYXJnYywg Y2hhciAqKmFyZ3YpCiAJCQkJcGdfZmF0YWwoImNvdWxkIG5vdCBvcGVuIGRpcmVjdG9yeSBcIiVz XCI6ICVtIiwgd2FsZGlyKTsKIAkJfQogCi0JCXdhbGRpciA9IGlkZW50aWZ5X3RhcmdldF9kaXJl Y3Rvcnkod2FsZGlyLCBmbmFtZSwgJldhbFNlZ1N6KTsKKwkJd2FsZGlyID0gaWRlbnRpZnlfdGFy Z2V0X2RpcmVjdG9yeSh3YWxkaXIsIGZuYW1lLCAmcHJpdmF0ZS5zZWdzaXplKTsKIAkJZmQgPSBv cGVuX2ZpbGVfaW5fZGlyZWN0b3J5KHdhbGRpciwgZm5hbWUpOwogCQlpZiAoZmQgPCAwKQogCQkJ cGdfZmF0YWwoImNvdWxkIG5vdCBvcGVuIGZpbGUgXCIlc1wiIiwgZm5hbWUpOwogCQljbG9zZShm ZCk7CiAKIAkJLyogcGFyc2UgcG9zaXRpb24gZnJvbSBmaWxlICovCi0JCVhMb2dGcm9tRmlsZU5h bWUoZm5hbWUsICZwcml2YXRlLnRpbWVsaW5lLCAmc2Vnbm8sIFdhbFNlZ1N6KTsKKwkJWExvZ0Zy b21GaWxlTmFtZShmbmFtZSwgJnByaXZhdGUudGltZWxpbmUsICZzZWdubywgcHJpdmF0ZS5zZWdz aXplKTsKIAogCQlpZiAoIVhMb2dSZWNQdHJJc1ZhbGlkKHByaXZhdGUuc3RhcnRwdHIpKQotCQkJ WExvZ1NlZ05vT2Zmc2V0VG9SZWNQdHIoc2Vnbm8sIDAsIFdhbFNlZ1N6LCBwcml2YXRlLnN0YXJ0 cHRyKTsKLQkJZWxzZSBpZiAoIVhMQnl0ZUluU2VnKHByaXZhdGUuc3RhcnRwdHIsIHNlZ25vLCBX YWxTZWdTeikpCisJCQlYTG9nU2VnTm9PZmZzZXRUb1JlY1B0cihzZWdubywgMCwgcHJpdmF0ZS5z ZWdzaXplLCBwcml2YXRlLnN0YXJ0cHRyKTsKKwkJZWxzZSBpZiAoIVhMQnl0ZUluU2VnKHByaXZh dGUuc3RhcnRwdHIsIHNlZ25vLCBwcml2YXRlLnNlZ3NpemUpKQogCQl7CiAJCQlwZ19sb2dfZXJy b3IoInN0YXJ0IFdBTCBsb2NhdGlvbiAlWC8lMDhYIGlzIG5vdCBpbnNpZGUgZmlsZSBcIiVzXCIi LAogCQkJCQkJIExTTl9GT1JNQVRfQVJHUyhwcml2YXRlLnN0YXJ0cHRyKSwKQEAgLTExNTksNyAr MTE1OSw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCiAJCS8qIG5vIHNlY29uZCBm aWxlIHNwZWNpZmllZCwgc2V0IGVuZCBwb3NpdGlvbiAqLwogCQlpZiAoIShvcHRpbmQgKyAxIDwg YXJnYykgJiYgIVhMb2dSZWNQdHJJc1ZhbGlkKHByaXZhdGUuZW5kcHRyKSkKLQkJCVhMb2dTZWdO b09mZnNldFRvUmVjUHRyKHNlZ25vICsgMSwgMCwgV2FsU2VnU3osIHByaXZhdGUuZW5kcHRyKTsK KwkJCVhMb2dTZWdOb09mZnNldFRvUmVjUHRyKHNlZ25vICsgMSwgMCwgcHJpdmF0ZS5zZWdzaXpl LCBwcml2YXRlLmVuZHB0cik7CiAKIAkJLyogcGFyc2UgRU5EU0VHIGlmIHBhc3NlZCAqLwogCQlp ZiAob3B0aW5kICsgMSA8IGFyZ2MpCkBAIC0xMTc1LDE0ICsxMTc1LDE0IEBAIG1haW4oaW50IGFy Z2MsIGNoYXIgKiphcmd2KQogCQkJY2xvc2UoZmQpOwogCiAJCQkvKiBwYXJzZSBwb3NpdGlvbiBm cm9tIGZpbGUgKi8KLQkJCVhMb2dGcm9tRmlsZU5hbWUoZm5hbWUsICZwcml2YXRlLnRpbWVsaW5l LCAmZW5kc2Vnbm8sIFdhbFNlZ1N6KTsKKwkJCVhMb2dGcm9tRmlsZU5hbWUoZm5hbWUsICZwcml2 YXRlLnRpbWVsaW5lLCAmZW5kc2Vnbm8sIHByaXZhdGUuc2Vnc2l6ZSk7CiAKIAkJCWlmIChlbmRz ZWdubyA8IHNlZ25vKQogCQkJCXBnX2ZhdGFsKCJFTkRTRUcgJXMgaXMgYmVmb3JlIFNUQVJUU0VH ICVzIiwKIAkJCQkJCSBhcmd2W29wdGluZCArIDFdLCBhcmd2W29wdGluZF0pOwogCiAJCQlpZiAo IVhMb2dSZWNQdHJJc1ZhbGlkKHByaXZhdGUuZW5kcHRyKSkKLQkJCQlYTG9nU2VnTm9PZmZzZXRU b1JlY1B0cihlbmRzZWdubyArIDEsIDAsIFdhbFNlZ1N6LAorCQkJCVhMb2dTZWdOb09mZnNldFRv UmVjUHRyKGVuZHNlZ25vICsgMSwgMCwgcHJpdmF0ZS5zZWdzaXplLAogCQkJCQkJCQkJCXByaXZh dGUuZW5kcHRyKTsKIAogCQkJLyogc2V0IHNlZ25vIHRvIGVuZHNlZ25vIGZvciBjaGVjayBvZiAt LWVuZCAqLwpAQCAtMTE5MCw4ICsxMTkwLDggQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3Yp CiAJCX0KIAogCi0JCWlmICghWExCeXRlSW5TZWcocHJpdmF0ZS5lbmRwdHIsIHNlZ25vLCBXYWxT ZWdTeikgJiYKLQkJCXByaXZhdGUuZW5kcHRyICE9IChzZWdubyArIDEpICogV2FsU2VnU3opCisJ CWlmICghWExCeXRlSW5TZWcocHJpdmF0ZS5lbmRwdHIsIHNlZ25vLCBwcml2YXRlLnNlZ3NpemUp ICYmCisJCQlwcml2YXRlLmVuZHB0ciAhPSAoc2Vnbm8gKyAxKSAqIHByaXZhdGUuc2Vnc2l6ZSkK IAkJewogCQkJcGdfbG9nX2Vycm9yKCJlbmQgV0FMIGxvY2F0aW9uICVYLyUwOFggaXMgbm90IGlu c2lkZSBmaWxlIFwiJXNcIiIsCiAJCQkJCQkgTFNOX0ZPUk1BVF9BUkdTKHByaXZhdGUuZW5kcHRy KSwKQEAgLTEyMDAsNyArMTIwMCw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQl9 CiAJfQogCWVsc2UKLQkJd2FsZGlyID0gaWRlbnRpZnlfdGFyZ2V0X2RpcmVjdG9yeSh3YWxkaXIs IE5VTEwsICZXYWxTZWdTeik7CisJCXdhbGRpciA9IGlkZW50aWZ5X3RhcmdldF9kaXJlY3Rvcnko d2FsZGlyLCBOVUxMLCAmcHJpdmF0ZS5zZWdzaXplKTsKIAogCS8qIHdlIGRvbid0IGtub3cgd2hh dCB0byBwcmludCAqLwogCWlmICghWExvZ1JlY1B0cklzVmFsaWQocHJpdmF0ZS5zdGFydHB0cikp CkBAIC0xMjEzLDcgKzEyMTMsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAogCS8q IHdlIGhhdmUgZXZlcnl0aGluZyB3ZSBuZWVkLCBzdGFydCByZWFkaW5nICovCiAJeGxvZ3JlYWRl cl9zdGF0ZSA9Ci0JCVhMb2dSZWFkZXJBbGxvY2F0ZShXYWxTZWdTeiwgd2FsZGlyLAorCQlYTG9n UmVhZGVyQWxsb2NhdGUocHJpdmF0ZS5zZWdzaXplLCB3YWxkaXIsCiAJCQkJCQkgICBYTF9ST1VU SU5FKC5wYWdlX3JlYWQgPSBXQUxEdW1wUmVhZFBhZ2UsCiAJCQkJCQkJCQkgIC5zZWdtZW50X29w ZW4gPSBXQUxEdW1wT3BlblNlZ21lbnQsCiAJCQkJCQkJCQkgIC5zZWdtZW50X2Nsb3NlID0gV0FM RHVtcENsb3NlU2VnbWVudCksCkBAIC0xMjM0LDcgKzEyMzQsNyBAQCBtYWluKGludCBhcmdjLCBj aGFyICoqYXJndikKIAkgKiBhIHNlZ21lbnQgKGUuZy4gd2Ugd2VyZSB1c2VkIGluIGZpbGUgbW9k ZSkuCiAJICovCiAJaWYgKGZpcnN0X3JlY29yZCAhPSBwcml2YXRlLnN0YXJ0cHRyICYmCi0JCVhM b2dTZWdtZW50T2Zmc2V0KHByaXZhdGUuc3RhcnRwdHIsIFdhbFNlZ1N6KSAhPSAwKQorCQlYTG9n U2VnbWVudE9mZnNldChwcml2YXRlLnN0YXJ0cHRyLCBwcml2YXRlLnNlZ3NpemUpICE9IDApCiAJ CXBnX2xvZ19pbmZvKG5nZXR0ZXh0KCJmaXJzdCByZWNvcmQgaXMgYWZ0ZXIgJVgvJTA4WCwgYXQg JVgvJTA4WCwgc2tpcHBpbmcgb3ZlciAldSBieXRlIiwKIAkJCQkJCQkgImZpcnN0IHJlY29yZCBp cyBhZnRlciAlWC8lMDhYLCBhdCAlWC8lMDhYLCBza2lwcGluZyBvdmVyICV1IGJ5dGVzIiwKIAkJ CQkJCQkgKGZpcnN0X3JlY29yZCAtIHByaXZhdGUuc3RhcnRwdHIpKSwKZGlmZiAtLWdpdCBhL3Ny Yy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmggYi9zcmMvYmluL3BnX3dhbGR1bXAvcGdfd2Fs ZHVtcC5oCmluZGV4IGI4ODU0Mzg1NmU1Li40ZjFiMmFiNjY4YiAxMDA2NDQKLS0tIGEvc3JjL2Jp bi9wZ193YWxkdW1wL3BnX3dhbGR1bXAuaAorKysgYi9zcmMvYmluL3BnX3dhbGR1bXAvcGdfd2Fs ZHVtcC5oCkBAIC0xNyw2ICsxNyw3IEBACiB0eXBlZGVmIHN0cnVjdCBYTG9nRHVtcFByaXZhdGUK IHsKIAlUaW1lTGluZUlECXRpbWVsaW5lOworCWludAkJCXNlZ3NpemU7CiAJWExvZ1JlY1B0cglz dGFydHB0cjsKIAlYTG9nUmVjUHRyCWVuZHB0cjsKIAlib29sCQllbmRwdHJfcmVhY2hlZDsKLS0g CjIuNDcuMQoK --0000000000004f3241064b13b9d4 Content-Type: application/x-patch; name="v13-0006-pg_waldump-Add-support-for-archived-WAL-decoding.patch" Content-Disposition: attachment; filename="v13-0006-pg_waldump-Add-support-for-archived-WAL-decoding.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mlrohnxp5 RnJvbSBmYTA4NzJhNWM3NzE0YzE5NTg3ODBhOTVhZDAwOTFmMGQwYzVmOTRkIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFR1 ZSwgMTAgRmViIDIwMjYgMTE6NDI6MzYgKzA1MzAKU3ViamVjdDogW1BBVENIIHYxMyAwNi8xMF0g cGdfd2FsZHVtcDogQWRkIHN1cHBvcnQgZm9yIGFyY2hpdmVkIFdBTCBkZWNvZGluZy4KCnBnX3dh bGR1bXAgY2FuIG5vdyBhY2NlcHQgdGhlIHBhdGggdG8gYSB0YXIgYXJjaGl2ZSBjb250YWluaW5n IFdBTApmaWxlcyBhbmQgZGVjb2RlIHRoZW0uIFRoaXMgZmVhdHVyZSB3YXMgYWRkZWQgcHJpbWFy aWx5IGZvcgpwZ192ZXJpZnliYWNrdXAsIHdoaWNoIHByZXZpb3VzbHkgZGlzYWJsZWQgV0FMIHBh cnNpbmcgZm9yCnRhci1mb3JtYXR0ZWQgYmFja3Vwcy4KCk5vdGUgdGhhdCB0aGlzIHBhdGNoIHJl cXVpcmVzIHRoYXQgdGhlIFdBTCBmaWxlcyB3aXRoaW4gdGhlIGFyY2hpdmUgYmUKaW4gc2VxdWVu dGlhbCBvcmRlcjsgYW4gZXJyb3Igd2lsbCBiZSByZXBvcnRlZCBvdGhlcndpc2UuIFRoZSBuZXh0 CnBhdGNoIGlzIHBsYW5uZWQgdG8gcmVtb3ZlIHRoaXMgcmVzdHJpY3Rpb24uCi0tLQogZG9jL3Ny Yy9zZ21sL3JlZi9wZ193YWxkdW1wLnNnbWwgICAgIHwgICA4ICstCiBzcmMvYmluL3BnX3dhbGR1 bXAvTWFrZWZpbGUgICAgICAgICAgfCAgIDcgKy0KIHNyYy9iaW4vcGdfd2FsZHVtcC9hcmNoaXZl X3dhbGR1bXAuYyB8IDYzOCArKysrKysrKysrKysrKysrKysrKysrKysrKysKIHNyYy9iaW4vcGdf d2FsZHVtcC9tZXNvbi5idWlsZCAgICAgICB8ICAgNCArLQogc3JjL2Jpbi9wZ193YWxkdW1wL3Bn X3dhbGR1bXAuYyAgICAgIHwgMjU1ICsrKysrKysrLS0tCiBzcmMvYmluL3BnX3dhbGR1bXAvcGdf d2FsZHVtcC5oICAgICAgfCAgNDMgKysKIHNyYy9iaW4vcGdfd2FsZHVtcC90LzAwMV9iYXNpYy5w bCAgICB8IDEwNSArKysrLQogc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgICAgIHwg ICAzICsKIDggZmlsZXMgY2hhbmdlZCwgOTk3IGluc2VydGlvbnMoKyksIDY2IGRlbGV0aW9ucygt KQogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy9iaW4vcGdfd2FsZHVtcC9hcmNoaXZlX3dhbGR1bXAu YwoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvcGdfd2FsZHVtcC5zZ21sIGIvZG9jL3Ny Yy9zZ21sL3JlZi9wZ193YWxkdW1wLnNnbWwKaW5kZXggY2UyM2FkZDU1NzcuLmQwMDRiYjBmNjdl IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL3BnX3dhbGR1bXAuc2dtbAorKysgYi9kb2Mv c3JjL3NnbWwvcmVmL3BnX3dhbGR1bXAuc2dtbApAQCAtMTQxLDEzICsxNDEsMTcgQEAgUG9zdGdy ZVNRTCBkb2N1bWVudGF0aW9uCiAgICAgICA8dGVybT48b3B0aW9uPi0tcGF0aD08cmVwbGFjZWFi bGU+cGF0aDwvcmVwbGFjZWFibGU+PC9vcHRpb24+PC90ZXJtPgogICAgICAgPGxpc3RpdGVtPgog ICAgICAgIDxwYXJhPgotICAgICAgICBTcGVjaWZpZXMgYSBkaXJlY3RvcnkgdG8gc2VhcmNoIGZv ciBXQUwgc2VnbWVudCBmaWxlcyBvciBhCi0gICAgICAgIGRpcmVjdG9yeSB3aXRoIGEgPGxpdGVy YWw+cGdfd2FsPC9saXRlcmFsPiBzdWJkaXJlY3RvcnkgdGhhdAorICAgICAgICBTcGVjaWZpZXMg YSB0YXIgYXJjaGl2ZSBvciBhIGRpcmVjdG9yeSB0byBzZWFyY2ggZm9yIFdBTCBzZWdtZW50IGZp bGVzCisgICAgICAgIG9yIGEgZGlyZWN0b3J5IHdpdGggYSA8bGl0ZXJhbD5wZ193YWw8L2xpdGVy YWw+IHN1YmRpcmVjdG9yeSB0aGF0CiAgICAgICAgIGNvbnRhaW5zIHN1Y2ggZmlsZXMuICBUaGUg ZGVmYXVsdCBpcyB0byBzZWFyY2ggaW4gdGhlIGN1cnJlbnQKICAgICAgICAgZGlyZWN0b3J5LCB0 aGUgPGxpdGVyYWw+cGdfd2FsPC9saXRlcmFsPiBzdWJkaXJlY3Rvcnkgb2YgdGhlCiAgICAgICAg IGN1cnJlbnQgZGlyZWN0b3J5LCBhbmQgdGhlIDxsaXRlcmFsPnBnX3dhbDwvbGl0ZXJhbD4gc3Vi ZGlyZWN0b3J5CiAgICAgICAgIG9mIDxlbnZhcj5QR0RBVEE8L2VudmFyPi4KICAgICAgICA8L3Bh cmE+CisgICAgICAgPHBhcmE+CisgICAgICAgIElmIGEgdGFyIGFyY2hpdmUgaXMgcHJvdmlkZWQs IGl0cyBXQUwgc2VnbWVudCBmaWxlcyBtdXN0IGJlIGluCisgICAgICAgIHNlcXVlbnRpYWwgb3Jk ZXI7IG90aGVyd2lzZSwgYW4gZXJyb3Igd2lsbCBiZSByZXBvcnRlZC4KKyAgICAgICA8L3BhcmE+ CiAgICAgICA8L2xpc3RpdGVtPgogICAgICA8L3Zhcmxpc3RlbnRyeT4KIApkaWZmIC0tZ2l0IGEv c3JjL2Jpbi9wZ193YWxkdW1wL01ha2VmaWxlIGIvc3JjL2Jpbi9wZ193YWxkdW1wL01ha2VmaWxl CmluZGV4IDRjMWVlNjQ5NTAxLi5hYWJiODc1NjZhMiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ193 YWxkdW1wL01ha2VmaWxlCisrKyBiL3NyYy9iaW4vcGdfd2FsZHVtcC9NYWtlZmlsZQpAQCAtMyw2 ICszLDkgQEAKIFBHRklMRURFU0MgPSAicGdfd2FsZHVtcCAtIGRlY29kZSBhbmQgZGlzcGxheSBX QUwiCiBQR0FQUElDT049d2luMzIKIAorIyBtYWtlIHRoZXNlIGF2YWlsYWJsZSB0byBUQVAgdGVz dCBzY3JpcHRzCitleHBvcnQgVEFSCisKIHN1YmRpciA9IHNyYy9iaW4vcGdfd2FsZHVtcAogdG9w X2J1aWxkZGlyID0gLi4vLi4vLi4KIGluY2x1ZGUgJCh0b3BfYnVpbGRkaXIpL3NyYy9NYWtlZmls ZS5nbG9iYWwKQEAgLTEwLDEzICsxMywxNSBAQCBpbmNsdWRlICQodG9wX2J1aWxkZGlyKS9zcmMv TWFrZWZpbGUuZ2xvYmFsCiBPQkpTID0gXAogCSQoUk1HUkRFU0NPQkpTKSBcCiAJJChXSU4zMlJF UykgXAorCWFyY2hpdmVfd2FsZHVtcC5vIFwKIAljb21wYXQubyBcCiAJcGdfd2FsZHVtcC5vIFwK IAlybWdyZGVzYy5vIFwKIAl4bG9ncmVhZGVyLm8gXAogCXhsb2dzdGF0cy5vCiAKLW92ZXJyaWRl IENQUEZMQUdTIDo9IC1ERlJPTlRFTkQgJChDUFBGTEFHUykKK292ZXJyaWRlIENQUEZMQUdTIDo9 IC1ERlJPTlRFTkQgLUkkKGxpYnBxX3NyY2RpcikgJChDUFBGTEFHUykKK0xERkxBR1NfSU5URVJO QUwgKz0gLUwkKHRvcF9idWlsZGRpcikvc3JjL2ZlX3V0aWxzIC1scGdmZXV0aWxzCiAKIFJNR1JE RVNDU09VUkNFUyA9ICQoc29ydCAkKG5vdGRpciAkKHdpbGRjYXJkICQodG9wX3NyY2Rpcikvc3Jj L2JhY2tlbmQvYWNjZXNzL3JtZ3JkZXNjLypkZXNjKi5jKSkpCiBSTUdSREVTQ09CSlMgPSAkKHBh dHN1YnN0ICUuYywlLm8sJChSTUdSREVTQ1NPVVJDRVMpKQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9w Z193YWxkdW1wL2FyY2hpdmVfd2FsZHVtcC5jIGIvc3JjL2Jpbi9wZ193YWxkdW1wL2FyY2hpdmVf d2FsZHVtcC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi5lY2MwMjJh ODFhMgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy9iaW4vcGdfd2FsZHVtcC9hcmNoaXZlX3dhbGR1 bXAuYwpAQCAtMCwwICsxLDYzOCBAQAorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgKgorICogYXJjaGl2 ZV93YWxkdW1wLmMKKyAqCQlBIGdlbmVyaWMgZmFjaWxpdHkgZm9yIHJlYWRpbmcgV0FMIGRhdGEg ZnJvbSB0YXIgYXJjaGl2ZXMgdmlhIGFyY2hpdmUKKyAqCQlzdHJlYW1lci4KKyAqCisgKiBQb3J0 aW9ucyBDb3B5cmlnaHQgKGMpIDIwMjYsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdy b3VwCisgKgorICogSURFTlRJRklDQVRJT04KKyAqCQlzcmMvYmluL3BnX3dhbGR1bXAvYXJjaGl2 ZV93YWxkdW1wLmMKKyAqCisgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAqLworCisjaW5jbHVkZSAicG9z dGdyZXNfZmUuaCIKKworI2luY2x1ZGUgPHVuaXN0ZC5oPgorCisjaW5jbHVkZSAiYWNjZXNzL3hs b2dfaW50ZXJuYWwuaCIKKyNpbmNsdWRlICJjb21tb24vaGFzaGZuLmgiCisjaW5jbHVkZSAiY29t bW9uL2xvZ2dpbmcuaCIKKyNpbmNsdWRlICJmZV91dGlscy9zaW1wbGVfbGlzdC5oIgorI2luY2x1 ZGUgInBnX3dhbGR1bXAuaCIKKworLyoKKyAqIEhvdyBtYW55IGJ5dGVzIHNob3VsZCB3ZSB0cnkg dG8gcmVhZCBmcm9tIGEgZmlsZSBhdCBvbmNlPworICovCisjZGVmaW5lIFJFQURfQ0hVTktfU0la RQkJCQkoMTI4ICogMTAyNCkKKworLyoKKyAqIENoZWNrIGlmIHRoZSBzdGFydCBzZWdtZW50IG51 bWJlciBpcyB6ZXJvOyB0aGlzIGluZGljYXRlcyBhIHJlcXVlc3QgdG8gcmVhZAorICogYW55IFdB TCBmaWxlLgorICovCisjZGVmaW5lIFJFQURfQU5ZX1dBTChwcml2YXRlSW5mbykJKChwcml2YXRl SW5mbyktPnN0YXJ0X3NlZ25vID09IDApCisKKy8qCisgKiBIYXNoIGVudHJ5IHJlcHJlc2VudGlu ZyBhIFdBTCBzZWdtZW50IHJldHJpZXZlZCBmcm9tIHRoZSBhcmNoaXZlLgorICoKKyAqIFdoaWxl IFdBTCBzZWdtZW50cyBhcmUgdHlwaWNhbGx5IHJlYWQgc2VxdWVudGlhbGx5LCBpbmRpdmlkdWFs IGVudHJpZXMKKyAqIG1haW50YWluIHRoZWlyIG93biBidWZmZXJzIGZvciB0aGUgZm9sbG93aW5n IHJlYXNvbnM6CisgKgorICogMS4gQm91bmRhcnkgSGFuZGxpbmc6IFRoZSBhcmNoaXZlIHN0cmVh bWVyIHByb3ZpZGVzIGEgY29udGludW91cyBieXRlCisgKiBzdHJlYW0uIEEgc2luZ2xlIHN0cmVh bWluZyBjaHVuayBtYXkgY29udGFpbiB0aGUgZW5kIG9mIG9uZSBXQUwgc2VnbWVudAorICogYW5k IHRoZSBzdGFydCBvZiB0aGUgbmV4dC4gU2VwYXJhdGUgYnVmZmVycyBhbGxvdyB1cyB0byBlYXNp bHkKKyAqIHBhcnRpdGlvbiBhbmQgdHJhY2sgdGhlc2UgYnl0ZXMgYnkgdGhlaXIgcmVzcGVjdGl2 ZSBzZWdtZW50cy4KKyAqCisgKiAyLiBPdXQtb2YtT3JkZXIgU3VwcG9ydDogRGVkaWNhdGVkIGJ1 ZmZlcnMgc2ltcGxpZnkgbG9naWMgaWYgc2VnbWVudHMKKyAqIGFyZSBldmVyIGFyY2hpdmVkIG9y IHJldHJpZXZlZCBvdXQgb2Ygc2VxdWVuY2UuCisgKgorICogVG8gbWluaW1pemUgdGhlIG1lbW9y eSBmb290cHJpbnQsIGVudHJpZXMgYW5kIHRoZWlyIGFzc29jaWF0ZWQgYnVmZmVycyBhcmUKKyAq IGZyZWVkIGltbWVkaWF0ZWx5IG9uY2UgY29uc3VtZWQuIFNpbmNlIHBnX3dhbGR1bXAgZG9lcyBu b3QgcmVxdWVzdCB0aGUgc2FtZQorICogYnl0ZXMgdHdpY2UsIGEgc2VnbWVudCBpcyBkaXNjYXJk ZWQgYXMgc29vbiBhcyBpdCBtb3ZlcyBwYXN0IGl0LgorICovCit0eXBlZGVmIHN0cnVjdCBBcmNo aXZlZFdBTEZpbGUKK3sKKwl1aW50MzIJCXN0YXR1czsJCQkvKiBoYXNoIHN0YXR1cyAqLworCWNv bnN0IGNoYXIgKmZuYW1lOwkJCS8qIGhhc2gga2V5OiBXQUwgc2VnbWVudCBuYW1lICovCisKKwlT dHJpbmdJbmZvCWJ1ZjsJCQkvKiBob2xkcyBXQUwgYnl0ZXMgcmVhZCBmcm9tIGFyY2hpdmUgKi8K KworCWludAkJCXJlYWRfbGVuOwkJLyogdG90YWwgYnl0ZXMgb2YgYSBXQUwgcmVhZCBmcm9tIGFy Y2hpdmUgKi8KK30gQXJjaGl2ZWRXQUxGaWxlOworCitzdGF0aWMgdWludDMyIGhhc2hfc3RyaW5n X3BvaW50ZXIoY29uc3QgY2hhciAqcyk7CisjZGVmaW5lIFNIX1BSRUZJWAkJCQlBcmNoaXZlZFdB TAorI2RlZmluZSBTSF9FTEVNRU5UX1RZUEUJCQlBcmNoaXZlZFdBTEZpbGUKKyNkZWZpbmUgU0hf S0VZX1RZUEUJCQkJY29uc3QgY2hhciAqCisjZGVmaW5lIFNIX0tFWQkJCQkJZm5hbWUKKyNkZWZp bmUgU0hfSEFTSF9LRVkodGIsIGtleSkJaGFzaF9zdHJpbmdfcG9pbnRlcihrZXkpCisjZGVmaW5l IFNIX0VRVUFMKHRiLCBhLCBiKQkJKHN0cmNtcChhLCBiKSA9PSAwKQorI2RlZmluZSBTSF9TQ09Q RQkJCQlzdGF0aWMgaW5saW5lCisjZGVmaW5lIFNIX1JBV19BTExPQ0FUT1IJCXBnX21hbGxvYzAK KyNkZWZpbmUgU0hfREVDTEFSRQorI2RlZmluZSBTSF9ERUZJTkUKKyNpbmNsdWRlICJsaWIvc2lt cGxlaGFzaC5oIgorCit0eXBlZGVmIHN0cnVjdCBhc3RyZWFtZXJfd2FsZHVtcAoreworCWFzdHJl YW1lcgliYXNlOworCVhMb2dEdW1wUHJpdmF0ZSAqcHJpdmF0ZUluZm87Cit9IGFzdHJlYW1lcl93 YWxkdW1wOworCitzdGF0aWMgQXJjaGl2ZWRXQUxGaWxlICpnZXRfYXJjaGl2ZV93YWxfZW50cnko Y29uc3QgY2hhciAqZm5hbWUsCisJCQkJCQkJCQkJCSAgWExvZ0R1bXBQcml2YXRlICpwcml2YXRl SW5mbywKKwkJCQkJCQkJCQkJICBpbnQgV2FsU2VnU3opOworc3RhdGljIGludAlyZWFkX2FyY2hp dmVfZmlsZShYTG9nRHVtcFByaXZhdGUgKnByaXZhdGVJbmZvLCBTaXplIGNvdW50KTsKKworc3Rh dGljIGFzdHJlYW1lciAqYXN0cmVhbWVyX3dhbGR1bXBfbmV3KFhMb2dEdW1wUHJpdmF0ZSAqcHJp dmF0ZUluZm8pOworc3RhdGljIHZvaWQgYXN0cmVhbWVyX3dhbGR1bXBfY29udGVudChhc3RyZWFt ZXIgKnN0cmVhbWVyLAorCQkJCQkJCQkJICBhc3RyZWFtZXJfbWVtYmVyICptZW1iZXIsCisJCQkJ CQkJCQkgIGNvbnN0IGNoYXIgKmRhdGEsIGludCBsZW4sCisJCQkJCQkJCQkgIGFzdHJlYW1lcl9h cmNoaXZlX2NvbnRleHQgY29udGV4dCk7CitzdGF0aWMgdm9pZCBhc3RyZWFtZXJfd2FsZHVtcF9m aW5hbGl6ZShhc3RyZWFtZXIgKnN0cmVhbWVyKTsKK3N0YXRpYyB2b2lkIGFzdHJlYW1lcl93YWxk dW1wX2ZyZWUoYXN0cmVhbWVyICpzdHJlYW1lcik7CisKK3N0YXRpYyBib29sIG1lbWJlcl9pc193 YWxfZmlsZShhc3RyZWFtZXJfd2FsZHVtcCAqbXlzdHJlYW1lciwKKwkJCQkJCQkgICBhc3RyZWFt ZXJfbWVtYmVyICptZW1iZXIsCisJCQkJCQkJICAgY2hhciAqKmZuYW1lKTsKKworc3RhdGljIGNv bnN0IGFzdHJlYW1lcl9vcHMgYXN0cmVhbWVyX3dhbGR1bXBfb3BzID0geworCS5jb250ZW50ID0g YXN0cmVhbWVyX3dhbGR1bXBfY29udGVudCwKKwkuZmluYWxpemUgPSBhc3RyZWFtZXJfd2FsZHVt cF9maW5hbGl6ZSwKKwkuZnJlZSA9IGFzdHJlYW1lcl93YWxkdW1wX2ZyZWUKK307CisKKy8qCisg KiBJbml0aWFsaXplcyB0aGUgdGFyIGFyY2hpdmUgcmVhZGVyLCBjcmVhdGVzIGEgaGFzaCB0YWJs ZSBmb3IgV0FMIGVudHJpZXMsCisgKiBjaGVja3MgZm9yIGV4aXN0aW5nIHZhbGlkIFdBTCBzZWdt ZW50cyBpbiB0aGUgYXJjaGl2ZSBmaWxlIGFuZCByZXRyaWV2ZXMgdGhlCisgKiBzZWdtZW50IHNp emUsIGFuZCBzZXRzIHVwIGZpbHRlcnMgZm9yIHJlbGV2YW50IGVudHJpZXMuCisgKi8KK3ZvaWQK K2luaXRfYXJjaGl2ZV9yZWFkZXIoWExvZ0R1bXBQcml2YXRlICpwcml2YXRlSW5mbywgY29uc3Qg Y2hhciAqd2FsZGlyLAorCQkJCQlpbnQgKldhbFNlZ1N6LCBwZ19jb21wcmVzc19hbGdvcml0aG0g Y29tcHJlc3Npb24pCit7CisJaW50CQkJZmQ7CisJYXN0cmVhbWVyICAqc3RyZWFtZXI7CisJQXJj aGl2ZWRXQUxGaWxlICplbnRyeSA9IE5VTEw7CisJWExvZ0xvbmdQYWdlSGVhZGVyIGxvbmdoZHI7 CisJWExvZ1NlZ05vCXNlZ25vOworCVRpbWVMaW5lSUQJdGltZWxpbmU7CisKKwkvKiBPcGVuIHRh ciBhcmNoaXZlIGFuZCBzdG9yZSBpdHMgZmlsZSBkZXNjcmlwdG9yICovCisJZmQgPSBvcGVuX2Zp bGVfaW5fZGlyZWN0b3J5KHdhbGRpciwgcHJpdmF0ZUluZm8tPmFyY2hpdmVfbmFtZSk7CisKKwlp ZiAoZmQgPCAwKQorCQlwZ19mYXRhbCgiY291bGQgbm90IG9wZW4gZmlsZSBcIiVzXCIiLCBwcml2 YXRlSW5mby0+YXJjaGl2ZV9uYW1lKTsKKworCXByaXZhdGVJbmZvLT5hcmNoaXZlX2ZkID0gZmQ7 CisKKwlzdHJlYW1lciA9IGFzdHJlYW1lcl93YWxkdW1wX25ldyhwcml2YXRlSW5mbyk7CisKKwkv KiBCZWZvcmUgdGhhdCB3ZSBtdXN0IHBhcnNlIHRoZSB0YXIgYXJjaGl2ZS4gKi8KKwlzdHJlYW1l ciA9IGFzdHJlYW1lcl90YXJfcGFyc2VyX25ldyhzdHJlYW1lcik7CisKKwkvKiBCZWZvcmUgdGhh dCB3ZSBtdXN0IGRlY29tcHJlc3MsIGlmIGFyY2hpdmUgaXMgY29tcHJlc3NlZC4gKi8KKwlpZiAo Y29tcHJlc3Npb24gPT0gUEdfQ09NUFJFU1NJT05fR1pJUCkKKwkJc3RyZWFtZXIgPSBhc3RyZWFt ZXJfZ3ppcF9kZWNvbXByZXNzb3JfbmV3KHN0cmVhbWVyKTsKKwllbHNlIGlmIChjb21wcmVzc2lv biA9PSBQR19DT01QUkVTU0lPTl9MWjQpCisJCXN0cmVhbWVyID0gYXN0cmVhbWVyX2x6NF9kZWNv bXByZXNzb3JfbmV3KHN0cmVhbWVyKTsKKwllbHNlIGlmIChjb21wcmVzc2lvbiA9PSBQR19DT01Q UkVTU0lPTl9aU1REKQorCQlzdHJlYW1lciA9IGFzdHJlYW1lcl96c3RkX2RlY29tcHJlc3Nvcl9u ZXcoc3RyZWFtZXIpOworCisJcHJpdmF0ZUluZm8tPmFyY2hpdmVfc3RyZWFtZXIgPSBzdHJlYW1l cjsKKworCS8qCisJICogSGFzaCB0YWJsZSBzdG9yaW5nIFdBTCBlbnRyaWVzIHJlYWQgZnJvbSB0 aGUgYXJjaGl2ZSB3aXRoIGFuIGFyYml0cmFyeQorCSAqIGluaXRpYWwgc2l6ZQorCSAqLworCXBy aXZhdGVJbmZvLT5hcmNoaXZlX3dhbF9odGFiID0gQXJjaGl2ZWRXQUxfY3JlYXRlKDgsIE5VTEwp OworCisJLyoKKwkgKiBWZXJpZnkgdGhhdCB0aGUgYXJjaGl2ZSBjb250YWlucyB2YWxpZCBXQUwg ZmlsZXMgYW5kIGZldGNoIFdBTCBzZWdtZW50CisJICogc2l6ZQorCSAqLworCXdoaWxlIChlbnRy eSA9PSBOVUxMIHx8IGVudHJ5LT5idWYtPmxlbiA8IFhMT0dfQkxDS1NaKQorCXsKKwkJaWYgKHJl YWRfYXJjaGl2ZV9maWxlKHByaXZhdGVJbmZvLCBYTE9HX0JMQ0tTWikgPT0gMCkKKwkJCXBnX2Zh dGFsKCJjb3VsZCBub3QgZmluZCBXQUwgaW4gYXJjaGl2ZSBcIiVzXCIiLAorCQkJCQkgcHJpdmF0 ZUluZm8tPmFyY2hpdmVfbmFtZSk7CisKKwkJZW50cnkgPSBwcml2YXRlSW5mby0+Y3VyX2ZpbGU7 CisJfQorCisJLyogU2V0IFdhbFNlZ1N6IGlmIFdBTCBkYXRhIGlzIHN1Y2Nlc3NmdWxseSByZWFk ICovCisJbG9uZ2hkciA9IChYTG9nTG9uZ1BhZ2VIZWFkZXIpIGVudHJ5LT5idWYtPmRhdGE7CisK KwlpZiAoIUlzVmFsaWRXYWxTZWdTaXplKGxvbmdoZHItPnhscF9zZWdfc2l6ZSkpCisJeworCQlw Z19sb2dfZXJyb3IobmdldHRleHQoImludmFsaWQgV0FMIHNlZ21lbnQgc2l6ZSBpbiBXQUwgZmls ZSBmcm9tIGFyY2hpdmUgXCIlc1wiICglZCBieXRlKSIsCisJCQkJCQkJICAiaW52YWxpZCBXQUwg c2VnbWVudCBzaXplIGluIFdBTCBmaWxlIGZyb20gYXJjaGl2ZSBcIiVzXCIgKCVkIGJ5dGVzKSIs CisJCQkJCQkJICBsb25naGRyLT54bHBfc2VnX3NpemUpLAorCQkJCQkgcHJpdmF0ZUluZm8tPmFy Y2hpdmVfbmFtZSwgbG9uZ2hkci0+eGxwX3NlZ19zaXplKTsKKwkJcGdfbG9nX2Vycm9yX2RldGFp bCgiVGhlIFdBTCBzZWdtZW50IHNpemUgbXVzdCBiZSBhIHBvd2VyIG9mIHR3byBiZXR3ZWVuIDEg TUIgYW5kIDEgR0IuIik7CisJCWV4aXQoMSk7CisJfQorCisJKldhbFNlZ1N6ID0gbG9uZ2hkci0+ eGxwX3NlZ19zaXplOworCisJLyoKKwkgKiBXaXRoIHRoZSBXQUwgc2VnbWVudCBzaXplIGF2YWls YWJsZSwgd2UgY2FuIG5vdyBpbml0aWFsaXplIHRoZQorCSAqIGRlcGVuZGVudCBzdGFydCBhbmQg ZW5kIHNlZ21lbnQgbnVtYmVycy4KKwkgKi8KKwlBc3NlcnQoIVhMb2dSZWNQdHJJc0ludmFsaWQo cHJpdmF0ZUluZm8tPnN0YXJ0cHRyKSk7CisJWExCeXRlVG9TZWcocHJpdmF0ZUluZm8tPnN0YXJ0 cHRyLCBwcml2YXRlSW5mby0+c3RhcnRfc2Vnbm8sICpXYWxTZWdTeik7CisKKwlpZiAoIVhMb2dS ZWNQdHJJc0ludmFsaWQocHJpdmF0ZUluZm8tPmVuZHB0cikpCisJCVhMQnl0ZVRvU2VnKHByaXZh dGVJbmZvLT5lbmRwdHIsIHByaXZhdGVJbmZvLT5lbmRfc2Vnbm8sICpXYWxTZWdTeik7CisKKwkv KgorCSAqIFRoaXMgV0FMIHJlY29yZCB3YXMgZmV0Y2hlZCBiZWZvcmUgdGhlIGZpbHRlcmluZyBw YXJhbWV0ZXJzCisJICogKHN0YXJ0X3NlZ25vIGFuZCBlbmRfc2Vnbm8pIHdlcmUgZnVsbHkgaW5p dGlhbGl6ZWQuIFBlcmZvcm0gdGhlCisJICogcmVsZXZhbmNlIGNoZWNrIGFnYWluc3QgdGhlIHVz ZXItcHJvdmlkZWQgcmFuZ2Ugbm93OyBpZiB0aGUgV0FMIGZhbGxzCisJICogb3V0c2lkZSB0aGlz IHJhbmdlLCByZW1vdmUgaXQgZnJvbSB0aGUgaGFzaCB0YWJsZS4gU3Vic2VxdWVudCBXQUwgd2ls bAorCSAqIGJlIGZpbHRlcmVkIGF1dG9tYXRpY2FsbHkgYnkgdGhlIGFyY2hpdmVkIHN0cmVhbWVy IHVzaW5nIHRoZSB1cGRhdGVkCisJICogc3RhcnRfc2Vnbm8gYW5kIGVuZF9zZWdubyB2YWx1ZXMu CisJICovCisJWExvZ0Zyb21GaWxlTmFtZShlbnRyeS0+Zm5hbWUsICZ0aW1lbGluZSwgJnNlZ25v LCBwcml2YXRlSW5mby0+c2Vnc2l6ZSk7CisJaWYgKHByaXZhdGVJbmZvLT50aW1lbGluZSAhPSB0 aW1lbGluZSB8fAorCQlwcml2YXRlSW5mby0+c3RhcnRfc2Vnbm8gPiBzZWdubyB8fAorCQlwcml2 YXRlSW5mby0+ZW5kX3NlZ25vIDwgc2Vnbm8pCisJCWZyZWVfYXJjaGl2ZV93YWxfZW50cnkoZW50 cnktPmZuYW1lLCBwcml2YXRlSW5mbyk7Cit9CisKKy8qCisgKiBSZWxlYXNlIHRoZSBhcmNoaXZl IHN0cmVhbWVyIGNoYWluIGFuZCBjbG9zZSB0aGUgYXJjaGl2ZSBmaWxlLgorICovCit2b2lkCitm cmVlX2FyY2hpdmVfcmVhZGVyKFhMb2dEdW1wUHJpdmF0ZSAqcHJpdmF0ZUluZm8pCit7CisJLyoK KwkgKiBOQjogTm9ybWFsbHksIGFzdHJlYW1lcl9maW5hbGl6ZSgpIGlzIGNhbGxlZCBiZWZvcmUg YXN0cmVhbWVyX2ZyZWUoKSB0bworCSAqIGZsdXNoIGFueSByZW1haW5pbmcgYnVmZmVyZWQgZGF0 YSBvciB0byBlbnN1cmUgdGhlIGVuZCBvZiB0aGUgdGFyCisJICogYXJjaGl2ZSBpcyByZWFjaGVk LiBIb3dldmVyLCB3aGVuIGRlY29kaW5nIGEgV0FMIGZpbGUsIG9uY2Ugd2UgaGl0IHRoZQorCSAq IGVuZCBMU04sIGFueSByZW1haW5pbmcgV0FMIGRhdGEgaW4gdGhlIGJ1ZmZlciBvciB0aGUgdGFy IGFyY2hpdmUncworCSAqIHVucmVhY2hlZCBlbmQgY2FuIGJlIHNhZmVseSBpZ25vcmVkLgorCSAq LworCWFzdHJlYW1lcl9mcmVlKHByaXZhdGVJbmZvLT5hcmNoaXZlX3N0cmVhbWVyKTsKKworCS8q IENsb3NlIHRoZSBmaWxlLiAqLworCWlmIChjbG9zZShwcml2YXRlSW5mby0+YXJjaGl2ZV9mZCkg IT0gMCkKKwkJcGdfbG9nX2Vycm9yKCJjb3VsZCBub3QgY2xvc2UgZmlsZSBcIiVzXCI6ICVtIiwK KwkJCQkJIHByaXZhdGVJbmZvLT5hcmNoaXZlX25hbWUpOworfQorCisvKgorICogQ29waWVzIFdB TCBkYXRhIGZyb20gYXN0cmVhbWVyIHRvIHJlYWRCdWZmOyBpZiB1bmF2YWlsYWJsZSwgZmV0Y2hl cyBtb3JlCisgKiBmcm9tIHRoZSB0YXIgYXJjaGl2ZSB2aWEgYXN0cmVhbWVyLgorICovCitpbnQK K3JlYWRfYXJjaGl2ZV93YWxfcGFnZShYTG9nRHVtcFByaXZhdGUgKnByaXZhdGVJbmZvLCBYTG9n UmVjUHRyIHRhcmdldFBhZ2VQdHIsCisJCQkJCSAgU2l6ZSBjb3VudCwgY2hhciAqcmVhZEJ1ZmYs IGludCBXYWxTZWdTeikKK3sKKwljaGFyCSAgICpwID0gcmVhZEJ1ZmY7CisJU2l6ZQkJbmJ5dGVz ID0gY291bnQ7CisJWExvZ1JlY1B0cglyZWNwdHIgPSB0YXJnZXRQYWdlUHRyOworCVhMb2dTZWdO bwlzZWdubzsKKwljaGFyCQlmbmFtZVtNQVhGTkFNRUxFTl07CisJQXJjaGl2ZWRXQUxGaWxlICpl bnRyeTsKKworCS8qIElkZW50aWZ5IHRoZSBzZWdtZW50IGFuZCBsb2NhdGUgaXRzIGVudHJ5IGlu IHRoZSBhcmNoaXZlIGhhc2ggKi8KKwlYTEJ5dGVUb1NlZyh0YXJnZXRQYWdlUHRyLCBzZWdubywg V2FsU2VnU3opOworCVhMb2dGaWxlTmFtZShmbmFtZSwgcHJpdmF0ZUluZm8tPnRpbWVsaW5lLCBz ZWdubywgV2FsU2VnU3opOworCWVudHJ5ID0gZ2V0X2FyY2hpdmVfd2FsX2VudHJ5KGZuYW1lLCBw cml2YXRlSW5mbywgV2FsU2VnU3opOworCisJd2hpbGUgKG5ieXRlcyA+IDApCisJeworCQljaGFy CSAgICpidWYgPSBlbnRyeS0+YnVmLT5kYXRhOworCQlpbnQJCQlidWZMZW4gPSBlbnRyeS0+YnVm LT5sZW47CisJCVhMb2dSZWNQdHIJZW5kUHRyOworCQlYTG9nUmVjUHRyCXN0YXJ0UHRyOworCisJ CS8qIENhbGN1bGF0ZSB0aGUgTFNOIHJhbmdlIGN1cnJlbnRseSByZXNpZGluZyBpbiB0aGUgYnVm ZmVyICovCisJCVhMb2dTZWdOb09mZnNldFRvUmVjUHRyKHNlZ25vLCBlbnRyeS0+cmVhZF9sZW4s IFdhbFNlZ1N6LCBlbmRQdHIpOworCQlzdGFydFB0ciA9IGVuZFB0ciAtIGJ1ZkxlbjsKKworCQkv KgorCQkgKiBDb3B5IHRoZSByZXF1ZXN0ZWQgV0FMIHJlY29yZCBpZiBpdCBleGlzdHMgaW4gdGhl IGJ1ZmZlci4KKwkJICovCisJCWlmIChidWZMZW4gPiAwICYmIHN0YXJ0UHRyIDw9IHJlY3B0ciAm JiByZWNwdHIgPCBlbmRQdHIpCisJCXsKKwkJCWludAkJCWNvcHlCeXRlczsKKwkJCWludAkJCW9m ZnNldCA9IHJlY3B0ciAtIHN0YXJ0UHRyOworCisJCQkvKgorCQkJICogR2l2ZW4gc3RhcnRQdHIg PD0gcmVjcHRyIDwgZW5kUHRyIGFuZCBhIHRvdGFsIGJ1ZmZlciBzaXplCisJCQkgKiAnYnVmTGVu JywgdGhlIG9mZnNldCAocmVjcHRyIC0gc3RhcnRQdHIpIHdpbGwgYWx3YXlzIGJlIGxlc3MKKwkJ CSAqIHRoYW4gJ2J1ZkxlbicuCisJCQkgKi8KKwkJCUFzc2VydChvZmZzZXQgPCBidWZMZW4pOwor CisJCQljb3B5Qnl0ZXMgPSBNaW4obmJ5dGVzLCBidWZMZW4gLSBvZmZzZXQpOworCQkJbWVtY3B5 KHAsIGJ1ZiArIG9mZnNldCwgY29weUJ5dGVzKTsKKworCQkJLyogVXBkYXRlIHN0YXRlIGZvciBy ZWFkICovCisJCQlyZWNwdHIgKz0gY29weUJ5dGVzOworCQkJbmJ5dGVzIC09IGNvcHlCeXRlczsK KwkJCXAgKz0gY29weUJ5dGVzOworCQl9CisJCWVsc2UKKwkJeworCQkJLyoKKwkJCSAqIEJlZm9y ZSBzdGFydGluZyB0aGUgYWN0dWFsIGRlY29kaW5nIGxvb3AsIHBnX3dhbGR1bXAgdHJpZXMgdG8K KwkJCSAqIGxvY2F0ZSB0aGUgZmlyc3QgdmFsaWQgcmVjb3JkIGZyb20gdGhlIHVzZXItc3BlY2lm aWVkIHN0YXJ0CisJCQkgKiBwb3NpdGlvbiwgd2hpY2ggbWlnaHQgbm90IGJlIHRoZSBzdGFydCBv ZiBhIFdBTCByZWNvcmQgYW5kCisJCQkgKiBjb3VsZCBmYWxsIGluIHRoZSBtaWRkbGUgb2YgYSBy ZWNvcmQgdGhhdCBzcGFucyBtdWx0aXBsZSBwYWdlcy4KKwkJCSAqIENvbnNlcXVlbnRseSwgdGhl IHZhbGlkIHN0YXJ0IHBvc2l0aW9uIHRoZSBkZWNvZGVyIGlzIGxvb2tpbmcKKwkJCSAqIGZvciBj b3VsZCBiZSBmYXIgYXdheSBmcm9tIHRoYXQgaW5pdGlhbCBwb3NpdGlvbi4KKwkJCSAqCisJCQkg KiBUaGlzIG1heSBpbnZvbHZlIHJlYWRpbmcgYWNyb3NzIG11bHRpcGxlIHBhZ2VzLCBhbmQgdGhp cworCQkJICogcHJlLXJlYWRpbmcgZmV0Y2hlcyBkYXRhIGluIG11bHRpcGxlIHJvdW5kcyBmcm9t IHRoZSBhcmNoaXZlCisJCQkgKiBzdHJlYW1lcjsgbm9ybWFsbHksIHdlIHdvdWxkIHRocm93IGF3 YXkgZXhpc3RpbmcgYnVmZmVyCisJCQkgKiBjb250ZW50cyB0byBmZXRjaCB0aGUgbmV4dCBzZXQg b2YgZGF0YSwgYnV0IHRoYXQgZXhpc3RpbmcgZGF0YQorCQkJICogbWlnaHQgYmUgbmVlZGVkIG9u Y2UgdGhlIG1haW4gbG9vcCBzdGFydHMuIEJlY2F1c2UgcHJldmlvdXNseQorCQkJICogcmVhZCBk YXRhIGNhbm5vdCBiZSByZS1yZWFkIGJ5IHRoZSBhcmNoaXZlIHN0cmVhbWVyLCB3ZSBkZWxheQor CQkJICogcmVzZXR0aW5nIHRoZSBidWZmZXIgdW50aWwgdGhlIG1haW4gZGVjb2RpbmcgbG9vcCBp cyBlbnRlcmVkLgorCQkJICoKKwkJCSAqIE9uY2UgcGdfd2FsZHVtcCBoYXMgZW50ZXJlZCB0aGUg bWFpbiBsb29wLCBpdCBtYXkgcmUtcmVhZCB0aGUKKwkJCSAqIGN1cnJlbnRseSBhY3RpdmUgcGFn ZSwgYnV0IG5ldmVyIGFuIG9sZGVyIG9uZTsgdGhlcmVmb3JlLCBhbnkKKwkJCSAqIGZ1bGx5IGNv bnN1bWVkIFdBTCBkYXRhIHByZWNlZGluZyB0aGUgY3VycmVudCBwYWdlIGNhbiB0aGVuIGJlCisJ CQkgKiBzYWZlbHkgZGlzY2FyZGVkLgorCQkJICovCisJCQlpZiAocHJpdmF0ZUluZm8tPmRlY29k aW5nX3N0YXJ0ZWQpCisJCQl7CisJCQkJcmVzZXRTdHJpbmdJbmZvKGVudHJ5LT5idWYpOworCisJ CQkJLyoKKwkJCQkgKiBQdXNoIGJhY2sgdGhlIHBhcnRpYWwgcGFnZSBkYXRhIGZvciB0aGUgY3Vy cmVudCBwYWdlIHRvIHRoZQorCQkJCSAqIGJ1ZmZlciwgZW5zdXJpbmcgaXQgcmVtYWlucyBmdWxs IHBhZ2UgYXZhaWxhYmxlIGZvcgorCQkJCSAqIHJlLXJlYWRpbmcgaWYgcmVxdWVzdGVkLgorCQkJ CSAqLworCQkJCWlmIChwID4gcmVhZEJ1ZmYpCisJCQkJeworCQkJCQlBc3NlcnQoKGNvdW50IC0g bmJ5dGVzKSA+IDApOworCQkJCQlhcHBlbmRCaW5hcnlTdHJpbmdJbmZvKGVudHJ5LT5idWYsIHJl YWRCdWZmLCBjb3VudCAtIG5ieXRlcyk7CisJCQkJfQorCQkJfQorCisJCQkvKgorCQkJICogTm93 LCBmZXRjaCBtb3JlIGRhdGE7IHJhaXNlIGFuIGVycm9yIGlmIGl0J3Mgbm90IHRoZSBjdXJyZW50 CisJCQkgKiBzZWdtZW50IGJlaW5nIHJlYWQgYnkgdGhlIGFyY2hpdmUgc3RyZWFtZXIgb3IgaWYg cmVhZGluZyBvZiB0aGUKKwkJCSAqIGFyY2hpdmVkIGZpbGUgaGFzIGZpbmlzaGVkLgorCQkJICov CisJCQlpZiAocHJpdmF0ZUluZm8tPmN1cl9maWxlICE9IGVudHJ5IHx8CisJCQkJcmVhZF9hcmNo aXZlX2ZpbGUocHJpdmF0ZUluZm8sIFJFQURfQ0hVTktfU0laRSkgPT0gMCkKKwkJCQlwZ19mYXRh bCgiY291bGQgbm90IHJlYWQgZmlsZSBcIiVzXCIgZnJvbSBhcmNoaXZlIFwiJXNcIjogcmVhZCAl bGxkIG9mICVsbGQiLAorCQkJCQkJIGZuYW1lLCBwcml2YXRlSW5mby0+YXJjaGl2ZV9uYW1lLAor CQkJCQkJIChsb25nIGxvbmcgaW50KSBjb3VudCAtIG5ieXRlcywKKwkJCQkJCSAobG9uZyBsb25n IGludCkgbmJ5dGVzKTsKKwkJfQorCX0KKworCS8qCisJICogU2hvdWxkIGhhdmUgZWl0aGVyIGhh dmUgc3VjY2Vzc2Z1bGx5IHJlYWQgYWxsIHRoZSByZXF1ZXN0ZWQgYnl0ZXMgb3IKKwkgKiByZXBv cnRlZCBhIGZhaWx1cmUgYmVmb3JlIHRoaXMgcG9pbnQuCisJICovCisJQXNzZXJ0KG5ieXRlcyA9 PSAwKTsKKworCS8qCisJICogTkI6IFdlIHJldHVybiB0aGUgZml4ZWQgdmFsdWUgcHJvdmlkZWQg YXMgaW5wdXQuIEFsdGhvdWdoIHdlIGNvdWxkCisJICogcmV0dXJuIGEgYm9vbGVhbiBzaW5jZSB3 ZSBlaXRoZXIgc3VjY2Vzc2Z1bGx5IHJlYWQgdGhlIFdBTCBwYWdlIG9yCisJICogcmFpc2UgYW4g ZXJyb3IsIGJ1dCB0aGUgY2FsbGVyIGV4cGVjdHMgdGhpcyB2YWx1ZSB0byBiZSByZXR1cm5lZC4g VGhlCisJICogcm91dGluZSB0aGF0IHJlYWRzIFdBTCBwYWdlcyBmcm9tIHRoZSBwaHlzaWNhbCBX QUwgZmlsZSBmb2xsb3dzIHRoZQorCSAqIHNhbWUgY29udmVudGlvbi4KKwkgKi8KKwlyZXR1cm4g Y291bnQ7Cit9CisKKy8qCisgKiBDbGVhcnMgdGhlIGJ1ZmZlciBvZiBhIFdBTCBlbnRyeSB0aGF0 IGlzIGJlaW5nIGlnbm9yZWQuICBUaGlzIGZyZWVzIHVwIG1lbW9yeQorICogYW5kIHByZXZlbnRz IHRoZSBhY2N1bXVsYXRpb24gb2YgaXJyZWxldmFudCBXQUwgZGF0YS4gIEFkZGl0aW9uYWxseSwK KyAqIGNvbmRpdGlvbmFsbHkgc2V0dGluZyBjdXJfZmlsZSB3aXRoaW4gcHJpdmF0ZWluZm8gdG8g TlVMTCBlbnN1cmVzIHRoZQorICogYXJjaGl2ZSBzdHJlYW1lciBza2lwcyB1bm5lY2Vzc2FyeSBj b3B5IG9wZXJhdGlvbnMKKyAqLwordm9pZAorZnJlZV9hcmNoaXZlX3dhbF9lbnRyeShjb25zdCBj aGFyICpmbmFtZSwgWExvZ0R1bXBQcml2YXRlICpwcml2YXRlSW5mbykKK3sKKwlBcmNoaXZlZFdB TEZpbGUgKmVudHJ5OworCisJZW50cnkgPSBBcmNoaXZlZFdBTF9sb29rdXAocHJpdmF0ZUluZm8t PmFyY2hpdmVfd2FsX2h0YWIsIGZuYW1lKTsKKworCWlmIChlbnRyeSA9PSBOVUxMKQorCQlyZXR1 cm47CisKKwkvKiBEZXN0cm95IHRoZSBidWZmZXIgKi8KKwlkZXN0cm95U3RyaW5nSW5mbyhlbnRy eS0+YnVmKTsKKwllbnRyeS0+YnVmID0gTlVMTDsKKworCS8qIFNldCBjdXJfZmlsZSB0byBOVUxM IGlmIGl0IG1hdGNoZXMgdGhlIGVudHJ5IGJlaW5nIGlnbm9yZWQgKi8KKwlpZiAocHJpdmF0ZUlu Zm8tPmN1cl9maWxlID09IGVudHJ5KQorCQlwcml2YXRlSW5mby0+Y3VyX2ZpbGUgPSBOVUxMOwor CisJQXJjaGl2ZWRXQUxfZGVsZXRlX2l0ZW0ocHJpdmF0ZUluZm8tPmFyY2hpdmVfd2FsX2h0YWIs IGVudHJ5KTsKK30KKworLyoKKyAqIFJldHVybnMgdGhlIGFyY2hpdmVkIFdBTCBlbnRyeSBmcm9t IHRoZSBoYXNoIHRhYmxlIGlmIGl0IGV4aXN0cy4gIE90aGVyd2lzZSwKKyAqIGl0IGludm9rZXMg dGhlIHJvdXRpbmUgdG8gcmVhZCB0aGUgYXJjaGl2ZWQgZmlsZSwgd2hpY2ggdGhlbiBwb3B1bGF0 ZXMgdGhlCisgKiBlbnRyeSBpbiB0aGUgaGFzaCB0YWJsZSBpZiB0aGF0IFdBTCBleGlzdHMgaW4g dGhlIGFyY2hpdmUuCisgKi8KK3N0YXRpYyBBcmNoaXZlZFdBTEZpbGUgKgorZ2V0X2FyY2hpdmVf d2FsX2VudHJ5KGNvbnN0IGNoYXIgKmZuYW1lLCBYTG9nRHVtcFByaXZhdGUgKnByaXZhdGVJbmZv LAorCQkJCQkgIGludCBXYWxTZWdTeikKK3sKKwlBcmNoaXZlZFdBTEZpbGUgKmVudHJ5ID0gTlVM TDsKKworCS8qIFNlYXJjaCBoYXNoIHRhYmxlICovCisJZW50cnkgPSBBcmNoaXZlZFdBTF9sb29r dXAocHJpdmF0ZUluZm8tPmFyY2hpdmVfd2FsX2h0YWIsIGZuYW1lKTsKKworCWlmIChlbnRyeSAh PSBOVUxMKQorCQlyZXR1cm4gZW50cnk7CisKKwkvKgorCSAqIFRoZSByZXF1ZXN0ZWQgV0FMIGVu dHJ5IGhhcyBub3QgYmVlbiByZWFkIGZyb20gdGhlIGFyY2hpdmUgeWV0OyBpbnZva2UKKwkgKiB0 aGUgYXJjaGl2ZSBzdHJlYW1lciB0byByZWFkIGl0LgorCSAqLworCXdoaWxlICgxKQorCXsKKwkJ LyogRmV0Y2ggbW9yZSBkYXRhICovCisJCWlmIChyZWFkX2FyY2hpdmVfZmlsZShwcml2YXRlSW5m bywgUkVBRF9DSFVOS19TSVpFKSA9PSAwKQorCQkJYnJlYWs7CQkJCS8qIGFyY2hpdmUgZmlsZSBl bmRlZCAqLworCisJCS8qCisJCSAqIEFyY2hpdmVkIHN0cmVhbWVyIGlzIHJlYWRpbmcgYSBub24t V0FMIGZpbGUgb3IgYW4gaXJyZWxldmFudCBXQUwKKwkJICogZmlsZS4KKwkJICovCisJCWlmIChw cml2YXRlSW5mby0+Y3VyX2ZpbGUgPT0gTlVMTCkKKwkJCWNvbnRpbnVlOworCisJCWVudHJ5ID0g cHJpdmF0ZUluZm8tPmN1cl9maWxlOworCisJCS8qIEZvdW5kIHRoZSByZXF1aXJlZCBlbnRyeSAq LworCQlpZiAoc3RyY21wKGZuYW1lLCBlbnRyeS0+Zm5hbWUpID09IDApCisJCQlyZXR1cm4gZW50 cnk7CisKKwkJLyogV0FMIHNlZ21lbnRzIG11c3QgYmUgYXJjaGl2ZWQgaW4gb3JkZXIgKi8KKwkJ cGdfbG9nX2Vycm9yKCJXQUwgZmlsZXMgYXJlIG5vdCBhcmNoaXZlZCBpbiBzZXF1ZW50aWFsIG9y ZGVyIik7CisJCXBnX2xvZ19lcnJvcl9kZXRhaWwoIkV4cGVjdGluZyBzZWdtZW50IFwiJXNcIiBi dXQgZm91bmQgXCIlc1wiLiIsCisJCQkJCQkJZm5hbWUsIGVudHJ5LT5mbmFtZSk7CisJCWV4aXQo MSk7CisJfQorCisJLyogUmVxdWVzdGVkIFdBTCBzZWdtZW50IG5vdCBmb3VuZCAqLworCXBnX2Zh dGFsKCJjb3VsZCBub3QgZmluZCBXQUwgXCIlc1wiIGluIGFyY2hpdmUgXCIlc1wiIiwKKwkJCSBm bmFtZSwgcHJpdmF0ZUluZm8tPmFyY2hpdmVfbmFtZSk7Cit9CisKKy8qCisgKiBSZWFkcyB0aGUg YXJjaGl2ZSBmaWxlIGFuZCBwYXNzZXMgaXQgdG8gdGhlIGFyY2hpdmUgc3RyZWFtZXIgZm9yCisg KiBkZWNvbXByZXNzaW9uLgorICovCitzdGF0aWMgaW50CityZWFkX2FyY2hpdmVfZmlsZShYTG9n RHVtcFByaXZhdGUgKnByaXZhdGVJbmZvLCBTaXplIGNvdW50KQoreworCWludAkJCXJjOworCWNo YXIJICAgKmJ1ZmZlcjsKKworCWJ1ZmZlciA9IHBnX21hbGxvYyhjb3VudCAqIHNpemVvZih1aW50 OCkpOworCisJcmMgPSByZWFkKHByaXZhdGVJbmZvLT5hcmNoaXZlX2ZkLCBidWZmZXIsIGNvdW50 KTsKKwlpZiAocmMgPCAwKQorCQlwZ19mYXRhbCgiY291bGQgbm90IHJlYWQgZmlsZSBcIiVzXCI6 ICVtIiwKKwkJCQkgcHJpdmF0ZUluZm8tPmFyY2hpdmVfbmFtZSk7CisKKwkvKgorCSAqIERlY29t cHJlc3MgKGlmIHJlcXVpcmVkKSwgYW5kIHRoZW4gcGFyc2UgdGhlIHByZXZpb3VzbHkgcmVhZCBj b250ZW50cworCSAqIG9mIHRoZSB0YXIgZmlsZS4KKwkgKi8KKwlpZiAocmMgPiAwKQorCQlhc3Ry ZWFtZXJfY29udGVudChwcml2YXRlSW5mby0+YXJjaGl2ZV9zdHJlYW1lciwgTlVMTCwKKwkJCQkJ CSAgYnVmZmVyLCByYywgQVNUUkVBTUVSX1VOS05PV04pOworCXBnX2ZyZWUoYnVmZmVyKTsKKwor CXJldHVybiByYzsKK30KKworLyoKKyAqIENyZWF0ZSBhbiBhc3RyZWFtZXIgdGhhdCBjYW4gcmVh ZCBXQUwgZnJvbSBhIHRhciBmaWxlLgorICovCitzdGF0aWMgYXN0cmVhbWVyICoKK2FzdHJlYW1l cl93YWxkdW1wX25ldyhYTG9nRHVtcFByaXZhdGUgKnByaXZhdGVJbmZvKQoreworCWFzdHJlYW1l cl93YWxkdW1wICpzdHJlYW1lcjsKKworCXN0cmVhbWVyID0gcGFsbG9jMChzaXplb2YoYXN0cmVh bWVyX3dhbGR1bXApKTsKKwkqKChjb25zdCBhc3RyZWFtZXJfb3BzICoqKSAmc3RyZWFtZXItPmJh c2UuYmJzX29wcykgPQorCQkmYXN0cmVhbWVyX3dhbGR1bXBfb3BzOworCisJc3RyZWFtZXItPnBy aXZhdGVJbmZvID0gcHJpdmF0ZUluZm87CisKKwlyZXR1cm4gJnN0cmVhbWVyLT5iYXNlOworfQor CisvKgorICogTWFpbiBlbnRyeSBwb2ludCBvZiB0aGUgYXJjaGl2ZSBzdHJlYW1lciBmb3IgcmVh ZGluZyBXQUwgZGF0YSBmcm9tIGEgdGFyCisgKiBmaWxlLiBJZiBhIG1lbWJlciBpcyBpZGVudGlm aWVkIGFzIGEgdmFsaWQgV0FMIGZpbGUsIGEgaGFzaCBlbnRyeSBpcyBjcmVhdGVkCisgKiBmb3Ig aXQsIGFuZCBpdHMgY29udGVudHMgYXJlIGNvcGllZCBpbnRvIHRoYXQgZW50cnkncyBidWZmZXIs IG1ha2luZyB0aGVtCisgKiBhY2Nlc3NpYmxlIHRvIHRoZSBkZWNvZGluZyByb3V0aW5lLgorICov CitzdGF0aWMgdm9pZAorYXN0cmVhbWVyX3dhbGR1bXBfY29udGVudChhc3RyZWFtZXIgKnN0cmVh bWVyLCBhc3RyZWFtZXJfbWVtYmVyICptZW1iZXIsCisJCQkJCQkgIGNvbnN0IGNoYXIgKmRhdGEs IGludCBsZW4sCisJCQkJCQkgIGFzdHJlYW1lcl9hcmNoaXZlX2NvbnRleHQgY29udGV4dCkKK3sK Kwlhc3RyZWFtZXJfd2FsZHVtcCAqbXlzdHJlYW1lciA9IChhc3RyZWFtZXJfd2FsZHVtcCAqKSBz dHJlYW1lcjsKKwlYTG9nRHVtcFByaXZhdGUgKnByaXZhdGVJbmZvID0gbXlzdHJlYW1lci0+cHJp dmF0ZUluZm87CisKKwlBc3NlcnQoY29udGV4dCAhPSBBU1RSRUFNRVJfVU5LTk9XTik7CisKKwlz d2l0Y2ggKGNvbnRleHQpCisJeworCQljYXNlIEFTVFJFQU1FUl9NRU1CRVJfSEVBREVSOgorCQkJ eworCQkJCWNoYXIJICAgKmZuYW1lID0gTlVMTDsKKwkJCQlBcmNoaXZlZFdBTEZpbGUgKmVudHJ5 OworCQkJCWJvb2wJCWZvdW5kOworCisJCQkJcGdfbG9nX2RlYnVnKCJyZWFkaW5nIFwiJXNcIiIs IG1lbWJlci0+cGF0aG5hbWUpOworCisJCQkJaWYgKCFtZW1iZXJfaXNfd2FsX2ZpbGUobXlzdHJl YW1lciwgbWVtYmVyLCAmZm5hbWUpKQorCQkJCQlicmVhazsKKworCQkJCS8qCisJCQkJICogRnVy dGhlciBjaGVja3MgYXJlIHNraXBwZWQgaWYgYW55IFdBTCBmaWxlIGNhbiBiZSByZWFkLgorCQkJ CSAqIFRoaXMgdHlwaWNhbGx5IG9jY3VycyBkdXJpbmcgaW5pdGlhbCB2ZXJpZmljYXRpb24uCisJ CQkJICovCisJCQkJaWYgKCFSRUFEX0FOWV9XQUwocHJpdmF0ZUluZm8pKQorCQkJCXsKKwkJCQkJ WExvZ1NlZ05vCXNlZ25vOworCQkJCQlUaW1lTGluZUlECXRpbWVsaW5lOworCisJCQkJCS8qCisJ CQkJCSAqIFNraXAgdGhlIHNlZ21lbnQgaWYgdGhlIHRpbWVsaW5lIGRvZXMgbm90IG1hdGNoLCBp ZiBpdAorCQkJCQkgKiBmYWxscyBvdXRzaWRlIHRoZSBjYWxsZXItc3BlY2lmaWVkIHJhbmdlLgor CQkJCQkgKi8KKwkJCQkJWExvZ0Zyb21GaWxlTmFtZShmbmFtZSwgJnRpbWVsaW5lLCAmc2Vnbm8s IHByaXZhdGVJbmZvLT5zZWdzaXplKTsKKwkJCQkJaWYgKHByaXZhdGVJbmZvLT50aW1lbGluZSAh PSB0aW1lbGluZSB8fAorCQkJCQkJcHJpdmF0ZUluZm8tPnN0YXJ0X3NlZ25vID4gc2Vnbm8gfHwK KwkJCQkJCXByaXZhdGVJbmZvLT5lbmRfc2Vnbm8gPCBzZWdubykKKwkJCQkJeworCQkJCQkJZnJl ZShmbmFtZSk7CisJCQkJCQlicmVhazsKKwkJCQkJfQorCQkJCX0KKworCQkJCWVudHJ5ID0gQXJj aGl2ZWRXQUxfaW5zZXJ0KHByaXZhdGVJbmZvLT5hcmNoaXZlX3dhbF9odGFiLAorCQkJCQkJCQkJ CSAgIGZuYW1lLCAmZm91bmQpOworCisJCQkJLyoKKwkJCQkgKiBTaG91bGRuJ3QgaGFwcGVuLCBi dXQgaWYgaXQgZG9lcywgc2ltcGx5IGlnbm9yZSB0aGUKKwkJCQkgKiBkdXBsaWNhdGUgV0FMIGZp bGUuCisJCQkJICovCisJCQkJaWYgKGZvdW5kKQorCQkJCXsKKwkJCQkJcGdfbG9nX3dhcm5pbmco Imlnbm9yaW5nIGR1cGxpY2F0ZSBXQUwgXCIlc1wiIGZvdW5kIGluIGFyY2hpdmUgXCIlc1wiIiwK KwkJCQkJCQkJICAgbWVtYmVyLT5wYXRobmFtZSwgcHJpdmF0ZUluZm8tPmFyY2hpdmVfbmFtZSk7 CisJCQkJCWJyZWFrOworCQkJCX0KKworCQkJCWVudHJ5LT5idWYgPSBtYWtlU3RyaW5nSW5mbygp OworCQkJCWVudHJ5LT5yZWFkX2xlbiA9IDA7CisJCQkJcHJpdmF0ZUluZm8tPmN1cl9maWxlID0g ZW50cnk7CisJCQl9CisJCQlicmVhazsKKworCQljYXNlIEFTVFJFQU1FUl9NRU1CRVJfQ09OVEVO VFM6CisJCQlpZiAocHJpdmF0ZUluZm8tPmN1cl9maWxlKQorCQkJeworCQkJCWFwcGVuZEJpbmFy eVN0cmluZ0luZm8ocHJpdmF0ZUluZm8tPmN1cl9maWxlLT5idWYsIGRhdGEsIGxlbik7CisJCQkJ cHJpdmF0ZUluZm8tPmN1cl9maWxlLT5yZWFkX2xlbiArPSBsZW47CisJCQl9CisJCQlicmVhazsK KworCQljYXNlIEFTVFJFQU1FUl9NRU1CRVJfVFJBSUxFUjoKKwkJCXByaXZhdGVJbmZvLT5jdXJf ZmlsZSA9IE5VTEw7CisJCQlicmVhazsKKworCQljYXNlIEFTVFJFQU1FUl9BUkNISVZFX1RSQUlM RVI6CisJCQlicmVhazsKKworCQlkZWZhdWx0OgorCQkJLyogU2hvdWxkbid0IGhhcHBlbi4gKi8K KwkJCXBnX2ZhdGFsKCJ1bmV4cGVjdGVkIHN0YXRlIHdoaWxlIHBhcnNpbmcgdGFyIGZpbGUiKTsK Kwl9Cit9CisKKy8qCisgKiBFbmQtb2Ytc3RyZWFtIHByb2Nlc3NpbmcgZm9yIGFuIGFzdHJlYW1l cl93YWxkdW1wIHN0cmVhbS4KKyAqLworc3RhdGljIHZvaWQKK2FzdHJlYW1lcl93YWxkdW1wX2Zp bmFsaXplKGFzdHJlYW1lciAqc3RyZWFtZXIpCit7CisJQXNzZXJ0KHN0cmVhbWVyLT5iYnNfbmV4 dCA9PSBOVUxMKTsKK30KKworLyoKKyAqIEZyZWUgbWVtb3J5IGFzc29jaWF0ZWQgd2l0aCBhIGFz dHJlYW1lcl93YWxkdW1wIHN0cmVhbS4KKyAqLworc3RhdGljIHZvaWQKK2FzdHJlYW1lcl93YWxk dW1wX2ZyZWUoYXN0cmVhbWVyICpzdHJlYW1lcikKK3sKKwlBc3NlcnQoc3RyZWFtZXItPmJic19u ZXh0ID09IE5VTEwpOworCXBmcmVlKHN0cmVhbWVyKTsKK30KKworLyoKKyAqIFJldHVybnMgdHJ1 ZSBpZiB0aGUgYXJjaGl2ZSBtZW1iZXIgbmFtZSBtYXRjaGVzIHRoZSBXQUwgbmFtaW5nIGZvcm1h dC4gSWYKKyAqIHN1Y2Nlc3NmdWwsIGl0IGFsc28gb3V0cHV0cyB0aGUgV0FMIHNlZ21lbnQgbmFt ZS4KKyAqLworc3RhdGljIGJvb2wKK21lbWJlcl9pc193YWxfZmlsZShhc3RyZWFtZXJfd2FsZHVt cCAqbXlzdHJlYW1lciwgYXN0cmVhbWVyX21lbWJlciAqbWVtYmVyLAorCQkJCSAgIGNoYXIgKipm bmFtZSkKK3sKKwlpbnQJCQlwYXRobGVuOworCWNoYXIJCXBhdGhuYW1lW01BWFBHUEFUSF07CisJ Y2hhcgkgICAqZmlsZW5hbWU7CisKKwkvKiBXZSBhcmUgb25seSBpbnRlcmVzdGVkIGluIG5vcm1h bCBmaWxlcy4gKi8KKwlpZiAobWVtYmVyLT5pc19kaXJlY3RvcnkgfHwgbWVtYmVyLT5pc19saW5r KQorCQlyZXR1cm4gZmFsc2U7CisKKwlpZiAoc3RybGVuKG1lbWJlci0+cGF0aG5hbWUpIDwgWExP R19GTkFNRV9MRU4pCisJCXJldHVybiBmYWxzZTsKKworCS8qCisJICogRm9yIGEgY29ycmVjdCBj b21wYXJpc29uLCB3ZSBtdXN0IHJlbW92ZSBhbnkgJy4nIG9yICcuLicgY29tcG9uZW50cworCSAq IGZyb20gdGhlIG1lbWJlciBwYXRobmFtZS4gU2ltaWxhciB0byBtZW1iZXJfdmVyaWZ5X2hlYWRl cigpLCB3ZSBwcmVwZW5kCisJICogJy4vJyB0byB0aGUgcGF0aCBzbyB0aGF0IGNhbm9uaWNhbGl6 ZV9wYXRoKCkgY2FuIHByb3Blcmx5IHJlc29sdmUgYW5kCisJICogc3RyaXAgdGhlc2UgcmVmZXJl bmNlcyBmcm9tIHRoZSB0YXIgbWVtYmVyIG5hbWUKKwkgKi8KKwlzbnByaW50ZihwYXRobmFtZSwg TUFYUEdQQVRILCAiLi8lcyIsIG1lbWJlci0+cGF0aG5hbWUpOworCWNhbm9uaWNhbGl6ZV9wYXRo KHBhdGhuYW1lKTsKKwlwYXRobGVuID0gc3RybGVuKHBhdGhuYW1lKTsKKworCS8qIFdBTCBmaWxl cyBmcm9tIHRoZSB0b3AtbGV2ZWwgb3IgcGdfd2FsIGRpcmVjdG9yeSB3aWxsIGJlIGRlY29kZWQg Ki8KKwlpZiAocGF0aGxlbiA+IFhMT0dfRk5BTUVfTEVOICYmCisJCXN0cm5jbXAocGF0aG5hbWUs IFhMT0dESVIsIHN0cmxlbihYTE9HRElSKSkgIT0gMCkKKwkJcmV0dXJuIGZhbHNlOworCisJLyog V0FMIGZpbGUgY291bGQgYmUgd2l0aCBmdWxsIHBhdGggKi8KKwlmaWxlbmFtZSA9IHBhdGhuYW1l ICsgKHBhdGhsZW4gLSBYTE9HX0ZOQU1FX0xFTik7CisJaWYgKCFJc1hMb2dGaWxlTmFtZShmaWxl bmFtZSkpCisJCXJldHVybiBmYWxzZTsKKworCSpmbmFtZSA9IHBuc3RyZHVwKGZpbGVuYW1lLCBY TE9HX0ZOQU1FX0xFTik7CisKKwlyZXR1cm4gdHJ1ZTsKK30KKworLyoKKyAqIEhlbHBlciBmdW5j dGlvbiBmb3IgZmlsZW1hcCBoYXNoIHRhYmxlLgorICovCitzdGF0aWMgdWludDMyCitoYXNoX3N0 cmluZ19wb2ludGVyKGNvbnN0IGNoYXIgKnMpCit7CisJdW5zaWduZWQgY2hhciAqc3MgPSAodW5z aWduZWQgY2hhciAqKSBzOworCisJcmV0dXJuIGhhc2hfYnl0ZXMoc3MsIHN0cmxlbihzKSk7Cit9 CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3dhbGR1bXAvbWVzb24uYnVpbGQgYi9zcmMvYmluL3Bn X3dhbGR1bXAvbWVzb24uYnVpbGQKaW5kZXggNjMzYTk4NzRiYjUuLjUyOTZmMjFiODJjIDEwMDY0 NAotLS0gYS9zcmMvYmluL3BnX3dhbGR1bXAvbWVzb24uYnVpbGQKKysrIGIvc3JjL2Jpbi9wZ193 YWxkdW1wL21lc29uLmJ1aWxkCkBAIC0xLDYgKzEsNyBAQAogIyBDb3B5cmlnaHQgKGMpIDIwMjIt MjAyNiwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKIAogcGdfd2FsZHVtcF9z b3VyY2VzID0gZmlsZXMoCisgICdhcmNoaXZlX3dhbGR1bXAuYycsCiAgICdjb21wYXQuYycsCiAg ICdwZ193YWxkdW1wLmMnLAogICAncm1ncmRlc2MuYycsCkBAIC0xOCw3ICsxOSw3IEBAIGVuZGlm CiAKIHBnX3dhbGR1bXAgPSBleGVjdXRhYmxlKCdwZ193YWxkdW1wJywKICAgcGdfd2FsZHVtcF9z b3VyY2VzLAotICBkZXBlbmRlbmNpZXM6IFtmcm9udGVuZF9jb2RlLCBsejQsIHpzdGRdLAorICBk ZXBlbmRlbmNpZXM6IFtmcm9udGVuZF9jb2RlLCBsaWJwcSwgbHo0LCB6c3RkXSwKICAgY19hcmdz OiBbJy1ERlJPTlRFTkQnXSwgIyBuZWVkZWQgZm9yIHhsb2dyZWFkZXIgZXQgYWwKICAga3dhcmdz OiBkZWZhdWx0X2Jpbl9hcmdzLAogKQpAQCAtMjksNiArMzAsNyBAQCB0ZXN0cyArPSB7CiAgICdz ZCc6IG1lc29uLmN1cnJlbnRfc291cmNlX2RpcigpLAogICAnYmQnOiBtZXNvbi5jdXJyZW50X2J1 aWxkX2RpcigpLAogICAndGFwJzogeworICAgICdlbnYnOiB7J1RBUic6IHRhci5mb3VuZCgpID8g dGFyLmZ1bGxfcGF0aCgpIDogJyd9LAogICAgICd0ZXN0cyc6IFsKICAgICAgICd0LzAwMV9iYXNp Yy5wbCcsCiAgICAgICAndC8wMDJfc2F2ZV9mdWxscGFnZS5wbCcsCmRpZmYgLS1naXQgYS9zcmMv YmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5jIGIvc3JjL2Jpbi9wZ193YWxkdW1wL3BnX3dhbGR1 bXAuYwppbmRleCA1ZDMxYjE1ZGJkOC4uOTBmYzEzZjM2MDkgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4v cGdfd2FsZHVtcC9wZ193YWxkdW1wLmMKKysrIGIvc3JjL2Jpbi9wZ193YWxkdW1wL3BnX3dhbGR1 bXAuYwpAQCAtMTc2LDcgKzE3Niw3IEBAIHNwbGl0X3BhdGgoY29uc3QgY2hhciAqcGF0aCwgY2hh ciAqKmRpciwgY2hhciAqKmZuYW1lKQogICoKICAqIHJldHVybiBhIHJlYWQgb25seSBmZAogICov Ci1zdGF0aWMgaW50CitpbnQKIG9wZW5fZmlsZV9pbl9kaXJlY3RvcnkoY29uc3QgY2hhciAqZGly ZWN0b3J5LCBjb25zdCBjaGFyICpmbmFtZSkKIHsKIAlpbnQJCQlmZCA9IC0xOwpAQCAtNDQwLDYg KzQ0MCw4MCBAQCBXQUxEdW1wUmVhZFBhZ2UoWExvZ1JlYWRlclN0YXRlICpzdGF0ZSwgWExvZ1Jl Y1B0ciB0YXJnZXRQYWdlUHRyLCBpbnQgcmVxTGVuLAogCXJldHVybiBjb3VudDsKIH0KIAorLyoK KyAqIHBnX3dhbGR1bXAncyBYTG9nUmVhZGVyUm91dGluZS0+c2VnbWVudF9vcGVuIGNhbGxiYWNr IHRvIHN1cHBvcnQgZHVtcGluZyBXQUwKKyAqIGZpbGVzIGZyb20gdGFyIGFyY2hpdmVzLgorICov CitzdGF0aWMgdm9pZAorVGFyV0FMRHVtcE9wZW5TZWdtZW50KFhMb2dSZWFkZXJTdGF0ZSAqc3Rh dGUsIFhMb2dTZWdObyBuZXh0U2VnTm8sCisJCQkJCSAgVGltZUxpbmVJRCAqdGxpX3ApCit7CisJ LyogTm8gYWN0aW9uIG5lZWRlZCAqLworfQorCisvKgorICogcGdfd2FsZHVtcCdzIFhMb2dSZWFk ZXJSb3V0aW5lLT5zZWdtZW50X2Nsb3NlIGNhbGxiYWNrLgorICovCitzdGF0aWMgdm9pZAorVGFy V0FMRHVtcENsb3NlU2VnbWVudChYTG9nUmVhZGVyU3RhdGUgKnN0YXRlKQoreworCS8qIE5vIGFj dGlvbiBuZWVkZWQgKi8KK30KKworLyoKKyAqIHBnX3dhbGR1bXAncyBYTG9nUmVhZGVyUm91dGlu ZS0+cGFnZV9yZWFkIGNhbGxiYWNrIHRvIHN1cHBvcnQgZHVtcGluZyBXQUwKKyAqIGZpbGVzIGZy b20gdGFyIGFyY2hpdmVzLgorICovCitzdGF0aWMgaW50CitUYXJXQUxEdW1wUmVhZFBhZ2UoWExv Z1JlYWRlclN0YXRlICpzdGF0ZSwgWExvZ1JlY1B0ciB0YXJnZXRQYWdlUHRyLCBpbnQgcmVxTGVu LAorCQkJCSAgIFhMb2dSZWNQdHIgdGFyZ2V0UHRyLCBjaGFyICpyZWFkQnVmZikKK3sKKwlYTG9n RHVtcFByaXZhdGUgKnByaXZhdGUgPSBzdGF0ZS0+cHJpdmF0ZV9kYXRhOworCWludAkJCWNvdW50 ID0gcmVxdWlyZWRfcmVhZF9sZW4ocHJpdmF0ZSwgdGFyZ2V0UGFnZVB0ciwgcmVxTGVuKTsKKwlp bnQJCQlXYWxTZWdTeiA9IHN0YXRlLT5zZWdjeHQud3Nfc2Vnc2l6ZTsKKwlYTG9nU2VnTm8JY3Vy U2VnTm87CisKKwkvKiBCYWlsIG91dCBpZiB0aGUgY291bnQgdG8gYmUgcmVhZCBpcyBub3QgdmFs aWQgKi8KKwlpZiAoY291bnQgPCAwKQorCQlyZXR1cm4gLTE7CisKKwkvKgorCSAqIElmIHRoZSB0 YXJnZXQgcGFnZSBpcyBpbiBhIGRpZmZlcmVudCBzZWdtZW50LCBmcmVlIHRoZSBidWZmZXIgc3Bh Y2UKKwkgKiBvY2N1cGllZCBieSB0aGUgcHJldmlvdXMgc2VnbWVudCBkYXRhLiBTaW5jZSBwZ193 YWxkdW1wIG5ldmVyIHJlcXVlc3RzCisJICogdGhlIHNhbWUgV0FMIGJ5dGVzIHR3aWNlLCBtb3Zp bmcgdG8gYSBuZXcgc2VnbWVudCBpbXBsaWVzIHRoZSBwcmV2aW91cworCSAqIGJ1ZmZlcidzIGRh dGEgYW5kIHRoYXQgc2VnbWVudCB3aWxsIG5vdCBiZSBuZWVkZWQgYWdhaW4uCisJICovCisJY3Vy U2VnTm8gPSBzdGF0ZS0+c2VnLndzX3NlZ25vOworCWlmICghWExCeXRlSW5TZWcodGFyZ2V0UGFn ZVB0ciwgY3VyU2VnTm8sIFdhbFNlZ1N6KSkKKwl7CisJCWNoYXIJCWZuYW1lW01BWEZOQU1FTEVO XTsKKwkJWExvZ1NlZ05vICAgbmV4dFNlZ05vOworCisJCS8qCisJCSAqIENhbGN1bGF0ZSB0aGUg bmV4dCBXQUwgc2VnbWVudCB0byBiZSBkZWNvZGVkIGZyb20gdGhlIGdpdmVuIHBhZ2UKKwkJICog cG9pbnRlcgorCQkgKi8KKwkJWExCeXRlVG9TZWcodGFyZ2V0UGFnZVB0ciwgbmV4dFNlZ05vLCBX YWxTZWdTeik7CisJCXN0YXRlLT5zZWcud3NfdGxpID0gcHJpdmF0ZS0+dGltZWxpbmU7CisJCXN0 YXRlLT5zZWcud3Nfc2Vnbm8gPSBuZXh0U2VnTm87CisKKwkJLyoKKwkJICogSWYgaW4gcHJlLXJl YWRpbmcgbW9kZSAocHJpb3IgdG8gYWN0dWFsIGRlY29kaW5nKSwgZG8gbm90IGRlbGV0ZSBhbnkK KwkJICogZW50cmllcyB0aGF0IG1pZ2h0IGJlIHJlcXVlc3RlZCBhZ2FpbiBvbmNlIHRoZSBkZWNv ZGluZyBsb29wIHN0YXJ0cy4KKwkJICogRm9yIG1vcmUgZGV0YWlscywgc2VlIHRoZSBjb21tZW50 cyBpbiByZWFkX2FyY2hpdmVfd2FsX3BhZ2UoKS4KKwkJICovCisJCWlmIChwcml2YXRlLT5kZWNv ZGluZ19zdGFydGVkICYmIGN1clNlZ05vIDwgbmV4dFNlZ05vKQorCQl7CisJCQlYTG9nRmlsZU5h bWUoZm5hbWUsIHN0YXRlLT5zZWcud3NfdGxpLCBjdXJTZWdObywgV2FsU2VnU3opOworCQkJZnJl ZV9hcmNoaXZlX3dhbF9lbnRyeShmbmFtZSwgcHJpdmF0ZSk7CisJCX0KKwl9CisKKwkvKiBSZWFk IHRoZSBXQUwgcGFnZSBmcm9tIHRoZSBhcmNoaXZlIHN0cmVhbWVyICovCisJcmV0dXJuIHJlYWRf YXJjaGl2ZV93YWxfcGFnZShwcml2YXRlLCB0YXJnZXRQYWdlUHRyLCBjb3VudCwgcmVhZEJ1ZmYs CisJCQkJCQkJCSBXYWxTZWdTeik7Cit9CisKIC8qCiAgKiBCb29sZWFuIHRvIHJldHVybiB3aGV0 aGVyIHRoZSBnaXZlbiBXQUwgcmVjb3JkIG1hdGNoZXMgYSBzcGVjaWZpYyByZWxhdGlvbgogICog YW5kIG9wdGlvbmFsbHkgYmxvY2suCkBAIC03NzcsOCArODUxLDggQEAgdXNhZ2Uodm9pZCkKIAlw cmludGYoXygiICAtRiwgLS1mb3JrPUZPUksgICAgICAgIG9ubHkgc2hvdyByZWNvcmRzIHRoYXQg bW9kaWZ5IGJsb2NrcyBpbiBmb3JrIEZPUks7XG4iCiAJCQkgIiAgICAgICAgICAgICAgICAgICAg ICAgICB2YWxpZCBuYW1lcyBhcmUgbWFpbiwgZnNtLCB2bSwgaW5pdFxuIikpOwogCXByaW50Zihf KCIgIC1uLCAtLWxpbWl0PU4gICAgICAgICAgbnVtYmVyIG9mIHJlY29yZHMgdG8gZGlzcGxheVxu IikpOwotCXByaW50ZihfKCIgIC1wLCAtLXBhdGg9UEFUSCAgICAgICAgZGlyZWN0b3J5IGluIHdo aWNoIHRvIGZpbmQgV0FMIHNlZ21lbnQgZmlsZXMgb3IgYVxuIgotCQkJICIgICAgICAgICAgICAg ICAgICAgICAgICAgZGlyZWN0b3J5IHdpdGggYSAuL3BnX3dhbCB0aGF0IGNvbnRhaW5zIHN1Y2gg ZmlsZXNcbiIKKwlwcmludGYoXygiICAtcCwgLS1wYXRoPVBBVEggICAgICAgIHRhciBhcmNoaXZl IG9yIGEgZGlyZWN0b3J5IGluIHdoaWNoIHRvIGZpbmQgV0FMIHNlZ21lbnQgZmlsZXMgb3JcbiIK KwkJCSAiICAgICAgICAgICAgICAgICAgICAgICAgIGEgZGlyZWN0b3J5IHdpdGggYSAuL3BnX3dh bCB0aGF0IGNvbnRhaW5zIHN1Y2ggZmlsZXNcbiIKIAkJCSAiICAgICAgICAgICAgICAgICAgICAg ICAgIChkZWZhdWx0OiBjdXJyZW50IGRpcmVjdG9yeSwgLi9wZ193YWwsICRQR0RBVEEvcGdfd2Fs KVxuIikpOwogCXByaW50ZihfKCIgIC1xLCAtLXF1aWV0ICAgICAgICAgICAgZG8gbm90IHByaW50 IGFueSBvdXRwdXQsIGV4Y2VwdCBmb3IgZXJyb3JzXG4iKSk7CiAJcHJpbnRmKF8oIiAgLXIsIC0t cm1ncj1STUdSICAgICAgICBvbmx5IHNob3cgcmVjb3JkcyBnZW5lcmF0ZWQgYnkgcmVzb3VyY2Ug bWFuYWdlciBSTUdSO1xuIgpAQCAtODEwLDcgKzg4NCw5IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIg Kiphcmd2KQogCVhMb2dSZWNvcmQgKnJlY29yZDsKIAlYTG9nUmVjUHRyCWZpcnN0X3JlY29yZDsK IAljaGFyCSAgICp3YWxkaXIgPSBOVUxMOworCWNoYXIJICAgKndhbHBhdGggPSBOVUxMOwogCWNo YXIJICAgKmVycm9ybXNnOworCXBnX2NvbXByZXNzX2FsZ29yaXRobSBjb21wcmVzc2lvbjsKIAog CXN0YXRpYyBzdHJ1Y3Qgb3B0aW9uIGxvbmdfb3B0aW9uc1tdID0gewogCQl7ImJrcC1kZXRhaWxz Iiwgbm9fYXJndW1lbnQsIE5VTEwsICdiJ30sCkBAIC04NjgsNiArOTQ0LDEwIEBAIG1haW4oaW50 IGFyZ2MsIGNoYXIgKiphcmd2KQogCXByaXZhdGUuc3RhcnRwdHIgPSBJbnZhbGlkWExvZ1JlY1B0 cjsKIAlwcml2YXRlLmVuZHB0ciA9IEludmFsaWRYTG9nUmVjUHRyOwogCXByaXZhdGUuZW5kcHRy X3JlYWNoZWQgPSBmYWxzZTsKKwlwcml2YXRlLmRlY29kaW5nX3N0YXJ0ZWQgPSBmYWxzZTsKKwlw cml2YXRlLmFyY2hpdmVfbmFtZSA9IE5VTEw7CisJcHJpdmF0ZS5zdGFydF9zZWdubyA9IDA7CisJ cHJpdmF0ZS5lbmRfc2Vnbm8gPSBVSU5UNjRfTUFYOwogCiAJY29uZmlnLnF1aWV0ID0gZmFsc2U7 CiAJY29uZmlnLmJrcF9kZXRhaWxzID0gZmFsc2U7CkBAIC05NDMsNyArMTAyMyw3IEBAIG1haW4o aW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQkJCX0KIAkJCQlicmVhazsKIAkJCWNhc2UgJ3AnOgot CQkJCXdhbGRpciA9IHBnX3N0cmR1cChvcHRhcmcpOworCQkJCXdhbHBhdGggPSBwZ19zdHJkdXAo b3B0YXJnKTsKIAkJCQlicmVhazsKIAkJCWNhc2UgJ3EnOgogCQkJCWNvbmZpZy5xdWlldCA9IHRy dWU7CkBAIC0xMTA3LDEwICsxMTg3LDE5IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQog CQlnb3RvIGJhZF9hcmd1bWVudDsKIAl9CiAKLQlpZiAod2FsZGlyICE9IE5VTEwpCisJaWYgKHdh bHBhdGggIT0gTlVMTCkKIAl7CisJCS8qIHZhbGlkYXRlIHBhdGggcG9pbnRzIHRvIHRhciBhcmNo aXZlICovCisJCWlmIChwYXJzZV90YXJfY29tcHJlc3NfYWxnb3JpdGhtKHdhbHBhdGgsICZjb21w cmVzc2lvbikpCisJCXsKKwkJCWNoYXIJICAgKmZuYW1lID0gTlVMTDsKKworCQkJc3BsaXRfcGF0 aCh3YWxwYXRoLCAmd2FsZGlyLCAmZm5hbWUpOworCisJCQlwcml2YXRlLmFyY2hpdmVfbmFtZSA9 IGZuYW1lOworCQl9CiAJCS8qIHZhbGlkYXRlIHBhdGggcG9pbnRzIHRvIGRpcmVjdG9yeSAqLwot CQlpZiAoIXZlcmlmeV9kaXJlY3Rvcnkod2FsZGlyKSkKKwkJZWxzZSBpZiAoIXZlcmlmeV9kaXJl Y3Rvcnkod2FscGF0aCkpCiAJCXsKIAkJCXBnX2xvZ19lcnJvcigiY291bGQgbm90IG9wZW4gZGly ZWN0b3J5IFwiJXNcIjogJW0iLCB3YWxkaXIpOwogCQkJZ290byBiYWRfYXJndW1lbnQ7CkBAIC0x MTI4LDYgKzEyMTcsMTcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCWludAkJCWZk OwogCQlYTG9nU2VnTm8Jc2Vnbm87CiAKKwkJLyoKKwkJICogSWYgYSB0YXIgYXJjaGl2ZSBpcyBw YXNzZWQgdXNpbmcgdGhlIC0tcGF0aCBvcHRpb24sIGFsbCBvdGhlcgorCQkgKiBhcmd1bWVudHMg YmVjb21lIHVubmVjZXNzYXJ5LgorCQkgKi8KKwkJaWYgKHByaXZhdGUuYXJjaGl2ZV9uYW1lKQor CQl7CisJCQlwZ19sb2dfZXJyb3IoInVubmVjZXNzYXJ5IGNvbW1hbmQtbGluZSBhcmd1bWVudHMg c3BlY2lmaWVkIHdpdGggdGFyIGFyY2hpdmUgKGZpcnN0IGlzIFwiJXNcIikiLAorCQkJCQkJIGFy Z3Zbb3B0aW5kXSk7CisJCQlnb3RvIGJhZF9hcmd1bWVudDsKKwkJfQorCiAJCXNwbGl0X3BhdGgo YXJndltvcHRpbmRdLCAmZGlyZWN0b3J5LCAmZm5hbWUpOwogCiAJCWlmICh3YWxkaXIgPT0gTlVM TCAmJiBkaXJlY3RvcnkgIT0gTlVMTCkKQEAgLTExMzgsNjkgKzEyMzgsNzYgQEAgbWFpbihpbnQg YXJnYywgY2hhciAqKmFyZ3YpCiAJCQkJcGdfZmF0YWwoImNvdWxkIG5vdCBvcGVuIGRpcmVjdG9y eSBcIiVzXCI6ICVtIiwgd2FsZGlyKTsKIAkJfQogCi0JCXdhbGRpciA9IGlkZW50aWZ5X3Rhcmdl dF9kaXJlY3Rvcnkod2FsZGlyLCBmbmFtZSwgJnByaXZhdGUuc2Vnc2l6ZSk7Ci0JCWZkID0gb3Bl bl9maWxlX2luX2RpcmVjdG9yeSh3YWxkaXIsIGZuYW1lKTsKLQkJaWYgKGZkIDwgMCkKLQkJCXBn X2ZhdGFsKCJjb3VsZCBub3Qgb3BlbiBmaWxlIFwiJXNcIiIsIGZuYW1lKTsKLQkJY2xvc2UoZmQp OwotCi0JCS8qIHBhcnNlIHBvc2l0aW9uIGZyb20gZmlsZSAqLwotCQlYTG9nRnJvbUZpbGVOYW1l KGZuYW1lLCAmcHJpdmF0ZS50aW1lbGluZSwgJnNlZ25vLCBwcml2YXRlLnNlZ3NpemUpOwotCi0J CWlmICghWExvZ1JlY1B0cklzVmFsaWQocHJpdmF0ZS5zdGFydHB0cikpCi0JCQlYTG9nU2VnTm9P ZmZzZXRUb1JlY1B0cihzZWdubywgMCwgcHJpdmF0ZS5zZWdzaXplLCBwcml2YXRlLnN0YXJ0cHRy KTsKLQkJZWxzZSBpZiAoIVhMQnl0ZUluU2VnKHByaXZhdGUuc3RhcnRwdHIsIHNlZ25vLCBwcml2 YXRlLnNlZ3NpemUpKQorCQlpZiAoZm5hbWUgIT0gTlVMTCAmJiBwYXJzZV90YXJfY29tcHJlc3Nf YWxnb3JpdGhtKGZuYW1lLCAmY29tcHJlc3Npb24pKQogCQl7Ci0JCQlwZ19sb2dfZXJyb3IoInN0 YXJ0IFdBTCBsb2NhdGlvbiAlWC8lMDhYIGlzIG5vdCBpbnNpZGUgZmlsZSBcIiVzXCIiLAotCQkJ CQkJIExTTl9GT1JNQVRfQVJHUyhwcml2YXRlLnN0YXJ0cHRyKSwKLQkJCQkJCSBmbmFtZSk7Ci0J CQlnb3RvIGJhZF9hcmd1bWVudDsKKwkJCXByaXZhdGUuYXJjaGl2ZV9uYW1lID0gZm5hbWU7CiAJ CX0KLQotCQkvKiBubyBzZWNvbmQgZmlsZSBzcGVjaWZpZWQsIHNldCBlbmQgcG9zaXRpb24gKi8K LQkJaWYgKCEob3B0aW5kICsgMSA8IGFyZ2MpICYmICFYTG9nUmVjUHRySXNWYWxpZChwcml2YXRl LmVuZHB0cikpCi0JCQlYTG9nU2VnTm9PZmZzZXRUb1JlY1B0cihzZWdubyArIDEsIDAsIHByaXZh dGUuc2Vnc2l6ZSwgcHJpdmF0ZS5lbmRwdHIpOwotCi0JCS8qIHBhcnNlIEVORFNFRyBpZiBwYXNz ZWQgKi8KLQkJaWYgKG9wdGluZCArIDEgPCBhcmdjKQorCQllbHNlCiAJCXsKLQkJCVhMb2dTZWdO bwllbmRzZWdubzsKLQotCQkJLyogaWdub3JlIGRpcmVjdG9yeSwgYWxyZWFkeSBoYXZlIHRoYXQg Ki8KLQkJCXNwbGl0X3BhdGgoYXJndltvcHRpbmQgKyAxXSwgJmRpcmVjdG9yeSwgJmZuYW1lKTsK LQorCQkJd2FsZGlyID0gaWRlbnRpZnlfdGFyZ2V0X2RpcmVjdG9yeSh3YWxkaXIsIGZuYW1lLCAm cHJpdmF0ZS5zZWdzaXplKTsKIAkJCWZkID0gb3Blbl9maWxlX2luX2RpcmVjdG9yeSh3YWxkaXIs IGZuYW1lKTsKIAkJCWlmIChmZCA8IDApCiAJCQkJcGdfZmF0YWwoImNvdWxkIG5vdCBvcGVuIGZp bGUgXCIlc1wiIiwgZm5hbWUpOwogCQkJY2xvc2UoZmQpOwogCiAJCQkvKiBwYXJzZSBwb3NpdGlv biBmcm9tIGZpbGUgKi8KLQkJCVhMb2dGcm9tRmlsZU5hbWUoZm5hbWUsICZwcml2YXRlLnRpbWVs aW5lLCAmZW5kc2Vnbm8sIHByaXZhdGUuc2Vnc2l6ZSk7CisJCQlYTG9nRnJvbUZpbGVOYW1lKGZu YW1lLCAmcHJpdmF0ZS50aW1lbGluZSwgJnNlZ25vLCBwcml2YXRlLnNlZ3NpemUpOwogCi0JCQlp ZiAoZW5kc2Vnbm8gPCBzZWdubykKLQkJCQlwZ19mYXRhbCgiRU5EU0VHICVzIGlzIGJlZm9yZSBT VEFSVFNFRyAlcyIsCi0JCQkJCQkgYXJndltvcHRpbmQgKyAxXSwgYXJndltvcHRpbmRdKTsKKwkJ CWlmICghWExvZ1JlY1B0cklzVmFsaWQocHJpdmF0ZS5zdGFydHB0cikpCisJCQkJWExvZ1NlZ05v T2Zmc2V0VG9SZWNQdHIoc2Vnbm8sIDAsIHByaXZhdGUuc2Vnc2l6ZSwgcHJpdmF0ZS5zdGFydHB0 cik7CisJCQllbHNlIGlmICghWExCeXRlSW5TZWcocHJpdmF0ZS5zdGFydHB0ciwgc2Vnbm8sIHBy aXZhdGUuc2Vnc2l6ZSkpCisJCQl7CisJCQkJcGdfbG9nX2Vycm9yKCJzdGFydCBXQUwgbG9jYXRp b24gJVgvJTA4WCBpcyBub3QgaW5zaWRlIGZpbGUgXCIlc1wiIiwKKwkJCQkJCQkgTFNOX0ZPUk1B VF9BUkdTKHByaXZhdGUuc3RhcnRwdHIpLAorCQkJCQkJCSBmbmFtZSk7CisJCQkJZ290byBiYWRf YXJndW1lbnQ7CisJCQl9CiAKLQkJCWlmICghWExvZ1JlY1B0cklzVmFsaWQocHJpdmF0ZS5lbmRw dHIpKQotCQkJCVhMb2dTZWdOb09mZnNldFRvUmVjUHRyKGVuZHNlZ25vICsgMSwgMCwgcHJpdmF0 ZS5zZWdzaXplLAotCQkJCQkJCQkJCXByaXZhdGUuZW5kcHRyKTsKKwkJCS8qIG5vIHNlY29uZCBm aWxlIHNwZWNpZmllZCwgc2V0IGVuZCBwb3NpdGlvbiAqLworCQkJaWYgKCEob3B0aW5kICsgMSA8 IGFyZ2MpICYmICFYTG9nUmVjUHRySXNWYWxpZChwcml2YXRlLmVuZHB0cikpCisJCQkJWExvZ1Nl Z05vT2Zmc2V0VG9SZWNQdHIoc2Vnbm8gKyAxLCAwLCBwcml2YXRlLnNlZ3NpemUsIHByaXZhdGUu ZW5kcHRyKTsKIAotCQkJLyogc2V0IHNlZ25vIHRvIGVuZHNlZ25vIGZvciBjaGVjayBvZiAtLWVu ZCAqLwotCQkJc2Vnbm8gPSBlbmRzZWdubzsKLQkJfQorCQkJLyogcGFyc2UgRU5EU0VHIGlmIHBh c3NlZCAqLworCQkJaWYgKG9wdGluZCArIDEgPCBhcmdjKQorCQkJeworCQkJCVhMb2dTZWdObwll bmRzZWdubzsKIAorCQkJCS8qIGlnbm9yZSBkaXJlY3RvcnksIGFscmVhZHkgaGF2ZSB0aGF0ICov CisJCQkJc3BsaXRfcGF0aChhcmd2W29wdGluZCArIDFdLCAmZGlyZWN0b3J5LCAmZm5hbWUpOwog Ci0JCWlmICghWExCeXRlSW5TZWcocHJpdmF0ZS5lbmRwdHIsIHNlZ25vLCBwcml2YXRlLnNlZ3Np emUpICYmCi0JCQlwcml2YXRlLmVuZHB0ciAhPSAoc2Vnbm8gKyAxKSAqIHByaXZhdGUuc2Vnc2l6 ZSkKLQkJewotCQkJcGdfbG9nX2Vycm9yKCJlbmQgV0FMIGxvY2F0aW9uICVYLyUwOFggaXMgbm90 IGluc2lkZSBmaWxlIFwiJXNcIiIsCi0JCQkJCQkgTFNOX0ZPUk1BVF9BUkdTKHByaXZhdGUuZW5k cHRyKSwKLQkJCQkJCSBhcmd2W2FyZ2MgLSAxXSk7Ci0JCQlnb3RvIGJhZF9hcmd1bWVudDsKKwkJ CQlmZCA9IG9wZW5fZmlsZV9pbl9kaXJlY3Rvcnkod2FsZGlyLCBmbmFtZSk7CisJCQkJaWYgKGZk IDwgMCkKKwkJCQkJcGdfZmF0YWwoImNvdWxkIG5vdCBvcGVuIGZpbGUgXCIlc1wiIiwgZm5hbWUp OworCQkJCWNsb3NlKGZkKTsKKworCQkJCS8qIHBhcnNlIHBvc2l0aW9uIGZyb20gZmlsZSAqLwor CQkJCVhMb2dGcm9tRmlsZU5hbWUoZm5hbWUsICZwcml2YXRlLnRpbWVsaW5lLCAmZW5kc2Vnbm8s IHByaXZhdGUuc2Vnc2l6ZSk7CisKKwkJCQlpZiAoZW5kc2Vnbm8gPCBzZWdubykKKwkJCQkJcGdf ZmF0YWwoIkVORFNFRyAlcyBpcyBiZWZvcmUgU1RBUlRTRUcgJXMiLAorCQkJCQkJCSBhcmd2W29w dGluZCArIDFdLCBhcmd2W29wdGluZF0pOworCisJCQkJaWYgKCFYTG9nUmVjUHRySXNWYWxpZChw cml2YXRlLmVuZHB0cikpCisJCQkJCVhMb2dTZWdOb09mZnNldFRvUmVjUHRyKGVuZHNlZ25vICsg MSwgMCwgcHJpdmF0ZS5zZWdzaXplLAorCQkJCQkJCQkJCQlwcml2YXRlLmVuZHB0cik7CisKKwkJ CQkvKiBzZXQgc2Vnbm8gdG8gZW5kc2Vnbm8gZm9yIGNoZWNrIG9mIC0tZW5kICovCisJCQkJc2Vn bm8gPSBlbmRzZWdubzsKKwkJCX0KKworCisJCQlpZiAoIVhMQnl0ZUluU2VnKHByaXZhdGUuZW5k cHRyLCBzZWdubywgcHJpdmF0ZS5zZWdzaXplKSAmJgorCQkJCXByaXZhdGUuZW5kcHRyICE9IChz ZWdubyArIDEpICogcHJpdmF0ZS5zZWdzaXplKQorCQkJeworCQkJCXBnX2xvZ19lcnJvcigiZW5k IFdBTCBsb2NhdGlvbiAlWC8lMDhYIGlzIG5vdCBpbnNpZGUgZmlsZSBcIiVzXCIiLAorCQkJCQkJ CSBMU05fRk9STUFUX0FSR1MocHJpdmF0ZS5lbmRwdHIpLAorCQkJCQkJCSBhcmd2W2FyZ2MgLSAx XSk7CisJCQkJZ290byBiYWRfYXJndW1lbnQ7CisJCQl9CiAJCX0KIAl9Ci0JZWxzZQotCQl3YWxk aXIgPSBpZGVudGlmeV90YXJnZXRfZGlyZWN0b3J5KHdhbGRpciwgTlVMTCwgJnByaXZhdGUuc2Vn c2l6ZSk7CisJZWxzZSBpZiAoIXByaXZhdGUuYXJjaGl2ZV9uYW1lKQorCQl3YWxkaXIgPSBpZGVu dGlmeV90YXJnZXRfZGlyZWN0b3J5KHdhbHBhdGgsIE5VTEwsICZwcml2YXRlLnNlZ3NpemUpOwog CiAJLyogd2UgZG9uJ3Qga25vdyB3aGF0IHRvIHByaW50ICovCiAJaWYgKCFYTG9nUmVjUHRySXNW YWxpZChwcml2YXRlLnN0YXJ0cHRyKSkKQEAgLTEyMTIsMTIgKzEzMTksMzYgQEAgbWFpbihpbnQg YXJnYywgY2hhciAqKmFyZ3YpCiAJLyogZG9uZSB3aXRoIGFyZ3VtZW50IHBhcnNpbmcsIGRvIHRo ZSBhY3R1YWwgd29yayAqLwogCiAJLyogd2UgaGF2ZSBldmVyeXRoaW5nIHdlIG5lZWQsIHN0YXJ0 IHJlYWRpbmcgKi8KLQl4bG9ncmVhZGVyX3N0YXRlID0KLQkJWExvZ1JlYWRlckFsbG9jYXRlKHBy aXZhdGUuc2Vnc2l6ZSwgd2FsZGlyLAotCQkJCQkJICAgWExfUk9VVElORSgucGFnZV9yZWFkID0g V0FMRHVtcFJlYWRQYWdlLAotCQkJCQkJCQkJICAuc2VnbWVudF9vcGVuID0gV0FMRHVtcE9wZW5T ZWdtZW50LAotCQkJCQkJCQkJICAuc2VnbWVudF9jbG9zZSA9IFdBTER1bXBDbG9zZVNlZ21lbnQp LAotCQkJCQkJICAgJnByaXZhdGUpOworCWlmIChwcml2YXRlLmFyY2hpdmVfbmFtZSkKKwl7CisJ CS8qCisJCSAqIEEgTlVMTCBXQUwgZGlyZWN0b3J5IGluZGljYXRlcyB0aGF0IHRoZSBhcmNoaXZl IGZpbGUgaXMgbG9jYXRlZCBpbgorCQkgKiB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBv ZiB0aGUgcGdfd2FsZHVtcCBleGVjdXRpb24KKwkJICovCisJCWlmICh3YWxkaXIgPT0gTlVMTCkK KwkJCXdhbGRpciA9IHBnX3N0cmR1cCgiLiIpOworCisJCS8qIFNldCB1cCBmb3IgcmVhZGluZyB0 YXIgZmlsZSAqLworCQlpbml0X2FyY2hpdmVfcmVhZGVyKCZwcml2YXRlLCB3YWxkaXIsICZwcml2 YXRlLnNlZ3NpemUsIGNvbXByZXNzaW9uKTsKKworCQkvKiBSb3V0aW5lIHRvIGRlY29kZSBXQUwg ZmlsZXMgaW4gdGFyIGFyY2hpdmUgKi8KKwkJeGxvZ3JlYWRlcl9zdGF0ZSA9CisJCQlYTG9nUmVh ZGVyQWxsb2NhdGUocHJpdmF0ZS5zZWdzaXplLCB3YWxkaXIsCisJCQkJCQkJICAgWExfUk9VVElO RSgucGFnZV9yZWFkID0gVGFyV0FMRHVtcFJlYWRQYWdlLAorCQkJCQkJCQkJCSAgLnNlZ21lbnRf b3BlbiA9IFRhcldBTER1bXBPcGVuU2VnbWVudCwKKwkJCQkJCQkJCQkgIC5zZWdtZW50X2Nsb3Nl ID0gVGFyV0FMRHVtcENsb3NlU2VnbWVudCksCisJCQkJCQkJICAgJnByaXZhdGUpOworCX0KKwll bHNlCisJeworCQl4bG9ncmVhZGVyX3N0YXRlID0KKwkJCVhMb2dSZWFkZXJBbGxvY2F0ZShwcml2 YXRlLnNlZ3NpemUsIHdhbGRpciwKKwkJCQkJCQkgICBYTF9ST1VUSU5FKC5wYWdlX3JlYWQgPSBX QUxEdW1wUmVhZFBhZ2UsCisJCQkJCQkJCQkJICAuc2VnbWVudF9vcGVuID0gV0FMRHVtcE9wZW5T ZWdtZW50LAorCQkJCQkJCQkJCSAgLnNlZ21lbnRfY2xvc2UgPSBXQUxEdW1wQ2xvc2VTZWdtZW50 KSwKKwkJCQkJCQkgICAmcHJpdmF0ZSk7CisJfQorCiAJaWYgKCF4bG9ncmVhZGVyX3N0YXRlKQog CQlwZ19mYXRhbCgib3V0IG9mIG1lbW9yeSB3aGlsZSBhbGxvY2F0aW5nIGEgV0FMIHJlYWRpbmcg cHJvY2Vzc29yIik7CiAKQEAgLTEyNDUsNiArMTM3Niw5IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIg Kiphcmd2KQogCWlmIChjb25maWcuc3RhdHMgPT0gdHJ1ZSAmJiAhY29uZmlnLnF1aWV0KQogCQlz dGF0cy5zdGFydHB0ciA9IGZpcnN0X3JlY29yZDsKIAorCS8qIEZsYWcgaW5kaWNhdGluZyB0aGF0 IHRoZSBkZWNvZGluZyBsb29wIGhhcyBiZWVuIGVudGVyZWQgKi8KKwlwcml2YXRlLmRlY29kaW5n X3N0YXJ0ZWQgPSB0cnVlOworCiAJZm9yICg7OykKIAl7CiAJCWlmICh0aW1lX3RvX3N0b3ApCkBA IC0xMzI2LDYgKzE0NjAsOSBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAogCVhMb2dS ZWFkZXJGcmVlKHhsb2dyZWFkZXJfc3RhdGUpOwogCisJaWYgKHByaXZhdGUuYXJjaGl2ZV9uYW1l KQorCQlmcmVlX2FyY2hpdmVfcmVhZGVyKCZwcml2YXRlKTsKKwogCXJldHVybiBFWElUX1NVQ0NF U1M7CiAKIGJhZF9hcmd1bWVudDoKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfd2FsZHVtcC9wZ193 YWxkdW1wLmggYi9zcmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5oCmluZGV4IDRmMWIyYWI2 NjhiLi45MGZlOTY4NDBlMiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ193YWxkdW1wL3BnX3dhbGR1 bXAuaAorKysgYi9zcmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5oCkBAIC0xMiw2ICsxMiwx MSBAQAogI2RlZmluZSBQR19XQUxEVU1QX0gKIAogI2luY2x1ZGUgImFjY2Vzcy94bG9nZGVmcy5o IgorI2luY2x1ZGUgImZlX3V0aWxzL2FzdHJlYW1lci5oIgorCisvKiBGb3J3YXJkIGRlY2xhcmF0 aW9uICovCitzdHJ1Y3QgQXJjaGl2ZWRXQUxGaWxlOworc3RydWN0IEFyY2hpdmVkV0FMX2hhc2g7 CiAKIC8qIENvbnRhaW5zIHRoZSBuZWNlc3NhcnkgaW5mb3JtYXRpb24gdG8gZHJpdmUgV0FMIGRl Y29kaW5nICovCiB0eXBlZGVmIHN0cnVjdCBYTG9nRHVtcFByaXZhdGUKQEAgLTIxLDYgKzI2LDQ0 IEBAIHR5cGVkZWYgc3RydWN0IFhMb2dEdW1wUHJpdmF0ZQogCVhMb2dSZWNQdHIJc3RhcnRwdHI7 CiAJWExvZ1JlY1B0cgllbmRwdHI7CiAJYm9vbAkJZW5kcHRyX3JlYWNoZWQ7CisJYm9vbAkJZGVj b2Rpbmdfc3RhcnRlZDsKKworCS8qIEZpZWxkcyByZXF1aXJlZCB0byByZWFkIFdBTCBmcm9tIGFy Y2hpdmUgKi8KKwljaGFyCSAgICphcmNoaXZlX25hbWU7CS8qIFRhciBhcmNoaXZlIG5hbWUgKi8K KwlpbnQJCQlhcmNoaXZlX2ZkOwkJLyogRmlsZSBkZXNjcmlwdG9yIGZvciB0aGUgb3BlbiB0YXIg ZmlsZSAqLworCisJYXN0cmVhbWVyICAqYXJjaGl2ZV9zdHJlYW1lcjsKKworCS8qIFdoYXQgdGhl IGFyY2hpdmUgc3RyZWFtZXIgaXMgY3VycmVudGx5IHJlYWRpbmcgKi8KKwlzdHJ1Y3QgQXJjaGl2 ZWRXQUxGaWxlICpjdXJfZmlsZTsKKworCS8qCisJICogSGFzaCB0YWJsZSBvZiBhbGwgV0FMIGZp bGVzIHRoYXQgdGhlIGFyY2hpdmUgc3RyZWFtIGhhcyByZWFkLCBpbmNsdWRpbmcKKwkgKiB0aGUg b25lIGN1cnJlbnRseSBpbiBwcm9ncmVzcy4KKwkgKi8KKwlzdHJ1Y3QgQXJjaGl2ZWRXQUxfaGFz aCAqYXJjaGl2ZV93YWxfaHRhYjsKKworCS8qCisJICogQWx0aG91Z2ggdGhlc2UgdmFsdWVzIGNh biBiZSBlYXNpbHkgZGVyaXZlZCBmcm9tIHN0YXJ0cHRyIGFuZCBlbmRwdHIsCisJICogZG9pbmcg c28gcmVwZWF0ZWRseSBmb3IgZWFjaCBhcmNoaXZlZCBtZW1iZXIgd291bGQgYmUgaW5lZmZpY2ll bnQsIGFzCisJICogaXQgd291bGQgaW52b2x2ZSByZWNhbGN1bGF0aW5nIGFuZCBmaWx0ZXJpbmcg b3V0IGlycmVsZXZhbnQgV0FMCisJICogc2VnbWVudHMuCisJICovCisJWExvZ1NlZ05vCXN0YXJ0 X3NlZ25vOworCVhMb2dTZWdObwllbmRfc2Vnbm87CiB9IFhMb2dEdW1wUHJpdmF0ZTsKIAorZXh0 ZXJuIGludAlvcGVuX2ZpbGVfaW5fZGlyZWN0b3J5KGNvbnN0IGNoYXIgKmRpcmVjdG9yeSwgY29u c3QgY2hhciAqZm5hbWUpOworCitleHRlcm4gdm9pZCBpbml0X2FyY2hpdmVfcmVhZGVyKFhMb2dE dW1wUHJpdmF0ZSAqcHJpdmF0ZUluZm8sCisJCQkJCQkJCWNvbnN0IGNoYXIgKndhbGRpciwgaW50 ICpXYWxTZWdTeiwKKwkJCQkJCQkJcGdfY29tcHJlc3NfYWxnb3JpdGhtIGNvbXByZXNzaW9uKTsK K2V4dGVybiB2b2lkIGZyZWVfYXJjaGl2ZV9yZWFkZXIoWExvZ0R1bXBQcml2YXRlICpwcml2YXRl SW5mbyk7CitleHRlcm4gaW50CXJlYWRfYXJjaGl2ZV93YWxfcGFnZShYTG9nRHVtcFByaXZhdGUg KnByaXZhdGVJbmZvLAorCQkJCQkJCQkgIFhMb2dSZWNQdHIgdGFyZ2V0UGFnZVB0ciwKKwkJCQkJ CQkJICBTaXplIGNvdW50LCBjaGFyICpyZWFkQnVmZiwKKwkJCQkJCQkJICBpbnQgV2FsU2VnU3op OworZXh0ZXJuIHZvaWQgZnJlZV9hcmNoaXZlX3dhbF9lbnRyeShjb25zdCBjaGFyICpmbmFtZSwK KwkJCQkJCQkJICAgWExvZ0R1bXBQcml2YXRlICpwcml2YXRlSW5mbyk7CisKICNlbmRpZgkJCQkJ CQkvKiBlbmQgb2YgUEdfV0FMRFVNUF9IICovCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3dhbGR1 bXAvdC8wMDFfYmFzaWMucGwgYi9zcmMvYmluL3BnX3dhbGR1bXAvdC8wMDFfYmFzaWMucGwKaW5k ZXggZjEyYmE1MmNiZmMuLjlhYjc0NTdlOWUyIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3dhbGR1 bXAvdC8wMDFfYmFzaWMucGwKKysrIGIvc3JjL2Jpbi9wZ193YWxkdW1wL3QvMDAxX2Jhc2ljLnBs CkBAIC0zLDEwICszLDEzIEBACiAKIHVzZSBzdHJpY3Q7CiB1c2Ugd2FybmluZ3MgRkFUQUwgPT4g J2FsbCc7Cit1c2UgQ3dkOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9z dGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsKIAorbXkgJHRhciA9ICRFTlZ7 VEFSfTsKKwogcHJvZ3JhbV9oZWxwX29rKCdwZ193YWxkdW1wJyk7CiBwcm9ncmFtX3ZlcnNpb25f b2soJ3BnX3dhbGR1bXAnKTsKIHByb2dyYW1fb3B0aW9uc19oYW5kbGluZ19vaygncGdfd2FsZHVt cCcpOwpAQCAtMTYyLDYgKzE2NSw0MiBAQCBDUkVBVEUgVEFCTEVTUEFDRSB0czEgTE9DQVRJT04g JyR0YmxzcGNfcGF0aCc7CiBEUk9QIFRBQkxFU1BBQ0UgdHMxOwogfSk7CiAKKyMgVGVzdDogRGVj b2RlIGEgY29udGludWF0aW9uIHJlY29yZCAoY29udHJlY29yZCkgdGhhdCBzcGFucyBtdWx0aXBs ZSBXQUwKKyMgc2VnbWVudHMuCisjCisjIE5vdyBjb25zdW1lIGFsbCByZW1haW5pbmcgcm9vbSBp biB0aGUgY3VycmVudCBXQUwgc2VnbWVudCwgbGVhdmluZworIyBzcGFjZSBlbm91Z2ggb25seSBm b3IgdGhlIHN0YXJ0IG9mIGEgbGFyZ2lzaCByZWNvcmQuCiskbm9kZS0+c2FmZV9wc3FsKAorCSdw b3N0Z3JlcycsIHF7CitETyAkJAorREVDTEFSRQorICAgIHdhbF9zZWdzaXplIGludCA6PSBzZXR0 aW5nOjppbnQgRlJPTSBwZ19zZXR0aW5ncyBXSEVSRSBuYW1lID0gJ3dhbF9zZWdtZW50X3NpemUn OworICAgIHJlbWFpbiBpbnQ7CisgICAgaXRlcnMgIGludCA6PSAwOworQkVHSU4KKyAgICBMT09Q CisgICAgICAgIElOU0VSVCBpbnRvIHQxKGIpCisgICAgICAgIHNlbGVjdCByZXBlYXQoZW5jb2Rl KHNoYTI1NihnOjp0ZXh0OjpieXRlYSksICdoZXgnKSwgKHJhbmRvbSgpICogMTUgKyAxKTo6aW50 KQorICAgICAgICBmcm9tIGdlbmVyYXRlX3NlcmllcygxLCAxMCkgZzsKKworICAgICAgICByZW1h aW4gOj0gd2FsX3NlZ3NpemUgLSAocGdfY3VycmVudF93YWxfaW5zZXJ0X2xzbigpIC0gJzAvMCcp ICUgd2FsX3NlZ3NpemU7CisgICAgICAgIElGIHJlbWFpbiA8IDIgKiBzZXR0aW5nOjppbnQgZnJv bSBwZ19zZXR0aW5ncyB3aGVyZSBuYW1lID0gJ2Jsb2NrX3NpemUnIFRIRU4KKyAgICAgICAgICAg IFJBSVNFIGxvZyAnZXhpdGluZyBhZnRlciAlIGl0ZXJhdGlvbnMsICUgYnl0ZXMgdG8gZW5kIG9m IFdBTCBzZWdtZW50JywgaXRlcnMsIHJlbWFpbjsKKyAgICAgICAgICAgIEVYSVQ7CisgICAgICAg IEVORCBJRjsKKyAgICAgICAgaXRlcnMgOj0gaXRlcnMgKyAxOworICAgIEVORCBMT09QOworRU5E CiskJDsKK30pOworCitteSAkY29udHJlY29yZF9sc24gPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsCisJJ1NFTEVDVCBwZ19jdXJyZW50X3dhbF9pbnNlcnRfbHNuKCknKTsKKyMgR2VuZXJh dGUgY29udHJlY29yZCByZWNvcmQKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwlxcXtT RUxFQ1QgcGdfbG9naWNhbF9lbWl0X21lc3NhZ2UodHJ1ZSwgJ3Rlc3QgMDI2JywgcmVwZWF0KCd4 eXp4eicsIDEyMzQ1NikpfQorKTsKKwogbXkgKCRlbmRfbHNuLCAkZW5kX3dhbGZpbGUpID0gc3Bs aXQgL1x8LywKICAgJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLAogCXF7U0VMRUNUIHBnX2N1 cnJlbnRfd2FsX2luc2VydF9sc24oKSwgcGdfd2FsZmlsZV9uYW1lKHBnX2N1cnJlbnRfd2FsX2lu c2VydF9sc24oKSl9CkBAIC0yNTksMTEgKzI5OCw1MCBAQCBzdWIgdGVzdF9wZ193YWxkdW1wCiAJ cmV0dXJuIEBsaW5lczsKIH0KIAotbXkgQGxpbmVzOworIyBDcmVhdGUgYSB0YXIgYXJjaGl2ZSwg c29ydGluZyB0aGUgZmlsZSBvcmRlcgorc3ViIGdlbmVyYXRlX2FyY2hpdmUKK3sKKwlteSAoJGFy Y2hpdmUsICRkaXJlY3RvcnksICRjb21wcmVzc2lvbl9mbGFncykgPSBAXzsKKworCW15IEBmaWxl czsKKwlvcGVuZGlyIG15ICRkaCwgJGRpcmVjdG9yeSBvciBkaWUgIm9wZW5kaXI6ICQhIjsKKwl3 aGlsZSAobXkgJGVudHJ5ID0gcmVhZGRpciAkZGgpIHsKKwkJIyBTa2lwICcuJyBhbmQgJy4uJwor CQluZXh0IGlmICRlbnRyeSBlcSAnLicgfHwgJGVudHJ5IGVxICcuLic7CisJCXB1c2ggQGZpbGVz LCAkZW50cnk7CisJfQorCWNsb3NlZGlyICRkaDsKKworCUBmaWxlcyA9IHNvcnQgQGZpbGVzOwor CisJIyBtb3ZlIGludG8gdGhlIFdBTCBkaXJlY3RvcnkgYmVmb3JlIGFyY2hpdmluZyBmaWxlcwor CW15ICRjd2QgPSBnZXRjd2Q7CisJY2hkaXIoJGRpcmVjdG9yeSkgfHwgZGllICJjaGRpcjogJCEi OworCWNvbW1hbmRfb2soWyR0YXIsICRjb21wcmVzc2lvbl9mbGFncywgJGFyY2hpdmUsIEBmaWxl c10pOworCWNoZGlyKCRjd2QpIHx8IGRpZSAiY2hkaXI6ICQhIjsKK30KKworbXkgJHRtcF9kaXIg PSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGVtcGRpcl9zaG9ydCgpOwogCiBteSBAc2NlbmFy aW9zID0gKAogCXsKLQkJJ3BhdGgnID0+ICRub2RlLT5kYXRhX2RpcgorCQkncGF0aCcgPT4gJG5v ZGUtPmRhdGFfZGlyLAorCQknaXNfYXJjaGl2ZScgPT4gMCwKKwkJJ2VuYWJsZWQnID0+IDEKKwl9 LAorCXsKKwkJJ3BhdGgnID0+ICIkdG1wX2Rpci9wZ193YWwudGFyIiwKKwkJJ2NvbXByZXNzaW9u X21ldGhvZCcgPT4gJ25vbmUnLAorCQknY29tcHJlc3Npb25fZmxhZ3MnID0+ICctY2YnLAorCQkn aXNfYXJjaGl2ZScgPT4gMSwKKwkJJ2VuYWJsZWQnID0+IDEKKwl9LAorCXsKKwkJJ3BhdGgnID0+ ICIkdG1wX2Rpci9wZ193YWwudGFyLmd6IiwKKwkJJ2NvbXByZXNzaW9uX21ldGhvZCcgPT4gJ2d6 aXAnLAorCQknY29tcHJlc3Npb25fZmxhZ3MnID0+ICctY3pmJywKKwkJJ2lzX2FyY2hpdmUnID0+ IDEsCisJCSdlbmFibGVkJyA9PiBjaGVja19wZ19jb25maWcoIiNkZWZpbmUgSEFWRV9MSUJaIDEi KQogCX0pOwogCiBmb3IgbXkgJHNjZW5hcmlvIChAc2NlbmFyaW9zKQpAQCAtMjcyLDYgKzM1MCwx OSBAQCBmb3IgbXkgJHNjZW5hcmlvIChAc2NlbmFyaW9zKQogCiAJU0tJUDoKIAl7CisJCXNraXAg InRhciBjb21tYW5kIGlzIG5vdCBhdmFpbGFibGUiLCAzCisJCSAgaWYgIWRlZmluZWQgJHRhcjsK KwkJc2tpcCAiJHNjZW5hcmlvLT57J2NvbXByZXNzaW9uX21ldGhvZCd9IGNvbXByZXNzaW9uIG5v dCBzdXBwb3J0ZWQgYnkgdGhpcyBidWlsZCIsIDMKKwkJICBpZiAhJHNjZW5hcmlvLT57J2VuYWJs ZWQnfSAmJiAkc2NlbmFyaW8tPnsnaXNfYXJjaGl2ZSd9OworCisJCSAgIyBjcmVhdGUgcGdfd2Fs IGFyY2hpdmUKKwkJICBpZiAoJHNjZW5hcmlvLT57J2lzX2FyY2hpdmUnfSkKKwkJICB7CisJCQkg IGdlbmVyYXRlX2FyY2hpdmUoJHBhdGgsCisJCQkJICAkbm9kZS0+ZGF0YV9kaXIgLiAnL3BnX3dh bCcsCisJCQkJICAkc2NlbmFyaW8tPnsnY29tcHJlc3Npb25fZmxhZ3MnfSk7CisJCSAgfQorCiAJ CWNvbW1hbmRfZmFpbHNfbGlrZSgKIAkJCVsgJ3BnX3dhbGR1bXAnLCAnLS1wYXRoJyA9PiAkcGF0 aCBdLAogCQkJcXIvZXJyb3I6IG5vIHN0YXJ0IFdBTCBsb2NhdGlvbiBnaXZlbi8sCkBAIC0zMDUs OSArMzk2LDE0IEBAIGZvciBteSAkc2NlbmFyaW8gKEBzY2VuYXJpb3MpCiAKIAkJdGVzdF9wZ193 YWxkdW1wX3NraXBfYnl0ZXMoJHBhdGgsICRzdGFydF9sc24sICRlbmRfbHNuKTsKIAotCQlAbGlu ZXMgPSB0ZXN0X3BnX3dhbGR1bXAoJHBhdGgsICRzdGFydF9sc24sICRlbmRfbHNuKTsKKwkJbXkg QGxpbmVzID0gdGVzdF9wZ193YWxkdW1wKCRwYXRoLCAkc3RhcnRfbHNuLCAkZW5kX2xzbik7CiAJ CWlzKGdyZXAoIS9ecm1ncjogXHcvLCBAbGluZXMpLCAwLCAnYWxsIG91dHB1dCBsaW5lcyBhcmUg cm1nciBsaW5lcycpOwogCisJCUBsaW5lcyA9IHRlc3RfcGdfd2FsZHVtcCgkcGF0aCwgJGNvbnRy ZWNvcmRfbHNuLCAkZW5kX2xzbik7CisJCWlzKGdyZXAoIS9ecm1ncjogXHcvLCBAbGluZXMpLCAw LCAnYWxsIG91dHB1dCBsaW5lcyBhcmUgcm1nciBsaW5lcycpOworCisJCXRlc3RfcGdfd2FsZHVt cF9za2lwX2J5dGVzKCRwYXRoLCAkY29udHJlY29yZF9sc24sICRlbmRfbHNuKTsKKwogCQlAbGlu ZXMgPSB0ZXN0X3BnX3dhbGR1bXAoJHBhdGgsICRzdGFydF9sc24sICRlbmRfbHNuLCAnLS1saW1p dCcgPT4gNik7CiAJCWlzKEBsaW5lcywgNiwgJ2xpbWl0IG9wdGlvbiBvYnNlcnZlZCcpOwogCkBA IC0zMzcsNiArNDMzLDkgQEAgZm9yIG15ICRzY2VuYXJpbyAoQHNjZW5hcmlvcykKIAkJCSctLXJl bGF0aW9uJyA9PiAiJGRlZmF1bHRfdHNfb2lkLyRwb3N0Z3Jlc19kYl9vaWQvJHJlbF9pMWFfb2lk IiwKIAkJCSctLWJsb2NrJyA9PiAxKTsKIAkJaXMoZ3JlcCghL1xiYmxrIDFcYi8sIEBsaW5lcyks IDAsICdvbmx5IGxpbmVzIGZvciBzZWxlY3RlZCBibG9jaycpOworCisJCSMgQ2xlYW51cC4KKwkJ dW5saW5rICRwYXRoIGlmICRzY2VuYXJpby0+eydpc19hcmNoaXZlJ307CiAJfQogfQogCmRpZmYg LS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2lu ZGVudC90eXBlZGVmcy5saXN0CmluZGV4IDI0MTk0NTczNGVjLi4xOGFiMmU4NDhiNiAxMDA2NDQK LS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3Bn aW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTE0NSw2ICsxNDUsOCBAQCBBcmNoaXZlT3B0cwogQXJj aGl2ZVNodXRkb3duQ0IKIEFyY2hpdmVTdGFydHVwQ0IKIEFyY2hpdmVTdHJlYW1TdGF0ZQorQXJj aGl2ZWRXQUxGaWxlCitBcmNoaXZlZFdBTF9oYXNoCiBBcmNoaXZlck91dHB1dAogQXJjaGl2ZXJT dGFnZQogQXJyYXlBbmFseXplRXh0cmFEYXRhCkBAIC0zNTExLDYgKzM1MTMsNyBAQCBhc3RyZWFt ZXJfcmVjb3ZlcnlfaW5qZWN0b3IKIGFzdHJlYW1lcl90YXJfYXJjaGl2ZXIKIGFzdHJlYW1lcl90 YXJfcGFyc2VyCiBhc3RyZWFtZXJfdmVyaWZ5Cithc3RyZWFtZXJfd2FsZHVtcAogYXN0cmVhbWVy X3pzdGRfZnJhbWUKIGF1dGhfcGFzc3dvcmRfaG9va190eXAKIGF1dG92YWNfdGFibGUKLS0gCjIu NDcuMQoK --0000000000004f3241064b13b9d4 Content-Type: application/x-patch; name="v13-0007-pg_waldump-Remove-the-restriction-on-the-order-o.patch" Content-Disposition: attachment; filename="v13-0007-pg_waldump-Remove-the-restriction-on-the-order-o.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mlrohsno6 RnJvbSBjMzZiYTA1MDdjYWFmMDRiNDM3N2NjODNjNGU2M2JlMTg3OTQzMzY3IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFR1 ZSwgMjcgSmFuIDIwMjYgMTU6Mzg6MzQgKzA1MzAKU3ViamVjdDogW1BBVENIIHYxMyAwNy8xMF0g cGdfd2FsZHVtcDogUmVtb3ZlIHRoZSByZXN0cmljdGlvbiBvbiB0aGUgb3JkZXIgb2YKIGFyY2hp dmVkIFdBTCBmaWxlcy4KCldpdGggcHJldmlvdXMgcGF0Y2gsIHBnX3dhbGR1bXAgd291bGQgc3Rv cCBkZWNvZGluZyBpZiBXQUwgZmlsZXMgd2VyZQpub3QgaW4gdGhlIHJlcXVpcmVkIHNlcXVlbmNl LiBXaXRoIHRoaXMgcGF0Y2gsIGRlY29kaW5nIHdpbGwgbm93CmNvbnRpbnVlLiAgQW55IFdBTCBm aWxlIHRoYXQgaXMgb3V0IG9mIG9yZGVyIHdpbGwgYmUgd3JpdHRlbiB0byBhCnRlbXBvcmFyeSBs b2NhdGlvbiwgZnJvbSB3aGljaCBpdCB3aWxsIGJlIHJlYWQgbGF0ZXIuIE9uY2UgYSB0ZW1wb3Jh cnkKZmlsZSBoYXMgYmVlbiByZWFkLCBpdCB3aWxsIGJlIHJlbW92ZWQuCi0tLQogZG9jL3NyYy9z Z21sL3JlZi9wZ193YWxkdW1wLnNnbWwgICAgIHwgICA4ICstCiBzcmMvYmluL3BnX3dhbGR1bXAv YXJjaGl2ZV93YWxkdW1wLmMgfCAxNzEgKysrKysrKysrKysrKysrKysrKysrKysrKy0tCiBzcmMv YmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5jICAgICAgfCAgMzIgKysrKy0KIHNyYy9iaW4vcGdf d2FsZHVtcC9wZ193YWxkdW1wLmggICAgICB8ICAgMyArCiBzcmMvYmluL3BnX3dhbGR1bXAvdC8w MDFfYmFzaWMucGwgICAgfCAgIDMgKy0KIDUgZmlsZXMgY2hhbmdlZCwgMTk3IGluc2VydGlvbnMo KyksIDIwIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYvcGdfd2Fs ZHVtcC5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9wZ193YWxkdW1wLnNnbWwKaW5kZXggZDAwNGJi MGY2N2UuLjI3YWRmNzc3NTVjIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL3BnX3dhbGR1 bXAuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVmL3BnX3dhbGR1bXAuc2dtbApAQCAtMTQ5LDgg KzE0OSwxMiBAQCBQb3N0Z3JlU1FMIGRvY3VtZW50YXRpb24KICAgICAgICAgb2YgPGVudmFyPlBH REFUQTwvZW52YXI+LgogICAgICAgIDwvcGFyYT4KICAgICAgICA8cGFyYT4KLSAgICAgICAgSWYg YSB0YXIgYXJjaGl2ZSBpcyBwcm92aWRlZCwgaXRzIFdBTCBzZWdtZW50IGZpbGVzIG11c3QgYmUg aW4KLSAgICAgICAgc2VxdWVudGlhbCBvcmRlcjsgb3RoZXJ3aXNlLCBhbiBlcnJvciB3aWxsIGJl IHJlcG9ydGVkLgorICAgICAgICBJZiBhIHRhciBhcmNoaXZlIGlzIHByb3ZpZGVkIGFuZCBpdHMg V0FMIHNlZ21lbnQgZmlsZXMgYXJlIG5vdCBpbgorICAgICAgICBzZXF1ZW50aWFsIG9yZGVyLCB0 aG9zZSBmaWxlcyB3aWxsIGJlIHdyaXR0ZW4gdG8gYSB0ZW1wb3JhcnkgZGlyZWN0b3J5CisgICAg ICAgIG5hbWVkIHN0YXJ0aW5nIHdpdGggPGZpbGVuYW1lPndhbGR1bXBfdG1wPC9maWxlbmFtZT4u IFRoaXMgZGlyZWN0b3J5IHdpbGwgYmUKKyAgICAgICAgY3JlYXRlZCBpbnNpZGUgdGhlIGRpcmVj dG9yeSBzcGVjaWZpZWQgYnkgdGhlIDxlbnZhcj5UTVBESVI8L2VudmFyPgorICAgICAgICBlbnZp cm9ubWVudCB2YXJpYWJsZSBpZiBpdCBpcyBzZXQ7IG90aGVyd2lzZSwgaXQgd2lsbCBiZSBjcmVh dGVkIHdpdGhpbgorICAgICAgICB0aGUgc2FtZSBkaXJlY3RvcnkgYXMgdGhlIHRhciBhcmNoaXZl LgogICAgICAgIDwvcGFyYT4KICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5 PgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ193YWxkdW1wL2FyY2hpdmVfd2FsZHVtcC5jIGIvc3Jj L2Jpbi9wZ193YWxkdW1wL2FyY2hpdmVfd2FsZHVtcC5jCmluZGV4IGVjYzAyMmE4MWEyLi44NGZh ZTg3NDkyZSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ193YWxkdW1wL2FyY2hpdmVfd2FsZHVtcC5j CisrKyBiL3NyYy9iaW4vcGdfd2FsZHVtcC9hcmNoaXZlX3dhbGR1bXAuYwpAQCAtMTcsNiArMTcs NyBAQAogI2luY2x1ZGUgPHVuaXN0ZC5oPgogCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dfaW50ZXJu YWwuaCIKKyNpbmNsdWRlICJjb21tb24vZmlsZV9wZXJtLmgiCiAjaW5jbHVkZSAiY29tbW9uL2hh c2hmbi5oIgogI2luY2x1ZGUgImNvbW1vbi9sb2dnaW5nLmgiCiAjaW5jbHVkZSAiZmVfdXRpbHMv c2ltcGxlX2xpc3QuaCIKQEAgLTI3LDYgKzI4LDkgQEAKICAqLwogI2RlZmluZSBSRUFEX0NIVU5L X1NJWkUJCQkJKDEyOCAqIDEwMjQpCiAKKy8qIFRlbXBvcmFyeSBleHBvcnRlZCBXQUwgZmlsZSBk aXJlY3RvcnkgKi8KK2NoYXIJICAgKlRtcFdhbFNlZ0RpciA9IE5VTEw7CisKIC8qCiAgKiBDaGVj ayBpZiB0aGUgc3RhcnQgc2VnbWVudCBudW1iZXIgaXMgemVybzsgdGhpcyBpbmRpY2F0ZXMgYSBy ZXF1ZXN0IHRvIHJlYWQKICAqIGFueSBXQUwgZmlsZS4KQEAgLTU3LDYgKzYxLDggQEAgdHlwZWRl ZiBzdHJ1Y3QgQXJjaGl2ZWRXQUxGaWxlCiAJY29uc3QgY2hhciAqZm5hbWU7CQkJLyogaGFzaCBr ZXk6IFdBTCBzZWdtZW50IG5hbWUgKi8KIAogCVN0cmluZ0luZm8JYnVmOwkJCS8qIGhvbGRzIFdB TCBieXRlcyByZWFkIGZyb20gYXJjaGl2ZSAqLworCWJvb2wJCXNwaWxsZWQ7CQkvKiB0cnVlIGlm IHRoZSBXQUwgZGF0YSB3YXMgc3BpbGxlZCB0byBhCisJCQkJCQkJCSAqIHRlbXBvcmFyeSBmaWxl ICovCiAKIAlpbnQJCQlyZWFkX2xlbjsJCS8qIHRvdGFsIGJ5dGVzIG9mIGEgV0FMIHJlYWQgZnJv bSBhcmNoaXZlICovCiB9IEFyY2hpdmVkV0FMRmlsZTsKQEAgLTg0LDYgKzkwLDExIEBAIHN0YXRp YyBBcmNoaXZlZFdBTEZpbGUgKmdldF9hcmNoaXZlX3dhbF9lbnRyeShjb25zdCBjaGFyICpmbmFt ZSwKIAkJCQkJCQkJCQkJICBYTG9nRHVtcFByaXZhdGUgKnByaXZhdGVJbmZvLAogCQkJCQkJCQkJ CQkgIGludCBXYWxTZWdTeik7CiBzdGF0aWMgaW50CXJlYWRfYXJjaGl2ZV9maWxlKFhMb2dEdW1w UHJpdmF0ZSAqcHJpdmF0ZUluZm8sIFNpemUgY291bnQpOworc3RhdGljIHZvaWQgc2V0dXBfdG1w d2FsX2Rpcihjb25zdCBjaGFyICp3YWxkaXIpOworc3RhdGljIHZvaWQgY2xlYW51cF90bXB3YWxf ZGlyX2F0ZXhpdCh2b2lkKTsKKworc3RhdGljIEZJTEUgKnByZXBhcmVfdG1wX3dyaXRlKGNvbnN0 IGNoYXIgKmZuYW1lKTsKK3N0YXRpYyB2b2lkIHBlcmZvcm1fdG1wX3dyaXRlKGNvbnN0IGNoYXIg KmZuYW1lLCBTdHJpbmdJbmZvIGJ1ZiwgRklMRSAqZmlsZSk7CiAKIHN0YXRpYyBhc3RyZWFtZXIg KmFzdHJlYW1lcl93YWxkdW1wX25ldyhYTG9nRHVtcFByaXZhdGUgKnByaXZhdGVJbmZvKTsKIHN0 YXRpYyB2b2lkIGFzdHJlYW1lcl93YWxkdW1wX2NvbnRlbnQoYXN0cmVhbWVyICpzdHJlYW1lciwK QEAgLTEwNiw3ICsxMTcsOSBAQCBzdGF0aWMgY29uc3QgYXN0cmVhbWVyX29wcyBhc3RyZWFtZXJf d2FsZHVtcF9vcHMgPSB7CiAvKgogICogSW5pdGlhbGl6ZXMgdGhlIHRhciBhcmNoaXZlIHJlYWRl ciwgY3JlYXRlcyBhIGhhc2ggdGFibGUgZm9yIFdBTCBlbnRyaWVzLAogICogY2hlY2tzIGZvciBl eGlzdGluZyB2YWxpZCBXQUwgc2VnbWVudHMgaW4gdGhlIGFyY2hpdmUgZmlsZSBhbmQgcmV0cmll dmVzIHRoZQotICogc2VnbWVudCBzaXplLCBhbmQgc2V0cyB1cCBmaWx0ZXJzIGZvciByZWxldmFu dCBlbnRyaWVzLgorICogc2VnbWVudCBzaXplLCBhbmQgc2V0cyB1cCBmaWx0ZXJzIGZvciByZWxl dmFudCBlbnRyaWVzLiBJdCBhbHNvIGNvbmZpZ3VyZXMgYQorICogdGVtcG9yYXJ5IGRpcmVjdG9y eSBmb3Igb3V0LW9mLW9yZGVyIFdBTCBkYXRhIGFuZCByZWdpc3RlcnMgYW4gZXhpdCBjYWxsYmFj aworICogdG8gY2xlYW4gdXAgdGVtcG9yYXJ5IGZpbGVzLgogICovCiB2b2lkCiBpbml0X2FyY2hp dmVfcmVhZGVyKFhMb2dEdW1wUHJpdmF0ZSAqcHJpdmF0ZUluZm8sIGNvbnN0IGNoYXIgKndhbGRp ciwKQEAgLTE5OSw2ICsyMTIsMTMgQEAgaW5pdF9hcmNoaXZlX3JlYWRlcihYTG9nRHVtcFByaXZh dGUgKnByaXZhdGVJbmZvLCBjb25zdCBjaGFyICp3YWxkaXIsCiAJCXByaXZhdGVJbmZvLT5zdGFy dF9zZWdubyA+IHNlZ25vIHx8CiAJCXByaXZhdGVJbmZvLT5lbmRfc2Vnbm8gPCBzZWdubykKIAkJ ZnJlZV9hcmNoaXZlX3dhbF9lbnRyeShlbnRyeS0+Zm5hbWUsIHByaXZhdGVJbmZvKTsKKworCS8q CisJICogU2V0dXAgdGVtcG9yYXJ5IGRpcmVjdG9yeSB0byBzdG9yZSBXQUwgc2VnbWVudHMgYW5k IHNldCB1cCBhbiBleGl0CisJICogY2FsbGJhY2sgdG8gcmVtb3ZlIGl0IHVwb24gY29tcGxldGlv bi4KKwkgKi8KKwlzZXR1cF90bXB3YWxfZGlyKHdhbGRpcik7CisJYXRleGl0KGNsZWFudXBfdG1w d2FsX2Rpcl9hdGV4aXQpOwogfQogCiAvKgpAQCAtMzY1LDYgKzM4NSwxNyBAQCBmcmVlX2FyY2hp dmVfd2FsX2VudHJ5KGNvbnN0IGNoYXIgKmZuYW1lLCBYTG9nRHVtcFByaXZhdGUgKnByaXZhdGVJ bmZvKQogCWRlc3Ryb3lTdHJpbmdJbmZvKGVudHJ5LT5idWYpOwogCWVudHJ5LT5idWYgPSBOVUxM OwogCisJLyogUmVtb3ZlIHRlbXBvcmFyeSBmaWxlIGlmIGFueSAqLworCWlmIChlbnRyeS0+c3Bp bGxlZCkKKwl7CisJCWNoYXIJCWZwYXRoW01BWFBHUEFUSF07CisKKwkJc25wcmludGYoZnBhdGgs IE1BWFBHUEFUSCwgIiVzLyVzIiwgVG1wV2FsU2VnRGlyLCBmbmFtZSk7CisKKwkJaWYgKHVubGlu ayhmcGF0aCkgPT0gMCkKKwkJCXBnX2xvZ19kZWJ1ZygicmVtb3ZlZCBmaWxlIFwiJXNcIiIsIGZw YXRoKTsKKwl9CisKIAkvKiBTZXQgY3VyX2ZpbGUgdG8gTlVMTCBpZiBpdCBtYXRjaGVzIHRoZSBl bnRyeSBiZWluZyBpZ25vcmVkICovCiAJaWYgKHByaXZhdGVJbmZvLT5jdXJfZmlsZSA9PSBlbnRy eSkKIAkJcHJpdmF0ZUluZm8tPmN1cl9maWxlID0gTlVMTDsKQEAgLTM3NiwxMiArNDA3LDE2IEBA IGZyZWVfYXJjaGl2ZV93YWxfZW50cnkoY29uc3QgY2hhciAqZm5hbWUsIFhMb2dEdW1wUHJpdmF0 ZSAqcHJpdmF0ZUluZm8pCiAgKiBSZXR1cm5zIHRoZSBhcmNoaXZlZCBXQUwgZW50cnkgZnJvbSB0 aGUgaGFzaCB0YWJsZSBpZiBpdCBleGlzdHMuICBPdGhlcndpc2UsCiAgKiBpdCBpbnZva2VzIHRo ZSByb3V0aW5lIHRvIHJlYWQgdGhlIGFyY2hpdmVkIGZpbGUsIHdoaWNoIHRoZW4gcG9wdWxhdGVz IHRoZQogICogZW50cnkgaW4gdGhlIGhhc2ggdGFibGUgaWYgdGhhdCBXQUwgZXhpc3RzIGluIHRo ZSBhcmNoaXZlLgorICogSWYgdGhlIGFyY2hpdmUgc3RyZWFtZXIgaGFwcGVucyB0byBiZSByZWFk aW5nIGEKKyAqIFdBTCBmcm9tIGFyY2hpdmUgZmlsZSB0aGF0IGlzIG5vdCBjdXJyZW50bHkgbmVl ZGVkLCB0aGF0IFdBTCBkYXRhIGlzIHdyaXR0ZW4KKyAqIHRvIGEgdGVtcG9yYXJ5IGZpbGUuCiAg Ki8KIHN0YXRpYyBBcmNoaXZlZFdBTEZpbGUgKgogZ2V0X2FyY2hpdmVfd2FsX2VudHJ5KGNvbnN0 IGNoYXIgKmZuYW1lLCBYTG9nRHVtcFByaXZhdGUgKnByaXZhdGVJbmZvLAogCQkJCQkgIGludCBX YWxTZWdTeikKIHsKIAlBcmNoaXZlZFdBTEZpbGUgKmVudHJ5ID0gTlVMTDsKKwlGSUxFCSAgICp3 cml0ZV9mcCA9IE5VTEw7CiAKIAkvKiBTZWFyY2ggaGFzaCB0YWJsZSAqLwogCWVudHJ5ID0gQXJj aGl2ZWRXQUxfbG9va3VwKHByaXZhdGVJbmZvLT5hcmNoaXZlX3dhbF9odGFiLCBmbmFtZSk7CkBA IC0zOTUsMjggKzQzMCw1OSBAQCBnZXRfYXJjaGl2ZV93YWxfZW50cnkoY29uc3QgY2hhciAqZm5h bWUsIFhMb2dEdW1wUHJpdmF0ZSAqcHJpdmF0ZUluZm8sCiAJICovCiAJd2hpbGUgKDEpCiAJewor CQkvKgorCQkgKiBUaGUgV0FMIGZpbGUgZW50cnkgY3VycmVudGx5IGJlaW5nIHByb2Nlc3NlZCBt YXkgY2hhbmdlIGR1cmluZworCQkgKiBhcmNoaXZlIHN0cmVhbWVyIGV4ZWN1dGlvbi4gVGhlcmVm b3JlLCBtYWludGFpbiBhIGxvY2FsIHZhcmlhYmxlIHRvCisJCSAqIHJlZmVyZW5jZSB0aGUgcHJl dmlvdXMgZW50cnksIGVuc3VyaW5nIHRoYXQgYW55IHJlbWFpbmluZyBkYXRhIGluCisJCSAqIGl0 cyBidWZmZXIgaXMgc3VjY2Vzc2Z1bGx5IGZsdXNoZWQgdG8gdGhlIHRlbXBvcmFyeSBmaWxlIGJl Zm9yZQorCQkgKiBzd2l0Y2hpbmcgdG8gdGhlIG5leHQgV0FMIGVudHJ5LgorCQkgKi8KKwkJZW50 cnkgPSBwcml2YXRlSW5mby0+Y3VyX2ZpbGU7CisKIAkJLyogRmV0Y2ggbW9yZSBkYXRhICovCi0J CWlmIChyZWFkX2FyY2hpdmVfZmlsZShwcml2YXRlSW5mbywgUkVBRF9DSFVOS19TSVpFKSA9PSAw KQotCQkJYnJlYWs7CQkJCS8qIGFyY2hpdmUgZmlsZSBlbmRlZCAqLworCQlpZiAoZW50cnkgPT0g TlVMTCB8fCBlbnRyeS0+YnVmLT5sZW4gPT0gMCkKKwkJeworCQkJaWYgKHJlYWRfYXJjaGl2ZV9m aWxlKHByaXZhdGVJbmZvLCBSRUFEX0NIVU5LX1NJWkUpID09IDApCisJCQkJYnJlYWs7CQkJLyog YXJjaGl2ZSBmaWxlIGVuZGVkICovCisJCX0KIAogCQkvKgogCQkgKiBBcmNoaXZlZCBzdHJlYW1l ciBpcyByZWFkaW5nIGEgbm9uLVdBTCBmaWxlIG9yIGFuIGlycmVsZXZhbnQgV0FMCiAJCSAqIGZp bGUuCiAJCSAqLwotCQlpZiAocHJpdmF0ZUluZm8tPmN1cl9maWxlID09IE5VTEwpCisJCWlmIChl bnRyeSA9PSBOVUxMKQogCQkJY29udGludWU7CiAKLQkJZW50cnkgPSBwcml2YXRlSW5mby0+Y3Vy X2ZpbGU7Ci0KIAkJLyogRm91bmQgdGhlIHJlcXVpcmVkIGVudHJ5ICovCiAJCWlmIChzdHJjbXAo Zm5hbWUsIGVudHJ5LT5mbmFtZSkgPT0gMCkKIAkJCXJldHVybiBlbnRyeTsKIAotCQkvKiBXQUwg c2VnbWVudHMgbXVzdCBiZSBhcmNoaXZlZCBpbiBvcmRlciAqLwotCQlwZ19sb2dfZXJyb3IoIldB TCBmaWxlcyBhcmUgbm90IGFyY2hpdmVkIGluIHNlcXVlbnRpYWwgb3JkZXIiKTsKLQkJcGdfbG9n X2Vycm9yX2RldGFpbCgiRXhwZWN0aW5nIHNlZ21lbnQgXCIlc1wiIGJ1dCBmb3VuZCBcIiVzXCIu IiwKLQkJCQkJCQlmbmFtZSwgZW50cnktPmZuYW1lKTsKLQkJZXhpdCgxKTsKKwkJLyoKKwkJICog QXJjaGl2ZSBzdHJlYW1lciBpcyBjdXJyZW50bHkgcmVhZGluZyBhIGZpbGUgdGhhdCBpc24ndCB0 aGUgb25lCisJCSAqIGFza2VkIGZvciwgYnV0IGl0J3MgcmVxdWlyZWQgaW4gdGhlIGZ1dHVyZS4g SXQgc2hvdWxkIGJlIHdyaXR0ZW4gdG8KKwkJICogYSB0ZW1wb3JhcnkgbG9jYXRpb24gZm9yIHJl dHJpZXZhbCB3aGVuIG5lZWRlZC4KKwkJICovCisKKwkJLyogQ3JlYXRlIGEgdGVtcG9yYXJ5IGZp bGUgaWYgb25lIGRvZXMgbm90IGFscmVhZHkgZXhpc3QgKi8KKwkJaWYgKCFlbnRyeS0+c3BpbGxl ZCkKKwkJeworCQkJd3JpdGVfZnAgPSBwcmVwYXJlX3RtcF93cml0ZShlbnRyeS0+Zm5hbWUpOwor CQkJZW50cnktPnNwaWxsZWQgPSB0cnVlOworCQl9CisKKwkJLyogRmx1c2ggZGF0YSBmcm9tIHRo ZSBidWZmZXIgdG8gdGhlIGZpbGUgKi8KKwkJcGVyZm9ybV90bXBfd3JpdGUoZW50cnktPmZuYW1l LCBlbnRyeS0+YnVmLCB3cml0ZV9mcCk7CisJCXJlc2V0U3RyaW5nSW5mbyhlbnRyeS0+YnVmKTsK KworCQkvKgorCQkgKiBUaGUgY2hhbmdlIGluIHRoZSBjdXJyZW50IHNlZ21lbnQgZW50cnkgaW5k aWNhdGVzIHRoYXQgdGhlIHJlYWRpbmcKKwkJICogb2YgdGhpcyBmaWxlIGhhcyBlbmRlZC4KKwkJ ICovCisJCWlmIChlbnRyeSAhPSBwcml2YXRlSW5mby0+Y3VyX2ZpbGUgJiYgd3JpdGVfZnAgIT0g TlVMTCkKKwkJeworCQkJZmNsb3NlKHdyaXRlX2ZwKTsKKwkJCXdyaXRlX2ZwID0gTlVMTDsKKwkJ fQogCX0KIAogCS8qIFJlcXVlc3RlZCBXQUwgc2VnbWVudCBub3QgZm91bmQgKi8KQEAgLTQ1NCw3 ICs1MjAsODggQEAgcmVhZF9hcmNoaXZlX2ZpbGUoWExvZ0R1bXBQcml2YXRlICpwcml2YXRlSW5m bywgU2l6ZSBjb3VudCkKIH0KIAogLyoKLSAqIENyZWF0ZSBhbiBhc3RyZWFtZXIgdGhhdCBjYW4g cmVhZCBXQUwgZnJvbSBhIHRhciBmaWxlLgorICogU2V0IHVwIGEgdGVtcG9yYXJ5IGRpcmVjdG9y eSB0byB0ZW1wb3JhcmlseSBzdG9yZSBXQUwgc2VnbWVudHMuCisgKi8KK3N0YXRpYyB2b2lkCitz ZXR1cF90bXB3YWxfZGlyKGNvbnN0IGNoYXIgKndhbGRpcikKK3sKKwljaGFyCSAgICp0ZW1wbGF0 ZTsKKworCS8qCisJICogVXNlIHRoZSBkaXJlY3Rvcnkgc3BlY2lmaWVkIGJ5IHRoZSBUTVBESVIg ZW52aXJvbm1lbnQgdmFyaWFibGUuIElmIGl0J3MKKwkgKiBub3Qgc2V0LCB1c2UgdGhlIHByb3Zp ZGVkIFdBTCBkaXJlY3RvcnkgdG8gZXh0cmFjdCBXQUwgZmlsZQorCSAqIHRlbXBvcmFyaWx5Lgor CSAqLworCXRlbXBsYXRlID0gcHNwcmludGYoIiVzL3dhbGR1bXBfdG1wLVhYWFhYWCIsCisJCQkJ CQlnZXRlbnYoIlRNUERJUiIpID8gZ2V0ZW52KCJUTVBESVIiKSA6IHdhbGRpcik7CisJVG1wV2Fs U2VnRGlyID0gbWtkdGVtcCh0ZW1wbGF0ZSk7CisKKwlpZiAoVG1wV2FsU2VnRGlyID09IE5VTEwp CisJCXBnX2ZhdGFsKCJjb3VsZCBub3QgY3JlYXRlIGRpcmVjdG9yeSBcIiVzXCI6ICVtIiwgdGVt cGxhdGUpOworCisJY2Fub25pY2FsaXplX3BhdGgoVG1wV2FsU2VnRGlyKTsKKworCXBnX2xvZ19k ZWJ1ZygiY3JlYXRlZCBkaXJlY3RvcnkgXCIlc1wiIiwgVG1wV2FsU2VnRGlyKTsKK30KKworLyoK KyAqIFJlbW92ZSB0ZW1wb3JhcnkgZGlyZWN0b3J5IGF0IGV4aXQsIGlmIGFueS4KKyAqLworc3Rh dGljIHZvaWQKK2NsZWFudXBfdG1wd2FsX2Rpcl9hdGV4aXQodm9pZCkKK3sKKwlybXRyZWUoVG1w V2FsU2VnRGlyLCB0cnVlKTsKK30KKworLyoKKyAqIENyZWF0ZSBhbiBlbXB0eSBwbGFjZWhvbGRl ciBmaWxlIGFuZCByZXR1cm4gaXRzIGhhbmRsZS4KKyAqLworc3RhdGljIEZJTEUgKgorcHJlcGFy ZV90bXBfd3JpdGUoY29uc3QgY2hhciAqZm5hbWUpCit7CisJY2hhcgkJZnBhdGhbTUFYUEdQQVRI XTsKKwlGSUxFCSAgICpmaWxlOworCisJc25wcmludGYoZnBhdGgsIE1BWFBHUEFUSCwgIiVzLyVz IiwgVG1wV2FsU2VnRGlyLCBmbmFtZSk7CisKKwkvKiBDcmVhdGUgYW4gZW1wdHkgcGxhY2Vob2xk ZXIgKi8KKwlmaWxlID0gZm9wZW4oZnBhdGgsIFBHX0JJTkFSWV9XKTsKKwlpZiAoZmlsZSA9PSBO VUxMKQorCQlwZ19mYXRhbCgiY291bGQgbm90IGNyZWF0ZSBmaWxlIFwiJXNcIjogJW0iLCBmcGF0 aCk7CisKKyNpZm5kZWYgV0lOMzIKKwlpZiAoY2htb2QoZnBhdGgsIHBnX2ZpbGVfY3JlYXRlX21v ZGUpKQorCQlwZ19mYXRhbCgiY291bGQgbm90IHNldCBwZXJtaXNzaW9ucyBvbiBmaWxlIFwiJXNc IjogJW0iLAorCQkJCSBmcGF0aCk7CisjZW5kaWYKKworCXBnX2xvZ19kZWJ1Zygic3BpbGxpbmcg dG8gdGVtcG9yYXJ5IGZpbGUgXCIlc1wiIiwgZnBhdGgpOworCisJcmV0dXJuIGZpbGU7Cit9CisK Ky8qCisgKiBXcml0ZSBidWZmZXIgZGF0YSB0byB0aGUgZ2l2ZW4gZmlsZSBoYW5kbGUuCisgKi8K K3N0YXRpYyB2b2lkCitwZXJmb3JtX3RtcF93cml0ZShjb25zdCBjaGFyICpmbmFtZSwgU3RyaW5n SW5mbyBidWYsIEZJTEUgKmZpbGUpCit7CisJQXNzZXJ0KGZpbGUpOworCisJZXJybm8gPSAwOwor CWlmIChidWYtPmxlbiA+IDAgJiYgZndyaXRlKGJ1Zi0+ZGF0YSwgYnVmLT5sZW4sIDEsIGZpbGUp ICE9IDEpCisJeworCQkvKgorCQkgKiBJZiB3cml0ZSBkaWRuJ3Qgc2V0IGVycm5vLCBhc3N1bWUg cHJvYmxlbSBpcyBubyBkaXNrIHNwYWNlCisJCSAqLworCQlpZiAoZXJybm8gPT0gMCkKKwkJCWVy cm5vID0gRU5PU1BDOworCQlwZ19mYXRhbCgiY291bGQgbm90IHdyaXRlIHRvIGZpbGUgXCIlc1wi OiAlbSIsIGZuYW1lKTsKKwl9Cit9CisKKy8qCisgKiBDcmVhdGUgYW4gYXN0cmVhbWVyIHRoYXQg Y2FuIHJlYWQgV0FMIGZyb20gdGFyIGZpbGUuCiAgKi8KIHN0YXRpYyBhc3RyZWFtZXIgKgogYXN0 cmVhbWVyX3dhbGR1bXBfbmV3KFhMb2dEdW1wUHJpdmF0ZSAqcHJpdmF0ZUluZm8pCmRpZmYgLS1n aXQgYS9zcmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5jIGIvc3JjL2Jpbi9wZ193YWxkdW1w L3BnX3dhbGR1bXAuYwppbmRleCA5MGZjMTNmMzYwOS4uMTE0OTY5MjE3ZDggMTAwNjQ0Ci0tLSBh L3NyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmMKKysrIGIvc3JjL2Jpbi9wZ193YWxkdW1w L3BnX3dhbGR1bXAuYwpAQCAtNDc4LDEwICs0NzgsMTQgQEAgVGFyV0FMRHVtcFJlYWRQYWdlKFhM b2dSZWFkZXJTdGF0ZSAqc3RhdGUsIFhMb2dSZWNQdHIgdGFyZ2V0UGFnZVB0ciwgaW50IHJlcUxl biwKIAkJcmV0dXJuIC0xOwogCiAJLyoKLQkgKiBJZiB0aGUgdGFyZ2V0IHBhZ2UgaXMgaW4gYSBk aWZmZXJlbnQgc2VnbWVudCwgZnJlZSB0aGUgYnVmZmVyIHNwYWNlCi0JICogb2NjdXBpZWQgYnkg dGhlIHByZXZpb3VzIHNlZ21lbnQgZGF0YS4gU2luY2UgcGdfd2FsZHVtcCBuZXZlciByZXF1ZXN0 cwotCSAqIHRoZSBzYW1lIFdBTCBieXRlcyB0d2ljZSwgbW92aW5nIHRvIGEgbmV3IHNlZ21lbnQg aW1wbGllcyB0aGUgcHJldmlvdXMKLQkgKiBidWZmZXIncyBkYXRhIGFuZCB0aGF0IHNlZ21lbnQg d2lsbCBub3QgYmUgbmVlZGVkIGFnYWluLgorCSAqIElmIHRoZSB0YXJnZXQgcGFnZSBpcyBpbiBh IGRpZmZlcmVudCBzZWdtZW50LCBmcmVlIHRoZSBidWZmZXIgYW5kL29yCisJICogdGVtcG9yYXJ5 IGZpbGUgZGlzayBzcGFjZSBvY2N1cGllZCBieSB0aGUgcHJldmlvdXMgc2VnbWVudCdzIGRhdGEu CisJICogU2luY2UgcGdfd2FsZHVtcCBuZXZlciByZXF1ZXN0cyB0aGUgc2FtZSBXQUwgYnl0ZXMg dHdpY2UsIG1vdmluZyB0byBhCisJICogbmV3IHNlZ21lbnQgaW1wbGllcyB0aGUgcHJldmlvdXMg YnVmZmVyJ3MgZGF0YSBhbmQgdGhhdCBzZWdtZW50IHdpbGwKKwkgKiBub3QgYmUgbmVlZGVkIGFn YWluLgorCSAqCisJICogQWZ0ZXJ3YXJkLCBjaGVjayBmb3IgdGhlIG5leHQgcmVxdWlyZWQgV0FM IHNlZ21lbnQncyBwaHlzaWNhbCBleGlzdGVuY2UKKwkgKiBpbiB0aGUgdGVtcG9yYXJ5IGRpcmVj dG9yeSBmaXJzdCBiZWZvcmUgaW52b2tpbmcgdGhlIGFyY2hpdmUgc3RyZWFtZXIuCiAJICovCiAJ Y3VyU2VnTm8gPSBzdGF0ZS0+c2VnLndzX3NlZ25vOwogCWlmICghWExCeXRlSW5TZWcodGFyZ2V0 UGFnZVB0ciwgY3VyU2VnTm8sIFdhbFNlZ1N6KSkKQEAgLTQ5Nyw2ICs1MDEsMTMgQEAgVGFyV0FM RHVtcFJlYWRQYWdlKFhMb2dSZWFkZXJTdGF0ZSAqc3RhdGUsIFhMb2dSZWNQdHIgdGFyZ2V0UGFn ZVB0ciwgaW50IHJlcUxlbiwKIAkJc3RhdGUtPnNlZy53c190bGkgPSBwcml2YXRlLT50aW1lbGlu ZTsKIAkJc3RhdGUtPnNlZy53c19zZWdubyA9IG5leHRTZWdObzsKIAorCQkvKiBDbG9zZSB0aGUg V0FMIHNlZ21lbnQgZmlsZSBpZiBpdCBpcyBjdXJyZW50bHkgb3BlbiAqLworCQlpZiAoc3RhdGUt PnNlZy53c19maWxlID49IDApCisJCXsKKwkJCWNsb3NlKHN0YXRlLT5zZWcud3NfZmlsZSk7CisJ CQlzdGF0ZS0+c2VnLndzX2ZpbGUgPSAtMTsKKwkJfQorCiAJCS8qCiAJCSAqIElmIGluIHByZS1y ZWFkaW5nIG1vZGUgKHByaW9yIHRvIGFjdHVhbCBkZWNvZGluZyksIGRvIG5vdCBkZWxldGUgYW55 CiAJCSAqIGVudHJpZXMgdGhhdCBtaWdodCBiZSByZXF1ZXN0ZWQgYWdhaW4gb25jZSB0aGUgZGVj b2RpbmcgbG9vcCBzdGFydHMuCkBAIC01MDcsOSArNTE4LDIwIEBAIFRhcldBTER1bXBSZWFkUGFn ZShYTG9nUmVhZGVyU3RhdGUgKnN0YXRlLCBYTG9nUmVjUHRyIHRhcmdldFBhZ2VQdHIsIGludCBy ZXFMZW4sCiAJCQlYTG9nRmlsZU5hbWUoZm5hbWUsIHN0YXRlLT5zZWcud3NfdGxpLCBjdXJTZWdO bywgV2FsU2VnU3opOwogCQkJZnJlZV9hcmNoaXZlX3dhbF9lbnRyeShmbmFtZSwgcHJpdmF0ZSk7 CiAJCX0KKworCQkvKgorCQkgKiBJZiB0aGUgbmV4dCBzZWdtZW50IGV4aXN0cywgb3BlbiBpdCBh bmQgY29udGludWUgcmVhZGluZyBmcm9tIHRoZXJlCisJCSAqLworCQlYTG9nRmlsZU5hbWUoZm5h bWUsIHN0YXRlLT5zZWcud3NfdGxpLCBuZXh0U2VnTm8sIFdhbFNlZ1N6KTsKKwkJc3RhdGUtPnNl Zy53c19maWxlID0gb3Blbl9maWxlX2luX2RpcmVjdG9yeShUbXBXYWxTZWdEaXIsIGZuYW1lKTsK IAl9CiAKLQkvKiBSZWFkIHRoZSBXQUwgcGFnZSBmcm9tIHRoZSBhcmNoaXZlIHN0cmVhbWVyICov CisJLyogQ29udGludWUgcmVhZGluZyBmcm9tIHRoZSBvcGVuIFdBTCBzZWdtZW50LCBpZiBhbnkg Ki8KKwlpZiAoc3RhdGUtPnNlZy53c19maWxlID49IDApCisJCXJldHVybiBXQUxEdW1wUmVhZFBh Z2Uoc3RhdGUsIHRhcmdldFBhZ2VQdHIsIGNvdW50LCB0YXJnZXRQdHIsCisJCQkJCQkJICAgcmVh ZEJ1ZmYpOworCisJLyogT3RoZXJ3aXNlLCByZWFkIHRoZSBXQUwgcGFnZSBmcm9tIHRoZSBhcmNo aXZlIHN0cmVhbWVyICovCiAJcmV0dXJuIHJlYWRfYXJjaGl2ZV93YWxfcGFnZShwcml2YXRlLCB0 YXJnZXRQYWdlUHRyLCBjb3VudCwgcmVhZEJ1ZmYsCiAJCQkJCQkJCSBXYWxTZWdTeik7CiB9CmRp ZmYgLS1naXQgYS9zcmMvYmluL3BnX3dhbGR1bXAvcGdfd2FsZHVtcC5oIGIvc3JjL2Jpbi9wZ193 YWxkdW1wL3BnX3dhbGR1bXAuaAppbmRleCA5MGZlOTY4NDBlMi4uNzVlZDBmMzc1MzggMTAwNjQ0 Ci0tLSBhL3NyYy9iaW4vcGdfd2FsZHVtcC9wZ193YWxkdW1wLmgKKysrIGIvc3JjL2Jpbi9wZ193 YWxkdW1wL3BnX3dhbGR1bXAuaApAQCAtMTgsNiArMTgsOSBAQAogc3RydWN0IEFyY2hpdmVkV0FM RmlsZTsKIHN0cnVjdCBBcmNoaXZlZFdBTF9oYXNoOwogCisvKiBUZW1wb3JhcnkgZGlyZWN0b3J5 ICovCitleHRlcm4gY2hhciAqVG1wV2FsU2VnRGlyOworCiAvKiBDb250YWlucyB0aGUgbmVjZXNz YXJ5IGluZm9ybWF0aW9uIHRvIGRyaXZlIFdBTCBkZWNvZGluZyAqLwogdHlwZWRlZiBzdHJ1Y3Qg WExvZ0R1bXBQcml2YXRlCiB7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3dhbGR1bXAvdC8wMDFf YmFzaWMucGwgYi9zcmMvYmluL3BnX3dhbGR1bXAvdC8wMDFfYmFzaWMucGwKaW5kZXggOWFiNzQ1 N2U5ZTIuLjk4NTRjOTM5MDA3IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3dhbGR1bXAvdC8wMDFf YmFzaWMucGwKKysrIGIvc3JjL2Jpbi9wZ193YWxkdW1wL3QvMDAxX2Jhc2ljLnBsCkBAIC03LDYg KzcsNyBAQCB1c2UgQ3dkOwogdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9z dGdyZVNRTDo6VGVzdDo6VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsKK3VzZSBMaXN0OjpVdGlsIHF3 KHNodWZmbGUpOwogCiBteSAkdGFyID0gJEVOVntUQVJ9OwogCkBAIC0zMTIsNyArMzEzLDcgQEAg c3ViIGdlbmVyYXRlX2FyY2hpdmUKIAl9CiAJY2xvc2VkaXIgJGRoOwogCi0JQGZpbGVzID0gc29y dCBAZmlsZXM7CisJQGZpbGVzID0gc2h1ZmZsZSBAZmlsZXM7CiAKIAkjIG1vdmUgaW50byB0aGUg V0FMIGRpcmVjdG9yeSBiZWZvcmUgYXJjaGl2aW5nIGZpbGVzCiAJbXkgJGN3ZCA9IGdldGN3ZDsK LS0gCjIuNDcuMQoK --0000000000004f3241064b13b9d4 Content-Type: application/x-patch; name="v13-0008-pg_verifybackup-Delay-default-WAL-directory-prep.patch" Content-Disposition: attachment; filename="v13-0008-pg_verifybackup-Delay-default-WAL-directory-prep.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mlrohxh67 RnJvbSAxNWFiMGU0MjNiZmZiNTk4NWJlYTYyMmFhN2MyNDNjYmQzMzE2YzZiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFdl ZCwgMTYgSnVsIDIwMjUgMTQ6NDc6NDMgKzA1MzAKU3ViamVjdDogW1BBVENIIHYxMyAwOC8xMF0g cGdfdmVyaWZ5YmFja3VwOiBEZWxheSBkZWZhdWx0IFdBTCBkaXJlY3RvcnkKIHByZXBhcmF0aW9u LgoKV2UgYXJlIG5vdCBzdXJlIHdoZXRoZXIgdG8gcGFyc2UgV0FMIGZyb20gYSBkaXJlY3Rvcnkg b3IgYW4gYXJjaGl2ZQp1bnRpbCB0aGUgYmFja3VwIGZvcm1hdCBpcyBrbm93bi4gVGhlcmVmb3Jl LCB3ZSBkZWxheSBwcmVwYXJpbmcgdGhlCmRlZmF1bHQgV0FMIGRpcmVjdG9yeSB1bnRpbCB0aGUg cG9pbnQgb2YgcGFyc2luZy4gVGhpcyBkZWxheSBpcwpoYXJtbGVzcywgYXMgdGhlIFdBTCBkaXJl Y3RvcnkgaXMgbm90IHVzZWQgZWxzZXdoZXJlLgotLS0KIHNyYy9iaW4vcGdfdmVyaWZ5YmFja3Vw L3BnX3ZlcmlmeWJhY2t1cC5jIHwgOCArKysrLS0tLQogMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0 aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX3ZlcmlmeWJh Y2t1cC9wZ192ZXJpZnliYWNrdXAuYyBiL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3BnX3Zlcmlm eWJhY2t1cC5jCmluZGV4IDVkZGM0YzMzZmViLi4wNGNjYTNiYzBmNSAxMDA2NDQKLS0tIGEvc3Jj L2Jpbi9wZ192ZXJpZnliYWNrdXAvcGdfdmVyaWZ5YmFja3VwLmMKKysrIGIvc3JjL2Jpbi9wZ192 ZXJpZnliYWNrdXAvcGdfdmVyaWZ5YmFja3VwLmMKQEAgLTI4NSwxMCArMjg1LDYgQEAgbWFpbihp bnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCW1hbmlmZXN0X3BhdGggPSBwc3ByaW50ZigiJXMvYmFj a3VwX21hbmlmZXN0IiwKIAkJCQkJCQkJIGNvbnRleHQuYmFja3VwX2RpcmVjdG9yeSk7CiAKLQkv KiBCeSBkZWZhdWx0LCBsb29rIGZvciB0aGUgV0FMIGluIHRoZSBiYWNrdXAgZGlyZWN0b3J5LCB0 b28uICovCi0JaWYgKHdhbF9kaXJlY3RvcnkgPT0gTlVMTCkKLQkJd2FsX2RpcmVjdG9yeSA9IHBz cHJpbnRmKCIlcy9wZ193YWwiLCBjb250ZXh0LmJhY2t1cF9kaXJlY3RvcnkpOwotCiAJLyoKIAkg KiBUcnkgdG8gcmVhZCB0aGUgbWFuaWZlc3QuIFdlIHRyZWF0IGFueSBlcnJvcnMgZW5jb3VudGVy ZWQgd2hpbGUgcGFyc2luZwogCSAqIHRoZSBtYW5pZmVzdCBhcyBmYXRhbDsgdGhlcmUgZG9lc24n dCBzZWVtIHRvIGJlIG11Y2ggcG9pbnQgaW4gdHJ5aW5nIHRvCkBAIC0zNjgsNiArMzY0LDEwIEBA IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCWlmIChjb250ZXh0LmZvcm1hdCA9PSAncCcg JiYgIWNvbnRleHQuc2tpcF9jaGVja3N1bXMpCiAJCXZlcmlmeV9iYWNrdXBfY2hlY2tzdW1zKCZj b250ZXh0KTsKIAorCS8qIEJ5IGRlZmF1bHQsIGxvb2sgZm9yIHRoZSBXQUwgaW4gdGhlIGJhY2t1 cCBkaXJlY3RvcnksIHRvby4gKi8KKwlpZiAod2FsX2RpcmVjdG9yeSA9PSBOVUxMKQorCQl3YWxf ZGlyZWN0b3J5ID0gcHNwcmludGYoIiVzL3BnX3dhbCIsIGNvbnRleHQuYmFja3VwX2RpcmVjdG9y eSk7CisKIAkvKgogCSAqIFRyeSB0byBwYXJzZSB0aGUgcmVxdWlyZWQgcmFuZ2VzIG9mIFdBTCBy ZWNvcmRzLCB1bmxlc3Mgd2Ugd2VyZSB0b2xkCiAJICogbm90IHRvIGRvIHNvLgotLSAKMi40Ny4x Cgo= --0000000000004f3241064b13b9d4 Content-Type: application/x-patch; name="v13-0009-pg_verifybackup-Rename-the-wal-directory-switch-.patch" Content-Disposition: attachment; filename="v13-0009-pg_verifybackup-Rename-the-wal-directory-switch-.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mlroi3nb8 RnJvbSBjOWQxYTQwNzJkYTliZmExMzJlMmU5OTIzOGRkYmI3ZTMxOGU5MzNiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFR1 ZSwgMjUgTm92IDIwMjUgMTc6MzI6MTQgKzA1MzAKU3ViamVjdDogW1BBVENIIHYxMyAwOS8xMF0g cGdfdmVyaWZ5YmFja3VwOiBSZW5hbWUgdGhlIHdhbC1kaXJlY3Rvcnkgc3dpdGNoIHRvCiB3YWwt cGF0aAoKV2l0aCBwcmV2aW91cyBwYXRjaGVzIHRvIHBnX3dhbGR1bXAgY2FuIG5vdyBkZWNvZGUg V0FMIGRpcmVjdGx5IGZyb20KdGFyIGZpbGVzLiAgVGhpcyBtZWFucyB5b3UnbGwgYmUgYWJsZSB0 byBzcGVjaWZ5IGEgdGFyIGFyY2hpdmUgcGF0aAppbnN0ZWFkIG9mIGEgdHJhZGl0aW9uYWwgV0FM IGRpcmVjdG9yeS4KClRvIGtlZXAgdGhpbmdzIGNvbnNpc3RlbnQgYW5kIG1vcmUgdmVyc2F0aWxl LCB3ZSBzaG91bGQgYWxzbwpnZW5lcmFsaXplIHRoZSBpbnB1dCBzd2l0Y2ggZm9yIHBnX3Zlcmlm eWJhY2t1cC4gSXQgc2hvdWxkIGFjY2VwdAplaXRoZXIgYSBkaXJlY3Rvcnkgb3IgYSB0YXIgZmls ZSBwYXRoIHRoYXQgY29udGFpbnMgV0FMcy4gVGhpcyBjaGFuZ2UKd2lsbCBhbHNvIGFsaWduaW5n IGl0IHdpdGggdGhlIGV4aXN0aW5nIG1hbmlmZXN0LXBhdGggc3dpdGNoIG5hbWluZy4KCj09IE5P VEUgPT0KICBUaGUgY29ycmVzcG9uZGluZyBQTyBmaWxlcyByZXF1aXJlIHVwZGF0aW5nIGR1ZSB0 byB0aGlzIGNoYW5nZS4KLS0tCiBkb2Mvc3JjL3NnbWwvcmVmL3BnX3ZlcmlmeWJhY2t1cC5zZ21s ICAgICB8ICAyICstCiBzcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC9wZ192ZXJpZnliYWNrdXAuYyB8 IDIyICsrKysrKysrKysrLS0tLS0tLS0tLS0KIHNyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3QvMDA3 X3dhbC5wbCAgICAgIHwgIDQgKystLQogMyBmaWxlcyBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCsp LCAxNCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3BnX3Zlcmlm eWJhY2t1cC5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9wZ192ZXJpZnliYWNrdXAuc2dtbAppbmRl eCA2MWMxMjk3NWU0YS4uZTliOGJmZDUxYjEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYv cGdfdmVyaWZ5YmFja3VwLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9wZ192ZXJpZnliYWNr dXAuc2dtbApAQCAtMjYxLDcgKzI2MSw3IEBAIFBvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgogCiAg ICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgICA8dGVybT48b3B0aW9uPi13IDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5wYXRoPC9yZXBsYWNlYWJsZT48L29wdGlvbj48L3Rlcm0+Ci0gICAg ICA8dGVybT48b3B0aW9uPi0td2FsLWRpcmVjdG9yeT08cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+cGF0aDwvcmVwbGFjZWFibGU+PC9vcHRpb24+PC90ZXJtPgorICAgICAgPHRlcm0+PG9w dGlvbj4tLXdhbC1wYXRoPTxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wYXRoPC9yZXBs YWNlYWJsZT48L29wdGlvbj48L3Rlcm0+CiAgICAgICA8bGlzdGl0ZW0+CiAgICAgICAgPHBhcmE+ CiAgICAgICAgIFRyeSB0byBwYXJzZSBXQUwgZmlsZXMgc3RvcmVkIGluIHRoZSBzcGVjaWZpZWQg ZGlyZWN0b3J5LCByYXRoZXIgdGhhbgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ192ZXJpZnliYWNr dXAvcGdfdmVyaWZ5YmFja3VwLmMgYi9zcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC9wZ192ZXJpZnli YWNrdXAuYwppbmRleCAwNGNjYTNiYzBmNS4uZTE0OWNhOTYwNTAgMTAwNjQ0Ci0tLSBhL3NyYy9i aW4vcGdfdmVyaWZ5YmFja3VwL3BnX3ZlcmlmeWJhY2t1cC5jCisrKyBiL3NyYy9iaW4vcGdfdmVy aWZ5YmFja3VwL3BnX3ZlcmlmeWJhY2t1cC5jCkBAIC05Myw3ICs5Myw3IEBAIHN0YXRpYyB2b2lk IHZlcmlmeV9maWxlX2NoZWNrc3VtKHZlcmlmaWVyX2NvbnRleHQgKmNvbnRleHQsCiAJCQkJCQkJ CSB1aW50OCAqYnVmZmVyKTsKIHN0YXRpYyB2b2lkIHBhcnNlX3JlcXVpcmVkX3dhbCh2ZXJpZmll cl9jb250ZXh0ICpjb250ZXh0LAogCQkJCQkJCSAgIGNoYXIgKnBnX3dhbGR1bXBfcGF0aCwKLQkJ CQkJCQkgICBjaGFyICp3YWxfZGlyZWN0b3J5KTsKKwkJCQkJCQkgICBjaGFyICp3YWxfcGF0aCk7 CiBzdGF0aWMgYXN0cmVhbWVyICpjcmVhdGVfYXJjaGl2ZV92ZXJpZmllcih2ZXJpZmllcl9jb250 ZXh0ICpjb250ZXh0LAogCQkJCQkJCQkJCSAgY2hhciAqYXJjaGl2ZV9uYW1lLAogCQkJCQkJCQkJ CSAgT2lkIHRibHNwY19vaWQsCkBAIC0xMjYsNyArMTI2LDcgQEAgbWFpbihpbnQgYXJnYywgY2hh ciAqKmFyZ3YpCiAJCXsicHJvZ3Jlc3MiLCBub19hcmd1bWVudCwgTlVMTCwgJ1AnfSwKIAkJeyJx dWlldCIsIG5vX2FyZ3VtZW50LCBOVUxMLCAncSd9LAogCQl7InNraXAtY2hlY2tzdW1zIiwgbm9f YXJndW1lbnQsIE5VTEwsICdzJ30sCi0JCXsid2FsLWRpcmVjdG9yeSIsIHJlcXVpcmVkX2FyZ3Vt ZW50LCBOVUxMLCAndyd9LAorCQl7IndhbC1wYXRoIiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEws ICd3J30sCiAJCXtOVUxMLCAwLCBOVUxMLCAwfQogCX07CiAKQEAgLTEzNSw3ICsxMzUsNyBAQCBt YWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAljaGFyCSAgICptYW5pZmVzdF9wYXRoID0gTlVM TDsKIAlib29sCQlub19wYXJzZV93YWwgPSBmYWxzZTsKIAlib29sCQlxdWlldCA9IGZhbHNlOwot CWNoYXIJICAgKndhbF9kaXJlY3RvcnkgPSBOVUxMOworCWNoYXIJICAgKndhbF9wYXRoID0gTlVM TDsKIAljaGFyCSAgICpwZ193YWxkdW1wX3BhdGggPSBOVUxMOwogCURJUgkJICAgKmRpcjsKIApA QCAtMjIxLDggKzIyMSw4IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQkJCWNvbnRl eHQuc2tpcF9jaGVja3N1bXMgPSB0cnVlOwogCQkJCWJyZWFrOwogCQkJY2FzZSAndyc6Ci0JCQkJ d2FsX2RpcmVjdG9yeSA9IHBzdHJkdXAob3B0YXJnKTsKLQkJCQljYW5vbmljYWxpemVfcGF0aCh3 YWxfZGlyZWN0b3J5KTsKKwkJCQl3YWxfcGF0aCA9IHBzdHJkdXAob3B0YXJnKTsKKwkJCQljYW5v bmljYWxpemVfcGF0aCh3YWxfcGF0aCk7CiAJCQkJYnJlYWs7CiAJCQlkZWZhdWx0OgogCQkJCS8q IGdldG9wdF9sb25nIGFscmVhZHkgZW1pdHRlZCBhIGNvbXBsYWludCAqLwpAQCAtMzY1LDE1ICsz NjUsMTUgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCXZlcmlmeV9iYWNrdXBfY2hl Y2tzdW1zKCZjb250ZXh0KTsKIAogCS8qIEJ5IGRlZmF1bHQsIGxvb2sgZm9yIHRoZSBXQUwgaW4g dGhlIGJhY2t1cCBkaXJlY3RvcnksIHRvby4gKi8KLQlpZiAod2FsX2RpcmVjdG9yeSA9PSBOVUxM KQotCQl3YWxfZGlyZWN0b3J5ID0gcHNwcmludGYoIiVzL3BnX3dhbCIsIGNvbnRleHQuYmFja3Vw X2RpcmVjdG9yeSk7CisJaWYgKHdhbF9wYXRoID09IE5VTEwpCisJCXdhbF9wYXRoID0gcHNwcmlu dGYoIiVzL3BnX3dhbCIsIGNvbnRleHQuYmFja3VwX2RpcmVjdG9yeSk7CiAKIAkvKgogCSAqIFRy eSB0byBwYXJzZSB0aGUgcmVxdWlyZWQgcmFuZ2VzIG9mIFdBTCByZWNvcmRzLCB1bmxlc3Mgd2Ug d2VyZSB0b2xkCiAJICogbm90IHRvIGRvIHNvLgogCSAqLwogCWlmICghbm9fcGFyc2Vfd2FsKQot CQlwYXJzZV9yZXF1aXJlZF93YWwoJmNvbnRleHQsIHBnX3dhbGR1bXBfcGF0aCwgd2FsX2RpcmVj dG9yeSk7CisJCXBhcnNlX3JlcXVpcmVkX3dhbCgmY29udGV4dCwgcGdfd2FsZHVtcF9wYXRoLCB3 YWxfcGF0aCk7CiAKIAkvKgogCSAqIElmIGV2ZXJ5dGhpbmcgbG9va3MgT0ssIHRlbGwgdGhlIHVz ZXIgdGhpcywgdW5sZXNzIHdlIHdlcmUgYXNrZWQgdG8KQEAgLTExODgsNyArMTE4OCw3IEBAIHZl cmlmeV9maWxlX2NoZWNrc3VtKHZlcmlmaWVyX2NvbnRleHQgKmNvbnRleHQsIG1hbmlmZXN0X2Zp bGUgKm0sCiAgKi8KIHN0YXRpYyB2b2lkCiBwYXJzZV9yZXF1aXJlZF93YWwodmVyaWZpZXJfY29u dGV4dCAqY29udGV4dCwgY2hhciAqcGdfd2FsZHVtcF9wYXRoLAotCQkJCSAgIGNoYXIgKndhbF9k aXJlY3RvcnkpCisJCQkJICAgY2hhciAqd2FsX3BhdGgpCiB7CiAJbWFuaWZlc3RfZGF0YSAqbWFu aWZlc3QgPSBjb250ZXh0LT5tYW5pZmVzdDsKIAltYW5pZmVzdF93YWxfcmFuZ2UgKnRoaXNfd2Fs X3JhbmdlID0gbWFuaWZlc3QtPmZpcnN0X3dhbF9yYW5nZTsKQEAgLTExOTgsNyArMTE5OCw3IEBA IHBhcnNlX3JlcXVpcmVkX3dhbCh2ZXJpZmllcl9jb250ZXh0ICpjb250ZXh0LCBjaGFyICpwZ193 YWxkdW1wX3BhdGgsCiAJCWNoYXIJICAgKnBnX3dhbGR1bXBfY21kOwogCiAJCXBnX3dhbGR1bXBf Y21kID0gcHNwcmludGYoIlwiJXNcIiAtLXF1aWV0IC0tcGF0aD1cIiVzXCIgLS10aW1lbGluZT0l dSAtLXN0YXJ0PSVYLyUwOFggLS1lbmQ9JVgvJTA4WFxuIiwKLQkJCQkJCQkJICBwZ193YWxkdW1w X3BhdGgsIHdhbF9kaXJlY3RvcnksIHRoaXNfd2FsX3JhbmdlLT50bGksCisJCQkJCQkJCSAgcGdf d2FsZHVtcF9wYXRoLCB3YWxfcGF0aCwgdGhpc193YWxfcmFuZ2UtPnRsaSwKIAkJCQkJCQkJICBM U05fRk9STUFUX0FSR1ModGhpc193YWxfcmFuZ2UtPnN0YXJ0X2xzbiksCiAJCQkJCQkJCSAgTFNO X0ZPUk1BVF9BUkdTKHRoaXNfd2FsX3JhbmdlLT5lbmRfbHNuKSk7CiAJCWZmbHVzaChOVUxMKTsK QEAgLTEzNjYsNyArMTM2Niw3IEBAIHVzYWdlKHZvaWQpCiAJcHJpbnRmKF8oIiAgLVAsIC0tcHJv Z3Jlc3MgICAgICAgICAgICAgIHNob3cgcHJvZ3Jlc3MgaW5mb3JtYXRpb25cbiIpKTsKIAlwcmlu dGYoXygiICAtcSwgLS1xdWlldCAgICAgICAgICAgICAgICAgZG8gbm90IHByaW50IGFueSBvdXRw dXQsIGV4Y2VwdCBmb3IgZXJyb3JzXG4iKSk7CiAJcHJpbnRmKF8oIiAgLXMsIC0tc2tpcC1jaGVj a3N1bXMgICAgICAgIHNraXAgY2hlY2tzdW0gdmVyaWZpY2F0aW9uXG4iKSk7Ci0JcHJpbnRmKF8o IiAgLXcsIC0td2FsLWRpcmVjdG9yeT1QQVRIICAgIHVzZSBzcGVjaWZpZWQgcGF0aCBmb3IgV0FM IGZpbGVzXG4iKSk7CisJcHJpbnRmKF8oIiAgLXcsIC0td2FsLXBhdGg9UEFUSCAgICAgICAgIHVz ZSBzcGVjaWZpZWQgcGF0aCBmb3IgV0FMIGZpbGVzXG4iKSk7CiAJcHJpbnRmKF8oIiAgLVYsIC0t dmVyc2lvbiAgICAgICAgICAgICAgIG91dHB1dCB2ZXJzaW9uIGluZm9ybWF0aW9uLCB0aGVuIGV4 aXRcbiIpKTsKIAlwcmludGYoXygiICAtPywgLS1oZWxwICAgICAgICAgICAgICAgICAgc2hvdyB0 aGlzIGhlbHAsIHRoZW4gZXhpdFxuIikpOwogCXByaW50ZihfKCJcblJlcG9ydCBidWdzIHRvIDwl cz4uXG4iKSwgUEFDS0FHRV9CVUdSRVBPUlQpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ192ZXJp ZnliYWNrdXAvdC8wMDdfd2FsLnBsIGIvc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvdC8wMDdfd2Fs LnBsCmluZGV4IDc5MDg3YTFmNmJlLi44YWQyMjM0NDUzZCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9w Z192ZXJpZnliYWNrdXAvdC8wMDdfd2FsLnBsCisrKyBiL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3Vw L3QvMDA3X3dhbC5wbApAQCAtNDIsMTAgKzQyLDEwIEBAIGNvbW1hbmRfb2soWyAncGdfdmVyaWZ5 YmFja3VwJywgJy0tbm8tcGFyc2Utd2FsJywgJGJhY2t1cF9wYXRoIF0sCiBjb21tYW5kX29rKAog CVsKIAkJJ3BnX3ZlcmlmeWJhY2t1cCcsCi0JCSctLXdhbC1kaXJlY3RvcnknID0+ICRyZWxvY2F0 ZWRfcGdfd2FsLAorCQknLS13YWwtcGF0aCcgPT4gJHJlbG9jYXRlZF9wZ193YWwsCiAJCSRiYWNr dXBfcGF0aAogCV0sCi0JJy0td2FsLWRpcmVjdG9yeSBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IFdB TCBkaXJlY3RvcnknKTsKKwknLS13YWwtcGF0aCBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5IFdBTCBk aXJlY3RvcnknKTsKIAogIyBNb3ZlIGRpcmVjdG9yeSBiYWNrIHRvIG9yaWdpbmFsIGxvY2F0aW9u LgogcmVuYW1lKCRyZWxvY2F0ZWRfcGdfd2FsLCAkb3JpZ2luYWxfcGdfd2FsKSB8fCBkaWUgInJl bmFtZSBwZ193YWwgYmFjazogJCEiOwotLSAKMi40Ny4xCgo= --0000000000004f3241064b13b9d4 Content-Type: application/x-patch; name="v13-0010-pg_verifybackup-enabled-WAL-parsing-for-tar-form.patch" Content-Disposition: attachment; filename="v13-0010-pg_verifybackup-enabled-WAL-parsing-for-tar-form.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mlroia3r9 RnJvbSAyMDgzZGE3Y2E4ZjU5NjQ2MDZhOGVjMDJkNThiOTVjZTRlNTgwMDJlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBbXVsIFN1bCA8c3VsYW11bEBnbWFpbC5jb20+CkRhdGU6IFR1 ZSwgMjUgTm92IDIwMjUgMTc6MzQ6MjYgKzA1MzAKU3ViamVjdDogW1BBVENIIHYxMyAxMC8xMF0g cGdfdmVyaWZ5YmFja3VwOiBlbmFibGVkIFdBTCBwYXJzaW5nIGZvciB0YXItZm9ybWF0CiBiYWNr dXAKCk5vdyB0aGF0IHBnX3dhbGR1bXAgc3VwcG9ydHMgZGVjb2RpbmcgZnJvbSB0YXIgYXJjaGl2 ZXMsIHdlIHNob3VsZApsZXZlcmFnZSB0aGlzIGZ1bmN0aW9uYWxpdHkgdG8gcmVtb3ZlIHRoZSBw cmV2aW91cyByZXN0cmljdGlvbiBvbiBXQUwKcGFyc2luZyBmb3IgdGFyLWJhY2tlZCBmb3JtYXRz LgotLS0KIGRvYy9zcmMvc2dtbC9yZWYvcGdfdmVyaWZ5YmFja3VwLnNnbWwgICAgICAgICB8ICA1 ICstCiBzcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC9wZ192ZXJpZnliYWNrdXAuYyAgICAgfCA2NiAr KysrKysrKysrKysrLS0tLS0tCiBzcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC90LzAwMl9hbGdvcml0 aG0ucGwgICAgfCAgNCAtLQogc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvdC8wMDNfY29ycnVwdGlv bi5wbCAgIHwgIDQgKy0KIHNyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3QvMDA4X3VudGFyLnBsICAg ICAgICB8ICA1ICstCiBzcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC90LzAxMF9jbGllbnRfdW50YXIu cGwgfCAgNSArLQogNiBmaWxlcyBjaGFuZ2VkLCA1MCBpbnNlcnRpb25zKCspLCAzOSBkZWxldGlv bnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL3BnX3ZlcmlmeWJhY2t1cC5zZ21s IGIvZG9jL3NyYy9zZ21sL3JlZi9wZ192ZXJpZnliYWNrdXAuc2dtbAppbmRleCBlOWI4YmZkNTFi MS4uMTZiNTBiNWE0ZGYgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvcGdfdmVyaWZ5YmFj a3VwLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9wZ192ZXJpZnliYWNrdXAuc2dtbApAQCAt MzYsMTAgKzM2LDcgQEAgUG9zdGdyZVNRTCBkb2N1bWVudGF0aW9uCiAgICA8bGl0ZXJhbD5iYWNr dXBfbWFuaWZlc3Q8L2xpdGVyYWw+IGdlbmVyYXRlZCBieSB0aGUgc2VydmVyIGF0IHRoZSB0aW1l CiAgICBvZiB0aGUgYmFja3VwLiBUaGUgYmFja3VwIG1heSBiZSBzdG9yZWQgZWl0aGVyIGluIHRo ZSAicGxhaW4iIG9yIHRoZSAidGFyIgogICAgZm9ybWF0OyB0aGlzIGluY2x1ZGVzIHRhci1mb3Jt YXQgYmFja3VwcyBjb21wcmVzc2VkIHdpdGggYW55IGFsZ29yaXRobQotICAgc3VwcG9ydGVkIGJ5 IDxhcHBsaWNhdGlvbj5wZ19iYXNlYmFja3VwPC9hcHBsaWNhdGlvbj4uIEhvd2V2ZXIsIGF0IHBy ZXNlbnQsCi0gICA8bGl0ZXJhbD5XQUw8L2xpdGVyYWw+IHZlcmlmaWNhdGlvbiBpcyBzdXBwb3J0 ZWQgb25seSBmb3IgcGxhaW4tZm9ybWF0Ci0gICBiYWNrdXBzLiBUaGVyZWZvcmUsIGlmIHRoZSBi YWNrdXAgaXMgc3RvcmVkIGluIHRhci1mb3JtYXQsIHRoZQotICAgPGxpdGVyYWw+LW4sIC0tbm8t cGFyc2Utd2FsPC9saXRlcmFsPiBvcHRpb24gc2hvdWxkIGJlIHVzZWQuCisgICBzdXBwb3J0ZWQg YnkgPGFwcGxpY2F0aW9uPnBnX2Jhc2ViYWNrdXA8L2FwcGxpY2F0aW9uPi4KICAgPC9wYXJhPgog CiAgIDxwYXJhPgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvcGdfdmVyaWZ5 YmFja3VwLmMgYi9zcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC9wZ192ZXJpZnliYWNrdXAuYwppbmRl eCBlMTQ5Y2E5NjA1MC4uOGRlZTAwNDNiYWIgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfdmVyaWZ5 YmFja3VwL3BnX3ZlcmlmeWJhY2t1cC5jCisrKyBiL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3Bn X3ZlcmlmeWJhY2t1cC5jCkBAIC03NCw3ICs3NCw5IEBAIHBnX25vcmV0dXJuIHN0YXRpYyB2b2lk IHJlcG9ydF9tYW5pZmVzdF9lcnJvcihKc29uTWFuaWZlc3RQYXJzZUNvbnRleHQgKmNvbnRleHQs CiAJCQkJCQkJCQkJCSAgY29uc3QgY2hhciAqZm10LC4uLikKIAkJCXBnX2F0dHJpYnV0ZV9wcmlu dGYoMiwgMyk7CiAKLXN0YXRpYyB2b2lkIHZlcmlmeV90YXJfYmFja3VwKHZlcmlmaWVyX2NvbnRl eHQgKmNvbnRleHQsIERJUiAqZGlyKTsKK3N0YXRpYyB2b2lkIHZlcmlmeV90YXJfYmFja3VwKHZl cmlmaWVyX2NvbnRleHQgKmNvbnRleHQsIERJUiAqZGlyLAorCQkJCQkJCSAgY2hhciAqKmJhc2Vf YXJjaGl2ZV9wYXRoLAorCQkJCQkJCSAgY2hhciAqKndhbF9hcmNoaXZlX3BhdGgpOwogc3RhdGlj IHZvaWQgdmVyaWZ5X3BsYWluX2JhY2t1cF9kaXJlY3RvcnkodmVyaWZpZXJfY29udGV4dCAqY29u dGV4dCwKIAkJCQkJCQkJCQkgIGNoYXIgKnJlbHBhdGgsIGNoYXIgKmZ1bGxwYXRoLAogCQkJCQkJ CQkJCSAgRElSICpkaXIpOwpAQCAtODMsNyArODUsOSBAQCBzdGF0aWMgdm9pZCB2ZXJpZnlfcGxh aW5fYmFja3VwX2ZpbGUodmVyaWZpZXJfY29udGV4dCAqY29udGV4dCwgY2hhciAqcmVscGF0aCwK IHN0YXRpYyB2b2lkIHZlcmlmeV9jb250cm9sX2ZpbGUoY29uc3QgY2hhciAqY29udHJvbHBhdGgs CiAJCQkJCQkJCXVpbnQ2NCBtYW5pZmVzdF9zeXN0ZW1faWRlbnRpZmllcik7CiBzdGF0aWMgdm9p ZCBwcmVjaGVja190YXJfYmFja3VwX2ZpbGUodmVyaWZpZXJfY29udGV4dCAqY29udGV4dCwgY2hh ciAqcmVscGF0aCwKLQkJCQkJCQkJCSBjaGFyICpmdWxscGF0aCwgU2ltcGxlUHRyTGlzdCAqdGFy ZmlsZXMpOworCQkJCQkJCQkJIGNoYXIgKmZ1bGxwYXRoLCBTaW1wbGVQdHJMaXN0ICp0YXJmaWxl cywKKwkJCQkJCQkJCSBjaGFyICoqYmFzZV9hcmNoaXZlX3BhdGgsCisJCQkJCQkJCQkgY2hhciAq KndhbF9hcmNoaXZlX3BhdGgpOwogc3RhdGljIHZvaWQgdmVyaWZ5X3Rhcl9maWxlKHZlcmlmaWVy X2NvbnRleHQgKmNvbnRleHQsIGNoYXIgKnJlbHBhdGgsCiAJCQkJCQkJY2hhciAqZnVsbHBhdGgs IGFzdHJlYW1lciAqc3RyZWFtZXIpOwogc3RhdGljIHZvaWQgcmVwb3J0X2V4dHJhX2JhY2t1cF9m aWxlcyh2ZXJpZmllcl9jb250ZXh0ICpjb250ZXh0KTsKQEAgLTEzNiw2ICsxNDAsOCBAQCBtYWlu KGludCBhcmdjLCBjaGFyICoqYXJndikKIAlib29sCQlub19wYXJzZV93YWwgPSBmYWxzZTsKIAli b29sCQlxdWlldCA9IGZhbHNlOwogCWNoYXIJICAgKndhbF9wYXRoID0gTlVMTDsKKwljaGFyCSAg ICpiYXNlX2FyY2hpdmVfcGF0aCA9IE5VTEw7CisJY2hhcgkgICAqd2FsX2FyY2hpdmVfcGF0aCA9 IE5VTEw7CiAJY2hhcgkgICAqcGdfd2FsZHVtcF9wYXRoID0gTlVMTDsKIAlESVIJCSAgICpkaXI7 CiAKQEAgLTMyNywxNyArMzMzLDYgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAJCXBm cmVlKHBhdGgpOwogCX0KIAotCS8qCi0JICogWFhYOiBJbiB0aGUgZnV0dXJlLCB3ZSBzaG91bGQg Y29uc2lkZXIgZW5oYW5jaW5nIHBnX3dhbGR1bXAgdG8gcmVhZCBXQUwKLQkgKiBmaWxlcyBmcm9t IGFuIGFyY2hpdmUuCi0JICovCi0JaWYgKCFub19wYXJzZV93YWwgJiYgY29udGV4dC5mb3JtYXQg PT0gJ3QnKQotCXsKLQkJcGdfbG9nX2Vycm9yKCJwZ193YWxkdW1wIGNhbm5vdCByZWFkIHRhciBm aWxlcyIpOwotCQlwZ19sb2dfZXJyb3JfaGludCgiWW91IG11c3QgdXNlIC1uLy0tbm8tcGFyc2Ut d2FsIHdoZW4gdmVyaWZ5aW5nIGEgdGFyLWZvcm1hdCBiYWNrdXAuIik7Ci0JCWV4aXQoMSk7Ci0J fQotCiAJLyoKIAkgKiBQZXJmb3JtIHRoZSBhcHByb3ByaWF0ZSB0eXBlIG9mIHZlcmlmaWNhdGlv biBhcHByb3ByaWF0ZSBiYXNlZCBvbiB0aGUKIAkgKiBiYWNrdXAgZm9ybWF0LiBUaGlzIHdpbGwg Y2xvc2UgJ2RpcicuCkBAIC0zNDYsNyArMzQxLDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFy Z3YpCiAJCXZlcmlmeV9wbGFpbl9iYWNrdXBfZGlyZWN0b3J5KCZjb250ZXh0LCBOVUxMLCBjb250 ZXh0LmJhY2t1cF9kaXJlY3RvcnksCiAJCQkJCQkJCQkgIGRpcik7CiAJZWxzZQotCQl2ZXJpZnlf dGFyX2JhY2t1cCgmY29udGV4dCwgZGlyKTsKKwkJdmVyaWZ5X3Rhcl9iYWNrdXAoJmNvbnRleHQs IGRpciwgJmJhc2VfYXJjaGl2ZV9wYXRoLCAmd2FsX2FyY2hpdmVfcGF0aCk7CiAKIAkvKgogCSAq IFRoZSAibWF0Y2hlZCIgZmxhZyBzaG91bGQgbm93IGJlIHNldCBvbiBldmVyeSBlbnRyeSBpbiB0 aGUgaGFzaCB0YWJsZS4KQEAgLTM2NCw5ICszNTksMjggQEAgbWFpbihpbnQgYXJnYywgY2hhciAq KmFyZ3YpCiAJaWYgKGNvbnRleHQuZm9ybWF0ID09ICdwJyAmJiAhY29udGV4dC5za2lwX2NoZWNr c3VtcykKIAkJdmVyaWZ5X2JhY2t1cF9jaGVja3N1bXMoJmNvbnRleHQpOwogCi0JLyogQnkgZGVm YXVsdCwgbG9vayBmb3IgdGhlIFdBTCBpbiB0aGUgYmFja3VwIGRpcmVjdG9yeSwgdG9vLiAqLwor CS8qCisJICogQnkgZGVmYXVsdCwgV0FMIGZpbGVzIGFyZSBleHBlY3RlZCB0byBiZSBmb3VuZCBp biB0aGUgYmFja3VwIGRpcmVjdG9yeQorCSAqIGZvciBwbGFpbi1mb3JtYXQgYmFja3Vwcy4gSW4g dGhlIGNhc2Ugb2YgdGFyLWZvcm1hdCBiYWNrdXBzLCBpZiBhCisJICogc2VwYXJhdGUgV0FMIGFy Y2hpdmUgaXMgbm90IGZvdW5kLCB0aGUgV0FMIGZpbGVzIGFyZSBtb3N0IGxpa2VseQorCSAqIGlu Y2x1ZGVkIHdpdGhpbiB0aGUgbWFpbiBkYXRhIGRpcmVjdG9yeSBhcmNoaXZlLgorCSAqLwogCWlm ICh3YWxfcGF0aCA9PSBOVUxMKQotCQl3YWxfcGF0aCA9IHBzcHJpbnRmKCIlcy9wZ193YWwiLCBj b250ZXh0LmJhY2t1cF9kaXJlY3RvcnkpOworCXsKKwkJaWYgKGNvbnRleHQuZm9ybWF0ID09ICdw JykKKwkJCXdhbF9wYXRoID0gcHNwcmludGYoIiVzL3BnX3dhbCIsIGNvbnRleHQuYmFja3VwX2Rp cmVjdG9yeSk7CisJCWVsc2UgaWYgKHdhbF9hcmNoaXZlX3BhdGgpCisJCQl3YWxfcGF0aCA9IHdh bF9hcmNoaXZlX3BhdGg7CisJCWVsc2UgaWYgKGJhc2VfYXJjaGl2ZV9wYXRoKQorCQkJd2FsX3Bh dGggPSBiYXNlX2FyY2hpdmVfcGF0aDsKKwkJZWxzZQorCQl7CisJCQlwZ19sb2dfZXJyb3IoIldB TCBhcmNoaXZlIG5vdCBmb3VuZCIpOworCQkJcGdfbG9nX2Vycm9yX2hpbnQoIlNwZWNpZnkgdGhl IGNvcnJlY3QgcGF0aCB1c2luZyB0aGUgb3B0aW9uIC13Ly0td2FsLXBhdGguICAiCisJCQkJCQkJ ICAiT3IgeW91IG11c3QgdXNlIC1uLy0tbm8tcGFyc2Utd2FsIHdoZW4gdmVyaWZ5aW5nIGEgdGFy LWZvcm1hdCBiYWNrdXAuIik7CisJCQlleGl0KDEpOworCQl9CisJfQogCiAJLyoKIAkgKiBUcnkg dG8gcGFyc2UgdGhlIHJlcXVpcmVkIHJhbmdlcyBvZiBXQUwgcmVjb3JkcywgdW5sZXNzIHdlIHdl cmUgdG9sZApAQCAtNzg3LDcgKzgwMSw4IEBAIHZlcmlmeV9jb250cm9sX2ZpbGUoY29uc3QgY2hh ciAqY29udHJvbHBhdGgsIHVpbnQ2NCBtYW5pZmVzdF9zeXN0ZW1faWRlbnRpZmllcikKICAqIGNs b3NlIHdoZW4gd2UncmUgZG9uZSB3aXRoIGl0LgogICovCiBzdGF0aWMgdm9pZAotdmVyaWZ5X3Rh cl9iYWNrdXAodmVyaWZpZXJfY29udGV4dCAqY29udGV4dCwgRElSICpkaXIpCit2ZXJpZnlfdGFy X2JhY2t1cCh2ZXJpZmllcl9jb250ZXh0ICpjb250ZXh0LCBESVIgKmRpciwgY2hhciAqKmJhc2Vf YXJjaGl2ZV9wYXRoLAorCQkJCSAgY2hhciAqKndhbF9hcmNoaXZlX3BhdGgpCiB7CiAJc3RydWN0 IGRpcmVudCAqZGlyZW50OwogCVNpbXBsZVB0ckxpc3QgdGFyZmlsZXMgPSB7TlVMTCwgTlVMTH07 CkBAIC04MTYsNyArODMxLDggQEAgdmVyaWZ5X3Rhcl9iYWNrdXAodmVyaWZpZXJfY29udGV4dCAq Y29udGV4dCwgRElSICpkaXIpCiAJCQljaGFyCSAgICpmdWxscGF0aDsKIAogCQkJZnVsbHBhdGgg PSBwc3ByaW50ZigiJXMvJXMiLCBjb250ZXh0LT5iYWNrdXBfZGlyZWN0b3J5LCBmaWxlbmFtZSk7 Ci0JCQlwcmVjaGVja190YXJfYmFja3VwX2ZpbGUoY29udGV4dCwgZmlsZW5hbWUsIGZ1bGxwYXRo LCAmdGFyZmlsZXMpOworCQkJcHJlY2hlY2tfdGFyX2JhY2t1cF9maWxlKGNvbnRleHQsIGZpbGVu YW1lLCBmdWxscGF0aCwgJnRhcmZpbGVzLAorCQkJCQkJCQkJIGJhc2VfYXJjaGl2ZV9wYXRoLCB3 YWxfYXJjaGl2ZV9wYXRoKTsKIAkJCXBmcmVlKGZ1bGxwYXRoKTsKIAkJfQogCX0KQEAgLTg3NSwx MSArODkxLDEzIEBAIHZlcmlmeV90YXJfYmFja3VwKHZlcmlmaWVyX2NvbnRleHQgKmNvbnRleHQs IERJUiAqZGlyKQogICoKICAqIFRoZSBhcmd1bWVudHMgdG8gdGhpcyBmdW5jdGlvbiBhcmUgbW9z dGx5IHRoZSBzYW1lIGFzIHRoZQogICogdmVyaWZ5X3BsYWluX2JhY2t1cF9maWxlLiBUaGUgYWRk aXRpb25hbCBhcmd1bWVudCBvdXRwdXRzIGEgbGlzdCBvZiB2YWxpZAotICogdGFyIGZpbGVzLgor ICogdGFyIGZpbGVzLCBhbG9uZyB3aXRoIHRoZSBmdWxsIHBhdGhzIHRvIHRoZSBtYWluIGFyY2hp dmUgYW5kIHRoZSBXQUwKKyAqIGRpcmVjdG9yeSBhcmNoaXZlLgogICovCiBzdGF0aWMgdm9pZAog cHJlY2hlY2tfdGFyX2JhY2t1cF9maWxlKHZlcmlmaWVyX2NvbnRleHQgKmNvbnRleHQsIGNoYXIg KnJlbHBhdGgsCi0JCQkJCQkgY2hhciAqZnVsbHBhdGgsIFNpbXBsZVB0ckxpc3QgKnRhcmZpbGVz KQorCQkJCQkJIGNoYXIgKmZ1bGxwYXRoLCBTaW1wbGVQdHJMaXN0ICp0YXJmaWxlcywKKwkJCQkJ CSBjaGFyICoqYmFzZV9hcmNoaXZlX3BhdGgsIGNoYXIgKip3YWxfYXJjaGl2ZV9wYXRoKQogewog CXN0cnVjdCBzdGF0IHNiOwogCU9pZAkJCXRibHNwY19vaWQgPSBJbnZhbGlkT2lkOwpAQCAtOTE4 LDkgKzkzNiwxNyBAQCBwcmVjaGVja190YXJfYmFja3VwX2ZpbGUodmVyaWZpZXJfY29udGV4dCAq Y29udGV4dCwgY2hhciAqcmVscGF0aCwKIAkgKiBleHRlbnNpb24gc3VjaCBhcyAuZ3osIC5sejQs IG9yIC56c3QuCiAJICovCiAJaWYgKHN0cm5jbXAoImJhc2UiLCByZWxwYXRoLCA0KSA9PSAwKQor CXsKIAkJc3VmZml4ID0gcmVscGF0aCArIDQ7CisKKwkJKmJhc2VfYXJjaGl2ZV9wYXRoID0gcHN0 cmR1cChmdWxscGF0aCk7CisJfQogCWVsc2UgaWYgKHN0cm5jbXAoInBnX3dhbCIsIHJlbHBhdGgs IDYpID09IDApCisJewogCQlzdWZmaXggPSByZWxwYXRoICsgNjsKKworCQkqd2FsX2FyY2hpdmVf cGF0aCA9IHBzdHJkdXAoZnVsbHBhdGgpOworCX0KIAllbHNlCiAJewogCQkvKiBFeHBlY3RlZCBh IDx0YWJsZXNwYWNlb2lkPi50YXIgZmlsZSBoZXJlLiAqLwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9w Z192ZXJpZnliYWNrdXAvdC8wMDJfYWxnb3JpdGhtLnBsIGIvc3JjL2Jpbi9wZ192ZXJpZnliYWNr dXAvdC8wMDJfYWxnb3JpdGhtLnBsCmluZGV4IDA1NTYxOTFlYzlkLi5lZGM1MTVkNTkwNCAxMDA2 NDQKLS0tIGEvc3JjL2Jpbi9wZ192ZXJpZnliYWNrdXAvdC8wMDJfYWxnb3JpdGhtLnBsCisrKyBi L3NyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3QvMDAyX2FsZ29yaXRobS5wbApAQCAtMzAsMTAgKzMw LDYgQEAgc3ViIHRlc3RfY2hlY2tzdW1zCiAJewogCQkjIEFkZCBzd2l0Y2ggdG8gZ2V0IGEgdGFy LWZvcm1hdCBiYWNrdXAKIAkJcHVzaCBAYmFja3VwLCAoJy0tZm9ybWF0JyA9PiAndGFyJyk7Ci0K LQkJIyBBZGQgc3dpdGNoIHRvIHNraXAgV0FMIHZlcmlmaWNhdGlvbiwgd2hpY2ggaXMgbm90IHll dCBzdXBwb3J0ZWQgZm9yCi0JCSMgdGFyLWZvcm1hdCBiYWNrdXBzCi0JCXB1c2ggQHZlcmlmeSwg KCctLW5vLXBhcnNlLXdhbCcpOwogCX0KIAogCSMgQSBiYWNrdXAgd2l0aCBhIGJvZ3VzIGFsZ29y aXRobSBzaG91bGQgZmFpbC4KZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3Qv MDAzX2NvcnJ1cHRpb24ucGwgYi9zcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC90LzAwM19jb3JydXB0 aW9uLnBsCmluZGV4IGIxZDY1YjhhYTBmLi44ODJkNzVkOWRjMiAxMDA2NDQKLS0tIGEvc3JjL2Jp bi9wZ192ZXJpZnliYWNrdXAvdC8wMDNfY29ycnVwdGlvbi5wbAorKysgYi9zcmMvYmluL3BnX3Zl cmlmeWJhY2t1cC90LzAwM19jb3JydXB0aW9uLnBsCkBAIC0xOTMsMTAgKzE5Myw4IEBAIGZvciBt eSAkc2NlbmFyaW8gKEBzY2VuYXJpbykKIAkJCWNvbW1hbmRfb2soWyAkdGFyLCAnLWNmJyA9PiAi JHRhcl9iYWNrdXBfcGF0aC9iYXNlLnRhciIsICcuJyBdKTsKIAkJCWNoZGlyKCRjd2QpIHx8IGRp ZSAiY2hkaXI6ICQhIjsKIAotCQkJIyBOb3cgY2hlY2sgdGhhdCB0aGUgYmFja3VwIG5vIGxvbmdl ciB2ZXJpZmllcy4gV2UgbXVzdCB1c2UgLW4KLQkJCSMgaGVyZSwgYmVjYXVzZSBwZ193YWxkdW1w IGNhbid0IHlldCByZWFkIFdBTCBmcm9tIGEgdGFyZmlsZS4KIAkJCWNvbW1hbmRfZmFpbHNfbGlr ZSgKLQkJCQlbICdwZ192ZXJpZnliYWNrdXAnLCAnLS1uby1wYXJzZS13YWwnLCAkdGFyX2JhY2t1 cF9wYXRoIF0sCisJCQkJWyAncGdfdmVyaWZ5YmFja3VwJywgJHRhcl9iYWNrdXBfcGF0aCBdLAog CQkJCSRzY2VuYXJpby0+eydmYWlsc19saWtlJ30sCiAJCQkJImNvcnJ1cHQgYmFja3VwIGZhaWxz IHZlcmlmaWNhdGlvbjogJG5hbWUiKTsKIApkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ192ZXJpZnli YWNrdXAvdC8wMDhfdW50YXIucGwgYi9zcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC90LzAwOF91bnRh ci5wbAppbmRleCBhZTY3YWU4NWEzMS4uMTYxYzA4YzE5MGQgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4v cGdfdmVyaWZ5YmFja3VwL3QvMDA4X3VudGFyLnBsCisrKyBiL3NyYy9iaW4vcGdfdmVyaWZ5YmFj a3VwL3QvMDA4X3VudGFyLnBsCkBAIC00Nyw3ICs0Nyw2IEBAIG15ICR0c29pZCA9ICRwcmltYXJ5 LT5zYWZlX3BzcWwoCiAJCVNFTEVDVCBvaWQgRlJPTSBwZ190YWJsZXNwYWNlIFdIRVJFIHNwY25h bWUgPSAncmVncmVzc190czEnKSk7CiAKIG15ICRiYWNrdXBfcGF0aCA9ICRwcmltYXJ5LT5iYWNr dXBfZGlyIC4gJy9zZXJ2ZXItYmFja3VwJzsKLW15ICRleHRyYWN0X3BhdGggPSAkcHJpbWFyeS0+ YmFja3VwX2RpciAuICcvZXh0cmFjdGVkLWJhY2t1cCc7CiAKIG15IEB0ZXN0X2NvbmZpZ3VyYXRp b24gPSAoCiAJewpAQCAtMTIzLDE0ICsxMjIsMTIgQEAgZm9yIG15ICR0YyAoQHRlc3RfY29uZmln dXJhdGlvbikKIAkJIyBWZXJpZnkgdGFyIGJhY2t1cC4KIAkJJHByaW1hcnktPmNvbW1hbmRfb2so CiAJCQlbCi0JCQkJJ3BnX3ZlcmlmeWJhY2t1cCcsICctLW5vLXBhcnNlLXdhbCcsCi0JCQkJJy0t ZXhpdC1vbi1lcnJvcicsICRiYWNrdXBfcGF0aCwKKwkJCQkncGdfdmVyaWZ5YmFja3VwJywgJy0t ZXhpdC1vbi1lcnJvcicsICRiYWNrdXBfcGF0aCwKIAkJCV0sCiAJCQkidmVyaWZ5IGJhY2t1cCwg Y29tcHJlc3Npb24gJG1ldGhvZCIpOwogCiAJCSMgQ2xlYW51cC4KIAkJcm10cmVlKCRiYWNrdXBf cGF0aCk7Ci0JCXJtdHJlZSgkZXh0cmFjdF9wYXRoKTsKIAl9CiB9CiAKZGlmZiAtLWdpdCBhL3Ny Yy9iaW4vcGdfdmVyaWZ5YmFja3VwL3QvMDEwX2NsaWVudF91bnRhci5wbCBiL3NyYy9iaW4vcGdf dmVyaWZ5YmFja3VwL3QvMDEwX2NsaWVudF91bnRhci5wbAppbmRleCAxYWM3YjVkYjc1YS4uOTY3 MGZiZTRmZGEgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfdmVyaWZ5YmFja3VwL3QvMDEwX2NsaWVu dF91bnRhci5wbAorKysgYi9zcmMvYmluL3BnX3ZlcmlmeWJhY2t1cC90LzAxMF9jbGllbnRfdW50 YXIucGwKQEAgLTMyLDcgKzMyLDYgQEAgcHJpbnQgJGpmICRqdW5rX2RhdGE7CiBjbG9zZSAkamY7 CiAKIG15ICRiYWNrdXBfcGF0aCA9ICRwcmltYXJ5LT5iYWNrdXBfZGlyIC4gJy9jbGllbnQtYmFj a3VwJzsKLW15ICRleHRyYWN0X3BhdGggPSAkcHJpbWFyeS0+YmFja3VwX2RpciAuICcvZXh0cmFj dGVkLWJhY2t1cCc7CiAKIG15IEB0ZXN0X2NvbmZpZ3VyYXRpb24gPSAoCiAJewpAQCAtMTM3LDEz ICsxMzYsMTEgQEAgZm9yIG15ICR0YyAoQHRlc3RfY29uZmlndXJhdGlvbikKIAkJIyBWZXJpZnkg dGFyIGJhY2t1cC4KIAkJJHByaW1hcnktPmNvbW1hbmRfb2soCiAJCQlbCi0JCQkJJ3BnX3Zlcmlm eWJhY2t1cCcsICctLW5vLXBhcnNlLXdhbCcsCi0JCQkJJy0tZXhpdC1vbi1lcnJvcicsICRiYWNr dXBfcGF0aCwKKwkJCQkncGdfdmVyaWZ5YmFja3VwJywgJy0tZXhpdC1vbi1lcnJvcicsICRiYWNr dXBfcGF0aCwKIAkJCV0sCiAJCQkidmVyaWZ5IGJhY2t1cCwgY29tcHJlc3Npb24gJG1ldGhvZCIp OwogCiAJCSMgQ2xlYW51cC4KLQkJcm10cmVlKCRleHRyYWN0X3BhdGgpOwogCQlybXRyZWUoJGJh Y2t1cF9wYXRoKTsKIAl9CiB9Ci0tIAoyLjQ3LjEKCg== --0000000000004f3241064b13b9d4--