Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1tQ3Dw-00HJUM-Hb for pgsql-hackers@arkaria.postgresql.org; Tue, 24 Dec 2024 11:37:17 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1tQ3Du-004TLr-7x for pgsql-hackers@arkaria.postgresql.org; Tue, 24 Dec 2024 11:37:13 +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.94.2) (envelope-from ) id 1tQ3Dt-004TLj-Ep for pgsql-hackers@lists.postgresql.org; Tue, 24 Dec 2024 11:37:13 +0000 Received: from mail-lj1-x229.google.com ([2a00:1450:4864:20::229]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1tQ3Dr-000KnR-1P for pgsql-hackers@lists.postgresql.org; Tue, 24 Dec 2024 11:37:12 +0000 Received: by mail-lj1-x229.google.com with SMTP id 38308e7fff4ca-303548a9361so45519401fa.0 for ; Tue, 24 Dec 2024 03:37:11 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1735040229; x=1735645029; 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=VOr0OaUUZo4YCzxC5m8kOkzeC+TiVNgMUAUXvuB4rwc=; b=hq9M3DYhlXaPpZ5vQpvXyqIOL03k/Y7PTNaHTdvPwfeaidg5J/1mQu9kFLIL4ZvoNj QyKkYDr44j6u1Fpejl6Xi10wp8dtsrxyZF1y1kSXA+dQQ/UrTtf+q2W1Mgi8bYCHjGq3 aUC9DuH7toK2pW42e3pebYb5q/D5l9rqfaBoKOZm/uGF+osOxekmwrot1mMrfmJJE1np RGWh9Gzk9fJUj+M8MDvALZ98YA+6m4QVCDIZpXpbK1Eeob1mAXP2Tg+2LKuOcKrXlx0R Z3mNGN/YJuataOMosjrvJKf3MQByoFQW7sn1pRNBS/12MvXqqT2kzyRR0IikzNsIcKpv uweQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1735040229; x=1735645029; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=VOr0OaUUZo4YCzxC5m8kOkzeC+TiVNgMUAUXvuB4rwc=; b=hfWHKMMtmRJ3ZxB6OThwSFcYxXoesTdby9uNZlKQc/XNxBek8LU+1rkjh3xtu92m1s ytgw+pRzh6lZHOlUy36SsvW33n8G85l1WdjCjgM9OG+GKp6Z2+4fEcQ3DTe6ZUy9lr43 Q/VM14GY03cKwVGCeTwkYVgZ9skYFcZunR2xh99vNDFzaZPAvmA2I5HG0u3gj/Pasi7Y CYQE67Xur0cFUy7kzZ0ht9QpF414ZwgAvTIsHM1DlToV0ltzTOKq4N0yueTtPUjoD9PW k/AwUrdZVuZFfkjSU+W7ZfvYhuWnQKoZmDg6DfmYRS0wXjMTfCNyVf4pY55+Wt27P08y 164Q== X-Forwarded-Encrypted: i=1; AJvYcCXNQpXaRuTG+k7fA2iSgncVNB9KXxAubECn3kcS7EcNB3iTmI+fBdOJQJ//YVxZloMckdcDDBEsHONLjz2G@lists.postgresql.org X-Gm-Message-State: AOJu0YwgE2ncM8/ocnI0HOn1FNqTOavQKkewMb79TSWm0szVHZfR6dBk EpzVwcEZp4VBgM+19al7dWT4eC2wqihx953GhyIe9Q504gniq5Kn5rhLaGd86XOdyXJ9v2AkiIl 6xGRzw0QSFufYMSfT+bvNJo46DA== X-Gm-Gg: ASbGnctJnql+QjHTEbpypOBV9bzRbjeMyoZDQ1qUtiNslhDtngclRO8rFES/ZVWfbEx iwrCvjczsJVZjJIrOgcpnx6j7DBCsCcaLPeQLBZg= X-Google-Smtp-Source: AGHT+IERUtyTJx1xKue4H46pwzbk6biT+sn6mvZbQQjuk378LLa6mFdV7ww8jXmOrXu+bM46TSk6QwumHHdrh+7TYGs= X-Received: by 2002:a05:6512:3d25:b0:540:2da2:f282 with SMTP id 2adb3069b0e04-542295602e2mr5128079e87.42.1735040228719; Tue, 24 Dec 2024 03:37:08 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Nisha Moond Date: Tue, 24 Dec 2024 17:06:55 +0530 Message-ID: Subject: Re: Introduce XID age and inactive timeout based replication slot invalidation To: Amit Kapila Cc: Peter Smith , vignesh C , "Hayato Kuroda (Fujitsu)" , shveta malik , Bharath Rupireddy , Ajin Cherian , Bertrand Drouvot , Masahiko Sawada , Nathan Bossart , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000813068062a0288fc" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000813068062a0288fc Content-Type: multipart/alternative; boundary="000000000000813067062a0288fa" --000000000000813067062a0288fa Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Fri, Dec 20, 2024 at 3:12=E2=80=AFPM Amit Kapila wrote: > On Mon, Dec 16, 2024 at 4:10=E2=80=AFPM Nisha Moond > wrote: > > > > Here is the v56 patch set with the above comments incorporated. > > > > Review comments: > =3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D > 1. > + { > + {"idle_replication_slot_timeout", PGC_SIGHUP, REPLICATION_SENDING, > + gettext_noop("Sets the duration a replication slot can remain idle > before " > + "it is invalidated."), > + NULL, > + GUC_UNIT_MS > + }, > + &idle_replication_slot_timeout_ms, > > I think users are going to keep idele_slot timeout at least in hours. > So, millisecond seems the wrong choice to me. I suggest to keep the > units in minutes. I understand that writing a test would be > challenging as spending a minute or more on one test is not advisable. > But I don't see any test testing the other GUCs that are in minutes > (wal_summary_keep_time and log_rotation_age). The default value should > be one day. > +1 - Changed the GUC unit to "minute". Regarding the tests, we have two potential options: 1) Introduce an additional "debug_xx" GUC parameter with units of seconds or milliseconds, only for testing purposes. 2) Skip writing tests for this, similar to other GUCs with units in minutes. IMO, adding an additional GUC just for testing may not be worthwhile. It's reasonable to proceed without the test. Thoughts? The attached v57 patch-set addresses all the comments. I have kept the test case in the patch for now, it takes 2-3 minutes to complete. -- Thanks, Nisha --000000000000813067062a0288fa Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
On Fri, Dec 20, 2024 at 3:12=E2=80=AFPM A= mit Kapila <amit.kapila16@gma= il.com> wrote:
On Mon, Dec 16, 2024 at = 4:10=E2=80=AFPM Nisha Moond <nisha.moond412@gmail.com> wrote:
>
> Here is the v56 patch set with the above comments incorporated.
>

Review comments:
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
1.
+ {
+ {"idle_replication_slot_timeout", PGC_SIGHUP, REPLICATION_SENDI= NG,
+ gettext_noop("Sets the duration a replication slot can remain idle b= efore "
+ "it is invalidated."),
+ NULL,
+ GUC_UNIT_MS
+ },
+ &idle_replication_slot_timeout_ms,

I think users are going to keep idele_slot timeout at least in hours.
So, millisecond seems the wrong choice to me. I suggest to keep the
units in minutes. I understand that writing a test would be
challenging as spending a minute or more on one test is not advisable.
But I don't see any test testing the other GUCs that are in minutes
(wal_summary_keep_time and log_rotation_age). The default value should
be one day.
=C2=A0
+1
- Changed the GUC unit = to "minute".

Regarding the tests, we have two potential op= tions:
=C2=A01) Introduce an additional "debug_xx" GUC paramet= er with units of seconds or milliseconds, only for testing purposes.
=C2= =A02) Skip writing tests for this, similar to other GUCs with units in minu= tes.

IMO, add= ing an additional GUC just for testing may not be worthwhile. It's reas= onable to proceed without the test.

Thoughts?

The attached v5= 7 patch-set addresses all the comments. I have kept the test case in the pa= tch for now, it takes 2-3 minutes to complete.

