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 1vkBYX-00B7Dw-3A for pgsql-hackers@arkaria.postgresql.org; Mon, 26 Jan 2026 01:38:18 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vkBYX-005vFn-0X for pgsql-hackers@arkaria.postgresql.org; Mon, 26 Jan 2026 01:38:17 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1vkBYW-005vFd-1X for pgsql-hackers@lists.postgresql.org; Mon, 26 Jan 2026 01:38:17 +0000 Received: from mail-lf1-x134.google.com ([2a00:1450:4864:20::134]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vkBYT-002JMv-21 for pgsql-hackers@lists.postgresql.org; Mon, 26 Jan 2026 01:38:15 +0000 Received: by mail-lf1-x134.google.com with SMTP id 2adb3069b0e04-59de2d1fc2cso5301070e87.2 for ; Sun, 25 Jan 2026 17:38:14 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1769391491; cv=none; d=google.com; s=arc-20240605; b=VhB/2CsTqdHhpTL9WLwMZS6dANbJwEplYI6ggQKE79Z5XJil0qv7QEAGOd+Sftutn6 ZvQtUm2SPIeO2HEf6MTLXD44LpdiKvL8sbrZk4TviaFzuS8wWEy8WxZi3QPodIbfgBSg ut6SCDm6IREnkl1LqyDIWI9ghr4cJ5Slgmp9nBNRfFmRytLXR1IZ4bq3caS76Y019CFf 83sa0SfwtAE7AvZDJXJYpwBpRJq0H9ZDIQKQDKEkVF7nHfgJ6plXuScs6AOJgdiGmb+q Kpx3TP64YIn9mXxTyOkIjkM8elELD8jB8Kf6dj/jbQ8S5lDif+XB161aNiJE4nWLYEwq bAtA== 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=CaXJMj4GqDfUMD4diyFUnn6q8uvHg3DCTxYTVXS6SAI=; fh=8wr77i3y1Ejq5xS4pGi1SG6m1CqrZAvcpYdiEK0q0Bk=; b=DWEkviVk2tBvDRkGI2Z+nPliQ+8cRkNGfhnu3LFRqqxaaWU9YXLrRtwOV5InQogXf/ c9z5jy9pmqbA0LwXODeHJU6eyofsZUmaVECeClczcsCBmGj1+q/UJMffOytCIW9ukg2e Lg777o/nE/JdTCJ62A//BraQsEISWvhpSjrSD1s40j5qAOew9b31lBm+lBzCHTbSVXYj klpa/1thNpNY3ZqmorKQ5nqHZgdofGLTov6ZrzTrLEJsyVB6xo3ij/XQ902Mm8qR3kdf yugCt/7CxHa4w8Kpxi2q7c3TI4Mt2ClgCiuxTGBrrcTAWlvN05v+2fSlm9bF0o0GZ+NN HSDg==; 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=1769391491; x=1769996291; 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=CaXJMj4GqDfUMD4diyFUnn6q8uvHg3DCTxYTVXS6SAI=; b=K5b/34vmk4dPt4Zhe5ltnlcFe6JQnJzAeamqTZih3JQJegAOk8AsRukMbJdsdFc74A LRLlbhwLl+Cl/1C+cXoUSdeJW6KOh/fhwsDBntUQ/hQ9Khvpcdqoj0v3oN0TDK6EtEAD 8iX0ML9ZL3w1yt9ZnswItYHznao15hB1VxHsU94R/M5oqSA3ZiAHrn3/MneiMQKXM3D/ 4P3ORXPLGqYaIM03JEvxSmmIXm99ViIGnsRPKBxKd2kck0mYNav2Q62MRq2g1R8afpCh zJ+v9pca8y+2bFwJIjNpIc+45Vy8yNKNM+XmBRobcG01ZtxXTCgUyxkv2uQ1DCKIwJ5M 3d4Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1769391491; x=1769996291; 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=CaXJMj4GqDfUMD4diyFUnn6q8uvHg3DCTxYTVXS6SAI=; b=qCKh61tp9mz1R5ix2ua/qL6y866LiW4x2fdqYQjVGlaMQypVr6+HfNIy4PRcyPyosz DvzW4TFzSJ0LU++pVdeF89l7czHoxovgVVRZju6Xq01XI+oVDzTLqHBgGJ45M3BetgD0 wxWwUEyvYE4Ed1IYJ04OpTzsA0vsvKDdx3gP+2qsUu8tA8f2KaotGSE+ktOptjvNnhCL uIV9gkqYM2T7dMVgtwZ8M7T2h5OPDuakhXuHTSnWv2W9MchpmrfbI5tsw2khDCnVGqVo a/m3QmyWXlqsjzvzN/A695hr0orf6fhBolji1bdR/v+7jjW9YBrmUTAX6rQ9cMN10bBq vWPw== X-Forwarded-Encrypted: i=1; AJvYcCU+4kMaHMP8wJpj3l9ATCZveBer+ISy+cFEdnKGyjzWlaOs17d8dP69hpKKzAKFNI2wxVIcImI+dV6TXfg7@lists.postgresql.org X-Gm-Message-State: AOJu0YxCTYkG8bhX3lHx/OFkI2kzqyizPy7Ya6wNEMTxnBAUjooLRUWW W6Kj52L6R4UH7llsd0GqB29YXrOIwgV58Ptof6K4Xdf/ZimtW3djrvmxd105xNEm5YY47n+YhcX FTJKMCVP1XblY0+IxNbffWNeKyz6tAxc= X-Gm-Gg: AZuq6aLWT8NG31eJ3PnNdAiJDR6NlsljYWRPc1u83AxIxdz7/vcU6CMhCGM+EBidkQt QfFkPaPbwR4z2GBASGr/w12+/rDYZuBOAS4X1L4GFvsdzrFvDgrln7ZGCDsBEx7g8kXB6VOC30k 2Wvg6Kr7EEDO9zpzLQa/gBOTPARMa2Z1dSawkxM9wIl8ZgltvbNDMhjesiBNCz1T9azF6/P4VGX 54rceV4vVL8ecwze4FpLZh+Utf2mkpv5Ukg+atRkXHMYEVO1HMD2B1YmmAAxG+vWvSS X-Received: by 2002:a05:6512:3f1c:b0:598:853e:4866 with SMTP id 2adb3069b0e04-59df3a54f71mr928112e87.51.1769391491121; Sun, 25 Jan 2026 17:38:11 -0800 (PST) MIME-Version: 1.0 References: <48261e54-c4f1-4bde-a4a9-4f3698a6b380@app.fastmail.com> In-Reply-To: From: Gyan Sreejith Date: Sun, 25 Jan 2026 20:38:00 -0500 X-Gm-Features: AZwV_QgkxNmdnjdtAoVRr3WfhhCxVY_sDfhYwF2qdssHIY6j_on0x2aqJaoBx0U Message-ID: Subject: Re: [Proposal] Adding Log File Capability to pg_createsubscriber To: vignesh C Cc: Amit Kapila , Euler Taveira , "kuroda.hayato@fujitsu.com" , "pgsql-hackers@lists.postgresql.org" , Peter Smith Content-Type: multipart/mixed; boundary="0000000000004c1a590649408f83" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000004c1a590649408f83 Content-Type: multipart/alternative; boundary="0000000000004c1a580649408f81" --0000000000004c1a580649408f81 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Thank you, I have made the changes and attached the patch. Regards, Gyan On Tue, Jan 20, 2026 at 7:55=E2=80=AFAM vignesh C wro= te: > On Tue, 20 Jan 2026 at 06:28, Gyan Sreejith > wrote: > > > > Thank you for all your input. I have attached the latest version of the > patch that includes the changes proposed by Vignesh and Amit. Please let = me > know if you have any questions or suggestions. > > 1) Currently you are creating directories like > specifiedlogdir_timestamp for each run, so it generates log > directories like: > logdir_2026-01-20-18-15-55.267510 > logdir_2026-01-20-18-16-49.468882 > > Instead can you change it to specifiedlogdir/exec_timestamp1. > specifiedlogdir/exec_timestamp2, etc > > + populate_timestamp(timestamp, > sizeof(timestamp)); > + log_dir =3D psprintf("%s_%s", optarg, > timestamp); > + opt.log_dir =3D pg_strdup(log_dir); > + canonicalize_path(opt.log_dir); > + > + if (stat(opt.log_dir, &statbuf) !=3D 0) > + { > + if (errno =3D=3D ENOENT) > + { > + mkdir(opt.log_dir, > S_IRWXU); > > > 2) Your patch is based on a slightly older code, it does not apply on > HEAD, Kindly rebase your patch on top of HEAD, > > Regards, > Vignesh > --0000000000004c1a580649408f81 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Thank you, I have made the changes and attached the patch.=

Regards,
Gyan

On T= ue, Jan 20, 2026 at 7:55=E2=80=AFAM vignesh C <vignesh21@gmail.com> wrote:
On Tue, 20 Jan 2026 at 06:28, Gyan Sreejit= h <gyan.sre= ejith@gmail.com> wrote:
>
> Thank you for all your input. I have attached the latest version of th= e patch that includes the changes proposed by Vignesh and Amit. Please let = me know if you have any questions or suggestions.

1)=C2=A0 Currently you are creating directories like
specifiedlogdir_timestamp for each run, so it generates log
directories like:
logdir_2026-01-20-18-15-55.267510
logdir_2026-01-20-18-16-49.468882

Instead can you change it to specifiedlogdir/exec_timestamp1.
specifiedlogdir/exec_timestamp2, etc

