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 1vvVw9-005kA8-2G for pgsql-hackers@arkaria.postgresql.org; Thu, 26 Feb 2026 07:37:29 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vvVw8-00Adlj-2E for pgsql-hackers@arkaria.postgresql.org; Thu, 26 Feb 2026 07:37:28 +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 1vvVw8-00Adla-02 for pgsql-hackers@lists.postgresql.org; Thu, 26 Feb 2026 07:37:28 +0000 Received: from mail-lj1-x234.google.com ([2a00:1450:4864:20::234]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1vvVw4-00000001Fw5-0xAF for pgsql-hackers@lists.postgresql.org; Thu, 26 Feb 2026 07:37:26 +0000 Received: by mail-lj1-x234.google.com with SMTP id 38308e7fff4ca-389f2c46d80so3173001fa.3 for ; Wed, 25 Feb 2026 23:37:25 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1772091443; cv=none; d=google.com; s=arc-20240605; b=USgbKifV+2HmaSIDEBiG8dqWybpGeEB149znOno5DOAZCj9CsfADCjkfNn5YHCAGF4 EPupohVRXgjLbr01u4XYVOPeRvymEakArFGkVpKajLthluwom7wvRaJFR2+W7yYFOv4A k7cTOx27y3KNmSyXizYjyEHSC9tXU5RevoMadGuPxE9rneeF5vTyTfG2gSR/pBoIizAX PiUFhcYCt1boHl2/jVoVk6PtlONH+4fdBfxJ9Zfwdvklu5lze5SeCupjzGlKx16cAEyJ QuhdzNlMCTcMDkncYi5wy+XS9wfUFfTtTmCCbDLCjpJ6gyqKMex8YBfGU0bMbEsnOjHq J9UQ== 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=g+F4jPDFxhRH11sQfZnHT9gldlZU6cDLhBrz52cjRHw=; fh=1xiRfvgUuFOC4DA/TUmn6re2VQ7LYmeAQpUldzjFBXg=; b=gUgBe8ub8mx4PDBAtcVMH1woVsriBD8+/gi0h61Y/lqamm+LF0u5BvNLiXB3a/rGfS GrEb7TRbuOETgwK+3r8l1+yO2U0rgqxXV7UrOFYx5stNGMXOJKXXj4Rkw286/qSee1kK ANtr9CEo/zS4aI6rKdwPWGuTMdwKMU8QSwDNeg5EIOToaHDk+bagp2WJ59pp1ZQCiycO YOjH4lp9O6UABIhlK2E+GbURYygcozEQscj4T6hU7V1wQzZSgB4BdWQTubTde3fWCp59 Y/z6bTxoeqTA+CCVDfH8fjZNZOBEfDbMuZS3A8wit/MkCD0bq3qMmuXSV8Ui8te1ILJW GTfg==; 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=1772091443; x=1772696243; 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=g+F4jPDFxhRH11sQfZnHT9gldlZU6cDLhBrz52cjRHw=; b=jQaaBp2bm0qCXCT3V6ea8/jbSJ8VB5jlgEzrQTVGtvAUOnaTAHKWQH0QXuYriHm4N9 +evD1SDpm0ErTszRlJA2ZJYuG3SYfv6xVza4o7B+bnpG0OmhOts29PWHsTeXNKTS4//n VSQzxSgVC8NitsWJjxvyedb1hc2C6q37OdVvC5RnswrMKiBy9Z9vB2kw6SPI3r4wFoj7 uX8o+PFNc6PswtoMEx1XtP885BPKaUmQyKrxXRbMA1Xvgg9KUxjhf40rWYWiZ1WooXaC gbZhSgFSuiY5oJ5t985GDp8pz1YycK+1R8GAUA2viGYQEcdBX03nz39MLkDRL3CdAypg kodg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1772091443; x=1772696243; 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=g+F4jPDFxhRH11sQfZnHT9gldlZU6cDLhBrz52cjRHw=; b=vtxo8F0L0FPac/urfQU0JcLXdpA3LEm7HhmIYGNBlzPN4Y+O2Eu0dnniK6QHxg7LYy F2hUVtszOBAqR763MNdOyVfzQeRUdrZ5520McB3Td7S+TUd4lV1xgbXIDcF550uwzN5E BpNDT0+riNZ7TyG8d/ipwqZz6gp8X7J4BD7TCDKabHdOflkyGAMshKn9i7Jb5S4PFre4 hl/2EPyRXan9OnUv/9YyjPrvFBLMydLtHMCihUGUxrfIjcvfFUrZzlqitsFrOVHaHIku msn0mC0NK7K5jUZh+YWuyUUKQx6whTTKx7/1hns+HHlpLnIkDMyc5acR4yvKmqZ26eDJ D6hQ== X-Forwarded-Encrypted: i=1; AJvYcCXILNlv/0owsjP1E/dnGaYT5Ks9T1COqyZjbDVUQ1d2gw4X996XblediMgSQAgdEYtrqQGi0f+BOkh1pRYe@lists.postgresql.org X-Gm-Message-State: AOJu0YwdYeblOwyQxAy/QwXM+/ijQHIkkmFTNRwqFmYg9N7PgMhInpFQ UeE2mQF6T+7pRMo44Zf7kcAZsVFckvzPgFw+GACCPV0IE1X17BSek5Dt1g/wyuAeRiQDqntyvIp UywKpJKg1Ua3T9PM+WLh0SNFMLBYRQQ0= X-Gm-Gg: ATEYQzx7OfyHFHm9tGUByI8clM3f+lH4BhqT4i576PW6p6TsrYt3Nld0NuqtoXrYKGj Wgt7WOu1fxI3jTFks+i90muKbbQEYdPRinAIWpXf9/jZMwQt/vShc00/eZU9sUkXZy+5LiMesNM h8emFmDlJ0zitfVSypMNS65Trd6XLRBbdYfbNgzFtxPsxT/KSUtzHuRiDKR9yQEwczaZdd/uxC+ bs4lT3JOmfBjNxDULkIVGabj86dB5mwJaiNGI1ggX6iXE94iSQ0ytqobdUj5pEYTFimzkOi5Ypz fYOaOiiB18gpLWsZHw== X-Received: by 2002:a05:651c:e18:b0:385:fbff:ab2f with SMTP id 38308e7fff4ca-389f2f6cf4fmr3318941fa.17.1772091442501; Wed, 25 Feb 2026 23:37:22 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Ajin Cherian Date: Thu, 26 Feb 2026 18:37:08 +1100 X-Gm-Features: AaiRm52Mjp7fJeO0gN-OX-68uduyZ1mwztkyv9fII70_iAte9uP-8MpoqQj39wM Message-ID: Subject: Re: [PATCH] Support automatic sequence replication To: Amit Kapila Cc: "Hayato Kuroda (Fujitsu)" , shveta malik , Ashutosh Sharma , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000f0b126064bb530cc" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000f0b126064bb530cc Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, Feb 24, 2026 at 5:17=E2=80=AFPM Amit Kapila wrote: > > Can we find some cheap > way to detect if sequencesync worker is present or not? Can you think > some other way to not incur the cost of traversing the worker array > and also detect sequence worker exit without much delay? > Added this. > Also, shouldn't we need to invoke AcceptInvalidationMessages() as we > are doing in apply worker when not in a remote transaction? I think it > will be required to get local_sequence definition changes , if any. Changed. Thanks Hou-san for helping me with these changes. I also did some performance testing on HEAD to see how long REFRESH SEQUENCES takes for a large number of sequences. I ran these on a 2=C3=97 Intel Xeon E5-2699 v4 (22 cores each, 44 cores total / 88 threads) 512 GB RAM. I didn't see much value in differentiating between cases where half the sequences were different or all the sequences were different as REFRESH SEQUENCES updates all sequences after changing the state of all of them to INIT, it doesn't matter if they drifted or not. On HEAD: time to sync 10000 sequences: 1.080s (1080ms) time to sync 100000 sequences: 12.069s (12069ms) time to sync 1000000 sequences: 139.414s (139414ms) testing script attached (pass in the number of sequences as a run time parameter). regards, Ajin Cherian Fujitsu Australia --000000000000f0b126064bb530cc Content-Type: application/octet-stream; name="v7-0001-Support-automatic-sequence-replication.patch" Content-Disposition: attachment; filename="v7-0001-Support-automatic-sequence-replication.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mm35fkw20 RnJvbSA1ZDJlMzkwNDYwZDY3YjhmZWNlY2I3ZjA1MWU4OThiMTUzZjU3MTdiIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBBamluIENoZXJpYW4gPGl0c2FqaW5AZ21haWwuY29tPgpEYXRl OiBUaHUsIDI2IEZlYiAyMDI2IDE3OjM4OjMzICsxMTAwClN1YmplY3Q6IFtQQVRDSCB2N10gU3Vw cG9ydCBhdXRvbWF0aWMgc2VxdWVuY2UgcmVwbGljYXRpb24uCgpMb2dpY2FsIHJlcGxpY2F0aW9u IHNlcXVlbmNlcyBjYW4gZHJpZnQgYmV0d2VlbiBwdWJsaXNoZXIgYW5kCnN1YnNjcmliZXIgYXMg dmFsdWVzIGFyZSBjb25zdW1lZCBpbmRlcGVuZGVudGx5IG9uIGVhY2ggbm9kZS4KUHJldmlvdXNs eSwgdGhlIHNlcXVlbmNlIHN5bmMgd29ya2VyIGV4aXRlZCBhZnRlciB0aGUgaW5pdGlhbApzeW5j aHJvbml6YXRpb24sIGFsbG93aW5nIHNlcXVlbmNlcyB0byBkaXZlcmdlIG92ZXIgdGltZS4KClRo aXMgY2hhbmdlIGtlZXBzIHRoZSBzZXF1ZW5jZSBzeW5jIHdvcmtlciBydW5uaW5nIGNvbnRpbnVv dXNseQpzbyBpdCBjYW4gbW9uaXRvciBzZXF1ZW5jZXMgYW5kIHJlc3luY2hyb25pemUgdGhlbSB3 aGVuIGRyaWZ0CmlzIGRldGVjdGVkLiBUaGUgd29ya2VyIHVzZXMgYW4gYWRhcHRpdmUgc2xlZXAg aW50ZXJ2YWw6Cml0IHN0YXJ0cyBhdCAyIHNlY29uZHMsIGRvdWJsZXMgdXAgdG8gYSBtYXhpbXVt IG9mIDMwIHNlY29uZHMKd2hlbiBubyBkcmlmdCBpcyBvYnNlcnZlZCwgYW5kIHJlc2V0cyB0byB0 aGUgbWluaW11bSBpbnRlcnZhbApvbmNlIGRyaWZ0IGlzIGZvdW5kLgoKU2VxdWVuY2VzIHJlbWFp biBpbiB0aGUgUkVBRFkgc3RhdGUgZHVyaW5nIGNvbnRpbnVvdXMKc3luY2hyb25pemF0aW9uLgoK QXV0aG9yOiBBamluIENoZXJpYW4gPGl0c2FqaW5AZ21haWwuY29tPgpSZXZpZXdlZC1ieTogU2h2 ZXRhIE1hbGlrIDxzaHZldGEubWFsaWtAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogUGV0ZXIgU21p dGggPHNtaXRocGIyMjUwQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IEFzaHV0b3NoIFNoYXJtYSA8 YXNodS5jb2VrODhAZ21haWwuY29tPgpSZXZpZXdlZC1ieTogQW1pdCBLYXBpbGEgPGFtaXQua2Fw aWxhMTZAZ21haWwuY29tPgotLS0KIGRvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNn bWwgICAgICAgICB8ICAyMyArLQogZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9zdWJzY3JpcHRpb24u c2dtbCAgICAgIHwgICA5IC0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3NlcXVlbmNlLmMgICAgICAg ICAgICAgICB8ICAyNyArKwogLi4uL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2VxdWVuY2VzeW5jLmMg ICAgICAgIHwgMzQxICsrKysrKysrKysrKystLS0tLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9zeW5jdXRpbHMuYyAgIHwgIDQ2ICsrLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC93b3JrZXIuYyAgICAgIHwgIDEyICsKIHNyYy9pbmNsdWRlL2NhdGFsb2cvcGdfc3Vi c2NyaXB0aW9uX3JlbC5oICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9jb21tYW5kcy9zZXF1ZW5j ZS5oICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2Vy X2ludGVybmFsLmggICAgIHwgICAyICstCiBzcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMjZfc3Rh dHMucGwgICAgICAgICAgfCAgIDIgKwogc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM2X3NlcXVl bmNlcy5wbCAgICAgIHwgIDc5ICstLS0KIDExIGZpbGVzIGNoYW5nZWQsIDM0MSBpbnNlcnRpb25z KCspLCAyMDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2xvZ2ljYWwt cmVwbGljYXRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwK aW5kZXggNTAyOGZlOWFmMDkuLmJiNTIzYWY1ZDM3IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwv bG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxp Y2F0aW9uLnNnbWwKQEAgLTE3ODcsOCArMTc4Nyw5IEBAIFB1YmxpY2F0aW9uczoKIAogICA8cGFy YT4KICAgIEEgPGZpcnN0dGVybT5zZXF1ZW5jZSBzeW5jaHJvbml6YXRpb24gd29ya2VyPC9maXJz dHRlcm0+IHdpbGwgYmUgc3RhcnRlZAotICAgYWZ0ZXIgZXhlY3V0aW5nIGFueSBvZiB0aGUgYWJv dmUgc3Vic2NyaWJlciBjb21tYW5kcywgYW5kIHdpbGwgZXhpdCBvbmNlIHRoZQotICAgc2VxdWVu Y2VzIGFyZSBzeW5jaHJvbml6ZWQuCisgICBhZnRlciBleGVjdXRpbmcgYW55IG9mIHRoZSBhYm92 ZSBzdWJzY3JpYmVyIGNvbW1hbmRzLiBUaGUgd29ya2VyIHdpbGwKKyAgIHJlbWFpbiBydW5uaW5n IGZvciB0aGUgbGlmZSBvZiB0aGUgc3Vic2NyaXB0aW9uLCBwZXJpb2RpY2FsbHkKKyAgIHN5bmNo cm9uaXppbmcgYWxsIHB1Ymxpc2hlZCBzZXF1ZW5jZXMuCiAgIDwvcGFyYT4KICAgPHBhcmE+CiAg ICBUaGUgYWJpbGl0eSB0byBsYXVuY2ggYSBzZXF1ZW5jZSBzeW5jaHJvbml6YXRpb24gd29ya2Vy IGlzIGxpbWl0ZWQgYnkgdGhlCkBAIC0xODE3LDcgKzE4MTgsNyBAQCBQdWJsaWNhdGlvbnM6CiAg IDxzZWN0MiBpZD0ic2VxdWVuY2VzLW91dC1vZi1zeW5jIj4KICAgIDx0aXRsZT5SZWZyZXNoaW5n IE91dC1vZi1TeW5jIFNlcXVlbmNlczwvdGl0bGU+CiAgICA8cGFyYT4KLSAgICBTdWJzY3JpYmVy IHNlcXVlbmNlIHZhbHVlcyB3aWxsIGJlY29tZSBvdXQgb2Ygc3luYyBhcyB0aGUgcHVibGlzaGVy CisgICAgU3Vic2NyaWJlciBzZXF1ZW5jZSB2YWx1ZXMgY2FuIGJlY29tZSBvdXQgb2Ygc3luYyBh cyB0aGUgcHVibGlzaGVyCiAgICAgYWR2YW5jZXMgdGhlbS4KICAgIDwvcGFyYT4KICAgIDxwYXJh PgpAQCAtMjMzNSwxNSArMjMzNiwxMyBAQCBDT05URVhUOiAgcHJvY2Vzc2luZyByZW1vdGUgZGF0 YSBmb3IgcmVwbGljYXRpb24gb3JpZ2luICJwZ18xNjM5NSIgZHVyaW5nICJJTlNFUgogCiAgICA8 bGlzdGl0ZW0+CiAgICAgPHBhcmE+Ci0gICAgIEluY3JlbWVudGFsIHNlcXVlbmNlIGNoYW5nZXMg YXJlIG5vdCByZXBsaWNhdGVkLiAgQWx0aG91Z2ggdGhlIGRhdGEgaW4KLSAgICAgc2VyaWFsIG9y IGlkZW50aXR5IGNvbHVtbnMgYmFja2VkIGJ5IHNlcXVlbmNlcyB3aWxsIGJlIHJlcGxpY2F0ZWQg YXMgcGFydAotICAgICBvZiB0aGUgdGFibGUsIHRoZSBzZXF1ZW5jZXMgdGhlbXNlbHZlcyBkbyBu b3QgcmVwbGljYXRlIG9uZ29pbmcgY2hhbmdlcy4KLSAgICAgT24gdGhlIHN1YnNjcmliZXIsIGEg c2VxdWVuY2Ugd2lsbCByZXRhaW4gdGhlIGxhc3QgdmFsdWUgaXQgc3luY2hyb25pemVkCi0gICAg IGZyb20gdGhlIHB1Ymxpc2hlci4gSWYgdGhlIHN1YnNjcmliZXIgaXMgdXNlZCBhcyBhIHJlYWQt b25seSBkYXRhYmFzZSwKLSAgICAgdGhlbiB0aGlzIHNob3VsZCB0eXBpY2FsbHkgbm90IGJlIGEg cHJvYmxlbS4gIElmLCBob3dldmVyLCBzb21lIGtpbmQgb2YKLSAgICAgc3dpdGNob3ZlciBvciBm YWlsb3ZlciB0byB0aGUgc3Vic2NyaWJlciBkYXRhYmFzZSBpcyBpbnRlbmRlZCwgdGhlbiB0aGUK LSAgICAgc2VxdWVuY2VzIHdvdWxkIG5lZWQgdG8gYmUgdXBkYXRlZCB0byB0aGUgbGF0ZXN0IHZh bHVlcywgZWl0aGVyIGJ5Ci0gICAgIGV4ZWN1dGluZyA8bGluayBsaW5rZW5kPSJzcWwtYWx0ZXJz dWJzY3JpcHRpb24tcGFyYW1zLXJlZnJlc2gtc2VxdWVuY2VzIj4KKyAgICAgSW5jcmVtZW50YWwg c2VxdWVuY2UgY2hhbmdlcyBhcmUgY29udGludW91c2x5IHJlcGxpY2F0ZWQuIElmLCBob3dldmVy LAorICAgICBzb21lIGtpbmQgb2Ygc3dpdGNob3ZlciBvciBmYWlsb3ZlciB0byB0aGUgc3Vic2Ny aWJlciBkYXRhYmFzZSBpcworICAgICBpbnRlbmRlZCwgdGhlbiB0aGUgc2VxdWVuY2VzIHJlcGxp Y2F0aW9uIGNvdWxkIGJlIGxhZ2dpbmcgYmVoaW5kIGFuZAorICAgICB0aGUgc2VxdWVuY2VzIG9u IHRoZSBzdWJzY3JpYmVyIHNob3VsZCBiZSBjb21wYXJlZCB3aXRoIHRoYXQgb2YgdGhlCisgICAg IHB1Ymxpc2hlciB0byBtYWtlIHN1cmUgdGhhdCB0aGV5IGFyZSB1cCB0byBkYXRlLCBpZiBub3Qg dGhleQorICAgICBuZWVkIHRvIGJlIHVwZGF0ZWQgdG8gdGhlIGxhdGVzdCB2YWx1ZXMsIGVpdGhl ciBieSBleGVjdXRpbmcKKyAgICAgPGxpbmsgbGlua2VuZD0ic3FsLWFsdGVyc3Vic2NyaXB0aW9u LXBhcmFtcy1yZWZyZXNoLXNlcXVlbmNlcyI+CiAgICAgIDxjb21tYW5kPkFMVEVSIFNVQlNDUklQ VElPTiAuLi4gUkVGUkVTSCBTRVFVRU5DRVM8L2NvbW1hbmQ+PC9saW5rPgogICAgICBvciBieSBj b3B5aW5nIHRoZSBjdXJyZW50IGRhdGEgZnJvbSB0aGUgcHVibGlzaGVyIChwZXJoYXBzIHVzaW5n CiAgICAgIDxjb21tYW5kPnBnX2R1bXA8L2NvbW1hbmQ+KSBvciBieSBkZXRlcm1pbmluZyBhIHN1 ZmZpY2llbnRseSBoaWdoIHZhbHVlCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVy X3N1YnNjcmlwdGlvbi5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9zdWJzY3JpcHRpb24u c2dtbAppbmRleCA1MzE4OTk4ZTgwYy4uYThkZDdhNmI0MmQgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMv c2dtbC9yZWYvYWx0ZXJfc3Vic2NyaXB0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9h bHRlcl9zdWJzY3JpcHRpb24uc2dtbApAQCAtMTkwLDExICsxOTAsNiBAQCBBTFRFUiBTVUJTQ1JJ UFRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBS RU5BTUUgVE8gPAogICAgICAgICAgIFByZXZpb3VzbHkgc3Vic2NyaWJlZCB0YWJsZXMgYXJlIG5v dCBjb3BpZWQsIGV2ZW4gaWYgYSB0YWJsZSdzIHJvdwogICAgICAgICAgIGZpbHRlciA8bGl0ZXJh bD5XSEVSRTwvbGl0ZXJhbD4gY2xhdXNlIGhhcyBzaW5jZSBiZWVuIG1vZGlmaWVkLgogICAgICAg ICAgPC9wYXJhPgotICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgUHJldmlvdXNseSBzdWJzY3Jp YmVkIHNlcXVlbmNlcyBhcmUgbm90IHJlLXN5bmNocm9uaXplZC4gVG8gZG8gdGhhdCwKLSAgICAg ICAgICB1c2UgPGxpbmsgbGlua2VuZD0ic3FsLWFsdGVyc3Vic2NyaXB0aW9uLXBhcmFtcy1yZWZy ZXNoLXNlcXVlbmNlcyI+Ci0gICAgICAgICAgPGNvbW1hbmQ+QUxURVIgU1VCU0NSSVBUSU9OIC4u LiBSRUZSRVNIIFNFUVVFTkNFUzwvY29tbWFuZD48L2xpbms+LgotICAgICAgICAgPC9wYXJhPgog ICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgU2VlIDx4cmVmIGxpbmtlbmQ9InNlcXVlbmNlLWRl ZmluaXRpb24tbWlzbWF0Y2hlcyIvPiBmb3IgcmVjb21tZW5kYXRpb25zIG9uIGhvdwogICAgICAg ICAgIHRvIGhhbmRsZSBhbnkgd2FybmluZ3MgYWJvdXQgc2VxdWVuY2UgZGVmaW5pdGlvbiBkaWZm ZXJlbmNlcyBiZXR3ZWVuCkBAIC0yMzYsMTAgKzIzMSw2IEBAIEFMVEVSIFNVQlNDUklQVElPTiA8 cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IFJFTkFNRSBU TyA8CiAgICAgICByZWNvbW1lbmRhdGlvbnMgb24gaG93IHRvIGhhbmRsZSBhbnkgd2FybmluZ3Mg YWJvdXQgc2VxdWVuY2UgZGVmaW5pdGlvbgogICAgICAgZGlmZmVyZW5jZXMgYmV0d2VlbiB0aGUg cHVibGlzaGVyIGFuZCB0aGUgc3Vic2NyaWJlci4KICAgICAgPC9wYXJhPgotICAgICA8cGFyYT4K LSAgICAgIFNlZSA8eHJlZiBsaW5rZW5kPSJzZXF1ZW5jZXMtb3V0LW9mLXN5bmMiLz4gZm9yIHJl Y29tbWVuZGF0aW9ucyBvbiBob3cgdG8KLSAgICAgIGlkZW50aWZ5IGFuZCBoYW5kbGUgb3V0LW9m LXN5bmMgc2VxdWVuY2VzLgotICAgICA8L3BhcmE+CiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFy bGlzdGVudHJ5PgogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9zZXF1ZW5jZS5j IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2VxdWVuY2UuYwppbmRleCBlMWI4MDhiYmI2MC4uYWE4 MTVkZDE5YWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3NlcXVlbmNlLmMKKysr IGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvc2VxdWVuY2UuYwpAQCAtOTI5LDYgKzkyOSwzMyBAQCBs YXN0dmFsKFBHX0ZVTkNUSU9OX0FSR1MpCiAJUEdfUkVUVVJOX0lOVDY0KHJlc3VsdCk7CiB9CiAK Ky8qCisgKiBSZWFkIHRoZSBjdXJyZW50IHNlcXVlbmNlIHZhbHVlcyAobGFzdF92YWx1ZSBhbmQg aXNfY2FsbGVkKQorICoKKyAqIFRoaXMgaXMgYSByZWFkLW9ubHkgb3BlcmF0aW9uIHVzZWQgYnkg bG9naWNhbCByZXBsaWNhdGlvbiBzZXF1ZW5jZQorICogc3luY2hyb25pemF0aW9uIHRvIGRldGVj dCBkcmlmdC4KKyAqLwordm9pZAorR2V0U2VxdWVuY2UoUmVsYXRpb24gc2VxcmVsLCBpbnQ2NCAq bGFzdF92YWx1ZSwgYm9vbCAqaXNfY2FsbGVkKQoreworCUJ1ZmZlcgkJYnVmOworCUhlYXBUdXBs ZURhdGEgc2VxdHVwbGU7CisJRm9ybV9wZ19zZXF1ZW5jZV9kYXRhIHNlcTsKKworCS8qIENvbmZp cm0gdGhhdCB0aGUgcmVsYXRpb24gaXMgYSBzZXF1ZW5jZSAqLworCUFzc2VydChzZXFyZWwtPnJk X3JlbC0+cmVsa2luZCA9PSBSRUxLSU5EX1NFUVVFTkNFKTsKKworCS8qIFJlYWQgdGhlIHNlcXVl bmNlIHR1cGxlICovCisJc2VxID0gcmVhZF9zZXFfdHVwbGUoc2VxcmVsLCAmYnVmLCAmc2VxdHVw bGUpOworCisJLyogRXh0cmFjdCB0aGUgdmFsdWVzICovCisJKmxhc3RfdmFsdWUgPSBzZXEtPmxh c3RfdmFsdWU7CisJKmlzX2NhbGxlZCA9IHNlcS0+aXNfY2FsbGVkOworCisJLyogUmVsZWFzZSBi dWZmZXIgKi8KKwlVbmxvY2tSZWxlYXNlQnVmZmVyKGJ1Zik7Cit9CisKIC8qCiAgKiBNYWluIGlu dGVybmFsIHByb2NlZHVyZSB0aGF0IGhhbmRsZXMgMiAmIDMgYXJnIGZvcm1zIG9mIFNFVFZBTC4K ICAqCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3NlcXVlbmNl c3luYy5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9zZXF1ZW5jZXN5bmMuYwpp bmRleCA5YzkyZmRkZDYyNC4uZmZiYmQxMjU3ZDAgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Jl cGxpY2F0aW9uL2xvZ2ljYWwvc2VxdWVuY2VzeW5jLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vbG9naWNhbC9zZXF1ZW5jZXN5bmMuYwpAQCAtMTksMTAgKzE5LDYgQEAKICAqIENSRUFU RSBTVUJTQ1JJUFRJT04KICAqIEFMVEVSIFNVQlNDUklQVElPTiAuLi4gUkVGUkVTSCBQVUJMSUNB VElPTgogICoKLSAqIEV4ZWN1dGluZyB0aGUgZm9sbG93aW5nIGNvbW1hbmQgcmVzZXRzIGFsbCBz ZXF1ZW5jZXMgaW4gdGhlIHN1YnNjcmlwdGlvbiB0bwotICogc3RhdGUgSU5JVCwgdHJpZ2dlcmlu ZyByZS1zeW5jaHJvbml6YXRpb246Ci0gKiBBTFRFUiBTVUJTQ1JJUFRJT04gLi4uIFJFRlJFU0gg U0VRVUVOQ0VTCi0gKgogICogVGhlIGFwcGx5IHdvcmtlciBwZXJpb2RpY2FsbHkgc2NhbnMgcGdf c3Vic2NyaXB0aW9uX3JlbCBmb3Igc2VxdWVuY2VzIGluCiAgKiBJTklUIHN0YXRlLiBXaGVuIHN1 Y2ggc2VxdWVuY2VzIGFyZSBmb3VuZCwgaXQgc3Bhd25zIGEgc2VxdWVuY2VzeW5jIHdvcmtlcgog ICogdG8gaGFuZGxlIHN5bmNocm9uaXphdGlvbi4KQEAgLTM2LDggKzMyLDI0IEBACiAgKiBsb2Nh bCBzdWJzY3JpYmVyLCBhbmQgZmluYWxseSBtYXJrcyBlYWNoIHNlcXVlbmNlIGFzIFJFQURZIHVw b24gc3VjY2Vzc2Z1bAogICogc3luY2hyb25pemF0aW9uLgogICoKKyAqIFRoZSBzZXF1ZW5jZXN5 bmMgd29ya2VyIHRoZW4gZmV0Y2hlcyBhbGwgc2VxdWVuY2VzIHRoYXQgYXJlCisgKiBpbiB0aGUg UkVBRFkgc3RhdGUsIHF1ZXJpZXMgdGhlIHB1Ymxpc2hlciBmb3IgY3VycmVudCBzZXF1ZW5jZSB2 YWx1ZXMsIGFuZAorICogdXBkYXRlcyBhbnkgc2VxdWVuY2VzIHRoYXQgaGF2ZSBkcmlmdGVkIGFu ZCB0aGVuIGdvZXMgdG8gc2xlZXAuIFRoZSBzbGVlcAorICogaW50ZXJ2YWwgc3RhcnRzIGFzIFNF UVNZTkNfTUlOX1NMRUVQX01TIGFuZCBkb3VibGVzIGFmdGVyIGVhY2ggd2FrZSBjeWNsZQorICog KHVwIHRvIFNFUVNZTkNfTUFYX1NMRUVQX01TKS4gV2hlbiBkcmlmdCBpcyBkZXRlY3RlZCwgdGhl IGludGVydmFsIHJlc2V0cyB0bworICogdGhlIG1pbmltdW0gdG8gZW5zdXJlIHRpbWVseSB1cGRh dGVzLgorICoKKyAqIEFmdGVyIENSRUFURSBTVUJTQ1JJUFRJT04sIHNlcXVlbmNlcyBiZWdpbiBp biB0aGUgSU5JVCBzdGF0ZS4gU2VxdWVuY2VzCisgKiBhZGRlZCB0aHJvdWdoIEFMVEVSIFNVQlND UklQVElPTi4uIFJFRlJFU0ggUFVCTElDQVRJT04gYWxzbyBzdGFydCBpbiB0aGUgSU5JVAorICog c3RhdGUuIEFsbCBJTklUIHNlcXVlbmNlcyBhcmUgc3luY2hyb25pemVkIHVuY29uZGl0aW9uYWxs eSwgdGhlbiB0cmFuc2l0aW9uCisgKiB0byB0aGUgUkVBRFkgc3RhdGUuIE9uY2UgaW4gdGhlIFJF QURZIHN0YXRlLCBzZXF1ZW5jZXMgYXJlIGNoZWNrZWQgZm9yIGRyaWZ0CisgKiBmcm9tIHRoZSBw dWJsaXNoZXIgYW5kIHN5bmNocm9uaXplZCBvbmx5IHdoZW4gZHJpZnQgaXMgZGV0ZWN0ZWQuCisg KgogICogU2VxdWVuY2Ugc3RhdGUgdHJhbnNpdGlvbnMgZm9sbG93IHRoaXMgcGF0dGVybjoKLSAq ICAgSU5JVCAtPiBSRUFEWQorICogIElOSVQgLS0+IFJFQURZIC0+LSsKKyAqICAgICAgICAgICAg IF4gICAgICB8IChjaGVjay9zeW5jaHJvbml6ZSkKKyAqICAgICAgICAgICAgIHwgICAgICB8Cisg KiAgICAgICAgICAgICArLS08LS0tKwogICoKICAqIFRvIGF2b2lkIGNyZWF0aW5nIHRvbyBtYW55 IHRyYW5zYWN0aW9ucywgdXAgdG8gTUFYX1NFUVVFTkNFU19TWU5DX1BFUl9CQVRDSAogICogc2Vx dWVuY2VzIGFyZSBzeW5jaHJvbml6ZWQgcGVyIHRyYW5zYWN0aW9uLiBUaGUgbG9ja3Mgb24gdGhl IHNlcXVlbmNlCkBAIC03OCwyMyArOTAsMzUgQEAgdHlwZWRlZiBlbnVtIENvcHlTZXFSZXN1bHQK IAlDT1BZU0VRX1NVQ0NFU1MsCiAJQ09QWVNFUV9NSVNNQVRDSCwKIAlDT1BZU0VRX0lOU1VGRklD SUVOVF9QRVJNLAotCUNPUFlTRVFfU0tJUFBFRAorCUNPUFlTRVFfU0tJUFBFRCwKKwlDT1BZU0VR X05PX0RSSUZULAogfSBDb3B5U2VxUmVzdWx0OwogCi1zdGF0aWMgTGlzdCAqc2VxaW5mb3MgPSBO SUw7CisvKiBTbGVlcCBpbnRlcnZhbHMgZm9yIHN5bmMgKi8KKyNkZWZpbmUgU0VRU1lOQ19NSU5f U0xFRVBfTVMgMjAwMAkJLyogMiBzZWNvbmRzICovCisjZGVmaW5lIFNFUVNZTkNfTUFYX1NMRUVQ X01TIDMwMDAwCQkvKiAzMCBzZWNvbmRzICovCisKK3N0YXRpYyBsb25nIHNsZWVwX21zID0gU0VR U1lOQ19NSU5fU0xFRVBfTVM7CisKK3N0YXRpYyBNZW1vcnlDb250ZXh0IFNlcXVlbmNlU3luY0Nv bnRleHQgPSBOVUxMOwogCiAvKgotICogQXBwbHkgd29ya2VyIGRldGVybWluZXMgaWYgc2VxdWVu Y2Ugc3luY2hyb25pemF0aW9uIGlzIG5lZWRlZC4KKyAqIEFwcGx5IHdvcmtlciBkZXRlcm1pbmVz IHdoZXRoZXIgYSBzZXF1ZW5jZSBzeW5jIHdvcmtlciBpcyBuZWVkZWQuCiAgKgotICogU3RhcnQg YSBzZXF1ZW5jZXN5bmMgd29ya2VyIGlmIG9uZSBpcyBub3QgYWxyZWFkeSBydW5uaW5nLiBUaGUg YWN0aXZlCi0gKiBzZXF1ZW5jZXN5bmMgd29ya2VyIHdpbGwgaGFuZGxlIGFsbCBwZW5kaW5nIHNl cXVlbmNlIHN5bmNocm9uaXphdGlvbi4gSWYgYW55Ci0gKiBzZXF1ZW5jZXMgcmVtYWluIHVuc3lu Y2hyb25pemVkIGFmdGVyIGl0IGV4aXRzLCBhIG5ldyB3b3JrZXIgY2FuIGJlIHN0YXJ0ZWQKLSAq IGluIHRoZSBuZXh0IGl0ZXJhdGlvbi4KKyAqIENoZWNrIGlmIHRoZSBzdWJzY3JpcHRpb24gaW5j bHVkZXMgc2VxdWVuY2VzIGFuZCBzdGFydCBhIHNlcXVlbmNlc3luYworICogd29ya2VyIGlmIG9u ZSBpcyBub3QgYWxyZWFkeSBydW5uaW5nLiBUaGUgYWN0aXZlIHNlcXVlbmNlc3luYyB3b3JrZXIg d2lsbAorICogaGFuZGxlIGFsbCBwZW5kaW5nIHNlcXVlbmNlIHN5bmNocm9uaXphdGlvbi4gSWYg YW55IHNlcXVlbmNlcyByZW1haW4KKyAqIHVuc3luY2hyb25pemVkIGFmdGVyIGl0IGV4aXRzLCBh IG5ldyB3b3JrZXIgY2FuIGJlIHN0YXJ0ZWQgaW4gdGhlIG5leHQKKyAqIGl0ZXJhdGlvbi4KKyAq CisgKiBUaGUgcG9pbnRlciB0byB0aGUgc2VxdWVuY2VzeW5jIHdvcmtlciBpcyBjYWNoZWQgdG8g YXZvaWQgYWNxdWlyaW5nIGFuCisgKiBMV0xvY2sgYW5kIHNjYW5uaW5nIHRoZSB3b3JrZXJzIGFy cmF5IGVhY2ggdGltZSB2aWEgbG9naWNhbHJlcF93b3JrZXJfZmluZCgpLgogICovCiB2b2lkCi1Q cm9jZXNzU2VxdWVuY2VzRm9yU3luYyh2b2lkKQorTWF5YmVMYXVuY2hTZXF1ZW5jZVN5bmNXb3Jr ZXIodm9pZCkKIHsKLQlMb2dpY2FsUmVwV29ya2VyICpzZXF1ZW5jZXN5bmNfd29ya2VyOworCXN0 YXRpYyBMb2dpY2FsUmVwV29ya2VyICpzZXF1ZW5jZXN5bmNfd29ya2VyID0gTlVMTDsKKwogCWlu dAkJCW5zeW5jd29ya2VyczsKIAlib29sCQloYXNfcGVuZGluZ19zZXF1ZW5jZXM7CiAJYm9vbAkJ c3RhcnRlZF90eDsKQEAgLTExMiw2ICsxMzYsMTkgQEAgUHJvY2Vzc1NlcXVlbmNlc0ZvclN5bmMo dm9pZCkKIAogCUxXTG9ja0FjcXVpcmUoTG9naWNhbFJlcFdvcmtlckxvY2ssIExXX1NIQVJFRCk7 CiAKKwkvKgorCSAqIFJldHVybiBpZiB0aGUgc2VxdWVuY2Ugc3luYyB3b3JrZXIgZm9yIHRoZSBj dXJyZW50IHN1YnNjcmlwdGlvbiBpcworCSAqIGFscmVhZHkgYWxpdmUuCisJICovCisJaWYgKHNl cXVlbmNlc3luY193b3JrZXIgJiYKKwkJc2VxdWVuY2VzeW5jX3dvcmtlci0+cHJvYyAmJgorCQlp c1NlcXVlbmNlU3luY1dvcmtlcihzZXF1ZW5jZXN5bmNfd29ya2VyKSAmJgorCQlzZXF1ZW5jZXN5 bmNfd29ya2VyLT5zdWJpZCA9PSBNeUxvZ2ljYWxSZXBXb3JrZXItPnN1YmlkKQorCXsKKwkJTFdM b2NrUmVsZWFzZShMb2dpY2FsUmVwV29ya2VyTG9jayk7CisJCXJldHVybjsKKwl9CisKIAkvKiBD aGVjayBpZiB0aGVyZSBpcyBhIHNlcXVlbmNlc3luYyB3b3JrZXIgYWxyZWFkeSBydW5uaW5nPyAq LwogCXNlcXVlbmNlc3luY193b3JrZXIgPSBsb2dpY2FscmVwX3dvcmtlcl9maW5kKFdPUktFUlRZ UEVfU0VRVUVOQ0VTWU5DLAogCQkJCQkJCQkJCQkJIE15TG9naWNhbFJlcFdvcmtlci0+c3ViaWQs CkBAIC0xNDQsNyArMTgxLDcgQEAgUHJvY2Vzc1NlcXVlbmNlc0ZvclN5bmModm9pZCkKICAqIGZv ciB0aGUgZ2l2ZW4gbGlzdCBvZiBzZXF1ZW5jZSBpbmRleGVzLgogICovCiBzdGF0aWMgdm9pZAot Z2V0X3NlcXVlbmNlc19zdHJpbmcoTGlzdCAqc2VxaW5kZXhlcywgU3RyaW5nSW5mbyBidWYpCitn ZXRfc2VxdWVuY2VzX3N0cmluZyhMaXN0ICpzZXFpbmRleGVzLCBMaXN0ICpzZXFpbmZvcywgU3Ry aW5nSW5mbyBidWYpCiB7CiAJcmVzZXRTdHJpbmdJbmZvKGJ1Zik7CiAJZm9yZWFjaF9pbnQoc2Vx aWR4LCBzZXFpbmRleGVzKQpAQCAtMTcxLDcgKzIwOCw3IEBAIGdldF9zZXF1ZW5jZXNfc3RyaW5n KExpc3QgKnNlcWluZGV4ZXMsIFN0cmluZ0luZm8gYnVmKQogICovCiBzdGF0aWMgdm9pZAogcmVw b3J0X3NlcXVlbmNlX2Vycm9ycyhMaXN0ICptaXNtYXRjaGVkX3NlcXNfaWR4LCBMaXN0ICppbnN1 ZmZwZXJtX3NlcXNfaWR4LAotCQkJCQkgICBMaXN0ICptaXNzaW5nX3NlcXNfaWR4KQorCQkJCQkg ICBMaXN0ICptaXNzaW5nX3NlcXNfaWR4LCBMaXN0ICpzZXFpbmZvcykKIHsKIAlTdHJpbmdJbmZv CXNlcXN0cjsKIApAQCAtMTgzLDcgKzIyMCw3IEBAIHJlcG9ydF9zZXF1ZW5jZV9lcnJvcnMoTGlz dCAqbWlzbWF0Y2hlZF9zZXFzX2lkeCwgTGlzdCAqaW5zdWZmcGVybV9zZXFzX2lkeCwKIAogCWlm IChtaXNtYXRjaGVkX3NlcXNfaWR4KQogCXsKLQkJZ2V0X3NlcXVlbmNlc19zdHJpbmcobWlzbWF0 Y2hlZF9zZXFzX2lkeCwgc2Vxc3RyKTsKKwkJZ2V0X3NlcXVlbmNlc19zdHJpbmcobWlzbWF0Y2hl ZF9zZXFzX2lkeCwgc2VxaW5mb3MsIHNlcXN0cik7CiAJCWVyZXBvcnQoV0FSTklORywKIAkJCQll cnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAogCQkJCWVy cm1zZ19wbHVyYWwoIm1pc21hdGNoZWQgb3IgcmVuYW1lZCBzZXF1ZW5jZSBvbiBzdWJzY3JpYmVy ICglcykiLApAQCAtMTk0LDcgKzIzMSw3IEBAIHJlcG9ydF9zZXF1ZW5jZV9lcnJvcnMoTGlzdCAq bWlzbWF0Y2hlZF9zZXFzX2lkeCwgTGlzdCAqaW5zdWZmcGVybV9zZXFzX2lkeCwKIAogCWlmIChp bnN1ZmZwZXJtX3NlcXNfaWR4KQogCXsKLQkJZ2V0X3NlcXVlbmNlc19zdHJpbmcoaW5zdWZmcGVy bV9zZXFzX2lkeCwgc2Vxc3RyKTsKKwkJZ2V0X3NlcXVlbmNlc19zdHJpbmcoaW5zdWZmcGVybV9z ZXFzX2lkeCwgc2VxaW5mb3MsIHNlcXN0cik7CiAJCWVyZXBvcnQoV0FSTklORywKIAkJCQllcnJj b2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAogCQkJCWVycm1z Z19wbHVyYWwoImluc3VmZmljaWVudCBwcml2aWxlZ2VzIG9uIHNlcXVlbmNlICglcykiLApAQCAt MjA1LDcgKzI0Miw3IEBAIHJlcG9ydF9zZXF1ZW5jZV9lcnJvcnMoTGlzdCAqbWlzbWF0Y2hlZF9z ZXFzX2lkeCwgTGlzdCAqaW5zdWZmcGVybV9zZXFzX2lkeCwKIAogCWlmIChtaXNzaW5nX3NlcXNf aWR4KQogCXsKLQkJZ2V0X3NlcXVlbmNlc19zdHJpbmcobWlzc2luZ19zZXFzX2lkeCwgc2Vxc3Ry KTsKKwkJZ2V0X3NlcXVlbmNlc19zdHJpbmcobWlzc2luZ19zZXFzX2lkeCwgc2VxaW5mb3MsIHNl cXN0cik7CiAJCWVyZXBvcnQoV0FSTklORywKIAkJCQllcnJjb2RlKEVSUkNPREVfT0JKRUNUX05P VF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAogCQkJCWVycm1zZ19wbHVyYWwoIm1pc3Npbmcgc2Vx dWVuY2Ugb24gcHVibGlzaGVyICglcykiLApAQCAtMjI5LDcgKzI2Niw4IEBAIHJlcG9ydF9zZXF1 ZW5jZV9lcnJvcnMoTGlzdCAqbWlzbWF0Y2hlZF9zZXFzX2lkeCwgTGlzdCAqaW5zdWZmcGVybV9z ZXFzX2lkeCwKICAqLwogc3RhdGljIENvcHlTZXFSZXN1bHQKIGdldF9hbmRfdmFsaWRhdGVfc2Vx X2luZm8oVHVwbGVUYWJsZVNsb3QgKnNsb3QsIFJlbGF0aW9uICpzZXF1ZW5jZV9yZWwsCi0JCQkJ CQkgIExvZ2ljYWxSZXBTZXF1ZW5jZUluZm8gKipzZXFpbmZvLCBpbnQgKnNlcWlkeCkKKwkJCQkJ CSAgTG9naWNhbFJlcFNlcXVlbmNlSW5mbyAqKnNlcWluZm8sIGludCAqc2VxaWR4LAorCQkJCQkJ ICBMaXN0ICpzZXFpbmZvcykKIHsKIAlib29sCQlpc251bGw7CiAJaW50CQkJY29sID0gMDsKQEAg LTMyNSwxMSArMzYzLDEyIEBAIGdldF9hbmRfdmFsaWRhdGVfc2VxX2luZm8oVHVwbGVUYWJsZVNs b3QgKnNsb3QsIFJlbGF0aW9uICpzZXF1ZW5jZV9yZWwsCiB9CiAKIC8qCi0gKiBBcHBseSByZW1v dGUgc2VxdWVuY2Ugc3RhdGUgdG8gbG9jYWwgc2VxdWVuY2UgYW5kIG1hcmsgaXQgYXMKLSAqIHN5 bmNocm9uaXplZCAoUkVBRFkpLgorICogQXBwbHkgcmVtb3RlIHNlcXVlbmNlIHN0YXRlIHRvIGxv Y2FsIHNlcXVlbmNlLiBJZiB3ZSBhcmUgZG9pbmcgdGhpcworICogZm9yIHNlcXVlbmNlcyBpbiB0 aGUgSU5JVCBzdGF0ZSwgbW92ZSB0aGVtIHRvIHRoZSBSRUFEWSBzdGF0ZSBvbmNlCisgKiBzeW5j aHJvbml6ZWQuCiAgKi8KIHN0YXRpYyBDb3B5U2VxUmVzdWx0Ci1jb3B5X3NlcXVlbmNlKExvZ2lj YWxSZXBTZXF1ZW5jZUluZm8gKnNlcWluZm8sIE9pZCBzZXFvd25lcikKK2NvcHlfc2VxdWVuY2Uo TG9naWNhbFJlcFNlcXVlbmNlSW5mbyAqc2VxaW5mbywgT2lkIHNlcW93bmVyLCBjaGFyIHJlbHN0 YXRlKQogewogCVVzZXJDb250ZXh0IHVjeHQ7CiAJQWNsUmVzdWx0CWFjbHJlc3VsdDsKQEAgLTM2 OCwxOSArNDA3LDQ2IEBAIGNvcHlfc2VxdWVuY2UoTG9naWNhbFJlcFNlcXVlbmNlSW5mbyAqc2Vx aW5mbywgT2lkIHNlcW93bmVyKQogCiAJLyoKIAkgKiBSZWNvcmQgdGhlIHJlbW90ZSBzZXF1ZW5j ZSdzIExTTiBpbiBwZ19zdWJzY3JpcHRpb25fcmVsIGFuZCBtYXJrIHRoZQotCSAqIHNlcXVlbmNl IGFzIFJFQURZLgorCSAqIHNlcXVlbmNlIGFzIFJFQURZIGlmIHVwZGF0aW5nIGEgc2VxdWVuY2Ug dGhhdCBpcyBpbiBJTklUIHN0YXRlLgogCSAqLwotCVVwZGF0ZVN1YnNjcmlwdGlvblJlbFN0YXRl KE15U3Vic2NyaXB0aW9uLT5vaWQsIHNlcW9pZCwgU1VCUkVMX1NUQVRFX1JFQURZLAotCQkJCQkJ CSAgIHNlcWluZm8tPnBhZ2VfbHNuLCBmYWxzZSk7CisJaWYgKHJlbHN0YXRlID09IFNVQlJFTF9T VEFURV9JTklUKQorCQlVcGRhdGVTdWJzY3JpcHRpb25SZWxTdGF0ZShNeVN1YnNjcmlwdGlvbi0+ b2lkLCBzZXFvaWQsIFNVQlJFTF9TVEFURV9SRUFEWSwKKwkJCQkJCQkJICAgc2VxaW5mby0+cGFn ZV9sc24sIGZhbHNlKTsKIAogCXJldHVybiBDT1BZU0VRX1NVQ0NFU1M7CiB9CiAKKy8qCisgKiBj aGVja19zZXF1ZW5jZV9kcmlmdAorICoKKyAqIENoZWNrIGlmIHRoZSByZW1vdGUgc2VxdWVuY2Ug dmFsdWVzIGRpZmZlciBmcm9tIHRoZSBsb2NhbCBzZXF1ZW5jZS4KKyAqIFJldHVybnMgdHJ1ZS9m YWxzZSBpZiBhbnkgc2VxdWVuY2VzIGRyaWZ0ZWQuCisgKi8KK3N0YXRpYyBib29sCitjaGVja19z ZXF1ZW5jZV9kcmlmdChSZWxhdGlvbiBzZXF1ZW5jZV9yZWwsIExvZ2ljYWxSZXBTZXF1ZW5jZUlu Zm8gKnNlcWluZm8pCit7CisJaW50NjQJCWxvY2FsX2xhc3RfdmFsdWU7CisJYm9vbAkJbG9jYWxf aXNfY2FsbGVkOworCisJLyogR2V0IGN1cnJlbnQgbG9jYWwgc2VxdWVuY2Ugc3RhdGUgKi8KKwlH ZXRTZXF1ZW5jZShzZXF1ZW5jZV9yZWwsICZsb2NhbF9sYXN0X3ZhbHVlLCAmbG9jYWxfaXNfY2Fs bGVkKTsKKworCS8qIENoZWNrIGlmIHZhbHVlcyBoYXZlIGRyaWZ0ZWQgYW5kIHJldHVybiBhY2Nv cmRpbmdseSAqLworCXJldHVybiAobG9jYWxfbGFzdF92YWx1ZSAhPSBzZXFpbmZvLT5sYXN0X3Zh bHVlIHx8CisJCWxvY2FsX2lzX2NhbGxlZCAhPSBzZXFpbmZvLT5pc19jYWxsZWQpOworfQorCiAv KgogICogQ29weSBleGlzdGluZyBkYXRhIG9mIHNlcXVlbmNlcyBmcm9tIHRoZSBwdWJsaXNoZXIu CisgKgorICogSWYgcmVsc3RhdGUgaXMgU1VCUkVMX1NUQVRFX1JFQURZLCBvbmx5IHN5bmNocm9u aXplIHNlcXVlbmNlcyB0aGF0CisgKiBoYXZlIGRyaWZ0ZWQgZnJvbSB0aGVpciBwdWJsaXNoZXIg dmFsdWVzLiBPdGhlcndpc2UsIHN5bmNocm9uaXplCisgKiBhbGwgc2VxdWVuY2VzLgorICoKKyAq IFJldHVybnMgdHJ1ZS9mYWxzZSBpZiBhbnkgc2VxdWVuY2VzIHdlcmUgYWN0dWFsbHkgY29waWVk LgogICovCi1zdGF0aWMgdm9pZAotY29weV9zZXF1ZW5jZXMoV2FsUmVjZWl2ZXJDb25uICpjb25u KQorc3RhdGljIGJvb2wKK2NvcHlfc2VxdWVuY2VzKFdhbFJlY2VpdmVyQ29ubiAqY29ubiwgTGlz dCAqc2VxaW5mb3MpCiB7CiAJaW50CQkJY3VyX2JhdGNoX2Jhc2VfaW5kZXggPSAwOwogCWludAkJ CW5fc2VxaW5mb3MgPSBsaXN0X2xlbmd0aChzZXFpbmZvcyk7CkBAIC0zOTAsMTMgKzQ1NiwxMCBA QCBjb3B5X3NlcXVlbmNlcyhXYWxSZWNlaXZlckNvbm4gKmNvbm4pCiAJU3RyaW5nSW5mbwlzZXFz dHIgPSBtYWtlU3RyaW5nSW5mbygpOwogCVN0cmluZ0luZm8JY21kID0gbWFrZVN0cmluZ0luZm8o KTsKIAlNZW1vcnlDb250ZXh0IG9sZGN0eDsKKwlib29sCQlzZXF1ZW5jZV9jb3BpZWQgPSBmYWxz ZTsKIAogI2RlZmluZSBNQVhfU0VRVUVOQ0VTX1NZTkNfUEVSX0JBVENIIDEwMAogCi0JZWxvZyhE RUJVRzEsCi0JCSAibG9naWNhbCByZXBsaWNhdGlvbiBzZXF1ZW5jZSBzeW5jaHJvbml6YXRpb24g Zm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIgLSB0b3RhbCB1bnN5bmNocm9uaXplZDogJWQiLAotCQkg TXlTdWJzY3JpcHRpb24tPm5hbWUsIG5fc2VxaW5mb3MpOwotCiAJd2hpbGUgKGN1cl9iYXRjaF9i YXNlX2luZGV4IDwgbl9zZXFpbmZvcykKIAl7CiAJCU9pZAkJCXNlcVJvd1tSRU1PVEVfU0VRX0NP TF9DT1VOVF0gPSB7SU5UOE9JRCwgSU5UOE9JRCwKQEAgLTQwNiw2ICs0NjksNyBAQCBjb3B5X3Nl cXVlbmNlcyhXYWxSZWNlaXZlckNvbm4gKmNvbm4pCiAJCWludAkJCWJhdGNoX21pc21hdGNoZWRf Y291bnQgPSAwOwogCQlpbnQJCQliYXRjaF9za2lwcGVkX2NvdW50ID0gMDsKIAkJaW50CQkJYmF0 Y2hfaW5zdWZmcGVybV9jb3VudCA9IDA7CisJCWludAkJCWJhdGNoX25vX2RyaWZ0ID0gMDsKIAkJ aW50CQkJYmF0Y2hfbWlzc2luZ19jb3VudDsKIAkJUmVsYXRpb24Jc2VxdWVuY2VfcmVsID0gTlVM TDsKIApAQCAtNTAxLDQ2ICs1NjUsNjIgQEAgY29weV9zZXF1ZW5jZXMoV2FsUmVjZWl2ZXJDb25u ICpjb25uKQogCQkJfQogCiAJCQlzeW5jX3N0YXR1cyA9IGdldF9hbmRfdmFsaWRhdGVfc2VxX2lu Zm8oc2xvdCwgJnNlcXVlbmNlX3JlbCwKLQkJCQkJCQkJCQkJCQkmc2VxaW5mbywgJnNlcWlkeCk7 CisJCQkJCQkJCQkJCQkJJnNlcWluZm8sICZzZXFpZHgsIHNlcWluZm9zKTsKKworCQkJLyoKKwkJ CSAqIEZvciBzZXF1ZW5jZXMgaW4gSU5JVCBzdGF0ZSwgYWx3YXlzIHN5bmMuCisJCQkgKiBPdGhl cndpc2UsIGZvciBzZXF1ZW5jZXMgaW4gUkVBRFkgc3RhdGUsIG9ubHkgc3luYyBpZiB0aGVyZSdz IGRyaWZ0LgorCQkJICovCiAJCQlpZiAoc3luY19zdGF0dXMgPT0gQ09QWVNFUV9TVUNDRVNTKQot CQkJCXN5bmNfc3RhdHVzID0gY29weV9zZXF1ZW5jZShzZXFpbmZvLAotCQkJCQkJCQkJCQlzZXF1 ZW5jZV9yZWwtPnJkX3JlbC0+cmVsb3duZXIpOworCQkJeworCQkJCWlmICgoc2VxaW5mby0+cmVs c3RhdGUgPT0gU1VCUkVMX1NUQVRFX0lOSVQpIHx8CisJCQkJICAgY2hlY2tfc2VxdWVuY2VfZHJp ZnQoc2VxdWVuY2VfcmVsLCBzZXFpbmZvKSkKKwkJCQkJc3luY19zdGF0dXMgPSBjb3B5X3NlcXVl bmNlKHNlcWluZm8sCisJCQkJCQkJCQkJCQlzZXF1ZW5jZV9yZWwtPnJkX3JlbC0+cmVsb3duZXIs CisJCQkJCQkJCQkJCQlzZXFpbmZvLT5yZWxzdGF0ZSk7CisJCQkJZWxzZQorCQkJCQlzeW5jX3N0 YXR1cyA9IENPUFlTRVFfTk9fRFJJRlQ7CisJCQl9CiAKIAkJCXN3aXRjaCAoc3luY19zdGF0dXMp CiAJCQl7CiAJCQkJY2FzZSBDT1BZU0VRX1NVQ0NFU1M6CiAJCQkJCWVsb2coREVCVUcxLAotCQkJ CQkJICJsb2dpY2FsIHJlcGxpY2F0aW9uIHN5bmNocm9uaXphdGlvbiBmb3Igc3Vic2NyaXB0aW9u IFwiJXNcIiwgc2VxdWVuY2UgXCIlcy4lc1wiIGhhcyBmaW5pc2hlZCIsCisJCQkJCQkgImxvZ2lj YWwgcmVwbGljYXRpb24gc3luY2hyb25pemF0aW8gZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIsIHNl cXVlbmNlIFwiJXMuJXNcIiBoYXMgYmVlbiB1cGRhdGVkIiwKIAkJCQkJCSBNeVN1YnNjcmlwdGlv bi0+bmFtZSwgc2VxaW5mby0+bnNwbmFtZSwKIAkJCQkJCSBzZXFpbmZvLT5zZXFuYW1lKTsKIAkJ CQkJYmF0Y2hfc3VjY2VlZGVkX2NvdW50Kys7CisJCQkJCXNlcXVlbmNlX2NvcGllZCA9IHRydWU7 CiAJCQkJCWJyZWFrOworCiAJCQkJY2FzZSBDT1BZU0VRX01JU01BVENIOgogCiAJCQkJCS8qCi0J CQkJCSAqIFJlbWVtYmVyIG1pc21hdGNoZWQgc2VxdWVuY2VzIGluIGEgbG9uZy1saXZlZCBtZW1v cnkKLQkJCQkJICogY29udGV4dCBzaW5jZSB0aGVzZSB3aWxsIGJlIHVzZWQgYWZ0ZXIgdGhlIHRy YW5zYWN0aW9uCi0JCQkJCSAqIGlzIGNvbW1pdHRlZC4KKwkJCQkJICogUmVtZW1iZXIgbWlzbWF0 Y2hlZCBzZXF1ZW5jZXMgaW4gU2VxdWVuY2VTeW5jQ29udGV4dAorCQkJCQkgKiBzaW5jZSB0aGVz ZSB3aWxsIGJlIHVzZWQgYWZ0ZXIgdGhlIHRyYW5zYWN0aW9uIGlzCisJCQkJCSAqIGNvbW1pdHRl ZC4KIAkJCQkJICovCi0JCQkJCW9sZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhBcHBseUNv bnRleHQpOworCQkJCQlvbGRjdHggPSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oU2VxdWVuY2VTeW5j Q29udGV4dCk7CiAJCQkJCW1pc21hdGNoZWRfc2Vxc19pZHggPSBsYXBwZW5kX2ludChtaXNtYXRj aGVkX3NlcXNfaWR4LAogCQkJCQkJCQkJCQkJCSAgc2VxaWR4KTsKIAkJCQkJTWVtb3J5Q29udGV4 dFN3aXRjaFRvKG9sZGN0eCk7CiAJCQkJCWJhdGNoX21pc21hdGNoZWRfY291bnQrKzsKIAkJCQkJ YnJlYWs7CisKIAkJCQljYXNlIENPUFlTRVFfSU5TVUZGSUNJRU5UX1BFUk06CiAKIAkJCQkJLyoK LQkJCQkJICogUmVtZW1iZXIgc2VxdWVuY2VzIHdpdGggaW5zdWZmaWNpZW50IHByaXZpbGVnZXMg aW4gYQotCQkJCQkgKiBsb25nLWxpdmVkIG1lbW9yeSBjb250ZXh0IHNpbmNlIHRoZXNlIHdpbGwg YmUgdXNlZAotCQkJCQkgKiBhZnRlciB0aGUgdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkLgorCQkJ CQkgKiBSZW1lbWJlciBzZXF1ZW5jZXMgd2l0aCBpbnN1ZmZpY2llbnQgcHJpdmlsZWdlcyBpbgor CQkJCQkgKiBTZXF1ZW5jZVN5bmNDb250ZXh0IHNpbmNlIHRoZXNlIHdpbGwgYmUgdXNlZCBhZnRl ciB0aGUKKwkJCQkJICogdHJhbnNhY3Rpb24gaXMgY29tbWl0dGVkLgogCQkJCQkgKi8KLQkJCQkJ b2xkY3R4ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKEFwcGx5Q29udGV4dCk7CisJCQkJCW9sZGN0 eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhTZXF1ZW5jZVN5bmNDb250ZXh0KTsKIAkJCQkJaW5z dWZmcGVybV9zZXFzX2lkeCA9IGxhcHBlbmRfaW50KGluc3VmZnBlcm1fc2Vxc19pZHgsCiAJCQkJ CQkJCQkJCQkJICBzZXFpZHgpOwogCQkJCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4KTsK IAkJCQkJYmF0Y2hfaW5zdWZmcGVybV9jb3VudCsrOwogCQkJCQlicmVhazsKKwogCQkJCWNhc2Ug Q09QWVNFUV9TS0lQUEVEOgogCiAJCQkJCS8qCkBAIC01NTgsNiArNjM4LDE1IEBAIGNvcHlfc2Vx dWVuY2VzKFdhbFJlY2VpdmVyQ29ubiAqY29ubikKIAkJCQkJCWJhdGNoX3NraXBwZWRfY291bnQr KzsKIAkJCQkJfQogCQkJCQlicmVhazsKKworCQkJCWNhc2UgQ09QWVNFUV9OT19EUklGVDoKKwkJ CQkJLyogTm90aGluZyB0byBkbyAqLworCQkJCQliYXRjaF9ub19kcmlmdCsrOworCQkJCQlicmVh azsKKworCQkJCWRlZmF1bHQ6CisJCQkJCWVsb2coRVJST1IsICJ1bnJlY29nbml6ZWQgU2VxdWVu Y2UgcmVwbGljYXRpb24gcmVzdWx0OiAlZCIsIChpbnQpIHN5bmNfc3RhdHVzKTsKKwogCQkJfQog CiAJCQlpZiAoc2VxdWVuY2VfcmVsKQpAQCAtNTY2LDIwICs2NTUsMTkgQEAgY29weV9zZXF1ZW5j ZXMoV2FsUmVjZWl2ZXJDb25uICpjb25uKQogCiAJCUV4ZWNEcm9wU2luZ2xlVHVwbGVUYWJsZVNs b3Qoc2xvdCk7CiAJCXdhbHJjdl9jbGVhcl9yZXN1bHQocmVzKTsKLQkJcmVzZXRTdHJpbmdJbmZv KHNlcXN0cik7Ci0JCXJlc2V0U3RyaW5nSW5mbyhjbWQpOwogCiAJCWJhdGNoX21pc3NpbmdfY291 bnQgPSBiYXRjaF9zaXplIC0gKGJhdGNoX3N1Y2NlZWRlZF9jb3VudCArCiAJCQkJCQkJCQkJCWJh dGNoX21pc21hdGNoZWRfY291bnQgKwogCQkJCQkJCQkJCQliYXRjaF9pbnN1ZmZwZXJtX2NvdW50 ICsKLQkJCQkJCQkJCQkJYmF0Y2hfc2tpcHBlZF9jb3VudCk7CisJCQkJCQkJCQkJCWJhdGNoX3Nr aXBwZWRfY291bnQgKworCQkJCQkJCQkJCQliYXRjaF9ub19kcmlmdCk7CiAKIAkJZWxvZyhERUJV RzEsCi0JCQkgImxvZ2ljYWwgcmVwbGljYXRpb24gc2VxdWVuY2Ugc3luY2hyb25pemF0aW9uIGZv ciBzdWJzY3JpcHRpb24gXCIlc1wiIC0gYmF0Y2ggIyVkID0gJWQgYXR0ZW1wdGVkLCAlZCBzdWNj ZWVkZWQsICVkIG1pc21hdGNoZWQsICVkIGluc3VmZmljaWVudCBwZXJtaXNzaW9uLCAlZCBtaXNz aW5nIGZyb20gcHVibGlzaGVyLCAlZCBza2lwcGVkIiwKLQkJCSBNeVN1YnNjcmlwdGlvbi0+bmFt ZSwKLQkJCSAoY3VyX2JhdGNoX2Jhc2VfaW5kZXggLyBNQVhfU0VRVUVOQ0VTX1NZTkNfUEVSX0JB VENIKSArIDEsCi0JCQkgYmF0Y2hfc2l6ZSwgYmF0Y2hfc3VjY2VlZGVkX2NvdW50LCBiYXRjaF9t aXNtYXRjaGVkX2NvdW50LAotCQkJIGJhdGNoX2luc3VmZnBlcm1fY291bnQsIGJhdGNoX21pc3Np bmdfY291bnQsIGJhdGNoX3NraXBwZWRfY291bnQpOworCQkJImxvZ2ljYWwgcmVwbGljYXRpb24g c2VxdWVuY2Ugc3luY2hyb25pemF0aW9uIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIC0gYmF0Y2gg IyVkID0gJWQgYXR0ZW1wdGVkLCAlZCBzdWNjZWVkZWQsICVkIG1pc21hdGNoZWQsICVkIGluc3Vm ZmljaWVudCBwZXJtaXNzaW9uLCAlZCBtaXNzaW5nIGZyb20gcHVibGlzaGVyLCAlZCBza2lwcGVk LCAlZCBubyBkcmlmdCIsCisJCQlNeVN1YnNjcmlwdGlvbi0+bmFtZSwKKwkJCShjdXJfYmF0Y2hf YmFzZV9pbmRleCAvIE1BWF9TRVFVRU5DRVNfU1lOQ19QRVJfQkFUQ0gpICsgMSwKKwkJCWJhdGNo X3NpemUsIGJhdGNoX3N1Y2NlZWRlZF9jb3VudCwgYmF0Y2hfbWlzbWF0Y2hlZF9jb3VudCwKKwkJ CWJhdGNoX2luc3VmZnBlcm1fY291bnQsIGJhdGNoX21pc3NpbmdfY291bnQsIGJhdGNoX3NraXBw ZWRfY291bnQsIGJhdGNoX25vX2RyaWZ0KTsKIAogCQkvKiBDb21taXQgdGhpcyBiYXRjaCwgYW5k IHByZXBhcmUgZm9yIG5leHQgYmF0Y2ggKi8KIAkJQ29tbWl0VHJhbnNhY3Rpb25Db21tYW5kKCk7 CkBAIC02MDcsNTEgKzY5NSw1NSBAQCBjb3B5X3NlcXVlbmNlcyhXYWxSZWNlaXZlckNvbm4gKmNv bm4pCiAKIAkvKiBSZXBvcnQgbWlzbWF0Y2hlcywgcGVybWlzc2lvbiBpc3N1ZXMsIG9yIG1pc3Np bmcgc2VxdWVuY2VzICovCiAJcmVwb3J0X3NlcXVlbmNlX2Vycm9ycyhtaXNtYXRjaGVkX3NlcXNf aWR4LCBpbnN1ZmZwZXJtX3NlcXNfaWR4LAotCQkJCQkJICAgbWlzc2luZ19zZXFzX2lkeCk7CisJ CQkJCQkgICBtaXNzaW5nX3NlcXNfaWR4LCBzZXFpbmZvcyk7CisKKwlyZXR1cm4gc2VxdWVuY2Vf Y29waWVkOwogfQogCiAvKgogICogSWRlbnRpZmllcyBzZXF1ZW5jZXMgdGhhdCByZXF1aXJlIHN5 bmNocm9uaXphdGlvbiBhbmQgaW5pdGlhdGVzIHRoZQogICogc3luY2hyb25pemF0aW9uIHByb2Nl c3MuCisgKgorICogUmV0dXJucyB0cnVlIGlmIHNlcXVlbmNlcyBoYXZlIGJlZW4gdXBkYXRlZC4K ICAqLwotc3RhdGljIHZvaWQKLUxvZ2ljYWxSZXBTeW5jU2VxdWVuY2VzKHZvaWQpCitzdGF0aWMg Ym9vbAorTG9naWNhbFJlcFN5bmNTZXF1ZW5jZXMoV2FsUmVjZWl2ZXJDb25uICpjb25uKQogewot CWNoYXIJICAgKmVycjsKLQlib29sCQltdXN0X3VzZV9wYXNzd29yZDsKIAlSZWxhdGlvbglyZWw7 CiAJSGVhcFR1cGxlCXR1cDsKLQlTY2FuS2V5RGF0YSBza2V5WzJdOworCVNjYW5LZXlEYXRhIHNr ZXlbMV07CiAJU3lzU2NhbkRlc2Mgc2NhbjsKIAlPaWQJCQlzdWJpZCA9IE15TG9naWNhbFJlcFdv cmtlci0+c3ViaWQ7Ci0JU3RyaW5nSW5mb0RhdGEgYXBwX25hbWU7CisJYm9vbAkJc2VxdWVuY2Vf Y29waWVkID0gZmFsc2U7CisJTGlzdAkgICAqc2VxaW5mb3MgPSBOSUw7CisJTWVtb3J5Q29udGV4 dCBvbGRjdHg7CisKKwlBc3NlcnQoU2VxdWVuY2VTeW5jQ29udGV4dCk7CiAKIAlTdGFydFRyYW5z YWN0aW9uQ29tbWFuZCgpOwogCiAJcmVsID0gdGFibGVfb3BlbihTdWJzY3JpcHRpb25SZWxSZWxh dGlvbklkLCBBY2Nlc3NTaGFyZUxvY2spOwogCisJLyogU2NhbiBmb3IgYWxsIHNlcXVlbmNlcyBi ZWxvbmdpbmcgdG8gdGhpcyBzdWJzY3JpcHRpb24gKi8KIAlTY2FuS2V5SW5pdCgmc2tleVswXSwK IAkJCQlBbnVtX3BnX3N1YnNjcmlwdGlvbl9yZWxfc3JzdWJpZCwKIAkJCQlCVEVxdWFsU3RyYXRl Z3lOdW1iZXIsIEZfT0lERVEsCiAJCQkJT2JqZWN0SWRHZXREYXR1bShzdWJpZCkpOwogCi0JU2Nh bktleUluaXQoJnNrZXlbMV0sCi0JCQkJQW51bV9wZ19zdWJzY3JpcHRpb25fcmVsX3Nyc3Vic3Rh dGUsCi0JCQkJQlRFcXVhbFN0cmF0ZWd5TnVtYmVyLCBGX0NIQVJFUSwKLQkJCQlDaGFyR2V0RGF0 dW0oU1VCUkVMX1NUQVRFX0lOSVQpKTsKLQogCXNjYW4gPSBzeXN0YWJsZV9iZWdpbnNjYW4ocmVs LCBJbnZhbGlkT2lkLCBmYWxzZSwKLQkJCQkJCQkgIE5VTEwsIDIsIHNrZXkpOworCQkJCQkJCSAg TlVMTCwgMSwgc2tleSk7CisKIAl3aGlsZSAoSGVhcFR1cGxlSXNWYWxpZCh0dXAgPSBzeXN0YWJs ZV9nZXRuZXh0KHNjYW4pKSkKIAl7CiAJCUZvcm1fcGdfc3Vic2NyaXB0aW9uX3JlbCBzdWJyZWw7 CiAJCUxvZ2ljYWxSZXBTZXF1ZW5jZUluZm8gKnNlcTsKIAkJUmVsYXRpb24Jc2VxdWVuY2VfcmVs OwotCQlNZW1vcnlDb250ZXh0IG9sZGN0eDsKKwkJY2hhcgkJcmVsc3RhdGU7CiAKIAkJQ0hFQ0tf Rk9SX0lOVEVSUlVQVFMoKTsKIAogCQlzdWJyZWwgPSAoRm9ybV9wZ19zdWJzY3JpcHRpb25fcmVs KSBHRVRTVFJVQ1QodHVwKTsKKwkJcmVsc3RhdGUgPSBzdWJyZWwtPnNyc3Vic3RhdGU7CiAKIAkJ c2VxdWVuY2VfcmVsID0gdHJ5X3RhYmxlX29wZW4oc3VicmVsLT5zcnJlbGlkLCBSb3dFeGNsdXNp dmVMb2NrKTsKIApAQCAtNjY2LDE2ICs3NTgsMTkgQEAgTG9naWNhbFJlcFN5bmNTZXF1ZW5jZXMo dm9pZCkKIAkJCWNvbnRpbnVlOwogCQl9CiAKKwkJQXNzZXJ0KHJlbHN0YXRlID09IFNVQlJFTF9T VEFURV9JTklUIHx8IHJlbHN0YXRlID09IFNVQlJFTF9TVEFURV9SRUFEWSk7CisKIAkJLyoKIAkJ ICogV29ya2VyIG5lZWRzIHRvIHByb2Nlc3Mgc2VxdWVuY2VzIGFjcm9zcyB0cmFuc2FjdGlvbiBi b3VuZGFyeSwgc28KLQkJICogYWxsb2NhdGUgdGhlbSB1bmRlciBsb25nLWxpdmVkIGNvbnRleHQu CisJCSAqIGFsbG9jYXRlIHRoZW0gdW5kZXIgU2VxdWVuY2VTeW5jQ29udGV4dC4KIAkJICovCi0J CW9sZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhBcHBseUNvbnRleHQpOworCQlvbGRjdHgg PSBNZW1vcnlDb250ZXh0U3dpdGNoVG8oU2VxdWVuY2VTeW5jQ29udGV4dCk7CiAKIAkJc2VxID0g cGFsbG9jMF9vYmplY3QoTG9naWNhbFJlcFNlcXVlbmNlSW5mbyk7CiAJCXNlcS0+bG9jYWxyZWxp ZCA9IHN1YnJlbC0+c3JyZWxpZDsKIAkJc2VxLT5uc3BuYW1lID0gZ2V0X25hbWVzcGFjZV9uYW1l KFJlbGF0aW9uR2V0TmFtZXNwYWNlKHNlcXVlbmNlX3JlbCkpOwogCQlzZXEtPnNlcW5hbWUgPSBw c3RyZHVwKFJlbGF0aW9uR2V0UmVsYXRpb25OYW1lKHNlcXVlbmNlX3JlbCkpOworCQlzZXEtPnJl bHN0YXRlID0gcmVsc3RhdGU7CiAJCXNlcWluZm9zID0gbGFwcGVuZChzZXFpbmZvcywgc2VxKTsK IAogCQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY3R4KTsKQEAgLTY5MywzNiArNzg4LDIzIEBA IExvZ2ljYWxSZXBTeW5jU2VxdWVuY2VzKHZvaWQpCiAJICogRXhpdCBlYXJseSBpZiBubyBjYXRh bG9nIGVudHJpZXMgZm91bmQsIGxpa2VseSBkdWUgdG8gY29uY3VycmVudCBkcm9wcy4KIAkgKi8K IAlpZiAoIXNlcWluZm9zKQotCQlyZXR1cm47CisJCXJldHVybiBmYWxzZTsKIAotCS8qIElzIHRo ZSB1c2Ugb2YgYSBwYXNzd29yZCBtYW5kYXRvcnk/ICovCi0JbXVzdF91c2VfcGFzc3dvcmQgPSBN eVN1YnNjcmlwdGlvbi0+cGFzc3dvcmRyZXF1aXJlZCAmJgotCQkhTXlTdWJzY3JpcHRpb24tPm93 bmVyc3VwZXJ1c2VyOworCW9sZGN0eCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhTZXF1ZW5jZVN5 bmNDb250ZXh0KTsKIAotCWluaXRTdHJpbmdJbmZvKCZhcHBfbmFtZSk7Ci0JYXBwZW5kU3RyaW5n SW5mbygmYXBwX25hbWUsICJwZ18ldV9zZXF1ZW5jZV9zeW5jXyIgVUlOVDY0X0ZPUk1BVCwKLQkJ CQkJIE15U3Vic2NyaXB0aW9uLT5vaWQsIEdldFN5c3RlbUlkZW50aWZpZXIoKSk7CisJLyogUHJv Y2VzcyBzZXF1ZW5jZXMgKi8KKwlzZXF1ZW5jZV9jb3BpZWQgPSBjb3B5X3NlcXVlbmNlcyhjb25u LCBzZXFpbmZvcyk7CiAKLQkvKgotCSAqIEVzdGFibGlzaCB0aGUgY29ubmVjdGlvbiB0byB0aGUg cHVibGlzaGVyIGZvciBzZXF1ZW5jZSBzeW5jaHJvbml6YXRpb24uCi0JICovCi0JTG9nUmVwV29y a2VyV2FsUmN2Q29ubiA9Ci0JCXdhbHJjdl9jb25uZWN0KE15U3Vic2NyaXB0aW9uLT5jb25uaW5m bywgdHJ1ZSwgdHJ1ZSwKLQkJCQkJICAgbXVzdF91c2VfcGFzc3dvcmQsCi0JCQkJCSAgIGFwcF9u YW1lLmRhdGEsICZlcnIpOwotCWlmIChMb2dSZXBXb3JrZXJXYWxSY3ZDb25uID09IE5VTEwpCi0J CWVyZXBvcnQoRVJST1IsCi0JCQkJZXJyY29kZShFUlJDT0RFX0NPTk5FQ1RJT05fRkFJTFVSRSks Ci0JCQkJZXJybXNnKCJzZXF1ZW5jZXN5bmMgd29ya2VyIGZvciBzdWJzY3JpcHRpb24gXCIlc1wi IGNvdWxkIG5vdCBjb25uZWN0IHRvIHRoZSBwdWJsaXNoZXI6ICVzIiwKLQkJCQkJICAgTXlTdWJz Y3JpcHRpb24tPm5hbWUsIGVycikpOwotCi0JcGZyZWUoYXBwX25hbWUuZGF0YSk7Ci0KLQljb3B5 X3NlcXVlbmNlcyhMb2dSZXBXb3JrZXJXYWxSY3ZDb25uKTsKKwlNZW1vcnlDb250ZXh0U3dpdGNo VG8ob2xkY3R4KTsKKworCS8qIENsZWFudXAgdGhlIG1lbW9yeS4gKi8KKwlNZW1vcnlDb250ZXh0 UmVzZXQoU2VxdWVuY2VTeW5jQ29udGV4dCk7CisKKwlyZXR1cm4gc2VxdWVuY2VfY29waWVkOwog fQogCiAvKgotICogRXhlY3V0ZSB0aGUgaW5pdGlhbCBzeW5jIHdpdGggZXJyb3IgaGFuZGxpbmcu IERpc2FibGUgdGhlIHN1YnNjcmlwdGlvbiwKKyAqIEV4ZWN1dGUgdGhlIHNlcXVlbmNlIHN5bmMg d2l0aCBlcnJvciBoYW5kbGluZy4gRGlzYWJsZSB0aGUgc3Vic2NyaXB0aW9uLAogICogaWYgcmVx dWlyZWQuCiAgKgogICogTm90ZSB0aGF0IHdlIGRvbid0IGhhbmRsZSBGQVRBTCBlcnJvcnMgd2hp Y2ggYXJlIHByb2JhYmx5IGJlY2F1c2Ugb2Ygc3lzdGVtCkBAIC03MzUsOCArODE3LDc5IEBAIHN0 YXJ0X3NlcXVlbmNlX3N5bmModm9pZCkKIAogCVBHX1RSWSgpOwogCXsKLQkJLyogQ2FsbCBpbml0 aWFsIHN5bmMuICovCi0JCUxvZ2ljYWxSZXBTeW5jU2VxdWVuY2VzKCk7CisJCWNoYXIgICAgICAg KmVycjsKKwkJYm9vbAkJbXVzdF91c2VfcGFzc3dvcmQ7CisJCVN0cmluZ0luZm9EYXRhIGFwcF9u YW1lOworCisJCS8qIElzIHRoZSB1c2Ugb2YgYSBwYXNzd29yZCBtYW5kYXRvcnk/ICovCisJCW11 c3RfdXNlX3Bhc3N3b3JkID0gTXlTdWJzY3JpcHRpb24tPnBhc3N3b3JkcmVxdWlyZWQgJiYKKwkJ CSFNeVN1YnNjcmlwdGlvbi0+b3duZXJzdXBlcnVzZXI7CisKKwkJaW5pdFN0cmluZ0luZm8oJmFw cF9uYW1lKTsKKwkJYXBwZW5kU3RyaW5nSW5mbygmYXBwX25hbWUsICJwZ18ldV9zZXF1ZW5jZV9z eW5jXyIgVUlOVDY0X0ZPUk1BVCwKKwkJCQkJCSBNeVN1YnNjcmlwdGlvbi0+b2lkLCBHZXRTeXN0 ZW1JZGVudGlmaWVyKCkpOworCisJCS8qCisJCSAqIEVzdGFibGlzaCB0aGUgY29ubmVjdGlvbiB0 byB0aGUgcHVibGlzaGVyIGZvciBzZXF1ZW5jZSBzeW5jaHJvbml6YXRpb24uCisJCSAqLworCQlM b2dSZXBXb3JrZXJXYWxSY3ZDb25uID0KKwkJCXdhbHJjdl9jb25uZWN0KE15U3Vic2NyaXB0aW9u LT5jb25uaW5mbywgdHJ1ZSwgdHJ1ZSwKKwkJCQkJCSAgIG11c3RfdXNlX3Bhc3N3b3JkLAorCQkJ CQkJICAgYXBwX25hbWUuZGF0YSwgJmVycik7CisJCWlmIChMb2dSZXBXb3JrZXJXYWxSY3ZDb25u ID09IE5VTEwpCisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQllcnJjb2RlKEVSUkNPREVfQ09OTkVD VElPTl9GQUlMVVJFKSwKKwkJCQkJZXJybXNnKCJzZXF1ZW5jZXN5bmMgd29ya2VyIGZvciBzdWJz Y3JpcHRpb24gXCIlc1wiIGNvdWxkIG5vdCBjb25uZWN0IHRvIHRoZSBwdWJsaXNoZXI6ICVzIiwK KwkJCQkJCSAgIE15U3Vic2NyaXB0aW9uLT5uYW1lLCBlcnIpKTsKKworCQlwZnJlZShhcHBfbmFt ZS5kYXRhKTsKKworCQkvKgorCQkgKiBJbml0IHRoZSBTZXF1ZW5jZVN5bmNDb250ZXh0IHdoaWNo IHdlIGNsZWFuIHVwIGFmdGVyIGVhY2ggc2VxdWVuY2UKKwkJICogc3luY2hyb25pemF0aW9uLgor CQkgKi8KKwkJU2VxdWVuY2VTeW5jQ29udGV4dCA9IEFsbG9jU2V0Q29udGV4dENyZWF0ZShBcHBs eUNvbnRleHQsCisJCQkJCQkJCQkJCQkJIlNlcXVlbmNlU3luY0NvbnRleHQiLAorCQkJCQkJCQkJ CQkJCUFMTE9DU0VUX0RFRkFVTFRfU0laRVMpOworCisJCWZvciAoOzspCisJCXsKKwkJCWJvb2wg c2VxdWVuY2VfY29waWVkID0gZmFsc2U7CisKKwkJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CisK KwkJCS8qIFByb2Nlc3MgYW55IGludmFsaWRhdGlvbiBtZXNzYWdlcyB0aGF0IG1pZ2h0IGhhdmUg YWNjdW11bGF0ZWQgKi8KKwkJCUFjY2VwdEludmFsaWRhdGlvbk1lc3NhZ2VzKCk7CisKKwkJCW1h eWJlX3JlcmVhZF9zdWJzY3JpcHRpb24oKTsKKworCQkJLyoKKwkJCSAqIFN5bmNocm9uaXplIGFs bCBzZXF1ZW5jZXMgKGJvdGggUkVBRFkgYW5kIElOSVQgc3RhdGVzKS4KKwkJCSAqLworCQkJc2Vx dWVuY2VfY29waWVkID0gTG9naWNhbFJlcFN5bmNTZXF1ZW5jZXMoTG9nUmVwV29ya2VyV2FsUmN2 Q29ubik7CisKKwkJCS8qIEFkanVzdCBzbGVlcCBpbnRlcnZhbCBiYXNlZCBvbiB3aGV0aGVyIHNl cXVlbmNlcyB3ZXJlIGNvcGllZCBvdmVyICovCisJCQlpZiAoc2VxdWVuY2VfY29waWVkKQorCQkJ eworCQkJCXNsZWVwX21zID0gU0VRU1lOQ19NSU5fU0xFRVBfTVM7CisJCQl9CisJCQllbHNlCisJ CQl7CisKKwkJCQkvKgorCQkJCSAqIERvdWJsZSB0aGUgc2xlZXAgdGltZSwgYnV0IG5vdCBiZXlv bmQKKwkJCQkgKiB0aGUgbWF4aW11bSBhbGxvd2FibGUgdmFsdWUuCisJCQkJICovCisJCQkJc2xl ZXBfbXMgPSBNaW4oc2xlZXBfbXMgKiAyLCBTRVFTWU5DX01BWF9TTEVFUF9NUyk7CisJCQl9CisK KwkJCS8qIFNsZWVwIGZvciB0aGUgY29uZmlndXJlZCBpbnRlcnZhbCAqLworCQkJKHZvaWQpIFdh aXRMYXRjaChNeUxhdGNoLAorCQkJCQkJCSBXTF9MQVRDSF9TRVQgfCBXTF9USU1FT1VUIHwgV0xf RVhJVF9PTl9QTV9ERUFUSCwKKwkJCQkJCQkgc2xlZXBfbXMsCisJCQkJCQkJIFdBSVRfRVZFTlRf TE9HSUNBTF9TWU5DX1NUQVRFX0NIQU5HRSk7CisJCQlSZXNldExhdGNoKE15TGF0Y2gpOworCQl9 CiAJfQogCVBHX0NBVENIKCk7CiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vbG9naWNhbC9zeW5jdXRpbHMuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv c3luY3V0aWxzLmMKaW5kZXggZWY2MWNhMDQzN2QuLmU4ZDIxZjU1YWYwIDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3N5bmN1dGlscy5jCisrKyBiL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc3luY3V0aWxzLmMKQEAgLTE3Miw3ICsxNzIsOSBAQCBQ cm9jZXNzU3luY2luZ1JlbGF0aW9ucyhYTG9nUmVjUHRyIGN1cnJlbnRfbHNuKQogCiAJCWNhc2Ug V09SS0VSVFlQRV9BUFBMWToKIAkJCVByb2Nlc3NTeW5jaW5nVGFibGVzRm9yQXBwbHkoY3VycmVu dF9sc24pOwotCQkJUHJvY2Vzc1NlcXVlbmNlc0ZvclN5bmMoKTsKKworCQkJLyogQ2hlY2sgaWYg c2VxdWVuY2Ugd29ya2VyIG5lZWRzIHRvIGJlIHN0YXJ0ZWQgKi8KKwkJCU1heWJlTGF1bmNoU2Vx dWVuY2VTeW5jV29ya2VyKCk7CiAJCQlicmVhazsKIAogCQljYXNlIFdPUktFUlRZUEVfU0VRVUVO Q0VTWU5DOgpAQCAtMTkxLDEzICsxOTMsMTMgQEAgUHJvY2Vzc1N5bmNpbmdSZWxhdGlvbnMoWExv Z1JlY1B0ciBjdXJyZW50X2xzbikKICAqCiAgKiBUaGUgcGdfc3Vic2NyaXB0aW9uX3JlbCBjYXRh bG9nIGlzIHNoYXJlZCBieSB0YWJsZXMgYW5kIHNlcXVlbmNlcy4gQ2hhbmdlcwogICogdG8gZWl0 aGVyIHNlcXVlbmNlcyBvciB0YWJsZXMgY2FuIGFmZmVjdCB0aGUgdmFsaWRpdHkgb2YgcmVsYXRp b24gc3RhdGVzLCBzbwotICogd2UgaWRlbnRpZnkgbm9uLVJFQURZIHRhYmxlcyBhbmQgbm9uLVJF QURZIHNlcXVlbmNlcyB0b2dldGhlciB0byBlbnN1cmUKKyAqIHdlIGlkZW50aWZ5IG5vbi1SRUFE WSB0YWJsZXMgYW5kIHNlcXVlbmNlcyAoaW4gYW55IHN0YXRlKSB0b2dldGhlciB0byBlbnN1cmUK ICAqIGNvbnNpc3RlbmN5LgogICoKICAqIGhhc19wZW5kaW5nX3N1YnRhYmxlczogdHJ1ZSBpZiB0 aGUgc3Vic2NyaXB0aW9uIGhhcyBvbmUgb3IgbW9yZSB0YWJsZXMgdGhhdAogICogYXJlIG5vdCBp biBSRUFEWSBzdGF0ZSwgb3RoZXJ3aXNlIGZhbHNlLgogICogaGFzX3BlbmRpbmdfc3Vic2VxdWVu Y2VzOiB0cnVlIGlmIHRoZSBzdWJzY3JpcHRpb24gaGFzIG9uZSBvciBtb3JlIHNlcXVlbmNlcwot ICogdGhhdCBhcmUgbm90IGluIFJFQURZIHN0YXRlLCBvdGhlcndpc2UgZmFsc2UuCisgKiAoaW4g YW55IHN0YXRlKSwgb3RoZXJ3aXNlIGZhbHNlLgogICovCiB2b2lkCiBGZXRjaFJlbGF0aW9uU3Rh dGVzKGJvb2wgKmhhc19wZW5kaW5nX3N1YnRhYmxlcywKQEAgLTIwNSwyMyArMjA3LDIwIEBAIEZl dGNoUmVsYXRpb25TdGF0ZXMoYm9vbCAqaGFzX3BlbmRpbmdfc3VidGFibGVzLAogCQkJCQlib29s ICpzdGFydGVkX3R4KQogewogCS8qCi0JICogaGFzX3N1YnRhYmxlcyBhbmQgaGFzX3N1YnNlcXVl bmNlc19ub25fcmVhZHkgYXJlIGRlY2xhcmVkIGFzIHN0YXRpYywKKwkgKiBoYXNfc3VidGFibGVz IGFuZCBoYXNfc3Vic2VxdWVuY2VzIGFyZSBkZWNsYXJlZCBhcyBzdGF0aWMsCiAJICogc2luY2Ug dGhlIHNhbWUgdmFsdWUgY2FuIGJlIHVzZWQgdW50aWwgdGhlIHN5c3RlbSB0YWJsZSBpcyBpbnZh bGlkYXRlZC4KIAkgKi8KIAlzdGF0aWMgYm9vbCBoYXNfc3VidGFibGVzID0gZmFsc2U7Ci0Jc3Rh dGljIGJvb2wgaGFzX3N1YnNlcXVlbmNlc19ub25fcmVhZHkgPSBmYWxzZTsKLQorCXN0YXRpYyBi b29sIGhhc19zdWJzZXF1ZW5jZXMgPSBmYWxzZTsKIAkqc3RhcnRlZF90eCA9IGZhbHNlOwotCiAJ aWYgKHJlbGF0aW9uX3N0YXRlc192YWxpZGl0eSAhPSBTWU5DX1JFTEFUSU9OU19TVEFURV9WQUxJ RCkKIAl7CiAJCU1lbW9yeUNvbnRleHQgb2xkY3R4OwogCQlMaXN0CSAgICpyc3RhdGVzOworCQlM aXN0CSAgICpzZXFfc3RhdGVzOwogCQlTdWJzY3JpcHRpb25SZWxTdGF0ZSAqcnN0YXRlOwotCiAJ CXJlbGF0aW9uX3N0YXRlc192YWxpZGl0eSA9IFNZTkNfUkVMQVRJT05TX1NUQVRFX1JFQlVJTERf U1RBUlRFRDsKLQkJaGFzX3N1YnNlcXVlbmNlc19ub25fcmVhZHkgPSBmYWxzZTsKLQorCQloYXNf c3Vic2VxdWVuY2VzID0gZmFsc2U7CiAJCS8qIENsZWFuIHRoZSBvbGQgbGlzdHMuICovCiAJCWxp c3RfZnJlZV9kZWVwKHRhYmxlX3N0YXRlc19ub3RfcmVhZHkpOwogCQl0YWJsZV9zdGF0ZXNfbm90 X3JlYWR5ID0gTklMOwpAQCAtMjMxLDI3ICsyMzAsMjYgQEAgRmV0Y2hSZWxhdGlvblN0YXRlcyhi b29sICpoYXNfcGVuZGluZ19zdWJ0YWJsZXMsCiAJCQlTdGFydFRyYW5zYWN0aW9uQ29tbWFuZCgp OwogCQkJKnN0YXJ0ZWRfdHggPSB0cnVlOwogCQl9Ci0KLQkJLyogRmV0Y2ggdGFibGVzIGFuZCBz ZXF1ZW5jZXMgdGhhdCBhcmUgaW4gbm9uLVJFQURZIHN0YXRlLiAqLwotCQlyc3RhdGVzID0gR2V0 U3Vic2NyaXB0aW9uUmVsYXRpb25zKE15U3Vic2NyaXB0aW9uLT5vaWQsIHRydWUsIHRydWUsCisJ CS8qIEZldGNoIHRhYmxlcyB0aGF0IGFyZSBpbiBub24tUkVBRFkgc3RhdGUuICovCisJCXJzdGF0 ZXMgPSBHZXRTdWJzY3JpcHRpb25SZWxhdGlvbnMoTXlTdWJzY3JpcHRpb24tPm9pZCwgdHJ1ZSwg ZmFsc2UsCiAJCQkJCQkJCQkJICAgdHJ1ZSk7Ci0KKwkJLyogRmV0Y2ggYWxsIHNlcXVlbmNlcyAo cmVnYXJkbGVzcyBvZiBzdGF0ZSkuICovCisJCXNlcV9zdGF0ZXMgPSBHZXRTdWJzY3JpcHRpb25S ZWxhdGlvbnMoTXlTdWJzY3JpcHRpb24tPm9pZCwgZmFsc2UsIHRydWUsCisJCQkJCQkJCQkJCSAg ZmFsc2UpOwogCQkvKiBBbGxvY2F0ZSB0aGUgdHJhY2tpbmcgaW5mbyBpbiBhIHBlcm1hbmVudCBt ZW1vcnkgY29udGV4dC4gKi8KIAkJb2xkY3R4ID0gTWVtb3J5Q29udGV4dFN3aXRjaFRvKENhY2hl TWVtb3J5Q29udGV4dCk7CiAJCWZvcmVhY2hfcHRyKFN1YnNjcmlwdGlvblJlbFN0YXRlLCBzdWJy ZWwsIHJzdGF0ZXMpCiAJCXsKLQkJCWlmIChnZXRfcmVsX3JlbGtpbmQoc3VicmVsLT5yZWxpZCkg PT0gUkVMS0lORF9TRVFVRU5DRSkKLQkJCQloYXNfc3Vic2VxdWVuY2VzX25vbl9yZWFkeSA9IHRy dWU7Ci0JCQllbHNlCi0JCQl7Ci0JCQkJcnN0YXRlID0gcGFsbG9jX29iamVjdChTdWJzY3JpcHRp b25SZWxTdGF0ZSk7Ci0JCQkJbWVtY3B5KHJzdGF0ZSwgc3VicmVsLCBzaXplb2YoU3Vic2NyaXB0 aW9uUmVsU3RhdGUpKTsKLQkJCQl0YWJsZV9zdGF0ZXNfbm90X3JlYWR5ID0gbGFwcGVuZCh0YWJs ZV9zdGF0ZXNfbm90X3JlYWR5LAotCQkJCQkJCQkJCQkJIHJzdGF0ZSk7Ci0JCQl9CisJCQlyc3Rh dGUgPSBwYWxsb2Nfb2JqZWN0KFN1YnNjcmlwdGlvblJlbFN0YXRlKTsKKwkJCW1lbWNweShyc3Rh dGUsIHN1YnJlbCwgc2l6ZW9mKFN1YnNjcmlwdGlvblJlbFN0YXRlKSk7CisJCQl0YWJsZV9zdGF0 ZXNfbm90X3JlYWR5ID0gbGFwcGVuZCh0YWJsZV9zdGF0ZXNfbm90X3JlYWR5LAorCQkJCQkJCQkJ CQkgcnN0YXRlKTsKIAkJfQorCQkvKiBDaGVjayBpZiB0aGVyZSBhcmUgYW55IHNlcXVlbmNlcy4g Ki8KKwkJaGFzX3N1YnNlcXVlbmNlcyA9IChzZXFfc3RhdGVzICE9IE5JTCk7CiAJCU1lbW9yeUNv bnRleHRTd2l0Y2hUbyhvbGRjdHgpOwogCisJCWxpc3RfZnJlZV9kZWVwKHNlcV9zdGF0ZXMpOwog CQkvKgogCQkgKiBEb2VzIHRoZSBzdWJzY3JpcHRpb24gaGF2ZSB0YWJsZXM/CiAJCSAqCkBAIC0y NzcsNSArMjc1LDUgQEAgRmV0Y2hSZWxhdGlvblN0YXRlcyhib29sICpoYXNfcGVuZGluZ19zdWJ0 YWJsZXMsCiAJCSpoYXNfcGVuZGluZ19zdWJ0YWJsZXMgPSBoYXNfc3VidGFibGVzOwogCiAJaWYg KGhhc19wZW5kaW5nX3N1YnNlcXVlbmNlcykKLQkJKmhhc19wZW5kaW5nX3N1YnNlcXVlbmNlcyA9 IGhhc19zdWJzZXF1ZW5jZXNfbm9uX3JlYWR5OworCQkqaGFzX3BlbmRpbmdfc3Vic2VxdWVuY2Vz ID0gaGFzX3N1YnNlcXVlbmNlczsKIH0KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0 aW9uL2xvZ2ljYWwvd29ya2VyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL3dv cmtlci5jCmluZGV4IGJhZThjMDExMzkwLi42ZGNlM2NlZDkwYiAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC93b3JrZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL3dvcmtlci5jCkBAIC00MjIxLDYgKzQyMjEsNyBAQCBMb2dpY2FsUmVw QXBwbHlMb29wKFhMb2dSZWNQdHIgbGFzdF9yZWNlaXZlZCkKIAkJCVByb2Nlc3NDb25maWdGaWxl KFBHQ19TSUdIVVApOwogCQl9CiAKKwogCQlpZiAocmMgJiBXTF9USU1FT1VUKQogCQl7CiAJCQkv KgpAQCAtNTA5OCw2ICs1MDk5LDkgQEAgbWF5YmVfcmVyZWFkX3N1YnNjcmlwdGlvbih2b2lkKQog CSAqIHdvcmtlciB3b24ndCByZXN0YXJ0IGlmIHRoZSBzdHJlYW1pbmcgb3B0aW9uJ3MgdmFsdWUg aXMgY2hhbmdlZCBmcm9tCiAJICogJ3BhcmFsbGVsJyB0byBhbnkgb3RoZXIgdmFsdWUgb3IgdGhl IHNlcnZlciBkZWNpZGVzIG5vdCB0byBzdHJlYW0gdGhlCiAJICogaW4tcHJvZ3Jlc3MgdHJhbnNh Y3Rpb24uCisJICoKKwkgKiBOb3RlOiBzb21lIHBhcmFtZXRlcnMgbWF5IG5vdCBiZSByZWxldmFu dCB0byB0aGUgc2VxdWVuY2Ugc3luYyB3b3JrZXIsCisJICogYnV0IGV4aXQgYW55d2F5LgogCSAq LwogCWlmIChzdHJjbXAobmV3c3ViLT5jb25uaW5mbywgTXlTdWJzY3JpcHRpb24tPmNvbm5pbmZv KSAhPSAwIHx8CiAJCXN0cmNtcChuZXdzdWItPm5hbWUsIE15U3Vic2NyaXB0aW9uLT5uYW1lKSAh PSAwIHx8CkBAIC01MTEzLDYgKzUxMTcsMTAgQEAgbWF5YmVfcmVyZWFkX3N1YnNjcmlwdGlvbih2 b2lkKQogCQkJZXJlcG9ydChMT0csCiAJCQkJCShlcnJtc2coImxvZ2ljYWwgcmVwbGljYXRpb24g cGFyYWxsZWwgYXBwbHkgd29ya2VyIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIHdpbGwgc3RvcCBi ZWNhdXNlIG9mIGEgcGFyYW1ldGVyIGNoYW5nZSIsCiAJCQkJCQkJTXlTdWJzY3JpcHRpb24tPm5h bWUpKSk7CisJCWVsc2UgaWYgKGFtX3NlcXVlbmNlc3luY193b3JrZXIoKSkKKwkJCWVyZXBvcnQo TE9HLAorCQkJCQkoZXJybXNnKCJsb2dpY2FsIHJlcGxpY2F0aW9uIHNlcXVlbmNlIHN5bmNocm9u aXphdGlvbiB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiBcIiVzXCIgd2lsbCBzdG9wIGJlY2F1c2Ug b2YgYSBwYXJhbWV0ZXIgY2hhbmdlIiwKKwkJCQkJCQlNeVN1YnNjcmlwdGlvbi0+bmFtZSkpKTsK IAkJZWxzZQogCQkJZXJlcG9ydChMT0csCiAJCQkJCShlcnJtc2coImxvZ2ljYWwgcmVwbGljYXRp b24gd29ya2VyIGZvciBzdWJzY3JpcHRpb24gXCIlc1wiIHdpbGwgcmVzdGFydCBiZWNhdXNlIG9m IGEgcGFyYW1ldGVyIGNoYW5nZSIsCkBAIC01MTMxLDYgKzUxMzksMTAgQEAgbWF5YmVfcmVyZWFk X3N1YnNjcmlwdGlvbih2b2lkKQogCQkJZXJlcG9ydChMT0csCiAJCQkJCWVycm1zZygibG9naWNh bCByZXBsaWNhdGlvbiBwYXJhbGxlbCBhcHBseSB3b3JrZXIgZm9yIHN1YnNjcmlwdGlvbiBcIiVz XCIgd2lsbCBzdG9wIGJlY2F1c2UgdGhlIHN1YnNjcmlwdGlvbiBvd25lcidzIHN1cGVydXNlciBw cml2aWxlZ2VzIGhhdmUgYmVlbiByZXZva2VkIiwKIAkJCQkJCSAgIE15U3Vic2NyaXB0aW9uLT5u YW1lKSk7CisJCWVsc2UgaWYgKGFtX3NlcXVlbmNlc3luY193b3JrZXIoKSkKKwkJCWVyZXBvcnQo TE9HLAorCQkJCQllcnJtc2coImxvZ2ljYWwgcmVwbGljYXRpb24gc2VxdWVuY2Ugc3luY2hyb25p emF0aW9uIHdvcmtlciBmb3Igc3Vic2NyaXB0aW9uIFwiJXNcIiB3aWxsIHN0b3AgYmVjYXVzZSB0 aGUgc3Vic2NyaXB0aW9uIG93bmVyJ3Mgc3VwZXJ1c2VyIHByaXZpbGVnZXMgaGF2ZSBiZWVuIHJl dm9rZWQiLAorCQkJCQkJCU15U3Vic2NyaXB0aW9uLT5uYW1lKSk7CiAJCWVsc2UKIAkJCWVyZXBv cnQoTE9HLAogCQkJCQllcnJtc2coImxvZ2ljYWwgcmVwbGljYXRpb24gd29ya2VyIGZvciBzdWJz Y3JpcHRpb24gXCIlc1wiIHdpbGwgcmVzdGFydCBiZWNhdXNlIHRoZSBzdWJzY3JpcHRpb24gb3du ZXIncyBzdXBlcnVzZXIgcHJpdmlsZWdlcyBoYXZlIGJlZW4gcmV2b2tlZCIsCmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3N1YnNjcmlwdGlvbl9yZWwuaCBiL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfc3Vic2NyaXB0aW9uX3JlbC5oCmluZGV4IDUwMjY0MGQzMDE4Li44NjU3NGI2 OTE2OSAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb25fcmVs LmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19zdWJzY3JpcHRpb25fcmVsLmgKQEAgLTk2 LDYgKzk2LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgTG9naWNhbFJlcFNlcXVlbmNlSW5mbwogCWNoYXIJ ICAgKnNlcW5hbWU7CiAJY2hhcgkgICAqbnNwbmFtZTsKIAlPaWQJCQlsb2NhbHJlbGlkOworCWNo YXIJCXJlbHN0YXRlOwogCiAJLyogU2VxdWVuY2UgaW5mb3JtYXRpb24gcmV0cmlldmVkIGZyb20g dGhlIHB1Ymxpc2hlciBub2RlICovCiAJWExvZ1JlY1B0cglwYWdlX2xzbjsKZGlmZiAtLWdpdCBh L3NyYy9pbmNsdWRlL2NvbW1hbmRzL3NlcXVlbmNlLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9z ZXF1ZW5jZS5oCmluZGV4IDJjM2M0YTNmMDc0Li5mMDBlZWE5ZmJkMSAxMDA2NDQKLS0tIGEvc3Jj L2luY2x1ZGUvY29tbWFuZHMvc2VxdWVuY2UuaAorKysgYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9z ZXF1ZW5jZS5oCkBAIC00Nyw2ICs0Nyw3IEBAIGV4dGVybiBPYmplY3RBZGRyZXNzIEFsdGVyU2Vx dWVuY2UoUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlclNlcVN0bXQgKnN0bXQpOwogZXh0ZXJuIHZv aWQgU2VxdWVuY2VDaGFuZ2VQZXJzaXN0ZW5jZShPaWQgcmVsaWQsIGNoYXIgbmV3cmVscGVyc2lz dGVuY2UpOwogZXh0ZXJuIHZvaWQgRGVsZXRlU2VxdWVuY2VUdXBsZShPaWQgcmVsaWQpOwogZXh0 ZXJuIHZvaWQgUmVzZXRTZXF1ZW5jZShPaWQgc2VxX3JlbGlkKTsKK2V4dGVybiB2b2lkIEdldFNl cXVlbmNlKFJlbGF0aW9uIHNlcXJlbCwgaW50NjQgKmxhc3RfdmFsdWUsIGJvb2wgKmlzX2NhbGxl ZCk7CiBleHRlcm4gdm9pZCBTZXRTZXF1ZW5jZShPaWQgcmVsaWQsIGludDY0IG5leHQsIGJvb2wg aXNjYWxsZWQpOwogZXh0ZXJuIHZvaWQgUmVzZXRTZXF1ZW5jZUNhY2hlcyh2b2lkKTsKIApkaWZm IC0tZ2l0IGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vd29ya2VyX2ludGVybmFsLmggYi9zcmMv aW5jbHVkZS9yZXBsaWNhdGlvbi93b3JrZXJfaW50ZXJuYWwuaAppbmRleCA0ZWNiZGNmYWRhYy4u YTQxY2IwNDVmMTkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9p bnRlcm5hbC5oCisrKyBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3dvcmtlcl9pbnRlcm5hbC5o CkBAIC0yODYsNyArMjg2LDcgQEAgZXh0ZXJuIHZvaWQgVXBkYXRlVHdvUGhhc2VTdGF0ZShPaWQg c3Vib2lkLCBjaGFyIG5ld19zdGF0ZSk7CiAKIGV4dGVybiB2b2lkIFByb2Nlc3NTeW5jaW5nVGFi bGVzRm9yU3luYyhYTG9nUmVjUHRyIGN1cnJlbnRfbHNuKTsKIGV4dGVybiB2b2lkIFByb2Nlc3NT eW5jaW5nVGFibGVzRm9yQXBwbHkoWExvZ1JlY1B0ciBjdXJyZW50X2xzbik7Ci1leHRlcm4gdm9p ZCBQcm9jZXNzU2VxdWVuY2VzRm9yU3luYyh2b2lkKTsKK2V4dGVybiB2b2lkIE1heWJlTGF1bmNo U2VxdWVuY2VTeW5jV29ya2VyKHZvaWQpOwogCiBwZ19ub3JldHVybiBleHRlcm4gdm9pZCBGaW5p c2hTeW5jV29ya2VyKHZvaWQpOwogZXh0ZXJuIHZvaWQgSW52YWxpZGF0ZVN5bmNpbmdSZWxTdGF0 ZXMoRGF0dW0gYXJnLCBTeXNDYWNoZUlkZW50aWZpZXIgY2FjaGVpZCwKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyNl9zdGF0cy5wbCBiL3NyYy90ZXN0L3N1YnNjcmlwdGlv bi90LzAyNl9zdGF0cy5wbAppbmRleCA1ZDQ1NzA2MGEwMi4uMmZlMjA5ZjQ2MWYgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAyNl9zdGF0cy5wbAorKysgYi9zcmMvdGVzdC9z dWJzY3JpcHRpb24vdC8wMjZfc3RhdHMucGwKQEAgLTE2LDYgKzE2LDggQEAgJG5vZGVfcHVibGlz aGVyLT5zdGFydDsKICMgQ3JlYXRlIHN1YnNjcmliZXIgbm9kZS4KIG15ICRub2RlX3N1YnNjcmli ZXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyLT5uZXcoJ3N1YnNjcmliZXInKTsKICRub2Rl X3N1YnNjcmliZXItPmluaXQ7Ciskbm9kZV9zdWJzY3JpYmVyLT5hcHBlbmRfY29uZigncG9zdGdy ZXNxbC5jb25mJywKKwkibWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2VycyA9IDEwIik7CiAk bm9kZV9zdWJzY3JpYmVyLT5zdGFydDsKIAogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3Jp cHRpb24vdC8wMzZfc2VxdWVuY2VzLnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM2X3Nl cXVlbmNlcy5wbAppbmRleCA0NzE3ODBhMzU4NS4uMWQ4MTUxOGZlMjIgMTAwNjQ0Ci0tLSBhL3Ny Yy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzNl9zZXF1ZW5jZXMucGwKKysrIGIvc3JjL3Rlc3Qvc3Vi c2NyaXB0aW9uL3QvMDM2X3NlcXVlbmNlcy5wbApAQCAtNzUsOCArNzUsNyBAQCBpcygkcmVzdWx0 LCAnMTAwfHQnLAogCiAjIyMjIyMjIyMjCiAjIyBBTFRFUiBTVUJTQ1JJUFRJT04gLi4uIFJFRlJF U0ggUFVCTElDQVRJT04gc2hvdWxkIGNhdXNlIHN5bmMgb2YgbmV3Ci0jIHNlcXVlbmNlcyBvZiB0 aGUgcHVibGlzaGVyLCBidXQgY2hhbmdlcyB0byBleGlzdGluZyBzZXF1ZW5jZXMgc2hvdWxkCi0j IG5vdCBiZSBzeW5jZWQuCisjIHNlcXVlbmNlcyBvZiB0aGUgcHVibGlzaGVyLgogIyMjIyMjIyMj IwogCiAjIENyZWF0ZSBhIG5ldyBzZXF1ZW5jZSAncmVncmVzc19zMicsIGFuZCB1cGRhdGUgZXhp c3Rpbmcgc2VxdWVuY2UgJ3JlZ3Jlc3NfczEnCkBAIC04NCw5ICs4Myw2IEBAICRub2RlX3B1Ymxp c2hlci0+c2FmZV9wc3FsKAogCSdwb3N0Z3JlcycsIHFxKAogCUNSRUFURSBTRVFVRU5DRSByZWdy ZXNzX3MyOwogCUlOU0VSVCBJTlRPIHJlZ3Jlc3Nfc2VxX3Rlc3QgU0VMRUNUIG5leHR2YWwoJ3Jl Z3Jlc3NfczInKSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwMCk7Ci0KLQktLSBFeGlzdGluZyBz ZXF1ZW5jZQotCUlOU0VSVCBJTlRPIHJlZ3Jlc3Nfc2VxX3Rlc3QgU0VMRUNUIG5leHR2YWwoJ3Jl Z3Jlc3NfczEnKSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwMCk7CiApKTsKIAogIyBEbyBBTFRF UiBTVUJTQ1JJUFRJT04gLi4uIFJFRlJFU0ggUFVCTElDQVRJT04KQEAgLTk3LDE5ICs5Myw2IEBA ICRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCiAkbm9kZV9zdWJzY3JpYmVy LT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsICRzeW5jZWRfcXVlcnkpCiAgIG9yIGRpZSAi VGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIHN1YnNjcmliZXIgdG8gc3luY2hyb25pemUgZGF0 YSI7CiAKLSRyZXN1bHQgPSAkbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMn LCBxcSgKLQlTRUxFQ1QgbGFzdF92YWx1ZSwgaXNfY2FsbGVkIEZST00gcmVncmVzc19zMTsKLSkp OwotaXMoJHJlc3VsdCwgJzIwMHx0JywgJ0NoZWNrIHNlcXVlbmNlIHZhbHVlIGluIHRoZSBwdWJs aXNoZXInKTsKLQotIyBDaGVjayAtIGV4aXN0aW5nIHNlcXVlbmNlICgncmVncmVzc19zMScpIGlz IG5vdCBzeW5jZWQKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCi0JJ3Bv c3RncmVzJywgcXEoCi0JU0VMRUNUIGxhc3RfdmFsdWUsIGlzX2NhbGxlZCBGUk9NIHJlZ3Jlc3Nf czE7Ci0pKTsKLWlzKCRyZXN1bHQsICcxMDB8dCcsICdSRUZSRVNIIFBVQkxJQ0FUSU9OIHdpbGwg bm90IHN5bmMgZXhpc3Rpbmcgc2VxdWVuY2UnKTsKLQogIyBDaGVjayAtIG5ld2x5IHB1Ymxpc2hl ZCBzZXF1ZW5jZSAoJ3JlZ3Jlc3NfczInKSBpcyBzeW5jZWQKICRyZXN1bHQgPSAkbm9kZV9zdWJz Y3JpYmVyLT5zYWZlX3BzcWwoCiAJJ3Bvc3RncmVzJywgcXEoCkBAIC0xMTksMTYgKzEwMiwxMyBA QCBpcygkcmVzdWx0LCAnMTAwfHQnLAogCSdSRUZSRVNIIFBVQkxJQ0FUSU9OIHdpbGwgc3luYyBu ZXdseSBwdWJsaXNoZWQgc2VxdWVuY2UnKTsKIAogIyMjIyMjIyMjIwotIyBUZXN0OiBSRUZSRVNI IFNFUVVFTkNFUyBhbmQgUkVGUkVTSCBQVUJMSUNBVElPTiAoY29weV9kYXRhID0gZmFsc2UpCi0j Ci0jIDEuIEFMVEVSIFNVQlNDUklQVElPTiAuLi4gUkVGUkVTSCBTRVFVRU5DRVMgc2hvdWxkIHJl LXN5bmNocm9uaXplIGFsbAotIyAgICBleGlzdGluZyBzZXF1ZW5jZXMsIGJ1dCBub3Qgc3luY2hy b25pemUgbmV3bHkgYWRkZWQgb25lcy4KLSMgMi4gQUxURVIgU1VCU0NSSVBUSU9OIC4uLiBSRUZS RVNIIFBVQkxJQ0FUSU9OIHdpdGggKGNvcHlfZGF0YSA9IGZhbHNlKSBzaG91bGQKLSMgICAgYWxz byBub3QgdXBkYXRlIHNlcXVlbmNlIHZhbHVlcyBmb3IgbmV3bHkgYWRkZWQgc2VxdWVuY2VzLgor IyBUZXN0OgorIyAxLiBBdXRvbWF0aWMgdXBkYXRlIG9mIGV4aXN0aW5nIHNlcXVlbmNlIHZhbHVl cworIyAyLiBOZXdseSBhZGRlZCBzZXF1ZW5jZXMgYXJlIG5vdCBhdXRvbWF0aWNhbGx5IHVwZGF0 ZWQuCiAjIyMjIyMjIyMjCiAKLSMgQ3JlYXRlIGEgbmV3IHNlcXVlbmNlICdyZWdyZXNzX3MzJywg YW5kIHVwZGF0ZSB0aGUgZXhpc3Rpbmcgc2VxdWVuY2UKLSMgJ3JlZ3Jlc3NfczInLgorIyBDcmVh dGUgYSBuZXcgc2VxdWVuY2UgJ3JlZ3Jlc3NfczMnLCBhbmQgdXBkYXRlIHRoZSBleGlzdGluZyBz ZXF1ZW5jZXMKKyMgJ3JlZ3Jlc3NfczInIGFuZCAncmVncmVzc19zMScuCiAkbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgKIAkncG9zdGdyZXMnLCBxcSgKIAlDUkVBVEUgU0VRVUVOQ0UgcmVncmVz c19zMzsKQEAgLTEzNiw1MyArMTE2LDI4IEBAICRub2RlX3B1Ymxpc2hlci0+c2FmZV9wc3FsKAog CiAJLS0gRXhpc3Rpbmcgc2VxdWVuY2UKIAlJTlNFUlQgSU5UTyByZWdyZXNzX3NlcV90ZXN0IFNF TEVDVCBuZXh0dmFsKCdyZWdyZXNzX3MyJykgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwxMDApOwor CUlOU0VSVCBJTlRPIHJlZ3Jlc3Nfc2VxX3Rlc3QgU0VMRUNUIG5leHR2YWwoJ3JlZ3Jlc3NfczEn KSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwMCk7CiApKTsKIAotIyAxLiBEbyBBTFRFUiBTVUJT Q1JJUFRJT04gLi4uIFJFRlJFU0ggU0VRVUVOQ0VTCi0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHFxKAotCUFMVEVSIFNVQlNDUklQVElPTiByZWdy ZXNzX3NlcV9zdWIgUkVGUkVTSCBTRVFVRU5DRVM7Ci0pKTsKLSRub2RlX3N1YnNjcmliZXItPnBv bGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywgJHN5bmNlZF9xdWVyeSkKLSAgb3IgZGllICJUaW1l ZCBvdXQgd2hpbGUgd2FpdGluZyBmb3Igc3Vic2NyaWJlciB0byBzeW5jaHJvbml6ZSBkYXRhIjsK LQogIyBDaGVjayAtIGV4aXN0aW5nIHNlcXVlbmNlcyAoJ3JlZ3Jlc3NfczEnIGFuZCAncmVncmVz c19zMicpIGFyZSBzeW5jZWQKLSRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo Ci0JJ3Bvc3RncmVzJywgcXEoCi0JU0VMRUNUIGxhc3RfdmFsdWUsIGlzX2NhbGxlZCBGUk9NIHJl Z3Jlc3NfczE7Ci0pKTsKLWlzKCRyZXN1bHQsICcyMDB8dCcsICdSRUZSRVNIIFNFUVVFTkNFUyB3 aWxsIHN5bmMgZXhpc3Rpbmcgc2VxdWVuY2VzJyk7Ci0kcmVzdWx0ID0gJG5vZGVfc3Vic2NyaWJl ci0+c2FmZV9wc3FsKAotCSdwb3N0Z3JlcycsIHFxKAotCVNFTEVDVCBsYXN0X3ZhbHVlLCBpc19j YWxsZWQgRlJPTSByZWdyZXNzX3MyOwotKSk7Ci1pcygkcmVzdWx0LCAnMjAwfHQnLCAnUkVGUkVT SCBTRVFVRU5DRVMgd2lsbCBzeW5jIGV4aXN0aW5nIHNlcXVlbmNlcycpOwogCi0jIENoZWNrIC0g bmV3bHkgcHVibGlzaGVkIHNlcXVlbmNlICgncmVncmVzc19zMycpIGlzIG5vdCBzeW5jZWQKLSRy ZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCi0JJ3Bvc3RncmVzJywgcXEoCi0J U0VMRUNUIGxhc3RfdmFsdWUsIGlzX2NhbGxlZCBGUk9NIHJlZ3Jlc3NfczM7Ci0pKTsKLWlzKCRy ZXN1bHQsICcxfGYnLAotCSdSRUZSRVNIIFNFUVVFTkNFUyB3aWxsIG5vdCBzeW5jIG5ld2x5IHB1 Ymxpc2hlZCBzZXF1ZW5jZScpOworIyBQb2xsIHVudGlsIHJlZ3Jlc3NfczEgcmVmbGVjdHMgdGhl IHVwZGF0ZWQgc2VxdWVuY2UgdmFsdWUKKyRub2RlX3N1YnNjcmliZXItPnBvbGxfcXVlcnlfdW50 aWwoJ3Bvc3RncmVzJywKKyAgICBxcShTRUxFQ1QgbGFzdF92YWx1ZSA9IDIwMCBBTkQgaXNfY2Fs bGVkID0gJ3QnIEZST00gcmVncmVzc19zMTspKQorICBvciBkaWUgIlRpbWVkIG91dCB3aGlsZSB3 YWl0aW5nIGZvciByZWdyZXNzX3MxIHNlcXVlbmNlIHRvIHN5bmMiOwogCi0jIDIuIERvIEFMVEVS IFNVQlNDUklQVElPTiAuLi4gUkVGUkVTSCBQVUJMSUNBVElPTiB3aXRoIGNvcHlfZGF0YSBhcyBm YWxzZQotJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKLQkncG9zdGdyZXMn LCBxcSgKLQlBTFRFUiBTVUJTQ1JJUFRJT04gcmVncmVzc19zZXFfc3ViIFJFRlJFU0ggUFVCTElD QVRJT04gV0lUSCAoY29weV9kYXRhID0gZmFsc2UpOwotKSk7Ci0kbm9kZV9zdWJzY3JpYmVyLT5w b2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsICRzeW5jZWRfcXVlcnkpCi0gIG9yIGRpZSAiVGlt ZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIHN1YnNjcmliZXIgdG8gc3luY2hyb25pemUgZGF0YSI7 CisjIFBvbGwgdW50aWwgcmVncmVzc19zMiByZWZsZWN0cyB0aGUgdXBkYXRlZCBzZXF1ZW5jZSB2 YWx1ZQorJG5vZGVfc3Vic2NyaWJlci0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAorICAg IHFxKFNFTEVDVCBsYXN0X3ZhbHVlID0gMjAwIEFORCBpc19jYWxsZWQgPSAndCcgRlJPTSByZWdy ZXNzX3MyOykpCisgIG9yIGRpZSAiVGltZWQgb3V0IHdoaWxlIHdhaXRpbmcgZm9yIHJlZ3Jlc3Nf czIgc2VxdWVuY2UgdG8gc3luYyI7CiAKLSMgQ2hlY2sgLSBuZXdseSBwdWJsaXNoZWQgc2VxdWVu Y2UgKCdyZWdyZXNzX3MzJykgaXMgbm90IHN5bmNlZCB3aXRoIGNvcHlfZGF0YQotIyBhcyBmYWxz ZS4KKyMgQ2hlY2sgLSBuZXdseSBwdWJsaXNoZWQgc2VxdWVuY2UgKCdyZWdyZXNzX3MzJykgaXMg bm90IHN5bmNlZAogJHJlc3VsdCA9ICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKIAkncG9z dGdyZXMnLCBxcSgKIAlTRUxFQ1QgbGFzdF92YWx1ZSwgaXNfY2FsbGVkIEZST00gcmVncmVzc19z MzsKICkpOwogaXMoJHJlc3VsdCwgJzF8ZicsCi0JJ1JFRlJFU0ggUFVCTElDQVRJT04gd2lsbCBu b3Qgc3luYyBuZXdseSBwdWJsaXNoZWQgc2VxdWVuY2Ugd2l0aCBjb3B5X2RhdGEgYXMgZmFsc2Un Ci0pOworCSdOZXdseSBwdWJsaXNoZWQgc2VxdWVuY2VzIGFyZSBub3Qgc3luY2VkIGF1dG9tYXRp Y2FsbHknKTsKIAogIyMjIyMjIyMjIwogIyBBTFRFUiBTVUJTQ1JJUFRJT04gLi4uIFJFRlJFU0gg UFVCTElDQVRJT04gc2hvdWxkIHJlcG9ydCBhbiBlcnJvciB3aGVuOgotLSAKMi40Ny4zCgo= --000000000000f0b126064bb530cc Content-Type: application/x-zip-compressed; name="test_seq_sync_performance.zip" Content-Disposition: attachment; filename="test_seq_sync_performance.zip" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mm35gbub1 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 AGIAAABCCAAAAAA= --000000000000f0b126064bb530cc--