Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtp (Exim 4.80) (envelope-from ) id 1YiiQ0-00079Z-27 for pgsql-hackers@arkaria.postgresql.org; Thu, 16 Apr 2015 11:57:16 +0000 Received: from localhost ([127.0.0.1] helo=postgresql.org) by malur.postgresql.org with smtp (Exim 4.80) (envelope-from ) id 1YiiPz-0007Qt-6e for pgsql-hackers@arkaria.postgresql.org; Thu, 16 Apr 2015 11:57:15 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.2:DHE_RSA_AES_256_CBC_SHA256:256) (Exim 4.80) (envelope-from ) id 1YiiPx-0007Qn-Fw for pgsql-hackers@postgresql.org; Thu, 16 Apr 2015 11:57:13 +0000 Received: from mail-wi0-x22c.google.com ([2a00:1450:400c:c05::22c]) by magus.postgresql.org with esmtps (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.80) (envelope-from ) id 1YiiPr-0001HZ-Ls for pgsql-hackers@postgresql.org; Thu, 16 Apr 2015 11:57:12 +0000 Received: by wizk4 with SMTP id k4so191579425wiz.1 for ; Thu, 16 Apr 2015 04:57:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:message-id:date:from:reply-to:user-agent:mime-version:to:cc :subject:references:in-reply-to:content-type; bh=0a26TZFR6Z4STiJsT8rp7dB7t/TKHMAfuuC/F2Br10E=; b=ZE7lfmR/W1HDx1G3FERRl/rPjRHcUzF9S7GrqKIwTl6aY75EqNaH5DkUDEvqIgB4hs 9C41Hj+LUVAEzWm15Wx3FqljwjfwsygWnG8Uh8uTljsfx0SJhf9f5btKR339QwZgvItC J7AXt5/n6r3rrAuzw/shR12AKhBSkoYVF4y12R9eBqRYYTO4mgfaMakOMx8VGa+eUMep yntMkJDeAb6jEBT4gIHUoW4x4ruO6m1Sr9AMkHNcUW9+xv5nJlgS0nmBdHcJ6lZBpY4S I/79BezVL6oZAHPPP9jXn9H0Qi7eE3XS0okvI19E4EhYaH8d/zyB1t8C691UOaHS56f0 +npA== X-Received: by 10.194.6.228 with SMTP id e4mr58986676wja.63.1429185426439; Thu, 16 Apr 2015 04:57:06 -0700 (PDT) Received: from [192.168.1.99] (dsl-hkibrasgw1-58c38f-82.dhcp.inet.fi. [88.195.143.82]) by mx.google.com with ESMTPSA id qt2sm10113186wjc.7.2015.04.16.04.57.04 (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 16 Apr 2015 04:57:05 -0700 (PDT) Message-ID: <552FA38F.9060005@iki.fi> Date: Thu, 16 Apr 2015 14:57:03 +0300 From: Heikki Linnakangas Reply-To: hlinnaka@iki.fi User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Icedove/31.6.0 MIME-Version: 1.0 To: Venkata Balaji N , Andres Freund CC: Fujii Masao , Borodin Vladimir , PostgreSQL-development Subject: Re: Streaming replication and WAL archive interactions References: <548AF1CB.80702@vmware.com> <689EB259-44C2-4820-B901-4F6B1C55A1E4@simply.name> <549083D6.1000301@vmware.com> <54949108.3030109@vmware.com> In-Reply-To: Content-Type: multipart/mixed; boundary="------------080102050905040007070609" X-Pg-Spam-Score: -2.3 (--) List-Archive: List-Help: List-ID: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: X-Mailing-List: pgsql-hackers Precedence: bulk Sender: pgsql-hackers-owner@postgresql.org This is a multi-part message in MIME format. --------------080102050905040007070609 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit On 03/01/2015 12:36 AM, Venkata Balaji N wrote: > Patch did get applied successfully to the latest master. Can you please > rebase. Here you go. On 01/31/2015 03:07 PM, Andres Freund wrote: > On 2014-12-19 22:56:40 +0200, Heikki Linnakangas wrote: >> This add two new archive_modes, 'shared' and 'always', to indicate whether >> the WAL archive is shared between the primary and standby, or not. In >> shared mode, the standby tracks which files have been archived by the >> primary. The standby refrains from recycling files that the primary has >> not yet archived, and at failover, the standby archives all those files too >> from the old timeline. In 'always' mode, the standby's WAL archive is >> taken to be separate from the primary's, and the standby independently >> archives all files it receives from the primary. > > I don't really like this approach. Sharing a archive is rather dangerous > in my experience - if your old master comes up again (and writes in the > last wal file) or similar, you can get into really bad situations. It doesn't have to actually be shared. The master and standby could archive to different locations, but the responsibility of archiving is shared, so that on promotion, the standby ensures that every WAL file gets archived. If the master didn't do it, then the standby will. Yes, if the master comes up again, it might try to archive a file that the standby already archived. But that's not so bad. Both copies of the file will be identical. You could put logic in archive_command to check, if the file already exists in the archive, whether the contents are identical, and return success without doing anything if they are. Oh, hang on, that's not necessarily true. On promotion, the standby archives the last, partial WAL segment from the old timeline. That's just wrong (http://www.postgresql.org/message-id/52FCD37C.3070806@vmware.com), and in fact I somehow thought I changed that already, but apparently not. So let's stop doing that. > What I was thinking about was instead trying to detect the point up to > which files were safely archived by running restore command to check for > the presence of archived files. Then archive anything that has valid > content and isn't yet archived. That doesn't sound particularly > complicated to me. Hmm. That assumes that the standby has a valid restore_command, and can access the WAL archive. Not a too unreasonable requirement I guess, but with the scheme I proposed, it's not necessary. Seems a bit silly to copy a whole segment from the archive just to check if it exists, though. - Heikki --------------080102050905040007070609 Content-Type: application/x-patch; name="v2-0001-Make-WAL-archival-behave-more-sensibly-in-standby.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="v2-0001-Make-WAL-archival-behave-more-sensibly-in-standby.pa"; filename*1="tch" RnJvbSBkYjVjNDMxMWJhZjRlM2EyYWUzMzA4YzRkMGQ5OTc1ZWUzNjkyYTE4 IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBIZWlra2kgTGlubmFr YW5nYXMgPGhlaWtraS5saW5uYWthbmdhc0Bpa2kuZmk+CkRhdGU6IFRodSwg MTYgQXByIDIwMTUgMTQ6NDA6MjQgKzAzMDAKU3ViamVjdDogW1BBVENIIHYy IDEvMV0gTWFrZSBXQUwgYXJjaGl2YWwgYmVoYXZlIG1vcmUgc2Vuc2libHkg aW4gc3RhbmRieQogbW9kZS4KClRoaXMgYWRkcyB0d28gbmV3IGFyY2hpdmVf bW9kZXMsICdzaGFyZWQnIGFuZCAnYWx3YXlzJywgdG8gaW5kaWNhdGUgd2hl dGhlcgp0aGUgV0FMIGFyY2hpdmUgaXMgc2hhcmVkIGJldHdlZW4gdGhlIHBy aW1hcnkgYW5kIHN0YW5kYnksIG9yIG5vdC4gSW4Kc2hhcmVkIG1vZGUsIHRo ZSBzdGFuZGJ5IHRyYWNrcyB3aGljaCBmaWxlcyBoYXZlIGJlZW4gYXJjaGl2 ZWQgYnkgdGhlCnByaW1hcnkuIFRoZSBzdGFuZGJ5IHJlZnJhaW5zIGZyb20g cmVjeWNsaW5nIGZpbGVzIHRoYXQgdGhlIHByaW1hcnkgaGFzCm5vdCB5ZXQg YXJjaGl2ZWQsIGFuZCBhdCBmYWlsb3ZlciwgdGhlIHN0YW5kYnkgYXJjaGl2 ZXMgYWxsIHRob3NlIGZpbGVzIHRvbwpmcm9tIHRoZSBvbGQgdGltZWxpbmUu IEluICdhbHdheXMnIG1vZGUsIHRoZSBzdGFuZGJ5J3MgV0FMIGFyY2hpdmUg aXMKdGFrZW4gdG8gYmUgc2VwYXJhdGUgZnJvbSB0aGUgcHJpbWFyeSdzLCBh bmQgdGhlIHN0YW5kYnkgaW5kZXBlbmRlbnRseQphcmNoaXZlcyBhbGwgZmls ZXMgaXQgcmVjZWl2ZXMgZnJvbSB0aGUgcHJpbWFyeS4KCkZ1amlpIE1hc2Fv IGFuZCBtZS4KLS0tCiBkb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwgICAgICAg ICAgICAgICAgICAgICAgfCAgMTIgKy0KIGRvYy9zcmMvc2dtbC9oaWdoLWF2 YWlsYWJpbGl0eS5zZ21sICAgICAgICAgICB8ICA0OCArKysrKysrCiBkb2Mv c3JjL3NnbWwvcHJvdG9jb2wuc2dtbCAgICAgICAgICAgICAgICAgICAgfCAg MzEgKysrKysKIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYyAg ICAgICAgICAgICB8ICAyOSArKysrLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rl ci9wb3N0bWFzdGVyLmMgICAgICAgICAgIHwgIDM3ICsrKystLQogc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuYyAgICAgICAgIHwgMTcy ICsrKysrKysrKysrKysrKysrKysrLS0tLS0tCiBzcmMvYmFja2VuZC9yZXBs aWNhdGlvbi93YWxzZW5kZXIuYyAgICAgICAgICAgfCAgNDcgKysrKysrKwog c3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYyAgICAgICAgICAgICAgICAg IHwgIDIxICsrLS0KIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNx bC5jb25mLnNhbXBsZSB8ICAgMiArLQogc3JjL2luY2x1ZGUvYWNjZXNzL3hs b2cuaCAgICAgICAgICAgICAgICAgICAgIHwgIDE0ICsrLQogMTAgZmlsZXMg Y2hhbmdlZCwgMzUxIGluc2VydGlvbnMoKyksIDYyIGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbCBiL2RvYy9z cmMvc2dtbC9jb25maWcuc2dtbAppbmRleCBiMzBjNjhkLi5lMzUyYjhlIDEw MDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKKysrIGIvZG9j L3NyYy9zZ21sL2NvbmZpZy5zZ21sCkBAIC0yNTIxLDcgKzI1MjEsNyBAQCBp bmNsdWRlX2RpciAnY29uZi5kJwogCiAgICAgPHZhcmlhYmxlbGlzdD4KICAg ICAgPHZhcmxpc3RlbnRyeSBpZD0iZ3VjLWFyY2hpdmUtbW9kZSIgeHJlZmxh YmVsPSJhcmNoaXZlX21vZGUiPgotICAgICAgPHRlcm0+PHZhcm5hbWU+YXJj aGl2ZV9tb2RlPC92YXJuYW1lPiAoPHR5cGU+Ym9vbGVhbjwvdHlwZT4pCisg ICAgICA8dGVybT48dmFybmFtZT5hcmNoaXZlX21vZGU8L3Zhcm5hbWU+ICg8 dHlwZT5lbnVtPC90eXBlPikKICAgICAgIDxpbmRleHRlcm0+CiAgICAgICAg PHByaW1hcnk+PHZhcm5hbWU+YXJjaGl2ZV9tb2RlPC8+IGNvbmZpZ3VyYXRp b24gcGFyYW1ldGVyPC9wcmltYXJ5PgogICAgICAgPC9pbmRleHRlcm0+CkBA IC0yNTMwLDcgKzI1MzAsMTUgQEAgaW5jbHVkZV9kaXIgJ2NvbmYuZCcKICAg ICAgICA8cGFyYT4KICAgICAgICAgV2hlbiA8dmFybmFtZT5hcmNoaXZlX21v ZGU8Lz4gaXMgZW5hYmxlZCwgY29tcGxldGVkIFdBTCBzZWdtZW50cwogICAg ICAgICBhcmUgc2VudCB0byBhcmNoaXZlIHN0b3JhZ2UgYnkgc2V0dGluZwot ICAgICAgICA8eHJlZiBsaW5rZW5kPSJndWMtYXJjaGl2ZS1jb21tYW5kIj4u CisgICAgICAgIDx4cmVmIGxpbmtlbmQ9Imd1Yy1hcmNoaXZlLWNvbW1hbmQi Pi4gSW4gYWRkaXRpb24gdG8gPGxpdGVyYWw+b2ZmPC8+LAorICAgICAgICB0 byBkaXNhYmxlLCB0aGVyZSBhcmUgdGhyZWUgbW9kZXM6IDxsaXRlcmFsPm9u PC8+LCA8bGl0ZXJhbD5zaGFyZWQ8Lz4sCisgICAgICAgIGFuZCA8bGl0ZXJh bD5hbHdheXM8Lz4uIER1cmluZyBub3JtYWwgb3BlcmF0aW9uLCB0aGVyZSBp cyBubworICAgICAgICBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIHRocmVlIG1v ZGVzLCBidXQgaW4gYXJjaGl2ZSByZWNvdmVyeSBvcgorICAgICAgICBzdGFu ZGJ5IG1vZGUsIGl0IGluZGljYXRlcyB3aGV0aGVyIHRoZSBXQUwgYXJjaGl2 ZSBpcyBzaGFyZWQgYmV0d2VlbgorICAgICAgICB0aGUgcHJpbWFyeSBhbmQg dGhlIHN0YW5kYnkgc2VydmVyIG9yIG5vdC4gU2VlCisgICAgICAgIDx4cmVm IGxpbmtlbmQ9ImNvbnRpbnVvdXMtYXJjaGl2aW5nLWluLXN0YW5kYnkiPiBm b3IgZGV0YWlscy4KKyAgICAgICA8L3BhcmE+ICAKKyAgICAgICA8cGFyYT4K ICAgICAgICAgPHZhcm5hbWU+YXJjaGl2ZV9tb2RlPC8+IGFuZCA8dmFybmFt ZT5hcmNoaXZlX2NvbW1hbmQ8Lz4gYXJlCiAgICAgICAgIHNlcGFyYXRlIHZh cmlhYmxlcyBzbyB0aGF0IDx2YXJuYW1lPmFyY2hpdmVfY29tbWFuZDwvPiBj YW4gYmUKICAgICAgICAgY2hhbmdlZCB3aXRob3V0IGxlYXZpbmcgYXJjaGl2 aW5nIG1vZGUuCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvaGlnaC1hdmFp bGFiaWxpdHkuc2dtbCBiL2RvYy9zcmMvc2dtbC9oaWdoLWF2YWlsYWJpbGl0 eS5zZ21sCmluZGV4IGExN2Y1NTUuLjYyZjdjNzUgMTAwNjQ0Ci0tLSBhL2Rv Yy9zcmMvc2dtbC9oaWdoLWF2YWlsYWJpbGl0eS5zZ21sCisrKyBiL2RvYy9z cmMvc2dtbC9oaWdoLWF2YWlsYWJpbGl0eS5zZ21sCkBAIC0xMjIwLDYgKzEy MjAsNTQgQEAgcHJpbWFyeV9zbG90X25hbWUgPSAnbm9kZV9hX3Nsb3QnCiAK ICAgIDwvc2VjdDM+CiAgIDwvc2VjdDI+CisKKyAgPHNlY3QyIGlkPSJjb250 aW51b3VzLWFyY2hpdmluZy1pbi1zdGFuZGJ5Ij4KKyAgIDx0aXRsZT5Db250 aW51b3VzIGFyY2hpdmluZyBpbiBzdGFuZGJ5PC90aXRsZT4KKworICAgPGlu ZGV4dGVybT4KKyAgICAgPHByaW1hcnk+Y29udGludW91cyBhcmNoaXZpbmc8 L3ByaW1hcnk+CisgICAgIDxzZWNvbmRhcnk+aW4gc3RhbmRieTwvc2Vjb25k YXJ5PgorICAgPC9pbmRleHRlcm0+CisKKyAgIDxwYXJhPgorICAgICBXaGVu IGNvbnRpbnVvdXMgV0FMIGFyY2hpdmluZyBpcyB1c2VkIGluIGEgc3RhbmRi eSwgdGhlcmUgYXJlIHR3bworICAgICBkaWZmZXJlbnQgc2NlbmFyaW9zOiB0 aGUgV0FMIGFyY2hpdmUgY2FuIGJlIHNoYXJlZCBiZXR3ZWVuIHRoZSBwcmlt YXJ5CisgICAgIGFuZCB0aGUgc3RhbmRieSwgb3IgdGhlIHN0YW5kYnkgY2Fu IGhhdmUgaXRzIG93biBXQUwgYXJjaGl2ZS4gSW4gdGhlCisgICAgIHNoYXJl ZCBhcmNoaXZlIHNjZW5hcmlvLCA8dmFybmFtZT5hcmNoaXZlX21vZGU8L3Zh cm5hbWU+IG11c3QgYmUgc2V0IHRvCisgICAgIDxsaXRlcmFsPnNoYXJlZDwv bGl0ZXJhbD4sIGFuZCBpbiB0aGUgc2VwYXJhdGUgYXJjaGl2ZSBzY2VuYXJp bywgdG8KKyAgICAgPGxpdGVyYWw+YWx3YXlzPC9saXRlcmFsPi4gU2V0dGlu ZyBpdCB0byA8bGl0ZXJhbD5vbjwvbGl0ZXJhbD4gaW4gYQorICAgICBzdGFu ZGJ5IHNlcnZlciwgb3Igd2hlbiBwZXJmb3JtaW5nIHBvaW50LWluLXRpbWUg cmVjb3ZlcnksIGlzIG5vdAorICAgICBhbGxvd2VkIGFuZCBhbiBlcnJvciB3 aWxsIGJlIHJhaXNlZC4gV2hlbiBhIHNlcnZlciBpcyBub3QgaW4gcmVjb3Zl cnkKKyAgICAgbW9kZSwgdGhlcmUgaXMgbm8gZGlmZmVyZW5jZSBiZXR3ZWVu IDxsaXRlcmFsPm9uPC9saXRlcmFsPiwKKyAgICAgPGxpdGVyYWw+c2hhcmVk PC9saXRlcmFsPiwgYW5kIDxsaXRlcmFsPmFsd2F5czwvbGl0ZXJhbD4gbW9k ZXMuCisgICA8L3BhcmE+CisKKyAgIDxwYXJhPgorICAgICBJbiA8bGl0ZXJh bD5zaGFyZWQ8L2xpdGVyYWw+IGFyY2hpdmUgbW9kZSwgdGhlIHN0YW5kYnkg c2VydmVyIHRyaWVzIHRvCisgICAgIGVuc3VyZSB0aGF0IHRoZSBhcmNoaXZl IGlzIGNvbXBsZXRlLCBldmVuIGlmIHRoZSBwcmltYXJ5IGNyYXNoZXMgYW5k CisgICAgIGZhaWxvdmVyIGhhcHBlbnMuIFRoZSBzdGFuZGJ5IHNlcnZlciB3 aWxsIG5vdCBhcmNoaXZlIGFueSBXQUwgc2VnbWVudHMKKyAgICAgYXMgbG9u ZyBhcyBpdCBpcyBpbiBzdGFuZGJ5IG1vZGU7IGl0IGlzIHRoZSBwcmltYXJ5 IHNlcnZlcidzCisgICAgIHJlc3BvbnNpYmlsaXR5IHRvIGRvIHNvLiBJdCB3 aWxsLCBob3dldmVyLCBrZWVwIHRyYWNrIG9mIHdoaWNoIGZpbGVzCisgICAg IGhhdmUgYWxyZWFkeSBiZWVuIGFyY2hpdmVkIGJ5IHRoZSBwcmltYXJ5LCBh bmQgaWYgZmFpbG92ZXIgaGFwcGVucywgaXQKKyAgICAgdGFrZXMgb3ZlciBh bmQgYXR0ZW1wdHMgdG8gYXJjaGl2ZSBhbnkgZmlsZXMgdGhhdCB0aGUgcHJp bWFyeSBoYWQgbm90CisgICAgIHlldCBhcmNoaXZlZC4KKyAgIDwvcGFyYT4K KworICAgPHBhcmE+CisgICAgIEluIDxsaXRlcmFsPmFsd2F5czwvbGl0ZXJh bD4gYXJjaGl2ZSBtb2RlLCB0aGUgc3RhbmRieSBzZXJ2ZXIgd2lsbAorICAg ICBhcmNoaXZlIGFsbCBXQUwgaXQgcmVjZWl2ZXMsIHdoZXRoZXIgaXQncyB0 aHJvdWdoIHN0cmVhbWluZyByZXBsaWNhdGlvbgorICAgICBvciBieSByZXN0 b3JpbmcgZnJvbSB0aGUgcHJpbWFyeSdzIGFyY2hpdmUgdXNpbmcKKyAgICAg PHZhcm5hbWU+cmVzdG9yZV9jb21tYW5kPC92YXJuYW1lPi4KKyAgIDwvcGFy YT4KKworICAgPHBhcmE+CisgICAgIEluIGNhc2NhZGluZyByZXBsaWNhdGlv biwgdGhlIGZpcnN0IHN0YW5kYnkgc2VydmVyIGFuZCB0aGUgY2FzY2FkZWQK KyAgICAgc3RhbmRieSBzZXJ2ZXJzIGNhbiB1c2UgPHZhcm5hbWU+YXJjaGl2 ZV9tb2RlPC92YXJuYW1lPiBzZXR0aW5ncy4gSW4KKyAgICAgZWFjaCBzdGFu ZGJ5LCBpdCBzaG91bGQgYmUgc2V0IHRvIDxsaXRlcmFsPnNoYXJlZDwvbGl0 ZXJhbD4gb3IKKyAgICAgPGxpdGVyYWw+YWx3YXlzPC9saXRlcmFsPiwgZGVw ZW5kaW5nIG9uIHdoZXRoZXIgdGhhdCBzdGFuZGJ5IHNoYXJlcyB0aGUKKyAg ICAgYXJjaGl2ZSB3aXRoIHRoZSBwcmltYXJ5IG9yIHN0YW5kYnkgaXQgaXMg Y29ubmVjdGVkIHRvLgorICAgPC9wYXJhPgorICA8L3NlY3QyPgogICA8L3Nl Y3QxPgogCiAgIDxzZWN0MSBpZD0id2FybS1zdGFuZGJ5LWZhaWxvdmVyIj4K ZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9wcm90b2NvbC5zZ21sIGIvZG9j L3NyYy9zZ21sL3Byb3RvY29sLnNnbWwKaW5kZXggM2E3NTNhMC4uYTQyMzQ0 ZSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNnbWwKKysr IGIvZG9jL3NyYy9zZ21sL3Byb3RvY29sLnNnbWwKQEAgLTE2NDYsNiArMTY0 NiwzNyBAQCBUaGUgY29tbWFuZHMgYWNjZXB0ZWQgaW4gd2Fsc2VuZGVyIG1v ZGUgYXJlOgogICAgICAgPC9wYXJhPgogICAgICAgPC9saXN0aXRlbT4KICAg ICAgIDwvdmFybGlzdGVudHJ5PgorICAgICAgPHZhcmxpc3RlbnRyeT4KKyAg ICAgIDx0ZXJtPgorICAgICAgICAgIFdBTCBhcmNoaXZhbCByZXBvcnQgbWVz c2FnZSAoQikKKyAgICAgIDwvdGVybT4KKyAgICAgIDxsaXN0aXRlbT4KKyAg ICAgIDxwYXJhPgorICAgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAgIDx2YXJs aXN0ZW50cnk+CisgICAgICA8dGVybT4KKyAgICAgICAgICBCeXRlMSgnYScp CisgICAgICA8L3Rlcm0+CisgICAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFy YT4KKyAgICAgICAgICBUZWxscyB0aGUgcmVjZWl2ZXIgdGhlIGxhc3QgYXJj aGl2ZWQgV0FMIHNlZ21lbnQuCisgICAgICA8L3BhcmE+CisgICAgICA8L2xp c3RpdGVtPgorICAgICAgPC92YXJsaXN0ZW50cnk+CisgICAgICA8dmFybGlz dGVudHJ5PgorICAgICAgPHRlcm0+CisgICAgICAgICAgQnl0ZTxyZXBsYWNl YWJsZT5uPC9yZXBsYWNlYWJsZT4KKyAgICAgIDwvdGVybT4KKyAgICAgIDxs aXN0aXRlbT4KKyAgICAgIDxwYXJhPgorICAgICAgICAgIEZpbGVuYW1lIG9m IHRoZSBsYXRlc3QgYXJjaGl2ZWQgZmlsZS4KKyAgICAgIDwvcGFyYT4KKyAg ICAgIDwvbGlzdGl0ZW0+CisgICAgICA8L3Zhcmxpc3RlbnRyeT4KKyAgICAg IDwvdmFyaWFibGVsaXN0PgorICAgICAgPC9wYXJhPgorICAgICAgPC9saXN0 aXRlbT4KKyAgICAgIDwvdmFybGlzdGVudHJ5PgogICAgICAgPC92YXJpYWJs ZWxpc3Q+CiAgICAgIDwvcGFyYT4KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL3RyYW5zYW0veGxvZy5jIGIvc3JjL2JhY2tlbmQvYWNjZXNz L3RyYW5zYW0veGxvZy5jCmluZGV4IDI1ODA5OTYuLjIyYjVkZGEgMTAwNjQ0 Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYworKysg Yi9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKQEAgLTg0LDcg Kzg0LDcgQEAgaW50CQkJbWluX3dhbF9zaXplID0gNTsJCS8qIDgwIE1CICov CiBpbnQJCQl3YWxfa2VlcF9zZWdtZW50cyA9IDA7CiBpbnQJCQlYTE9HYnVm ZmVycyA9IC0xOwogaW50CQkJWExvZ0FyY2hpdmVUaW1lb3V0ID0gMDsKLWJv b2wJCVhMb2dBcmNoaXZlTW9kZSA9IGZhbHNlOworaW50CQkJWExvZ0FyY2hp dmVNb2RlID0gQVJDSElWRV9NT0RFX09GRjsKIGNoYXIJICAgKlhMb2dBcmNo aXZlQ29tbWFuZCA9IE5VTEw7CiBib29sCQlFbmFibGVIb3RTdGFuZGJ5ID0g ZmFsc2U7CiBib29sCQlmdWxsUGFnZVdyaXRlcyA9IHRydWU7CkBAIC0xMzgs NiArMTM4LDI1IEBAIGNvbnN0IHN0cnVjdCBjb25maWdfZW51bV9lbnRyeSBz eW5jX21ldGhvZF9vcHRpb25zW10gPSB7CiAJe05VTEwsIDAsIGZhbHNlfQog fTsKIAorCisvKgorICogQWx0aG91Z2ggb25seSAib24iLCAib2ZmIiwgYW5k ICJhbHdheXMiIGFyZSBkb2N1bWVudGVkLAorICogd2UgYWNjZXB0IGFsbCB0 aGUgbGlrZWx5IHZhcmlhbnRzIG9mICJvbiIgYW5kICJvZmYiLgorICovCitj b25zdCBzdHJ1Y3QgY29uZmlnX2VudW1fZW50cnkgYXJjaGl2ZV9tb2RlX29w dGlvbnNbXSA9IHsKKwl7InNoYXJlZCIsIEFSQ0hJVkVfTU9ERV9TSEFSRUQs IGZhbHNlfSwKKwl7ImFsd2F5cyIsIEFSQ0hJVkVfTU9ERV9BTFdBWVMsIGZh bHNlfSwKKwl7Im9uIiwgQVJDSElWRV9NT0RFX09OLCBmYWxzZX0sCisJeyJv ZmYiLCBBUkNISVZFX01PREVfT0ZGLCBmYWxzZX0sCisJeyJ0cnVlIiwgQVJD SElWRV9NT0RFX09OLCB0cnVlfSwKKwl7ImZhbHNlIiwgQVJDSElWRV9NT0RF X09GRiwgdHJ1ZX0sCisJeyJ5ZXMiLCBBUkNISVZFX01PREVfT04sIHRydWV9 LAorCXsibm8iLCBBUkNISVZFX01PREVfT0ZGLCB0cnVlfSwKKwl7IjEiLCBB UkNISVZFX01PREVfT04sIHRydWV9LAorCXsiMCIsIEFSQ0hJVkVfTU9ERV9P RkYsIHRydWV9LAorCXtOVUxMLCAwLCBmYWxzZX0KK307CisKIC8qCiAgKiBT dGF0aXN0aWNzIGZvciBjdXJyZW50IGNoZWNrcG9pbnQgYXJlIGNvbGxlY3Rl ZCBpbiB0aGlzIGdsb2JhbCBzdHJ1Y3QuCiAgKiBCZWNhdXNlIG9ubHkgdGhl IGNoZWNrcG9pbnRlciBvciBhIHN0YW5kLWFsb25lIGJhY2tlbmQgY2FuIHBl cmZvcm0KQEAgLTc1Niw3ICs3NzUsNyBAQCBzdGF0aWMgTWVtb3J5Q29udGV4 dCB3YWxEZWJ1Z0N4dCA9IE5VTEw7CiAjZW5kaWYKIAogc3RhdGljIHZvaWQg cmVhZFJlY292ZXJ5Q29tbWFuZEZpbGUodm9pZCk7Ci1zdGF0aWMgdm9pZCBl eGl0QXJjaGl2ZVJlY292ZXJ5KFRpbWVMaW5lSUQgZW5kVExJLCBYTG9nU2Vn Tm8gZW5kTG9nU2VnTm8pOworc3RhdGljIHZvaWQgZXhpdEFyY2hpdmVSZWNv dmVyeShUaW1lTGluZUlEIGVuZFRMSSwgWExvZ1JlY1B0ciBlbmRPZkxvZyk7 CiBzdGF0aWMgYm9vbCByZWNvdmVyeVN0b3BzQmVmb3JlKFhMb2dSZWFkZXJT dGF0ZSAqcmVjb3JkKTsKIHN0YXRpYyBib29sIHJlY292ZXJ5U3RvcHNBZnRl cihYTG9nUmVhZGVyU3RhdGUgKnJlY29yZCk7CiBzdGF0aWMgdm9pZCByZWNv dmVyeVBhdXNlc0hlcmUodm9pZCk7CkBAIC01OTQ5LDYgKzU5NjgsMTIgQEAg U3RhcnR1cFhMT0codm9pZCkKIAogCWlmIChBcmNoaXZlUmVjb3ZlcnlSZXF1 ZXN0ZWQpCiAJeworCQkvKiBhcmNoaXZlX21vZGU9b24gaXMgbm90IGFsbG93 ZWQgZHVyaW5nIGFyY2hpdmUgcmVjb3ZlcnkuICovCisJCWlmIChYTG9nQXJj aGl2ZU1vZGUgPT0gQVJDSElWRV9NT0RFX09OKQorCQkJZXJlcG9ydChFUlJP UiwKKwkJCQkJKGVycm1zZygiYXJjaGl2ZV9tb2RlPSdvbicgY2Fubm90IGJl IHVzZWQgaW4gYXJjaGl2ZSByZWNvdmVyeSIpLAorCQkJCQkgKGVycmhpbnQo IlVzZSAnc2hhcmVkJyBvciAnYWx3YXlzJyBtb2RlIGluc3RlYWQuIikpKSk7 CisKIAkJaWYgKFN0YW5kYnlNb2RlUmVxdWVzdGVkKQogCQkJZXJlcG9ydChM T0csCiAJCQkJCShlcnJtc2coImVudGVyaW5nIHN0YW5kYnkgbW9kZSIpKSk7 CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL3Bvc3RtYXN0 ZXIuYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvcG9zdG1hc3Rlci5jCmlu ZGV4IGE5ZjIwYWMuLjcyZmU0ZmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3Bvc3RtYXN0ZXIvcG9zdG1hc3Rlci5jCisrKyBiL3NyYy9iYWNrZW5kL3Bv c3RtYXN0ZXIvcG9zdG1hc3Rlci5jCkBAIC04MjgsOSArODI4LDkgQEAgUG9z dG1hc3Rlck1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKIAkJd3JpdGVf c3RkZXJyKCIlczogbWF4X3dhbF9zZW5kZXJzIG11c3QgYmUgbGVzcyB0aGFu IG1heF9jb25uZWN0aW9uc1xuIiwgcHJvZ25hbWUpOwogCQlFeGl0UG9zdG1h c3RlcigxKTsKIAl9Ci0JaWYgKFhMb2dBcmNoaXZlTW9kZSAmJiB3YWxfbGV2 ZWwgPT0gV0FMX0xFVkVMX01JTklNQUwpCisJaWYgKFhMb2dBcmNoaXZlTW9k ZSA+IEFSQ0hJVkVfTU9ERV9PRkYgJiYgd2FsX2xldmVsID09IFdBTF9MRVZF TF9NSU5JTUFMKQogCQllcmVwb3J0KEVSUk9SLAotCQkJCShlcnJtc2coIldB TCBhcmNoaXZhbCAoYXJjaGl2ZV9tb2RlPW9uKSByZXF1aXJlcyB3YWxfbGV2 ZWwgXCJhcmNoaXZlXCIsIFwiaG90X3N0YW5kYnlcIiwgb3IgXCJsb2dpY2Fs XCIiKSkpOworCQkJCShlcnJtc2coIldBTCBhcmNoaXZhbCAoYXJjaGl2ZV9t b2RlPW9uL2Fsd2F5cy9zaGFyZWQpIHJlcXVpcmVzIHdhbF9sZXZlbCBcImFy Y2hpdmVcIiwgXCJob3Rfc3RhbmRieVwiLCBvciBcImxvZ2ljYWxcIiIpKSk7 CiAJaWYgKG1heF93YWxfc2VuZGVycyA+IDAgJiYgd2FsX2xldmVsID09IFdB TF9MRVZFTF9NSU5JTUFMKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJt c2coIldBTCBzdHJlYW1pbmcgKG1heF93YWxfc2VuZGVycyA+IDApIHJlcXVp cmVzIHdhbF9sZXZlbCBcImFyY2hpdmVcIiwgXCJob3Rfc3RhbmRieVwiLCBv ciBcImxvZ2ljYWxcIiIpKSk7CkBAIC0xNjQ1LDEzICsxNjQ1LDIxIEBAIFNl cnZlckxvb3Aodm9pZCkKIAkJCQlzdGFydF9hdXRvdmFjX2xhdW5jaGVyID0g ZmFsc2U7IC8qIHNpZ25hbCBwcm9jZXNzZWQgKi8KIAkJfQogCi0JCS8qIElm IHdlIGhhdmUgbG9zdCB0aGUgYXJjaGl2ZXIsIHRyeSB0byBzdGFydCBhIG5l dyBvbmUgKi8KLQkJaWYgKFhMb2dBcmNoaXZpbmdBY3RpdmUoKSAmJiBQZ0Fy Y2hQSUQgPT0gMCAmJiBwbVN0YXRlID09IFBNX1JVTikKLQkJCVBnQXJjaFBJ RCA9IHBnYXJjaF9zdGFydCgpOwotCi0JCS8qIElmIHdlIGhhdmUgbG9zdCB0 aGUgc3RhdHMgY29sbGVjdG9yLCB0cnkgdG8gc3RhcnQgYSBuZXcgb25lICov Ci0JCWlmIChQZ1N0YXRQSUQgPT0gMCAmJiBwbVN0YXRlID09IFBNX1JVTikK LQkJCVBnU3RhdFBJRCA9IHBnc3RhdF9zdGFydCgpOworCQkvKgorCQkgKiBJ ZiB3ZSBoYXZlIGxvc3QgdGhlIGFyY2hpdmVyLCB0cnkgdG8gc3RhcnQgYSBu ZXcgb25lLgorCQkgKgorCQkgKiBJZiBXQUwgYXJjaGl2aW5nIGlzIGVuYWJs ZWQgYWx3YXlzLCB3ZSB0cnkgdG8gc3RhcnQgYSBuZXcgYXJjaGl2ZXIKKwkJ ICogZXZlbiBkdXJpbmcgcmVjb3ZlcnkuCisJCSAqLworCQlpZiAoUGdBcmNo UElEID09IDAgJiYgd2FsX2xldmVsID49IFdBTF9MRVZFTF9BUkNISVZFKQor CQl7CisJCQlpZiAoKHBtU3RhdGUgPT0gUE1fUlVOICYmIFhMb2dBcmNoaXZl TW9kZSA+IEFSQ0hJVkVfTU9ERV9PRkYpIHx8CisJCQkJKChwbVN0YXRlID09 IFBNX1JFQ09WRVJZIHx8IHBtU3RhdGUgPT0gUE1fSE9UX1NUQU5EQlkpICYm CisJCQkJIFhMb2dBcmNoaXZlTW9kZSA9PSBBUkNISVZFX01PREVfQUxXQVlT KSkKKwkJCXsKKwkJCQlQZ0FyY2hQSUQgPSBwZ2FyY2hfc3RhcnQoKTsKKwkJ CX0KKwkJfQogCiAJCS8qIElmIHdlIG5lZWQgdG8gc2lnbmFsIHRoZSBhdXRv dmFjdXVtIGxhdW5jaGVyLCBkbyBzbyBub3cgKi8KIAkJaWYgKGF2bGF1bmNo ZXJfbmVlZHNfc2lnbmFsKQpAQCAtNDgwNyw2ICs0ODE1LDE3IEBAIHNpZ3Vz cjFfaGFuZGxlcihTSUdOQUxfQVJHUykKIAkJQXNzZXJ0KEJnV3JpdGVyUElE ID09IDApOwogCQlCZ1dyaXRlclBJRCA9IFN0YXJ0QmFja2dyb3VuZFdyaXRl cigpOwogCisJCS8qCisJCSAqIFN0YXJ0IHRoZSBhcmNoaXZlciBpZiB3ZSdy ZSByZXNwb25zaWJsZSBmb3IgKHJlLSlhcmNoaXZpbmcgcmVjZWl2ZWQKKwkJ ICogZmlsZXMuCisJCSAqLworCQlBc3NlcnQoUGdBcmNoUElEID09IDApOwor CQlpZiAod2FsX2xldmVsID49IFdBTF9MRVZFTF9BUkNISVZFICYmCisJCQlY TG9nQXJjaGl2ZU1vZGUgPT0gQVJDSElWRV9NT0RFX0FMV0FZUykKKwkJewor CQkJUGdBcmNoUElEID0gcGdhcmNoX3N0YXJ0KCk7CisJCX0KKwogCQlwbVN0 YXRlID0gUE1fUkVDT1ZFUlk7CiAJfQogCWlmIChDaGVja1Bvc3RtYXN0ZXJT aWduYWwoUE1TSUdOQUxfQkVHSU5fSE9UX1NUQU5EQlkpICYmCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxyZWNlaXZlci5jIGIv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vd2FscmVjZWl2ZXIuYwppbmRleCA5 Yzc3MTBmLi5lNTNmZmViIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi93YWxyZWNlaXZlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxp Y2F0aW9uL3dhbHJlY2VpdmVyLmMKQEAgLTUyLDggKzUyLDExIEBACiAjaW5j bHVkZSAibGlicHEvcHFmb3JtYXQuaCIKICNpbmNsdWRlICJsaWJwcS9wcXNp Z25hbC5oIgogI2luY2x1ZGUgIm1pc2NhZG1pbi5oIgorI2luY2x1ZGUgInBn c3RhdC5oIgorI2luY2x1ZGUgInBvc3RtYXN0ZXIvcGdhcmNoLmgiCiAjaW5j bHVkZSAicmVwbGljYXRpb24vd2FscmVjZWl2ZXIuaCIKICNpbmNsdWRlICJy ZXBsaWNhdGlvbi93YWxzZW5kZXIuaCIKKyNpbmNsdWRlICJzdG9yYWdlL2Zk LmgiCiAjaW5jbHVkZSAic3RvcmFnZS9pcGMuaCIKICNpbmNsdWRlICJzdG9y YWdlL3Btc2lnbmFsLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wcm9jYXJyYXku aCIKQEAgLTEwNyw2ICsxMTAsOSBAQCBzdGF0aWMgc3RydWN0CiAJWExvZ1Jl Y1B0cglGbHVzaDsJCQkvKiBsYXN0IGJ5dGUgKyAxIGZsdXNoZWQgaW4gdGhl IHN0YW5kYnkgKi8KIH0JTG9nc3RyZWFtUmVzdWx0OwogCisvKiAqLworc3Rh dGljIGNoYXIgcHJpbWFyeV9sYXN0X2FyY2hpdmVkW01BWF9YRk5fQ0hBUlMg KyAxXTsKKwogc3RhdGljIFN0cmluZ0luZm9EYXRhIHJlcGx5X21lc3NhZ2U7 CiBzdGF0aWMgU3RyaW5nSW5mb0RhdGEgaW5jb21pbmdfbWVzc2FnZTsKIApA QCAtMTQxLDYgKzE0Nyw3IEBAIHN0YXRpYyB2b2lkIFhMb2dXYWxSY3ZGbHVz aChib29sIGR5aW5nKTsKIHN0YXRpYyB2b2lkIFhMb2dXYWxSY3ZTZW5kUmVw bHkoYm9vbCBmb3JjZSwgYm9vbCByZXF1ZXN0UmVwbHkpOwogc3RhdGljIHZv aWQgWExvZ1dhbFJjdlNlbmRIU0ZlZWRiYWNrKGJvb2wgaW1tZWQpOwogc3Rh dGljIHZvaWQgUHJvY2Vzc1dhbFNuZHJNZXNzYWdlKFhMb2dSZWNQdHIgd2Fs RW5kLCBUaW1lc3RhbXBUeiBzZW5kVGltZSk7CitzdGF0aWMgdm9pZCBQcm9j ZXNzQXJjaGl2YWxSZXBvcnQodm9pZCk7CiAKIC8qIFNpZ25hbCBoYW5kbGVy cyAqLwogc3RhdGljIHZvaWQgV2FsUmN2U2lnSHVwSGFuZGxlcihTSUdOQUxf QVJHUyk7CkBAIC01MjYsMjEgKzUzMywxMiBAQCBXYWxSZWNlaXZlck1haW4o dm9pZCkKIAkJICovCiAJCWlmIChyZWN2RmlsZSA+PSAwKQogCQl7Ci0JCQlj aGFyCQl4bG9nZm5hbWVbTUFYRk5BTUVMRU5dOwotCiAJCQlYTG9nV2FsUmN2 Rmx1c2goZmFsc2UpOwogCQkJaWYgKGNsb3NlKHJlY3ZGaWxlKSAhPSAwKQog CQkJCWVyZXBvcnQoUEFOSUMsCiAJCQkJCQkoZXJyY29kZV9mb3JfZmlsZV9h Y2Nlc3MoKSwKIAkJCQkJCSBlcnJtc2coImNvdWxkIG5vdCBjbG9zZSBsb2cg c2VnbWVudCAlczogJW0iLAogCQkJCQkJCQlYTG9nRmlsZU5hbWVQKHJlY3ZG aWxlVExJLCByZWN2U2VnTm8pKSkpOwotCi0JCQkvKgotCQkJICogQ3JlYXRl IC5kb25lIGZpbGUgZm9yY2libHkgdG8gcHJldmVudCB0aGUgc3RyZWFtZWQg c2VnbWVudCBmcm9tCi0JCQkgKiBiZWluZyBhcmNoaXZlZCBsYXRlci4KLQkJ CSAqLwotCQkJWExvZ0ZpbGVOYW1lKHhsb2dmbmFtZSwgcmVjdkZpbGVUTEks IHJlY3ZTZWdObyk7Ci0JCQlYTG9nQXJjaGl2ZUZvcmNlRG9uZSh4bG9nZm5h bWUpOwogCQl9CiAJCXJlY3ZGaWxlID0gLTE7CiAKQEAgLTg0Niw2ICs4NDQs MjYgQEAgWExvZ1dhbFJjdlByb2Nlc3NNc2codW5zaWduZWQgY2hhciB0eXBl LCBjaGFyICpidWYsIFNpemUgbGVuKQogCQkJCQlYTG9nV2FsUmN2U2VuZFJl cGx5KHRydWUsIGZhbHNlKTsKIAkJCQlicmVhazsKIAkJCX0KKwkJY2FzZSAn YSc6CQkJCS8qIEFyY2hpdmFsIHJlcG9ydCAqLworCQkJeworCQkJCS8qIHRo ZSBjb250ZW50IG9mIHRoZSBtZXNzYWdlIGlzIGEgZmlsZW5hbWUgKi8KKwkJ CQlpZiAobGVuID49IHNpemVvZihwcmltYXJ5X2xhc3RfYXJjaGl2ZWQpKQor CQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCShlcnJjb2RlKEVSUkNPREVf UFJPVE9DT0xfVklPTEFUSU9OKSwKKwkJCQkJCQkgZXJybXNnX2ludGVybmFs KCJpbnZhbGlkIGFyY2hpdmFsIHJlcG9ydCBtZXNzYWdlIHdpdGggbGVuZ3Ro ICVkIiwKKwkJCQkJCQkJCQkJIChpbnQpIGxlbikpKTsKKwkJCQltZW1jcHko cHJpbWFyeV9sYXN0X2FyY2hpdmVkLCBidWYsIGxlbik7CisJCQkJcHJpbWFy eV9sYXN0X2FyY2hpdmVkW2xlbl0gPSAnXDAnOworCQkJCWlmIChzdHJzcG4o YnVmLCBWQUxJRF9YRk5fQ0hBUlMpICE9IGxlbikKKwkJCQl7CisJCQkJCXBy aW1hcnlfbGFzdF9hcmNoaXZlZFswXSA9ICdcMCc7CisJCQkJCWVyZXBvcnQo RVJST1IsCisJCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9QUk9UT0NPTF9WSU9M QVRJT04pLAorCQkJCQkJCSBlcnJtc2dfaW50ZXJuYWwoInVuZXhwZWN0ZWQg Y2hhcmFjdGVyIGluIHByaW1hcnkncyBsYXN0IGFyY2hpdmVkIGZpbGVuYW1l IikpKTsKKwkJCQl9CisJCQkJUHJvY2Vzc0FyY2hpdmFsUmVwb3J0KCk7CisJ CQkJYnJlYWs7CisJCQl9CiAJCWRlZmF1bHQ6CiAJCQllcmVwb3J0KEVSUk9S LAogCQkJCQkoZXJyY29kZShFUlJDT0RFX1BST1RPQ09MX1ZJT0xBVElPTiks CkBAIC04NjcsMzkgKzg4NSwxOCBAQCBYTG9nV2FsUmN2V3JpdGUoY2hhciAq YnVmLCBTaXplIG5ieXRlcywgWExvZ1JlY1B0ciByZWNwdHIpCiAJewogCQlp bnQJCQlzZWdieXRlczsKIAotCQlpZiAocmVjdkZpbGUgPCAwIHx8ICFYTEJ5 dGVJblNlZyhyZWNwdHIsIHJlY3ZTZWdObykpCisJCWlmICghWExCeXRlSW5T ZWcocmVjcHRyLCByZWN2U2VnTm8pKQogCQl7CiAJCQlib29sCQl1c2VfZXhp c3RlbnQ7CiAKIAkJCS8qCi0JCQkgKiBmc3luYygpIGFuZCBjbG9zZSBjdXJy ZW50IGZpbGUgYmVmb3JlIHdlIHN3aXRjaCB0byBuZXh0IG9uZS4gV2UKLQkJ CSAqIHdvdWxkIG90aGVyd2lzZSBoYXZlIHRvIHJlb3BlbiB0aGlzIGZpbGUg dG8gZnN5bmMgaXQgbGF0ZXIKKwkJCSAqIFdlIHRha2UgY2FyZSB0byBhbHdh eXMgY2xvc2UgdGhlIGN1cnJlbnQgZmlsZSwgYWZ0ZXIgd3JpdGluZworCQkJ ICogdGhlIGxhc3QgYnl0ZSB0byBpdC4gU28gdGhpcyBzaG91bGRuJ3QgaGFw cGVuLgogCQkJICovCiAJCQlpZiAocmVjdkZpbGUgPj0gMCkKLQkJCXsKLQkJ CQljaGFyCQl4bG9nZm5hbWVbTUFYRk5BTUVMRU5dOwotCi0JCQkJWExvZ1dh bFJjdkZsdXNoKGZhbHNlKTsKLQotCQkJCS8qCi0JCQkJICogWExPRyBzZWdt ZW50IGZpbGVzIHdpbGwgYmUgcmUtcmVhZCBieSByZWNvdmVyeSBpbiBzdGFy dHVwCi0JCQkJICogcHJvY2VzcyBzb29uLCBzbyB3ZSBkb24ndCBhZHZpc2Ug dGhlIE9TIHRvIHJlbGVhc2UgY2FjaGUKLQkJCQkgKiBwYWdlcyBhc3NvY2lh dGVkIHdpdGggdGhlIGZpbGUgbGlrZSBYTG9nRmlsZUNsb3NlKCkgZG9lcy4K LQkJCQkgKi8KLQkJCQlpZiAoY2xvc2UocmVjdkZpbGUpICE9IDApCi0JCQkJ CWVyZXBvcnQoUEFOSUMsCi0JCQkJCQkJKGVycmNvZGVfZm9yX2ZpbGVfYWNj ZXNzKCksCi0JCQkJCQkJIGVycm1zZygiY291bGQgbm90IGNsb3NlIGxvZyBz ZWdtZW50ICVzOiAlbSIsCi0JCQkJCQkJCQlYTG9nRmlsZU5hbWVQKHJlY3ZG aWxlVExJLCByZWN2U2VnTm8pKSkpOwotCi0JCQkJLyoKLQkJCQkgKiBDcmVh dGUgLmRvbmUgZmlsZSBmb3JjaWJseSB0byBwcmV2ZW50IHRoZSBzdHJlYW1l ZCBzZWdtZW50Ci0JCQkJICogZnJvbSBiZWluZyBhcmNoaXZlZCBsYXRlci4K LQkJCQkgKi8KLQkJCQlYTG9nRmlsZU5hbWUoeGxvZ2ZuYW1lLCByZWN2Rmls ZVRMSSwgcmVjdlNlZ05vKTsKLQkJCQlYTG9nQXJjaGl2ZUZvcmNlRG9uZSh4 bG9nZm5hbWUpOwotCQkJfQotCQkJcmVjdkZpbGUgPSAtMTsKKwkJCQllcmVw b3J0KEVSUk9SLAorCQkJCQkJKGVycm1zZygidW5leHBlY3RlZCBXQUwgcmVj ZWl2ZSBsb2NhdGlvbiAlcyIsCisJCQkJCQkJCVhMb2dGaWxlTmFtZVAocmVj dkZpbGVUTEksIHJlY3ZTZWdObykpKSk7CiAKIAkJCS8qIENyZWF0ZS91c2Ug bmV3IGxvZyBmaWxlICovCiAJCQlYTEJ5dGVUb1NlZyhyZWNwdHIsIHJlY3ZT ZWdObyk7CkBAIC05NTQsNiArOTUxLDUxIEBAIFhMb2dXYWxSY3ZXcml0ZShj aGFyICpidWYsIFNpemUgbmJ5dGVzLCBYTG9nUmVjUHRyIHJlY3B0cikKIAkJ YnVmICs9IGJ5dGVzd3JpdHRlbjsKIAogCQlMb2dzdHJlYW1SZXN1bHQuV3Jp dGUgPSByZWNwdHI7CisKKwkJLyoKKwkJICogSWYgd2UganVzdCB3cm90ZSB0 aGUgbGFzdCBieXRlIHRvIHRoaXMgc2VnbWVudCwgZnN5bmMoKSBhbmQgY2xv c2UKKwkJICogY3VycmVudCBmaWxlIGJlZm9yZSB3ZSBzd2l0Y2ggdG8gbmV4 dCBvbmUuIFdlIHdvdWxkIG90aGVyd2lzZSBoYXZlCisJCSAqIHRvIHJlb3Bl biB0aGlzIGZpbGUgdG8gZnN5bmMgaXQgbGF0ZXIuCisJCSAqLworCQlpZiAo cmVjdk9mZiA9PSBYTE9HX1NFR19TSVpFKQorCQl7CisJCQljaGFyCQl4bG9n Zm5hbWVbTUFYRk5BTUVMRU5dOworCisJCQlYTG9nV2FsUmN2Rmx1c2goZmFs c2UpOworCisJCQkvKgorCQkJICogWExPRyBzZWdtZW50IGZpbGVzIHdpbGwg YmUgcmUtcmVhZCBieSByZWNvdmVyeSBpbiBzdGFydHVwCisJCQkgKiBwcm9j ZXNzIHNvb24sIHNvIHdlIGRvbid0IGFkdmlzZSB0aGUgT1MgdG8gcmVsZWFz ZSBjYWNoZQorCQkJICogcGFnZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBmaWxl IGxpa2UgWExvZ0ZpbGVDbG9zZSgpIGRvZXMuCisJCQkgKi8KKwkJCWlmIChj bG9zZShyZWN2RmlsZSkgIT0gMCkKKwkJCQllcmVwb3J0KFBBTklDLAorCQkJ CQkJKGVycmNvZGVfZm9yX2ZpbGVfYWNjZXNzKCksCisJCQkJCQkgZXJybXNn KCJjb3VsZCBub3QgY2xvc2UgbG9nIHNlZ21lbnQgJXM6ICVtIiwKKwkJCQkJ CQkJWExvZ0ZpbGVOYW1lUChyZWN2RmlsZVRMSSwgcmVjdlNlZ05vKSkpKTsK KwkJCXJlY3ZGaWxlID0gLTE7CisKKwkJCS8qCisJCQkgKiBOb3cgdGhhdCB0 aGlzIHNlZ21lbnQgaXMgY29tcGxldGUsIGRvIHdlIG5lZWQgdG8gYXJjaGl2 ZSBpdD8KKwkJCSAqCisJCQkgKiBJbiAnYWx3YXlzJyBtb2RlLCB3ZSBjbGVh cmx5IG5lZWQgdG8gYXJjaGl2ZSB0aGlzLgorCQkJICoKKwkJCSAqIEluICdz aGFyZWQnIG1vZGUsIHdlIG1pZ2h0IG5lZWQgdG8sIGlmIHdlIGdldCBwcm9t b3RlZCBiZWZvcmUKKwkJCSAqIHRoZSBtYXN0ZXIgaGFzIGFyY2hpdmVkIHRo aXMgZmlsZSwgc28gY3JlYXRlIGEgLnJlYWR5IGZpbGUuIEl0CisJCQkgKiB3 aWxsIGJlIHJlcGxhY2VkIHdpdGggLmRvbmUgbGF0ZXIsIGlmIHdlIGdldCBh Y2tub3dsZWRnZW1ldAorCQkJICogZnJvbSB0aGUgcHJpbWFyeSB0aGF0IHRo aXMgaGFzIGFscmVhZHkgYmVlbiBhcmNoaXZlZC4KKwkJCSAqCisJCQkgKiBJ biAnb24nIG1vZGUsIHdlJ3JlIG9ubHkgcmVzcG9uc2libGUgZm9yIFdBTCB3 ZSd2ZSBnZW5lcmF0ZWQKKwkJCSAqIG91cnNlbHZlcy4KKwkJCSAqLworCQkJ aWYgKFhMb2dBcmNoaXZlTW9kZSA9PSBBUkNISVZFX01PREVfQUxXQVlTIHx8 CisJCQkJWExvZ0FyY2hpdmVNb2RlID09IEFSQ0hJVkVfTU9ERV9TSEFSRUQp CisJCQl7CisJCQkJWExvZ0ZpbGVOYW1lKHhsb2dmbmFtZSwgcmVjdkZpbGVU TEksIHJlY3ZTZWdObyk7CisKKwkJCQlYTG9nQXJjaGl2ZUNoZWNrRG9uZSh4 bG9nZm5hbWUpOworCQkJfQorCQl9CiAJfQogfQogCkBAIC0xMjE1LDMgKzEy NTcsNjEgQEAgUHJvY2Vzc1dhbFNuZHJNZXNzYWdlKFhMb2dSZWNQdHIgd2Fs RW5kLCBUaW1lc3RhbXBUeiBzZW5kVGltZSkKIAkJcGZyZWUocmVjZWlwdHRp bWUpOwogCX0KIH0KKworLyoKKyAqIENyZWF0ZSAuZG9uZSBhbmQgLnJlYWR5 IGZpbGVzLCBiYXNlZCBvbiB0aGUgbWFzdGVyJ3MgbGFzdCBhcmNoaXZhbCBy ZXBvcnQuCisgKi8KK3N0YXRpYyB2b2lkCitQcm9jZXNzQXJjaGl2YWxSZXBv cnQodm9pZCkKK3sKKwlESVIJCSAgICp4bGRpcjsKKwlzdHJ1Y3QgZGlyZW50 ICp4bGRlOworCisJZWxvZyhERUJVRzIsICJyZWNlaXZlZCBhcmNoaXZhbCBy ZXBvcnQgZnJvbSBtYXN0ZXI6ICVzIiwKKwkJIHByaW1hcnlfbGFzdF9hcmNo aXZlZCk7CisKKwlpZiAoWExvZ0FyY2hpdmVNb2RlICE9IEFSQ0hJVkVfTU9E RV9TSEFSRUQpCisJCXJldHVybjsKKworCS8qIENoZWNrIHRoYXQgdGhlIGZp bGVuYW1lIHRoZSBwcmltYXJ5IHJlcG9ydGVkIGxvb2tzIHZhbGlkICovCisJ aWYgKHN0cmxlbihwcmltYXJ5X2xhc3RfYXJjaGl2ZWQpIDwgMjQgfHwKKwkJ c3Ryc3BuKHByaW1hcnlfbGFzdF9hcmNoaXZlZCwgIjAxMjM0NTY3ODlBQkNE RUYiKSAhPSAyNCkKKwkJcmV0dXJuOworCisJeGxkaXIgPSBBbGxvY2F0ZURp cihYTE9HRElSKTsKKwlpZiAoeGxkaXIgPT0gTlVMTCkKKwkJZXJlcG9ydChF UlJPUiwKKwkJCQkoZXJyY29kZV9mb3JfZmlsZV9hY2Nlc3MoKSwKKwkJCQkg ZXJybXNnKCJjb3VsZCBub3Qgb3BlbiB0cmFuc2FjdGlvbiBsb2cgZGlyZWN0 b3J5IFwiJXNcIjogJW0iLAorCQkJCQkJWExPR0RJUikpKTsKKworCXdoaWxl ICgoeGxkZSA9IFJlYWREaXIoeGxkaXIsIFhMT0dESVIpKSAhPSBOVUxMKQor CXsKKwkJLyoKKwkJICogV2UgaWdub3JlIHRoZSB0aW1lbGluZSBwYXJ0IG9m IHRoZSBYTE9HIHNlZ21lbnQgaWRlbnRpZmllcnMgaW4KKwkJICogZGVjaWRp bmcgd2hldGhlciBhIHNlZ21lbnQgaXMgc3RpbGwgbmVlZGVkLiAgVGhpcyBl bnN1cmVzIHRoYXQgd2UKKwkJICogd29uJ3QgcHJlbWF0dXJlbHkgcmVtb3Zl IGEgc2VnbWVudCBmcm9tIGEgcGFyZW50IHRpbWVsaW5lLiBXZSBjb3VsZAor CQkgKiBwcm9iYWJseSBiZSBhIGxpdHRsZSBtb3JlIHByb2FjdGl2ZSBhYm91 dCByZW1vdmluZyBzZWdtZW50cyBvZgorCQkgKiBub24tcGFyZW50IHRpbWVs aW5lcywgYnV0IHRoYXQgd291bGQgYmUgYSB3aG9sZSBsb3QgbW9yZQorCQkg KiBjb21wbGljYXRlZC4KKwkJICoKKwkJICogV2UgdXNlIHRoZSBhbHBoYW51 bWVyaWMgc29ydGluZyBwcm9wZXJ0eSBvZiB0aGUgZmlsZW5hbWVzIHRvIGRl Y2lkZQorCQkgKiB3aGljaCBvbmVzIGFyZSBlYXJsaWVyIHRoYW4gdGhlIGxh c3RvZmYgc2VnbWVudC4KKwkJICovCisJCWlmIChzdHJsZW4oeGxkZS0+ZF9u YW1lKSA9PSAyNCAmJgorCQkJc3Ryc3BuKHhsZGUtPmRfbmFtZSwgIjAxMjM0 NTY3ODlBQkNERUYiKSA9PSAyNCAmJgorCQkJc3RyY21wKHhsZGUtPmRfbmFt ZSArIDgsIHByaW1hcnlfbGFzdF9hcmNoaXZlZCArIDgpIDw9IDApCisJCXsK KwkJCVhMb2dBcmNoaXZlRm9yY2VEb25lKHhsZGUtPmRfbmFtZSk7CisJCX0K Kwl9CisKKwlGcmVlRGlyKHhsZGlyKTsKKworCS8qCisJICogUmVtZW1iZXIg dGhpcyBsb2NhdGlvbiBpbiBwZ3N0YXQgYXMgd2VsbC4gVGhpcyBtYWtlcyBp dCB2aXNpYmxlIGluCisJICogcGdfc3RhdF9hcmNoaXZlciwgYW5kIGFsbG93 cyB0aGUgbG9jYXRpb24gdG8gYmUgcmVsYXllZCB0byBjYXNjYWRlZAorCSAq IHN0YW5kYnlzLgorCSAqLworCXBnc3RhdF9zZW5kX2FyY2hpdmVyKHByaW1h cnlfbGFzdF9hcmNoaXZlZCwgZmFsc2UpOworfQpkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vd2Fsc2VuZGVyLmMgYi9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYwppbmRleCA0YTIwNTY5Li43NGJk ZWZmIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxz ZW5kZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5k ZXIuYwpAQCAtNTUsNiArNTUsNyBAQAogI2luY2x1ZGUgImxpYnBxL3BxZm9y bWF0LmgiCiAjaW5jbHVkZSAibWlzY2FkbWluLmgiCiAjaW5jbHVkZSAibm9k ZXMvcmVwbG5vZGVzLmgiCisjaW5jbHVkZSAicGdzdGF0LmgiCiAjaW5jbHVk ZSAicmVwbGljYXRpb24vYmFzZWJhY2t1cC5oIgogI2luY2x1ZGUgInJlcGxp Y2F0aW9uL2RlY29kZS5oIgogI2luY2x1ZGUgInJlcGxpY2F0aW9uL2xvZ2lj YWwuaCIKQEAgLTE1Miw2ICsxNTMsNyBAQCBzdGF0aWMgU3RyaW5nSW5mb0Rh dGEgdG1wYnVmOwogICogd2FsX3NlbmRlcl90aW1lb3V0IGRvZXNuJ3QgbmVl ZCB0byBiZSBhY3RpdmUuCiAgKi8KIHN0YXRpYyBUaW1lc3RhbXBUeiBsYXN0 X3JlcGx5X3RpbWVzdGFtcCA9IDA7CitzdGF0aWMgY2hhciBsYXN0X2FyY2hp dmFsX3JlcG9ydFtNQVhfWEZOX0NIQVJTICsgMV0gPSAiIjsKIAogLyogSGF2 ZSB3ZSBzZW50IGEgaGVhcnRiZWF0IG1lc3NhZ2UgYXNraW5nIGZvciByZXBs eSwgc2luY2UgbGFzdCByZXBseT8gKi8KIHN0YXRpYyBib29sIHdhaXRpbmdf Zm9yX3BpbmdfcmVzcG9uc2UgPSBmYWxzZTsKQEAgLTIwOSw2ICsyMTEsOCBA QCBzdGF0aWMgdm9pZCBQcm9jZXNzU3RhbmRieUhTRmVlZGJhY2tNZXNzYWdl KHZvaWQpOwogc3RhdGljIHZvaWQgUHJvY2Vzc1JlcGxpZXNJZkFueSh2b2lk KTsKIHN0YXRpYyB2b2lkIFdhbFNuZEtlZXBhbGl2ZShib29sIHJlcXVlc3RS ZXBseSk7CiBzdGF0aWMgdm9pZCBXYWxTbmRLZWVwYWxpdmVJZk5lY2Vzc2Fy eShUaW1lc3RhbXBUeiBub3cpOworc3RhdGljIHZvaWQgV2FsU25kQXJjaGl2 YWxSZXBvcnQodm9pZCk7CitzdGF0aWMgdm9pZCBXYWxTbmRBcmNoaXZhbFJl cG9ydElmTmVjZXNzYXJ5KHZvaWQpOwogc3RhdGljIHZvaWQgV2FsU25kQ2hl Y2tUaW1lT3V0KFRpbWVzdGFtcFR6IG5vdyk7CiBzdGF0aWMgbG9uZyBXYWxT bmRDb21wdXRlU2xlZXB0aW1lKFRpbWVzdGFtcFR6IG5vdyk7CiBzdGF0aWMg dm9pZCBXYWxTbmRQcmVwYXJlV3JpdGUoTG9naWNhbERlY29kaW5nQ29udGV4 dCAqY3R4LCBYTG9nUmVjUHRyIGxzbiwgVHJhbnNhY3Rpb25JZCB4aWQsIGJv b2wgbGFzdF93cml0ZSk7CkBAIC0yODc5LDYgKzI4ODMsMTEgQEAgV2FsU25k S2VlcGFsaXZlSWZOZWNlc3NhcnkoVGltZXN0YW1wVHogbm93KQogCVRpbWVz dGFtcFR6IHBpbmdfdGltZTsKIAogCS8qCisJICogU2VuZCBhbiBhcmNoaXZh bCBzdGF0dXMgbWVzc2FnZSwgaWYgbmVjZXNzYXJ5LgorCSAqLworCVdhbFNu ZEFyY2hpdmFsUmVwb3J0SWZOZWNlc3NhcnkoKTsKKworCS8qCiAJICogRG9u J3Qgc2VuZCBrZWVwYWxpdmUgbWVzc2FnZXMgaWYgdGltZW91dHMgYXJlIGds b2JhbGx5IGRpc2FibGVkIG9yCiAJICogd2UncmUgZG9pbmcgc29tZXRoaW5n IG5vdCBwYXJ0YWtpbmcgaW4gdGltZW91dHMuCiAJICovCkBAIC0yOTA3LDYg KzI5MTYsNDQgQEAgV2FsU25kS2VlcGFsaXZlSWZOZWNlc3NhcnkoVGltZXN0 YW1wVHogbm93KQogfQogCiAvKgorICogVGhpcyBmdW5jdGlvbiBpcyB1c2Vk IHRvIHNlbmQgYXJjaGl2YWwgcmVwb3J0IG1lc3NhZ2UgdG8gc3RhbmRieS4K KyAqLworc3RhdGljIHZvaWQKK1dhbFNuZEFyY2hpdmFsUmVwb3J0KHZvaWQp Cit7CisJZWxvZyhMT0csICJzZW5kaW5nIGFyY2hpdmFsIHJlcG9ydDogJXMi LCBsYXN0X2FyY2hpdmFsX3JlcG9ydCk7CisKKwkvKiBjb25zdHJ1Y3QgdGhl IG1lc3NhZ2UuLi4gKi8KKwlyZXNldFN0cmluZ0luZm8oJm91dHB1dF9tZXNz YWdlKTsKKwlwcV9zZW5kYnl0ZSgmb3V0cHV0X21lc3NhZ2UsICdhJyk7CisJ cHFfc2VuZGJ5dGVzKCZvdXRwdXRfbWVzc2FnZSwgbGFzdF9hcmNoaXZhbF9y ZXBvcnQsIHN0cmxlbihsYXN0X2FyY2hpdmFsX3JlcG9ydCkpOworCisJLyog Li4uIGFuZCBzZW5kIGl0IHdyYXBwZWQgaW4gQ29weURhdGEgKi8KKwlwcV9w dXRtZXNzYWdlX25vYmxvY2soJ2QnLCBvdXRwdXRfbWVzc2FnZS5kYXRhLCBv dXRwdXRfbWVzc2FnZS5sZW4pOworfQorCitzdGF0aWMgdm9pZAorV2FsU25k QXJjaGl2YWxSZXBvcnRJZk5lY2Vzc2FyeSh2b2lkKQoreworCVBnU3RhdF9B cmNoaXZlclN0YXRzICphcmNoaXZlcl9zdGF0czsKKworCWFyY2hpdmVyX3N0 YXRzID0gcGdzdGF0X2ZldGNoX3N0YXRfYXJjaGl2ZXIoKTsKKworCWlmIChz dHJjbXAobGFzdF9hcmNoaXZhbF9yZXBvcnQsIGFyY2hpdmVyX3N0YXRzLT5s YXN0X2FyY2hpdmVkX3dhbCkgPT0gMCkKKwl7CisJCXBnc3RhdF9jbGVhcl9z bmFwc2hvdCgpOworCQlyZXR1cm47CisJfQorCisJc3RybGNweShsYXN0X2Fy Y2hpdmFsX3JlcG9ydCwgYXJjaGl2ZXJfc3RhdHMtPmxhc3RfYXJjaGl2ZWRf d2FsLAorCQkJc2l6ZW9mKGxhc3RfYXJjaGl2YWxfcmVwb3J0KSk7CisKKwlw Z3N0YXRfY2xlYXJfc25hcHNob3QoKTsKKworCVdhbFNuZEFyY2hpdmFsUmVw b3J0KCk7Cit9CisKKy8qCiAgKiBUaGlzIGlzbid0IGN1cnJlbnRseSB1c2Vk IGZvciBhbnl0aGluZy4gTW9uaXRvcmluZyB0b29scyBtaWdodCBiZQogICog aW50ZXJlc3RlZCBpbiB0aGUgZnV0dXJlLCBhbmQgd2UnbGwgbmVlZCBzb21l dGhpbmcgbGlrZSB0aGlzIGluIHRoZQogICogZnV0dXJlIGZvciBzeW5jaHJv bm91cyByZXBsaWNhdGlvbi4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0 aWxzL21pc2MvZ3VjLmMgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5j CmluZGV4IGY0M2FmZjIuLjcxMTViY2MgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3V0aWxzL21pc2MvZ3VjLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMv bWlzYy9ndWMuYwpAQCAtMzk2LDYgKzM5Niw3IEBAIHN0YXRpYyBjb25zdCBz dHJ1Y3QgY29uZmlnX2VudW1fZW50cnkgcm93X3NlY3VyaXR5X29wdGlvbnNb XSA9IHsKICAqIE9wdGlvbnMgZm9yIGVudW0gdmFsdWVzIHN0b3JlZCBpbiBv dGhlciBtb2R1bGVzCiAgKi8KIGV4dGVybiBjb25zdCBzdHJ1Y3QgY29uZmln X2VudW1fZW50cnkgd2FsX2xldmVsX29wdGlvbnNbXTsKK2V4dGVybiBjb25z dCBzdHJ1Y3QgY29uZmlnX2VudW1fZW50cnkgYXJjaGl2ZV9tb2RlX29wdGlv bnNbXTsKIGV4dGVybiBjb25zdCBzdHJ1Y3QgY29uZmlnX2VudW1fZW50cnkg c3luY19tZXRob2Rfb3B0aW9uc1tdOwogZXh0ZXJuIGNvbnN0IHN0cnVjdCBj b25maWdfZW51bV9lbnRyeSBkeW5hbWljX3NoYXJlZF9tZW1vcnlfb3B0aW9u c1tdOwogCkBAIC0xNTMwLDE2ICsxNTMxLDYgQEAgc3RhdGljIHN0cnVjdCBj b25maWdfYm9vbCBDb25maWd1cmVOYW1lc0Jvb2xbXSA9CiAJfSwKIAogCXsK LQkJeyJhcmNoaXZlX21vZGUiLCBQR0NfUE9TVE1BU1RFUiwgV0FMX0FSQ0hJ VklORywKLQkJCWdldHRleHRfbm9vcCgiQWxsb3dzIGFyY2hpdmluZyBvZiBX QUwgZmlsZXMgdXNpbmcgYXJjaGl2ZV9jb21tYW5kLiIpLAotCQkJTlVMTAot CQl9LAotCQkmWExvZ0FyY2hpdmVNb2RlLAotCQlmYWxzZSwKLQkJTlVMTCwg TlVMTCwgTlVMTAotCX0sCi0KLQl7CiAJCXsiaG90X3N0YW5kYnkiLCBQR0Nf UE9TVE1BU1RFUiwgUkVQTElDQVRJT05fU1RBTkRCWSwKIAkJCWdldHRleHRf bm9vcCgiQWxsb3dzIGNvbm5lY3Rpb25zIGFuZCBxdWVyaWVzIGR1cmluZyBy ZWNvdmVyeS4iKSwKIAkJCU5VTEwKQEAgLTM1NTIsNiArMzU0MywxNiBAQCBz dGF0aWMgc3RydWN0IGNvbmZpZ19lbnVtIENvbmZpZ3VyZU5hbWVzRW51bVtd ID0KIAl9LAogCiAJeworCQl7ImFyY2hpdmVfbW9kZSIsIFBHQ19QT1NUTUFT VEVSLCBXQUxfQVJDSElWSU5HLAorCQkJZ2V0dGV4dF9ub29wKCJBbGxvd3Mg YXJjaGl2aW5nIG9mIFdBTCBmaWxlcyB1c2luZyBhcmNoaXZlX2NvbW1hbmQu IiksCisJCQlOVUxMCisJCX0sCisJCSZYTG9nQXJjaGl2ZU1vZGUsCisJCUFS Q0hJVkVfTU9ERV9PRkYsIGFyY2hpdmVfbW9kZV9vcHRpb25zLAorCQlOVUxM LCBOVUxMLCBOVUxMCisJfSwKKworCXsKIAkJeyJ0cmFjZV9yZWNvdmVyeV9t ZXNzYWdlcyIsIFBHQ19TSUdIVVAsIERFVkVMT1BFUl9PUFRJT05TLAogCQkJ Z2V0dGV4dF9ub29wKCJFbmFibGVzIGxvZ2dpbmcgb2YgcmVjb3ZlcnktcmVs YXRlZCBkZWJ1Z2dpbmcgaW5mb3JtYXRpb24uIiksCiAJCQlnZXR0ZXh0X25v b3AoIkVhY2ggbGV2ZWwgaW5jbHVkZXMgYWxsIHRoZSBsZXZlbHMgdGhhdCBm b2xsb3cgaXQuIFRoZSBsYXRlciIKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZSBiL3NyYy9iYWNr ZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQppbmRleCAx MTA5ODNmLi45MDM3MWQ3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGls cy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKKysrIGIvc3JjL2JhY2tl bmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCkBAIC0yMDYs NyArMjA2LDcgQEAKIAogIyAtIEFyY2hpdmluZyAtCiAKLSNhcmNoaXZlX21v ZGUgPSBvZmYJCSMgYWxsb3dzIGFyY2hpdmluZyB0byBiZSBkb25lCisjYXJj aGl2ZV9tb2RlID0gb2ZmCQkjIGFsbG93cyBhcmNoaXZpbmcgdG8gYmUgZG9u ZTsgb2ZmLCBvbiwgc2hhcmVkLCBvciBhbHdheXMKIAkJCQkjIChjaGFuZ2Ug cmVxdWlyZXMgcmVzdGFydCkKICNhcmNoaXZlX2NvbW1hbmQgPSAnJwkJIyBj b21tYW5kIHRvIHVzZSB0byBhcmNoaXZlIGEgbG9nZmlsZSBzZWdtZW50CiAJ CQkJIyBwbGFjZWhvbGRlcnM6ICVwID0gcGF0aCBvZiBmaWxlIHRvIGFyY2hp dmUKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9nLmggYi9z cmMvaW5jbHVkZS9hY2Nlc3MveGxvZy5oCmluZGV4IDJiMWY0MjMuLjNhNDk3 MDIgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9nLmgKKysr IGIvc3JjL2luY2x1ZGUvYWNjZXNzL3hsb2cuaApAQCAtOTUsNyArOTUsNiBA QCBleHRlcm4gaW50CXdhbF9rZWVwX3NlZ21lbnRzOwogZXh0ZXJuIGludAlY TE9HYnVmZmVyczsKIGV4dGVybiBpbnQJWExvZ0FyY2hpdmVUaW1lb3V0Owog ZXh0ZXJuIGludAl3YWxfcmV0cmlldmVfcmV0cnlfaW50ZXJ2YWw7Ci1leHRl cm4gYm9vbCBYTG9nQXJjaGl2ZU1vZGU7CiBleHRlcm4gY2hhciAqWExvZ0Fy Y2hpdmVDb21tYW5kOwogZXh0ZXJuIGJvb2wgRW5hYmxlSG90U3RhbmRieTsK IGV4dGVybiBib29sIGZ1bGxQYWdlV3JpdGVzOwpAQCAtMTA1LDYgKzEwNCwx NiBAQCBleHRlcm4gYm9vbCBsb2dfY2hlY2twb2ludHM7CiAKIGV4dGVybiBp bnQJQ2hlY2tQb2ludFNlZ21lbnRzOwogCisvKiBBcmNoaXZlIG1vZGVzICov Cit0eXBlZGVmIGVudW0gQXJjaGl2ZU1vZGUKK3sKKwlBUkNISVZFX01PREVf T0ZGID0gMCwJLyogZGlzYWJsZWQgKi8KKwlBUkNISVZFX01PREVfT04sCQkv KiBlbmFibGVkIHdoaWxlIHNlcnZlciBpcyBydW5uaW5nIG5vcm1hbGx5ICov CisJQVJDSElWRV9NT0RFX1NIQVJFRCwJLyogYXJjaGl2ZSBpcyBzaGFyZWQg d2l0aCBtYXN0ZXIgKi8KKwlBUkNISVZFX01PREVfQUxXQVlTCQkvKiBlbmFi bGVkIGFsd2F5cyAoZXZlbiBkdXJpbmcgcmVjb3ZlcnkpICovCit9IEFyY2hp dmVNb2RlOworZXh0ZXJuIGludAlYTG9nQXJjaGl2ZU1vZGU7CisKIC8qIFdB TCBsZXZlbHMgKi8KIHR5cGVkZWYgZW51bSBXYWxMZXZlbAogewpAQCAtMTE1 LDcgKzEyNCw4IEBAIHR5cGVkZWYgZW51bSBXYWxMZXZlbAogfSBXYWxMZXZl bDsKIGV4dGVybiBpbnQJd2FsX2xldmVsOwogCi0jZGVmaW5lIFhMb2dBcmNo aXZpbmdBY3RpdmUoKQkoWExvZ0FyY2hpdmVNb2RlICYmIHdhbF9sZXZlbCA+ PSBXQUxfTEVWRUxfQVJDSElWRSkKKyNkZWZpbmUgWExvZ0FyY2hpdmluZ0Fj dGl2ZSgpIFwKKwkoWExvZ0FyY2hpdmVNb2RlID4gQVJDSElWRV9NT0RFX09G RiAmJiB3YWxfbGV2ZWwgPj0gV0FMX0xFVkVMX0FSQ0hJVkUpCiAjZGVmaW5l IFhMb2dBcmNoaXZlQ29tbWFuZFNldCgpIChYTG9nQXJjaGl2ZUNvbW1hbmRb MF0gIT0gJ1wwJykKIAogLyoKLS0gCjIuMS40Cgo= --------------080102050905040007070609 Content-Type: text/plain Content-Disposition: inline Content-Transfer-Encoding: 8bit MIME-Version: 1.0 -- Sent via pgsql-hackers mailing list (pgsql-hackers@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-hackers --------------080102050905040007070609--