--
Thanks,
Nisha=C2=A0
--000000000000813067062a0288fa-- --000000000000813068062a0288fc Content-Type: application/octet-stream; name="v57-0001-Enhance-replication-slot-error-handling-slot-inv.patch" Content-Disposition: attachment; filename="v57-0001-Enhance-replication-slot-error-handling-slot-inv.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m52diars0 RnJvbSBjOTVkMDEwZDg3OGRlNmEzNDMzNzIyMjY5NzU5ZmZjMDhiY2Q3YWVmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOaXNoYSBNb29uZCA8bmlzaGEubW9vbmQ0MTJAZ21haWwuY29t PgpEYXRlOiBNb24sIDE4IE5vdiAyMDI0IDE2OjEzOjI2ICswNTMwClN1YmplY3Q6IFtQQVRDSCB2 NTcgMS8yXSBFbmhhbmNlIHJlcGxpY2F0aW9uIHNsb3QgZXJyb3IgaGFuZGxpbmcsIHNsb3QKIGlu dmFsaWRhdGlvbiwgYW5kIGluYWN0aXZlX3NpbmNlIHNldHRpbmcgbG9naWMKCkluIFJlcGxpY2F0 aW9uU2xvdEFjcXVpcmUoKSwgcmFpc2UgYW4gZXJyb3IgZm9yIGludmFsaWQgc2xvdHMgaWYgdGhl CmNhbGxlciBzcGVjaWZpZXMgZXJyb3JfaWZfaW52YWxpZD10cnVlLgoKQWRkIGNoZWNrIGlmIHRo ZSBzbG90IGlzIGFscmVhZHkgYWNxdWlyZWQsIHRoZW4gbWFyayBpdCBpbnZhbGlkYXRlZCBkaXJl Y3RseS4KCkVuc3VyZSBzYW1lIGluYWN0aXZlX3NpbmNlIHRpbWUgZm9yIGFsbCBzbG90cyBpbiB1 cGRhdGVfc3luY2VkX3Nsb3RzX2luYWN0aXZlX3NpbmNlKCkKYW5kIFJlc3RvcmVTbG90RnJvbURp c2soKS4KLS0tCiAuLi4vcmVwbGljYXRpb24vbG9naWNhbC9sb2dpY2FsZnVuY3MuYyAgICAgICAg fCAgMiArLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9zbG90c3luYy5jICAgIHwg MTMgKystLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jICAgICAgICAgICAgICAgIHwg NjkgKysrKysrKysrKysrKysrKy0tLQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdGZ1bmNz LmMgICAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHNlbmRlci5j ICAgICAgICAgICB8ICA0ICstCiBzcmMvYmFja2VuZC91dGlscy9hZHQvcGdfdXBncmFkZV9zdXBw b3J0LmMgICAgfCAgMiArLQogc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xvdC5oICAgICAgICAg ICAgICAgIHwgIDMgKy0KIHNyYy90ZXN0L3JlY292ZXJ5L3QvMDE5X3JlcGxzbG90X2xpbWl0LnBs ICAgICB8ICAyICstCiA4IGZpbGVzIGNoYW5nZWQsIDc1IGluc2VydGlvbnMoKyksIDIyIGRlbGV0 aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9n aWNhbGZ1bmNzLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9sb2dpY2FsL2xvZ2ljYWxmdW5j cy5jCmluZGV4IGI0ZGQ1Y2NlNzUuLjU2ZmMxYTQ1YTkgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL2xvZ2ljYWwvbG9naWNhbGZ1bmNzLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVw bGljYXRpb24vbG9naWNhbC9sb2dpY2FsZnVuY3MuYwpAQCAtMTk3LDcgKzE5Nyw3IEBAIHBnX2xv Z2ljYWxfc2xvdF9nZXRfY2hhbmdlc19ndXRzKEZ1bmN0aW9uQ2FsbEluZm8gZmNpbmZvLCBib29s IGNvbmZpcm0sIGJvb2wgYmluCiAJZWxzZQogCQllbmRfb2Zfd2FsID0gR2V0WExvZ1JlcGxheVJl Y1B0cihOVUxMKTsKIAotCVJlcGxpY2F0aW9uU2xvdEFjcXVpcmUoTmFtZVN0cigqbmFtZSksIHRy dWUpOworCVJlcGxpY2F0aW9uU2xvdEFjcXVpcmUoTmFtZVN0cigqbmFtZSksIHRydWUsIHRydWUp OwogCiAJUEdfVFJZKCk7CiAJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9zbG90c3luYy5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vbG9naWNhbC9zbG90 c3luYy5jCmluZGV4IGY0ZjgwYjIzMTIuLmUzNjQ1YWVhNTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2xvdHN5bmMuYworKysgYi9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL3Nsb3RzeW5jLmMKQEAgLTQ0Niw3ICs0NDYsNyBAQCBkcm9wX2xvY2Fs X29ic29sZXRlX3Nsb3RzKExpc3QgKnJlbW90ZV9zbG90X2xpc3QpCiAKIAkJCWlmIChzeW5jZWRf c2xvdCkKIAkJCXsKLQkJCQlSZXBsaWNhdGlvblNsb3RBY3F1aXJlKE5hbWVTdHIobG9jYWxfc2xv dC0+ZGF0YS5uYW1lKSwgdHJ1ZSk7CisJCQkJUmVwbGljYXRpb25TbG90QWNxdWlyZShOYW1lU3Ry KGxvY2FsX3Nsb3QtPmRhdGEubmFtZSksIHRydWUsIGZhbHNlKTsKIAkJCQlSZXBsaWNhdGlvblNs b3REcm9wQWNxdWlyZWQoKTsKIAkJCX0KIApAQCAtNjY1LDcgKzY2NSw3IEBAIHN5bmNocm9uaXpl X29uZV9zbG90KFJlbW90ZVNsb3QgKnJlbW90ZV9zbG90LCBPaWQgcmVtb3RlX2RiaWQpCiAJCSAq IHByZS1jaGVjayB0byBlbnN1cmUgdGhhdCBhdCBsZWFzdCBvbmUgb2YgdGhlIHNsb3QgcHJvcGVy dGllcyBpcwogCQkgKiBjaGFuZ2VkIGJlZm9yZSBhY3F1aXJpbmcgdGhlIHNsb3QuCiAJCSAqLwot CQlSZXBsaWNhdGlvblNsb3RBY3F1aXJlKHJlbW90ZV9zbG90LT5uYW1lLCB0cnVlKTsKKwkJUmVw bGljYXRpb25TbG90QWNxdWlyZShyZW1vdGVfc2xvdC0+bmFtZSwgdHJ1ZSwgZmFsc2UpOwogCiAJ CUFzc2VydChzbG90ID09IE15UmVwbGljYXRpb25TbG90KTsKIApAQCAtMTUwOCw3ICsxNTA4LDcg QEAgUmVwbFNsb3RTeW5jV29ya2VyTWFpbihjaGFyICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFy dHVwX2RhdGFfbGVuKQogc3RhdGljIHZvaWQKIHVwZGF0ZV9zeW5jZWRfc2xvdHNfaW5hY3RpdmVf c2luY2Uodm9pZCkKIHsKLQlUaW1lc3RhbXBUeiBub3cgPSAwOworCVRpbWVzdGFtcFR6IG5vdzsK IAogCS8qCiAJICogV2UgbmVlZCB0byB1cGRhdGUgaW5hY3RpdmVfc2luY2Ugb25seSB3aGVuIHdl IGFyZSBwcm9tb3Rpbmcgc3RhbmRieSB0bwpAQCAtMTUyMyw2ICsxNTIzLDkgQEAgdXBkYXRlX3N5 bmNlZF9zbG90c19pbmFjdGl2ZV9zaW5jZSh2b2lkKQogCS8qIFRoZSBzbG90IHN5bmMgd29ya2Vy IG9yIFNRTCBmdW5jdGlvbiBtdXN0bid0IGJlIHJ1bm5pbmcgYnkgbm93ICovCiAJQXNzZXJ0KChT bG90U3luY0N0eC0+cGlkID09IEludmFsaWRQaWQpICYmICFTbG90U3luY0N0eC0+c3luY2luZyk7 CiAKKwkvKiBVc2Ugc2FtZSBpbmFjdGl2ZV9zaW5jZSB0aW1lIGZvciBhbGwgc2xvdHMgKi8KKwlu b3cgPSBHZXRDdXJyZW50VGltZXN0YW1wKCk7CisKIAlMV0xvY2tBY3F1aXJlKFJlcGxpY2F0aW9u U2xvdENvbnRyb2xMb2NrLCBMV19TSEFSRUQpOwogCiAJZm9yIChpbnQgaSA9IDA7IGkgPCBtYXhf cmVwbGljYXRpb25fc2xvdHM7IGkrKykKQEAgLTE1MzcsMTAgKzE1NDAsNiBAQCB1cGRhdGVfc3lu Y2VkX3Nsb3RzX2luYWN0aXZlX3NpbmNlKHZvaWQpCiAJCQkvKiBUaGUgc2xvdCBtdXN0IG5vdCBi ZSBhY3F1aXJlZCBieSBhbnkgcHJvY2VzcyAqLwogCQkJQXNzZXJ0KHMtPmFjdGl2ZV9waWQgPT0g MCk7CiAKLQkJCS8qIFVzZSB0aGUgc2FtZSBpbmFjdGl2ZV9zaW5jZSB0aW1lIGZvciBhbGwgdGhl IHNsb3RzLiAqLwotCQkJaWYgKG5vdyA9PSAwKQotCQkJCW5vdyA9IEdldEN1cnJlbnRUaW1lc3Rh bXAoKTsKLQogCQkJU3BpbkxvY2tBY3F1aXJlKCZzLT5tdXRleCk7CiAJCQlzLT5pbmFjdGl2ZV9z aW5jZSA9IG5vdzsKIAkJCVNwaW5Mb2NrUmVsZWFzZSgmcy0+bXV0ZXgpOwpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v c2xvdC5jCmluZGV4IDRhMjA2Zjk1MjcuLjJhOTljMWYwNTMgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL3Nsb3QuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90 LmMKQEAgLTE2Myw2ICsxNjMsNyBAQCBzdGF0aWMgdm9pZCBSZXBsaWNhdGlvblNsb3REcm9wUHRy KFJlcGxpY2F0aW9uU2xvdCAqc2xvdCk7CiBzdGF0aWMgdm9pZCBSZXN0b3JlU2xvdEZyb21EaXNr KGNvbnN0IGNoYXIgKm5hbWUpOwogc3RhdGljIHZvaWQgQ3JlYXRlU2xvdE9uRGlzayhSZXBsaWNh dGlvblNsb3QgKnNsb3QpOwogc3RhdGljIHZvaWQgU2F2ZVNsb3RUb1BhdGgoUmVwbGljYXRpb25T bG90ICpzbG90LCBjb25zdCBjaGFyICpkaXIsIGludCBlbGV2ZWwpOworc3RhdGljIHZvaWQgUmFp c2VTbG90SW52YWxpZGF0aW9uRXJyb3IoUmVwbGljYXRpb25TbG90ICpzbG90KTsKIAogLyoKICAq IFJlcG9ydCBzaGFyZWQtbWVtb3J5IHNwYWNlIG5lZWRlZCBieSBSZXBsaWNhdGlvblNsb3RzU2ht ZW1Jbml0LgpAQCAtNTM1LDkgKzUzNiwxMiBAQCBSZXBsaWNhdGlvblNsb3ROYW1lKGludCBpbmRl eCwgTmFtZSBuYW1lKQogICoKICAqIEFuIGVycm9yIGlzIHJhaXNlZCBpZiBub3dhaXQgaXMgdHJ1 ZSBhbmQgdGhlIHNsb3QgaXMgY3VycmVudGx5IGluIHVzZS4gSWYKICAqIG5vd2FpdCBpcyBmYWxz ZSwgd2Ugc2xlZXAgdW50aWwgdGhlIHNsb3QgaXMgcmVsZWFzZWQgYnkgdGhlIG93bmluZyBwcm9j ZXNzLgorICoKKyAqIEFuIGVycm9yIGlzIHJhaXNlZCBpZiBlcnJvcl9pZl9pbnZhbGlkIGlzIHRy dWUgYW5kIHRoZSBzbG90IGlzIGZvdW5kIHRvCisgKiBiZSBpbnZhbGlkLgogICovCiB2b2lkCi1S ZXBsaWNhdGlvblNsb3RBY3F1aXJlKGNvbnN0IGNoYXIgKm5hbWUsIGJvb2wgbm93YWl0KQorUmVw bGljYXRpb25TbG90QWNxdWlyZShjb25zdCBjaGFyICpuYW1lLCBib29sIG5vd2FpdCwgYm9vbCBl cnJvcl9pZl9pbnZhbGlkKQogewogCVJlcGxpY2F0aW9uU2xvdCAqczsKIAlpbnQJCQlhY3RpdmVf cGlkOwpAQCAtNjE1LDYgKzYxOSwxMyBAQCByZXRyeToKIAkvKiBXZSBtYWRlIHRoaXMgc2xvdCBh Y3RpdmUsIHNvIGl0J3Mgb3VycyBub3cuICovCiAJTXlSZXBsaWNhdGlvblNsb3QgPSBzOwogCisJ LyoKKwkgKiBBbiBlcnJvciBpcyByYWlzZWQgaWYgZXJyb3JfaWZfaW52YWxpZCBpcyB0cnVlIGFu ZCB0aGUgc2xvdCBpcyBmb3VuZCB0bworCSAqIGJlIGludmFsaWQuCisJICovCisJaWYgKGVycm9y X2lmX2ludmFsaWQgJiYgcy0+ZGF0YS5pbnZhbGlkYXRlZCAhPSBSU19JTlZBTF9OT05FKQorCQlS YWlzZVNsb3RJbnZhbGlkYXRpb25FcnJvcihzKTsKKwogCS8qCiAJICogVGhlIGNhbGwgdG8gcGdz dGF0X2FjcXVpcmVfcmVwbHNsb3QoKSBwcm90ZWN0cyBhZ2FpbnN0IHN0YXRzIGZvciBhCiAJICog ZGlmZmVyZW50IHNsb3QsIGZyb20gYmVmb3JlIGEgcmVzdGFydCBvciBzdWNoLCBiZWluZyBwcmVz ZW50IGR1cmluZwpAQCAtNzg1LDcgKzc5Niw3IEBAIFJlcGxpY2F0aW9uU2xvdERyb3AoY29uc3Qg Y2hhciAqbmFtZSwgYm9vbCBub3dhaXQpCiB7CiAJQXNzZXJ0KE15UmVwbGljYXRpb25TbG90ID09 IE5VTEwpOwogCi0JUmVwbGljYXRpb25TbG90QWNxdWlyZShuYW1lLCBub3dhaXQpOworCVJlcGxp Y2F0aW9uU2xvdEFjcXVpcmUobmFtZSwgbm93YWl0LCBmYWxzZSk7CiAKIAkvKgogCSAqIERvIG5v dCBhbGxvdyB1c2VycyB0byBkcm9wIHRoZSBzbG90cyB3aGljaCBhcmUgY3VycmVudGx5IGJlaW5n IHN5bmNlZApAQCAtODEyLDcgKzgyMyw3IEBAIFJlcGxpY2F0aW9uU2xvdEFsdGVyKGNvbnN0IGNo YXIgKm5hbWUsIGNvbnN0IGJvb2wgKmZhaWxvdmVyLAogCUFzc2VydChNeVJlcGxpY2F0aW9uU2xv dCA9PSBOVUxMKTsKIAlBc3NlcnQoZmFpbG92ZXIgfHwgdHdvX3BoYXNlKTsKIAotCVJlcGxpY2F0 aW9uU2xvdEFjcXVpcmUobmFtZSwgZmFsc2UpOworCVJlcGxpY2F0aW9uU2xvdEFjcXVpcmUobmFt ZSwgZmFsc2UsIGZhbHNlKTsKIAogCWlmIChTbG90SXNQaHlzaWNhbChNeVJlcGxpY2F0aW9uU2xv dCkpCiAJCWVyZXBvcnQoRVJST1IsCkBAIC0xNjc2LDExICsxNjg3LDEyIEBAIEludmFsaWRhdGVQ b3NzaWJseU9ic29sZXRlU2xvdChSZXBsaWNhdGlvblNsb3RJbnZhbGlkYXRpb25DYXVzZSBjYXVz ZSwKIAkJYWN0aXZlX3BpZCA9IHMtPmFjdGl2ZV9waWQ7CiAKIAkJLyoKLQkJICogSWYgdGhlIHNs b3QgY2FuIGJlIGFjcXVpcmVkLCBkbyBzbyBhbmQgbWFyayBpdCBpbnZhbGlkYXRlZAotCQkgKiBp bW1lZGlhdGVseS4gIE90aGVyd2lzZSB3ZSdsbCBzaWduYWwgdGhlIG93bmluZyBwcm9jZXNzLCBi ZWxvdywgYW5kCi0JCSAqIHJldHJ5LgorCQkgKiBJZiB0aGUgc2xvdCBjYW4gYmUgYWNxdWlyZWQs IGRvIHNvIGFuZCBtYXJrIGl0IGFzIGludmFsaWRhdGVkLiBJZgorCQkgKiB0aGUgc2xvdCBpcyBh bHJlYWR5IG91cnMsIG1hcmsgaXQgYXMgaW52YWxpZGF0ZWQuIE90aGVyd2lzZSwgd2UnbGwKKwkJ ICogc2lnbmFsIHRoZSBvd25pbmcgcHJvY2VzcyBiZWxvdyBhbmQgcmV0cnkuCiAJCSAqLwotCQlp ZiAoYWN0aXZlX3BpZCA9PSAwKQorCQlpZiAoYWN0aXZlX3BpZCA9PSAwIHx8CisJCQkoTXlSZXBs aWNhdGlvblNsb3QgPT0gcyAmJiBhY3RpdmVfcGlkID09IE15UHJvY1BpZCkpCiAJCXsKIAkJCU15 UmVwbGljYXRpb25TbG90ID0gczsKIAkJCXMtPmFjdGl2ZV9waWQgPSBNeVByb2NQaWQ7CkBAIC0y MjA4LDYgKzIyMjAsNyBAQCBSZXN0b3JlU2xvdEZyb21EaXNrKGNvbnN0IGNoYXIgKm5hbWUpCiAJ Ym9vbAkJcmVzdG9yZWQgPSBmYWxzZTsKIAlpbnQJCQlyZWFkQnl0ZXM7CiAJcGdfY3JjMzJjCWNo ZWNrc3VtOworCVRpbWVzdGFtcFR6IG5vdzsKIAogCS8qIG5vIG5lZWQgdG8gbG9jayBoZXJlLCBu byBjb25jdXJyZW50IGFjY2VzcyBhbGxvd2VkIHlldCAqLwogCkBAIC0yMzY4LDYgKzIzODEsOSBA QCBSZXN0b3JlU2xvdEZyb21EaXNrKGNvbnN0IGNoYXIgKm5hbWUpCiAJCQkJCQlOYW1lU3RyKGNw LnNsb3RkYXRhLm5hbWUpKSwKIAkJCQkgZXJyaGludCgiQ2hhbmdlIFwid2FsX2xldmVsXCIgdG8g YmUgXCJyZXBsaWNhXCIgb3IgaGlnaGVyLiIpKSk7CiAKKwkvKiBVc2Ugc2FtZSBpbmFjdGl2ZV9z aW5jZSB0aW1lIGZvciBhbGwgc2xvdHMgKi8KKwlub3cgPSBHZXRDdXJyZW50VGltZXN0YW1wKCk7 CisKIAkvKiBub3RoaW5nIGNhbiBiZSBhY3RpdmUgeWV0LCBkb24ndCBsb2NrIGFueXRoaW5nICov CiAJZm9yIChpID0gMDsgaSA8IG1heF9yZXBsaWNhdGlvbl9zbG90czsgaSsrKQogCXsKQEAgLTI0 MDAsNyArMjQxNiw3IEBAIFJlc3RvcmVTbG90RnJvbURpc2soY29uc3QgY2hhciAqbmFtZSkKIAkJ ICogc2xvdCBmcm9tIHRoZSBkaXNrIGludG8gbWVtb3J5LiBXaG9ldmVyIGFjcXVpcmVzIHRoZSBz bG90IGkuZS4KIAkJICogbWFrZXMgdGhlIHNsb3QgYWN0aXZlIHdpbGwgcmVzZXQgaXQuCiAJCSAq LwotCQlzbG90LT5pbmFjdGl2ZV9zaW5jZSA9IEdldEN1cnJlbnRUaW1lc3RhbXAoKTsKKwkJc2xv dC0+aW5hY3RpdmVfc2luY2UgPSBub3c7CiAKIAkJcmVzdG9yZWQgPSB0cnVlOwogCQlicmVhazsK QEAgLTI3OTMsMyArMjgwOSw0MCBAQCBXYWl0Rm9yU3RhbmRieUNvbmZpcm1hdGlvbihYTG9nUmVj UHRyIHdhaXRfZm9yX2xzbikKIAogCUNvbmRpdGlvblZhcmlhYmxlQ2FuY2VsU2xlZXAoKTsKIH0K KworLyoKKyAqIFJhaXNlIGFuIGVycm9yIGJhc2VkIG9uIHRoZSBpbnZhbGlkYXRpb24gY2F1c2Ug b2YgdGhlIHNsb3QuCisgKi8KK3N0YXRpYyB2b2lkCitSYWlzZVNsb3RJbnZhbGlkYXRpb25FcnJv cihSZXBsaWNhdGlvblNsb3QgKnNsb3QpCit7CisJU3RyaW5nSW5mb0RhdGEgZXJyX2RldGFpbDsK KworCWluaXRTdHJpbmdJbmZvKCZlcnJfZGV0YWlsKTsKKworCXN3aXRjaCAoc2xvdC0+ZGF0YS5p bnZhbGlkYXRlZCkKKwl7CisJCWNhc2UgUlNfSU5WQUxfV0FMX1JFTU9WRUQ6CisJCQlhcHBlbmRT dHJpbmdJbmZvKCZlcnJfZGV0YWlsLCBfKCJUaGlzIHNsb3QgaGFzIGJlZW4gaW52YWxpZGF0ZWQg YmVjYXVzZSB0aGUgcmVxdWlyZWQgV0FMIGhhcyBiZWVuIHJlbW92ZWQuIikpOworCQkJYnJlYWs7 CisKKwkJY2FzZSBSU19JTlZBTF9IT1JJWk9OOgorCQkJYXBwZW5kU3RyaW5nSW5mbygmZXJyX2Rl dGFpbCwgXygiVGhpcyBzbG90IGhhcyBiZWVuIGludmFsaWRhdGVkIGJlY2F1c2UgdGhlIHJlcXVp cmVkIHJvd3MgaGF2ZSBiZWVuIHJlbW92ZWQuIikpOworCQkJYnJlYWs7CisKKwkJY2FzZSBSU19J TlZBTF9XQUxfTEVWRUw6CisJCQkvKiB0cmFuc2xhdG9yOiAlcyBpcyBhIEdVQyB2YXJpYWJsZSBu YW1lICovCisJCQlhcHBlbmRTdHJpbmdJbmZvKCZlcnJfZGV0YWlsLCBfKCJUaGlzIHNsb3QgaGFz IGJlZW4gaW52YWxpZGF0ZWQgYmVjYXVzZSBcIiVzXCIgaXMgaW5zdWZmaWNpZW50IGZvciBzbG90 LiIpLAorCQkJCQkJCSAid2FsX2xldmVsIik7CisJCQlicmVhazsKKworCQljYXNlIFJTX0lOVkFM X05PTkU6CisJCQlwZ191bnJlYWNoYWJsZSgpOworCX0KKworCWVyZXBvcnQoRVJST1IsCisJCQll cnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJZXJy bXNnKCJjYW4gbm8gbG9uZ2VyIGdldCBjaGFuZ2VzIGZyb20gcmVwbGljYXRpb24gc2xvdCBcIiVz XCIiLAorCQkJCSAgIE5hbWVTdHIoc2xvdC0+ZGF0YS5uYW1lKSksCisJCQllcnJkZXRhaWxfaW50 ZXJuYWwoIiVzIiwgZXJyX2RldGFpbC5kYXRhKSk7Cit9CmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC9yZXBsaWNhdGlvbi9zbG90ZnVuY3MuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3Nsb3Rm dW5jcy5jCmluZGV4IDQ4OGExNjFiM2UuLjU3OGNmZjY0YzggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3JlcGxpY2F0aW9uL3Nsb3RmdW5jcy5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9u L3Nsb3RmdW5jcy5jCkBAIC01MzYsNyArNTM2LDcgQEAgcGdfcmVwbGljYXRpb25fc2xvdF9hZHZh bmNlKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCW1vdmV0byA9IE1pbihtb3ZldG8sIEdldFhMb2dSZXBs YXlSZWNQdHIoTlVMTCkpOwogCiAJLyogQWNxdWlyZSB0aGUgc2xvdCBzbyB3ZSAib3duIiBpdCAq LwotCVJlcGxpY2F0aW9uU2xvdEFjcXVpcmUoTmFtZVN0cigqc2xvdG5hbWUpLCB0cnVlKTsKKwlS ZXBsaWNhdGlvblNsb3RBY3F1aXJlKE5hbWVTdHIoKnNsb3RuYW1lKSwgdHJ1ZSwgdHJ1ZSk7CiAK IAkvKiBBIHNsb3Qgd2hvc2UgcmVzdGFydF9sc24gaGFzIG5ldmVyIGJlZW4gcmVzZXJ2ZWQgY2Fu bm90IGJlIGFkdmFuY2VkICovCiAJaWYgKFhMb2dSZWNQdHJJc0ludmFsaWQoTXlSZXBsaWNhdGlv blNsb3QtPmRhdGEucmVzdGFydF9sc24pKQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGlj YXRpb24vd2Fsc2VuZGVyLmMgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5kZXIuYwpp bmRleCAzNzFlZWYzZGRkLi5iMzZhZTkwYjJjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi93YWxzZW5kZXIuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi93YWxzZW5k ZXIuYwpAQCAtODE2LDcgKzgxNiw3IEBAIFN0YXJ0UmVwbGljYXRpb24oU3RhcnRSZXBsaWNhdGlv bkNtZCAqY21kKQogCiAJaWYgKGNtZC0+c2xvdG5hbWUpCiAJewotCQlSZXBsaWNhdGlvblNsb3RB Y3F1aXJlKGNtZC0+c2xvdG5hbWUsIHRydWUpOworCQlSZXBsaWNhdGlvblNsb3RBY3F1aXJlKGNt ZC0+c2xvdG5hbWUsIHRydWUsIHRydWUpOwogCQlpZiAoU2xvdElzTG9naWNhbChNeVJlcGxpY2F0 aW9uU2xvdCkpCiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVD VF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKQEAgLTE0MzQsNyArMTQzNCw3IEBAIFN0YXJ0 TG9naWNhbFJlcGxpY2F0aW9uKFN0YXJ0UmVwbGljYXRpb25DbWQgKmNtZCkKIAogCUFzc2VydCgh TXlSZXBsaWNhdGlvblNsb3QpOwogCi0JUmVwbGljYXRpb25TbG90QWNxdWlyZShjbWQtPnNsb3Ru YW1lLCB0cnVlKTsKKwlSZXBsaWNhdGlvblNsb3RBY3F1aXJlKGNtZC0+c2xvdG5hbWUsIHRydWUs IHRydWUpOwogCiAJLyoKIAkgKiBGb3JjZSBhIGRpc2Nvbm5lY3QsIHNvIHRoYXQgdGhlIGRlY29k aW5nIGNvZGUgZG9lc24ndCBuZWVkIHRvIGNhcmUKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0 aWxzL2FkdC9wZ191cGdyYWRlX3N1cHBvcnQuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9wZ191 cGdyYWRlX3N1cHBvcnQuYwppbmRleCA4YTQ1YjU4MjdlLi5lOGJjOTg2YzA3IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC91dGlscy9hZHQvcGdfdXBncmFkZV9zdXBwb3J0LmMKKysrIGIvc3JjL2Jh Y2tlbmQvdXRpbHMvYWR0L3BnX3VwZ3JhZGVfc3VwcG9ydC5jCkBAIC0yOTgsNyArMjk4LDcgQEAg YmluYXJ5X3VwZ3JhZGVfbG9naWNhbF9zbG90X2hhc19jYXVnaHRfdXAoUEdfRlVOQ1RJT05fQVJH UykKIAlzbG90X25hbWUgPSBQR19HRVRBUkdfTkFNRSgwKTsKIAogCS8qIEFjcXVpcmUgdGhlIGdp dmVuIHNsb3QgKi8KLQlSZXBsaWNhdGlvblNsb3RBY3F1aXJlKE5hbWVTdHIoKnNsb3RfbmFtZSks IHRydWUpOworCVJlcGxpY2F0aW9uU2xvdEFjcXVpcmUoTmFtZVN0cigqc2xvdF9uYW1lKSwgdHJ1 ZSwgdHJ1ZSk7CiAKIAlBc3NlcnQoU2xvdElzTG9naWNhbChNeVJlcGxpY2F0aW9uU2xvdCkpOwog CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9zbG90LmggYi9zcmMvaW5jbHVk ZS9yZXBsaWNhdGlvbi9zbG90LmgKaW5kZXggZDJjZjc4NmZkNS4uZjVmMmQyMjE2MyAxMDA2NDQK LS0tIGEvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xvdC5oCisrKyBiL3NyYy9pbmNsdWRlL3Jl cGxpY2F0aW9uL3Nsb3QuaApAQCAtMjUzLDcgKzI1Myw4IEBAIGV4dGVybiB2b2lkIFJlcGxpY2F0 aW9uU2xvdERyb3BBY3F1aXJlZCh2b2lkKTsKIGV4dGVybiB2b2lkIFJlcGxpY2F0aW9uU2xvdEFs dGVyKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGJvb2wgKmZhaWxvdmVyLAogCQkJCQkJCQkgY29u c3QgYm9vbCAqdHdvX3BoYXNlKTsKIAotZXh0ZXJuIHZvaWQgUmVwbGljYXRpb25TbG90QWNxdWly ZShjb25zdCBjaGFyICpuYW1lLCBib29sIG5vd2FpdCk7CitleHRlcm4gdm9pZCBSZXBsaWNhdGlv blNsb3RBY3F1aXJlKGNvbnN0IGNoYXIgKm5hbWUsIGJvb2wgbm93YWl0LAorCQkJCQkJCQkgICBi b29sIGVycm9yX2lmX2ludmFsaWQpOwogZXh0ZXJuIHZvaWQgUmVwbGljYXRpb25TbG90UmVsZWFz ZSh2b2lkKTsKIGV4dGVybiB2b2lkIFJlcGxpY2F0aW9uU2xvdENsZWFudXAoYm9vbCBzeW5jZWRf b25seSk7CiBleHRlcm4gdm9pZCBSZXBsaWNhdGlvblNsb3RTYXZlKHZvaWQpOwpkaWZmIC0tZ2l0 IGEvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wMTlfcmVwbHNsb3RfbGltaXQucGwgYi9zcmMvdGVzdC9y ZWNvdmVyeS90LzAxOV9yZXBsc2xvdF9saW1pdC5wbAppbmRleCBlZmI0YmEzYWYxLi4zMzNlMDQw ZTdmIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWNvdmVyeS90LzAxOV9yZXBsc2xvdF9saW1pdC5w bAorKysgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzAxOV9yZXBsc2xvdF9saW1pdC5wbApAQCAtMjM0 LDcgKzIzNCw3IEBAIG15ICRmYWlsZWQgPSAwOwogZm9yIChteSAkaSA9IDA7ICRpIDwgMTAgKiAk UG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM6OnRpbWVvdXRfZGVmYXVsdDsgJGkrKykKIHsKIAlpZiAo JG5vZGVfc3RhbmRieS0+bG9nX2NvbnRhaW5zKAotCQkJInJlcXVlc3RlZCBXQUwgc2VnbWVudCBb MC05QS1GXSsgaGFzIGFscmVhZHkgYmVlbiByZW1vdmVkIiwKKwkJCSJUaGlzIHNsb3QgaGFzIGJl ZW4gaW52YWxpZGF0ZWQgYmVjYXVzZSB0aGUgcmVxdWlyZWQgV0FMIGhhcyBiZWVuIHJlbW92ZWQi LAogCQkJJGxvZ3N0YXJ0KSkKIAl7CiAJCSRmYWlsZWQgPSAxOwotLSAKMi4zNC4xCgo= --000000000000813068062a0288fc Content-Type: application/octet-stream; name="v57-0002-Introduce-inactive_timeout-based-replication-slo.patch" Content-Disposition: attachment; filename="v57-0002-Introduce-inactive_timeout-based-replication-slo.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m52did601 RnJvbSAwNGM2ODhhYjQ5MDJiZGFjZjQ1MDNiMDE4MDAxNzJlYjlhNjM4NDY2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOaXNoYSBNb29uZCA8bmlzaGEubW9vbmQ0MTJAZ21haWwuY29t PgpEYXRlOiBNb24sIDIzIERlYyAyMDI0IDE0OjU4OjM0ICswNTMwClN1YmplY3Q6IFtQQVRDSCB2 NTcgMi8yXSBJbnRyb2R1Y2UgaW5hY3RpdmVfdGltZW91dCBiYXNlZCByZXBsaWNhdGlvbiBzbG90 CiBpbnZhbGlkYXRpb24KClRpbGwgbm93LCBwb3N0Z3JlcyBoYXMgdGhlIGFiaWxpdHkgdG8gaW52 YWxpZGF0ZSBpbmFjdGl2ZQpyZXBsaWNhdGlvbiBzbG90cyBiYXNlZCBvbiB0aGUgYW1vdW50IG9m IFdBTCAoc2V0IHZpYQptYXhfc2xvdF93YWxfa2VlcF9zaXplIEdVQykgdGhhdCB3aWxsIGJlIG5l ZWRlZCBmb3IgdGhlIHNsb3RzIGluCmNhc2UgdGhleSBiZWNvbWUgYWN0aXZlLiBIb3dldmVyLCBj aG9vc2luZyBhIGRlZmF1bHQgdmFsdWUgZm9yCnRoaXMgR1VDIGlzIGEgYml0IHRyaWNreS4gQmVj YXVzZSB0aGUgYW1vdW50IG9mIFdBTCBhIGRhdGFiYXNlCmdlbmVyYXRlcywgYW5kIHRoZSBhbGxv Y2F0ZWQgc3RvcmFnZSBwZXIgaW5zdGFuY2Ugd2lsbCB2YXJ5CmdyZWF0bHkgaW4gcHJvZHVjdGlv biwgbWFraW5nIGl0IGRpZmZpY3VsdCB0byBwaW4gZG93biBhCm9uZS1zaXplLWZpdHMtYWxsIHZh bHVlLgoKSXQgaXMgb2Z0ZW4gZWFzeSBmb3IgdXNlcnMgdG8gc2V0IGEgdGltZW91dCBvZiBzYXkg MSBvciAyIG9yIG4KZGF5cywgYWZ0ZXIgd2hpY2ggYWxsIHRoZSBpbmFjdGl2ZSBzbG90cyBnZXQg aW52YWxpZGF0ZWQuIFRoaXMKY29tbWl0IGludHJvZHVjZXMgYSBHVUMgbmFtZWQgaWRsZV9yZXBs aWNhdGlvbl9zbG90X3RpbWVvdXQuCldoZW4gc2V0LCBwb3N0Z3JlcyBpbnZhbGlkYXRlcyBzbG90 cyAoZHVyaW5nIG5vbi1zaHV0ZG93bgpjaGVja3BvaW50cykgdGhhdCBhcmUgaWRsZSBmb3IgbG9u Z2VyIHRoYW4gdGhpcyBhbW91bnQgb2YKdGltZS4KCk5vdGUgdGhhdCB0aGUgaWRsZSB0aW1lb3V0 IGludmFsaWRhdGlvbiBtZWNoYW5pc20gaXMgbm90CmFwcGxpY2FibGUgZm9yIHNsb3RzIG9uIHRo ZSBzdGFuZGJ5IHNlcnZlciB0aGF0IGFyZSBiZWluZyBzeW5jZWQKZnJvbSB0aGUgcHJpbWFyeSBz ZXJ2ZXIgKGkuZS4sIHN0YW5kYnkgc2xvdHMgaGF2aW5nICdzeW5jZWQnIGZpZWxkCid0cnVlJyku IFN5bmNlZCBzbG90cyBhcmUgYWx3YXlzIGNvbnNpZGVyZWQgdG8gYmUgaW5hY3RpdmUgYmVjYXVz ZQp0aGV5IGRvbid0IHBlcmZvcm0gbG9naWNhbCBkZWNvZGluZyB0byBwcm9kdWNlIGNoYW5nZXMu Ci0tLQogZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sICAgICAgICAgICAgICAgICAgICAgIHwgIDM5 ICsrKysKIGRvYy9zcmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwgICAgICAgICB8ICAg NSArCiBkb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwgICAgICAgICAgICAgICAgfCAgMTAg Ky0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2xvdHN5bmMuYyAgICB8ICAgNCAr LQogc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jICAgICAgICAgICAgICAgIHwgMTU4ICsr KysrKysrKysrKystLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3RpbWVzdGFtcC5jICAgICAgICAg ICAgIHwgIDE5ICsrCiBzcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYyAgICAgICAg ICAgfCAgMTIgKysKIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBs ZSB8ICAgMSArCiBzcmMvYmluL3BnX2Jhc2ViYWNrdXAvcGdfY3JlYXRlc3Vic2NyaWJlci5jICAg fCAgIDQgKwogc3JjL2Jpbi9wZ191cGdyYWRlL3NlcnZlci5jICAgICAgICAgICAgICAgICAgIHwg ICA3ICsKIHNyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3QuaCAgICAgICAgICAgICAgICB8ICAy MiArKysKIHNyYy9pbmNsdWRlL3V0aWxzL2d1Y19ob29rcy5oICAgICAgICAgICAgICAgICB8ICAg MiArCiBzcmMvaW5jbHVkZS91dGlscy90aW1lc3RhbXAuaCAgICAgICAgICAgICAgICAgfCAgIDMg Kwogc3JjL3Rlc3QvcmVjb3ZlcnkvbWVzb24uYnVpbGQgICAgICAgICAgICAgICAgIHwgICAxICsK IC4uLi90LzA0M19pbnZhbGlkYXRlX2luYWN0aXZlX3Nsb3RzLnBsICAgICAgICB8IDE4MSArKysr KysrKysrKysrKysrKysKIDE1IGZpbGVzIGNoYW5nZWQsIDQ1MiBpbnNlcnRpb25zKCspLCAxNiBk ZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9yZWNvdmVyeS90LzA0M19p bnZhbGlkYXRlX2luYWN0aXZlX3Nsb3RzLnBsCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL2Nv bmZpZy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCmluZGV4IGZiZGQ2Y2U1NzQuLjg5 NTNjOGZkNGIgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9jb25maWcuc2dtbAorKysgYi9kb2Mv c3JjL3NnbWwvY29uZmlnLnNnbWwKQEAgLTQ1OTMsNiArNDU5Myw0NSBAQCByZXN0b3JlX2NvbW1h bmQgPSAnY29weSAiQzpcXHNlcnZlclxcYXJjaGl2ZWRpclxcJWYiICIlcCInICAjIFdpbmRvd3MK ICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgIDwvdmFybGlzdGVudHJ5PgogCisgICAgIDx2YXJsaXN0 ZW50cnkgaWQ9Imd1Yy1pZGxlLXJlcGxpY2F0aW9uLXNsb3QtdGltZW91dCIgeHJlZmxhYmVsPSJp ZGxlX3JlcGxpY2F0aW9uX3Nsb3RfdGltZW91dCI+CisgICAgICA8dGVybT48dmFybmFtZT5pZGxl X3JlcGxpY2F0aW9uX3Nsb3RfdGltZW91dDwvdmFybmFtZT4gKDx0eXBlPmludGVnZXI8L3R5cGU+ KQorICAgICAgPGluZGV4dGVybT4KKyAgICAgICA8cHJpbWFyeT48dmFybmFtZT5pZGxlX3JlcGxp Y2F0aW9uX3Nsb3RfdGltZW91dDwvdmFybmFtZT4gY29uZmlndXJhdGlvbiBwYXJhbWV0ZXI8L3By aW1hcnk+CisgICAgICA8L2luZGV4dGVybT4KKyAgICAgIDwvdGVybT4KKyAgICAgIDxsaXN0aXRl bT4KKyAgICAgICA8cGFyYT4KKyAgICAgICAgSW52YWxpZGF0ZSByZXBsaWNhdGlvbiBzbG90cyB0 aGF0IGhhdmUgcmVtYWluZWQgaWRsZSBsb25nZXIgdGhhbiB0aGlzCisgICAgICAgIGR1cmF0aW9u LiBJZiB0aGlzIHZhbHVlIGlzIHNwZWNpZmllZCB3aXRob3V0IHVuaXRzLCBpdCBpcyB0YWtlbiBh cworICAgICAgICBtaW51dGVzLiBBIHZhbHVlIG9mIHplcm8gZGlzYWJsZXMgdGhlIGlkbGUgdGlt ZW91dCBpbnZhbGlkYXRpb24gbWVjaGFuaXNtLgorICAgICAgICBUaGUgZGVmYXVsdCBpcyAyNCBo b3Vycy4gVGhpcyBwYXJhbWV0ZXIgY2FuIG9ubHkgYmUgc2V0IGluIHRoZQorICAgICAgICA8Zmls ZW5hbWU+cG9zdGdyZXNxbC5jb25mPC9maWxlbmFtZT4gZmlsZSBvciBvbiB0aGUgc2VydmVyIGNv bW1hbmQgbGluZS4KKyAgICAgICA8L3BhcmE+CisKKyAgICAgICA8cGFyYT4KKyAgICAgICAgU2xv dCBpbnZhbGlkYXRpb24gZHVlIHRvIGlkbGUgdGltZW91dCBvY2N1cnMgZHVyaW5nIGNoZWNrcG9p bnQuCisgICAgICAgIEJlY2F1c2UgY2hlY2twb2ludHMgaGFwcGVuIGF0IDx2YXJuYW1lPmNoZWNr cG9pbnRfdGltZW91dDwvdmFybmFtZT4KKyAgICAgICAgaW50ZXJ2YWxzLCB0aGVyZSBjYW4gYmUg c29tZSBsYWcgYmV0d2VlbiB3aGVuIHRoZQorICAgICAgICA8dmFybmFtZT5pZGxlX3JlcGxpY2F0 aW9uX3Nsb3RfdGltZW91dDwvdmFybmFtZT4gd2FzIGV4Y2VlZGVkIGFuZCB3aGVuCisgICAgICAg IHRoZSBzbG90IGludmFsaWRhdGlvbiBpcyB0cmlnZ2VyZWQgYXQgdGhlIG5leHQgY2hlY2twb2lu dC4KKyAgICAgICAgVG8gYXZvaWQgc3VjaCBsYWdzLCB1c2VycyBjYW4gZm9yY2UgYSBjaGVja3Bv aW50IHRvIHByb21wdGx5IGludmFsaWRhdGUKKyAgICAgICAgaW5hY3RpdmUgc2xvdHMuIFRoZSBk dXJhdGlvbiBvZiBzbG90IGluYWN0aXZpdHkgaXMgY2FsY3VsYXRlZCB1c2luZyB0aGUgc2xvdCdz CisgICAgICAgIDxsaW5rIGxpbmtlbmQ9InZpZXctcGctcmVwbGljYXRpb24tc2xvdHMiPnBnX3Jl cGxpY2F0aW9uX3Nsb3RzPC9saW5rPi48c3RydWN0ZmllbGQ+aW5hY3RpdmVfc2luY2U8L3N0cnVj dGZpZWxkPgorICAgICAgICB2YWx1ZS4KKyAgICAgICA8L3BhcmE+CisKKyAgICAgICA8cGFyYT4K KyAgICAgICAgTm90ZSB0aGF0IHRoZSBpZGxlIHRpbWVvdXQgaW52YWxpZGF0aW9uIG1lY2hhbmlz bSBpcyBub3QKKyAgICAgICAgYXBwbGljYWJsZSBmb3Igc2xvdHMgb24gdGhlIHN0YW5kYnkgc2Vy dmVyIHRoYXQgYXJlIGJlaW5nIHN5bmNlZAorICAgICAgICBmcm9tIHRoZSBwcmltYXJ5IHNlcnZl ciAoaS5lLiwgc3RhbmRieSBzbG90cyBoYXZpbmcKKyAgICAgICAgPGxpbmsgbGlua2VuZD0idmll dy1wZy1yZXBsaWNhdGlvbi1zbG90cyI+cGdfcmVwbGljYXRpb25fc2xvdHM8L2xpbms+LjxzdHJ1 Y3RmaWVsZD5zeW5jZWQ8L3N0cnVjdGZpZWxkPgorICAgICAgICB2YWx1ZSA8bGl0ZXJhbD50cnVl PC9saXRlcmFsPikuCisgICAgICAgIFN5bmNlZCBzbG90cyBhcmUgYWx3YXlzIGNvbnNpZGVyZWQg dG8gYmUgaW5hY3RpdmUgYmVjYXVzZSB0aGV5IGRvbid0CisgICAgICAgIHBlcmZvcm0gbG9naWNh bCBkZWNvZGluZyB0byBwcm9kdWNlIGNoYW5nZXMuCisgICAgICAgPC9wYXJhPgorICAgICAgPC9s aXN0aXRlbT4KKyAgICAgPC92YXJsaXN0ZW50cnk+CisKICAgICAgPHZhcmxpc3RlbnRyeSBpZD0i Z3VjLXRyYWNrLWNvbW1pdC10aW1lc3RhbXAiIHhyZWZsYWJlbD0idHJhY2tfY29tbWl0X3RpbWVz dGFtcCI+CiAgICAgICA8dGVybT48dmFybmFtZT50cmFja19jb21taXRfdGltZXN0YW1wPC92YXJu YW1lPiAoPHR5cGU+Ym9vbGVhbjwvdHlwZT4pCiAgICAgICA8aW5kZXh0ZXJtPgpkaWZmIC0tZ2l0 IGEvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9s b2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKaW5kZXggODI5MGNkMWEwOC4uMTU4ZWMxODIxMSAxMDA2 NDQKLS0tIGEvZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbAorKysgYi9kb2Mv c3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCkBAIC0yMTYzLDYgKzIxNjMsMTEgQEAg Q09OVEVYVDogIHByb2Nlc3NpbmcgcmVtb3RlIGRhdGEgZm9yIHJlcGxpY2F0aW9uIG9yaWdpbiAi cGdfMTYzOTUiIGR1cmluZyAiSU5TRVIKICAgICBwbHVzIHNvbWUgcmVzZXJ2ZSBmb3IgdGFibGUg c3luY2hyb25pemF0aW9uLgogICAgPC9wYXJhPgogCisgICA8cGFyYT4KKyAgICBMb2dpY2FsIHJl cGxpY2F0aW9uIHNsb3RzIGFyZSBhbHNvIGFmZmVjdGVkIGJ5CisgICAgPGxpbmsgbGlua2VuZD0i Z3VjLWlkbGUtcmVwbGljYXRpb24tc2xvdC10aW1lb3V0Ij48dmFybmFtZT5pZGxlX3JlcGxpY2F0 aW9uX3Nsb3RfdGltZW91dDwvdmFybmFtZT48L2xpbms+LgorICAgPC9wYXJhPgorCiAgICA8cGFy YT4KICAgICA8bGluayBsaW5rZW5kPSJndWMtbWF4LXdhbC1zZW5kZXJzIj48dmFybmFtZT5tYXhf d2FsX3NlbmRlcnM8L3Zhcm5hbWU+PC9saW5rPgogICAgIHNob3VsZCBiZSBzZXQgdG8gYXQgbGVh c3QgdGhlIHNhbWUgYXMKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dt bCBiL2RvYy9zcmMvc2dtbC9zeXN0ZW0tdmlld3Muc2dtbAppbmRleCBhNTg2MTU2NjE0Li4xOTlk NzI0OGVlIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvc3lzdGVtLXZpZXdzLnNnbWwKKysrIGIv ZG9jL3NyYy9zZ21sL3N5c3RlbS12aWV3cy5zZ21sCkBAIC0yNTY2LDcgKzI1NjYsOCBAQCBTRUxF Q1QgKiBGUk9NIHBnX2xvY2tzIHBsIExFRlQgSk9JTiBwZ19wcmVwYXJlZF94YWN0cyBwcHgKICAg ICAgIDwvcGFyYT4KICAgICAgIDxwYXJhPgogICAgICAgICBUaGUgdGltZSB3aGVuIHRoZSBzbG90 IGJlY2FtZSBpbmFjdGl2ZS4gPGxpdGVyYWw+TlVMTDwvbGl0ZXJhbD4gaWYgdGhlCi0gICAgICAg IHNsb3QgaXMgY3VycmVudGx5IGJlaW5nIHN0cmVhbWVkLgorICAgICAgICBzbG90IGlzIGN1cnJl bnRseSBiZWluZyBzdHJlYW1lZC4gSWYgdGhlIHNsb3QgYmVjb21lcyBpbnZhbGlkYXRlZCwKKyAg ICAgICAgdGhpcyB2YWx1ZSB3aWxsIHJlbWFpbiB1bmNoYW5nZWQgdW50aWwgc2VydmVyIHNodXRk b3duLgogICAgICAgICBOb3RlIHRoYXQgZm9yIHNsb3RzIG9uIHRoZSBzdGFuZGJ5IHRoYXQgYXJl IGJlaW5nIHN5bmNlZCBmcm9tIGEKICAgICAgICAgcHJpbWFyeSBzZXJ2ZXIgKHdob3NlIDxzdHJ1 Y3RmaWVsZD5zeW5jZWQ8L3N0cnVjdGZpZWxkPiBmaWVsZCBpcwogICAgICAgICA8bGl0ZXJhbD50 cnVlPC9saXRlcmFsPiksIHRoZSA8c3RydWN0ZmllbGQ+aW5hY3RpdmVfc2luY2U8L3N0cnVjdGZp ZWxkPgpAQCAtMjYyMCw2ICsyNjIxLDEzIEBAIFNFTEVDVCAqIEZST00gcGdfbG9ja3MgcGwgTEVG VCBKT0lOIHBnX3ByZXBhcmVkX3hhY3RzIHBweAogICAgICAgICAgIHBlcmZvcm0gbG9naWNhbCBk ZWNvZGluZy4gIEl0IGlzIHNldCBvbmx5IGZvciBsb2dpY2FsIHNsb3RzLgogICAgICAgICAgPC9w YXJhPgogICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICA8 cGFyYT4KKyAgICAgICAgICA8bGl0ZXJhbD5pZGxlX3RpbWVvdXQ8L2xpdGVyYWw+IG1lYW5zIHRo YXQgdGhlIHNsb3QgaGFzIHJlbWFpbmVkCisgICAgICAgICAgaWRsZSBsb25nZXIgdGhhbiB0aGUg Y29uZmlndXJlZAorICAgICAgICAgIDx4cmVmIGxpbmtlbmQ9Imd1Yy1pZGxlLXJlcGxpY2F0aW9u LXNsb3QtdGltZW91dCIvPiBkdXJhdGlvbi4KKyAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9s aXN0aXRlbT4KICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgIDwvcGFyYT48L2VudHJ5Pgog ICAgICA8L3Jvdz4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwv c2xvdHN5bmMuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL2xvZ2ljYWwvc2xvdHN5bmMuYwpp bmRleCBlMzY0NWFlYTUzLi45Nzc3YzZhOWNjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9yZXBs aWNhdGlvbi9sb2dpY2FsL3Nsb3RzeW5jLmMKKysrIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24v bG9naWNhbC9zbG90c3luYy5jCkBAIC0xNTQwLDkgKzE1NDAsNyBAQCB1cGRhdGVfc3luY2VkX3Ns b3RzX2luYWN0aXZlX3NpbmNlKHZvaWQpCiAJCQkvKiBUaGUgc2xvdCBtdXN0IG5vdCBiZSBhY3F1 aXJlZCBieSBhbnkgcHJvY2VzcyAqLwogCQkJQXNzZXJ0KHMtPmFjdGl2ZV9waWQgPT0gMCk7CiAK LQkJCVNwaW5Mb2NrQWNxdWlyZSgmcy0+bXV0ZXgpOwotCQkJcy0+aW5hY3RpdmVfc2luY2UgPSBu b3c7Ci0JCQlTcGluTG9ja1JlbGVhc2UoJnMtPm11dGV4KTsKKwkJCVJlcGxpY2F0aW9uU2xvdFNl dEluYWN0aXZlU2luY2Uocywgbm93LCB0cnVlKTsKIAkJfQogCX0KIApkaWZmIC0tZ2l0IGEvc3Jj L2JhY2tlbmQvcmVwbGljYXRpb24vc2xvdC5jIGIvc3JjL2JhY2tlbmQvcmVwbGljYXRpb24vc2xv dC5jCmluZGV4IDJhOTljMWYwNTMuLjYwMWI3MTgxOWQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3JlcGxpY2F0aW9uL3Nsb3QuYworKysgYi9zcmMvYmFja2VuZC9yZXBsaWNhdGlvbi9zbG90LmMK QEAgLTEwNywxMCArMTA3LDExIEBAIGNvbnN0IGNoYXIgKmNvbnN0IFNsb3RJbnZhbGlkYXRpb25D YXVzZXNbXSA9IHsKIAlbUlNfSU5WQUxfV0FMX1JFTU9WRURdID0gIndhbF9yZW1vdmVkIiwKIAlb UlNfSU5WQUxfSE9SSVpPTl0gPSAicm93c19yZW1vdmVkIiwKIAlbUlNfSU5WQUxfV0FMX0xFVkVM XSA9ICJ3YWxfbGV2ZWxfaW5zdWZmaWNpZW50IiwKKwlbUlNfSU5WQUxfSURMRV9USU1FT1VUXSA9 ICJpZGxlX3RpbWVvdXQiLAogfTsKIAogLyogTWF4aW11bSBudW1iZXIgb2YgaW52YWxpZGF0aW9u IGNhdXNlcyAqLwotI2RlZmluZQlSU19JTlZBTF9NQVhfQ0FVU0VTIFJTX0lOVkFMX1dBTF9MRVZF TAorI2RlZmluZQlSU19JTlZBTF9NQVhfQ0FVU0VTIFJTX0lOVkFMX0lETEVfVElNRU9VVAogCiBT dGF0aWNBc3NlcnREZWNsKGxlbmd0aG9mKFNsb3RJbnZhbGlkYXRpb25DYXVzZXMpID09IChSU19J TlZBTF9NQVhfQ0FVU0VTICsgMSksCiAJCQkJICJhcnJheSBsZW5ndGggbWlzbWF0Y2giKTsKQEAg LTE0MSw2ICsxNDIsMTIgQEAgUmVwbGljYXRpb25TbG90ICpNeVJlcGxpY2F0aW9uU2xvdCA9IE5V TEw7CiBpbnQJCQltYXhfcmVwbGljYXRpb25fc2xvdHMgPSAxMDsgLyogdGhlIG1heGltdW0gbnVt YmVyIG9mIHJlcGxpY2F0aW9uCiAJCQkJCQkJCQkJICogc2xvdHMgKi8KIAorLyoKKyAqIEludmFs aWRhdGUgcmVwbGljYXRpb24gc2xvdHMgdGhhdCBoYXZlIHJlbWFpbmVkIGlkbGUgbG9uZ2VyIHRo YW4gdGhpcworICogZHVyYXRpb247ICcwJyBkaXNhYmxlcyBpdC4KKyAqLworaW50CQkJaWRsZV9y ZXBsaWNhdGlvbl9zbG90X3RpbWVvdXRfbWluID0gSE9VUlNfUEVSX0RBWSAqIE1JTlNfUEVSX0hP VVI7CisKIC8qCiAgKiBUaGlzIEdVQyBsaXN0cyBzdHJlYW1pbmcgcmVwbGljYXRpb24gc3RhbmRi eSBzZXJ2ZXIgc2xvdCBuYW1lcyB0aGF0CiAgKiBsb2dpY2FsIFdBTCBzZW5kZXIgcHJvY2Vzc2Vz IHdpbGwgd2FpdCBmb3IuCkBAIC03MTQsMTYgKzcyMSwxMiBAQCBSZXBsaWNhdGlvblNsb3RSZWxl YXNlKHZvaWQpCiAJCSAqLwogCQlTcGluTG9ja0FjcXVpcmUoJnNsb3QtPm11dGV4KTsKIAkJc2xv dC0+YWN0aXZlX3BpZCA9IDA7Ci0JCXNsb3QtPmluYWN0aXZlX3NpbmNlID0gbm93OworCQlSZXBs aWNhdGlvblNsb3RTZXRJbmFjdGl2ZVNpbmNlKHNsb3QsIG5vdywgZmFsc2UpOwogCQlTcGluTG9j a1JlbGVhc2UoJnNsb3QtPm11dGV4KTsKIAkJQ29uZGl0aW9uVmFyaWFibGVCcm9hZGNhc3QoJnNs b3QtPmFjdGl2ZV9jdik7CiAJfQogCWVsc2UKLQl7Ci0JCVNwaW5Mb2NrQWNxdWlyZSgmc2xvdC0+ bXV0ZXgpOwotCQlzbG90LT5pbmFjdGl2ZV9zaW5jZSA9IG5vdzsKLQkJU3BpbkxvY2tSZWxlYXNl KCZzbG90LT5tdXRleCk7Ci0JfQorCQlSZXBsaWNhdGlvblNsb3RTZXRJbmFjdGl2ZVNpbmNlKHNs b3QsIG5vdywgdHJ1ZSk7CiAKIAlNeVJlcGxpY2F0aW9uU2xvdCA9IE5VTEw7CiAKQEAgLTE1MTks NyArMTUyMiw4IEBAIFJlcG9ydFNsb3RJbnZhbGlkYXRpb24oUmVwbGljYXRpb25TbG90SW52YWxp ZGF0aW9uQ2F1c2UgY2F1c2UsCiAJCQkJCSAgIE5hbWVEYXRhIHNsb3RuYW1lLAogCQkJCQkgICBY TG9nUmVjUHRyIHJlc3RhcnRfbHNuLAogCQkJCQkgICBYTG9nUmVjUHRyIG9sZGVzdExTTiwKLQkJ CQkJICAgVHJhbnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbikKKwkJCQkJICAgVHJh bnNhY3Rpb25JZCBzbmFwc2hvdENvbmZsaWN0SG9yaXpvbiwKKwkJCQkJICAgVGltZXN0YW1wVHog aW5hY3RpdmVfc2luY2UpCiB7CiAJU3RyaW5nSW5mb0RhdGEgZXJyX2RldGFpbDsKIAlib29sCQlo aW50ID0gZmFsc2U7CkBAIC0xNTQ5LDYgKzE1NTMsMTYgQEAgUmVwb3J0U2xvdEludmFsaWRhdGlv bihSZXBsaWNhdGlvblNsb3RJbnZhbGlkYXRpb25DYXVzZSBjYXVzZSwKIAkJY2FzZSBSU19JTlZB TF9XQUxfTEVWRUw6CiAJCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZlcnJfZGV0YWlsLCBfKCJM b2dpY2FsIGRlY29kaW5nIG9uIHN0YW5kYnkgcmVxdWlyZXMgXCJ3YWxfbGV2ZWxcIiA+PSBcImxv Z2ljYWxcIiBvbiB0aGUgcHJpbWFyeSBzZXJ2ZXIuIikpOwogCQkJYnJlYWs7CisKKwkJY2FzZSBS U19JTlZBTF9JRExFX1RJTUVPVVQ6CisJCQlBc3NlcnQoaW5hY3RpdmVfc2luY2UgPiAwKTsKKwkJ CS8qIHRyYW5zbGF0b3I6IHNlY29uZCAlcyBpcyBhIEdVQyB2YXJpYWJsZSBuYW1lICovCisJCQlh cHBlbmRTdHJpbmdJbmZvKCZlcnJfZGV0YWlsLAorCQkJCQkJCSBfKCJUaGUgc2xvdCBoYXMgcmVt YWluZWQgaWRsZSBzaW5jZSAlcywgd2hpY2ggaXMgbG9uZ2VyIHRoYW4gdGhlIGNvbmZpZ3VyZWQg XCIlc1wiIGR1cmF0aW9uLiIpLAorCQkJCQkJCSB0aW1lc3RhbXB0el90b19zdHIoaW5hY3RpdmVf c2luY2UpLAorCQkJCQkJCSAiaWRsZV9yZXBsaWNhdGlvbl9zbG90X3RpbWVvdXQiKTsKKwkJCWJy ZWFrOworCiAJCWNhc2UgUlNfSU5WQUxfTk9ORToKIAkJCXBnX3VucmVhY2hhYmxlKCk7CiAJfQpA QCAtMTU2NSw2ICsxNTc5LDMwIEBAIFJlcG9ydFNsb3RJbnZhbGlkYXRpb24oUmVwbGljYXRpb25T bG90SW52YWxpZGF0aW9uQ2F1c2UgY2F1c2UsCiAJcGZyZWUoZXJyX2RldGFpbC5kYXRhKTsKIH0K IAorLyoKKyAqIENhbiBpbnZhbGlkYXRlIGFuIGlkbGUgcmVwbGljYXRpb24gc2xvdD8KKyAqCisg KiBJZGxlIHRpbWVvdXQgaW52YWxpZGF0aW9uIGlzIGFsbG93ZWQgb25seSB3aGVuOgorICoKKyAq IDEuIElkbGUgdGltZW91dCBpcyBzZXQKKyAqIDIuIFNsb3QgaXMgaW5hY3RpdmUKKyAqIDMuIFRo ZSBzbG90IGlzIG5vdCBiZWluZyBzeW5jZWQgZnJvbSB0aGUgcHJpbWFyeSB3aGlsZSB0aGUgc2Vy dmVyCisgKiAgICBpcyBpbiByZWNvdmVyeQorICoKKyAqIE5vdGUgdGhhdCB0aGUgaWRsZSB0aW1l b3V0IGludmFsaWRhdGlvbiBtZWNoYW5pc20gaXMgbm90CisgKiBhcHBsaWNhYmxlIGZvciBzbG90 cyBvbiB0aGUgc3RhbmRieSBzZXJ2ZXIgdGhhdCBhcmUgYmVpbmcgc3luY2VkCisgKiBmcm9tIHRo ZSBwcmltYXJ5IHNlcnZlciAoaS5lLiwgc3RhbmRieSBzbG90cyBoYXZpbmcgJ3N5bmNlZCcgZmll bGQgJ3RydWUnKS4KKyAqIFN5bmNlZCBzbG90cyBhcmUgYWx3YXlzIGNvbnNpZGVyZWQgdG8gYmUg aW5hY3RpdmUgYmVjYXVzZSB0aGV5IGRvbid0CisgKiBwZXJmb3JtIGxvZ2ljYWwgZGVjb2Rpbmcg dG8gcHJvZHVjZSBjaGFuZ2VzLgorICovCitzdGF0aWMgaW5saW5lIGJvb2wKK0NhbkludmFsaWRh dGVJZGxlU2xvdChSZXBsaWNhdGlvblNsb3QgKnMpCit7CisJcmV0dXJuIChpZGxlX3JlcGxpY2F0 aW9uX3Nsb3RfdGltZW91dF9taW4gPiAwICYmCisJCQlzLT5pbmFjdGl2ZV9zaW5jZSA+IDAgJiYK KwkJCSEoUmVjb3ZlcnlJblByb2dyZXNzKCkgJiYgcy0+ZGF0YS5zeW5jZWQpKTsKK30KKwogLyoK ICAqIEhlbHBlciBmb3IgSW52YWxpZGF0ZU9ic29sZXRlUmVwbGljYXRpb25TbG90cwogICoKQEAg LTE1OTIsNiArMTYzMCw3IEBAIEludmFsaWRhdGVQb3NzaWJseU9ic29sZXRlU2xvdChSZXBsaWNh dGlvblNsb3RJbnZhbGlkYXRpb25DYXVzZSBjYXVzZSwKIAlUcmFuc2FjdGlvbklkIGluaXRpYWxf Y2F0YWxvZ19lZmZlY3RpdmVfeG1pbiA9IEludmFsaWRUcmFuc2FjdGlvbklkOwogCVhMb2dSZWNQ dHIJaW5pdGlhbF9yZXN0YXJ0X2xzbiA9IEludmFsaWRYTG9nUmVjUHRyOwogCVJlcGxpY2F0aW9u U2xvdEludmFsaWRhdGlvbkNhdXNlIGludmFsaWRhdGlvbl9jYXVzZV9wcmV2IFBHX1VTRURfRk9S X0FTU0VSVFNfT05MWSA9IFJTX0lOVkFMX05PTkU7CisJVGltZXN0YW1wVHogaW5hY3RpdmVfc2lu Y2UgPSAwOwogCiAJZm9yICg7OykKIAl7CkBAIC0xNTk5LDYgKzE2MzgsNyBAQCBJbnZhbGlkYXRl UG9zc2libHlPYnNvbGV0ZVNsb3QoUmVwbGljYXRpb25TbG90SW52YWxpZGF0aW9uQ2F1c2UgY2F1 c2UsCiAJCU5hbWVEYXRhCXNsb3RuYW1lOwogCQlpbnQJCQlhY3RpdmVfcGlkID0gMDsKIAkJUmVw bGljYXRpb25TbG90SW52YWxpZGF0aW9uQ2F1c2UgaW52YWxpZGF0aW9uX2NhdXNlID0gUlNfSU5W QUxfTk9ORTsKKwkJVGltZXN0YW1wVHogbm93ID0gMDsKIAogCQlBc3NlcnQoTFdMb2NrSGVsZEJ5 TWVJbk1vZGUoUmVwbGljYXRpb25TbG90Q29udHJvbExvY2ssIExXX1NIQVJFRCkpOwogCkBAIC0x NjA5LDYgKzE2NDksMTUgQEAgSW52YWxpZGF0ZVBvc3NpYmx5T2Jzb2xldGVTbG90KFJlcGxpY2F0 aW9uU2xvdEludmFsaWRhdGlvbkNhdXNlIGNhdXNlLAogCQkJYnJlYWs7CiAJCX0KIAorCQlpZiAo Y2F1c2UgPT0gUlNfSU5WQUxfSURMRV9USU1FT1VUKQorCQl7CisJCQkvKgorCQkJICogV2UgZ2V0 IHRoZSBjdXJyZW50IHRpbWUgYmVmb3JlaGFuZCB0byBhdm9pZCBzeXN0ZW0gY2FsbCB3aGlsZQor CQkJICogaG9sZGluZyB0aGUgc3BpbmxvY2suCisJCQkgKi8KKwkJCW5vdyA9IEdldEN1cnJlbnRU aW1lc3RhbXAoKTsKKwkJfQorCiAJCS8qCiAJCSAqIENoZWNrIGlmIHRoZSBzbG90IG5lZWRzIHRv IGJlIGludmFsaWRhdGVkLiBJZiBpdCBuZWVkcyB0byBiZQogCQkgKiBpbnZhbGlkYXRlZCwgYW5k IGlzIG5vdCBjdXJyZW50bHkgYWNxdWlyZWQsIGFjcXVpcmUgaXQgYW5kIG1hcmsgaXQKQEAgLTE2 NjIsNiArMTcxMSwyMSBAQCBJbnZhbGlkYXRlUG9zc2libHlPYnNvbGV0ZVNsb3QoUmVwbGljYXRp b25TbG90SW52YWxpZGF0aW9uQ2F1c2UgY2F1c2UsCiAJCQkJCWlmIChTbG90SXNMb2dpY2FsKHMp KQogCQkJCQkJaW52YWxpZGF0aW9uX2NhdXNlID0gY2F1c2U7CiAJCQkJCWJyZWFrOworCQkJCWNh c2UgUlNfSU5WQUxfSURMRV9USU1FT1VUOgorCQkJCQlBc3NlcnQobm93ID4gMCk7CisKKwkJCQkJ LyoKKwkJCQkJICogQ2hlY2sgaWYgdGhlIHNsb3QgbmVlZHMgdG8gYmUgaW52YWxpZGF0ZWQgZHVl IHRvCisJCQkJCSAqIGlkbGVfcmVwbGljYXRpb25fc2xvdF90aW1lb3V0IEdVQy4KKwkJCQkJICov CisJCQkJCWlmIChDYW5JbnZhbGlkYXRlSWRsZVNsb3QocykgJiYKKwkJCQkJCVRpbWVzdGFtcERp ZmZlcmVuY2VFeGNlZWRzU2Vjb25kcyhzLT5pbmFjdGl2ZV9zaW5jZSwgbm93LAorCQkJCQkJCQkJ CQkJCQkgIGlkbGVfcmVwbGljYXRpb25fc2xvdF90aW1lb3V0X21pbiAqIFNFQ1NfUEVSX01JTlVU RSkpCisJCQkJCXsKKwkJCQkJCWludmFsaWRhdGlvbl9jYXVzZSA9IGNhdXNlOworCQkJCQkJaW5h Y3RpdmVfc2luY2UgPSBzLT5pbmFjdGl2ZV9zaW5jZTsKKwkJCQkJfQorCQkJCQlicmVhazsKIAkJ CQljYXNlIFJTX0lOVkFMX05PTkU6CiAJCQkJCXBnX3VucmVhY2hhYmxlKCk7CiAJCQl9CkBAIC0x NzQ3LDcgKzE4MTEsOCBAQCBJbnZhbGlkYXRlUG9zc2libHlPYnNvbGV0ZVNsb3QoUmVwbGljYXRp b25TbG90SW52YWxpZGF0aW9uQ2F1c2UgY2F1c2UsCiAJCQl7CiAJCQkJUmVwb3J0U2xvdEludmFs aWRhdGlvbihpbnZhbGlkYXRpb25fY2F1c2UsIHRydWUsIGFjdGl2ZV9waWQsCiAJCQkJCQkJCQkg ICBzbG90bmFtZSwgcmVzdGFydF9sc24sCi0JCQkJCQkJCQkgICBvbGRlc3RMU04sIHNuYXBzaG90 Q29uZmxpY3RIb3Jpem9uKTsKKwkJCQkJCQkJCSAgIG9sZGVzdExTTiwgc25hcHNob3RDb25mbGlj dEhvcml6b24sCisJCQkJCQkJCQkgICBpbmFjdGl2ZV9zaW5jZSk7CiAKIAkJCQlpZiAoTXlCYWNr ZW5kVHlwZSA9PSBCX1NUQVJUVVApCiAJCQkJCSh2b2lkKSBTZW5kUHJvY1NpZ25hbChhY3RpdmVf cGlkLApAQCAtMTc5Myw3ICsxODU4LDggQEAgSW52YWxpZGF0ZVBvc3NpYmx5T2Jzb2xldGVTbG90 KFJlcGxpY2F0aW9uU2xvdEludmFsaWRhdGlvbkNhdXNlIGNhdXNlLAogCiAJCQlSZXBvcnRTbG90 SW52YWxpZGF0aW9uKGludmFsaWRhdGlvbl9jYXVzZSwgZmFsc2UsIGFjdGl2ZV9waWQsCiAJCQkJ CQkJCSAgIHNsb3RuYW1lLCByZXN0YXJ0X2xzbiwKLQkJCQkJCQkJICAgb2xkZXN0TFNOLCBzbmFw c2hvdENvbmZsaWN0SG9yaXpvbik7CisJCQkJCQkJCSAgIG9sZGVzdExTTiwgc25hcHNob3RDb25m bGljdEhvcml6b24sCisJCQkJCQkJCSAgIGluYWN0aXZlX3NpbmNlKTsKIAogCQkJLyogZG9uZSB3 aXRoIHRoaXMgc2xvdCBmb3Igbm93ICovCiAJCQlicmVhazsKQEAgLTE4MTYsNiArMTg4Miw3IEBA IEludmFsaWRhdGVQb3NzaWJseU9ic29sZXRlU2xvdChSZXBsaWNhdGlvblNsb3RJbnZhbGlkYXRp b25DYXVzZSBjYXVzZSwKICAqIC0gUlNfSU5WQUxfSE9SSVpPTjogcmVxdWlyZXMgYSBzbmFwc2hv dCA8PSB0aGUgZ2l2ZW4gaG9yaXpvbiBpbiB0aGUgZ2l2ZW4KICAqICAgZGI7IGRib2lkIG1heSBi ZSBJbnZhbGlkT2lkIGZvciBzaGFyZWQgcmVsYXRpb25zCiAgKiAtIFJTX0lOVkFMX1dBTF9MRVZF TDogaXMgbG9naWNhbAorICogLSBSU19JTlZBTF9JRExFX1RJTUVPVVQ6IGlkbGUgc2xvdCB0aW1l b3V0IGhhcyBvY2N1cnJlZAogICoKICAqIE5CIC0gdGhpcyBydW5zIGFzIHBhcnQgb2YgY2hlY2tw b2ludCwgc28gYXZvaWQgcmFpc2luZyBlcnJvcnMgaWYgcG9zc2libGUuCiAgKi8KQEAgLTE4Njgs NyArMTkzNSw4IEBAIHJlc3RhcnQ6CiB9CiAKIC8qCi0gKiBGbHVzaCBhbGwgcmVwbGljYXRpb24g c2xvdHMgdG8gZGlzay4KKyAqIEZsdXNoIGFsbCByZXBsaWNhdGlvbiBzbG90cyB0byBkaXNrLiBB bHNvLCBpbnZhbGlkYXRlIG9ic29sZXRlIHNsb3RzIGR1cmluZworICogbm9uLXNodXRkb3duIGNo ZWNrcG9pbnQuCiAgKgogICogSXQgaXMgY29udmVuaWVudCB0byBmbHVzaCBkaXJ0eSByZXBsaWNh dGlvbiBzbG90cyBhdCB0aGUgdGltZSBvZiBjaGVja3BvaW50LgogICogQWRkaXRpb25hbGx5LCBp biBjYXNlIG9mIGEgc2h1dGRvd24gY2hlY2twb2ludCwgd2UgYWxzbyBpZGVudGlmeSB0aGUgc2xv dHMKQEAgLTE5MjYsNiArMTk5NCw0NSBAQCBDaGVja1BvaW50UmVwbGljYXRpb25TbG90cyhib29s IGlzX3NodXRkb3duKQogCQlTYXZlU2xvdFRvUGF0aChzLCBwYXRoLCBMT0cpOwogCX0KIAlMV0xv Y2tSZWxlYXNlKFJlcGxpY2F0aW9uU2xvdEFsbG9jYXRpb25Mb2NrKTsKKworCWlmICghaXNfc2h1 dGRvd24pCisJeworCQllbG9nKERFQlVHMSwgInBlcmZvcm1pbmcgcmVwbGljYXRpb24gc2xvdCBp bnZhbGlkYXRpb24gY2hlY2tzIik7CisKKwkJLyoKKwkJICogTkI6IFdlIHdpbGwgbWFrZSBhbm90 aGVyIHBhc3Mgb3ZlciByZXBsaWNhdGlvbiBzbG90cyBmb3IKKwkJICogaW52YWxpZGF0aW9uIGNo ZWNrcyB0byBrZWVwIHRoZSBjb2RlIHNpbXBsZS4gVGVzdGluZyBzaG93cyB0aGF0CisJCSAqIHRo ZXJlIGlzIG5vIG5vdGljZWFibGUgb3ZlcmhlYWQgKHdoZW4gY29tcGFyZWQgd2l0aCB3YWxfcmVt b3ZlZAorCQkgKiBpbnZhbGlkYXRpb24pIGV2ZW4gaWYgd2Ugd2VyZSB0byBkbyBpZGxlX3RpbWVv dXQgaW52YWxpZGF0aW9uIG9mCisJCSAqIHRob3VzYW5kcyBvZiByZXBsaWNhdGlvbiBzbG90cyBo ZXJlLiBJZiBpdCBpcyBldmVyIHByb3ZlbiB0aGF0IHRoaXMKKwkJICogYXNzdW1wdGlvbiBpcyB3 cm9uZywgd2Ugd2lsbCBoYXZlIHRvIHBlcmZvcm0gdGhlIGludmFsaWRhdGlvbgorCQkgKiBjaGVj a3MgaW4gdGhlIGFib3ZlIGZvciBsb29wIHdpdGggdGhlIGZvbGxvd2luZyBjaGFuZ2VzOgorCQkg KgorCQkgKiAtIEFjcXVpcmUgQ29udHJvbExvY2sgbG9jayBvbmNlIGJlZm9yZSB0aGUgbG9vcC4K KwkJICoKKwkJICogLSBDYWxsIEludmFsaWRhdGVQb3NzaWJseU9ic29sZXRlU2xvdCBmb3IgZWFj aCBzbG90LgorCQkgKgorCQkgKiAtIEhhbmRsZSB0aGUgY2FzZXMgaW4gd2hpY2ggQ29udHJvbExv Y2sgZ2V0cyByZWxlYXNlZCBqdXN0IGxpa2UKKwkJICogSW52YWxpZGF0ZU9ic29sZXRlUmVwbGlj YXRpb25TbG90cyBkb2VzLgorCQkgKgorCQkgKiAtIEF2b2lkIHNhdmluZyBzbG90IGluZm8gdG8g ZGlzayB0d28gdGltZXMgZm9yIGVhY2ggaW52YWxpZGF0ZWQKKwkJICogc2xvdC4KKwkJICoKKwkJ ICogWFhYOiBTaG91bGQgd2UgbW92ZSBpZGxlX3RpbWVvdXQgaW52YWxpZGF0aW9uIGNoZWNrIGNs b3NlciB0bworCQkgKiB3YWxfcmVtb3ZlZCBpbiBDcmVhdGVDaGVja1BvaW50IGFuZCBDcmVhdGVS ZXN0YXJ0UG9pbnQ/CisJCSAqCisJCSAqIFhYWDogU2xvdCBpbnZhbGlkYXRpb24gZHVlIHRvICdp ZGxlX3RpbWVvdXQnIGFwcGxpZXMgb25seSB0bworCQkgKiByZWxlYXNlZCBzbG90cywgYW5kIGlz IGJhc2VkIG9uIHRoZSAnaWRsZV9yZXBsaWNhdGlvbl9zbG90X3RpbWVvdXQnCisJCSAqIEdVQy4g QWN0aXZlIHNsb3RzIGN1cnJlbnRseSBpbiB1c2UgZm9yIHJlcGxpY2F0aW9uIGFyZSBleGNsdWRl ZCB0bworCQkgKiBwcmV2ZW50IGFjY2lkZW50YWwgaW52YWxpZGF0aW9uLiBTbG90cyB3aGVyZSBj b21tdW5pY2F0aW9uIGJldHdlZW4KKwkJICogdGhlIHB1Ymxpc2hlciBhbmQgc3Vic2NyaWJlciBp cyBkb3duIGFyZSBhbHNvIGV4Y2x1ZGVkLCBhcyB0aGV5IGFyZQorCQkgKiBtYW5hZ2VkIGJ5IHRo ZSAnd2FsX3NlbmRlcl90aW1lb3V0Jy4KKwkJICovCisJCUludmFsaWRhdGVPYnNvbGV0ZVJlcGxp Y2F0aW9uU2xvdHMoUlNfSU5WQUxfSURMRV9USU1FT1VULAorCQkJCQkJCQkJCSAgIDAsCisJCQkJ CQkJCQkJICAgSW52YWxpZE9pZCwKKwkJCQkJCQkJCQkgICBJbnZhbGlkVHJhbnNhY3Rpb25JZCk7 CisJfQogfQogCiAvKgpAQCAtMjQxNCw3ICsyNTIxLDkgQEAgUmVzdG9yZVNsb3RGcm9tRGlzayhj b25zdCBjaGFyICpuYW1lKQogCQkvKgogCQkgKiBTZXQgdGhlIHRpbWUgc2luY2UgdGhlIHNsb3Qg aGFzIGJlY29tZSBpbmFjdGl2ZSBhZnRlciBsb2FkaW5nIHRoZQogCQkgKiBzbG90IGZyb20gdGhl IGRpc2sgaW50byBtZW1vcnkuIFdob2V2ZXIgYWNxdWlyZXMgdGhlIHNsb3QgaS5lLgotCQkgKiBt YWtlcyB0aGUgc2xvdCBhY3RpdmUgd2lsbCByZXNldCBpdC4KKwkJICogbWFrZXMgdGhlIHNsb3Qg YWN0aXZlIHdpbGwgcmVzZXQgaXQuIEF2b2lkIGNhbGxpbmcKKwkJICogUmVwbGljYXRpb25TbG90 U2V0SW5hY3RpdmVTaW5jZSgpIGhlcmUsIGFzIGl0IHdpbGwgbm90IHNldCB0aGUgdGltZQorCQkg KiBmb3IgaW52YWxpZCBzbG90cy4KIAkJICovCiAJCXNsb3QtPmluYWN0aXZlX3NpbmNlID0gbm93 OwogCkBAIC0yODM2LDYgKzI5NDUsMTIgQEAgUmFpc2VTbG90SW52YWxpZGF0aW9uRXJyb3IoUmVw bGljYXRpb25TbG90ICpzbG90KQogCQkJCQkJCSAid2FsX2xldmVsIik7CiAJCQlicmVhazsKIAor CQljYXNlIFJTX0lOVkFMX0lETEVfVElNRU9VVDoKKwkJCS8qIHRyYW5zbGF0b3I6ICVzIGlzIGEg R1VDIHZhcmlhYmxlIG5hbWUgKi8KKwkJCWFwcGVuZFN0cmluZ0luZm8oJmVycl9kZXRhaWwsIF8o IlRoaXMgc2xvdCBoYXMgYmVlbiBpbnZhbGlkYXRlZCBiZWNhdXNlIGl0IGhhcyByZW1haW5lZCBp ZGxlIGxvbmdlciB0aGFuIHRoZSBjb25maWd1cmVkIFwiJXNcIiBkdXJhdGlvbi4iKSwKKwkJCQkJ CQkgImlkbGVfcmVwbGljYXRpb25fc2xvdF90aW1lb3V0Iik7CisJCQlicmVhazsKKwogCQljYXNl IFJTX0lOVkFMX05PTkU6CiAJCQlwZ191bnJlYWNoYWJsZSgpOwogCX0KQEAgLTI4NDYsMyArMjk2 MSwyMiBAQCBSYWlzZVNsb3RJbnZhbGlkYXRpb25FcnJvcihSZXBsaWNhdGlvblNsb3QgKnNsb3Qp CiAJCQkJICAgTmFtZVN0cihzbG90LT5kYXRhLm5hbWUpKSwKIAkJCWVycmRldGFpbF9pbnRlcm5h bCgiJXMiLCBlcnJfZGV0YWlsLmRhdGEpKTsKIH0KKworLyoKKyAqIEdVQyBjaGVja19ob29rIGZv ciBpZGxlX3JlcGxpY2F0aW9uX3Nsb3RfdGltZW91dAorICoKKyAqIFRoZSBpZGxlX3JlcGxpY2F0 aW9uX3Nsb3RfdGltZW91dCBtdXN0IGJlIGRpc2FibGVkIChzZXQgdG8gMCkKKyAqIGR1cmluZyB0 aGUgYmluYXJ5IHVwZ3JhZGUuCisgKi8KK2Jvb2wKK2NoZWNrX2lkbGVfcmVwbGljYXRpb25fc2xv dF90aW1lb3V0KGludCAqbmV3dmFsLCB2b2lkICoqZXh0cmEsIEd1Y1NvdXJjZSBzb3VyY2UpCit7 CisJaWYgKElzQmluYXJ5VXBncmFkZSAmJiAqbmV3dmFsICE9IDApCisJeworCQlHVUNfY2hlY2tf ZXJyZGV0YWlsKCJUaGUgdmFsdWUgb2YgXCIlc1wiIG11c3QgYmUgc2V0IHRvIDAgZHVyaW5nIGJp bmFyeSB1cGdyYWRlIG1vZGUuIiwKKwkJCQkJCQkiaWRsZV9yZXBsaWNhdGlvbl9zbG90X3RpbWVv dXQiKTsKKwkJcmV0dXJuIGZhbHNlOworCX0KKworCXJldHVybiB0cnVlOworfQpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3RpbWVzdGFtcC5jIGIvc3JjL2JhY2tlbmQvdXRpbHMv YWR0L3RpbWVzdGFtcC5jCmluZGV4IDE4ZDdkOGExMDguLmUxZDk2YjBlMjkgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL3V0aWxzL2FkdC90aW1lc3RhbXAuYworKysgYi9zcmMvYmFja2VuZC91dGls cy9hZHQvdGltZXN0YW1wLmMKQEAgLTE3ODYsNiArMTc4NiwyNSBAQCBUaW1lc3RhbXBEaWZmZXJl bmNlRXhjZWVkcyhUaW1lc3RhbXBUeiBzdGFydF90aW1lLAogCXJldHVybiAoZGlmZiA+PSBtc2Vj ICogSU5UNjRDT05TVCgxMDAwKSk7CiB9CiAKKy8qCisgKiBDaGVjayBpZiB0aGUgZGlmZmVyZW5j ZSBiZXR3ZWVuIHR3byB0aW1lc3RhbXBzIGlzID49IGEgZ2l2ZW4KKyAqIHRocmVzaG9sZCAoZXhw cmVzc2VkIGluIHNlY29uZHMpLgorICovCitib29sCitUaW1lc3RhbXBEaWZmZXJlbmNlRXhjZWVk c1NlY29uZHMoVGltZXN0YW1wVHogc3RhcnRfdGltZSwKKwkJCQkJCQkJICBUaW1lc3RhbXBUeiBz dG9wX3RpbWUsCisJCQkJCQkJCSAgaW50IHRocmVzaG9sZF9zZWMpCit7CisJbG9uZwkJc2VjczsK KwlpbnQJCQl1c2VjczsKKworCS8qIENhbGN1bGF0ZSB0aGUgZGlmZmVyZW5jZSBpbiBzZWNvbmRz ICovCisJVGltZXN0YW1wRGlmZmVyZW5jZShzdGFydF90aW1lLCBzdG9wX3RpbWUsICZzZWNzLCAm dXNlY3MpOworCisJLyogUmV0dXJuIGlmIHRoZSBkaWZmZXJlbmNlIG1lZXRzIG9yIGV4Y2VlZHMg dGhlIHRocmVzaG9sZCAqLworCXJldHVybiAoc2VjcyA+PSB0aHJlc2hvbGRfc2VjKTsKK30KKwog LyoKICAqIENvbnZlcnQgYSB0aW1lX3QgdG8gVGltZXN0YW1wVHouCiAgKgpkaWZmIC0tZ2l0IGEv c3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMgYi9zcmMvYmFja2VuZC91dGlscy9t aXNjL2d1Y190YWJsZXMuYwppbmRleCA4Y2YxYWZiYWQyLi5mZTEzYTJjNjQ2IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYworKysgYi9zcmMvYmFja2VuZC91 dGlscy9taXNjL2d1Y190YWJsZXMuYwpAQCAtMzA0Nyw2ICszMDQ3LDE4IEBAIHN0cnVjdCBjb25m aWdfaW50IENvbmZpZ3VyZU5hbWVzSW50W10gPQogCQlOVUxMLCBOVUxMLCBOVUxMCiAJfSwKIAor CXsKKwkJeyJpZGxlX3JlcGxpY2F0aW9uX3Nsb3RfdGltZW91dCIsIFBHQ19TSUdIVVAsIFJFUExJ Q0FUSU9OX1NFTkRJTkcsCisJCQlnZXR0ZXh0X25vb3AoIlNldHMgdGhlIGR1cmF0aW9uIGEgcmVw bGljYXRpb24gc2xvdCBjYW4gcmVtYWluIGlkbGUgYmVmb3JlICIKKwkJCQkJCSAiaXQgaXMgaW52 YWxpZGF0ZWQuIiksCisJCQlOVUxMLAorCQkJR1VDX1VOSVRfTUlOCisJCX0sCisJCSZpZGxlX3Jl cGxpY2F0aW9uX3Nsb3RfdGltZW91dF9taW4sCisJCUhPVVJTX1BFUl9EQVkgKiBNSU5TX1BFUl9I T1VSLCAwLCBJTlRfTUFYIC8gU0VDU19QRVJfTUlOVVRFLAorCQljaGVja19pZGxlX3JlcGxpY2F0 aW9uX3Nsb3RfdGltZW91dCwgTlVMTCwgTlVMTAorCX0sCisKIAl7CiAJCXsiY29tbWl0X2RlbGF5 IiwgUEdDX1NVU0VULCBXQUxfU0VUVElOR1MsCiAJCQlnZXR0ZXh0X25vb3AoIlNldHMgdGhlIGRl bGF5IGluIG1pY3Jvc2Vjb25kcyBiZXR3ZWVuIHRyYW5zYWN0aW9uIGNvbW1pdCBhbmQgIgpkaWZm IC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlIGIv c3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCmluZGV4IGEyYWM3 NTc1Y2EuLjcyMGM1MGU5NjYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9z dGdyZXNxbC5jb25mLnNhbXBsZQorKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVz cWwuY29uZi5zYW1wbGUKQEAgLTMzNyw2ICszMzcsNyBAQAogI3dhbF9zZW5kZXJfdGltZW91dCA9 IDYwcwkjIGluIG1pbGxpc2Vjb25kczsgMCBkaXNhYmxlcwogI3RyYWNrX2NvbW1pdF90aW1lc3Rh bXAgPSBvZmYJIyBjb2xsZWN0IHRpbWVzdGFtcCBvZiB0cmFuc2FjdGlvbiBjb21taXQKIAkJCQkj IChjaGFuZ2UgcmVxdWlyZXMgcmVzdGFydCkKKyNpZGxlX3JlcGxpY2F0aW9uX3Nsb3RfdGltZW91 dCA9IDFkCSMgaW4gbWludXRlczsgMCBkaXNhYmxlcwogCiAjIC0gUHJpbWFyeSBTZXJ2ZXIgLQog CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2Jhc2ViYWNrdXAvcGdfY3JlYXRlc3Vic2NyaWJlci5j IGIvc3JjL2Jpbi9wZ19iYXNlYmFja3VwL3BnX2NyZWF0ZXN1YnNjcmliZXIuYwppbmRleCBlOTYz NzBhOWVjLi5hOWFjMDBmNDRmIDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX2Jhc2ViYWNrdXAvcGdf Y3JlYXRlc3Vic2NyaWJlci5jCisrKyBiL3NyYy9iaW4vcGdfYmFzZWJhY2t1cC9wZ19jcmVhdGVz dWJzY3JpYmVyLmMKQEAgLTE0MzgsNiArMTQzOCwxMCBAQCBzdGFydF9zdGFuZGJ5X3NlcnZlcihj b25zdCBzdHJ1Y3QgQ3JlYXRlU3Vic2NyaWJlck9wdGlvbnMgKm9wdCwgYm9vbCByZXN0cmljdGVk XwogCWFwcGVuZFBRRXhwQnVmZmVyKHBnX2N0bF9jbWQsICJcIiVzXCIgc3RhcnQgLUQgIiwgcGdf Y3RsX3BhdGgpOwogCWFwcGVuZFNoZWxsU3RyaW5nKHBnX2N0bF9jbWQsIHN1YnNjcmliZXJfZGly KTsKIAlhcHBlbmRQUUV4cEJ1ZmZlcihwZ19jdGxfY21kLCAiIC1zIC1vIFwiLWMgc3luY19yZXBs aWNhdGlvbl9zbG90cz1vZmZcIiIpOworCisJLyogUHJldmVudCB1bmludGVuZGVkIHNsb3QgaW52 YWxpZGF0aW9uICovCisJYXBwZW5kUFFFeHBCdWZmZXIocGdfY3RsX2NtZCwgIiAtbyBcIi1jIGlk bGVfcmVwbGljYXRpb25fc2xvdF90aW1lb3V0PTBcIiIpOworCiAJaWYgKHJlc3RyaWN0ZWRfYWNj ZXNzKQogCXsKIAkJYXBwZW5kUFFFeHBCdWZmZXIocGdfY3RsX2NtZCwgIiAtbyBcIi1wICVzXCIi LCBvcHQtPnN1Yl9wb3J0KTsKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfdXBncmFkZS9zZXJ2ZXIu YyBiL3NyYy9iaW4vcGdfdXBncmFkZS9zZXJ2ZXIuYwppbmRleCA5MWJjYjRkYmM3Li45Mzk0MDgy NWQ1IDEwMDY0NAotLS0gYS9zcmMvYmluL3BnX3VwZ3JhZGUvc2VydmVyLmMKKysrIGIvc3JjL2Jp bi9wZ191cGdyYWRlL3NlcnZlci5jCkBAIC0yNTIsNiArMjUyLDEzIEBAIHN0YXJ0X3Bvc3RtYXN0 ZXIoQ2x1c3RlckluZm8gKmNsdXN0ZXIsIGJvb2wgcmVwb3J0X2FuZF9leGl0X29uX2Vycm9yKQog CWlmIChHRVRfTUFKT1JfVkVSU0lPTihjbHVzdGVyLT5tYWpvcl92ZXJzaW9uKSA+PSAxNzAwKQog CQlhcHBlbmRQUUV4cEJ1ZmZlclN0cigmcGdvcHRpb25zLCAiIC1jIG1heF9zbG90X3dhbF9rZWVw X3NpemU9LTEiKTsKIAorCS8qCisJICogVXNlIGlkbGVfcmVwbGljYXRpb25fc2xvdF90aW1lb3V0 PTAgdG8gcHJldmVudCBzbG90IGludmFsaWRhdGlvbiBkdWUgdG8KKwkgKiBpZGxlX3RpbWVvdXQg YnkgY2hlY2twb2ludGVyIHByb2Nlc3MgZHVyaW5nIHVwZ3JhZGUuCisJICovCisJaWYgKEdFVF9N QUpPUl9WRVJTSU9OKGNsdXN0ZXItPm1ham9yX3ZlcnNpb24pID49IDE4MDApCisJCWFwcGVuZFBR RXhwQnVmZmVyU3RyKCZwZ29wdGlvbnMsICIgLWMgaWRsZV9yZXBsaWNhdGlvbl9zbG90X3RpbWVv dXQ9MCIpOworCiAJLyoKIAkgKiBVc2UgLWIgdG8gZGlzYWJsZSBhdXRvdmFjdXVtIGFuZCBsb2dp Y2FsIHJlcGxpY2F0aW9uIGxhdW5jaGVyCiAJICogKGVmZmVjdGl2ZSBpbiBQRzE3IG9yIGxhdGVy IGZvciB0aGUgbGF0dGVyKS4KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Ns b3QuaCBiL3NyYy9pbmNsdWRlL3JlcGxpY2F0aW9uL3Nsb3QuaAppbmRleCBmNWYyZDIyMTYzLi5i NTQ5NzBmMjJmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9yZXBsaWNhdGlvbi9zbG90LmgKKysr IGIvc3JjL2luY2x1ZGUvcmVwbGljYXRpb24vc2xvdC5oCkBAIC01Niw2ICs1Niw4IEBAIHR5cGVk ZWYgZW51bSBSZXBsaWNhdGlvblNsb3RJbnZhbGlkYXRpb25DYXVzZQogCVJTX0lOVkFMX0hPUkla T04sCiAJLyogd2FsX2xldmVsIGluc3VmZmljaWVudCBmb3Igc2xvdCAqLwogCVJTX0lOVkFMX1dB TF9MRVZFTCwKKwkvKiBpZGxlIHNsb3QgdGltZW91dCBoYXMgb2NjdXJyZWQgKi8KKwlSU19JTlZB TF9JRExFX1RJTUVPVVQsCiB9IFJlcGxpY2F0aW9uU2xvdEludmFsaWRhdGlvbkNhdXNlOwogCiBl eHRlcm4gUEdETExJTVBPUlQgY29uc3QgY2hhciAqY29uc3QgU2xvdEludmFsaWRhdGlvbkNhdXNl c1tdOwpAQCAtMjI4LDYgKzIzMCwyNSBAQCB0eXBlZGVmIHN0cnVjdCBSZXBsaWNhdGlvblNsb3RD dGxEYXRhCiAJUmVwbGljYXRpb25TbG90IHJlcGxpY2F0aW9uX3Nsb3RzWzFdOwogfSBSZXBsaWNh dGlvblNsb3RDdGxEYXRhOwogCisvKgorICogU2V0IHNsb3QncyBpbmFjdGl2ZV9zaW5jZSBwcm9w ZXJ0eSB1bmxlc3MgaXQgd2FzIHByZXZpb3VzbHkgaW52YWxpZGF0ZWQuCisgKi8KK3N0YXRpYyBp bmxpbmUgdm9pZAorUmVwbGljYXRpb25TbG90U2V0SW5hY3RpdmVTaW5jZShSZXBsaWNhdGlvblNs b3QgKnMsIFRpbWVzdGFtcFR6IG5vdywKKwkJCQkJCQkJYm9vbCBhY3F1aXJlX2xvY2spCit7CisJ aWYgKHMtPmRhdGEuaW52YWxpZGF0ZWQgIT0gUlNfSU5WQUxfTk9ORSkKKwkJcmV0dXJuOworCisJ aWYgKGFjcXVpcmVfbG9jaykKKwkJU3BpbkxvY2tBY3F1aXJlKCZzLT5tdXRleCk7CisKKwlzLT5p bmFjdGl2ZV9zaW5jZSA9IG5vdzsKKworCWlmIChhY3F1aXJlX2xvY2spCisJCVNwaW5Mb2NrUmVs ZWFzZSgmcy0+bXV0ZXgpOworfQorCiAvKgogICogUG9pbnRlcnMgdG8gc2hhcmVkIG1lbW9yeQog ICovCkBAIC0yMzcsNiArMjU4LDcgQEAgZXh0ZXJuIFBHRExMSU1QT1JUIFJlcGxpY2F0aW9uU2xv dCAqTXlSZXBsaWNhdGlvblNsb3Q7CiAvKiBHVUNzICovCiBleHRlcm4gUEdETExJTVBPUlQgaW50 IG1heF9yZXBsaWNhdGlvbl9zbG90czsKIGV4dGVybiBQR0RMTElNUE9SVCBjaGFyICpzeW5jaHJv bml6ZWRfc3RhbmRieV9zbG90czsKK2V4dGVybiBQR0RMTElNUE9SVCBpbnQgaWRsZV9yZXBsaWNh dGlvbl9zbG90X3RpbWVvdXRfbWluOwogCiAvKiBzaG1lbSBpbml0aWFsaXphdGlvbiBmdW5jdGlv bnMgKi8KIGV4dGVybiBTaXplIFJlcGxpY2F0aW9uU2xvdHNTaG1lbVNpemUodm9pZCk7CmRpZmYg LS1naXQgYS9zcmMvaW5jbHVkZS91dGlscy9ndWNfaG9va3MuaCBiL3NyYy9pbmNsdWRlL3V0aWxz L2d1Y19ob29rcy5oCmluZGV4IDU4MTNkYmEwYTIuLmQ3YTdkZmZhYjUgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL3V0aWxzL2d1Y19ob29rcy5oCisrKyBiL3NyYy9pbmNsdWRlL3V0aWxzL2d1Y19o b29rcy5oCkBAIC0xNzQsNSArMTc0LDcgQEAgZXh0ZXJuIHZvaWQgYXNzaWduX3dhbF9zeW5jX21l dGhvZChpbnQgbmV3X3dhbF9zeW5jX21ldGhvZCwgdm9pZCAqZXh0cmEpOwogZXh0ZXJuIGJvb2wg Y2hlY2tfc3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHMoY2hhciAqKm5ld3ZhbCwgdm9pZCAqKmV4 dHJhLAogCQkJCQkJCQkJCQkgR3VjU291cmNlIHNvdXJjZSk7CiBleHRlcm4gdm9pZCBhc3NpZ25f c3luY2hyb25pemVkX3N0YW5kYnlfc2xvdHMoY29uc3QgY2hhciAqbmV3dmFsLCB2b2lkICpleHRy YSk7CitleHRlcm4gYm9vbCBjaGVja19pZGxlX3JlcGxpY2F0aW9uX3Nsb3RfdGltZW91dChpbnQg Km5ld3ZhbCwgdm9pZCAqKmV4dHJhLAorCQkJCQkJCQkJCQkJR3VjU291cmNlIHNvdXJjZSk7CiAK ICNlbmRpZgkJCQkJCQkvKiBHVUNfSE9PS1NfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUv dXRpbHMvdGltZXN0YW1wLmggYi9zcmMvaW5jbHVkZS91dGlscy90aW1lc3RhbXAuaAppbmRleCBh NmNlMDNlZDQ2Li43ZjNkMDAwMWVmIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy90aW1l c3RhbXAuaAorKysgYi9zcmMvaW5jbHVkZS91dGlscy90aW1lc3RhbXAuaApAQCAtMTQzLDUgKzE0 Myw4IEBAIGV4dGVybiBpbnQJZGF0ZTJpc295ZWFyKGludCB5ZWFyLCBpbnQgbW9uLCBpbnQgbWRh eSk7CiBleHRlcm4gaW50CWRhdGUyaXNveWVhcmRheShpbnQgeWVhciwgaW50IG1vbiwgaW50IG1k YXkpOwogCiBleHRlcm4gYm9vbCBUaW1lc3RhbXBUaW1lc3RhbXBUelJlcXVpcmVzUmV3cml0ZSh2 b2lkKTsKK2V4dGVybiBib29sIFRpbWVzdGFtcERpZmZlcmVuY2VFeGNlZWRzU2Vjb25kcyhUaW1l c3RhbXBUeiBzdGFydF90aW1lLAorCQkJCQkJCQkJCQkgIFRpbWVzdGFtcFR6IHN0b3BfdGltZSwK KwkJCQkJCQkJCQkJICBpbnQgdGhyZXNob2xkX3NlYyk7CiAKICNlbmRpZgkJCQkJCQkvKiBUSU1F U1RBTVBfSCAqLwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVjb3ZlcnkvbWVzb24uYnVpbGQgYi9z cmMvdGVzdC9yZWNvdmVyeS9tZXNvbi5idWlsZAppbmRleCBiMWViNzdiMWVjLi4zYjhmNDVjOTNl IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWNvdmVyeS9tZXNvbi5idWlsZAorKysgYi9zcmMvdGVz dC9yZWNvdmVyeS9tZXNvbi5idWlsZApAQCAtNTEsNiArNTEsNyBAQCB0ZXN0cyArPSB7CiAgICAg ICAndC8wNDBfc3RhbmRieV9mYWlsb3Zlcl9zbG90c19zeW5jLnBsJywKICAgICAgICd0LzA0MV9j aGVja3BvaW50X2F0X3Byb21vdGUucGwnLAogICAgICAgJ3QvMDQyX2xvd19sZXZlbF9iYWNrdXAu cGwnLAorICAgICAgJ3QvMDQzX2ludmFsaWRhdGVfaW5hY3RpdmVfc2xvdHMucGwnLAogICAgIF0s CiAgIH0sCiB9CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWNvdmVyeS90LzA0M19pbnZhbGlkYXRl X2luYWN0aXZlX3Nsb3RzLnBsIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNDNfaW52YWxpZGF0ZV9p bmFjdGl2ZV9zbG90cy5wbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwLi5m ZDIyN2JmYzY1Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNDNfaW52 YWxpZGF0ZV9pbmFjdGl2ZV9zbG90cy5wbApAQCAtMCwwICsxLDE4MSBAQAorIyBDb3B5cmlnaHQg KGMpIDIwMjQsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKKyMgVGVzdCBm b3IgcmVwbGljYXRpb24gc2xvdHMgaW52YWxpZGF0aW9uCit1c2Ugc3RyaWN0OwordXNlIHdhcm5p bmdzIEZBVEFMID0+ICdhbGwnOworCit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6VXRpbHM7Cit1c2Ug UG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBUZXN0OjpNb3JlOworCisjID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CisjIFRlc3RjYXNlIHN0YXJ0CisjCisjIFRlc3QgaW52YWxpZGF0aW9uIG9m IHN0cmVhbWluZyBzdGFuZGJ5IHNsb3QgYW5kIGxvZ2ljYWwgZmFpbG92ZXIgc2xvdCBvbiB0aGUK KyMgcHJpbWFyeSBkdWUgdG8gaWRsZSB0aW1lb3V0LiBBbHNvLCB0ZXN0IGxvZ2ljYWwgZmFpbG92 ZXIgc2xvdCBzeW5jZWQgdG8KKyMgdGhlIHN0YW5kYnkgZnJvbSB0aGUgcHJpbWFyeSBkb2Vzbid0 IGdldCBpbnZhbGlkYXRlZCBvbiBpdHMgb3duLCBidXQgZ2V0cyB0aGUKKyMgaW52YWxpZGF0ZWQg c3RhdGUgZnJvbSB0aGUgcHJpbWFyeS4KKworIyBJbml0aWFsaXplIHByaW1hcnkKK215ICRwcmlt YXJ5ID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdwcmltYXJ5Jyk7CiskcHJpbWFy eS0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+ICdsb2dpY2FsJyk7CisKKyMgQXZvaWQgdW5wcmVk aWN0YWJpbGl0eQorJHByaW1hcnktPmFwcGVuZF9jb25mKAorCSdwb3N0Z3Jlc3FsLmNvbmYnLCBx cXsKK2NoZWNrcG9pbnRfdGltZW91dCA9IDFoCit9KTsKKyRwcmltYXJ5LT5zdGFydDsKKworIyBU YWtlIGJhY2t1cAorbXkgJGJhY2t1cF9uYW1lID0gJ215X2JhY2t1cCc7CiskcHJpbWFyeS0+YmFj a3VwKCRiYWNrdXBfbmFtZSk7CisKKyMgQ3JlYXRlIHN5bmMgc2xvdCBvbiB0aGUgcHJpbWFyeQor JHByaW1hcnktPnBzcWwoJ3Bvc3RncmVzJywKKwlxe1NFTEVDVCBwZ19jcmVhdGVfbG9naWNhbF9y ZXBsaWNhdGlvbl9zbG90KCdzeW5jX3Nsb3QxJywgJ3Rlc3RfZGVjb2RpbmcnLCBmYWxzZSwgZmFs c2UsIHRydWUpO30KKyk7CisKKyMgQ3JlYXRlIHN0YW5kYnkgc2xvdCBvbiB0aGUgcHJpbWFyeQor JHByaW1hcnktPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcVsKKyAgICBTRUxFQ1QgcGdfY3Jl YXRlX3BoeXNpY2FsX3JlcGxpY2F0aW9uX3Nsb3Qoc2xvdF9uYW1lIDo9ICdzYl9zbG90MScsIGlt bWVkaWF0ZWx5X3Jlc2VydmUgOj0gdHJ1ZSk7CitdKTsKKworIyBDcmVhdGUgc3RhbmRieQorbXkg JHN0YW5kYnkxID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdzdGFuZGJ5MScpOwor JHN0YW5kYnkxLT5pbml0X2Zyb21fYmFja3VwKCRwcmltYXJ5LCAkYmFja3VwX25hbWUsIGhhc19z dHJlYW1pbmcgPT4gMSk7CisKK215ICRjb25uc3RyID0gJHByaW1hcnktPmNvbm5zdHI7Ciskc3Rh bmRieTEtPmFwcGVuZF9jb25mKAorCSdwb3N0Z3Jlc3FsLmNvbmYnLCBxcSgKK2hvdF9zdGFuZGJ5 X2ZlZWRiYWNrID0gb24KK3ByaW1hcnlfc2xvdF9uYW1lID0gJ3NiX3Nsb3QxJworaWRsZV9yZXBs aWNhdGlvbl9zbG90X3RpbWVvdXQgPSAxCitwcmltYXJ5X2Nvbm5pbmZvID0gJyRjb25uc3RyIGRi bmFtZT1wb3N0Z3JlcycKKykpOworJHN0YW5kYnkxLT5zdGFydDsKKworIyBXYWl0IHVudGlsIHRo ZSBzdGFuZGJ5IGhhcyByZXBsYXllZCBlbm91Z2ggZGF0YQorJHByaW1hcnktPndhaXRfZm9yX2Nh dGNodXAoJHN0YW5kYnkxKTsKKworIyBTZXQgdGltZW91dCBHVUMgb24gdGhlIHN0YW5kYnkgdG8g dmVyaWZ5IHRoYXQgdGhlIG5leHQgY2hlY2twb2ludCB3aWxsIG5vdAorIyBpbnZhbGlkYXRlIHN5 bmNlZCBzbG90cy4KK215ICRpZGxlX3RpbWVvdXRfMW1pbiA9IDE7CisKKyMgU3luYyB0aGUgcHJp bWFyeSBzbG90cyB0byB0aGUgc3RhbmRieQorJHN0YW5kYnkxLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywgIlNFTEVDVCBwZ19zeW5jX3JlcGxpY2F0aW9uX3Nsb3RzKCk7Iik7CisKKyMgQ29uZmlybSB0 aGF0IHRoZSBsb2dpY2FsIGZhaWxvdmVyIHNsb3QgaXMgY3JlYXRlZCBvbiB0aGUgc3RhbmRieQor aXMoICRzdGFuZGJ5MS0+c2FmZV9wc3FsKAorCQkncG9zdGdyZXMnLAorCQlxe1NFTEVDVCBjb3Vu dCgqKSA9IDEgRlJPTSBwZ19yZXBsaWNhdGlvbl9zbG90cworCQkgIFdIRVJFIHNsb3RfbmFtZSA9 ICdzeW5jX3Nsb3QxJyBBTkQgc3luY2VkCisJCQlBTkQgTk9UIHRlbXBvcmFyeQorCQkJQU5EIGlu dmFsaWRhdGlvbl9yZWFzb24gSVMgTlVMTDt9CisJKSwKKwkndCcsCisJJ2xvZ2ljYWwgc2xvdCBz eW5jX3Nsb3QxIGlzIHN5bmNlZCB0byBzdGFuZGJ5Jyk7CisKKyMgR2l2ZSBlbm91Z2ggdGltZSBm b3IgaW5hY3RpdmVfc2luY2UgdG8gZXhjZWVkIHRoZSB0aW1lb3V0CitzbGVlcCgkaWRsZV90aW1l b3V0XzFtaW4gKiA2MCArIDEwKTsKKworIyBPbiBzdGFuZGJ5LCBzeW5jZWQgc2xvdHMgYXJlIG5v dCBpbnZhbGlkYXRlZCBieSB0aGUgaWRsZSB0aW1lb3V0CisjIHVudGlsIHRoZSBpbnZhbGlkYXRp b24gc3RhdGUgaXMgcHJvcGFnYXRlZCBmcm9tIHRoZSBwcmltYXJ5LgorJHN0YW5kYnkxLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgIkNIRUNLUE9JTlQiKTsKK2lzKCAkc3RhbmRieTEtPnNhZmVfcHNx bCgKKwkJJ3Bvc3RncmVzJywKKwkJcXtTRUxFQ1QgY291bnQoKikgPSAxIEZST00gcGdfcmVwbGlj YXRpb25fc2xvdHMKKwkJICBXSEVSRSBzbG90X25hbWUgPSAnc3luY19zbG90MScKKwkJCUFORCBp bnZhbGlkYXRpb25fcmVhc29uIElTIE5VTEw7fQorCSksCisJJ3QnLAorCSdjaGVjayB0aGF0IHN5 bmNlZCBzbG90IHN5bmNfc2xvdDEgaGFzIG5vdCBiZWVuIGludmFsaWRhdGVkIG9uIHN0YW5kYnkn KTsKKworbXkgJGxvZ3N0YXJ0ID0gLXMgJHByaW1hcnktPmxvZ2ZpbGU7CisKKyMgU2V0IHRpbWVv dXQgR1VDIHNvIHRoYXQgdGhlIG5leHQgY2hlY2twb2ludCB3aWxsIGludmFsaWRhdGUgaW5hY3Rp dmUgc2xvdHMKKyRwcmltYXJ5LT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXFbCisgICAgQUxU RVIgU1lTVEVNIFNFVCBpZGxlX3JlcGxpY2F0aW9uX3Nsb3RfdGltZW91dCBUTyAnJHtpZGxlX3Rp bWVvdXRfMW1pbn1taW4nOworXSk7CiskcHJpbWFyeS0+cmVsb2FkOworCisjIFdhaXQgZm9yIGxv Z2ljYWwgZmFpbG92ZXIgc2xvdCB0byBiZWNvbWUgaW5hY3RpdmUgb24gdGhlIHByaW1hcnkuIE5v dGUgdGhhdAorIyBub2JvZHkgaGFzIGFjcXVpcmVkIHRoZSBzbG90IHlldCwgc28gaXQgbXVzdCBn ZXQgaW52YWxpZGF0ZWQgZHVlIHRvCisjIGlkbGUgdGltZW91dC4KK3dhaXRfZm9yX3Nsb3RfaW52 YWxpZGF0aW9uKCRwcmltYXJ5LCAnc3luY19zbG90MScsICRsb2dzdGFydCwKKwkkaWRsZV90aW1l b3V0XzFtaW4pOworCisjIFJlLXN5bmMgdGhlIHByaW1hcnkgc2xvdHMgdG8gdGhlIHN0YW5kYnku IE5vdGUgdGhhdCB0aGUgcHJpbWFyeSBzbG90IHdhcworIyBhbHJlYWR5IGludmFsaWRhdGVkIChh Ym92ZSkgZHVlIHRvIGlkbGUgdGltZW91dC4gVGhlIHN0YW5kYnkgbXVzdCBqdXN0CisjIHN5bmMg dGhlIGludmFsaWRhdGVkIHN0YXRlLgorJHN0YW5kYnkxLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg IlNFTEVDVCBwZ19zeW5jX3JlcGxpY2F0aW9uX3Nsb3RzKCk7Iik7CisKK2lzKCAkc3RhbmRieTEt PnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywKKwkJcXtTRUxFQ1QgY291bnQoKikgPSAxIEZST00g cGdfcmVwbGljYXRpb25fc2xvdHMKKwkJICBXSEVSRSBzbG90X25hbWUgPSAnc3luY19zbG90MScK KwkJCUFORCBpbnZhbGlkYXRpb25fcmVhc29uID0gJ2lkbGVfdGltZW91dCc7fQorCSksCisJInQi LAorCSdjaGVjayB0aGF0IGludmFsaWRhdGlvbiBvZiBzeW5jZWQgc2xvdCBzeW5jX3Nsb3QxIGlz IHN5bmNlZCBvbiBzdGFuZGJ5Jyk7CisKKyMgTWFrZSB0aGUgc3RhbmRieSBzbG90IG9uIHRoZSBw cmltYXJ5IGluYWN0aXZlIGFuZCBjaGVjayBmb3IgaW52YWxpZGF0aW9uCiskc3RhbmRieTEtPnN0 b3A7Cit3YWl0X2Zvcl9zbG90X2ludmFsaWRhdGlvbigkcHJpbWFyeSwgJ3NiX3Nsb3QxJywgJGxv Z3N0YXJ0LAorCSRpZGxlX3RpbWVvdXRfMW1pbik7CisKKyMgVGVzdGNhc2UgZW5kCisjID09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CisKKyMgV2FpdCBmb3Igc2xvdCB0byBmaXJzdCBiZWNvbWUgaWRsZSBh bmQgdGhlbiBnZXQgaW52YWxpZGF0ZWQKK3N1YiB3YWl0X2Zvcl9zbG90X2ludmFsaWRhdGlvbgor eworCW15ICgkbm9kZSwgJHNsb3QsICRvZmZzZXQsICRpZGxlX3RpbWVvdXRfbWluKSA9IEBfOwor CW15ICRub2RlX25hbWUgPSAkbm9kZS0+bmFtZTsKKworCXRyaWdnZXJfc2xvdF9pbnZhbGlkYXRp b24oJG5vZGUsICRzbG90LCAkb2Zmc2V0LCAkaWRsZV90aW1lb3V0X21pbik7CisKKwkjIENoZWNr IHRoYXQgYW4gaW52YWxpZGF0ZWQgc2xvdCBjYW5ub3QgYmUgYWNxdWlyZWQKKwlteSAoJHJlc3Vs dCwgJHN0ZG91dCwgJHN0ZGVycik7CisJKCRyZXN1bHQsICRzdGRvdXQsICRzdGRlcnIpID0gJG5v ZGUtPnBzcWwoCisJCSdwb3N0Z3JlcycsIHFxWworCQkJU0VMRUNUIHBnX3JlcGxpY2F0aW9uX3Ns b3RfYWR2YW5jZSgnJHNsb3QnLCAnMC8xJyk7CisJXSk7CisJb2soICRzdGRlcnIgPX4gL2NhbiBu byBsb25nZXIgZ2V0IGNoYW5nZXMgZnJvbSByZXBsaWNhdGlvbiBzbG90ICIkc2xvdCIvLAorCQki ZGV0ZWN0ZWQgZXJyb3IgdXBvbiB0cnlpbmcgdG8gYWNxdWlyZSBpbnZhbGlkYXRlZCBzbG90ICRz bG90IG9uIG5vZGUgJG5vZGVfbmFtZSIKKwkgICkKKwkgIG9yIGRpZQorCSAgImNvdWxkIG5vdCBk ZXRlY3QgZXJyb3IgdXBvbiB0cnlpbmcgdG8gYWNxdWlyZSBpbnZhbGlkYXRlZCBzbG90ICRzbG90 IG9uIG5vZGUgJG5vZGVfbmFtZSI7Cit9CisKKyMgVHJpZ2dlciBzbG90IGludmFsaWRhdGlvbiBh bmQgY29uZmlybSBpdCBpbiB0aGUgc2VydmVyIGxvZworc3ViIHRyaWdnZXJfc2xvdF9pbnZhbGlk YXRpb24KK3sKKwlteSAoJG5vZGUsICRzbG90LCAkb2Zmc2V0LCAkaWRsZV90aW1lb3V0X21pbikg PSBAXzsKKwlteSAkbm9kZV9uYW1lID0gJG5vZGUtPm5hbWU7CisJbXkgJGludmFsaWRhdGVkID0g MDsKKworCSMgR2l2ZSBlbm91Z2ggdGltZSBmb3IgaW5hY3RpdmVfc2luY2UgdG8gZXhjZWVkIHRo ZSB0aW1lb3V0CisJc2xlZXAoJGlkbGVfdGltZW91dF9taW4gKiA2MCArIDEwKTsKKworCSMgUnVu IGEgY2hlY2twb2ludAorCSRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIkNIRUNLUE9JTlQi KTsKKworCSMgVGhlIHNsb3QncyBpbnZhbGlkYXRpb24gc2hvdWxkIGJlIGxvZ2dlZAorCSRub2Rl LT53YWl0X2Zvcl9sb2cocXIvaW52YWxpZGF0aW5nIG9ic29sZXRlIHJlcGxpY2F0aW9uIHNsb3Qg XCIkc2xvdFwiLywKKwkJJG9mZnNldCk7CisKKwkjIENoZWNrIHRoYXQgdGhlIGludmFsaWRhdGlv biByZWFzb24gaXMgJ2lkbGVfdGltZW91dCcKKwkkbm9kZS0+cG9sbF9xdWVyeV91bnRpbCgKKwkJ J3Bvc3RncmVzJywgcXFbCisJCVNFTEVDVCBDT1VOVChzbG90X25hbWUpID0gMSBGUk9NIHBnX3Jl cGxpY2F0aW9uX3Nsb3RzCisJCQlXSEVSRSBzbG90X25hbWUgPSAnJHNsb3QnIEFORAorCQkJaW52 YWxpZGF0aW9uX3JlYXNvbiA9ICdpZGxlX3RpbWVvdXQnOworCV0pCisJICBvciBkaWUKKwkgICJU aW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgaW52YWxpZGF0aW9uIHJlYXNvbiBvZiBzbG90ICRz bG90IHRvIGJlIHNldCBvbiBub2RlICRub2RlX25hbWUiOworfQorCitkb25lX3Rlc3RpbmcoKTsK LS0gCjIuMzQuMQoK --000000000000813068062a0288fc--