+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0populate_timestamp(timestamp,
sizeof(timestamp));
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0log_dir =3D psprintf("%s_%s"= ;, optarg, timestamp);
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0opt.log_dir =3D pg_strdup(log_dir); +=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0canonicalize_path(opt.log_dir);
+
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (stat(opt.log_dir, &statbuf) != =3D 0)
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0{
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0if (errno= =3D=3D ENOENT)
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0{
+=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 =C2=A0 =C2=A0mkdir(opt.log_dir, S_IRWXU);


2) Your patch is based on a slightly older code, it does not apply on
HEAD, Kindly rebase your patch on top of HEAD,

Regards,
Vignesh
--0000000000004c1a580649408f81-- --0000000000004c1a590649408f83 Content-Type: application/octet-stream; name="v3-0001-Add-a-new-argument-l-logdir-to-pg_createsubscribe.patch" Content-Disposition: attachment; filename="v3-0001-Add-a-new-argument-l-logdir-to-pg_createsubscribe.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mkuhwo6l0 RnJvbSBlOGJiMmQwYmQ3MWZkMGUwMjJmODFkOWNjMTMyODQwZGM0N2I1ZjYzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBHeWFuIFNyZWVqaXRoIDxneWFuLnNyZWVqaXRoQGdtYWlsLmNv bT4KRGF0ZTogU3VuLCAyNSBKYW4gMjAyNiAyMDozMjoyMSAtMDUwMApTdWJqZWN0OiBbUEFUQ0gg djNdIEFkZCBhIG5ldyBhcmd1bWVudCAtbCA8bG9nZGlyPiB0byBwZ19jcmVhdGVzdWJzY3JpYmVy LgoKRW5hYmxpbmcgdGhlIG9wdGlvbiB0byB3cml0ZSBtZXNzYWdlcyB0byBsb2cgZmlsZXMgaW4g dGhlIHNwZWNpZmllZCBkaXJlY3RvcnkuCkEgbmV3IGRpcmVjdG9yeSBpcyBjcmVhdGVkIGlmIHJl cXVpcmVkLCBhbmQgdHdvIG5ldyBsb2dmaWxlcyAod2l0aCB0aW1lc3RhbXBzIGluIHRoZWlyIG5h bWVzKSBhcmUgYWRkZWQgdG8gdGhlIGRpcmVjdG9yeToKMS4gcGdfY3JlYXRlc3Vic2NyaWJlcl9z ZXJ2ZXJfdGltZXN0YW1wLmxvZyAgLSBjYXB0dXJlcyBtZXNzYWdlcyByZWxhdGVkIHRvIHN0YXJ0 aW5nIGFuZCBzdG9wcGluZyB0aGUgc3RhbmRieSBzZXJ2ZXIuCjIuIHBnX2NyZWF0ZXN1YnNjcmli ZXJfaW50ZXJuYWxfdGltZXN0YW1wLmxvZyAtIGNhcHR1cmVzIGludGVybmFsIGRpYWdub3N0aWMg b3V0cHV0IGZyb20gcGdfY3JlYXRlc3Vic2NyaWJlci4KCkZvciBleGFtcGxlLCBpZiB3ZSBzcGVj aWZ5IC1sIGFiYyBhcyBhbiBhcmd1bWVudCwgYW5kIGlmIHRoZSB0aW1lc3RhbXAgb24gcnVubmlu ZyBpdCBpcyAyMDI2LTAxLTE5LTIwLTQzLTE3LjIwNDI0MCwgYSBkaXJlY3RvcnkgYWJjIGlzIGNy ZWF0ZWQgaWYgaXQgZG9lc24ndCBleGlzdCBhbHJlYWR5LCBhbmQgdGhlIGRpcmVjdG9yeSB3aWxs IGNvbnRhaW4gdGhlIHR3byBsb2cgZmlsZXMgcGdfY3JlYXRlc3Vic2NyaWJlcl9zZXJ2ZXJfMjAy Ni0wMS0xOS0yMC00My0xNy4yMDQyNDAubG9nIGFuZCBwZ19jcmVhdGVzdWJzY3JpYmVyX2ludGVy bmFsXzIwMjYtMDEtMTktMjAtNDMtMTcuMjA0MjQwLmxvZwotLS0KIGRvYy9zcmMvc2dtbC9yZWYv cGdfY3JlYXRlc3Vic2NyaWJlci5zZ21sICAgICB8ICAyMiArKwogc3JjL2Jpbi9wZ19iYXNlYmFj a3VwL3BnX2NyZWF0ZXN1YnNjcmliZXIuYyAgIHwgMzczICsrKysrKysrKysrKy0tLS0tLQogLi4u L3QvMDQwX3BnX2NyZWF0ZXN1YnNjcmliZXIucGwgICAgICAgICAgICAgIHwgIDM2ICstCiAzIGZp bGVzIGNoYW5nZWQsIDMxOSBpbnNlcnRpb25zKCspLCAxMTIgZGVsZXRpb25zKC0pCgpkaWZmIC0t Z2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9wZ19jcmVhdGVzdWJzY3JpYmVyLnNnbWwgYi9kb2Mvc3Jj L3NnbWwvcmVmL3BnX2NyZWF0ZXN1YnNjcmliZXIuc2dtbAppbmRleCBjZjQ1ZmYzNTczZC4uOGNi NzA0MDM5MzEgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9yZWYvcGdfY3JlYXRlc3Vic2NyaWJl ci5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvcGdfY3JlYXRlc3Vic2NyaWJlci5zZ21sCkBA IC0xMzYsNiArMTM2LDI4IEBAIFBvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgogICAgICA8L2xpc3Rp dGVtPgogICAgIDwvdmFybGlzdGVudHJ5PgogCisgICAgPHZhcmxpc3RlbnRyeT4KKyAgICAgPHRl cm0+PG9wdGlvbj4tbCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZGlyZWN0b3J5PC9y ZXBsYWNlYWJsZT48L29wdGlvbj48L3Rlcm0+CisgICAgIDx0ZXJtPjxvcHRpb24+LS1sb2dkaXI9 PHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmRpcmVjdG9yeTwvcmVwbGFjZWFibGU+PC9v cHRpb24+PC90ZXJtPgorICAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT4KKyAgICAgICBTcGVj aWZ5IHRoZSBuYW1lIG9mIHRoZSBsb2cgZGlyZWN0b3J5LiBBIG5ldyBkaXJlY3RvcnkgaXMgY3Jl YXRlZCB3aXRoIHRoaXMgbmFtZSBpZiBpdCBkb2VzIG5vdCBleGlzdC4gVGhlIGZvbGxvd2luZyB0 d28gbG9nIGZpbGVzIHdpbGwgYmUgY3JlYXRlZCB3aXRoIGEgdW1hc2sgb2YgMDc3IHNvIHRoYXQg YWNjZXNzIGlzIGRpc2FsbG93ZWQgdG8gb3RoZXIgdXNlcnMgYnkgZGVmYXVsdC4gVGhlIHRpbWVz dGFtcCB0aGF0IGlzIGFkZGVkIHRvIHRoZSBuYW1lIHdpbGwgaW5kaWNhdGUgdGhlIHRpbWUgYXQg d2hpY2ggcGdfY3JlYXRlc3Vic2NyaWJlciB3YXMgcnVuLgorICAgICAgIDxpdGVtaXplZGxpc3Q+ CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgIDxwYXJhPgorICAgICAgICAgIHBnX2NyZWF0 ZXN1YnNjcmliZXJfc2VydmVyX3RpbWVzdGFtcC5sb2cgd2hpY2ggY2FwdHVyZXMgbG9ncyByZWxh dGVkIHRvIHN0b3BwaW5nIGFuZCBzdGFydGluZyB0aGUgc3RhbmRieSBzZXJ2ZXIsCisgICAgICAg ICA8L3BhcmE+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAg ICAgIDxwYXJhPgorICAgICAgICAgIHBnX2NyZWF0ZXN1YnNjcmliZXJfaW50ZXJuYWxfdGltZXN0 YW1wLmxvZyB3aGljaCBjYXB0dXJlcyBpbnRlcm5hbCBkaWFnbm9zdGljIG91dHB1dCAodmFsaWRh dGlvbnMsIGNoZWNrcywgZXRjLikKKyAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9saXN0aXRl bT4KKyAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgIDwvcGFyYT4KKyAgICAgPC9saXN0aXRl bT4KKyAgICA8L3Zhcmxpc3RlbnRyeT4KKwogICAgIDx2YXJsaXN0ZW50cnk+CiAgICAgIDx0ZXJt PjxvcHRpb24+LW48L29wdGlvbj48L3Rlcm0+CiAgICAgIDx0ZXJtPjxvcHRpb24+LS1kcnktcnVu PC9vcHRpb24+PC90ZXJtPgpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19iYXNlYmFja3VwL3BnX2Ny ZWF0ZXN1YnNjcmliZXIuYyBiL3NyYy9iaW4vcGdfYmFzZWJhY2t1cC9wZ19jcmVhdGVzdWJzY3Jp YmVyLmMKaW5kZXggYzhhY2UxYzc3MzIuLjA2MGFhY2EzNDkxIDEwMDY0NAotLS0gYS9zcmMvYmlu L3BnX2Jhc2ViYWNrdXAvcGdfY3JlYXRlc3Vic2NyaWJlci5jCisrKyBiL3NyYy9iaW4vcGdfYmFz ZWJhY2t1cC9wZ19jcmVhdGVzdWJzY3JpYmVyLmMKQEAgLTQ5LDEwICs0OSwzNSBAQAogI2RlZmlu ZSBJTkNMVURFRF9DT05GX0ZJTEUJCQkicGdfY3JlYXRlc3Vic2NyaWJlci5jb25mIgogI2RlZmlu ZSBJTkNMVURFRF9DT05GX0ZJTEVfRElTQUJMRUQJSU5DTFVERURfQ09ORl9GSUxFICIuZGlzYWJs ZWQiCiAKKyNkZWZpbmUgU0VSVkVSX0xPR19GSUxFX05BTUUgInBnX2NyZWF0ZXN1YnNjcmliZXJf c2VydmVyIgorI2RlZmluZSBJTlRFUk5BTF9MT0dfRklMRV9OQU1FICJwZ19jcmVhdGVzdWJzY3Jp YmVyX2ludGVybmFsIgorCisjZGVmaW5lIElORk8oLi4uKSBkb3tcCisJaWYgKGludGVybmFsX2xv Z19maWxlX2ZwICE9IE5VTEwpIFwKKwkJaW50ZXJuYWxfbG9nX2ZpbGVfd3JpdGUoX19WQV9BUkdT X18pOyBcCisJZWxzZSBcCisJCXBnX2xvZ19pbmZvKF9fVkFfQVJHU19fKTtcCit9IHdoaWxlKDAp CisKKyNkZWZpbmUgSU5GT19ISU5UKC4uLikgZG97XAorCWlmIChpbnRlcm5hbF9sb2dfZmlsZV9m cCAhPSBOVUxMKSBcCisJCWludGVybmFsX2xvZ19maWxlX3dyaXRlKF9fVkFfQVJHU19fKTsgXAor CWVsc2UgXAorCQlwZ19sb2dfaW5mb19oaW50KF9fVkFfQVJHU19fKTtcCit9IHdoaWxlKDApCisK KyNkZWZpbmUgREVCVUcoLi4uKSBkb3tcCisJaWYgKGludGVybmFsX2xvZ19maWxlX2ZwICE9IE5V TEwpIFwKKwkJaW50ZXJuYWxfbG9nX2ZpbGVfd3JpdGUoX19WQV9BUkdTX18pOyBcCisJZWxzZSBc CisJCXBnX2xvZ19kZWJ1ZyhfX1ZBX0FSR1NfXyk7XAorfSB3aGlsZSgwKQorCiAvKiBDb21tYW5k LWxpbmUgb3B0aW9ucyAqLwogc3RydWN0IENyZWF0ZVN1YnNjcmliZXJPcHRpb25zCiB7CiAJY2hh cgkgICAqY29uZmlnX2ZpbGU7CS8qIGNvbmZpZ3VyYXRpb24gZmlsZSAqLworCWNoYXIJICAgKmxv Z19kaXI7CQkvKiBsb2cgZGlyZWN0b3J5IG5hbWUgKi8KIAljaGFyCSAgICpwdWJfY29ubmluZm9f c3RyOwkvKiBwdWJsaXNoZXIgY29ubmVjdGlvbiBzdHJpbmcgKi8KIAljaGFyCSAgICpzb2NrZXRf ZGlyOwkJLyogZGlyZWN0b3J5IGZvciBVbml4LWRvbWFpbiBzb2NrZXQsIGlmIGFueSAqLwogCWNo YXIJICAgKnN1Yl9wb3J0OwkJLyogc3Vic2NyaWJlciBwb3J0IG51bWJlciAqLwpAQCAtMTQ2LDYg KzE3MSw5IEBAIHN0YXRpYyB2b2lkIGRyb3BfZXhpc3Rpbmdfc3Vic2NyaXB0aW9uKFBHY29ubiAq Y29ubiwgY29uc3QgY2hhciAqc3VibmFtZSwKIAkJCQkJCQkJCSAgIGNvbnN0IGNoYXIgKmRibmFt ZSk7CiBzdGF0aWMgdm9pZCBnZXRfcHVibGlzaGVyX2RhdGFiYXNlcyhzdHJ1Y3QgQ3JlYXRlU3Vi c2NyaWJlck9wdGlvbnMgKm9wdCwKIAkJCQkJCQkJCWJvb2wgZGJuYW1lc3BlY2lmaWVkKTsKK3N0 YXRpYyB2b2lkCisJCQlpbnRlcm5hbF9sb2dfZmlsZV93cml0ZShjb25zdCBjaGFyICpmb3JtYXQs Li4uKSBfX2F0dHJpYnV0ZV9fKChmb3JtYXQocHJpbnRmLCAxLCAyKSkpOworCiAKICNkZWZpbmUJ V0FJVF9JTlRFUlZBTAkxCQkvKiAxIHNlY29uZCAqLwogCkBAIC0xNjcsNiArMTk1LDkgQEAgc3Rh dGljIHBnX3Bybmdfc3RhdGUgcHJuZ19zdGF0ZTsKIHN0YXRpYyBjaGFyICpwZ19jdGxfcGF0aCA9 IE5VTEw7CiBzdGF0aWMgY2hhciAqcGdfcmVzZXR3YWxfcGF0aCA9IE5VTEw7CiAKK3N0YXRpYyBG SUxFICppbnRlcm5hbF9sb2dfZmlsZV9mcCA9IE5VTEw7CS8qIEZpbGUgcHRyIHRvIGxvZyBhbGwg bWVzc2FnZXMgdG8gKi8KK3N0YXRpYyBjaGFyICpsb2dfdGltZXN0YW1wID0gTlVMTDsgICAgICAg ICAgLyogVGltZXN0YW1wIHRvIGJlIHVzZWQgaW4gYWxsIGxvZyBmaWxlIG5hbWVzICovCisKIC8q IHN0YW5kYnkgLyBzdWJzY3JpYmVyIGRhdGEgZGlyZWN0b3J5ICovCiBzdGF0aWMgY2hhciAqc3Vi c2NyaWJlcl9kaXIgPSBOVUxMOwogCkBAIC0xNzQsNiArMjA1LDc4IEBAIHN0YXRpYyBib29sIHJl Y292ZXJ5X2VuZGVkID0gZmFsc2U7CiBzdGF0aWMgYm9vbCBzdGFuZGJ5X3J1bm5pbmcgPSBmYWxz ZTsKIHN0YXRpYyBib29sIHJlY292ZXJ5X3BhcmFtc19zZXQgPSBmYWxzZTsKIAorLyoKKyAqIFBy aW50IHRoZSBjdXJyZW50IHRpbWUsIHdpdGggbWljcm9zZWNvbmRzLCBpbnRvIGEgY2FsbGVyLXN1 cHBsaWVkCisgKiBidWZmZXIuCisgKiBTYW1lIGFzIHBxX1RyYWNlRm9ybWF0VGltZXN0YW1wKCkg aW4gc3JjL2ludGVyZmFjZXMvbGliZnEvZmUtdHJhY2UuYworICovCitzdGF0aWMgdm9pZAorcG9w dWxhdGVfdGltZXN0YW1wKGNoYXIgKnRpbWVzdHIsIHNpemVfdCB0c19sZW4pCit7CisJc3RydWN0 IHRpbWV2YWwgdHZhbDsKKwl0aW1lX3QJCW5vdzsKKwlzdHJ1Y3QgdG0JdG1idWY7CisKKwlnZXR0 aW1lb2ZkYXkoJnR2YWwsIE5VTEwpOworCisJLyoKKwkgKiBNU1ZDJ3MgaW1wbGVtZW50YXRpb24g b2YgdGltZXZhbCB1c2VzIGEgbG9uZyBmb3IgdHZfc2VjLCBob3dldmVyLAorCSAqIGxvY2FsdGlt ZSgpIGV4cGVjdHMgYSB0aW1lX3QgcG9pbnRlci4gIEhlcmUgd2UnbGwgYXNzaWduIHR2X3NlYyB0 byBhCisJICogbG9jYWwgdGltZV90IHZhcmlhYmxlIHNvIHRoYXQgd2UgcGFzcyBsb2NhbHRpbWUo KSB0aGUgY29ycmVjdCBwb2ludGVyCisJICogdHlwZS4KKwkgKi8KKwlub3cgPSB0dmFsLnR2X3Nl YzsKKwlzdHJmdGltZSh0aW1lc3RyLCB0c19sZW4sCisJCQkgIiVZLSVtLSVkLSVILSVNLSVTIiwK KwkJCSBsb2NhbHRpbWVfcigmbm93LCAmdG1idWYpKTsKKwkvKiBhcHBlbmQgbWljcm9zZWNvbmRz ICovCisJc25wcmludGYodGltZXN0ciArIHN0cmxlbih0aW1lc3RyKSwgdHNfbGVuIC0gc3RybGVu KHRpbWVzdHIpLAorCQkJICIuJTA2dSIsICh1bnNpZ25lZCBpbnQpICh0dmFsLnR2X3VzZWMpKTsK K30KKworc3RhdGljIHZvaWQKK2ludGVybmFsX2xvZ19maWxlX3dyaXRlKGNvbnN0IGNoYXIgKmZv cm1hdCwuLi4pCit7CisJaWYgKGludGVybmFsX2xvZ19maWxlX2ZwICE9IE5VTEwpCisJeworCQl2 YV9saXN0CQlhcmdzOworCisJCXZhX3N0YXJ0KGFyZ3MsIGZvcm1hdCk7CisJCXZmcHJpbnRmKGlu dGVybmFsX2xvZ19maWxlX2ZwLCBmb3JtYXQsIGFyZ3MpOworCQlmcHJpbnRmKGludGVybmFsX2xv Z19maWxlX2ZwLCAiXG4iKTsKKwkJdmFfZW5kKGFyZ3MpOworCX0KK30KKworLyoKKyAqIE9wZW4g YSBuZXcgbG9nZmlsZSB3aXRoIHByb3BlciBwZXJtaXNzaW9ucy4KKyAqIEZyb20gc3JjL2JhY2tl bmQvcG9zdG1hc3Rlci9zeXNsb2dnZXIuYworICovCitzdGF0aWMgRklMRSAqCitsb2dmaWxlX29w ZW4oY29uc3QgY2hhciAqZmlsZW5hbWUsIGNvbnN0IGNoYXIgKm1vZGUpCit7CisJRklMRQkgICAq Zmg7CisJbW9kZV90CQlvdW1hc2s7CisKKwlvdW1hc2sgPSB1bWFzaygobW9kZV90KSAoKH4oU19J UlVTUiB8IFNfSVdVU1IpKSAmIChTX0lSV1hVIHwgU19JUldYRyB8IFNfSVJXWE8pKSk7CisJZmgg PSBmb3BlbihmaWxlbmFtZSwgbW9kZSk7CisJdW1hc2sob3VtYXNrKTsKKworCWlmIChmaCkKKwl7 CisJCXNldHZidWYoZmgsIE5VTEwsIFBHX0lPTEJGLCAwKTsKKworI2lmZGVmIFdJTjMyCisJCS8q IHVzZSBDUkxGIGxpbmUgZW5kaW5ncyBvbiBXaW5kb3dzICovCisJCV9zZXRtb2RlKF9maWxlbm8o ZmgpLCBfT19URVhUKTsKKyNlbmRpZgorCX0KKwllbHNlCisJCXBnX2ZhdGFsKCJjb3VsZCBub3Qg b3BlbiBsb2cgZmlsZSBcIiVzXCI6ICVtIiwKKwkJCQkgZmlsZW5hbWUpOworCisJcmV0dXJuIGZo OworfQogCiAvKgogICogQ2xlYW4gdXAgb2JqZWN0cyBjcmVhdGVkIGJ5IHBnX2NyZWF0ZXN1YnNj cmliZXIuCkBAIC0yMTIsNiArMzE1LDkgQEAgY2xlYW51cF9vYmplY3RzX2F0ZXhpdCh2b2lkKQog CWlmIChzdWNjZXNzKQogCQlyZXR1cm47CiAKKwlpZiAoaW50ZXJuYWxfbG9nX2ZpbGVfZnAgIT0g TlVMTCkKKwkJZmNsb3NlKGludGVybmFsX2xvZ19maWxlX2ZwKTsKKwogCS8qCiAJICogSWYgdGhl IHNlcnZlciBpcyBwcm9tb3RlZCwgdGhlcmUgaXMgbm8gd2F5IHRvIHVzZSB0aGUgY3VycmVudCBz ZXR1cAogCSAqIGFnYWluLiBXYXJuIHRoZSB1c2VyIHRoYXQgYSBuZXcgcmVwbGljYXRpb24gc2V0 dXAgc2hvdWxkIGJlIGRvbmUgYmVmb3JlCkBAIC0yODMsNiArMzg5LDcgQEAgdXNhZ2Uodm9pZCkK IAkJCSAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhdGFiYXNlcyBhbmQgZGF0 YWJhc2VzIHRoYXQgZG9uJ3QgYWxsb3cgY29ubmVjdGlvbnNcbiIpKTsKIAlwcmludGYoXygiICAt ZCwgLS1kYXRhYmFzZT1EQk5BTUUgICAgICAgICAgIGRhdGFiYXNlIGluIHdoaWNoIHRvIGNyZWF0 ZSBhIHN1YnNjcmlwdGlvblxuIikpOwogCXByaW50ZihfKCIgIC1ELCAtLXBnZGF0YT1EQVRBRElS ICAgICAgICAgICAgbG9jYXRpb24gZm9yIHRoZSBzdWJzY3JpYmVyIGRhdGEgZGlyZWN0b3J5XG4i KSk7CisJcHJpbnRmKF8oIiAgLWwsIC0tbG9nZGlyPUxPR0RJUiAgICAgICAgICAgICBsb2NhdGlv biBmb3IgdGhlIG5ldyBsb2cgZGlyZWN0b3J5XG4iKSk7CiAJcHJpbnRmKF8oIiAgLW4sIC0tZHJ5 LXJ1biAgICAgICAgICAgICAgICAgICBkcnkgcnVuLCBqdXN0IHNob3cgd2hhdCB3b3VsZCBiZSBk b25lXG4iKSk7CiAJcHJpbnRmKF8oIiAgLXAsIC0tc3Vic2NyaWJlci1wb3J0PVBPUlQgICAgICBz dWJzY3JpYmVyIHBvcnQgbnVtYmVyIChkZWZhdWx0ICVzKVxuIiksIERFRkFVTFRfU1VCX1BPUlQp OwogCXByaW50ZihfKCIgIC1QLCAtLXB1Ymxpc2hlci1zZXJ2ZXI9Q09OTlNUUiAgcHVibGlzaGVy IGNvbm5lY3Rpb24gc3RyaW5nXG4iKSk7CkBAIC00MjYsNyArNTMzLDcgQEAgZ2V0X2V4ZWNfcGF0 aChjb25zdCBjaGFyICphcmd2MCwgY29uc3QgY2hhciAqcHJvZ25hbWUpCiAJCQkJCSBwcm9nbmFt ZSwgZnVsbF9wYXRoLCAicGdfY3JlYXRlc3Vic2NyaWJlciIpOwogCX0KIAotCXBnX2xvZ19kZWJ1 ZygiJXMgcGF0aCBpczogICVzIiwgcHJvZ25hbWUsIGV4ZWNfcGF0aCk7CisJREVCVUcoIiVzIHBh dGggaXM6ICAlcyIsIHByb2duYW1lLCBleGVjX3BhdGgpOwogCiAJcmV0dXJuIGV4ZWNfcGF0aDsK IH0KQEAgLTQ0Myw4ICs1NTAsOCBAQCBjaGVja19kYXRhX2RpcmVjdG9yeShjb25zdCBjaGFyICpk YXRhZGlyKQogCXVpbnQzMgkJbWFqb3JfdmVyc2lvbjsKIAljaGFyCSAgICp2ZXJzaW9uX3N0cjsK IAotCXBnX2xvZ19pbmZvKCJjaGVja2luZyBpZiBkaXJlY3RvcnkgXCIlc1wiIGlzIGEgY2x1c3Rl ciBkYXRhIGRpcmVjdG9yeSIsCi0JCQkJZGF0YWRpcik7CisJSU5GTygiY2hlY2tpbmcgaWYgZGly ZWN0b3J5IFwiJXNcIiBpcyBhIGNsdXN0ZXIgZGF0YSBkaXJlY3RvcnkiLAorCQkgZGF0YWRpcik7 CiAKIAlpZiAoc3RhdChkYXRhZGlyLCAmc3RhdGJ1ZikgIT0gMCkKIAl7CkBAIC01NDcsMTQgKzY1 NCwxNCBAQCBzdG9yZV9wdWJfc3ViX2luZm8oY29uc3Qgc3RydWN0IENyZWF0ZVN1YnNjcmliZXJP cHRpb25zICpvcHQsCiAJCQlkYmluZm9baV0uc3VibmFtZSA9IE5VTEw7CiAJCS8qIE90aGVyIGZp ZWxkcyB3aWxsIGJlIGZpbGxlZCBsYXRlciAqLwogCi0JCXBnX2xvZ19kZWJ1ZygicHVibGlzaGVy KCVkKTogcHVibGljYXRpb246ICVzIDsgcmVwbGljYXRpb24gc2xvdDogJXMgOyBjb25uZWN0aW9u IHN0cmluZzogJXMiLCBpLAotCQkJCQkgZGJpbmZvW2ldLnB1Ym5hbWUgPyBkYmluZm9baV0ucHVi bmFtZSA6ICIoYXV0bykiLAotCQkJCQkgZGJpbmZvW2ldLnJlcGxzbG90bmFtZSA/IGRiaW5mb1tp XS5yZXBsc2xvdG5hbWUgOiAiKGF1dG8pIiwKLQkJCQkJIGRiaW5mb1tpXS5wdWJjb25uaW5mbyk7 Ci0JCXBnX2xvZ19kZWJ1Zygic3Vic2NyaWJlciglZCk6IHN1YnNjcmlwdGlvbjogJXMgOyBjb25u ZWN0aW9uIHN0cmluZzogJXMsIHR3b19waGFzZTogJXMiLCBpLAotCQkJCQkgZGJpbmZvW2ldLnN1 Ym5hbWUgPyBkYmluZm9baV0uc3VibmFtZSA6ICIoYXV0bykiLAotCQkJCQkgZGJpbmZvW2ldLnN1 YmNvbm5pbmZvLAotCQkJCQkgZGJpbmZvcy50d29fcGhhc2UgPyAidHJ1ZSIgOiAiZmFsc2UiKTsK KwkJREVCVUcoInB1Ymxpc2hlciglZCk6IHB1YmxpY2F0aW9uOiAlcyA7IHJlcGxpY2F0aW9uIHNs b3Q6ICVzIDsgY29ubmVjdGlvbiBzdHJpbmc6ICVzIiwgaSwKKwkJCSAgZGJpbmZvW2ldLnB1Ym5h bWUgPyBkYmluZm9baV0ucHVibmFtZSA6ICIoYXV0bykiLAorCQkJICBkYmluZm9baV0ucmVwbHNs b3RuYW1lID8gZGJpbmZvW2ldLnJlcGxzbG90bmFtZSA6ICIoYXV0bykiLAorCQkJICBkYmluZm9b aV0ucHViY29ubmluZm8pOworCQlERUJVRygic3Vic2NyaWJlciglZCk6IHN1YnNjcmlwdGlvbjog JXMgOyBjb25uZWN0aW9uIHN0cmluZzogJXMsIHR3b19waGFzZTogJXMiLCBpLAorCQkJICBkYmlu Zm9baV0uc3VibmFtZSA/IGRiaW5mb1tpXS5zdWJuYW1lIDogIihhdXRvKSIsCisJCQkgIGRiaW5m b1tpXS5zdWJjb25uaW5mbywKKwkJCSAgZGJpbmZvcy50d29fcGhhc2UgPyAidHJ1ZSIgOiAiZmFs c2UiKTsKIAogCQlpZiAobnVtX3B1YnMgPiAwKQogCQkJcHViY2VsbCA9IHB1YmNlbGwtPm5leHQ7 CkBAIC02MzUsNyArNzQyLDcgQEAgZ2V0X3ByaW1hcnlfc3lzaWQoY29uc3QgY2hhciAqY29ubmlu Zm8pCiAJUEdyZXN1bHQgICAqcmVzOwogCXVpbnQ2NAkJc3lzaWQ7CiAKLQlwZ19sb2dfaW5mbygi Z2V0dGluZyBzeXN0ZW0gaWRlbnRpZmllciBmcm9tIHB1Ymxpc2hlciIpOworCUlORk8oImdldHRp bmcgc3lzdGVtIGlkZW50aWZpZXIgZnJvbSBwdWJsaXNoZXIiKTsKIAogCWNvbm4gPSBjb25uZWN0 X2RhdGFiYXNlKGNvbm5pbmZvLCB0cnVlKTsKIApAQCAtNjU1LDcgKzc2Miw3IEBAIGdldF9wcmlt YXJ5X3N5c2lkKGNvbnN0IGNoYXIgKmNvbm5pbmZvKQogCiAJc3lzaWQgPSBzdHJ0b3U2NChQUWdl dHZhbHVlKHJlcywgMCwgMCksIE5VTEwsIDEwKTsKIAotCXBnX2xvZ19pbmZvKCJzeXN0ZW0gaWRl bnRpZmllciBpcyAlIiBQUkl1NjQgIiBvbiBwdWJsaXNoZXIiLCBzeXNpZCk7CisJSU5GTygic3lz dGVtIGlkZW50aWZpZXIgaXMgJSIgUFJJdTY0ICIgb24gcHVibGlzaGVyIiwgc3lzaWQpOwogCiAJ UFFjbGVhcihyZXMpOwogCWRpc2Nvbm5lY3RfZGF0YWJhc2UoY29ubiwgZmFsc2UpOwpAQCAtNjc1 LDcgKzc4Miw3IEBAIGdldF9zdGFuZGJ5X3N5c2lkKGNvbnN0IGNoYXIgKmRhdGFkaXIpCiAJYm9v bAkJY3JjX29rOwogCXVpbnQ2NAkJc3lzaWQ7CiAKLQlwZ19sb2dfaW5mbygiZ2V0dGluZyBzeXN0 ZW0gaWRlbnRpZmllciBmcm9tIHN1YnNjcmliZXIiKTsKKwlJTkZPKCJnZXR0aW5nIHN5c3RlbSBp ZGVudGlmaWVyIGZyb20gc3Vic2NyaWJlciIpOwogCiAJY2YgPSBnZXRfY29udHJvbGZpbGUoZGF0 YWRpciwgJmNyY19vayk7CiAJaWYgKCFjcmNfb2spCkBAIC02ODMsNyArNzkwLDcgQEAgZ2V0X3N0 YW5kYnlfc3lzaWQoY29uc3QgY2hhciAqZGF0YWRpcikKIAogCXN5c2lkID0gY2YtPnN5c3RlbV9p ZGVudGlmaWVyOwogCi0JcGdfbG9nX2luZm8oInN5c3RlbSBpZGVudGlmaWVyIGlzICUiIFBSSXU2 NCAiIG9uIHN1YnNjcmliZXIiLCBzeXNpZCk7CisJSU5GTygic3lzdGVtIGlkZW50aWZpZXIgaXMg JSIgUFJJdTY0ICIgb24gc3Vic2NyaWJlciIsIHN5c2lkKTsKIAogCXBnX2ZyZWUoY2YpOwogCkBA IC03MDIsOSArODA5LDEwIEBAIG1vZGlmeV9zdWJzY3JpYmVyX3N5c2lkKGNvbnN0IHN0cnVjdCBD cmVhdGVTdWJzY3JpYmVyT3B0aW9ucyAqb3B0KQogCWJvb2wJCWNyY19vazsKIAlzdHJ1Y3QgdGlt ZXZhbCB0djsKIAorCWNoYXIJICAgKm91dF9maWxlOwogCWNoYXIJICAgKmNtZF9zdHI7CiAKLQlw Z19sb2dfaW5mbygibW9kaWZ5aW5nIHN5c3RlbSBpZGVudGlmaWVyIG9mIHN1YnNjcmliZXIiKTsK KwlJTkZPKCJtb2RpZnlpbmcgc3lzdGVtIGlkZW50aWZpZXIgb2Ygc3Vic2NyaWJlciIpOwogCiAJ Y2YgPSBnZXRfY29udHJvbGZpbGUoc3Vic2NyaWJlcl9kaXIsICZjcmNfb2spOwogCWlmICghY3Jj X29rKQpAQCAtNzEzLDcgKzgyMSw3IEBAIG1vZGlmeV9zdWJzY3JpYmVyX3N5c2lkKGNvbnN0IHN0 cnVjdCBDcmVhdGVTdWJzY3JpYmVyT3B0aW9ucyAqb3B0KQogCS8qCiAJICogU2VsZWN0IGEgbmV3 IHN5c3RlbSBpZGVudGlmaWVyLgogCSAqCi0JICogWFhYIHRoaXMgY29kZSB3YXMgZXh0cmFjdGVk IGZyb20gQm9vdFN0cmFwWExPRygpLgorCSAqIFhYWCB0aGlzIGNvZGUgd2FzIGV4dHJhY3RlZCBm cm9tIEJvb3RTdHJhcFhJTkZPKCkuCiAJICovCiAJZ2V0dGltZW9mZGF5KCZ0diwgTlVMTCk7CiAJ Y2YtPnN5c3RlbV9pZGVudGlmaWVyID0gKCh1aW50NjQpIHR2LnR2X3NlYykgPDwgMzI7CkBAIC03 MjEsMzEgKzgyOSwzNyBAQCBtb2RpZnlfc3Vic2NyaWJlcl9zeXNpZChjb25zdCBzdHJ1Y3QgQ3Jl YXRlU3Vic2NyaWJlck9wdGlvbnMgKm9wdCkKIAljZi0+c3lzdGVtX2lkZW50aWZpZXIgfD0gZ2V0 cGlkKCkgJiAweEZGRjsKIAogCWlmIChkcnlfcnVuKQotCQlwZ19sb2dfaW5mbygiZHJ5LXJ1bjog d291bGQgc2V0IHN5c3RlbSBpZGVudGlmaWVyIHRvICUiIFBSSXU2NCAiIG9uIHN1YnNjcmliZXIi LAotCQkJCQljZi0+c3lzdGVtX2lkZW50aWZpZXIpOworCQlJTkZPKCJkcnktcnVuOiB3b3VsZCBz ZXQgc3lzdGVtIGlkZW50aWZpZXIgdG8gJSIgUFJJdTY0ICIgb24gc3Vic2NyaWJlciIsCisJCQkg Y2YtPnN5c3RlbV9pZGVudGlmaWVyKTsKIAllbHNlCiAJewogCQl1cGRhdGVfY29udHJvbGZpbGUo c3Vic2NyaWJlcl9kaXIsIGNmLCB0cnVlKTsKLQkJcGdfbG9nX2luZm8oInN5c3RlbSBpZGVudGlm aWVyIGlzICUiIFBSSXU2NCAiIG9uIHN1YnNjcmliZXIiLAotCQkJCQljZi0+c3lzdGVtX2lkZW50 aWZpZXIpOworCQlJTkZPKCJzeXN0ZW0gaWRlbnRpZmllciBpcyAlIiBQUkl1NjQgIiBvbiBzdWJz Y3JpYmVyIiwKKwkJCSBjZi0+c3lzdGVtX2lkZW50aWZpZXIpOwogCX0KIAogCWlmIChkcnlfcnVu KQotCQlwZ19sb2dfaW5mbygiZHJ5LXJ1bjogd291bGQgcnVuIHBnX3Jlc2V0d2FsIG9uIHRoZSBz dWJzY3JpYmVyIik7CisJCUlORk8oImRyeS1ydW46IHdvdWxkIHJ1biBwZ19yZXNldHdhbCBvbiB0 aGUgc3Vic2NyaWJlciIpOworCWVsc2UKKwkJSU5GTygicnVubmluZyBwZ19yZXNldHdhbCBvbiB0 aGUgc3Vic2NyaWJlciIpOworCisKKwlpZiAob3B0LT5sb2dfZGlyICE9IE5VTEwpCisJCW91dF9m aWxlID0gcHNwcmludGYoIiVzLyVzXyVzLmxvZyIsIG9wdC0+bG9nX2RpciwgU0VSVkVSX0xPR19G SUxFX05BTUUsIGxvZ190aW1lc3RhbXApOwogCWVsc2UKLQkJcGdfbG9nX2luZm8oInJ1bm5pbmcg cGdfcmVzZXR3YWwgb24gdGhlIHN1YnNjcmliZXIiKTsKKwkJb3V0X2ZpbGUgPSBERVZOVUxMOwog Ci0JY21kX3N0ciA9IHBzcHJpbnRmKCJcIiVzXCIgLUQgXCIlc1wiID4gXCIlc1wiIiwgcGdfcmVz ZXR3YWxfcGF0aCwKLQkJCQkJICAgc3Vic2NyaWJlcl9kaXIsIERFVk5VTEwpOworCWNtZF9zdHIg PSBwc3ByaW50ZigiXCIlc1wiIC1EIFwiJXNcIiA+PiBcIiVzXCIiLCBwZ19yZXNldHdhbF9wYXRo LAorCQkJCQkgICBzdWJzY3JpYmVyX2Rpciwgb3V0X2ZpbGUpOwogCi0JcGdfbG9nX2RlYnVnKCJw Z19yZXNldHdhbCBjb21tYW5kIGlzOiAlcyIsIGNtZF9zdHIpOworCURFQlVHKCJwZ19yZXNldHdh bCBjb21tYW5kIGlzOiAlcyIsIGNtZF9zdHIpOwogCiAJaWYgKCFkcnlfcnVuKQogCXsKIAkJaW50 CQkJcmMgPSBzeXN0ZW0oY21kX3N0cik7CiAKIAkJaWYgKHJjID09IDApCi0JCQlwZ19sb2dfaW5m bygic3VjY2Vzc2Z1bGx5IHJlc2V0IFdBTCBvbiB0aGUgc3Vic2NyaWJlciIpOworCQkJSU5GTygi c3VjY2Vzc2Z1bGx5IHJlc2V0IFdBTCBvbiB0aGUgc3Vic2NyaWJlciIpOwogCQllbHNlCiAJCQlw Z19mYXRhbCgiY291bGQgbm90IHJlc2V0IFdBTCBvbiBzdWJzY3JpYmVyOiAlcyIsIHdhaXRfcmVz dWx0X3RvX3N0cihyYykpOwogCX0KQEAgLTg3Myw4ICs5ODcsOCBAQCBzZXR1cF9wdWJsaXNoZXIo c3RydWN0IExvZ2ljYWxSZXBJbmZvICpkYmluZm8pCiAJCWlmIChmaW5kX3B1YmxpY2F0aW9uKGNv bm4sIGRiaW5mb1tpXS5wdWJuYW1lLCBkYmluZm9baV0uZGJuYW1lKSkKIAkJewogCQkJLyogUmV1 c2UgZXhpc3RpbmcgcHVibGljYXRpb24gb24gcHVibGlzaGVyLiAqLwotCQkJcGdfbG9nX2luZm8o InVzZSBleGlzdGluZyBwdWJsaWNhdGlvbiBcIiVzXCIgaW4gZGF0YWJhc2UgXCIlc1wiIiwKLQkJ CQkJCWRiaW5mb1tpXS5wdWJuYW1lLCBkYmluZm9baV0uZGJuYW1lKTsKKwkJCUlORk8oInVzZSBl eGlzdGluZyBwdWJsaWNhdGlvbiBcIiVzXCIgaW4gZGF0YWJhc2UgXCIlc1wiIiwKKwkJCQkgZGJp bmZvW2ldLnB1Ym5hbWUsIGRiaW5mb1tpXS5kYm5hbWUpOwogCQkJLyogRG9uJ3QgcmVtb3ZlIHBy ZS1leGlzdGluZyBwdWJsaWNhdGlvbiBpZiBhbiBlcnJvciBvY2N1cnMuICovCiAJCQlkYmluZm9b aV0ubWFkZV9wdWJsaWNhdGlvbiA9IGZhbHNlOwogCQl9CkBAIC05NzEsNyArMTA4NSw3IEBAIGNo ZWNrX3B1Ymxpc2hlcihjb25zdCBzdHJ1Y3QgTG9naWNhbFJlcEluZm8gKmRiaW5mbykKIAlpbnQJ CQltYXhfcHJlcGFyZWRfdHJhbnNhY3Rpb25zOwogCWNoYXIJICAgKm1heF9zbG90X3dhbF9rZWVw X3NpemU7CiAKLQlwZ19sb2dfaW5mbygiY2hlY2tpbmcgc2V0dGluZ3Mgb24gcHVibGlzaGVyIik7 CisJSU5GTygiY2hlY2tpbmcgc2V0dGluZ3Mgb24gcHVibGlzaGVyIik7CiAKIAljb25uID0gY29u bmVjdF9kYXRhYmFzZShkYmluZm9bMF0ucHViY29ubmluZm8sIHRydWUpOwogCkBAIC0xMDIyLDE1 ICsxMTM2LDE1IEBAIGNoZWNrX3B1Ymxpc2hlcihjb25zdCBzdHJ1Y3QgTG9naWNhbFJlcEluZm8g KmRiaW5mbykKIAogCVBRY2xlYXIocmVzKTsKIAotCXBnX2xvZ19kZWJ1ZygicHVibGlzaGVyOiB3 YWxfbGV2ZWw6ICVzIiwgd2FsX2xldmVsKTsKLQlwZ19sb2dfZGVidWcoInB1Ymxpc2hlcjogbWF4 X3JlcGxpY2F0aW9uX3Nsb3RzOiAlZCIsIG1heF9yZXBzbG90cyk7Ci0JcGdfbG9nX2RlYnVnKCJw dWJsaXNoZXI6IGN1cnJlbnQgcmVwbGljYXRpb24gc2xvdHM6ICVkIiwgY3VyX3JlcHNsb3RzKTsK LQlwZ19sb2dfZGVidWcoInB1Ymxpc2hlcjogbWF4X3dhbF9zZW5kZXJzOiAlZCIsIG1heF93YWxz ZW5kZXJzKTsKLQlwZ19sb2dfZGVidWcoInB1Ymxpc2hlcjogY3VycmVudCB3YWwgc2VuZGVyczog JWQiLCBjdXJfd2Fsc2VuZGVycyk7Ci0JcGdfbG9nX2RlYnVnKCJwdWJsaXNoZXI6IG1heF9wcmVw YXJlZF90cmFuc2FjdGlvbnM6ICVkIiwKLQkJCQkgbWF4X3ByZXBhcmVkX3RyYW5zYWN0aW9ucyk7 Ci0JcGdfbG9nX2RlYnVnKCJwdWJsaXNoZXI6IG1heF9zbG90X3dhbF9rZWVwX3NpemU6ICVzIiwK LQkJCQkgbWF4X3Nsb3Rfd2FsX2tlZXBfc2l6ZSk7CisJREVCVUcoInB1Ymxpc2hlcjogd2FsX2xl dmVsOiAlcyIsIHdhbF9sZXZlbCk7CisJREVCVUcoInB1Ymxpc2hlcjogbWF4X3JlcGxpY2F0aW9u X3Nsb3RzOiAlZCIsIG1heF9yZXBzbG90cyk7CisJREVCVUcoInB1Ymxpc2hlcjogY3VycmVudCBy ZXBsaWNhdGlvbiBzbG90czogJWQiLCBjdXJfcmVwc2xvdHMpOworCURFQlVHKCJwdWJsaXNoZXI6 IG1heF93YWxfc2VuZGVyczogJWQiLCBtYXhfd2Fsc2VuZGVycyk7CisJREVCVUcoInB1Ymxpc2hl cjogY3VycmVudCB3YWwgc2VuZGVyczogJWQiLCBjdXJfd2Fsc2VuZGVycyk7CisJREVCVUcoInB1 Ymxpc2hlcjogbWF4X3ByZXBhcmVkX3RyYW5zYWN0aW9uczogJWQiLAorCQkgIG1heF9wcmVwYXJl ZF90cmFuc2FjdGlvbnMpOworCURFQlVHKCJwdWJsaXNoZXI6IG1heF9zbG90X3dhbF9rZWVwX3Np emU6ICVzIiwKKwkJICBtYXhfc2xvdF93YWxfa2VlcF9zaXplKTsKIAogCWRpc2Nvbm5lY3RfZGF0 YWJhc2UoY29ubiwgZmFsc2UpOwogCkBAIC0xMTA2LDcgKzEyMjAsNyBAQCBjaGVja19zdWJzY3Jp YmVyKGNvbnN0IHN0cnVjdCBMb2dpY2FsUmVwSW5mbyAqZGJpbmZvKQogCWludAkJCW1heF9yZXBv cmlnaW5zOwogCWludAkJCW1heF93cHJvY3M7CiAKLQlwZ19sb2dfaW5mbygiY2hlY2tpbmcgc2V0 dGluZ3Mgb24gc3Vic2NyaWJlciIpOworCUlORk8oImNoZWNraW5nIHNldHRpbmdzIG9uIHN1YnNj cmliZXJcbiIpOwogCiAJY29ubiA9IGNvbm5lY3RfZGF0YWJhc2UoZGJpbmZvWzBdLnN1YmNvbm5p bmZvLCB0cnVlKTsKIApAQCAtMTE0OCwxMiArMTI2MiwxMiBAQCBjaGVja19zdWJzY3JpYmVyKGNv bnN0IHN0cnVjdCBMb2dpY2FsUmVwSW5mbyAqZGJpbmZvKQogCWlmIChzdHJjbXAoUFFnZXR2YWx1 ZShyZXMsIDMsIDApLCAiIikgIT0gMCkKIAkJcHJpbWFyeV9zbG90X25hbWUgPSBwZ19zdHJkdXAo UFFnZXR2YWx1ZShyZXMsIDMsIDApKTsKIAotCXBnX2xvZ19kZWJ1Zygic3Vic2NyaWJlcjogbWF4 X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2VyczogJWQiLAotCQkJCSBtYXhfbHJ3b3JrZXJzKTsK LQlwZ19sb2dfZGVidWcoInN1YnNjcmliZXI6IG1heF9hY3RpdmVfcmVwbGljYXRpb25fb3JpZ2lu czogJWQiLCBtYXhfcmVwb3JpZ2lucyk7Ci0JcGdfbG9nX2RlYnVnKCJzdWJzY3JpYmVyOiBtYXhf d29ya2VyX3Byb2Nlc3NlczogJWQiLCBtYXhfd3Byb2NzKTsKKwlERUJVRygic3Vic2NyaWJlcjog bWF4X2xvZ2ljYWxfcmVwbGljYXRpb25fd29ya2VyczogJWQiLAorCQkgIG1heF9scndvcmtlcnMp OworCURFQlVHKCJzdWJzY3JpYmVyOiBtYXhfYWN0aXZlX3JlcGxpY2F0aW9uX29yaWdpbnM6ICVk IiwgbWF4X3JlcG9yaWdpbnMpOworCURFQlVHKCJzdWJzY3JpYmVyOiBtYXhfd29ya2VyX3Byb2Nl c3NlczogJWQiLCBtYXhfd3Byb2NzKTsKIAlpZiAocHJpbWFyeV9zbG90X25hbWUpCi0JCXBnX2xv Z19kZWJ1Zygic3Vic2NyaWJlcjogcHJpbWFyeV9zbG90X25hbWU6ICVzIiwgcHJpbWFyeV9zbG90 X25hbWUpOworCQlERUJVRygic3Vic2NyaWJlcjogcHJpbWFyeV9zbG90X25hbWU6ICVzIiwgcHJp bWFyeV9zbG90X25hbWUpOwogCiAJUFFjbGVhcihyZXMpOwogCkBAIC0xMjE1LDEyICsxMzI5LDEy IEBAIGRyb3BfZXhpc3Rpbmdfc3Vic2NyaXB0aW9uKFBHY29ubiAqY29ubiwgY29uc3QgY2hhciAq c3VibmFtZSwgY29uc3QgY2hhciAqZGJuYW1lCiAJYXBwZW5kUFFFeHBCdWZmZXIocXVlcnksICIg RFJPUCBTVUJTQ1JJUFRJT04gJXM7Iiwgc3VibmFtZSk7CiAKIAlpZiAoZHJ5X3J1bikKLQkJcGdf bG9nX2luZm8oImRyeS1ydW46IHdvdWxkIGRyb3Agc3Vic2NyaXB0aW9uIFwiJXNcIiBpbiBkYXRh YmFzZSBcIiVzXCIiLAotCQkJCQlzdWJuYW1lLCBkYm5hbWUpOworCQlJTkZPKCJkcnktcnVuOiB3 b3VsZCBkcm9wIHN1YnNjcmlwdGlvbiBcIiVzXCIgaW4gZGF0YWJhc2UgXCIlc1wiIiwKKwkJCSBz dWJuYW1lLCBkYm5hbWUpOwogCWVsc2UKIAl7Ci0JCXBnX2xvZ19pbmZvKCJkcm9wcGluZyBzdWJz Y3JpcHRpb24gXCIlc1wiIGluIGRhdGFiYXNlIFwiJXNcIiIsCi0JCQkJCXN1Ym5hbWUsIGRibmFt ZSk7CisJCUlORk8oImRyb3BwaW5nIHN1YnNjcmlwdGlvbiBcIiVzXCIgaW4gZGF0YWJhc2UgXCIl c1wiIiwKKwkJCSBzdWJuYW1lLCBkYm5hbWUpOwogCiAJCXJlcyA9IFBRZXhlYyhjb25uLCBxdWVy eS0+ZGF0YSk7CiAKQEAgLTEzNzMsNyArMTQ4Nyw3IEBAIHNldHVwX3JlY292ZXJ5KGNvbnN0IHN0 cnVjdCBMb2dpY2FsUmVwSW5mbyAqZGJpbmZvLCBjb25zdCBjaGFyICpkYXRhZGlyLCBjb25zdCBj CiAJCQkJCQkgIGxzbik7CiAJfQogCi0JcGdfbG9nX2RlYnVnKCJyZWNvdmVyeSBwYXJhbWV0ZXJz OlxuJXMiLCByZWNvdmVyeWNvbmZjb250ZW50cy0+ZGF0YSk7CisJREVCVUcoInJlY292ZXJ5IHBh cmFtZXRlcnM6XG4lcyIsIHJlY292ZXJ5Y29uZmNvbnRlbnRzLT5kYXRhKTsKIAogCWlmICghZHJ5 X3J1bikKIAl7CkBAIC0xNDk0LDExICsxNjA4LDExIEBAIGNyZWF0ZV9sb2dpY2FsX3JlcGxpY2F0 aW9uX3Nsb3QoUEdjb25uICpjb25uLCBzdHJ1Y3QgTG9naWNhbFJlcEluZm8gKmRiaW5mbykKIAlB c3NlcnQoY29ubiAhPSBOVUxMKTsKIAogCWlmIChkcnlfcnVuKQotCQlwZ19sb2dfaW5mbygiZHJ5 LXJ1bjogd291bGQgY3JlYXRlIHRoZSByZXBsaWNhdGlvbiBzbG90IFwiJXNcIiBpbiBkYXRhYmFz ZSBcIiVzXCIgb24gcHVibGlzaGVyIiwKLQkJCQkJc2xvdF9uYW1lLCBkYmluZm8tPmRibmFtZSk7 CisJCUlORk8oImRyeS1ydW46IHdvdWxkIGNyZWF0ZSB0aGUgcmVwbGljYXRpb24gc2xvdCBcIiVz XCIgaW4gZGF0YWJhc2UgXCIlc1wiIG9uIHB1Ymxpc2hlciIsCisJCQkgc2xvdF9uYW1lLCBkYmlu Zm8tPmRibmFtZSk7CiAJZWxzZQotCQlwZ19sb2dfaW5mbygiY3JlYXRpbmcgdGhlIHJlcGxpY2F0 aW9uIHNsb3QgXCIlc1wiIGluIGRhdGFiYXNlIFwiJXNcIiBvbiBwdWJsaXNoZXIiLAotCQkJCQlz bG90X25hbWUsIGRiaW5mby0+ZGJuYW1lKTsKKwkJSU5GTygiY3JlYXRpbmcgdGhlIHJlcGxpY2F0 aW9uIHNsb3QgXCIlc1wiIGluIGRhdGFiYXNlIFwiJXNcIiBvbiBwdWJsaXNoZXIiLAorCQkJIHNs b3RfbmFtZSwgZGJpbmZvLT5kYm5hbWUpOwogCiAJc2xvdF9uYW1lX2VzYyA9IFBRZXNjYXBlTGl0 ZXJhbChjb25uLCBzbG90X25hbWUsIHN0cmxlbihzbG90X25hbWUpKTsKIApAQCAtMTUwOSw3ICsx NjIzLDcgQEAgY3JlYXRlX2xvZ2ljYWxfcmVwbGljYXRpb25fc2xvdChQR2Nvbm4gKmNvbm4sIHN0 cnVjdCBMb2dpY2FsUmVwSW5mbyAqZGJpbmZvKQogCiAJUFFmcmVlbWVtKHNsb3RfbmFtZV9lc2Mp OwogCi0JcGdfbG9nX2RlYnVnKCJjb21tYW5kIGlzOiAlcyIsIHN0ci0+ZGF0YSk7CisJREVCVUco ImNvbW1hbmQgaXM6ICVzIiwgc3RyLT5kYXRhKTsKIAogCWlmICghZHJ5X3J1bikKIAl7CkBAIC0x NTQ3LDExICsxNjYxLDExIEBAIGRyb3BfcmVwbGljYXRpb25fc2xvdChQR2Nvbm4gKmNvbm4sIHN0 cnVjdCBMb2dpY2FsUmVwSW5mbyAqZGJpbmZvLAogCUFzc2VydChjb25uICE9IE5VTEwpOwogCiAJ aWYgKGRyeV9ydW4pCi0JCXBnX2xvZ19pbmZvKCJkcnktcnVuOiB3b3VsZCBkcm9wIHRoZSByZXBs aWNhdGlvbiBzbG90IFwiJXNcIiBpbiBkYXRhYmFzZSBcIiVzXCIiLAotCQkJCQlzbG90X25hbWUs IGRiaW5mby0+ZGJuYW1lKTsKKwkJSU5GTygiZHJ5LXJ1bjogd291bGQgZHJvcCB0aGUgcmVwbGlj YXRpb24gc2xvdCBcIiVzXCIgaW4gZGF0YWJhc2UgXCIlc1wiIiwKKwkJCSBzbG90X25hbWUsIGRi aW5mby0+ZGJuYW1lKTsKIAllbHNlCi0JCXBnX2xvZ19pbmZvKCJkcm9wcGluZyB0aGUgcmVwbGlj YXRpb24gc2xvdCBcIiVzXCIgaW4gZGF0YWJhc2UgXCIlc1wiIiwKLQkJCQkJc2xvdF9uYW1lLCBk YmluZm8tPmRibmFtZSk7CisJCUlORk8oImRyb3BwaW5nIHRoZSByZXBsaWNhdGlvbiBzbG90IFwi JXNcIiBpbiBkYXRhYmFzZSBcIiVzXCIiLAorCQkJIHNsb3RfbmFtZSwgZGJpbmZvLT5kYm5hbWUp OwogCiAJc2xvdF9uYW1lX2VzYyA9IFBRZXNjYXBlTGl0ZXJhbChjb25uLCBzbG90X25hbWUsIHN0 cmxlbihzbG90X25hbWUpKTsKIApAQCAtMTU1OSw3ICsxNjczLDcgQEAgZHJvcF9yZXBsaWNhdGlv bl9zbG90KFBHY29ubiAqY29ubiwgc3RydWN0IExvZ2ljYWxSZXBJbmZvICpkYmluZm8sCiAKIAlQ UWZyZWVtZW0oc2xvdF9uYW1lX2VzYyk7CiAKLQlwZ19sb2dfZGVidWcoImNvbW1hbmQgaXM6ICVz Iiwgc3RyLT5kYXRhKTsKKwlERUJVRygiY29tbWFuZCBpczogJXMiLCBzdHItPmRhdGEpOwogCiAJ aWYgKCFkcnlfcnVuKQogCXsKQEAgLTE2NTAsMTIgKzE3NjQsMTcgQEAgc3RhcnRfc3RhbmRieV9z ZXJ2ZXIoY29uc3Qgc3RydWN0IENyZWF0ZVN1YnNjcmliZXJPcHRpb25zICpvcHQsIGJvb2wgcmVz dHJpY3RlZF8KIAlpZiAocmVzdHJpY3RfbG9naWNhbF93b3JrZXIpCiAJCWFwcGVuZFBRRXhwQnVm ZmVyU3RyKHBnX2N0bF9jbWQsICIgLW8gXCItYyBtYXhfbG9naWNhbF9yZXBsaWNhdGlvbl93b3Jr ZXJzPTBcIiIpOwogCi0JcGdfbG9nX2RlYnVnKCJwZ19jdGwgY29tbWFuZCBpczogJXMiLCBwZ19j dGxfY21kLT5kYXRhKTsKKwlpZiAob3B0LT5sb2dfZGlyICE9IE5VTEwpCisJeworCQlhcHBlbmRQ UUV4cEJ1ZmZlcihwZ19jdGxfY21kLCAiIC1sICVzLyVzXyVzLmxvZyIsIG9wdC0+bG9nX2Rpciwg U0VSVkVSX0xPR19GSUxFX05BTUUsIGxvZ190aW1lc3RhbXApOworCX0KKworCURFQlVHKCJwZ19j dGwgY29tbWFuZCBpczogJXMiLCBwZ19jdGxfY21kLT5kYXRhKTsKIAlyYyA9IHN5c3RlbShwZ19j dGxfY21kLT5kYXRhKTsKIAlwZ19jdGxfc3RhdHVzKHBnX2N0bF9jbWQtPmRhdGEsIHJjKTsKIAlz dGFuZGJ5X3J1bm5pbmcgPSB0cnVlOwogCWRlc3Ryb3lQUUV4cEJ1ZmZlcihwZ19jdGxfY21kKTsK LQlwZ19sb2dfaW5mbygic2VydmVyIHdhcyBzdGFydGVkIik7CisJSU5GTygic2VydmVyIHdhcyBz dGFydGVkIik7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0xNjY2LDExICsxNzg1LDExIEBAIHN0b3Bf c3RhbmRieV9zZXJ2ZXIoY29uc3QgY2hhciAqZGF0YWRpcikKIAogCXBnX2N0bF9jbWQgPSBwc3By aW50ZigiXCIlc1wiIHN0b3AgLUQgXCIlc1wiIC1zIiwgcGdfY3RsX3BhdGgsCiAJCQkJCQkgIGRh dGFkaXIpOwotCXBnX2xvZ19kZWJ1ZygicGdfY3RsIGNvbW1hbmQgaXM6ICVzIiwgcGdfY3RsX2Nt ZCk7CisJREVCVUcoInBnX2N0bCBjb21tYW5kIGlzOiAlcyIsIHBnX2N0bF9jbWQpOwogCXJjID0g c3lzdGVtKHBnX2N0bF9jbWQpOwogCXBnX2N0bF9zdGF0dXMocGdfY3RsX2NtZCwgcmMpOwogCXN0 YW5kYnlfcnVubmluZyA9IGZhbHNlOwotCXBnX2xvZ19pbmZvKCJzZXJ2ZXIgd2FzIHN0b3BwZWQi KTsKKwlJTkZPKCJzZXJ2ZXIgd2FzIHN0b3BwZWQiKTsKIH0KIAogLyoKQEAgLTE2ODksNyArMTgw OCw3IEBAIHdhaXRfZm9yX2VuZF9yZWNvdmVyeShjb25zdCBjaGFyICpjb25uaW5mbywgY29uc3Qg c3RydWN0IENyZWF0ZVN1YnNjcmliZXJPcHRpb25zCiAJYm9vbAkJcmVhZHkgPSBmYWxzZTsKIAlp bnQJCQl0aW1lciA9IDA7CiAKLQlwZ19sb2dfaW5mbygid2FpdGluZyBmb3IgdGhlIHRhcmdldCBz ZXJ2ZXIgdG8gcmVhY2ggdGhlIGNvbnNpc3RlbnQgc3RhdGUiKTsKKwlJTkZPKCJ3YWl0aW5nIGZv ciB0aGUgdGFyZ2V0IHNlcnZlciB0byByZWFjaCB0aGUgY29uc2lzdGVudCBzdGF0ZSIpOwogCiAJ Y29ubiA9IGNvbm5lY3RfZGF0YWJhc2UoY29ubmluZm8sIHRydWUpOwogCkBAIC0xNzIxLDggKzE4 NDAsOCBAQCB3YWl0X2Zvcl9lbmRfcmVjb3ZlcnkoY29uc3QgY2hhciAqY29ubmluZm8sIGNvbnN0 IHN0cnVjdCBDcmVhdGVTdWJzY3JpYmVyT3B0aW9ucwogCWlmICghcmVhZHkpCiAJCXBnX2ZhdGFs KCJzZXJ2ZXIgZGlkIG5vdCBlbmQgcmVjb3ZlcnkiKTsKIAotCXBnX2xvZ19pbmZvKCJ0YXJnZXQg c2VydmVyIHJlYWNoZWQgdGhlIGNvbnNpc3RlbnQgc3RhdGUiKTsKLQlwZ19sb2dfaW5mb19oaW50 KCJJZiBwZ19jcmVhdGVzdWJzY3JpYmVyIGZhaWxzIGFmdGVyIHRoaXMgcG9pbnQsIHlvdSBtdXN0 IHJlY3JlYXRlIHRoZSBwaHlzaWNhbCByZXBsaWNhIGJlZm9yZSBjb250aW51aW5nLiIpOworCUlO Rk8oInRhcmdldCBzZXJ2ZXIgcmVhY2hlZCB0aGUgY29uc2lzdGVudCBzdGF0ZSIpOworCUlORk9f SElOVCgiSWYgcGdfY3JlYXRlc3Vic2NyaWJlciBmYWlscyBhZnRlciB0aGlzIHBvaW50LCB5b3Ug bXVzdCByZWNyZWF0ZSB0aGUgcGh5c2ljYWwgcmVwbGljYSBiZWZvcmUgY29udGludWluZy4iKTsK IH0KIAogLyoKQEAgLTE3NzIsMTYgKzE4OTEsMTYgQEAgY3JlYXRlX3B1YmxpY2F0aW9uKFBHY29u biAqY29ubiwgc3RydWN0IExvZ2ljYWxSZXBJbmZvICpkYmluZm8pCiAJcmVzZXRQUUV4cEJ1ZmZl cihzdHIpOwogCiAJaWYgKGRyeV9ydW4pCi0JCXBnX2xvZ19pbmZvKCJkcnktcnVuOiB3b3VsZCBj cmVhdGUgcHVibGljYXRpb24gXCIlc1wiIGluIGRhdGFiYXNlIFwiJXNcIiIsCi0JCQkJCWRiaW5m by0+cHVibmFtZSwgZGJpbmZvLT5kYm5hbWUpOworCQlJTkZPKCJkcnktcnVuOiB3b3VsZCBjcmVh dGUgcHVibGljYXRpb24gXCIlc1wiIGluIGRhdGFiYXNlIFwiJXNcIiIsCisJCQkgZGJpbmZvLT5w dWJuYW1lLCBkYmluZm8tPmRibmFtZSk7CiAJZWxzZQotCQlwZ19sb2dfaW5mbygiY3JlYXRpbmcg cHVibGljYXRpb24gXCIlc1wiIGluIGRhdGFiYXNlIFwiJXNcIiIsCi0JCQkJCWRiaW5mby0+cHVi bmFtZSwgZGJpbmZvLT5kYm5hbWUpOworCQlJTkZPKCJjcmVhdGluZyBwdWJsaWNhdGlvbiBcIiVz XCIgaW4gZGF0YWJhc2UgXCIlc1wiIiwKKwkJCSBkYmluZm8tPnB1Ym5hbWUsIGRiaW5mby0+ZGJu YW1lKTsKIAogCWFwcGVuZFBRRXhwQnVmZmVyKHN0ciwgIkNSRUFURSBQVUJMSUNBVElPTiAlcyBG T1IgQUxMIFRBQkxFUyIsCiAJCQkJCSAgaXB1Ym5hbWVfZXNjKTsKIAotCXBnX2xvZ19kZWJ1Zygi Y29tbWFuZCBpczogJXMiLCBzdHItPmRhdGEpOworCURFQlVHKCJjb21tYW5kIGlzOiAlcyIsIHN0 ci0+ZGF0YSk7CiAKIAlpZiAoIWRyeV9ydW4pCiAJewpAQCAtMTgxOSwxNyArMTkzOCwxNyBAQCBk cm9wX3B1YmxpY2F0aW9uKFBHY29ubiAqY29ubiwgY29uc3QgY2hhciAqcHVibmFtZSwgY29uc3Qg Y2hhciAqZGJuYW1lLAogCXB1Ym5hbWVfZXNjID0gUFFlc2NhcGVJZGVudGlmaWVyKGNvbm4sIHB1 Ym5hbWUsIHN0cmxlbihwdWJuYW1lKSk7CiAKIAlpZiAoZHJ5X3J1bikKLQkJcGdfbG9nX2luZm8o ImRyeS1ydW46IHdvdWxkIGRyb3AgcHVibGljYXRpb24gXCIlc1wiIGluIGRhdGFiYXNlIFwiJXNc IiIsCi0JCQkJCXB1Ym5hbWUsIGRibmFtZSk7CisJCUlORk8oImRyeS1ydW46IHdvdWxkIGRyb3Ag cHVibGljYXRpb24gXCIlc1wiIGluIGRhdGFiYXNlIFwiJXNcIiIsCisJCQkgcHVibmFtZSwgZGJu YW1lKTsKIAllbHNlCi0JCXBnX2xvZ19pbmZvKCJkcm9wcGluZyBwdWJsaWNhdGlvbiBcIiVzXCIg aW4gZGF0YWJhc2UgXCIlc1wiIiwKLQkJCQkJcHVibmFtZSwgZGJuYW1lKTsKKwkJSU5GTygiZHJv cHBpbmcgcHVibGljYXRpb24gXCIlc1wiIGluIGRhdGFiYXNlIFwiJXNcIiIsCisJCQkgcHVibmFt ZSwgZGJuYW1lKTsKIAogCWFwcGVuZFBRRXhwQnVmZmVyKHN0ciwgIkRST1AgUFVCTElDQVRJT04g JXMiLCBwdWJuYW1lX2VzYyk7CiAKIAlQUWZyZWVtZW0ocHVibmFtZV9lc2MpOwogCi0JcGdfbG9n X2RlYnVnKCJjb21tYW5kIGlzOiAlcyIsIHN0ci0+ZGF0YSk7CisJREVCVUcoImNvbW1hbmQgaXM6 ICVzIiwgc3RyLT5kYXRhKTsKIAogCWlmICghZHJ5X3J1bikKIAl7CkBAIC0xODcyLDggKzE5OTEs OCBAQCBjaGVja19hbmRfZHJvcF9wdWJsaWNhdGlvbnMoUEdjb25uICpjb25uLCBzdHJ1Y3QgTG9n aWNhbFJlcEluZm8gKmRiaW5mbykKIAogCWlmIChkcm9wX2FsbF9wdWJzKQogCXsKLQkJcGdfbG9n X2luZm8oImRyb3BwaW5nIGFsbCBleGlzdGluZyBwdWJsaWNhdGlvbnMgaW4gZGF0YWJhc2UgXCIl c1wiIiwKLQkJCQkJZGJpbmZvLT5kYm5hbWUpOworCQlJTkZPKCJkcm9wcGluZyBhbGwgZXhpc3Rp bmcgcHVibGljYXRpb25zIGluIGRhdGFiYXNlIFwiJXNcIiIsCisJCQkgZGJpbmZvLT5kYm5hbWUp OwogCiAJCS8qIEZldGNoIGFsbCBwdWJsaWNhdGlvbiBuYW1lcyAqLwogCQlyZXMgPSBQUWV4ZWMo Y29ubiwgIlNFTEVDVCBwdWJuYW1lIEZST00gcGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbjsiKTsK QEAgLTE5MDMsMTEgKzIwMjIsMTEgQEAgY2hlY2tfYW5kX2Ryb3BfcHVibGljYXRpb25zKFBHY29u biAqY29ubiwgc3RydWN0IExvZ2ljYWxSZXBJbmZvICpkYmluZm8pCiAJCWVsc2UKIAkJewogCQkJ aWYgKGRyeV9ydW4pCi0JCQkJcGdfbG9nX2luZm8oImRyeS1ydW46IHdvdWxkIHByZXNlcnZlIGV4 aXN0aW5nIHB1YmxpY2F0aW9uIFwiJXNcIiBpbiBkYXRhYmFzZSBcIiVzXCIiLAotCQkJCQkJCWRi aW5mby0+cHVibmFtZSwgZGJpbmZvLT5kYm5hbWUpOworCQkJCUlORk8oImRyeS1ydW46IHdvdWxk IHByZXNlcnZlIGV4aXN0aW5nIHB1YmxpY2F0aW9uIFwiJXNcIiBpbiBkYXRhYmFzZSBcIiVzXCIi LAorCQkJCQkgZGJpbmZvLT5wdWJuYW1lLCBkYmluZm8tPmRibmFtZSk7CiAJCQllbHNlCi0JCQkJ cGdfbG9nX2luZm8oInByZXNlcnZlIGV4aXN0aW5nIHB1YmxpY2F0aW9uIFwiJXNcIiBpbiBkYXRh YmFzZSBcIiVzXCIiLAotCQkJCQkJCWRiaW5mby0+cHVibmFtZSwgZGJpbmZvLT5kYm5hbWUpOwor CQkJCUlORk8oInByZXNlcnZlIGV4aXN0aW5nIHB1YmxpY2F0aW9uIFwiJXNcIiBpbiBkYXRhYmFz ZSBcIiVzXCIiLAorCQkJCQkgZGJpbmZvLT5wdWJuYW1lLCBkYmluZm8tPmRibmFtZSk7CiAJCX0K IAl9CiB9CkBAIC0xOTQxLDExICsyMDYwLDExIEBAIGNyZWF0ZV9zdWJzY3JpcHRpb24oUEdjb25u ICpjb25uLCBjb25zdCBzdHJ1Y3QgTG9naWNhbFJlcEluZm8gKmRiaW5mbykKIAlyZXBsc2xvdG5h bWVfZXNjID0gUFFlc2NhcGVMaXRlcmFsKGNvbm4sIGRiaW5mby0+cmVwbHNsb3RuYW1lLCBzdHJs ZW4oZGJpbmZvLT5yZXBsc2xvdG5hbWUpKTsKIAogCWlmIChkcnlfcnVuKQotCQlwZ19sb2dfaW5m bygiZHJ5LXJ1bjogd291bGQgY3JlYXRlIHN1YnNjcmlwdGlvbiBcIiVzXCIgaW4gZGF0YWJhc2Ug XCIlc1wiIiwKLQkJCQkJZGJpbmZvLT5zdWJuYW1lLCBkYmluZm8tPmRibmFtZSk7CisJCUlORk8o ImRyeS1ydW46IHdvdWxkIGNyZWF0ZSBzdWJzY3JpcHRpb24gXCIlc1wiIGluIGRhdGFiYXNlIFwi JXNcIiIsCisJCQkgZGJpbmZvLT5zdWJuYW1lLCBkYmluZm8tPmRibmFtZSk7CiAJZWxzZQotCQlw Z19sb2dfaW5mbygiY3JlYXRpbmcgc3Vic2NyaXB0aW9uIFwiJXNcIiBpbiBkYXRhYmFzZSBcIiVz XCIiLAotCQkJCQlkYmluZm8tPnN1Ym5hbWUsIGRiaW5mby0+ZGJuYW1lKTsKKwkJSU5GTygiY3Jl YXRpbmcgc3Vic2NyaXB0aW9uIFwiJXNcIiBpbiBkYXRhYmFzZSBcIiVzXCIiLAorCQkJIGRiaW5m by0+c3VibmFtZSwgZGJpbmZvLT5kYm5hbWUpOwogCiAJYXBwZW5kUFFFeHBCdWZmZXIoc3RyLAog CQkJCQkgICJDUkVBVEUgU1VCU0NSSVBUSU9OICVzIENPTk5FQ1RJT04gJXMgUFVCTElDQVRJT04g JXMgIgpAQCAtMTk1OSw3ICsyMDc4LDcgQEAgY3JlYXRlX3N1YnNjcmlwdGlvbihQR2Nvbm4gKmNv bm4sIGNvbnN0IHN0cnVjdCBMb2dpY2FsUmVwSW5mbyAqZGJpbmZvKQogCVBRZnJlZW1lbShwdWJj b25uaW5mb19lc2MpOwogCVBRZnJlZW1lbShyZXBsc2xvdG5hbWVfZXNjKTsKIAotCXBnX2xvZ19k ZWJ1ZygiY29tbWFuZCBpczogJXMiLCBzdHItPmRhdGEpOworCURFQlVHKCJjb21tYW5kIGlzOiAl cyIsIHN0ci0+ZGF0YSk7CiAKIAlpZiAoIWRyeV9ydW4pCiAJewpAQCAtMjA0MywxOCArMjE2Miwx OCBAQCBzZXRfcmVwbGljYXRpb25fcHJvZ3Jlc3MoUEdjb25uICpjb25uLCBjb25zdCBzdHJ1Y3Qg TG9naWNhbFJlcEluZm8gKmRiaW5mbywgY29ucwogCW9yaWdpbm5hbWUgPSBwc3ByaW50ZigicGdf JXUiLCBzdWJvaWQpOwogCiAJaWYgKGRyeV9ydW4pCi0JCXBnX2xvZ19pbmZvKCJkcnktcnVuOiB3 b3VsZCBzZXQgdGhlIHJlcGxpY2F0aW9uIHByb2dyZXNzIChub2RlIG5hbWUgXCIlc1wiLCBMU04g JXMpIGluIGRhdGFiYXNlIFwiJXNcIiIsCi0JCQkJCW9yaWdpbm5hbWUsIGxzbnN0ciwgZGJpbmZv LT5kYm5hbWUpOworCQlJTkZPKCJkcnktcnVuOiB3b3VsZCBzZXQgdGhlIHJlcGxpY2F0aW9uIHBy b2dyZXNzIChub2RlIG5hbWUgXCIlc1wiLCBMU04gJXMpIGluIGRhdGFiYXNlIFwiJXNcIiIsCisJ CQkgb3JpZ2lubmFtZSwgbHNuc3RyLCBkYmluZm8tPmRibmFtZSk7CiAJZWxzZQotCQlwZ19sb2df aW5mbygic2V0dGluZyB0aGUgcmVwbGljYXRpb24gcHJvZ3Jlc3MgKG5vZGUgbmFtZSBcIiVzXCIs IExTTiAlcykgaW4gZGF0YWJhc2UgXCIlc1wiIiwKLQkJCQkJb3JpZ2lubmFtZSwgbHNuc3RyLCBk YmluZm8tPmRibmFtZSk7CisJCUlORk8oInNldHRpbmcgdGhlIHJlcGxpY2F0aW9uIHByb2dyZXNz IChub2RlIG5hbWUgXCIlc1wiLCBMU04gJXMpIGluIGRhdGFiYXNlIFwiJXNcIiIsCisJCQkgb3Jp Z2lubmFtZSwgbHNuc3RyLCBkYmluZm8tPmRibmFtZSk7CiAKIAlyZXNldFBRRXhwQnVmZmVyKHN0 cik7CiAJYXBwZW5kUFFFeHBCdWZmZXIoc3RyLAogCQkJCQkgICJTRUxFQ1QgcGdfY2F0YWxvZy5w Z19yZXBsaWNhdGlvbl9vcmlnaW5fYWR2YW5jZSgnJXMnLCAnJXMnKSIsCiAJCQkJCSAgb3JpZ2lu bmFtZSwgbHNuc3RyKTsKIAotCXBnX2xvZ19kZWJ1ZygiY29tbWFuZCBpczogJXMiLCBzdHItPmRh dGEpOworCURFQlVHKCJjb21tYW5kIGlzOiAlcyIsIHN0ci0+ZGF0YSk7CiAKIAlpZiAoIWRyeV9y dW4pCiAJewpAQCAtMjA5MywxNSArMjIxMiwxNSBAQCBlbmFibGVfc3Vic2NyaXB0aW9uKFBHY29u biAqY29ubiwgY29uc3Qgc3RydWN0IExvZ2ljYWxSZXBJbmZvICpkYmluZm8pCiAJc3VibmFtZSA9 IFBRZXNjYXBlSWRlbnRpZmllcihjb25uLCBkYmluZm8tPnN1Ym5hbWUsIHN0cmxlbihkYmluZm8t PnN1Ym5hbWUpKTsKIAogCWlmIChkcnlfcnVuKQotCQlwZ19sb2dfaW5mbygiZHJ5LXJ1bjogd291 bGQgZW5hYmxlIHN1YnNjcmlwdGlvbiBcIiVzXCIgaW4gZGF0YWJhc2UgXCIlc1wiIiwKLQkJCQkJ ZGJpbmZvLT5zdWJuYW1lLCBkYmluZm8tPmRibmFtZSk7CisJCUlORk8oImRyeS1ydW46IHdvdWxk IGVuYWJsZSBzdWJzY3JpcHRpb24gXCIlc1wiIGluIGRhdGFiYXNlIFwiJXNcIiIsCisJCQkgZGJp bmZvLT5zdWJuYW1lLCBkYmluZm8tPmRibmFtZSk7CiAJZWxzZQotCQlwZ19sb2dfaW5mbygiZW5h Ymxpbmcgc3Vic2NyaXB0aW9uIFwiJXNcIiBpbiBkYXRhYmFzZSBcIiVzXCIiLAotCQkJCQlkYmlu Zm8tPnN1Ym5hbWUsIGRiaW5mby0+ZGJuYW1lKTsKKwkJSU5GTygiZW5hYmxpbmcgc3Vic2NyaXB0 aW9uIFwiJXNcIiBpbiBkYXRhYmFzZSBcIiVzXCIiLAorCQkJIGRiaW5mby0+c3VibmFtZSwgZGJp bmZvLT5kYm5hbWUpOwogCiAJYXBwZW5kUFFFeHBCdWZmZXIoc3RyLCAiQUxURVIgU1VCU0NSSVBU SU9OICVzIEVOQUJMRSIsIHN1Ym5hbWUpOwogCi0JcGdfbG9nX2RlYnVnKCJjb21tYW5kIGlzOiAl cyIsIHN0ci0+ZGF0YSk7CisJREVCVUcoImNvbW1hbmQgaXM6ICVzIiwgc3RyLT5kYXRhKTsKIAog CWlmICghZHJ5X3J1bikKIAl7CkBAIC0yMTgxLDYgKzIzMDAsNyBAQCBtYWluKGludCBhcmdjLCBj aGFyICoqYXJndikKIAkJeyJhbGwiLCBub19hcmd1bWVudCwgTlVMTCwgJ2EnfSwKIAkJeyJkYXRh YmFzZSIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnZCd9LAogCQl7InBnZGF0YSIsIHJlcXVp cmVkX2FyZ3VtZW50LCBOVUxMLCAnRCd9LAorCQl7ImxvZ2RpciIsIHJlcXVpcmVkX2FyZ3VtZW50 LCBOVUxMLCAnbCd9LAogCQl7ImRyeS1ydW4iLCBub19hcmd1bWVudCwgTlVMTCwgJ24nfSwKIAkJ eyJzdWJzY3JpYmVyLXBvcnQiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ3AnfSwKIAkJeyJw dWJsaXNoZXItc2VydmVyIiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdQJ30sCkBAIC0yMjE1 LDYgKzIzMzUsNyBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAljaGFyCSAgICpjb25z aXN0ZW50X2xzbjsKIAogCWNoYXIJCXBpZGZpbGVbTUFYUEdQQVRIXTsKKwljaGFyCSAgICppbnRl cm5hbF9sb2dfZmlsZTsKIAogCXBnX2xvZ2dpbmdfaW5pdChhcmd2WzBdKTsKIAlwZ19sb2dnaW5n X3NldF9sZXZlbChQR19MT0dfV0FSTklORyk7CkBAIC0yMjM5LDYgKzIzNjAsNyBAQCBtYWluKGlu dCBhcmdjLCBjaGFyICoqYXJndikKIAkvKiBEZWZhdWx0IHNldHRpbmdzICovCiAJc3Vic2NyaWJl cl9kaXIgPSBOVUxMOwogCW9wdC5jb25maWdfZmlsZSA9IE5VTEw7CisJb3B0LmxvZ19kaXIgPSBO VUxMOwogCW9wdC5wdWJfY29ubmluZm9fc3RyID0gTlVMTDsKIAlvcHQuc29ja2V0X2RpciA9IE5V TEw7CiAJb3B0LnN1Yl9wb3J0ID0gREVGQVVMVF9TVUJfUE9SVDsKQEAgLTIyNjcsOSArMjM4OSwx MSBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKIAogCWdldF9yZXN0cmljdGVkX3Rva2Vu KCk7CiAKLQl3aGlsZSAoKGMgPSBnZXRvcHRfbG9uZyhhcmdjLCBhcmd2LCAiYWQ6RDpucDpQOnM6 dDpUVTp2IiwKKwl3aGlsZSAoKGMgPSBnZXRvcHRfbG9uZyhhcmdjLCBhcmd2LCAiYWQ6RDpsOm5w OlA6czp0OlRVOnYiLAogCQkJCQkJCWxvbmdfb3B0aW9ucywgJm9wdGlvbl9pbmRleCkpICE9IC0x KQogCXsKKwkJY2hhcgkJdGltZXN0YW1wWzEyOF07CisKIAkJc3dpdGNoIChjKQogCQl7CiAJCQlj YXNlICdhJzoKQEAgLTIyODcsNiArMjQxMSwzMCBAQCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJn dikKIAkJCWNhc2UgJ0QnOgogCQkJCXN1YnNjcmliZXJfZGlyID0gcGdfc3RyZHVwKG9wdGFyZyk7 CiAJCQkJY2Fub25pY2FsaXplX3BhdGgoc3Vic2NyaWJlcl9kaXIpOworCQkJCWJyZWFrOworCQkJ Y2FzZSAnbCc6CisJCQkJcG9wdWxhdGVfdGltZXN0YW1wKHRpbWVzdGFtcCwgc2l6ZW9mKHRpbWVz dGFtcCkpOworCQkJCWxvZ190aW1lc3RhbXAgPSBwZ19zdHJkdXAodGltZXN0YW1wKTsKKworCQkJ CW9wdC5sb2dfZGlyID0gcGdfc3RyZHVwKG9wdGFyZyk7CisJCQkJY2Fub25pY2FsaXplX3BhdGgo b3B0LmxvZ19kaXIpOworCisJCQkJaWYgKHN0YXQob3B0LmxvZ19kaXIsICZzdGF0YnVmKSAhPSAw KQorCQkJCXsKKwkJCQkJaWYgKGVycm5vID09IEVOT0VOVCkKKwkJCQkJeworCQkJCQkJbWtkaXIo b3B0LmxvZ19kaXIsIFNfSVJXWFUpOworCQkJCQkJSU5GTygibG9nIGRpcmVjdG9yeSBjcmVhdGVk Iik7CisJCQkJCX0KKwkJCQkJZWxzZSBpZiAoZXJybm8gPT0gRUFDQ0VTKQorCQkJCQkJcGdfZmF0 YWwoInBlcm1pc3Npb24gZGVuaWVkIHRyeWluZyB0byBhY2Nlc3MgZGlyZWN0b3J5IFwiJXNcIjog JW0iLCBvcHQubG9nX2Rpcik7CisJCQkJCWVsc2UKKwkJCQkJCXBnX2ZhdGFsKCJjb3VsZCBub3Qg YWNjZXNzIGRpcmVjdG9yeSBcIiVzXCI6ICVtIiwgb3B0LmxvZ19kaXIpOworCQkJCX0KKwkJCQlp bnRlcm5hbF9sb2dfZmlsZSA9IHBzcHJpbnRmKCIlcy8lc18lcy5sb2ciLCBvcHQubG9nX2Rpciwg SU5URVJOQUxfTE9HX0ZJTEVfTkFNRSwgbG9nX3RpbWVzdGFtcCk7CisJCQkJaWYgKChpbnRlcm5h bF9sb2dfZmlsZV9mcCA9IGxvZ2ZpbGVfb3BlbihpbnRlcm5hbF9sb2dfZmlsZSwgImEiKSkgPT0g TlVMTCkKKwkJCQkJcGdfZmF0YWwoImNvdWxkIG5vdCBvcGVuIGxvZyBmaWxlIFwiJXNcIjogJW0i LCBpbnRlcm5hbF9sb2dfZmlsZSk7CisKIAkJCQlicmVhazsKIAkJCWNhc2UgJ24nOgogCQkJCWRy eV9ydW4gPSB0cnVlOwpAQCAtMjQyNSwxNiArMjU3MywxNiBAQCBtYWluKGludCBhcmdjLCBjaGFy ICoqYXJndikKIAl9CiAKIAlpZiAoZHJ5X3J1bikKLQkJcGdfbG9nX2luZm8oIkV4ZWN1dGluZyBp biBkcnktcnVuIG1vZGUuXG4iCi0JCQkJCSJUaGUgdGFyZ2V0IGRpcmVjdG9yeSB3aWxsIG5vdCBi ZSBtb2RpZmllZC4iKTsKKwkJSU5GTygiRXhlY3V0aW5nIGluIGRyeS1ydW4gbW9kZS5cbiIKKwkJ CSAiVGhlIHRhcmdldCBkaXJlY3Rvcnkgd2lsbCBub3QgYmUgbW9kaWZpZWQuIik7CiAKLQlwZ19s b2dfaW5mbygidmFsaWRhdGluZyBwdWJsaXNoZXIgY29ubmVjdGlvbiBzdHJpbmciKTsKKwlJTkZP KCJ2YWxpZGF0aW5nIHB1Ymxpc2hlciBjb25uZWN0aW9uIHN0cmluZyIpOwogCXB1Yl9iYXNlX2Nv bm5pbmZvID0gZ2V0X2Jhc2VfY29ubmluZm8ob3B0LnB1Yl9jb25uaW5mb19zdHIsCiAJCQkJCQkJ CQkJICAmZGJuYW1lX2Nvbm5pbmZvKTsKIAlpZiAocHViX2Jhc2VfY29ubmluZm8gPT0gTlVMTCkK IAkJZXhpdCgxKTsKIAotCXBnX2xvZ19pbmZvKCJ2YWxpZGF0aW5nIHN1YnNjcmliZXIgY29ubmVj dGlvbiBzdHJpbmciKTsKKwlJTkZPKCJ2YWxpZGF0aW5nIHN1YnNjcmliZXIgY29ubmVjdGlvbiBz dHJpbmciKTsKIAlzdWJfYmFzZV9jb25uaW5mbyA9IGdldF9zdWJfY29ubmluZm8oJm9wdCk7CiAK IAkvKgpAQCAtMjQ1MSw3ICsyNTk5LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAK IAlpZiAob3B0LmRhdGFiYXNlX25hbWVzLmhlYWQgPT0gTlVMTCkKIAl7Ci0JCXBnX2xvZ19pbmZv KCJubyBkYXRhYmFzZSB3YXMgc3BlY2lmaWVkIik7CisJCUlORk8oIm5vIGRhdGFiYXNlIHdhcyBz cGVjaWZpZWQiKTsKIAogCQkvKgogCQkgKiBUcnkgdG8gb2J0YWluIHRoZSBkYm5hbWUgZnJvbSB0 aGUgcHVibGlzaGVyIGNvbm5pbmZvLiBJZiBkYm5hbWUKQEAgLTI0NjIsOCArMjYxMCw4IEBAIG1h aW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCQkJc2ltcGxlX3N0cmluZ19saXN0X2FwcGVuZCgm b3B0LmRhdGFiYXNlX25hbWVzLCBkYm5hbWVfY29ubmluZm8pOwogCQkJbnVtX2RicysrOwogCi0J CQlwZ19sb2dfaW5mbygiZGF0YWJhc2UgbmFtZSBcIiVzXCIgd2FzIGV4dHJhY3RlZCBmcm9tIHRo ZSBwdWJsaXNoZXIgY29ubmVjdGlvbiBzdHJpbmciLAotCQkJCQkJZGJuYW1lX2Nvbm5pbmZvKTsK KwkJCUlORk8oImRhdGFiYXNlIG5hbWUgXCIlc1wiIHdhcyBleHRyYWN0ZWQgZnJvbSB0aGUgcHVi bGlzaGVyIGNvbm5lY3Rpb24gc3RyaW5nIiwKKwkJCQkgZGJuYW1lX2Nvbm5pbmZvKTsKIAkJfQog CQllbHNlCiAJCXsKQEAgLTI1NjAsNyArMjcwOCw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiph cmd2KQogCSAqIGJ5IGNvbW1hbmQtbGluZSBvcHRpb25zKS4gVGhlIGdvYWwgaXMgdG8gYXZvaWQg Y29ubmVjdGlvbnMgZHVyaW5nIHRoZQogCSAqIHRyYW5zZm9ybWF0aW9uIHN0ZXBzLgogCSAqLwot CXBnX2xvZ19pbmZvKCJzdGFydGluZyB0aGUgc3RhbmRieSBzZXJ2ZXIgd2l0aCBjb21tYW5kLWxp bmUgb3B0aW9ucyIpOworCUlORk8oInN0YXJ0aW5nIHRoZSBzdGFuZGJ5IHNlcnZlciB3aXRoIGNv bW1hbmQtbGluZSBvcHRpb25zIik7CiAJc3RhcnRfc3RhbmRieV9zZXJ2ZXIoJm9wdCwgdHJ1ZSwg ZmFsc2UpOwogCiAJLyogQ2hlY2sgaWYgdGhlIHN0YW5kYnkgc2VydmVyIGlzIHJlYWR5IGZvciBs b2dpY2FsIHJlcGxpY2F0aW9uICovCkBAIC0yNTc2LDcgKzI3MjQsNyBAQCBtYWluKGludCBhcmdj LCBjaGFyICoqYXJndikKIAkgKiBndWFyYW50ZWVzIGl0KSAqYmVmb3JlKiBjcmVhdGluZyB0aGUg cmVwbGljYXRpb24gc2xvdHMgaW4KIAkgKiBzZXR1cF9wdWJsaXNoZXIoKS4KIAkgKi8KLQlwZ19s b2dfaW5mbygic3RvcHBpbmcgdGhlIHN1YnNjcmliZXIiKTsKKwlJTkZPKCJzdG9wcGluZyB0aGUg c3Vic2NyaWJlciIpOwogCXN0b3Bfc3RhbmRieV9zZXJ2ZXIoc3Vic2NyaWJlcl9kaXIpOwogCiAJ LyogQ3JlYXRlIHRoZSByZXF1aXJlZCBvYmplY3RzIGZvciBlYWNoIGRhdGFiYXNlIG9uIHB1Ymxp c2hlciAqLwpAQCAtMjU5MCw3ICsyNzM4LDcgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3Yp CiAJICogdW50aWwgYWNjZXB0aW5nIGNvbm5lY3Rpb25zLiBXZSBkb24ndCB3YW50IHRvIHN0YXJ0 IGxvZ2ljYWwgcmVwbGljYXRpb24KIAkgKiBkdXJpbmcgc2V0dXAuCiAJICovCi0JcGdfbG9nX2lu Zm8oInN0YXJ0aW5nIHRoZSBzdWJzY3JpYmVyIik7CisJSU5GTygic3RhcnRpbmcgdGhlIHN1YnNj cmliZXIiKTsKIAlzdGFydF9zdGFuZGJ5X3NlcnZlcigmb3B0LCB0cnVlLCB0cnVlKTsKIAogCS8q IFdhaXRpbmcgdGhlIHN1YnNjcmliZXIgdG8gYmUgcHJvbW90ZWQgKi8KQEAgLTI2MTEsNyArMjc1 OSw3IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQogCWRyb3BfZmFpbG92ZXJfcmVwbGlj YXRpb25fc2xvdHMoZGJpbmZvcy5kYmluZm8pOwogCiAJLyogU3RvcCB0aGUgc3Vic2NyaWJlciAq LwotCXBnX2xvZ19pbmZvKCJzdG9wcGluZyB0aGUgc3Vic2NyaWJlciIpOworCUlORk8oInN0b3Bw aW5nIHRoZSBzdWJzY3JpYmVyIik7CiAJc3RvcF9zdGFuZGJ5X3NlcnZlcihzdWJzY3JpYmVyX2Rp cik7CiAKIAkvKiBDaGFuZ2Ugc3lzdGVtIGlkZW50aWZpZXIgZnJvbSBzdWJzY3JpYmVyICovCkBA IC0yNjE5LDcgKzI3NjcsMTAgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAKIAlzdWNj ZXNzID0gdHJ1ZTsKIAotCXBnX2xvZ19pbmZvKCJEb25lISIpOworCUlORk8oIkRvbmUhIik7CisK KwlpZiAoaW50ZXJuYWxfbG9nX2ZpbGVfZnAgIT0gTlVMTCkKKwkJZmNsb3NlKGludGVybmFsX2xv Z19maWxlX2ZwKTsKIAogCXJldHVybiAwOwogfQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wZ19iYXNl YmFja3VwL3QvMDQwX3BnX2NyZWF0ZXN1YnNjcmliZXIucGwgYi9zcmMvYmluL3BnX2Jhc2ViYWNr dXAvdC8wNDBfcGdfY3JlYXRlc3Vic2NyaWJlci5wbAppbmRleCAwYzI3ZmNhN2JiNy4uY2RiMTI2 MjNiM2IgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdfYmFzZWJhY2t1cC90LzA0MF9wZ19jcmVhdGVz dWJzY3JpYmVyLnBsCisrKyBiL3NyYy9iaW4vcGdfYmFzZWJhY2t1cC90LzA0MF9wZ19jcmVhdGVz dWJzY3JpYmVyLnBsCkBAIC0xMyw3ICsxMyw4IEBAIHByb2dyYW1faGVscF9vaygncGdfY3JlYXRl c3Vic2NyaWJlcicpOwogcHJvZ3JhbV92ZXJzaW9uX29rKCdwZ19jcmVhdGVzdWJzY3JpYmVyJyk7 CiBwcm9ncmFtX29wdGlvbnNfaGFuZGxpbmdfb2soJ3BnX2NyZWF0ZXN1YnNjcmliZXInKTsKIAot bXkgJGRhdGFkaXIgPSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczo6dGVtcGRpcjsKK215ICRkYXRh ZGlyID0gUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnRlbXBkaXIgKyAiL2RhdGFkaXIiOworbXkg JGxvZ2RpciA9IFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0ZW1wZGlyICsgIi9sb2dkaXIiOwog CiAjIEdlbmVyYXRlIGEgZGF0YWJhc2Ugd2l0aCBhIG5hbWUgbWFkZSBvZiBhIHJhbmdlIG9mIEFT Q0lJIGNoYXJhY3RlcnMuCiAjIEV4dHJhY3RlZCBmcm9tIDAwMl9wZ191cGdyYWRlLnBsLgpAQCAt NjI5LDEwICs2MzAsNDMgQEAgY29tbWFuZF9vaygKICMgbm90IGJlaW5nIHRyYWNrZWQsIHNvbWV0 aGluZyB0aGF0IGlzIHNldCB3aXRoaW4gJG5vZGUtPnN0YXJ0KCkuCiBzeXN0ZW1fbG9nKCdwZ19j dGwnLCAnc3RvcCcsICctLXBnZGF0YScsICRub2RlX2stPmRhdGFfZGlyKTsKIAorJG5vZGVfcC0+ YmFja3VwKCdiYWNrdXBfMycpOworCisjIFNldCB1cCBub2RlIFIgYXMgYSBsb2dpY2FsIHJlcGxp Y2Egbm9kZQorbXkgJG5vZGVfciA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnbm9k ZV9yJyk7Ciskbm9kZV9yLT5pbml0X2Zyb21fYmFja3VwKCRub2RlX3AsICdiYWNrdXBfMycsIGhh c19zdHJlYW1pbmcgPT4gMSk7Ciskbm9kZV9yLT5hcHBlbmRfY29uZigKKwkncG9zdGdyZXNxbC5j b25mJywgcXFbCitwcmltYXJ5X2Nvbm5pbmZvID0gJyRwY29ubnN0ciBkYm5hbWU9cG9zdGdyZXMn Citob3Rfc3RhbmRieV9mZWVkYmFjayA9IG9uCitdKTsKKyRub2RlX3ItPnNldF9zdGFuZGJ5X21v ZGUoKTsKKworIyBUZXN0IHRoYXQgLS1sb2dkaXIgd29ya3MgZm9yIHBnX2NyZWF0ZXN1YnNjcmli ZXIKK2NvbW1hbmRfb2soCisJWworCQkncGdfY3JlYXRlc3Vic2NyaWJlcicsCisJCSctLXZlcmJv c2UnLAorCQknLS1wZ2RhdGEnID0+ICRub2RlX3ItPmRhdGFfZGlyLAorCQknLS1wdWJsaXNoZXIt c2VydmVyJyA9PiAkcGNvbm5zdHIsCisJCSctLWRhdGFiYXNlJyA9PiAncG9zdGdyZXMnLAorCQkn LS1sb2dkaXInID0+ICRsb2dkaXIsCisJXSwKKwknY2hlY2sgZm9yIGxvZyBmaWxlIGNyZWF0aW9u IGZvciBwZ19jcmVhdGVTdWJzY3JpYmVyJyk7CisKKyMgQ2hlY2sgdGhhdCB0aGUgbG9nIGZpbGVz IHdlcmUgY3JlYXRlZAorbXkgQHNlcnZlcl9sb2dfZmlsZXMgPSBnbG9iICIkbG9nZGlyL3BnX2Ny ZWF0ZXN1YnNjcmliZXJfc2VydmVyXyoubG9nIjsKK2lzKCBzY2FsYXIoQHNlcnZlcl9sb2dfZmls ZXMpLCAxLCAiCisgICAgcGdfY3JlYXRlc3Vic2NyaWJlcl9zZXJ2ZXIubG9nIGZpbGUgd2FzIGNy ZWF0ZWQiKTsKK215IEBpbnRlcm5hbF9sb2dfZmlsZXMgPSBnbG9iICIkbG9nZGlyL3BnX2NyZWF0 ZXN1YnNjcmliZXJfaW50ZXJuYWxfKi5sb2ciOworaXMoIHNjYWxhcihAaW50ZXJuYWxfbG9nX2Zp bGVzKSwgMSwgIgorICAgIHBnX2NyZWF0ZXN1YnNjcmliZXJfaW50ZXJuYWwubG9nIGZpbGUgd2Fz IGNyZWF0ZWQiKTsKKwogIyBjbGVhbiB1cAogJG5vZGVfcC0+dGVhcmRvd25fbm9kZTsKICRub2Rl X3MtPnRlYXJkb3duX25vZGU7CiAkbm9kZV90LT50ZWFyZG93bl9ub2RlOwogJG5vZGVfZi0+dGVh cmRvd25fbm9kZTsKKyRub2RlX3ItPnRlYXJkb3duX25vZGU7CiAKIGRvbmVfdGVzdGluZygpOwot LSAKMi40My4wCgo= --0000000000004c1a590649408f83--