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 1vbbIA-008bxx-0U for pgsql-hackers@arkaria.postgresql.org; Fri, 02 Jan 2026 09:17:55 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vbbI8-009l6R-2L for pgsql-hackers@arkaria.postgresql.org; Fri, 02 Jan 2026 09:17:53 +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 1vbbI7-009l6J-2l for pgsql-hackers@lists.postgresql.org; Fri, 02 Jan 2026 09:17:53 +0000 Received: from mail-ed1-x533.google.com ([2a00:1450:4864:20::533]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1vbbI6-003n2k-1E for pgsql-hackers@lists.postgresql.org; Fri, 02 Jan 2026 09:17:51 +0000 Received: by mail-ed1-x533.google.com with SMTP id 4fb4d7f45d1cf-64d1ef53cf3so12179758a12.0 for ; Fri, 02 Jan 2026 01:17:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1767345467; x=1767950267; 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=4Ywsk8Avv5tEgVUwxPNdrQ8kdfamXCVnM7lTipNblmk=; b=fSOkPMs/dwbhqS/mcpHHtg/gdnUXmYnNECCY9xoepwV6ocjmgjWvLLM0uHo35/Yy+w m0+hzSowFtNm+KJs4jatm01GZXVbYwEPBaqovqo9QJBMx0W3SkcbrOFyM+CbgA1UzjHE zxKy2QP0HyPrRlqK+5gIGBDBDlKFlLnvljAIXsGIHRw2TGBOL/M9nEZSH86Z25/i9bxu lnLuM/6FImGRvA9tNaxgdIN1RCSCgCaD/KOM0s5H9aPpukBY1zTdVIunxos8Ln8gDzme jbXt/OD2bGRrn0dqA6f/iKGCowMFhLu2QzryY710+QLPLWaQCmOCgAghep57xdcqK9Hb xdPg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767345467; x=1767950267; 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=4Ywsk8Avv5tEgVUwxPNdrQ8kdfamXCVnM7lTipNblmk=; b=Bm0HyUcgoaM9ZGEqqHbJgsmPJ5S1osScuSU0wvOl4OYK4u8HeMqGmzm1/Y0Dd5hy9I hTS4WlsKINRwMZs/vGGRciW6vqwQgUwM1P2oXE26/ly3bN8bOGiqv3Jb5oD/AQM5wEcC 4ca+MEdUG5bIhgZYRyOm4P9OyhZMJLT0EQiDNBryVCs+LKOlnLferMO2Cq+ltseuP2NT qVPcgNQOvrVl6WXLtSLPCDKB+qwrk+JYT1t7NmMNoDDb6GUnXXJnNbrPeFm5MuV2KCNp RGSRQpJppllbVhd6TZZbkmkJUsTaxC0ze4gMh+9KzcWJIUjQkW7XUpvQ2QQwvw6hwWZA ++7w== X-Forwarded-Encrypted: i=1; AJvYcCXmQznZKCZl99bfwRnernYNiOsLuBSryDhN6KFzrxY64p5JSKzXcWEMh0VWjvhmC+dchUPBuXkUIZgwDdRA@lists.postgresql.org X-Gm-Message-State: AOJu0Yx3KsQ9uh8v98DF2AgrhKi58qvrAYhqzT9ZVB6peKXJr9Hy3gJf u8HV3bV12TWNXlALkuYClAXmdThmQIHVsAl8UHA8CYyiJup+m0Q3Z/Mg/TUKRe7QgPpEulSsg78 T9MvR4TPq75/LxZootSOPRA4lAKXWCR4= X-Gm-Gg: AY/fxX7hY4wQoEeRZk0mi/s4OZHBubTkrpiuhjUGieCcGJaz98G7qcbyljLlqgBUtKR EKJWxGkbOaRn6ljlWEXTnx6QNDL4xzOTUIJ9MB8hM9lle7aKDRWiquLuwlwhJ5ED0t2PnsUd/Tz g9D6+7ZW8omzwAynGPMSyWK+SRtb62EdJVYfEokIqmLVMqoAmB8UWZICZutBX8gLC++rqcTMLhz A/pGMrJQrxXJU8FunJdM4pe2BmXVJ8rtdvvQWvPhYM3qVVpF8mYtF0Inh8BF0BVVXeoin3RmKbM XwudhrlzHSjglRMrWLMvHymJjyJgvZ+wRyaK0ECamsUIG+X7auMUTC1DhgUojot49lMy/TPun7+ n2SLU X-Google-Smtp-Source: AGHT+IHVpAGlyW5Snu5KKBNvLZuPUsK+ZvZy3I0Y6ZiQRHPqBPSPL4bGtKR7oX7qRFdprplsQd5HO1IAZWyizWwTVRw= X-Received: by 2002:a05:6402:13cc:b0:64d:1762:9bb2 with SMTP id 4fb4d7f45d1cf-64d1762a6bfmr34528020a12.11.1767345467243; Fri, 02 Jan 2026 01:17:47 -0800 (PST) MIME-Version: 1.0 References: <202601011659.ikh4ku4p3ovb@alvherre.pgsql> In-Reply-To: From: Xuneng Zhou Date: Fri, 2 Jan 2026 17:17:34 +0800 X-Gm-Features: AQt7F2oZat4ViIf87AsBHGeMySmTsfZbFhkLhNUDGXCkFLfgKGITwkVuoOGUISw Message-ID: Subject: Re: Implement waiting for wal lsn replay: reloaded To: Alexander Korotkov , =?UTF-8?Q?=C3=81lvaro_Herrera?= Cc: Chao Li , pgsql-hackers , Andres Freund , Michael Paquier , jian he , Tomas Vondra , Yura Sokolov Content-Type: multipart/mixed; boundary="000000000000c5b88c0647642e91" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000c5b88c0647642e91 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi Alvaro, Alexander, On Fri, Jan 2, 2026 at 7:42=E2=80=AFAM Alexander Korotkov wrote: > > On Thu, Jan 1, 2026 at 7:16=E2=80=AFPM =C3=81lvaro Herrera wrote: > > In 0002 you have this kind of thing: > > > > > ereport(ERROR, > > > errcode(ERRCODE_QUERY_C= ANCELED), > > > - errmsg("timed out while= waiting for target LSN %X/%08X to be replayed; current replay LSN %X/%08X"= , > > > + errmsg("timed out while= waiting for target LSN %X/%08X to be %s; current %s LSN %X/%08X", > > > LSN_FORMAT_A= RGS(lsn), > > > - LSN_FORMAT_A= RGS(GetXLogReplayRecPtr(NULL)))); > > > + desc->verb, > > > + desc->noun, > > > + LSN_FORMAT_A= RGS(currentLSN))); > > > + } > > > > > > I'm afraid this technique doesn't work, for translatability reasons. > > Your whole design of having a struct with ->verb and ->noun is not > > workable (which is a pity, but you can't really fight this.) You need t= o > > spell out the whole messages for each case, something like > > > > if (lsntype =3D=3D replay) > > ereport(ERROR, > > errcode(ERRCODE_QUERY_CANCELED), > > errmsg("timed out while waiting for target LSN %X/%08X to be= replayed; current standby_replay LSN %X/%08X", > > else if (lsntype =3D=3D flush) > > ereport( ... ) > > > > and so on. This means four separate messages for translation for each > > message your patch is adding, which is IMO the correct approach. > > +1 > Thank you for catching this, Alvaro. Yes, I think we need to get rid > of WaitLSNTypeDesc. It's nice idea, but we support too many languages > to have something like this. > Thanks for pointing this out. This approach doesn=E2=80=99t scale to multip= le languages. While switch statements are more verbose, the extra clarity is justified to preserve proper internationalization. Please check the updated v12. --=20 Best, Xuneng --000000000000c5b88c0647642e91 Content-Type: application/octet-stream; name="v12-0003-Add-tab-completion-for-WAIT-FOR-LSN-MODE-option.patch" Content-Disposition: attachment; filename="v12-0003-Add-tab-completion-for-WAIT-FOR-LSN-MODE-option.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjwnrv802 RnJvbSBmYTVjYjU5YjA5Y2JhZmY0M2ZmZDhiM2MzZDBiOThlYmY2NzFiZWJjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbHRlcmVnbzY1NSA8ODI0NjYyNTI2QHFxLmNvbT4KRGF0ZTog VHVlLCAxNiBEZWMgMjAyNSAxMTowMDoyNSArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjEyIDMvNF0g QWRkIHRhYiBjb21wbGV0aW9uIGZvciBXQUlUIEZPUiBMU04gTU9ERSBvcHRpb24KClVwZGF0ZSBw c3FsIHRhYiBjb21wbGV0aW9uIHRvIHN1cHBvcnQgdGhlIG9wdGlvbmFsIE1PREUgb3B0aW9uIGlu CldBSVQgRk9SIExTTiBjb21tYW5kLiBBZnRlciBzcGVjaWZ5aW5nIGFuIExTTiB2YWx1ZSwgY29t cGxldGlvbiBub3cKb2ZmZXJzIGJvdGggTU9ERSBhbmQgV0lUSCBrZXl3b3Jkcy4gVGhlIE1PREUg b3B0aW9uIGNvbnRyb2xzIHdoZXRoZXIKdGhlIHdhaXQgaXMgZXZhbHVhdGVkIGZyb20gdGhlIHN0 YW5kYnkgb3IgcHJpbWFyeSBwZXJzcGVjdGl2ZS4KCldoZW4gTU9ERSBpcyBzcGVjaWZpZWQsIGNv bXBsZXRpb24gc3VnZ2VzdHMgdGhlIHZhbGlkIG1vZGUgdmFsdWVzOgpzdGFuZGJ5X3JlcGxheSwg c3RhbmRieV93cml0ZSwgc3RhbmRieV9mbHVzaCwgYW5kIHByaW1hcnlfZmx1c2guCi0tLQogc3Jj L2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jIHwgMjggKysrKysrKysrKysrKysrKystLS0tLS0t LS0tLQogMSBmaWxlIGNoYW5nZWQsIDE3IGluc2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQoK ZGlmZiAtLWdpdCBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYyBiL3NyYy9iaW4vcHNx bC90YWItY29tcGxldGUuaW4uYwppbmRleCA3NWExMDFjNmFiNS4uNjJkODc1NjExNjkgMTAwNjQ0 Ci0tLSBhL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYworKysgYi9zcmMvYmluL3BzcWwv dGFiLWNvbXBsZXRlLmluLmMKQEAgLTUzNTUsOCArNTM1NSwxMCBAQCBtYXRjaF9wcmV2aW91c193 b3JkcyhpbnQgcGF0dGVybl9pZCwKIC8qCiAgKiBXQUlUIEZPUiBMU04gJzxsc24+JyBbIFdJVEgg KCBvcHRpb24gWywgLi4uXSApIF0KICAqIHdoZXJlIG9wdGlvbiBjYW4gYmU6CisgKiAgIE1PREUg Jzxtb2RlPicKICAqICAgVElNRU9VVCAnPHRpbWVvdXQ+JwogICogICBOT19USFJPVworICogYW5k IG1vZGUgY2FuIGJlOiBzdGFuZGJ5X3JlcGxheSB8IHN0YW5kYnlfd3JpdGUgfCBzdGFuZGJ5X2Zs dXNoIHwgcHJpbWFyeV9mbHVzaAogICovCiAJZWxzZSBpZiAoTWF0Y2hlcygiV0FJVCIpKQogCQlD T01QTEVURV9XSVRIKCJGT1IiKTsKQEAgLTUzNjksMjEgKzUzNzEsMjUgQEAgbWF0Y2hfcHJldmlv dXNfd29yZHMoaW50IHBhdHRlcm5faWQsCiAJCUNPTVBMRVRFX1dJVEgoIldJVEgiKTsKIAllbHNl IGlmIChNYXRjaGVzKCJXQUlUIiwgIkZPUiIsICJMU04iLCBNYXRjaEFueSwgIldJVEgiKSkKIAkJ Q09NUExFVEVfV0lUSCgiKCIpOworCisJLyoKKwkgKiBIYW5kbGUgcGFyZW50aGVzaXplZCBvcHRp b24gbGlzdC4gIFRoaXMgZmlyZXMgd2hlbiB3ZSdyZSBpbiBhbgorCSAqIHVuZmluaXNoZWQgcGFy ZW50aGVzaXplZCBvcHRpb24gbGlzdC4gIGdldF9wcmV2aW91c193b3JkcyB0cmVhdHMgYQorCSAq IGNvbXBsZXRlZCBwYXJlbnRoZXNpemVkIG9wdGlvbiBsaXN0IGFzIG9uZSB3b3JkLCBzbyB0aGUg YWJvdmUgdGVzdCBpcworCSAqIGNvcnJlY3QuCisJICoKKwkgKiAnbW9kZScgdGFrZXMgYSBzdHJp bmcgdmFsdWUgKCdzdGFuZGJ5X3JlcGxheScsICdzdGFuZGJ5X3dyaXRlJywKKwkgKiAnc3RhbmRi eV9mbHVzaCcsICdwcmltYXJ5X2ZsdXNoJykuICd0aW1lb3V0JyB0YWtlcyBhIHN0cmluZyB2YWx1 ZSwgYW5kCisJICogJ25vX3Rocm93JyB0YWtlcyBubyB2YWx1ZS4gV2UgZG8gbm90IG9mZmVyIGNv bXBsZXRpb25zIGZvciB0aGUgKnZhbHVlcyoKKwkgKiBvZiAndGltZW91dCcgb3IgJ25vX3Rocm93 Jy4KKwkgKi8KIAllbHNlIGlmIChIZWFkTWF0Y2hlcygiV0FJVCIsICJGT1IiLCAiTFNOIiwgTWF0 Y2hBbnksICJXSVRIIiwgIigqIikgJiYKIAkJCSAhSGVhZE1hdGNoZXMoIldBSVQiLCAiRk9SIiwg IkxTTiIsIE1hdGNoQW55LCAiV0lUSCIsICIoKikiKSkKIAl7Ci0JCS8qCi0JCSAqIFRoaXMgZmly ZXMgaWYgd2UncmUgaW4gYW4gdW5maW5pc2hlZCBwYXJlbnRoZXNpemVkIG9wdGlvbiBsaXN0Lgot CQkgKiBnZXRfcHJldmlvdXNfd29yZHMgdHJlYXRzIGEgY29tcGxldGVkIHBhcmVudGhlc2l6ZWQg b3B0aW9uIGxpc3QgYXMKLQkJICogb25lIHdvcmQsIHNvIHRoZSBhYm92ZSB0ZXN0IGlzIGNvcnJl Y3QuCi0JCSAqLwogCQlpZiAoZW5kc193aXRoKHByZXZfd2QsICcoJykgfHwgZW5kc193aXRoKHBy ZXZfd2QsICcsJykpCi0JCQlDT01QTEVURV9XSVRIKCJ0aW1lb3V0IiwgIm5vX3Rocm93Iik7Ci0K LQkJLyoKLQkJICogdGltZW91dCB0YWtlcyBhIHN0cmluZyB2YWx1ZSwgbm9fdGhyb3cgdGFrZXMg bm8gdmFsdWUuIFdlIGRvbid0Ci0JCSAqIG9mZmVyIGNvbXBsZXRpb25zIGZvciB0aGVzZSB2YWx1 ZXMuCi0JCSAqLworCQkJQ09NUExFVEVfV0lUSCgibW9kZSIsICJ0aW1lb3V0IiwgIm5vX3Rocm93 Iik7CisJCWVsc2UgaWYgKFRhaWxNYXRjaGVzKCJtb2RlIikpCisJCQlDT01QTEVURV9XSVRIKCIn c3RhbmRieV9yZXBsYXknIiwgIidzdGFuZGJ5X3dyaXRlJyIsICInc3RhbmRieV9mbHVzaCciLCAi J3ByaW1hcnlfZmx1c2gnIik7CiAJfQogCiAvKiBXSVRIIFtSRUNVUlNJVkVdICovCi0tIAoyLjUx LjAKCg== --000000000000c5b88c0647642e91 Content-Type: application/octet-stream; name="v12-0001-Extend-xlogwait-infrastructure-with-write-and-fl.patch" Content-Disposition: attachment; filename="v12-0001-Extend-xlogwait-infrastructure-with-write-and-fl.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjwnrv7t0 RnJvbSA2Njg5NTZkMGQwNzk0YzQ4OTE2NzkxMmQ1NGQ0YzljN2JiMjM3NzU0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbHRlcmVnbzY1NSA8ODI0NjYyNTI2QHFxLmNvbT4KRGF0ZTog VHVlLCAxNiBEZWMgMjAyNSAxMDoyMTozNiArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjEyIDEvNF0g RXh0ZW5kIHhsb2d3YWl0IGluZnJhc3RydWN0dXJlIHdpdGggd3JpdGUgYW5kIGZsdXNoCiB3YWl0 IHR5cGVzCgpBZGQgc3VwcG9ydCBmb3Igd2FpdGluZyBvbiBXQUwgd3JpdGUgYW5kIGZsdXNoIExT TnMgaW4gYWRkaXRpb24gdG8gdGhlCmV4aXN0aW5nIHJlcGxheSBMU04gd2FpdCB0eXBlLiBUaGlz IHByb3ZpZGVzIHRoZSBmb3VuZGF0aW9uIGZvcgpleHRlbmRpbmcgdGhlIFdBSVQgRk9SIGNvbW1h bmQgd2l0aCBNT0RFIHBhcmFtZXRlci4KCktleSBjaGFuZ2VzOgotIEFkZCBXQUlUX0xTTl9UWVBF X1NUQU5EQllfV1JJVEUgYW5kIFdBSVRfTFNOX1RZUEVfU1RBTkRCWV9GTFVTSCB0byBXYWl0TFNO VHlwZQotIEFkZCBHZXRDdXJyZW50TFNORm9yV2FpdFR5cGUoKSB0byByZXRyaWV2ZSBjdXJyZW50 IExTTiBmb3IgZWFjaCB3YWl0IHR5cGUKLSBBZGQgbmV3IHdhaXQgZXZlbnRzIFdBSVRfRVZFTlRf V0FJVF9GT1JfV0FMX1dSSVRFIGFuZAogIFdBSVRfRVZFTlRfV0FJVF9GT1JfV0FMX0ZMVVNIIGZv ciBwZ19zdGF0X2FjdGl2aXR5IHZpc2liaWxpdHkKLSBVcGRhdGUgV2FpdEZvckxTTigpIHRvIHVz ZSBHZXRDdXJyZW50TFNORm9yV2FpdFR5cGUoKSBpbnRlcm5hbGx5Ci0tLQogc3JjL2JhY2tlbmQv YWNjZXNzL3RyYW5zYW0veGxvZy5jICAgICAgICAgICAgIHwgIDIgKy0KIHNyYy9iYWNrZW5kL2Fj Y2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVyeS5jICAgICB8ICA0ICstCiBzcmMvYmFja2VuZC9hY2Nl c3MvdHJhbnNhbS94bG9nd2FpdC5jICAgICAgICAgfCA5NiArKysrKysrKysrKysrKystLS0tCiBz cmMvYmFja2VuZC9jb21tYW5kcy93YWl0LmMgICAgICAgICAgICAgICAgICAgfCAgMiArLQogLi4u L3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnRfbmFtZXMudHh0ICAgICAgIHwgIDMgKy0KIHNyYy9p bmNsdWRlL2FjY2Vzcy94bG9nd2FpdC5oICAgICAgICAgICAgICAgICB8IDE0ICsrLQogNiBmaWxl cyBjaGFuZ2VkLCA5MyBpbnNlcnRpb25zKCspLCAyOCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3Mv dHJhbnNhbS94bG9nLmMKaW5kZXggMWI3ZWY1ODlmYzAuLmZkYjkyZGVhYzU3IDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvYWNj ZXNzL3RyYW5zYW0veGxvZy5jCkBAIC02MjgwLDcgKzYyODAsNyBAQCBTdGFydHVwWExPRyh2b2lk KQogCSAqIFdha2UgdXAgYWxsIHdhaXRlcnMgZm9yIHJlcGxheSBMU04uICBUaGV5IG5lZWQgdG8g cmVwb3J0IGFuIGVycm9yIHRoYXQKIAkgKiByZWNvdmVyeSB3YXMgZW5kZWQgYmVmb3JlIHJlYWNo aW5nIHRoZSB0YXJnZXQgTFNOLgogCSAqLwotCVdhaXRMU05XYWtldXAoV0FJVF9MU05fVFlQRV9S RVBMQVksIEludmFsaWRYTG9nUmVjUHRyKTsKKwlXYWl0TFNOV2FrZXVwKFdBSVRfTFNOX1RZUEVf U1RBTkRCWV9SRVBMQVksIEludmFsaWRYTG9nUmVjUHRyKTsKIAogCS8qCiAJICogU2h1dGRvd24g dGhlIHJlY292ZXJ5IGVudmlyb25tZW50LiAgVGhpcyBtdXN0IG9jY3VyIGFmdGVyCmRpZmYgLS1n aXQgYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9ncmVjb3ZlcnkuYyBiL3NyYy9iYWNr ZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2dyZWNvdmVyeS5jCmluZGV4IDM4YjU5NGQyMTcwLi4yZDgx YmIxYTlhNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3JlY292 ZXJ5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3JlY292ZXJ5LmMKQEAg LTE4NTYsOCArMTg1Niw4IEBAIFBlcmZvcm1XYWxSZWNvdmVyeSh2b2lkKQogCQkJICovCiAJCQlp ZiAod2FpdExTTlN0YXRlICYmCiAJCQkJKFhMb2dSZWNvdmVyeUN0bC0+bGFzdFJlcGxheWVkRW5k UmVjUHRyID49Ci0JCQkJIHBnX2F0b21pY19yZWFkX3U2NCgmd2FpdExTTlN0YXRlLT5taW5XYWl0 ZWRMU05bV0FJVF9MU05fVFlQRV9SRVBMQVldKSkpCi0JCQkJV2FpdExTTldha2V1cChXQUlUX0xT Tl9UWVBFX1JFUExBWSwgWExvZ1JlY292ZXJ5Q3RsLT5sYXN0UmVwbGF5ZWRFbmRSZWNQdHIpOwor CQkJCSBwZ19hdG9taWNfcmVhZF91NjQoJndhaXRMU05TdGF0ZS0+bWluV2FpdGVkTFNOW1dBSVRf TFNOX1RZUEVfU1RBTkRCWV9SRVBMQVldKSkpCisJCQkJV2FpdExTTldha2V1cChXQUlUX0xTTl9U WVBFX1NUQU5EQllfUkVQTEFZLCBYTG9nUmVjb3ZlcnlDdGwtPmxhc3RSZXBsYXllZEVuZFJlY1B0 cik7CiAKIAkJCS8qIEVsc2UsIHRyeSB0byBmZXRjaCB0aGUgbmV4dCBXQUwgcmVjb3JkICovCiAJ CQlyZWNvcmQgPSBSZWFkUmVjb3JkKHhsb2dwcmVmZXRjaGVyLCBMT0csIGZhbHNlLCByZXBsYXlU TEkpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvYWNjZXNzL3RyYW5zYW0veGxvZ3dhaXQuYyBi L3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2d3YWl0LmMKaW5kZXggNjEwOTM4MWMwZjAu LjVmNGZmNTBjZjM4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9n d2FpdC5jCisrKyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2d3YWl0LmMKQEAgLTEy LDI1ICsxMiwzMCBAQAogICoJCVRoaXMgZmlsZSBpbXBsZW1lbnRzIHdhaXRpbmcgZm9yIFdBTCBv cGVyYXRpb25zIHRvIHJlYWNoIHNwZWNpZmljIExTTnMKICAqCQlvbiBib3RoIHBoeXNpY2FsIHN0 YW5kYnkgYW5kIHByaW1hcnkgc2VydmVycy4gVGhlIGNvcmUgaWRlYSBpcyBzaW1wbGU6CiAgKgkJ ZXZlcnkgcHJvY2VzcyB0aGF0IHdhbnRzIHRvIHdhaXQgcHVibGlzaGVzIHRoZSBMU04gaXQgbmVl ZHMgdG8gdGhlCi0gKgkJc2hhcmVkIG1lbW9yeSwgYW5kIHRoZSBhcHByb3ByaWF0ZSBwcm9jZXNz IChzdGFydHVwIG9uIHN0YW5kYnksIG9yCi0gKgkJV0FMIHdyaXRlci9iYWNrZW5kIG9uIHByaW1h cnkpIHdha2VzIGl0IG9uY2UgdGhhdCBMU04gaGFzIGJlZW4gcmVhY2hlZC4KKyAqCQlzaGFyZWQg bWVtb3J5LCBhbmQgdGhlIGFwcHJvcHJpYXRlIHByb2Nlc3MgKHN0YXJ0dXAgb24gc3RhbmRieSwK KyAqCQl3YWxyZWNlaXZlciBvbiBzdGFuZGJ5LCBvciBXQUwgd3JpdGVyL2JhY2tlbmQgb24gcHJp bWFyeSkgd2FrZXMgaXQKKyAqCQlvbmNlIHRoYXQgTFNOIGhhcyBiZWVuIHJlYWNoZWQuCiAgKgog ICoJCVRoZSBzaGFyZWQgbWVtb3J5IHVzZWQgYnkgdGhpcyBtb2R1bGUgY29tcHJpc2VzIGEgcHJv Y0luZm9zCiAgKgkJcGVyLWJhY2tlbmQgYXJyYXkgd2l0aCB0aGUgaW5mb3JtYXRpb24gb2YgdGhl IGF3YWl0ZWQgTFNOIGZvciBlYWNoCiAgKgkJb2YgdGhlIGJhY2tlbmQgcHJvY2Vzc2VzLiAgVGhl IGVsZW1lbnRzIG9mIHRoYXQgYXJyYXkgYXJlIG9yZ2FuaXplZAotICoJCWludG8gYSBwYWlyaW5n IGhlYXAgd2FpdGVyc0hlYXAsIHdoaWNoIGFsbG93cyBmb3IgdmVyeSBmYXN0IGZpbmRpbmcKLSAq CQlvZiB0aGUgbGVhc3QgYXdhaXRlZCBMU04uCisgKgkJaW50byBwYWlyaW5nIGhlYXBzICh3YWl0 ZXJzSGVhcCksIG9uZSBmb3IgZWFjaCBXYWl0TFNOVHlwZSwgd2hpY2gKKyAqCQlhbGxvd3MgZm9y IHZlcnkgZmFzdCBmaW5kaW5nIG9mIHRoZSBsZWFzdCBhd2FpdGVkIExTTiBmb3IgZWFjaCB0eXBl LgogICoKLSAqCQlJbiBhZGRpdGlvbiwgdGhlIGxlYXN0LWF3YWl0ZWQgTFNOIGlzIGNhY2hlZCBh cyBtaW5XYWl0ZWRMU04uICBUaGUKLSAqCQl3YWl0ZXIgcHJvY2VzcyBwdWJsaXNoZXMgaW5mb3Jt YXRpb24gYWJvdXQgaXRzZWxmIHRvIHRoZSBzaGFyZWQKLSAqCQltZW1vcnkgYW5kIHdhaXRzIG9u IHRoZSBsYXRjaCB1bnRpbCBpdCBpcyB3b2tlbiB1cCBieSB0aGUgYXBwcm9wcmlhdGUKLSAqCQlw cm9jZXNzLCBzdGFuZGJ5IGlzIHByb21vdGVkLCBvciB0aGUgcG9zdG1hc3RlcglkaWVzLiAgVGhl biwgaXQgY2xlYW5zCi0gKgkJaW5mb3JtYXRpb24gYWJvdXQgaXRzZWxmIGluIHRoZSBzaGFyZWQg bWVtb3J5LgorICoJCUluIGFkZGl0aW9uLCB0aGUgbGVhc3QtYXdhaXRlZCBMU04gZm9yIGVhY2gg dHlwZSBpcyBjYWNoZWQgaW4gdGhlCisgKgkJbWluV2FpdGVkTFNOIGFycmF5LiAgVGhlIHdhaXRl ciBwcm9jZXNzIHB1Ymxpc2hlcyBpbmZvcm1hdGlvbiBhYm91dAorICoJCWl0c2VsZiB0byB0aGUg c2hhcmVkIG1lbW9yeSBhbmQgd2FpdHMgb24gdGhlIGxhdGNoIHVudGlsIGl0IGlzIHdva2VuCisg KgkJdXAgYnkgdGhlIGFwcHJvcHJpYXRlIHByb2Nlc3MsIHN0YW5kYnkgaXMgcHJvbW90ZWQsIG9y IHRoZSBwb3N0bWFzdGVyCisgKgkJZGllcy4gIFRoZW4sIGl0IGNsZWFucyBpbmZvcm1hdGlvbiBh Ym91dCBpdHNlbGYgaW4gdGhlIHNoYXJlZCBtZW1vcnkuCiAgKgotICoJCU9uIHN0YW5kYnkgc2Vy dmVyczogQWZ0ZXIgcmVwbGF5aW5nIGEgV0FMIHJlY29yZCwgdGhlIHN0YXJ0dXAgcHJvY2Vzcwot ICoJCWZpcnN0IHBlcmZvcm1zIGEgZmFzdCBwYXRoIGNoZWNrIG1pbldhaXRlZExTTiA+IHJlcGxh eUxTTi4gIElmIHRoaXMKLSAqCQljaGVjayBpcyBuZWdhdGl2ZSwgaXQgY2hlY2tzIHdhaXRlcnNI ZWFwIGFuZCB3YWtlcyB1cCB0aGUgYmFja2VuZAotICoJCXdob3NlIGF3YWl0ZWQgTFNOcyBhcmUg cmVhY2hlZC4KKyAqCQlPbiBzdGFuZGJ5IHNlcnZlcnM6CisgKgkJLSBBZnRlciByZXBsYXlpbmcg YSBXQUwgcmVjb3JkLCB0aGUgc3RhcnR1cCBwcm9jZXNzIHBlcmZvcm1zIGEgZmFzdAorICoJCSAg cGF0aCBjaGVjayBtaW5XYWl0ZWRMU05bUkVQTEFZXSA+IHJlcGxheUxTTi4gIElmIHRoaXMgY2hl Y2sgaXMKKyAqCQkgIG5lZ2F0aXZlLCBpdCBjaGVja3Mgd2FpdGVyc0hlYXBbUkVQTEFZXSBhbmQg d2FrZXMgdXAgdGhlIGJhY2tlbmRzCisgKgkJICB3aG9zZSBhd2FpdGVkIExTTnMgYXJlIHJlYWNo ZWQuCisgKgkJLSBBZnRlciByZWNlaXZpbmcgV0FMLCB0aGUgd2FscmVjZWl2ZXIgcHJvY2VzcyBw ZXJmb3JtcyBzaW1pbGFyIGNoZWNrcworICoJCSAgYWdhaW5zdCB0aGUgZmx1c2ggYW5kIHdyaXRl IExTTnMsIHdha2luZyB1cCB3YWl0ZXJzIGluIHRoZSBGTFVTSAorICoJCSAgYW5kIFdSSVRFIGhl YXBzIHJlc3BlY3RpdmVseS4KICAqCiAgKgkJT24gcHJpbWFyeSBzZXJ2ZXJzOiBBZnRlciBmbHVz aGluZyBXQUwsIHRoZSBXQUwgd3JpdGVyIG9yIGJhY2tlbmQKICAqCQlwcm9jZXNzIHBlcmZvcm1z IGEgc2ltaWxhciBjaGVjayBhZ2FpbnN0IHRoZSBmbHVzaCBMU04gYW5kIHdha2VzIHVwCkBAIC00 OSw2ICs1NCw3IEBACiAjaW5jbHVkZSAiYWNjZXNzL3hsb2d3YWl0LmgiCiAjaW5jbHVkZSAibWlz Y2FkbWluLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCisjaW5jbHVkZSAicmVwbGljYXRpb24vd2Fs cmVjZWl2ZXIuaCIKICNpbmNsdWRlICJzdG9yYWdlL2xhdGNoLmgiCiAjaW5jbHVkZSAic3RvcmFn ZS9wcm9jLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9zaG1lbS5oIgpAQCAtNjIsNiArNjgsNDcgQEAg c3RhdGljIGludAl3YWl0bHNuX2NtcChjb25zdCBwYWlyaW5naGVhcF9ub2RlICphLCBjb25zdCBw YWlyaW5naGVhcF9ub2RlICpiLAogCiBzdHJ1Y3QgV2FpdExTTlN0YXRlICp3YWl0TFNOU3RhdGUg PSBOVUxMOwogCisvKgorICogV2FpdCBldmVudCBmb3IgZWFjaCBXYWl0TFNOVHlwZSwgdXNlZCB3 aXRoIFdhaXRMYXRjaCgpIHRvIHJlcG9ydAorICogdGhlIHdhaXQgaW4gcGdfc3RhdF9hY3Rpdml0 eS4KKyAqLworc3RhdGljIGNvbnN0IHVpbnQzMiBXYWl0TFNOV2FpdEV2ZW50c1tdID0geworCVtX QUlUX0xTTl9UWVBFX1NUQU5EQllfUkVQTEFZXSA9IFdBSVRfRVZFTlRfV0FJVF9GT1JfV0FMX1JF UExBWSwKKwlbV0FJVF9MU05fVFlQRV9TVEFOREJZX1dSSVRFXSA9IFdBSVRfRVZFTlRfV0FJVF9G T1JfV0FMX1dSSVRFLAorCVtXQUlUX0xTTl9UWVBFX1NUQU5EQllfRkxVU0hdID0gV0FJVF9FVkVO VF9XQUlUX0ZPUl9XQUxfRkxVU0gsCisJW1dBSVRfTFNOX1RZUEVfUFJJTUFSWV9GTFVTSF0gPSBX QUlUX0VWRU5UX1dBSVRfRk9SX1dBTF9GTFVTSCwKK307CisKK1N0YXRpY0Fzc2VydERlY2wobGVu Z3Rob2YoV2FpdExTTldhaXRFdmVudHMpID09IFdBSVRfTFNOX1RZUEVfQ09VTlQsCisJCQkJICJX YWl0TFNOV2FpdEV2ZW50cyBtdXN0IG1hdGNoIFdhaXRMU05UeXBlIGVudW0iKTsKKworLyoKKyAq IEdldCB0aGUgY3VycmVudCBMU04gZm9yIHRoZSBzcGVjaWZpZWQgd2FpdCB0eXBlLgorICovCitY TG9nUmVjUHRyCitHZXRDdXJyZW50TFNORm9yV2FpdFR5cGUoV2FpdExTTlR5cGUgbHNuVHlwZSkK K3sKKwlBc3NlcnQobHNuVHlwZSA+PSAwICYmIGxzblR5cGUgPCBXQUlUX0xTTl9UWVBFX0NPVU5U KTsKKworCXN3aXRjaCAobHNuVHlwZSkKKwl7CisJCWNhc2UgV0FJVF9MU05fVFlQRV9TVEFOREJZ X1JFUExBWToKKwkJCXJldHVybiBHZXRYTG9nUmVwbGF5UmVjUHRyKE5VTEwpOworCisJCWNhc2Ug V0FJVF9MU05fVFlQRV9TVEFOREJZX1dSSVRFOgorCQkJcmV0dXJuIEdldFdhbFJjdldyaXRlUmVj UHRyKCk7CisKKwkJY2FzZSBXQUlUX0xTTl9UWVBFX1NUQU5EQllfRkxVU0g6CisJCQlyZXR1cm4g R2V0V2FsUmN2Rmx1c2hSZWNQdHIoTlVMTCwgTlVMTCk7CisKKwkJY2FzZSBXQUlUX0xTTl9UWVBF X1BSSU1BUllfRkxVU0g6CisJCQlyZXR1cm4gR2V0Rmx1c2hSZWNQdHIoTlVMTCk7CisJfQorCisJ ZWxvZyhFUlJPUiwgImludmFsaWQgTFNOIHdhaXQgdHlwZTogJWQiLCBsc25UeXBlKTsKKwlwZ191 bnJlYWNoYWJsZSgpOworfQorCiAvKiBSZXBvcnQgdGhlIGFtb3VudCBvZiBzaGFyZWQgbWVtb3J5 IHNwYWNlIG5lZWRlZCBmb3IgV2FpdExTTlN0YXRlLiAqLwogU2l6ZQogV2FpdExTTlNobWVtU2l6 ZSh2b2lkKQpAQCAtMzAyLDYgKzM0OSwxOSBAQCBXYWl0TFNOQ2xlYW51cCh2b2lkKQogCX0KIH0K IAorLyoKKyAqIENoZWNrIGlmIHRoZSBnaXZlbiBMU04gdHlwZSByZXF1aXJlcyByZWNvdmVyeSB0 byBiZSBpbiBwcm9ncmVzcy4KKyAqIFN0YW5kYnkgd2FpdCB0eXBlcyAocmVwbGF5LCB3cml0ZSwg Zmx1c2gpIHJlcXVpcmUgcmVjb3Zlcnk7CisgKiBwcmltYXJ5IHdhaXQgdHlwZXMgKGZsdXNoKSBk byBub3QuCisgKi8KK3N0YXRpYyBpbmxpbmUgYm9vbAorV2FpdExTTlR5cGVSZXF1aXJlc1JlY292 ZXJ5KFdhaXRMU05UeXBlIHQpCit7CisJcmV0dXJuIHQgPT0gV0FJVF9MU05fVFlQRV9TVEFOREJZ X1JFUExBWSB8fAorCQl0ID09IFdBSVRfTFNOX1RZUEVfU1RBTkRCWV9XUklURSB8fAorCQl0ID09 IFdBSVRfTFNOX1RZUEVfU1RBTkRCWV9GTFVTSDsKK30KKwogLyoKICAqIFdhaXQgdXNpbmcgTXlM YXRjaCB0aWxsIHRoZSBnaXZlbiBMU04gaXMgcmVhY2hlZCwgdGhlIHJlcGxpY2EgZ2V0cwogICog cHJvbW90ZWQsIG9yIHRoZSBwb3N0bWFzdGVyIGRpZXMuCkBAIC0zNDEsMTMgKzQwMSwxMSBAQCBX YWl0Rm9yTFNOKFdhaXRMU05UeXBlIGxzblR5cGUsIFhMb2dSZWNQdHIgdGFyZ2V0TFNOLCBpbnQ2 NCB0aW1lb3V0KQogCQlpbnQJCQlyYzsKIAkJbG9uZwkJZGVsYXlfbXMgPSAtMTsKIAotCQlpZiAo bHNuVHlwZSA9PSBXQUlUX0xTTl9UWVBFX1JFUExBWSkKLQkJCWN1cnJlbnRMU04gPSBHZXRYTG9n UmVwbGF5UmVjUHRyKE5VTEwpOwotCQllbHNlCi0JCQljdXJyZW50TFNOID0gR2V0Rmx1c2hSZWNQ dHIoTlVMTCk7CisJCS8qIEdldCBjdXJyZW50IExTTiBmb3IgdGhlIHdhaXQgdHlwZSAqLworCQlj dXJyZW50TFNOID0gR2V0Q3VycmVudExTTkZvcldhaXRUeXBlKGxzblR5cGUpOwogCiAJCS8qIENo ZWNrIHRoYXQgcmVjb3ZlcnkgaXMgc3RpbGwgaW4tcHJvZ3Jlc3MgKi8KLQkJaWYgKGxzblR5cGUg PT0gV0FJVF9MU05fVFlQRV9SRVBMQVkgJiYgIVJlY292ZXJ5SW5Qcm9ncmVzcygpKQorCQlpZiAo V2FpdExTTlR5cGVSZXF1aXJlc1JlY292ZXJ5KGxzblR5cGUpICYmICFSZWNvdmVyeUluUHJvZ3Jl c3MoKSkKIAkJewogCQkJLyoKIAkJCSAqIFJlY292ZXJ5IHdhcyBlbmRlZCwgYnV0IGNoZWNrIGlm IHRhcmdldCBMU04gd2FzIGFscmVhZHkKQEAgLTM3Niw3ICs0MzQsNyBAQCBXYWl0Rm9yTFNOKFdh aXRMU05UeXBlIGxzblR5cGUsIFhMb2dSZWNQdHIgdGFyZ2V0TFNOLCBpbnQ2NCB0aW1lb3V0KQog CQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwogCiAJCXJjID0gV2FpdExhdGNoKE15TGF0Y2gsIHdh a2VfZXZlbnRzLCBkZWxheV9tcywKLQkJCQkJICAgKGxzblR5cGUgPT0gV0FJVF9MU05fVFlQRV9S RVBMQVkpID8gV0FJVF9FVkVOVF9XQUlUX0ZPUl9XQUxfUkVQTEFZIDogV0FJVF9FVkVOVF9XQUlU X0ZPUl9XQUxfRkxVU0gpOworCQkJCQkgICBXYWl0TFNOV2FpdEV2ZW50c1tsc25UeXBlXSk7CiAK IAkJLyoKIAkJICogRW1lcmdlbmN5IGJhaWxvdXQgaWYgcG9zdG1hc3RlciBoYXMgZGllZC4gIFRo aXMgaXMgdG8gYXZvaWQgdGhlCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy93YWl0 LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy93YWl0LmMKaW5kZXggYTM3YmRkYWVmYjIuLmRkMjU3 MGNiNzg3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy93YWl0LmMKKysrIGIvc3Jj L2JhY2tlbmQvY29tbWFuZHMvd2FpdC5jCkBAIC0xNDAsNyArMTQwLDcgQEAgRXhlY1dhaXRTdG10 KFBhcnNlU3RhdGUgKnBzdGF0ZSwgV2FpdFN0bXQgKnN0bXQsIERlc3RSZWNlaXZlciAqZGVzdCkK IAkgKi8KIAlBc3NlcnQoTXlQcm9jLT54bWluID09IEludmFsaWRUcmFuc2FjdGlvbklkKTsKIAot CXdhaXRMU05SZXN1bHQgPSBXYWl0Rm9yTFNOKFdBSVRfTFNOX1RZUEVfUkVQTEFZLCBsc24sIHRp bWVvdXQpOworCXdhaXRMU05SZXN1bHQgPSBXYWl0Rm9yTFNOKFdBSVRfTFNOX1RZUEVfU1RBTkRC WV9SRVBMQVksIGxzbiwgdGltZW91dCk7CiAKIAkvKgogCSAqIFByb2Nlc3MgdGhlIHJlc3VsdCBv ZiBXYWl0Rm9yTFNOKCkuICBUaHJvdyBhcHByb3ByaWF0ZSBlcnJvciBpZiBuZWVkZWQuCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC91dGlscy9hY3Rpdml0eS93YWl0X2V2ZW50X25hbWVzLnR4dCBi L3NyYy9iYWNrZW5kL3V0aWxzL2FjdGl2aXR5L3dhaXRfZXZlbnRfbmFtZXMudHh0CmluZGV4IGRj ZmFkYmQ1YWFlLi5lNjIwNTQ1ODVjYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvdXRpbHMvYWN0 aXZpdHkvd2FpdF9ldmVudF9uYW1lcy50eHQKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvYWN0aXZp dHkvd2FpdF9ldmVudF9uYW1lcy50eHQKQEAgLTg5LDggKzg5LDkgQEAgTElCUFFXQUxSRUNFSVZF Ul9DT05ORUNUCSJXYWl0aW5nIGluIFdBTCByZWNlaXZlciB0byBlc3RhYmxpc2ggY29ubmVjdGlv biB0byByZW0KIExJQlBRV0FMUkVDRUlWRVJfUkVDRUlWRQkiV2FpdGluZyBpbiBXQUwgcmVjZWl2 ZXIgdG8gcmVjZWl2ZSBkYXRhIGZyb20gcmVtb3RlIHNlcnZlci4iCiBTU0xfT1BFTl9TRVJWRVIJ IldhaXRpbmcgZm9yIFNTTCB3aGlsZSBhdHRlbXB0aW5nIGNvbm5lY3Rpb24uIgogV0FJVF9GT1Jf U1RBTkRCWV9DT05GSVJNQVRJT04JIldhaXRpbmcgZm9yIFdBTCB0byBiZSByZWNlaXZlZCBhbmQg Zmx1c2hlZCBieSB0aGUgcGh5c2ljYWwgc3RhbmRieS4iCi1XQUlUX0ZPUl9XQUxfRkxVU0gJIldh aXRpbmcgZm9yIFdBTCBmbHVzaCB0byByZWFjaCBhIHRhcmdldCBMU04gb24gYSBwcmltYXJ5LiIK K1dBSVRfRk9SX1dBTF9GTFVTSAkiV2FpdGluZyBmb3IgV0FMIGZsdXNoIHRvIHJlYWNoIGEgdGFy Z2V0IExTTiBvbiBhIHByaW1hcnkgb3Igc3RhbmRieS4iCiBXQUlUX0ZPUl9XQUxfUkVQTEFZCSJX YWl0aW5nIGZvciBXQUwgcmVwbGF5IHRvIHJlYWNoIGEgdGFyZ2V0IExTTiBvbiBhIHN0YW5kYnku IgorV0FJVF9GT1JfV0FMX1dSSVRFCSJXYWl0aW5nIGZvciBXQUwgd3JpdGUgdG8gcmVhY2ggYSB0 YXJnZXQgTFNOIG9uIGEgc3RhbmRieS4iCiBXQUxfU0VOREVSX1dBSVRfRk9SX1dBTAkiV2FpdGlu ZyBmb3IgV0FMIHRvIGJlIGZsdXNoZWQgaW4gV0FMIHNlbmRlciBwcm9jZXNzLiIKIFdBTF9TRU5E RVJfV1JJVEVfREFUQQkiV2FpdGluZyBmb3IgYW55IGFjdGl2aXR5IHdoZW4gcHJvY2Vzc2luZyBy ZXBsaWVzIGZyb20gV0FMIHJlY2VpdmVyIGluIFdBTCBzZW5kZXIgcHJvY2Vzcy4iCiAKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL2FjY2Vzcy94bG9nd2FpdC5oIGIvc3JjL2luY2x1ZGUvYWNjZXNz L3hsb2d3YWl0LmgKaW5kZXggM2U4ZmNiZDkxNzcuLjRjZjEzZjBjY2IzIDEwMDY0NAotLS0gYS9z cmMvaW5jbHVkZS9hY2Nlc3MveGxvZ3dhaXQuaAorKysgYi9zcmMvaW5jbHVkZS9hY2Nlc3MveGxv Z3dhaXQuaApAQCAtMSw3ICsxLDcgQEAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICoKICAqIHhsb2d3 YWl0LmgKLSAqCSAgRGVjbGFyYXRpb25zIGZvciBMU04gcmVwbGF5IHdhaXRpbmcgcm91dGluZXMu CisgKgkgIERlY2xhcmF0aW9ucyBmb3IgV0FMIGZsdXNoLCB3cml0ZSwgYW5kIHJlcGxheSB3YWl0 aW5nIHJvdXRpbmVzLgogICoKICAqIENvcHlyaWdodCAoYykgMjAyNSwgUG9zdGdyZVNRTCBHbG9i YWwgRGV2ZWxvcG1lbnQgR3JvdXAKICAqCkBAIC0zNSwxMSArMzUsMTYgQEAgdHlwZWRlZiBlbnVt CiAgKi8KIHR5cGVkZWYgZW51bSBXYWl0TFNOVHlwZQogewotCVdBSVRfTFNOX1RZUEVfUkVQTEFZ LAkJLyogV2FpdGluZyBmb3IgcmVwbGF5IG9uIHN0YW5kYnkgKi8KLQlXQUlUX0xTTl9UWVBFX0ZM VVNILAkJLyogV2FpdGluZyBmb3IgZmx1c2ggb24gcHJpbWFyeSAqLworCS8qIFN0YW5kYnkgd2Fp dCB0eXBlcyAod2FscmVjZWl2ZXIvc3RhcnR1cCB3YWtlcykgKi8KKwlXQUlUX0xTTl9UWVBFX1NU QU5EQllfUkVQTEFZLAorCVdBSVRfTFNOX1RZUEVfU1RBTkRCWV9XUklURSwKKwlXQUlUX0xTTl9U WVBFX1NUQU5EQllfRkxVU0gsCisKKwkvKiBQcmltYXJ5IHdhaXQgdHlwZXMgKFdBTCB3cml0ZXIv YmFja2VuZHMgd2FrZSkgKi8KKwlXQUlUX0xTTl9UWVBFX1BSSU1BUllfRkxVU0gsCiB9IFdhaXRM U05UeXBlOwogCi0jZGVmaW5lIFdBSVRfTFNOX1RZUEVfQ09VTlQgKFdBSVRfTFNOX1RZUEVfRkxV U0ggKyAxKQorI2RlZmluZSBXQUlUX0xTTl9UWVBFX0NPVU5UIChXQUlUX0xTTl9UWVBFX1BSSU1B UllfRkxVU0ggKyAxKQogCiAvKgogICogV2FpdExTTlByb2NJbmZvIC0gdGhlIHNoYXJlZCBtZW1v cnkgc3RydWN0dXJlIHJlcHJlc2VudGluZyBpbmZvcm1hdGlvbgpAQCAtOTcsNiArMTAyLDcgQEAg ZXh0ZXJuIFBHRExMSU1QT1JUIFdhaXRMU05TdGF0ZSAqd2FpdExTTlN0YXRlOwogCiBleHRlcm4g U2l6ZSBXYWl0TFNOU2htZW1TaXplKHZvaWQpOwogZXh0ZXJuIHZvaWQgV2FpdExTTlNobWVtSW5p dCh2b2lkKTsKK2V4dGVybiBYTG9nUmVjUHRyIEdldEN1cnJlbnRMU05Gb3JXYWl0VHlwZShXYWl0 TFNOVHlwZSBsc25UeXBlKTsKIGV4dGVybiB2b2lkIFdhaXRMU05XYWtldXAoV2FpdExTTlR5cGUg bHNuVHlwZSwgWExvZ1JlY1B0ciBjdXJyZW50TFNOKTsKIGV4dGVybiB2b2lkIFdhaXRMU05DbGVh bnVwKHZvaWQpOwogZXh0ZXJuIFdhaXRMU05SZXN1bHQgV2FpdEZvckxTTihXYWl0TFNOVHlwZSBs c25UeXBlLCBYTG9nUmVjUHRyIHRhcmdldExTTiwKLS0gCjIuNTEuMAoK --000000000000c5b88c0647642e91 Content-Type: application/octet-stream; name="v12-0004-Use-WAIT-FOR-LSN-in-PostgreSQL-Test-Cluster-wait.patch" Content-Disposition: attachment; filename="v12-0004-Use-WAIT-FOR-LSN-in-PostgreSQL-Test-Cluster-wait.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjwnrv823 RnJvbSBjZjZiZWE4YTEzOWU0OTIyODE2NjRlNTI0YTY5YmUwZTJjY2ExN2FmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbHRlcmVnbzY1NSA8ODI0NjYyNTI2QHFxLmNvbT4KRGF0ZTog VHVlLCAxNiBEZWMgMjAyNSAxMTowMzoyMyArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjEyIDQvNF0g VXNlIFdBSVQgRk9SIExTTiBpbgogUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlcjo6d2FpdF9mb3Jf Y2F0Y2h1cCgpCgpXaGVuIHRoZSBzdGFuZGJ5IGlzIHBhc3NlZCBhcyBhIFBvc3RncmVTUUw6OlRl c3Q6OkNsdXN0ZXIgaW5zdGFuY2UsCnVzZSB0aGUgV0FJVCBGT1IgTFNOIGNvbW1hbmQgb24gdGhl IHN0YW5kYnkgc2VydmVyIHRvIGltcGxlbWVudAp3YWl0X2Zvcl9jYXRjaHVwKCkgZm9yIHJlcGxh eSwgd3JpdGUsIGFuZCBmbHVzaCBtb2Rlcy4gIFRoaXMgaXMgbW9yZQplZmZpY2llbnQgdGhhbiBw b2xsaW5nIHBnX3N0YXRfcmVwbGljYXRpb24gb24gdGhlIHVwc3RyZWFtLCBhcyB0aGUKV0FJVCBG T1IgTFNOIGNvbW1hbmQgdXNlcyBhIGxhdGNoLWJhc2VkIHdha2V1cCBtZWNoYW5pc20uCgpUaGUg b3B0aW1pemF0aW9uIGFwcGxpZXMgd2hlbjoKLSBUaGUgc3RhbmRieSBpcyBwYXNzZWQgYXMgYSBD bHVzdGVyIG9iamVjdCAobm90IGp1c3QgYSBuYW1lIHN0cmluZykKLSBUaGUgbW9kZSBpcyAncmVw bGF5JywgJ3dyaXRlJywgb3IgJ2ZsdXNoJyAobm90ICdzZW50JykKLSBUaGUgc3RhbmRieSBpcyBp biByZWNvdmVyeQoKRm9yICdzZW50JyBtb2RlLCB3aGVuIHRoZSBzdGFuZGJ5IGlzIHBhc3NlZCBh cyBhIHN0cmluZyAoZS5nLiwgYQpzdWJzY3JpcHRpb24gbmFtZSBmb3IgbG9naWNhbCByZXBsaWNh dGlvbiksIG9yIHdoZW4gdGhlIHN0YW5kYnkgaGFzCmJlZW4gcHJvbW90ZWQsIHRoZSBmdW5jdGlv biBmYWxscyBiYWNrIHRvIHRoZSBvcmlnaW5hbCBwb2xsaW5nLWJhc2VkCmFwcHJvYWNoIHVzaW5n IHBnX3N0YXRfcmVwbGljYXRpb24gb24gdGhlIHVwc3RyZWFtLgotLS0KIHNyYy90ZXN0L3Blcmwv UG9zdGdyZVNRTC9UZXN0L0NsdXN0ZXIucG0gfCA1OSArKysrKysrKysrKysrKysrKysrKysrKy0K IDEgZmlsZSBjaGFuZ2VkLCA1OCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCgpkaWZmIC0t Z2l0IGEvc3JjL3Rlc3QvcGVybC9Qb3N0Z3JlU1FML1Rlc3QvQ2x1c3Rlci5wbSBiL3NyYy90ZXN0 L3BlcmwvUG9zdGdyZVNRTC9UZXN0L0NsdXN0ZXIucG0KaW5kZXggMjk1OTg4YjhiODcuLjUxZTUz MjRiZmYzIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9wZXJsL1Bvc3RncmVTUUwvVGVzdC9DbHVzdGVy LnBtCisrKyBiL3NyYy90ZXN0L3BlcmwvUG9zdGdyZVNRTC9UZXN0L0NsdXN0ZXIucG0KQEAgLTMz MjAsNiArMzMyMCwxMyBAQCBJZiB5b3UgcGFzcyBhbiBleHBsaWNpdCB2YWx1ZSBvZiB0YXJnZXRf bHNuLCBpdCBzaG91bGQgYWxtb3N0IGFsd2F5cyBiZQogdGhlIHByaW1hcnkncyB3cml0ZSBMU047 IHNvIHRoaXMgcGFyYW1ldGVyIGlzIHNlbGRvbSBuZWVkZWQgZXhjZXB0IHdoZW4KIHF1ZXJ5aW5n IHNvbWUgaW50ZXJtZWRpYXRlIHJlcGxpY2F0aW9uIG5vZGUgcmF0aGVyIHRoYW4gdGhlIHByaW1h cnkuCiAKK1doZW4gdGhlIHN0YW5kYnkgaXMgcGFzc2VkIGFzIGEgUG9zdGdyZVNRTDo6VGVzdDo6 Q2x1c3RlciBpbnN0YW5jZSBhbmQgaXMKK2luIHJlY292ZXJ5LCB0aGlzIGZ1bmN0aW9uIHVzZXMg dGhlIFdBSVQgRk9SIExTTiBjb21tYW5kIG9uIHRoZSBzdGFuZGJ5Citmb3IgbW9kZXMgcmVwbGF5 LCB3cml0ZSwgYW5kIGZsdXNoLiAgVGhpcyBpcyBtb3JlIGVmZmljaWVudCB0aGFuIHBvbGxpbmcK K3BnX3N0YXRfcmVwbGljYXRpb24gb24gdGhlIHVwc3RyZWFtLCBhcyBXQUlUIEZPUiBMU04gdXNl cyBhIGxhdGNoLWJhc2VkCit3YWtldXAgbWVjaGFuaXNtLiAgRm9yICdzZW50JyBtb2RlLCBvciB3 aGVuIHRoZSBzdGFuZGJ5IGlzIHBhc3NlZCBhcyBhCitzdHJpbmcgKGUuZy4sIGEgc3Vic2NyaXB0 aW9uIG5hbWUpLCBpdCBmYWxscyBiYWNrIHRvIHBvbGxpbmcuCisKIElmIHRoZXJlIGlzIG5vIGFj dGl2ZSByZXBsaWNhdGlvbiBjb25uZWN0aW9uIGZyb20gdGhpcyBwZWVyLCB3YWl0cyB1bnRpbAog cG9sbF9xdWVyeV91bnRpbCB0aW1lb3V0LgogCkBAIC0zMzM5LDEwICszMzQ2LDEzIEBAIHN1YiB3 YWl0X2Zvcl9jYXRjaHVwCiAJICAuIGpvaW4oJywgJywga2V5cygldmFsaWRfbW9kZXMpKQogCSAg dW5sZXNzIGV4aXN0cygkdmFsaWRfbW9kZXN7JG1vZGV9KTsKIAotCSMgQWxsb3cgcGFzc2luZyBv ZiBhIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXIgaW5zdGFuY2UgYXMgc2hvcnRoYW5kCisJIyBL ZWVwIGEgcmVmZXJlbmNlIHRvIHRoZSBzdGFuZGJ5IG5vZGUgaWYgcGFzc2VkIGFzIGFuIG9iamVj dCwgc28gd2UgY2FuCisJIyB1c2UgV0FJVCBGT1IgTFNOIG9uIGl0IGxhdGVyLgorCW15ICRzdGFu ZGJ5X25vZGU7CiAJaWYgKGJsZXNzZWQoJHN0YW5kYnlfbmFtZSkKIAkJJiYgJHN0YW5kYnlfbmFt ZS0+aXNhKCJQb3N0Z3JlU1FMOjpUZXN0OjpDbHVzdGVyIikpCiAJeworCQkkc3RhbmRieV9ub2Rl ID0gJHN0YW5kYnlfbmFtZTsKIAkJJHN0YW5kYnlfbmFtZSA9ICRzdGFuZGJ5X25hbWUtPm5hbWU7 CiAJfQogCWlmICghZGVmaW5lZCgkdGFyZ2V0X2xzbikpCkBAIC0zMzY3LDYgKzMzNzcsNTMgQEAg c3ViIHdhaXRfZm9yX2NhdGNodXAKIAkgIC4gJHNlbGYtPm5hbWUgLiAiXG4iOwogCSMgQmVmb3Jl IHJlbGVhc2UgMTIgd2FscmVjZWl2ZXIganVzdCBzZXQgdGhlIGFwcGxpY2F0aW9uIG5hbWUgdG8K IAkjICJ3YWxyZWNlaXZlciIKKworCSMgVXNlIFdBSVQgRk9SIExTTiBvbiB0aGUgc3RhbmRieSB3 aGVuOgorCSMgLSBUaGUgc3RhbmRieSB3YXMgcGFzc2VkIGFzIGEgQ2x1c3RlciBvYmplY3QgKHNv IHdlIGNhbiBjb25uZWN0IHRvIGl0KQorCSMgLSBUaGUgbW9kZSBpcyByZXBsYXksIHdyaXRlLCBv ciBmbHVzaCAobm90ICdzZW50JykKKwkjIC0gVGhlIHN0YW5kYnkgaXMgaW4gcmVjb3ZlcnkKKwkj IFRoaXMgaXMgbW9yZSBlZmZpY2llbnQgdGhhbiBwb2xsaW5nIHBnX3N0YXRfcmVwbGljYXRpb24g b24gdGhlIHVwc3RyZWFtLAorCSMgYXMgV0FJVCBGT1IgTFNOIHVzZXMgYSBsYXRjaC1iYXNlZCB3 YWtldXAgbWVjaGFuaXNtLgorCWlmIChkZWZpbmVkKCRzdGFuZGJ5X25vZGUpICYmICgkbW9kZSBu ZSAnc2VudCcpKQorCXsKKwkJbXkgJHN0YW5kYnlfaW5fcmVjb3ZlcnkgPQorCQkgICRzdGFuZGJ5 X25vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIHBnX2lzX2luX3JlY292ZXJ5KCki KTsKKwkJY2hvbXAoJHN0YW5kYnlfaW5fcmVjb3ZlcnkpOworCisJCWlmICgkc3RhbmRieV9pbl9y ZWNvdmVyeSBlcSAndCcpCisJCXsKKwkJCSMgTWFwIG1vZGUgbmFtZXMgdG8gV0FJVCBGT1IgTFNO IG1vZGUgbmFtZXMKKwkJCW15ICVtb2RlX21hcCA9ICgKKwkJCQkncmVwbGF5JyA9PiAnc3RhbmRi eV9yZXBsYXknLAorCQkJCSd3cml0ZScgPT4gJ3N0YW5kYnlfd3JpdGUnLAorCQkJCSdmbHVzaCcg PT4gJ3N0YW5kYnlfZmx1c2gnLCk7CisJCQlteSAkd2FpdF9tb2RlID0gJG1vZGVfbWFweyRtb2Rl fTsKKwkJCW15ICR0aW1lb3V0ID0gJFBvc3RncmVTUUw6OlRlc3Q6OlV0aWxzOjp0aW1lb3V0X2Rl ZmF1bHQ7CisJCQlteSAkd2FpdF9xdWVyeSA9CisJCQkgIHFxW1dBSVQgRk9SIExTTiAnJHt0YXJn ZXRfbHNufScgV0lUSCAoTU9ERSAnJHt3YWl0X21vZGV9JywgdGltZW91dCAnJHt0aW1lb3V0fXMn LCBub190aHJvdyk7XTsKKwkJCW15ICRvdXRwdXQgPSAkc3RhbmRieV9ub2RlLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgJHdhaXRfcXVlcnkpOworCQkJY2hvbXAoJG91dHB1dCk7CisKKwkJCWlmICgk b3V0cHV0IG5lICdzdWNjZXNzJykKKwkJCXsKKwkJCQkjIEZldGNoIGFkZGl0aW9uYWwgZGV0YWls IGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMKKwkJCQlteSAkZGV0YWlscyA9ICRzZWxmLT5zYWZlX3Bz cWwoJ3Bvc3RncmVzJywKKwkJCQkJIlNFTEVDVCAqIEZST00gcGdfY2F0YWxvZy5wZ19zdGF0X3Jl cGxpY2F0aW9uIik7CisJCQkJZGlhZyBxcShXQUlUIEZPUiBMU04gZmFpbGVkIHdpdGggc3RhdHVz OgorCSR7b3V0cHV0fSk7CisJCQkJZGlhZyBxcShMYXN0IHBnX3N0YXRfcmVwbGljYXRpb24gY29u dGVudHM6CisJJHtkZXRhaWxzfSk7CisJCQkJY3JvYWsgImZhaWxlZCB3YWl0aW5nIGZvciBjYXRj aHVwIjsKKwkJCX0KKwkJCXByaW50ICJkb25lXG4iOworCQkJcmV0dXJuOworCQl9CisJfQorCisJ IyBGYWxsIGJhY2sgdG8gcG9sbGluZyBwZ19zdGF0X3JlcGxpY2F0aW9uIG9uIHRoZSB1cHN0cmVh bSBmb3I6CisJIyAtICdzZW50JyBtb2RlIChubyBjb3JyZXNwb25kaW5nIFdBSVQgRk9SIExTTiBt b2RlKQorCSMgLSBXaGVuIHN0YW5kYnlfbmFtZSBpcyBhIHN0cmluZyAoZS5nLiwgc3Vic2NyaXB0 aW9uIG5hbWUpCisJIyAtIFdoZW4gdGhlIHN0YW5kYnkgaXMgbm8gbG9uZ2VyIGluIHJlY292ZXJ5 ICh3YXMgcHJvbW90ZWQpCiAJbXkgJHF1ZXJ5ID0gcXFbU0VMRUNUICckdGFyZ2V0X2xzbicgPD0g JHttb2RlfV9sc24gQU5EIHN0YXRlID0gJ3N0cmVhbWluZycKICAgICAgICAgIEZST00gcGdfY2F0 YWxvZy5wZ19zdGF0X3JlcGxpY2F0aW9uCiAgICAgICAgICBXSEVSRSBhcHBsaWNhdGlvbl9uYW1l IElOICgnJHN0YW5kYnlfbmFtZScsICd3YWxyZWNlaXZlcicpXTsKLS0gCjIuNTEuMAoK --000000000000c5b88c0647642e91 Content-Type: application/octet-stream; name="v12-0002-Add-MODE-option-to-WAIT-FOR-LSN-command.patch" Content-Disposition: attachment; filename="v12-0002-Add-MODE-option-to-WAIT-FOR-LSN-command.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjwnrv7y1 RnJvbSAzMjc2MTQyZDQyNjMxMDg1MDg3N2VhZGJhYmUwNDFkNmQ1MWUyYzc2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBhbHRlcmVnbzY1NSA8ODI0NjYyNTI2QHFxLmNvbT4KRGF0ZTog VHVlLCAxNiBEZWMgMjAyNSAxMDo1MDoyMiArMDgwMApTdWJqZWN0OiBbUEFUQ0ggdjEyIDIvNF0g QWRkIE1PREUgb3B0aW9uIHRvIFdBSVQgRk9SIExTTiBjb21tYW5kCgpFeHRlbmQgdGhlIFdBSVQg Rk9SIExTTiBjb21tYW5kIHdpdGggYW4gb3B0aW9uYWwgTU9ERSBvcHRpb24gaW4gdGhlCldJVEgg Y2xhdXNlIHRoYXQgc3BlY2lmaWVzIHdoaWNoIExTTiB0eXBlIHRvIHdhaXQgZm9yOgoKICBXQUlU IEZPUiBMU04gJzxsc24+JyBbV0lUSCAoTU9ERSAnPG1vZGU+JywgLi4uKV0KCndoZXJlIG1vZGUg Y2FuIGJlOgotICdzdGFuZGJ5X3JlcGxheScgKGRlZmF1bHQpOiBXYWl0IGZvciBXQUwgdG8gYmUg cmVwbGF5ZWQgdG8gdGhlIHNwZWNpZmllZCBMU04KLSAnc3RhbmRieV93cml0ZSc6IFdhaXQgZm9y IFdBTCB0byBiZSB3cml0dGVuIChyZWNlaXZlZCkgdG8gdGhlIHNwZWNpZmllZCBMU04KLSAnc3Rh bmRieV9mbHVzaCc6IFdhaXQgZm9yIFdBTCB0byBiZSBmbHVzaGVkIHRvIGRpc2sgYXQgdGhlIHNw ZWNpZmllZCBMU04KLSAncHJpbWFyeV9mbHVzaCc6IFdhaXQgZm9yIFdBTCB0byBiZSBmbHVzaGVk IHRvIGRpc2sgb24gdGhlIHByaW1hcnkgc2VydmVyCgpUaGUgZGVmYXVsdCBtb2RlIGlzICdzdGFu ZGJ5X3JlcGxheScsIG1hdGNoaW5nIHRoZSBvcmlnaW5hbCBiZWhhdmlvciB3aGVuIE1PREUKaXMg bm90IHNwZWNpZmllZC4gVGhpcyBmb2xsb3dzIHRoZSBwYXR0ZXJuIHVzZWQgYnkgQ09QWSBhbmQg RVhQTEFJTgpjb21tYW5kcyB3aGVyZSBvcHRpb25zIGFyZSBzcGVjaWZpZWQgYXMgc3RyaW5nIHZh bHVlcyBpbiB0aGUgV0lUSCBjbGF1c2UuCgpNb2RlcyBhcmUgZXhwbGljaXRseSBuYW1lZCB0byBk aXN0aW5ndWlzaCBiZXR3ZWVuIHByaW1hcnkgYW5kIHN0YW5kYnkgb3BlcmF0aW9uczoKLSBTdGFu ZGJ5IG1vZGVzICgnc3RhbmRieV9yZXBsYXknLCAnc3RhbmRieV93cml0ZScsICdzdGFuZGJ5X2Zs dXNoJykgY2FuIG9ubHkKICBiZSB1c2VkIGR1cmluZyByZWNvdmVyeSAob24gYSBzdGFuZGJ5IHNl cnZlcikKLSBQcmltYXJ5IG1vZGUgKCdwcmltYXJ5X2ZsdXNoJykgY2FuIG9ubHkgYmUgdXNlZCBv biBhIHByaW1hcnkgc2VydmVyCgpUaGUgJ3N0YW5kYnlfd3JpdGUnIGFuZCAnc3RhbmRieV9mbHVz aCcgbW9kZXMgYXJlIHVzZWZ1bCBmb3Igc2NlbmFyaW9zIHdoZXJlCmFwcGxpY2F0aW9ucyBuZWVk IHRvIGVuc3VyZSBXQUwgaGFzIGJlZW4gcmVjZWl2ZWQgb3IgcGVyc2lzdGVkIG9uIHRoZSBzdGFu ZGJ5CndpdGhvdXQgbmVjZXNzYXJpbHkgd2FpdGluZyBmb3IgcmVwbGF5IHRvIGNvbXBsZXRlLiBU aGUgJ3ByaW1hcnlfZmx1c2gnIG1vZGUKYWxsb3dzIHdhaXRpbmcgZm9yIFdBTCB0byBiZSBmbHVz aGVkIG9uIHRoZSBwcmltYXJ5IHNlcnZlci4KCkFsc28gaW5jbHVkZXM6Ci0gRG9jdW1lbnRhdGlv biB1cGRhdGVzIGZvciB0aGUgbmV3IHN5bnRheCBhbmQgbW9kZSBkZXNjcmlwdGlvbnMKLSBUZXN0 IGNvdmVyYWdlIGZvciBhbGwgZm91ciBtb2RlcyBpbmNsdWRpbmcgZXJyb3IgY2FzZXMgYW5kIGNv bmN1cnJlbnQgd2FpdGVycwotIFdha2V1cCBsb2dpYyBpbiB3YWxyZWNlaXZlciBmb3Igc3RhbmRi eSB3cml0ZS9mbHVzaCB3YWl0ZXJzCi0gV2FrZXVwIGxvZ2ljIGluIFdBTCB3cml0ZXIgZm9yIHBy aW1hcnkgZmx1c2ggd2FpdGVycwotLS0KIGRvYy9zcmMvc2dtbC9yZWYvd2FpdF9mb3Iuc2dtbCAg ICAgICAgICB8IDIxMyArKysrKysrKystLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hs b2cuYyAgICAgICB8ICAyMiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvd2FpdC5jICAgICAgICAg ICAgIHwgMTc0ICsrKysrKysrLS0KIHNyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVy LmMgICB8ICAxOCArKwogc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNDlfd2FpdF9mb3JfbHNuLnBsIHwg NDExICsrKysrKysrKysrKysrKysrKysrKystLQogNSBmaWxlcyBjaGFuZ2VkLCA3NDEgaW5zZXJ0 aW9ucygrKSwgOTcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi93 YWl0X2Zvci5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi93YWl0X2Zvci5zZ21sCmluZGV4IDNiOGU4 NDJkMWRlLi5kZjcyYjMzMjdjOCAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3JlZi93YWl0X2Zv ci5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvd2FpdF9mb3Iuc2dtbApAQCAtMTYsMTcgKzE2 LDIzIEBAIFBvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgogCiAgPHJlZm5hbWVkaXY+CiAgIDxyZWZu YW1lPldBSVQgRk9SPC9yZWZuYW1lPgotICA8cmVmcHVycG9zZT53YWl0IGZvciB0YXJnZXQgPGFj cm9ueW0+TFNOPC9hY3JvbnltPiB0byBiZSByZXBsYXllZCwgb3B0aW9uYWxseSB3aXRoIGEgdGlt ZW91dDwvcmVmcHVycG9zZT4KKyAgPHJlZnB1cnBvc2U+d2FpdCBmb3IgV0FMIHRvIHJlYWNoIGEg dGFyZ2V0IDxhY3JvbnltPkxTTjwvYWNyb255bT48L3JlZnB1cnBvc2U+CiAgPC9yZWZuYW1lZGl2 PgogCiAgPHJlZnN5bm9wc2lzZGl2PgogPHN5bm9wc2lzPgotV0FJVCBGT1IgTFNOICc8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bHNuPC9yZXBsYWNlYWJsZT4nIFsgV0lUSCAoIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5vcHRpb248L3JlcGxhY2VhYmxlPiBbLCAuLi5dICkg XQorV0FJVCBGT1IgTFNOICc8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bHNuPC9yZXBs YWNlYWJsZT4nCisgICAgWyBXSVRIICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm9w dGlvbjwvcmVwbGFjZWFibGU+IFssIC4uLl0gKSBdCiAKIDxwaHJhc2U+d2hlcmUgPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm9wdGlvbjwvcmVwbGFjZWFibGU+IGNhbiBiZTo8L3BocmFz ZT4KIAorICAgIE1PREUgJzxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5tb2RlPC9yZXBs YWNlYWJsZT4nCiAgICAgVElNRU9VVCAnPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRp bWVvdXQ8L3JlcGxhY2VhYmxlPicKICAgICBOT19USFJPVworCis8cGhyYXNlPmFuZCA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bW9kZTwvcmVwbGFjZWFibGU+IGNhbiBiZTo8L3BocmFz ZT4KKworICAgIHN0YW5kYnlfcmVwbGF5IHwgc3RhbmRieV93cml0ZSB8IHN0YW5kYnlfZmx1c2gg fCBwcmltYXJ5X2ZsdXNoCiA8L3N5bm9wc2lzPgogIDwvcmVmc3lub3BzaXNkaXY+CiAKQEAgLTM0 LDIwICs0MCwyNyBAQCBXQUlUIEZPUiBMU04gJzxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5sc248L3JlcGxhY2VhYmxlPicgWyBXSVRIICggPHJlcGxhYwogICA8dGl0bGU+RGVzY3JpcHRp b248L3RpdGxlPgogCiAgIDxwYXJhPgotICAgIFdhaXRzIHVudGlsIHJlY292ZXJ5IHJlcGxheXMg PHBhcmFtZXRlcj5sc248L3BhcmFtZXRlcj4uCi0gICAgSWYgbm8gPHBhcmFtZXRlcj50aW1lb3V0 PC9wYXJhbWV0ZXI+IGlzIHNwZWNpZmllZCBvciBpdCBpcyBzZXQgdG8KLSAgICB6ZXJvLCB0aGlz IGNvbW1hbmQgd2FpdHMgaW5kZWZpbml0ZWx5IGZvciB0aGUKLSAgICA8cGFyYW1ldGVyPmxzbjwv cGFyYW1ldGVyPi4KLSAgICBPbiB0aW1lb3V0LCBvciBpZiB0aGUgc2VydmVyIGlzIHByb21vdGVk IGJlZm9yZQotICAgIDxwYXJhbWV0ZXI+bHNuPC9wYXJhbWV0ZXI+IGlzIHJlYWNoZWQsIGFuIGVy cm9yIGlzIGVtaXR0ZWQsCi0gICAgdW5sZXNzIDxsaXRlcmFsPk5PX1RIUk9XPC9saXRlcmFsPiBp cyBzcGVjaWZpZWQgaW4gdGhlIFdJVEggY2xhdXNlLgotICAgIElmIDxwYXJhbWV0ZXI+Tk9fVEhS T1c8L3BhcmFtZXRlcj4gaXMgc3BlY2lmaWVkLCB0aGVuIHRoZSBjb21tYW5kCi0gICAgZG9lc24n dCB0aHJvdyBlcnJvcnMuCisgICBXYWl0cyB1bnRpbCB0aGUgc3BlY2lmaWVkIDxwYXJhbWV0ZXI+ bHNuPC9wYXJhbWV0ZXI+IGlzIHJlYWNoZWQKKyAgIGFjY29yZGluZyB0byB0aGUgc3BlY2lmaWVk IDxwYXJhbWV0ZXI+bW9kZTwvcGFyYW1ldGVyPiwKKyAgIHdoaWNoIGRldGVybWluZXMgd2hldGhl ciB0byB3YWl0IGZvciBXQUwgdG8gYmUgd3JpdHRlbiwgZmx1c2hlZCwgb3IgcmVwbGF5ZWQuCisg ICBJZiBubyA8cGFyYW1ldGVyPnRpbWVvdXQ8L3BhcmFtZXRlcj4gaXMgc3BlY2lmaWVkIG9yIGl0 IGlzIHNldCB0bworICAgemVybywgdGhpcyBjb21tYW5kIHdhaXRzIGluZGVmaW5pdGVseSBmb3Ig dGhlCisgICA8cGFyYW1ldGVyPmxzbjwvcGFyYW1ldGVyPi4KKyAgPC9wYXJhPgorCisgIDxwYXJh PgorICAgT24gdGltZW91dCwgYW4gZXJyb3IgaXMgZW1pdHRlZCB1bmxlc3MgPGxpdGVyYWw+Tk9f VEhST1c8L2xpdGVyYWw+CisgICBpcyBzcGVjaWZpZWQgaW4gdGhlIFdJVEggY2xhdXNlLiBGb3Ig c3RhbmRieSBtb2RlcworICAgKDxsaXRlcmFsPnN0YW5kYnlfcmVwbGF5PC9saXRlcmFsPiwgPGxp dGVyYWw+c3RhbmRieV93cml0ZTwvbGl0ZXJhbD4sCisgICA8bGl0ZXJhbD5zdGFuZGJ5X2ZsdXNo PC9saXRlcmFsPiksIGFuIGVycm9yIGlzIGFsc28gZW1pdHRlZCBpZiB0aGUKKyAgIHNlcnZlciBp cyBwcm9tb3RlZCBiZWZvcmUgdGhlIDxwYXJhbWV0ZXI+bHNuPC9wYXJhbWV0ZXI+IGlzIHJlYWNo ZWQuCisgICBJZiA8cGFyYW1ldGVyPk5PX1RIUk9XPC9wYXJhbWV0ZXI+IGlzIHNwZWNpZmllZCwg dGhlIGNvbW1hbmQgcmV0dXJucworICAgYSBzdGF0dXMgc3RyaW5nIGluc3RlYWQgb2YgdGhyb3dp bmcgZXJyb3JzLgogICA8L3BhcmE+CiAKICAgPHBhcmE+Ci0gICAgVGhlIHBvc3NpYmxlIHJldHVy biB2YWx1ZXMgYXJlIDxsaXRlcmFsPnN1Y2Nlc3M8L2xpdGVyYWw+LAotICAgIDxsaXRlcmFsPnRp bWVvdXQ8L2xpdGVyYWw+LCBhbmQgPGxpdGVyYWw+bm90IGluIHJlY292ZXJ5PC9saXRlcmFsPi4K KyAgIFRoZSBwb3NzaWJsZSByZXR1cm4gdmFsdWVzIGFyZSA8bGl0ZXJhbD5zdWNjZXNzPC9saXRl cmFsPiwKKyAgIDxsaXRlcmFsPnRpbWVvdXQ8L2xpdGVyYWw+LCBhbmQgPGxpdGVyYWw+bm90IGlu IHJlY292ZXJ5PC9saXRlcmFsPi4KICAgPC9wYXJhPgogIDwvcmVmc2VjdDE+CiAKQEAgLTcyLDYg Kzg1LDY1IEBAIFdBSVQgRk9SIExTTiAnPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPmxz bjwvcmVwbGFjZWFibGU+JyBbIFdJVEggKCA8cmVwbGFjCiAgICAgICBUaGUgZm9sbG93aW5nIHBh cmFtZXRlcnMgYXJlIHN1cHBvcnRlZDoKIAogICAgICAgPHZhcmlhYmxlbGlzdD4KKyAgICAgICA8 dmFybGlzdGVudHJ5PgorICAgICAgICA8dGVybT48bGl0ZXJhbD5NT0RFPC9saXRlcmFsPiAnPHJl cGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm1vZGU8L3JlcGxhY2VhYmxlPic8L3Rlcm0+Cisg ICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgIDxwYXJhPgorICAgICAgICAgIFNwZWNpZmllcyB0 aGUgdHlwZSBvZiBMU04gcHJvY2Vzc2luZyB0byB3YWl0IGZvci4gSWYgbm90IHNwZWNpZmllZCwK KyAgICAgICAgICB0aGUgZGVmYXVsdCBpcyA8bGl0ZXJhbD5zdGFuZGJ5X3JlcGxheTwvbGl0ZXJh bD4uIFRoZSB2YWxpZCBtb2RlcyBhcmU6CisgICAgICAgICA8L3BhcmE+CisgICAgICAgICA8aXRl bWl6ZWRsaXN0PgorICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgPHBhcmE+CisgICAg ICAgICAgICA8bGl0ZXJhbD5zdGFuZGJ5X3JlcGxheTwvbGl0ZXJhbD46IFdhaXQgZm9yIHRoZSBM U04gdG8gYmUgcmVwbGF5ZWQKKyAgICAgICAgICAgIChhcHBsaWVkIHRvIHRoZSBkYXRhYmFzZSkg b24gYSBzdGFuZGJ5IHNlcnZlci4gQWZ0ZXIgc3VjY2Vzc2Z1bAorICAgICAgICAgICAgY29tcGxl dGlvbiwgPGZ1bmN0aW9uPnBnX2xhc3Rfd2FsX3JlcGxheV9sc24oKTwvZnVuY3Rpb24+IHdpbGwK KyAgICAgICAgICAgIHJldHVybiBhIHZhbHVlIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUg dGFyZ2V0IExTTi4gVGhpcyBtb2RlCisgICAgICAgICAgICBjYW4gb25seSBiZSB1c2VkIGR1cmlu ZyByZWNvdmVyeS4KKyAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgIDwvbGlzdGl0ZW0+Cisg ICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIDxsaXRl cmFsPnN0YW5kYnlfd3JpdGU8L2xpdGVyYWw+OiBXYWl0IGZvciB0aGUgV0FMIGNvbnRhaW5pbmcg dGhlCisgICAgICAgICAgICBMU04gdG8gYmUgcmVjZWl2ZWQgZnJvbSB0aGUgcHJpbWFyeSBhbmQg d3JpdHRlbiB0byBkaXNrIG9uIGEKKyAgICAgICAgICAgIHN0YW5kYnkgc2VydmVyLCBidXQgbm90 IHlldCBmbHVzaGVkLiBUaGlzIGlzIGZhc3RlciB0aGFuCisgICAgICAgICAgICA8bGl0ZXJhbD5z dGFuZGJ5X2ZsdXNoPC9saXRlcmFsPiBidXQgcHJvdmlkZXMgd2Vha2VyIGR1cmFiaWxpdHkKKyAg ICAgICAgICAgIGd1YXJhbnRlZXMgc2luY2UgdGhlIGRhdGEgbWF5IHN0aWxsIGJlIGluIG9wZXJh dGluZyBzeXN0ZW0KKyAgICAgICAgICAgIGJ1ZmZlcnMuIEFmdGVyIHN1Y2Nlc3NmdWwgY29tcGxl dGlvbiwgdGhlCisgICAgICAgICAgICA8c3RydWN0ZmllbGQ+d3JpdHRlbl9sc248L3N0cnVjdGZp ZWxkPiBjb2x1bW4gaW4KKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9Im1vbml0b3JpbmctcGct c3RhdC13YWwtcmVjZWl2ZXItdmlldyI+CisgICAgICAgICAgICA8c3RydWN0bmFtZT5wZ19zdGF0 X3dhbF9yZWNlaXZlcjwvc3RydWN0bmFtZT48L2xpbms+IHdpbGwgc2hvdworICAgICAgICAgICAg YSB2YWx1ZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHRhcmdldCBMU04uIFRoaXMgbW9k ZSBjYW4KKyAgICAgICAgICAgIG9ubHkgYmUgdXNlZCBkdXJpbmcgcmVjb3ZlcnkuCisgICAgICAg ICAgIDwvcGFyYT4KKyAgICAgICAgICA8L2xpc3RpdGVtPgorICAgICAgICAgIDxsaXN0aXRlbT4K KyAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICA8bGl0ZXJhbD5zdGFuZGJ5X2ZsdXNoPC9s aXRlcmFsPjogV2FpdCBmb3IgdGhlIFdBTCBjb250YWluaW5nIHRoZQorICAgICAgICAgICAgTFNO IHRvIGJlIHJlY2VpdmVkIGZyb20gdGhlIHByaW1hcnkgYW5kIGZsdXNoZWQgdG8gZGlzayBvbiBh CisgICAgICAgICAgICBzdGFuZGJ5IHNlcnZlci4gVGhpcyBwcm92aWRlcyBhIGR1cmFiaWxpdHkg Z3VhcmFudGVlIHdpdGhvdXQKKyAgICAgICAgICAgIHdhaXRpbmcgZm9yIHRoZSBXQUwgdG8gYmUg YXBwbGllZC4gQWZ0ZXIgc3VjY2Vzc2Z1bCBjb21wbGV0aW9uLAorICAgICAgICAgICAgPGZ1bmN0 aW9uPnBnX2xhc3Rfd2FsX3JlY2VpdmVfbHNuKCk8L2Z1bmN0aW9uPiB3aWxsIHJldHVybiBhCisg ICAgICAgICAgICB2YWx1ZSBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gdGhlIHRhcmdldCBMU04u IFRoaXMgdmFsdWUgaXMKKyAgICAgICAgICAgIGFsc28gYXZhaWxhYmxlIGFzIHRoZSA8c3RydWN0 ZmllbGQ+Zmx1c2hlZF9sc248L3N0cnVjdGZpZWxkPgorICAgICAgICAgICAgY29sdW1uIGluIDxs aW5rIGxpbmtlbmQ9Im1vbml0b3JpbmctcGctc3RhdC13YWwtcmVjZWl2ZXItdmlldyI+CisgICAg ICAgICAgICA8c3RydWN0bmFtZT5wZ19zdGF0X3dhbF9yZWNlaXZlcjwvc3RydWN0bmFtZT48L2xp bms+LiBUaGlzIG1vZGUKKyAgICAgICAgICAgIGNhbiBvbmx5IGJlIHVzZWQgZHVyaW5nIHJlY292 ZXJ5LgorICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgPC9saXN0aXRlbT4KKyAgICAgICAg ICA8bGlzdGl0ZW0+CisgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgPGxpdGVyYWw+cHJp bWFyeV9mbHVzaDwvbGl0ZXJhbD46IFdhaXQgZm9yIHRoZSBXQUwgY29udGFpbmluZyB0aGUKKyAg ICAgICAgICAgIExTTiB0byBiZSBmbHVzaGVkIHRvIGRpc2sgb24gYSBwcmltYXJ5IHNlcnZlci4g QWZ0ZXIgc3VjY2Vzc2Z1bAorICAgICAgICAgICAgY29tcGxldGlvbiwgPGZ1bmN0aW9uPnBnX2N1 cnJlbnRfd2FsX2ZsdXNoX2xzbigpPC9mdW5jdGlvbj4gd2lsbAorICAgICAgICAgICAgcmV0dXJu IGEgdmFsdWUgZ3JlYXRlciB0aGFuIG9yIGVxdWFsIHRvIHRoZSB0YXJnZXQgTFNOLiBUaGlzIG1v ZGUKKyAgICAgICAgICAgIGNhbiBvbmx5IGJlIHVzZWQgb24gYSBwcmltYXJ5IHNlcnZlciAobm90 IGR1cmluZyByZWNvdmVyeSkuCisgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICA8L2xpc3Rp dGVtPgorICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvbGlzdGl0ZW0+CisgICAg ICAgPC92YXJsaXN0ZW50cnk+CisKICAgICAgICA8dmFybGlzdGVudHJ5PgogICAgICAgICA8dGVy bT48bGl0ZXJhbD5USU1FT1VUPC9saXRlcmFsPiAnPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPnRpbWVvdXQ8L3JlcGxhY2VhYmxlPic8L3Rlcm0+CiAgICAgICAgIDxsaXN0aXRlbT4KQEAg LTEzNSw5ICsyMDcsMTIgQEAgV0FJVCBGT1IgTFNOICc8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+bHNuPC9yZXBsYWNlYWJsZT4nIFsgV0lUSCAoIDxyZXBsYWMKICAgICA8bGlzdGl0ZW0+ CiAgICAgIDxwYXJhPgogICAgICAgVGhpcyByZXR1cm4gdmFsdWUgZGVub3RlcyB0aGF0IHRoZSBk YXRhYmFzZSBzZXJ2ZXIgaXMgbm90IGluIGEgcmVjb3ZlcnkKLSAgICAgIHN0YXRlLiAgVGhpcyBt aWdodCBtZWFuIGVpdGhlciB0aGUgZGF0YWJhc2Ugc2VydmVyIHdhcyBub3QgaW4gcmVjb3ZlcnkK LSAgICAgIGF0IHRoZSBtb21lbnQgb2YgcmVjZWl2aW5nIHRoZSBjb21tYW5kLCBvciBpdCB3YXMg cHJvbW90ZWQgYmVmb3JlCi0gICAgICByZWFjaGluZyB0aGUgdGFyZ2V0IDxwYXJhbWV0ZXI+bHNu PC9wYXJhbWV0ZXI+LgorICAgICAgc3RhdGUuIFRoaXMgbWlnaHQgbWVhbiBlaXRoZXIgdGhlIGRh dGFiYXNlIHNlcnZlciB3YXMgbm90IGluIHJlY292ZXJ5CisgICAgICBhdCB0aGUgbW9tZW50IG9m IHJlY2VpdmluZyB0aGUgY29tbWFuZCAoaS5lLiwgZXhlY3V0ZWQgb24gYSBwcmltYXJ5KSwKKyAg ICAgIG9yIGl0IHdhcyBwcm9tb3RlZCBiZWZvcmUgcmVhY2hpbmcgdGhlIHRhcmdldCA8cGFyYW1l dGVyPmxzbjwvcGFyYW1ldGVyPi4KKyAgICAgIEluIHRoZSBwcm9tb3Rpb24gY2FzZSwgdGhpcyBz dGF0dXMgaW5kaWNhdGVzIGEgdGltZWxpbmUgY2hhbmdlIG9jY3VycmVkLAorICAgICAgYW5kIHRo ZSBhcHBsaWNhdGlvbiBzaG91bGQgcmUtZXZhbHVhdGUgd2hldGhlciB0aGUgdGFyZ2V0IExTTiBp cyBzdGlsbAorICAgICAgcmVsZXZhbnQuCiAgICAgIDwvcGFyYT4KICAgICA8L2xpc3RpdGVtPgog ICAgPC92YXJsaXN0ZW50cnk+CkBAIC0xNDgsMjUgKzIyMywzNCBAQCBXQUlUIEZPUiBMU04gJzxy ZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5sc248L3JlcGxhY2VhYmxlPicgWyBXSVRIICgg PHJlcGxhYwogICA8dGl0bGU+Tm90ZXM8L3RpdGxlPgogCiAgIDxwYXJhPgotICAgIDxjb21tYW5k PldBSVQgRk9SPC9jb21tYW5kPiBjb21tYW5kIHdhaXRzIHRpbGwKLSAgICA8cGFyYW1ldGVyPmxz bjwvcGFyYW1ldGVyPiB0byBiZSByZXBsYXllZCBvbiBzdGFuZGJ5LgotICAgIFRoYXQgaXMsIGFm dGVyIHRoaXMgY29tbWFuZCBleGVjdXRpb24sIHRoZSB2YWx1ZSByZXR1cm5lZCBieQotICAgIDxm dW5jdGlvbj5wZ19sYXN0X3dhbF9yZXBsYXlfbHNuPC9mdW5jdGlvbj4gc2hvdWxkIGJlIGdyZWF0 ZXIgb3IgZXF1YWwKLSAgICB0byB0aGUgPHBhcmFtZXRlcj5sc248L3BhcmFtZXRlcj4gdmFsdWUu ICBUaGlzIGlzIHVzZWZ1bCB0byBhY2hpZXZlCi0gICAgcmVhZC15b3VyLXdyaXRlcy1jb25zaXN0 ZW5jeSwgd2hpbGUgdXNpbmcgYXN5bmMgcmVwbGljYSBmb3IgcmVhZHMgYW5kCi0gICAgcHJpbWFy eSBmb3Igd3JpdGVzLiAgSW4gdGhhdCBjYXNlLCB0aGUgPGFjcm9ueW0+bHNuPC9hY3JvbnltPiBv ZiB0aGUgbGFzdAotICAgIG1vZGlmaWNhdGlvbiBzaG91bGQgYmUgc3RvcmVkIG9uIHRoZSBjbGll bnQgYXBwbGljYXRpb24gc2lkZSBvciB0aGUKLSAgICBjb25uZWN0aW9uIHBvb2xlciBzaWRlLgor ICAgPGNvbW1hbmQ+V0FJVCBGT1I8L2NvbW1hbmQ+IHdhaXRzIHVudGlsIHRoZSBzcGVjaWZpZWQK KyAgIDxwYXJhbWV0ZXI+bHNuPC9wYXJhbWV0ZXI+IGlzIHJlYWNoZWQgYWNjb3JkaW5nIHRvIHRo ZSBzcGVjaWZpZWQKKyAgIDxwYXJhbWV0ZXI+bW9kZTwvcGFyYW1ldGVyPi4gVGhlIDxsaXRlcmFs PnN0YW5kYnlfcmVwbGF5PC9saXRlcmFsPiBtb2RlCisgICB3YWl0cyBmb3IgdGhlIExTTiB0byBi ZSByZXBsYXllZCAoYXBwbGllZCB0byB0aGUgZGF0YWJhc2UpLCB3aGljaCBpcworICAgdXNlZnVs IHRvIGFjaGlldmUgcmVhZC15b3VyLXdyaXRlcyBjb25zaXN0ZW5jeSB3aGlsZSB1c2luZyBhbiBh c3luYworICAgcmVwbGljYSBmb3IgcmVhZHMgYW5kIHRoZSBwcmltYXJ5IGZvciB3cml0ZXMuIFRo ZQorICAgPGxpdGVyYWw+c3RhbmRieV9mbHVzaDwvbGl0ZXJhbD4gbW9kZSB3YWl0cyBmb3IgdGhl IFdBTCB0byBiZSBmbHVzaGVkCisgICB0byBkdXJhYmxlIHN0b3JhZ2Ugb24gdGhlIHJlcGxpY2Es IHByb3ZpZGluZyBhIGR1cmFiaWxpdHkgZ3VhcmFudGVlCisgICB3aXRob3V0IHdhaXRpbmcgZm9y IHJlcGxheS4gVGhlIDxsaXRlcmFsPnN0YW5kYnlfd3JpdGU8L2xpdGVyYWw+IG1vZGUKKyAgIHdh aXRzIGZvciB0aGUgV0FMIHRvIGJlIHdyaXR0ZW4gdG8gdGhlIG9wZXJhdGluZyBzeXN0ZW0sIHdo aWNoIGlzCisgICBmYXN0ZXIgdGhhbiBmbHVzaCBidXQgcHJvdmlkZXMgd2Vha2VyIGR1cmFiaWxp dHkgZ3VhcmFudGVlcy4gVGhlCisgICA8bGl0ZXJhbD5wcmltYXJ5X2ZsdXNoPC9saXRlcmFsPiBt b2RlIHdhaXRzIGZvciBXQUwgdG8gYmUgZmx1c2hlZCBvbgorICAgYSBwcmltYXJ5IHNlcnZlci4g SW4gYWxsIGNhc2VzLCB0aGUgPGFjcm9ueW0+TFNOPC9hY3JvbnltPiBvZiB0aGUgbGFzdAorICAg bW9kaWZpY2F0aW9uIHNob3VsZCBiZSBzdG9yZWQgb24gdGhlIGNsaWVudCBhcHBsaWNhdGlvbiBz aWRlIG9yIHRoZQorICAgY29ubmVjdGlvbiBwb29sZXIgc2lkZS4KICAgPC9wYXJhPgogCiAgIDxw YXJhPgotICAgIDxjb21tYW5kPldBSVQgRk9SPC9jb21tYW5kPiBjb21tYW5kIHNob3VsZCBiZSBj YWxsZWQgb24gc3RhbmRieS4KLSAgICBJZiBhIHVzZXIgcnVucyA8Y29tbWFuZD5XQUlUIEZPUjwv Y29tbWFuZD4gb24gcHJpbWFyeSwgaXQKLSAgICB3aWxsIGVycm9yIG91dCB1bmxlc3MgPHBhcmFt ZXRlcj5OT19USFJPVzwvcGFyYW1ldGVyPiBpcyBzcGVjaWZpZWQgaW4gdGhlIFdJVEggY2xhdXNl LgotICAgIEhvd2V2ZXIsIGlmIDxjb21tYW5kPldBSVQgRk9SPC9jb21tYW5kPiBpcwotICAgIGNh bGxlZCBvbiBwcmltYXJ5IHByb21vdGVkIGZyb20gc3RhbmRieSBhbmQgPGxpdGVyYWw+bHNuPC9s aXRlcmFsPgotICAgIHdhcyBhbHJlYWR5IHJlcGxheWVkLCB0aGVuIHRoZSA8Y29tbWFuZD5XQUlU IEZPUjwvY29tbWFuZD4gY29tbWFuZCBqdXN0Ci0gICAgZXhpdHMgaW1tZWRpYXRlbHkuCisgICBU aGUgc3RhbmRieSBtb2RlcyAoPGxpdGVyYWw+c3RhbmRieV9yZXBsYXk8L2xpdGVyYWw+LAorICAg PGxpdGVyYWw+c3RhbmRieV93cml0ZTwvbGl0ZXJhbD4sIDxsaXRlcmFsPnN0YW5kYnlfZmx1c2g8 L2xpdGVyYWw+KQorICAgY2FuIG9ubHkgYmUgdXNlZCBkdXJpbmcgcmVjb3ZlcnksIGFuZCA8bGl0 ZXJhbD5wcmltYXJ5X2ZsdXNoPC9saXRlcmFsPgorICAgY2FuIG9ubHkgYmUgdXNlZCBvbiBhIHBy aW1hcnkgc2VydmVyLiBVc2luZyB0aGUgd3JvbmcgbW9kZSBmb3IgdGhlCisgICBjdXJyZW50IHNl cnZlciBzdGF0ZSB3aWxsIHJlc3VsdCBpbiBhbiBlcnJvci4gSWYgYSBzdGFuZGJ5IGlzIHByb21v dGVkCisgICB3aGlsZSB3YWl0aW5nIHdpdGggYSBzdGFuZGJ5IG1vZGUsIHRoZSBjb21tYW5kIHdp bGwgcmV0dXJuCisgICA8bGl0ZXJhbD5ub3QgaW4gcmVjb3Zlcnk8L2xpdGVyYWw+IChvciB0aHJv dyBhbiBlcnJvciBpZgorICAgPGxpdGVyYWw+Tk9fVEhST1c8L2xpdGVyYWw+IGlzIG5vdCBzcGVj aWZpZWQpLiBQcm9tb3Rpb24gY3JlYXRlcyBhIG5ldworICAgdGltZWxpbmUsIGFuZCB0aGUgTFNO IGJlaW5nIHdhaXRlZCBmb3IgbWF5IHJlZmVyIHRvIFdBTCBmcm9tIHRoZSBvbGQKKyAgIHRpbWVs aW5lLgogICA8L3BhcmE+CiAKIDwvcmVmc2VjdDE+CkBAIC0xNzUsMjEgKzI1OSwyMSBAQCBXQUlU IEZPUiBMU04gJzxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5sc248L3JlcGxhY2VhYmxl PicgWyBXSVRIICggPHJlcGxhYwogICA8dGl0bGU+RXhhbXBsZXM8L3RpdGxlPgogCiAgIDxwYXJh PgotICAgIFlvdSBjYW4gdXNlIDxjb21tYW5kPldBSVQgRk9SPC9jb21tYW5kPiBjb21tYW5kIHRv IHdhaXQgZm9yCi0gICAgdGhlIDx0eXBlPnBnX2xzbjwvdHlwZT4gdmFsdWUuICBGb3IgZXhhbXBs ZSwgYW4gYXBwbGljYXRpb24gY291bGQgdXBkYXRlCi0gICAgdGhlIDxsaXRlcmFsPm1vdmllPC9s aXRlcmFsPiB0YWJsZSBhbmQgZ2V0IHRoZSA8YWNyb255bT5sc248L2Fjcm9ueW0+IGFmdGVyCi0g ICAgY2hhbmdlcyBqdXN0IG1hZGUuICBUaGlzIGV4YW1wbGUgdXNlcyA8ZnVuY3Rpb24+cGdfY3Vy cmVudF93YWxfaW5zZXJ0X2xzbjwvZnVuY3Rpb24+Ci0gICAgb24gcHJpbWFyeSBzZXJ2ZXIgdG8g Z2V0IHRoZSA8YWNyb255bT5sc248L2Fjcm9ueW0+IGdpdmVuIHRoYXQKLSAgICA8dmFybmFtZT5z eW5jaHJvbm91c19jb21taXQ8L3Zhcm5hbWU+IGNvdWxkIGJlIHNldCB0bwotICAgIDxsaXRlcmFs Pm9mZjwvbGl0ZXJhbD4uCisgICBZb3UgY2FuIHVzZSA8Y29tbWFuZD5XQUlUIEZPUjwvY29tbWFu ZD4gY29tbWFuZCB0byB3YWl0IGZvcgorICAgdGhlIDx0eXBlPnBnX2xzbjwvdHlwZT4gdmFsdWUu ICBGb3IgZXhhbXBsZSwgYW4gYXBwbGljYXRpb24gY291bGQgdXBkYXRlCisgICB0aGUgPGxpdGVy YWw+bW92aWU8L2xpdGVyYWw+IHRhYmxlIGFuZCBnZXQgdGhlIDxhY3JvbnltPmxzbjwvYWNyb255 bT4gYWZ0ZXIKKyAgIGNoYW5nZXMganVzdCBtYWRlLiAgVGhpcyBleGFtcGxlIHVzZXMgPGZ1bmN0 aW9uPnBnX2N1cnJlbnRfd2FsX2luc2VydF9sc248L2Z1bmN0aW9uPgorICAgb24gcHJpbWFyeSBz ZXJ2ZXIgdG8gZ2V0IHRoZSA8YWNyb255bT5sc248L2Fjcm9ueW0+IGdpdmVuIHRoYXQKKyAgIDx2 YXJuYW1lPnN5bmNocm9ub3VzX2NvbW1pdDwvdmFybmFtZT4gY291bGQgYmUgc2V0IHRvCisgICA8 bGl0ZXJhbD5vZmY8L2xpdGVyYWw+LgogCiAgICA8cHJvZ3JhbWxpc3Rpbmc+CiBwb3N0Z3Jlcz0j IFVQREFURSBtb3ZpZSBTRVQgZ2VucmUgPSAnRHJhbWF0aWMnIFdIRVJFIGdlbnJlID0gJ0RyYW1h JzsKIFVQREFURSAxMDAKIHBvc3RncmVzPSMgU0VMRUNUIHBnX2N1cnJlbnRfd2FsX2luc2VydF9s c24oKTsKLXBnX2N1cnJlbnRfd2FsX2luc2VydF9sc24KLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0w LzMwNkVFMjAKKyBwZ19jdXJyZW50X3dhbF9pbnNlcnRfbHNuCistLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KKyAwLzMwNkVFMjAKICgxIHJvdykKIDwvcHJvZ3JhbWxpc3Rpbmc+CiAKQEAgLTIw MCw3ICsyODQsNyBAQCBwZ19jdXJyZW50X3dhbF9pbnNlcnRfbHNuCiA8cHJvZ3JhbWxpc3Rpbmc+ CiBwb3N0Z3Jlcz0jIFdBSVQgRk9SIExTTiAnMC8zMDZFRTIwJzsKICBzdGF0dXMKLS0tLS0tLS0t CistLS0tLS0tLS0KICBzdWNjZXNzCiAoMSByb3cpCiBwb3N0Z3Jlcz0jIFNFTEVDVCAqIEZST00g bW92aWUgV0hFUkUgZ2VucmUgPSAnRHJhbWEnOwpAQCAtMjExLDcgKzI5NSw0MyBAQCBwb3N0Z3Jl cz0jIFNFTEVDVCAqIEZST00gbW92aWUgV0hFUkUgZ2VucmUgPSAnRHJhbWEnOwogICA8L3BhcmE+ CiAKICAgPHBhcmE+Ci0gICAgSWYgdGhlIHRhcmdldCBMU04gaXMgbm90IHJlYWNoZWQgYmVmb3Jl IHRoZSB0aW1lb3V0LCB0aGUgZXJyb3IgaXMgdGhyb3duLgorICAgV2FpdCBmb3IgZmx1c2ggKGRh dGEgZHVyYWJsZSBvbiByZXBsaWNhKToKKworPHByb2dyYW1saXN0aW5nPgorcG9zdGdyZXM9IyBX QUlUIEZPUiBMU04gJzAvMzA2RUUyMCcgV0lUSCAoTU9ERSAnc3RhbmRieV9mbHVzaCcpOworIHN0 YXR1cworLS0tLS0tLS0tCisgc3VjY2VzcworKDEgcm93KQorPC9wcm9ncmFtbGlzdGluZz4KKyAg PC9wYXJhPgorCisgIDxwYXJhPgorICAgV2FpdCBmb3Igd3JpdGUgd2l0aCB0aW1lb3V0OgorCis8 cHJvZ3JhbWxpc3Rpbmc+Citwb3N0Z3Jlcz0jIFdBSVQgRk9SIExTTiAnMC8zMDZFRTIwJyBXSVRI IChNT0RFICdzdGFuZGJ5X3dyaXRlJywgVElNRU9VVCAnMTAwbXMnLCBOT19USFJPVyk7Cisgc3Rh dHVzCistLS0tLS0tLS0KKyBzdWNjZXNzCisoMSByb3cpCis8L3Byb2dyYW1saXN0aW5nPgorICA8 L3BhcmE+CisKKyAgPHBhcmE+CisgICBXYWl0IGZvciBmbHVzaCBvbiBwcmltYXJ5OgorCis8cHJv Z3JhbWxpc3Rpbmc+Citwb3N0Z3Jlcz0jIFdBSVQgRk9SIExTTiAnMC8zMDZFRTIwJyBXSVRIIChN T0RFICdwcmltYXJ5X2ZsdXNoJyk7Cisgc3RhdHVzCistLS0tLS0tLS0KKyBzdWNjZXNzCisoMSBy b3cpCis8L3Byb2dyYW1saXN0aW5nPgorICA8L3BhcmE+CisKKyAgPHBhcmE+CisgICBJZiB0aGUg dGFyZ2V0IExTTiBpcyBub3QgcmVhY2hlZCBiZWZvcmUgdGhlIHRpbWVvdXQsIGFuIGVycm9yIGlz IHRocm93bjoKIAogPHByb2dyYW1saXN0aW5nPgogcG9zdGdyZXM9IyBXQUlUIEZPUiBMU04gJzAv MzA2RUUyMCcgV0lUSCAoVElNRU9VVCAnMC4xcycpOwpAQCAtMjIxLDExICszNDEsMTIgQEAgRVJS T1I6ICB0aW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3IgdGFyZ2V0IExTTiAwLzMwNkVFMjAgdG8g YmUgcmVwbGF5ZWQ7IGN1cnJlbnQKIAogICA8cGFyYT4KICAgIFRoZSBzYW1lIGV4YW1wbGUgdXNl cyA8Y29tbWFuZD5XQUlUIEZPUjwvY29tbWFuZD4gd2l0aAotICAgPHBhcmFtZXRlcj5OT19USFJP VzwvcGFyYW1ldGVyPiBvcHRpb24uCisgICA8cGFyYW1ldGVyPk5PX1RIUk9XPC9wYXJhbWV0ZXI+ IG9wdGlvbjoKKwogPHByb2dyYW1saXN0aW5nPgogcG9zdGdyZXM9IyBXQUlUIEZPUiBMU04gJzAv MzA2RUUyMCcgV0lUSCAoVElNRU9VVCAnMTAwbXMnLCBOT19USFJPVyk7CiAgc3RhdHVzCi0tLS0t LS0tLQorLS0tLS0tLS0tCiAgdGltZW91dAogKDEgcm93KQogPC9wcm9ncmFtbGlzdGluZz4KZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy90cmFuc2FtL3hsb2cuYwppbmRleCBmZGI5MmRlYWM1Ny4uZGE5NmI2MjcyMjggMTAw NjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy90cmFuc2FtL3hsb2cuYworKysgYi9zcmMvYmFj a2VuZC9hY2Nlc3MvdHJhbnNhbS94bG9nLmMKQEAgLTI5MTgsNiArMjkxOCwxNCBAQCBYTG9nRmx1 c2goWExvZ1JlY1B0ciByZWNvcmQpCiAJLyogd2FrZSB1cCB3YWxzZW5kZXJzIG5vdyB0aGF0IHdl J3ZlIHJlbGVhc2VkIGhlYXZpbHkgY29udGVuZGVkIGxvY2tzICovCiAJV2FsU25kV2FrZXVwUHJv Y2Vzc1JlcXVlc3RzKHRydWUsICFSZWNvdmVyeUluUHJvZ3Jlc3MoKSk7CiAKKwkvKgorCSAqIElm IHdlIGZsdXNoZWQgYW4gTFNOIHRoYXQgc29tZW9uZSB3YXMgd2FpdGluZyBmb3IsIG5vdGlmeSB0 aGUgd2FpdGVycy4KKwkgKi8KKwlpZiAod2FpdExTTlN0YXRlICYmCisJCShMb2d3cnRSZXN1bHQu Rmx1c2ggPj0KKwkJIHBnX2F0b21pY19yZWFkX3U2NCgmd2FpdExTTlN0YXRlLT5taW5XYWl0ZWRM U05bV0FJVF9MU05fVFlQRV9QUklNQVJZX0ZMVVNIXSkpKQorCQlXYWl0TFNOV2FrZXVwKFdBSVRf TFNOX1RZUEVfUFJJTUFSWV9GTFVTSCwgTG9nd3J0UmVzdWx0LkZsdXNoKTsKKwogCS8qCiAJICog SWYgd2Ugc3RpbGwgaGF2ZW4ndCBmbHVzaGVkIHRvIHRoZSByZXF1ZXN0IHBvaW50IHRoZW4gd2Ug aGF2ZSBhCiAJICogcHJvYmxlbTsgbW9zdCBsaWtlbHksIHRoZSByZXF1ZXN0ZWQgZmx1c2ggcG9p bnQgaXMgcGFzdCBlbmQgb2YgWExPRy4KQEAgLTMxMDAsNiArMzEwOCwxNCBAQCBYTG9nQmFja2dy b3VuZEZsdXNoKHZvaWQpCiAJLyogd2FrZSB1cCB3YWxzZW5kZXJzIG5vdyB0aGF0IHdlJ3ZlIHJl bGVhc2VkIGhlYXZpbHkgY29udGVuZGVkIGxvY2tzICovCiAJV2FsU25kV2FrZXVwUHJvY2Vzc1Jl cXVlc3RzKHRydWUsICFSZWNvdmVyeUluUHJvZ3Jlc3MoKSk7CiAKKwkvKgorCSAqIElmIHdlIGZs dXNoZWQgYW4gTFNOIHRoYXQgc29tZW9uZSB3YXMgd2FpdGluZyBmb3IsIG5vdGlmeSB0aGUgd2Fp dGVycy4KKwkgKi8KKwlpZiAod2FpdExTTlN0YXRlICYmCisJCShMb2d3cnRSZXN1bHQuRmx1c2gg Pj0KKwkJIHBnX2F0b21pY19yZWFkX3U2NCgmd2FpdExTTlN0YXRlLT5taW5XYWl0ZWRMU05bV0FJ VF9MU05fVFlQRV9QUklNQVJZX0ZMVVNIXSkpKQorCQlXYWl0TFNOV2FrZXVwKFdBSVRfTFNOX1RZ UEVfUFJJTUFSWV9GTFVTSCwgTG9nd3J0UmVzdWx0LkZsdXNoKTsKKwogCS8qCiAJICogR3JlYXQs IGRvbmUuIFRvIHRha2Ugc29tZSB3b3JrIG9mZiB0aGUgY3JpdGljYWwgcGF0aCwgdHJ5IHRvIGlu aXRpYWxpemUKIAkgKiBhcyBtYW55IG9mIHRoZSBuby1sb25nZXItbmVlZGVkIFdBTCBidWZmZXJz IGZvciBmdXR1cmUgdXNlIGFzIHdlIGNhbi4KQEAgLTYyNzcsMTAgKzYyOTMsMTIgQEAgU3RhcnR1 cFhMT0codm9pZCkKIAlXYWtldXBDaGVja3BvaW50ZXIoKTsKIAogCS8qCi0JICogV2FrZSB1cCBh bGwgd2FpdGVycyBmb3IgcmVwbGF5IExTTi4gIFRoZXkgbmVlZCB0byByZXBvcnQgYW4gZXJyb3Ig dGhhdAotCSAqIHJlY292ZXJ5IHdhcyBlbmRlZCBiZWZvcmUgcmVhY2hpbmcgdGhlIHRhcmdldCBM U04uCisJICogV2FrZSB1cCBhbGwgd2FpdGVycy4gIFRoZXkgbmVlZCB0byByZXBvcnQgYW4gZXJy b3IgdGhhdCByZWNvdmVyeSB3YXMKKwkgKiBlbmRlZCBiZWZvcmUgcmVhY2hpbmcgdGhlIHRhcmdl dCBMU04uCiAJICovCiAJV2FpdExTTldha2V1cChXQUlUX0xTTl9UWVBFX1NUQU5EQllfUkVQTEFZ LCBJbnZhbGlkWExvZ1JlY1B0cik7CisJV2FpdExTTldha2V1cChXQUlUX0xTTl9UWVBFX1NUQU5E QllfV1JJVEUsIEludmFsaWRYTG9nUmVjUHRyKTsKKwlXYWl0TFNOV2FrZXVwKFdBSVRfTFNOX1RZ UEVfU1RBTkRCWV9GTFVTSCwgSW52YWxpZFhMb2dSZWNQdHIpOwogCiAJLyoKIAkgKiBTaHV0ZG93 biB0aGUgcmVjb3ZlcnkgZW52aXJvbm1lbnQuICBUaGlzIG11c3Qgb2NjdXIgYWZ0ZXIKZGlmZiAt LWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3dhaXQuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3dhaXQuYwppbmRleCBkZDI1NzBjYjc4Ny4uNTRmMmRmMjQyNWYgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3dhaXQuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy93YWl0LmMK QEAgLTIsNyArMiw3IEBACiAgKgogICogd2FpdC5jCiAgKgkgIEltcGxlbWVudHMgV0FJVCBGT1Is IHdoaWNoIGFsbG93cyB3YWl0aW5nIGZvciBldmVudHMgc3VjaCBhcwotICoJICB0aW1lIHBhc3Np bmcgb3IgTFNOIGhhdmluZyBiZWVuIHJlcGxheWVkIG9uIHJlcGxpY2EuCisgKgkgIHRpbWUgcGFz c2luZyBvciBMU04gaGF2aW5nIGJlZW4gcmVwbGF5ZWQsIGZsdXNoZWQsIG9yIHdyaXR0ZW4uCiAg KgogICogUG9ydGlvbnMgQ29weXJpZ2h0IChjKSAyMDI1LCBQb3N0Z3JlU1FMIEdsb2JhbCBEZXZl bG9wbWVudCBHcm91cAogICoKQEAgLTE1LDYgKzE1LDcgQEAKIAogI2luY2x1ZGUgPG1hdGguaD4K IAorI2luY2x1ZGUgImFjY2Vzcy94bG9nLmgiCiAjaW5jbHVkZSAiYWNjZXNzL3hsb2dyZWNvdmVy eS5oIgogI2luY2x1ZGUgImFjY2Vzcy94bG9nd2FpdC5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2Rl ZnJlbS5oIgpAQCAtMzQsMTIgKzM1LDE0IEBAIEV4ZWNXYWl0U3RtdChQYXJzZVN0YXRlICpwc3Rh dGUsIFdhaXRTdG10ICpzdG10LCBEZXN0UmVjZWl2ZXIgKmRlc3QpCiAJWExvZ1JlY1B0cglsc247 CiAJaW50NjQJCXRpbWVvdXQgPSAwOwogCVdhaXRMU05SZXN1bHQgd2FpdExTTlJlc3VsdDsKKwlX YWl0TFNOVHlwZSBsc25UeXBlID0gV0FJVF9MU05fVFlQRV9TVEFOREJZX1JFUExBWTsgLyogZGVm YXVsdCAqLwogCWJvb2wJCXRocm93ID0gdHJ1ZTsKIAlUdXBsZURlc2MJdHVwZGVzYzsKIAlUdXBP dXRwdXRTdGF0ZSAqdHN0YXRlOwogCWNvbnN0IGNoYXIgKnJlc3VsdCA9ICI8dW5zZXQ+IjsKIAli b29sCQl0aW1lb3V0X3NwZWNpZmllZCA9IGZhbHNlOwogCWJvb2wJCW5vX3Rocm93X3NwZWNpZmll ZCA9IGZhbHNlOworCWJvb2wJCW1vZGVfc3BlY2lmaWVkID0gZmFsc2U7CiAKIAkvKiBQYXJzZSBh bmQgdmFsaWRhdGUgdGhlIG1hbmRhdG9yeSBMU04gKi8KIAlsc24gPSBEYXR1bUdldExTTihEaXJl Y3RGdW5jdGlvbkNhbGwxKHBnX2xzbl9pbiwKQEAgLTQ3LDcgKzUwLDMyIEBAIEV4ZWNXYWl0U3Rt dChQYXJzZVN0YXRlICpwc3RhdGUsIFdhaXRTdG10ICpzdG10LCBEZXN0UmVjZWl2ZXIgKmRlc3Qp CiAKIAlmb3JlYWNoX25vZGUoRGVmRWxlbSwgZGVmZWwsIHN0bXQtPm9wdGlvbnMpCiAJewotCQlp ZiAoc3RyY21wKGRlZmVsLT5kZWZuYW1lLCAidGltZW91dCIpID09IDApCisJCWlmIChzdHJjbXAo ZGVmZWwtPmRlZm5hbWUsICJtb2RlIikgPT0gMCkKKwkJeworCQkJY2hhcgkgICAqbW9kZV9zdHI7 CisKKwkJCWlmIChtb2RlX3NwZWNpZmllZCkKKwkJCQllcnJvckNvbmZsaWN0aW5nRGVmRWxlbShk ZWZlbCwgcHN0YXRlKTsKKwkJCW1vZGVfc3BlY2lmaWVkID0gdHJ1ZTsKKworCQkJbW9kZV9zdHIg PSBkZWZHZXRTdHJpbmcoZGVmZWwpOworCisJCQlpZiAocGdfc3RyY2FzZWNtcChtb2RlX3N0ciwg InN0YW5kYnlfcmVwbGF5IikgPT0gMCkKKwkJCQlsc25UeXBlID0gV0FJVF9MU05fVFlQRV9TVEFO REJZX1JFUExBWTsKKwkJCWVsc2UgaWYgKHBnX3N0cmNhc2VjbXAobW9kZV9zdHIsICJzdGFuZGJ5 X3dyaXRlIikgPT0gMCkKKwkJCQlsc25UeXBlID0gV0FJVF9MU05fVFlQRV9TVEFOREJZX1dSSVRF OworCQkJZWxzZSBpZiAocGdfc3RyY2FzZWNtcChtb2RlX3N0ciwgInN0YW5kYnlfZmx1c2giKSA9 PSAwKQorCQkJCWxzblR5cGUgPSBXQUlUX0xTTl9UWVBFX1NUQU5EQllfRkxVU0g7CisJCQllbHNl IGlmIChwZ19zdHJjYXNlY21wKG1vZGVfc3RyLCAicHJpbWFyeV9mbHVzaCIpID09IDApCisJCQkJ bHNuVHlwZSA9IFdBSVRfTFNOX1RZUEVfUFJJTUFSWV9GTFVTSDsKKwkJCWVsc2UKKwkJCQllcmVw b3J0KEVSUk9SLAorCQkJCQkJKGVycmNvZGUoRVJSQ09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxV RSksCisJCQkJCQkgZXJybXNnKCJ1bnJlY29nbml6ZWQgdmFsdWUgZm9yICVzIG9wdGlvbiBcIiVz XCI6IFwiJXNcIiIsCisJCQkJCQkJCSJXQUlUIiwgZGVmZWwtPmRlZm5hbWUsIG1vZGVfc3RyKSwK KwkJCQkJCSBwYXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBkZWZlbC0+bG9jYXRpb24pKSk7CisJ CX0KKwkJZWxzZSBpZiAoc3RyY21wKGRlZmVsLT5kZWZuYW1lLCAidGltZW91dCIpID09IDApCiAJ CXsKIAkJCWNoYXIJICAgKnRpbWVvdXRfc3RyOwogCQkJY29uc3QgY2hhciAqaGludG1zZzsKQEAg LTEwNyw4ICsxMzUsOCBAQCBFeGVjV2FpdFN0bXQoUGFyc2VTdGF0ZSAqcHN0YXRlLCBXYWl0U3Rt dCAqc3RtdCwgRGVzdFJlY2VpdmVyICpkZXN0KQogCX0KIAogCS8qCi0JICogV2UgYXJlIGdvaW5n IHRvIHdhaXQgZm9yIHRoZSBMU04gcmVwbGF5LiAgV2Ugc2hvdWxkIGZpcnN0IGNhcmUgdGhhdCB3 ZQotCSAqIGRvbid0IGhvbGQgYSBzbmFwc2hvdCBhbmQgY29ycmVzcG9uZGluZ2x5IG91ciBNeVBy b2MtPnhtaW4gaXMgaW52YWxpZC4KKwkgKiBXZSBhcmUgZ29pbmcgdG8gd2FpdCBmb3IgdGhlIExT Ti4gIFdlIHNob3VsZCBmaXJzdCBjYXJlIHRoYXQgd2UgZG9uJ3QKKwkgKiBob2xkIGEgc25hcHNo b3QgYW5kIGNvcnJlc3BvbmRpbmdseSBvdXIgTXlQcm9jLT54bWluIGlzIGludmFsaWQuCiAJICog T3RoZXJ3aXNlLCBvdXIgc25hcHNob3QgY291bGQgcHJldmVudCB0aGUgcmVwbGF5IG9mIFdBTCBy ZWNvcmRzCiAJICogaW1wbHlpbmcgYSBraW5kIG9mIHNlbGYtZGVhZGxvY2suICBUaGlzIGlzIHRo ZSByZWFzb24gd2h5IFdBSVQgRk9SIGlzIGEKIAkgKiBjb21tYW5kLCBub3QgYSBwcm9jZWR1cmUg b3IgZnVuY3Rpb24uCkBAIC0xNDAsNyArMTY4LDIyIEBAIEV4ZWNXYWl0U3RtdChQYXJzZVN0YXRl ICpwc3RhdGUsIFdhaXRTdG10ICpzdG10LCBEZXN0UmVjZWl2ZXIgKmRlc3QpCiAJICovCiAJQXNz ZXJ0KE15UHJvYy0+eG1pbiA9PSBJbnZhbGlkVHJhbnNhY3Rpb25JZCk7CiAKLQl3YWl0TFNOUmVz dWx0ID0gV2FpdEZvckxTTihXQUlUX0xTTl9UWVBFX1NUQU5EQllfUkVQTEFZLCBsc24sIHRpbWVv dXQpOworCS8qCisJICogVmFsaWRhdGUgdGhhdCB0aGUgcmVxdWVzdGVkIG1vZGUgbWF0Y2hlcyB0 aGUgY3VycmVudCBzZXJ2ZXIgc3RhdGUuCisJICogUHJpbWFyeSBtb2RlcyBjYW4gb25seSBiZSB1 c2VkIG9uIGEgcHJpbWFyeS4KKwkgKi8KKwlpZiAobHNuVHlwZSA9PSBXQUlUX0xTTl9UWVBFX1BS SU1BUllfRkxVU0gpCisJeworCQlpZiAoUmVjb3ZlcnlJblByb2dyZXNzKCkpCisJCQllcmVwb3J0 KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRF X1NUQVRFKSwKKwkJCQkJIGVycm1zZygicmVjb3ZlcnkgaXMgaW4gcHJvZ3Jlc3MiKSwKKwkJCQkJ IGVycmhpbnQoIldhaXRpbmcgZm9yIHByaW1hcnlfZmx1c2ggY2FuIG9ubHkgYmUgZG9uZSBvbiBh IHByaW1hcnkgc2VydmVyLiAiCisJCQkJCQkJICJVc2Ugc3RhbmRieV9mbHVzaCBtb2RlIG9uIGEg c3RhbmRieSBzZXJ2ZXIuIikpKTsKKwl9CisKKwkvKiBOb3cgd2FpdCBmb3IgdGhlIExTTiAqLwor CXdhaXRMU05SZXN1bHQgPSBXYWl0Rm9yTFNOKGxzblR5cGUsIGxzbiwgdGltZW91dCk7CiAKIAkv KgogCSAqIFByb2Nlc3MgdGhlIHJlc3VsdCBvZiBXYWl0Rm9yTFNOKCkuICBUaHJvdyBhcHByb3By aWF0ZSBlcnJvciBpZiBuZWVkZWQuCkBAIC0xNTQsMTEgKzE5Nyw0OCBAQCBFeGVjV2FpdFN0bXQo UGFyc2VTdGF0ZSAqcHN0YXRlLCBXYWl0U3RtdCAqc3RtdCwgRGVzdFJlY2VpdmVyICpkZXN0KQog CiAJCWNhc2UgV0FJVF9MU05fUkVTVUxUX1RJTUVPVVQ6CiAJCQlpZiAodGhyb3cpCi0JCQkJZXJl cG9ydChFUlJPUiwKLQkJCQkJCWVycmNvZGUoRVJSQ09ERV9RVUVSWV9DQU5DRUxFRCksCi0JCQkJ CQllcnJtc2coInRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciB0YXJnZXQgTFNOICVYLyUwOFgg dG8gYmUgcmVwbGF5ZWQ7IGN1cnJlbnQgcmVwbGF5IExTTiAlWC8lMDhYIiwKLQkJCQkJCQkgICBM U05fRk9STUFUX0FSR1MobHNuKSwKLQkJCQkJCQkgICBMU05fRk9STUFUX0FSR1MoR2V0WExvZ1Jl cGxheVJlY1B0cihOVUxMKSkpKTsKKwkJCXsKKwkJCQlYTG9nUmVjUHRyCWN1cnJlbnRMU04gPSBH ZXRDdXJyZW50TFNORm9yV2FpdFR5cGUobHNuVHlwZSk7CisKKwkJCQlzd2l0Y2ggKGxzblR5cGUp CisJCQkJeworCQkJCQljYXNlIFdBSVRfTFNOX1RZUEVfU1RBTkRCWV9SRVBMQVk6CisJCQkJCQll cmVwb3J0KEVSUk9SLAorCQkJCQkJCQllcnJjb2RlKEVSUkNPREVfUVVFUllfQ0FOQ0VMRUQpLAor CQkJCQkJCQllcnJtc2coInRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciB0YXJnZXQgTFNOICVY LyUwOFggdG8gYmUgcmVwbGF5ZWQ7IGN1cnJlbnQgc3RhbmRieV9yZXBsYXkgTFNOICVYLyUwOFgi LAorCQkJCQkJCQkJICAgTFNOX0ZPUk1BVF9BUkdTKGxzbiksCisJCQkJCQkJCQkgICBMU05fRk9S TUFUX0FSR1MoY3VycmVudExTTikpKTsKKwkJCQkJCWJyZWFrOworCisJCQkJCWNhc2UgV0FJVF9M U05fVFlQRV9TVEFOREJZX1dSSVRFOgorCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJZXJy Y29kZShFUlJDT0RFX1FVRVJZX0NBTkNFTEVEKSwKKwkJCQkJCQkJZXJybXNnKCJ0aW1lZCBvdXQg d2hpbGUgd2FpdGluZyBmb3IgdGFyZ2V0IExTTiAlWC8lMDhYIHRvIGJlIHdyaXR0ZW47IGN1cnJl bnQgc3RhbmRieV93cml0ZSBMU04gJVgvJTA4WCIsCisJCQkJCQkJCQkgICBMU05fRk9STUFUX0FS R1MobHNuKSwKKwkJCQkJCQkJCSAgIExTTl9GT1JNQVRfQVJHUyhjdXJyZW50TFNOKSkpOworCQkJ CQkJYnJlYWs7CisKKwkJCQkJY2FzZSBXQUlUX0xTTl9UWVBFX1NUQU5EQllfRkxVU0g6CisJCQkJ CQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCQllcnJjb2RlKEVSUkNPREVfUVVFUllfQ0FOQ0VMRUQp LAorCQkJCQkJCQllcnJtc2coInRpbWVkIG91dCB3aGlsZSB3YWl0aW5nIGZvciB0YXJnZXQgTFNO ICVYLyUwOFggdG8gYmUgZmx1c2hlZDsgY3VycmVudCBzdGFuZGJ5X2ZsdXNoIExTTiAlWC8lMDhY IiwKKwkJCQkJCQkJCSAgIExTTl9GT1JNQVRfQVJHUyhsc24pLAorCQkJCQkJCQkJICAgTFNOX0ZP Uk1BVF9BUkdTKGN1cnJlbnRMU04pKSk7CisJCQkJCQlicmVhazsKKworCQkJCQljYXNlIFdBSVRf TFNOX1RZUEVfUFJJTUFSWV9GTFVTSDoKKwkJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJCWVy cmNvZGUoRVJSQ09ERV9RVUVSWV9DQU5DRUxFRCksCisJCQkJCQkJCWVycm1zZygidGltZWQgb3V0 IHdoaWxlIHdhaXRpbmcgZm9yIHRhcmdldCBMU04gJVgvJTA4WCB0byBiZSBmbHVzaGVkOyBjdXJy ZW50IHByaW1hcnlfZmx1c2ggTFNOICVYLyUwOFgiLAorCQkJCQkJCQkJICAgTFNOX0ZPUk1BVF9B UkdTKGxzbiksCisJCQkJCQkJCQkgICBMU05fRk9STUFUX0FSR1MoY3VycmVudExTTikpKTsKKwkJ CQkJCWJyZWFrOworCisJCQkJCWRlZmF1bHQ6CisJCQkJCQllbG9nKEVSUk9SLCAidW5leHBlY3Rl ZCB3YWl0IExTTiB0eXBlICVkIiwgbHNuVHlwZSk7CisJCQkJCQlwZ191bnJlYWNoYWJsZSgpOwor CQkJCX0KKwkJCX0KIAkJCWVsc2UKIAkJCQlyZXN1bHQgPSAidGltZW91dCI7CiAJCQlicmVhazsK QEAgLTE2OCwxOCArMjQ4LDcyIEBAIEV4ZWNXYWl0U3RtdChQYXJzZVN0YXRlICpwc3RhdGUsIFdh aXRTdG10ICpzdG10LCBEZXN0UmVjZWl2ZXIgKmRlc3QpCiAJCQl7CiAJCQkJaWYgKFByb21vdGVJ c1RyaWdnZXJlZCgpKQogCQkJCXsKLQkJCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJCQllcnJjb2Rl KEVSUkNPREVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAotCQkJCQkJCWVycm1z ZygicmVjb3ZlcnkgaXMgbm90IGluIHByb2dyZXNzIiksCi0JCQkJCQkJZXJyZGV0YWlsKCJSZWNv dmVyeSBlbmRlZCBiZWZvcmUgcmVwbGF5aW5nIHRhcmdldCBMU04gJVgvJTA4WDsgbGFzdCByZXBs YXkgTFNOICVYLyUwOFguIiwKLQkJCQkJCQkJCSAgTFNOX0ZPUk1BVF9BUkdTKGxzbiksCi0JCQkJ CQkJCQkgIExTTl9GT1JNQVRfQVJHUyhHZXRYTG9nUmVwbGF5UmVjUHRyKE5VTEwpKSkpOworCQkJ CQlYTG9nUmVjUHRyCWN1cnJlbnRMU04gPSBHZXRDdXJyZW50TFNORm9yV2FpdFR5cGUobHNuVHlw ZSk7CisKKwkJCQkJc3dpdGNoIChsc25UeXBlKQorCQkJCQl7CisJCQkJCQljYXNlIFdBSVRfTFNO X1RZUEVfU1RBTkRCWV9SRVBMQVk6CisJCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJCWVy cmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJCQkJ CQllcnJtc2coInJlY292ZXJ5IGlzIG5vdCBpbiBwcm9ncmVzcyIpLAorCQkJCQkJCQkJZXJyZGV0 YWlsKCJSZWNvdmVyeSBlbmRlZCBiZWZvcmUgdGFyZ2V0IExTTiAlWC8lMDhYIHdhcyByZXBsYXll ZDsgbGFzdCBzdGFuZGJ5X3JlcGxheSBMU04gJVgvJTA4WC4iLAorCQkJCQkJCQkJCQkgIExTTl9G T1JNQVRfQVJHUyhsc24pLAorCQkJCQkJCQkJCQkgIExTTl9GT1JNQVRfQVJHUyhjdXJyZW50TFNO KSkpOworCQkJCQkJCWJyZWFrOworCisJCQkJCQljYXNlIFdBSVRfTFNOX1RZUEVfU1RBTkRCWV9X UklURToKKwkJCQkJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkJCQkJZXJyY29kZShFUlJDT0RFX09C SkVDVF9OT1RfSU5fUFJFUkVRVUlTSVRFX1NUQVRFKSwKKwkJCQkJCQkJCWVycm1zZygicmVjb3Zl cnkgaXMgbm90IGluIHByb2dyZXNzIiksCisJCQkJCQkJCQllcnJkZXRhaWwoIlJlY292ZXJ5IGVu ZGVkIGJlZm9yZSB0YXJnZXQgTFNOICVYLyUwOFggd2FzIHdyaXR0ZW47IGxhc3Qgc3RhbmRieV93 cml0ZSBMU04gJVgvJTA4WC4iLAorCQkJCQkJCQkJCQkgIExTTl9GT1JNQVRfQVJHUyhsc24pLAor CQkJCQkJCQkJCQkgIExTTl9GT1JNQVRfQVJHUyhjdXJyZW50TFNOKSkpOworCQkJCQkJCWJyZWFr OworCisJCQkJCQljYXNlIFdBSVRfTFNOX1RZUEVfU1RBTkRCWV9GTFVTSDoKKwkJCQkJCQllcmVw b3J0KEVSUk9SLAorCQkJCQkJCQkJZXJyY29kZShFUlJDT0RFX09CSkVDVF9OT1RfSU5fUFJFUkVR VUlTSVRFX1NUQVRFKSwKKwkJCQkJCQkJCWVycm1zZygicmVjb3ZlcnkgaXMgbm90IGluIHByb2dy ZXNzIiksCisJCQkJCQkJCQllcnJkZXRhaWwoIlJlY292ZXJ5IGVuZGVkIGJlZm9yZSB0YXJnZXQg TFNOICVYLyUwOFggd2FzIGZsdXNoZWQ7IGxhc3Qgc3RhbmRieV9mbHVzaCBMU04gJVgvJTA4WC4i LAorCQkJCQkJCQkJCQkgIExTTl9GT1JNQVRfQVJHUyhsc24pLAorCQkJCQkJCQkJCQkgIExTTl9G T1JNQVRfQVJHUyhjdXJyZW50TFNOKSkpOworCQkJCQkJCWJyZWFrOworCisJCQkJCQlkZWZhdWx0 OgorCQkJCQkJCWVsb2coRVJST1IsICJ1bmV4cGVjdGVkIHdhaXQgTFNOIHR5cGUgJWQiLCBsc25U eXBlKTsKKwkJCQkJCQlwZ191bnJlYWNoYWJsZSgpOworCQkJCQl9CiAJCQkJfQogCQkJCWVsc2UK LQkJCQkJZXJlcG9ydChFUlJPUiwKLQkJCQkJCQllcnJjb2RlKEVSUkNPREVfT0JKRUNUX05PVF9J Tl9QUkVSRVFVSVNJVEVfU1RBVEUpLAotCQkJCQkJCWVycm1zZygicmVjb3ZlcnkgaXMgbm90IGlu IHByb2dyZXNzIiksCi0JCQkJCQkJZXJyaGludCgiV2FpdGluZyBmb3IgdGhlIHJlcGxheSBMU04g Y2FuIG9ubHkgYmUgZXhlY3V0ZWQgZHVyaW5nIHJlY292ZXJ5LiIpKTsKKwkJCQl7CisJCQkJCXN3 aXRjaCAobHNuVHlwZSkKKwkJCQkJeworCQkJCQkJY2FzZSBXQUlUX0xTTl9UWVBFX1NUQU5EQllf UkVQTEFZOgorCQkJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJCQllcnJjb2RlKEVSUkNPREVf T0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCQkJCQkJZXJybXNnKCJyZWNv dmVyeSBpcyBub3QgaW4gcHJvZ3Jlc3MiKSwKKwkJCQkJCQkJCWVycmhpbnQoIldhaXRpbmcgZm9y IHRoZSBzdGFuZGJ5X3JlcGxheSBMU04gY2FuIG9ubHkgYmUgZXhlY3V0ZWQgZHVyaW5nIHJlY292 ZXJ5LiIpKTsKKwkJCQkJCQlicmVhazsKKworCQkJCQkJY2FzZSBXQUlUX0xTTl9UWVBFX1NUQU5E QllfV1JJVEU6CisJCQkJCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJCQkJCWVycmNvZGUoRVJSQ09E RV9PQkpFQ1RfTk9UX0lOX1BSRVJFUVVJU0lURV9TVEFURSksCisJCQkJCQkJCQllcnJtc2coInJl Y292ZXJ5IGlzIG5vdCBpbiBwcm9ncmVzcyIpLAorCQkJCQkJCQkJZXJyaGludCgiV2FpdGluZyBm b3IgdGhlIHN0YW5kYnlfd3JpdGUgTFNOIGNhbiBvbmx5IGJlIGV4ZWN1dGVkIGR1cmluZyByZWNv dmVyeS4iKSk7CisJCQkJCQkJYnJlYWs7CisKKwkJCQkJCWNhc2UgV0FJVF9MU05fVFlQRV9TVEFO REJZX0ZMVVNIOgorCQkJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJCQllcnJjb2RlKEVSUkNP REVfT0JKRUNUX05PVF9JTl9QUkVSRVFVSVNJVEVfU1RBVEUpLAorCQkJCQkJCQkJZXJybXNnKCJy ZWNvdmVyeSBpcyBub3QgaW4gcHJvZ3Jlc3MiKSwKKwkJCQkJCQkJCWVycmhpbnQoIldhaXRpbmcg Zm9yIHRoZSBzdGFuZGJ5X2ZsdXNoIExTTiBjYW4gb25seSBiZSBleGVjdXRlZCBkdXJpbmcgcmVj b3ZlcnkuIikpOworCQkJCQkJCWJyZWFrOworCisJCQkJCQlkZWZhdWx0OgorCQkJCQkJCWVsb2co RVJST1IsICJ1bmV4cGVjdGVkIHdhaXQgTFNOIHR5cGUgJWQiLCBsc25UeXBlKTsKKwkJCQkJCQlw Z191bnJlYWNoYWJsZSgpOworCQkJCQl9CisJCQkJfQogCQkJfQogCQkJZWxzZQogCQkJCXJlc3Vs dCA9ICJub3QgaW4gcmVjb3ZlcnkiOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcmVwbGljYXRp b24vd2FscmVjZWl2ZXIuYyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dhbHJlY2VpdmVyLmMK aW5kZXggYWM4MDJhZTg1YjQuLjQwNGQzNDhkYTM3IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9y ZXBsaWNhdGlvbi93YWxyZWNlaXZlci5jCisrKyBiL3NyYy9iYWNrZW5kL3JlcGxpY2F0aW9uL3dh bHJlY2VpdmVyLmMKQEAgLTU3LDYgKzU3LDcgQEAKICNpbmNsdWRlICJhY2Nlc3MveGxvZ19pbnRl cm5hbC5oIgogI2luY2x1ZGUgImFjY2Vzcy94bG9nYXJjaGl2ZS5oIgogI2luY2x1ZGUgImFjY2Vz cy94bG9ncmVjb3ZlcnkuaCIKKyNpbmNsdWRlICJhY2Nlc3MveGxvZ3dhaXQuaCIKICNpbmNsdWRl ICJjYXRhbG9nL3BnX2F1dGhpZC5oIgogI2luY2x1ZGUgImZ1bmNhcGkuaCIKICNpbmNsdWRlICJs aWJwcS9wcWZvcm1hdC5oIgpAQCAtOTY1LDYgKzk2NiwxNCBAQCBYTG9nV2FsUmN2V3JpdGUoY2hh ciAqYnVmLCBTaXplIG5ieXRlcywgWExvZ1JlY1B0ciByZWNwdHIsIFRpbWVMaW5lSUQgdGxpKQog CS8qIFVwZGF0ZSBzaGFyZWQtbWVtb3J5IHN0YXR1cyAqLwogCXBnX2F0b21pY193cml0ZV91NjQo JldhbFJjdi0+d3JpdHRlblVwdG8sIExvZ3N0cmVhbVJlc3VsdC5Xcml0ZSk7CiAKKwkvKgorCSAq IElmIHdlIHdyb3RlIGFuIExTTiB0aGF0IHNvbWVvbmUgd2FzIHdhaXRpbmcgZm9yLCBub3RpZnkg dGhlIHdhaXRlcnMuCisJICovCisJaWYgKHdhaXRMU05TdGF0ZSAmJgorCQkoTG9nc3RyZWFtUmVz dWx0LldyaXRlID49CisJCSBwZ19hdG9taWNfcmVhZF91NjQoJndhaXRMU05TdGF0ZS0+bWluV2Fp dGVkTFNOW1dBSVRfTFNOX1RZUEVfU1RBTkRCWV9XUklURV0pKSkKKwkJV2FpdExTTldha2V1cChX QUlUX0xTTl9UWVBFX1NUQU5EQllfV1JJVEUsIExvZ3N0cmVhbVJlc3VsdC5Xcml0ZSk7CisKIAkv KgogCSAqIENsb3NlIHRoZSBjdXJyZW50IHNlZ21lbnQgaWYgaXQncyBmdWxseSB3cml0dGVuIHVw IGluIHRoZSBsYXN0IGN5Y2xlIG9mCiAJICogdGhlIGxvb3AsIHRvIGNyZWF0ZSBpdHMgYXJjaGl2 ZSBub3RpZmljYXRpb24gZmlsZSBzb29uLiBPdGhlcndpc2UgV0FMCkBAIC0xMDA0LDYgKzEwMTMs MTUgQEAgWExvZ1dhbFJjdkZsdXNoKGJvb2wgZHlpbmcsIFRpbWVMaW5lSUQgdGxpKQogCQl9CiAJ CVNwaW5Mb2NrUmVsZWFzZSgmd2FscmN2LT5tdXRleCk7CiAKKwkJLyoKKwkJICogSWYgd2UgZmx1 c2hlZCBhbiBMU04gdGhhdCBzb21lb25lIHdhcyB3YWl0aW5nIGZvciwgbm90aWZ5IHRoZQorCQkg KiB3YWl0ZXJzLgorCQkgKi8KKwkJaWYgKHdhaXRMU05TdGF0ZSAmJgorCQkJKExvZ3N0cmVhbVJl c3VsdC5GbHVzaCA+PQorCQkJIHBnX2F0b21pY19yZWFkX3U2NCgmd2FpdExTTlN0YXRlLT5taW5X YWl0ZWRMU05bV0FJVF9MU05fVFlQRV9TVEFOREJZX0ZMVVNIXSkpKQorCQkJV2FpdExTTldha2V1 cChXQUlUX0xTTl9UWVBFX1NUQU5EQllfRkxVU0gsIExvZ3N0cmVhbVJlc3VsdC5GbHVzaCk7CisK IAkJLyogU2lnbmFsIHRoZSBzdGFydHVwIHByb2Nlc3MgYW5kIHdhbHNlbmRlciB0aGF0IG5ldyBX QUwgaGFzIGFycml2ZWQgKi8KIAkJV2FrZXVwUmVjb3ZlcnkoKTsKIAkJaWYgKEFsbG93Q2FzY2Fk ZVJlcGxpY2F0aW9uKCkpCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWNvdmVyeS90LzA0OV93YWl0 X2Zvcl9sc24ucGwgYi9zcmMvdGVzdC9yZWNvdmVyeS90LzA0OV93YWl0X2Zvcl9sc24ucGwKaW5k ZXggZTBkZGIwNmEyZjAuLmI3NjdiNDc1ZmY3IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWNvdmVy eS90LzA0OV93YWl0X2Zvcl9sc24ucGwKKysrIGIvc3JjL3Rlc3QvcmVjb3ZlcnkvdC8wNDlfd2Fp dF9mb3JfbHNuLnBsCkBAIC0xLDUgKzEsNiBAQAotIyBDaGVja3Mgd2FpdGluZyBmb3IgdGhlIExT TiByZXBsYXkgb24gc3RhbmRieSB1c2luZwotIyB0aGUgV0FJVCBGT1IgY29tbWFuZC4KKyMgQ2hl Y2tzIHdhaXRpbmcgZm9yIHRoZSBMU04gdXNpbmcgdGhlIFdBSVQgRk9SIGNvbW1hbmQuCisjIFRl c3RzIHN0YW5kYnkgbW9kZXMgKHN0YW5kYnlfcmVwbGF5L3N0YW5kYnlfd3JpdGUvc3RhbmRieV9m bHVzaCkgb24gc3RhbmRieQorIyBhbmQgcHJpbWFyeV9mbHVzaCBtb2RlIG9uIHByaW1hcnkuCiB1 c2Ugc3RyaWN0OwogdXNlIHdhcm5pbmdzIEZBVEFMID0+ICdhbGwnOwogCkBAIC03LDYgKzgsNDIg QEAgdXNlIFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXI7CiB1c2UgUG9zdGdyZVNRTDo6VGVzdDo6 VXRpbHM7CiB1c2UgVGVzdDo6TW9yZTsKIAorIyBIZWxwZXIgZnVuY3Rpb25zIHRvIGNvbnRyb2wg d2FscmVjZWl2ZXIgZm9yIHRlc3Rpbmcgd2FpdCBjb25kaXRpb25zLgorIyBUaGVzZSBhbGxvdyB1 cyB0byBzdG9wIFdBTCBzdHJlYW1pbmcgc28gd2FpdGVycyBibG9jaywgdGhlbiByZXN1bWUgaXQu CitteSAkc2F2ZWRfcHJpbWFyeV9jb25uaW5mbzsKKworc3ViIHN0b3Bfd2FscmVjZWl2ZXIKK3sK KwlteSAoJG5vZGUpID0gQF87CisJJHNhdmVkX3ByaW1hcnlfY29ubmluZm8gPSAkbm9kZS0+c2Fm ZV9wc3FsKAorCQkncG9zdGdyZXMnLCBxcVsKKwkJU0VMRUNUIHBnX2NhdGFsb2cucXVvdGVfbGl0 ZXJhbChzZXR0aW5nKQorCQlGUk9NIHBnX3NldHRpbmdzCisJCVdIRVJFIG5hbWUgPSAncHJpbWFy eV9jb25uaW5mbyc7CisJXSk7CisJJG5vZGUtPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXFb CisJCUFMVEVSIFNZU1RFTSBTRVQgcHJpbWFyeV9jb25uaW5mbyA9ICcnOworCQlTRUxFQ1QgcGdf cmVsb2FkX2NvbmYoKTsKKwldKTsKKworCSRub2RlLT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3Jl cycsCisJCSJTRUxFQ1QgTk9UIEVYSVNUUyAoU0VMRUNUICogRlJPTSBwZ19zdGF0X3dhbF9yZWNl aXZlcik7Iik7Cit9CisKK3N1YiByZXN1bWVfd2FscmVjZWl2ZXIKK3sKKwlteSAoJG5vZGUpID0g QF87CisJJG5vZGUtPnNhZmVfcHNxbCgKKwkJJ3Bvc3RncmVzJywgcXFbCisJCUFMVEVSIFNZU1RF TSBTRVQgcHJpbWFyeV9jb25uaW5mbyA9ICRzYXZlZF9wcmltYXJ5X2Nvbm5pbmZvOworCQlTRUxF Q1QgcGdfcmVsb2FkX2NvbmYoKTsKKwldKTsKKworCSRub2RlLT5wb2xsX3F1ZXJ5X3VudGlsKCdw b3N0Z3JlcycsCisJCSJTRUxFQ1QgRVhJU1RTIChTRUxFQ1QgKiBGUk9NIHBnX3N0YXRfd2FsX3Jl Y2VpdmVyKTsiKTsKK30KKwogIyBJbml0aWFsaXplIHByaW1hcnkgbm9kZQogbXkgJG5vZGVfcHJp bWFyeSA9IFBvc3RncmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygncHJpbWFyeScpOwogJG5vZGVf cHJpbWFyeS0+aW5pdChhbGxvd3Nfc3RyZWFtaW5nID0+IDEpOwpAQCAtNjIsNyArOTksNTIgQEAg JG91dHB1dCA9ICRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgKIG9rKChzcGxpdCgiXG4iLCAkb3V0 cHV0KSlbLTFdIGVxIDMwLAogCSJzdGFuZGJ5IHJlYWNoZWQgdGhlIHNhbWUgTFNOIGFzIHByaW1h cnkiKTsKIAotIyAzLiBDaGVjayB0aGF0IHdhaXRpbmcgZm9yIHVucmVhY2hhYmxlIExTTiB0cmln Z2VycyB0aGUgdGltZW91dC4gIFRoZQorIyAzLiBDaGVjayB0aGF0IFdBSVQgRk9SIHdvcmtzIHdp dGggc3RhbmRieV93cml0ZSwgc3RhbmRieV9mbHVzaCwgYW5kCisjIHByaW1hcnlfZmx1c2ggbW9k ZXMuCiskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiSU5TRVJUIElOVE8g d2FpdF90ZXN0IFZBTFVFUyAoZ2VuZXJhdGVfc2VyaWVzKDMxLCA0MCkpIik7CitteSAkbHNuX3dy aXRlID0KKyAgJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgcGdf Y3VycmVudF93YWxfaW5zZXJ0X2xzbigpIik7Ciskb3V0cHV0ID0gJG5vZGVfc3RhbmRieS0+c2Fm ZV9wc3FsKAorCSdwb3N0Z3JlcycsIHFxWworCVdBSVQgRk9SIExTTiAnJHtsc25fd3JpdGV9JyBX SVRIIChNT0RFICdzdGFuZGJ5X3dyaXRlJywgdGltZW91dCAnMWQnKTsKKwlTRUxFQ1QgcGdfbHNu X2NtcCgoU0VMRUNUIHdyaXR0ZW5fbHNuIEZST00gcGdfc3RhdF93YWxfcmVjZWl2ZXIpLCAnJHts c25fd3JpdGV9Jzo6cGdfbHNuKTsKK10pOworCitvayggKHNwbGl0KCJcbiIsICRvdXRwdXQpKVst MV0gPj0gMCwKKwkic3RhbmRieSB3cm90ZSBXQUwgdXAgdG8gdGFyZ2V0IExTTiBhZnRlciBXQUlU IEZPUiB3aXRoIE1PREUgJ3N0YW5kYnlfd3JpdGUnIgorKTsKKworJG5vZGVfcHJpbWFyeS0+c2Fm ZV9wc3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHdhaXRfdGVzdCBWQUxVRVMgKGdlbmVy YXRlX3Nlcmllcyg0MSwgNTApKSIpOworbXkgJGxzbl9mbHVzaCA9CisgICRub2RlX3ByaW1hcnkt PnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIHBnX2N1cnJlbnRfd2FsX2luc2VydF9sc24o KSIpOworJG91dHB1dCA9ICRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBx cVsKKwlXQUlUIEZPUiBMU04gJyR7bHNuX2ZsdXNofScgV0lUSCAoTU9ERSAnc3RhbmRieV9mbHVz aCcsIHRpbWVvdXQgJzFkJyk7CisJU0VMRUNUIHBnX2xzbl9jbXAocGdfbGFzdF93YWxfcmVjZWl2 ZV9sc24oKSwgJyR7bHNuX2ZsdXNofSc6OnBnX2xzbik7CitdKTsKKworb2soIChzcGxpdCgiXG4i LCAkb3V0cHV0KSlbLTFdID49IDAsCisJInN0YW5kYnkgZmx1c2hlZCBXQUwgdXAgdG8gdGFyZ2V0 IExTTiBhZnRlciBXQUlUIEZPUiB3aXRoIE1PREUgJ3N0YW5kYnlfZmx1c2gnIgorKTsKKworIyBD aGVjayBwcmltYXJ5X2ZsdXNoIG1vZGUgb24gcHJpbWFyeQorJG5vZGVfcHJpbWFyeS0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsCisJIklOU0VSVCBJTlRPIHdhaXRfdGVzdCBWQUxVRVMgKGdlbmVyYXRl X3Nlcmllcyg1MSwgNjApKSIpOworbXkgJGxzbl9wcmltYXJ5X2ZsdXNoID0KKyAgJG5vZGVfcHJp bWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgcGdfY3VycmVudF93YWxfaW5zZXJ0 X2xzbigpIik7Ciskb3V0cHV0ID0gJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKAorCSdwb3N0Z3Jl cycsIHFxWworCVdBSVQgRk9SIExTTiAnJHtsc25fcHJpbWFyeV9mbHVzaH0nIFdJVEggKE1PREUg J3ByaW1hcnlfZmx1c2gnLCB0aW1lb3V0ICcxZCcpOworCVNFTEVDVCBwZ19sc25fY21wKHBnX2N1 cnJlbnRfd2FsX2ZsdXNoX2xzbigpLCAnJHtsc25fcHJpbWFyeV9mbHVzaH0nOjpwZ19sc24pOwor XSk7CisKK29rKCAoc3BsaXQoIlxuIiwgJG91dHB1dCkpWy0xXSA+PSAwLAorCSJwcmltYXJ5IGZs dXNoZWQgV0FMIHVwIHRvIHRhcmdldCBMU04gYWZ0ZXIgV0FJVCBGT1Igd2l0aCBNT0RFICdwcmlt YXJ5X2ZsdXNoJyIKKyk7CisKKyMgNC4gQ2hlY2sgdGhhdCB3YWl0aW5nIGZvciB1bnJlYWNoYWJs ZSBMU04gdHJpZ2dlcnMgdGhlIHRpbWVvdXQuICBUaGUKICMgdW5yZWFjaGFibGUgTFNOIG11c3Qg YmUgd2VsbCBpbiBhZHZhbmNlLiAgU28gV0FMIHJlY29yZHMgaXNzdWVkIGJ5CiAjIHRoZSBjb25j dXJyZW50IGF1dG92YWN1dW0gY291bGQgbm90IGFmZmVjdCB0aGF0LgogbXkgJGxzbjMgPQpAQCAt ODgsMTQgKzE3MCwyNiBAQCAkb3V0cHV0ID0gJG5vZGVfc3RhbmRieS0+c2FmZV9wc3FsKAogCVdB SVQgRk9SIExTTiAnJHtsc24zfScgV0lUSCAodGltZW91dCAnMTBtcycsIG5vX3Rocm93KTtdKTsK IG9rKCRvdXRwdXQgZXEgInRpbWVvdXQiLCAiV0FJVCBGT1IgcmV0dXJucyBjb3JyZWN0IHN0YXR1 cyBhZnRlciB0aW1lb3V0Iik7CiAKLSMgNC4gQ2hlY2sgdGhhdCBXQUlUIEZPUiB0cmlnZ2VycyBh biBlcnJvciBpZiBjYWxsZWQgb24gcHJpbWFyeSwKLSMgd2l0aGluIGFub3RoZXIgZnVuY3Rpb24s IG9yIGluc2lkZSBhIHRyYW5zYWN0aW9uIHdpdGggYW4gaXNvbGF0aW9uIGxldmVsCi0jIGhpZ2hl ciB0aGFuIFJFQUQgQ09NTUlUVEVELgorIyA1LiBDaGVjayBtb2RlIHZhbGlkYXRpb246IHN0YW5k YnkgbW9kZXMgZXJyb3Igb24gcHJpbWFyeSwgcHJpbWFyeSBtb2RlIGVycm9ycworIyBvbiBzdGFu ZGJ5LCBhbmQgcHJpbWFyeV9mbHVzaCB3b3JrcyBvbiBwcmltYXJ5LiAgQWxzbyBjaGVjayB0aGF0 IFdBSVQgRk9SCisjIHRyaWdnZXJzIGFuIGVycm9yIGlmIGNhbGxlZCB3aXRoaW4gYW5vdGhlciBm dW5jdGlvbiBvciBpbnNpZGUgYSB0cmFuc2FjdGlvbgorIyB3aXRoIGFuIGlzb2xhdGlvbiBsZXZl bCBoaWdoZXIgdGhhbiBSRUFEIENPTU1JVFRFRC4KKworIyBUZXN0IHN0YW5kYnlfZmx1c2ggb24g cHJpbWFyeSAtIHNob3VsZCBlcnJvcgorJG5vZGVfcHJpbWFyeS0+cHNxbCgKKwkncG9zdGdyZXMn LAorCSJXQUlUIEZPUiBMU04gJyR7bHNuM30nIFdJVEggKE1PREUgJ3N0YW5kYnlfZmx1c2gnKTsi LAorCXN0ZGVyciA9PiBcJHN0ZGVycik7Citvaygkc3RkZXJyID1+IC9yZWNvdmVyeSBpcyBub3Qg aW4gcHJvZ3Jlc3MvLAorCSJnZXQgYW4gZXJyb3Igd2hlbiBydW5uaW5nIHN0YW5kYnlfZmx1c2gg b24gdGhlIHByaW1hcnkiKTsKIAotJG5vZGVfcHJpbWFyeS0+cHNxbCgncG9zdGdyZXMnLCAiV0FJ VCBGT1IgTFNOICcke2xzbjN9JzsiLAorIyBUZXN0IHByaW1hcnlfZmx1c2ggb24gc3RhbmRieSAt IHNob3VsZCBlcnJvcgorJG5vZGVfc3RhbmRieS0+cHNxbCgKKwkncG9zdGdyZXMnLAorCSJXQUlU IEZPUiBMU04gJyR7bHNuM30nIFdJVEggKE1PREUgJ3ByaW1hcnlfZmx1c2gnKTsiLAogCXN0ZGVy ciA9PiBcJHN0ZGVycik7Ci1vayggJHN0ZGVyciA9fiAvcmVjb3ZlcnkgaXMgbm90IGluIHByb2dy ZXNzLywKLQkiZ2V0IGFuIGVycm9yIHdoZW4gcnVubmluZyBvbiB0aGUgcHJpbWFyeSIpOworb2so JHN0ZGVyciA9fiAvcmVjb3ZlcnkgaXMgaW4gcHJvZ3Jlc3MvLAorCSJnZXQgYW4gZXJyb3Igd2hl biBydW5uaW5nIHByaW1hcnlfZmx1c2ggb24gdGhlIHN0YW5kYnkiKTsKIAogJG5vZGVfc3RhbmRi eS0+cHNxbCgKIAkncG9zdGdyZXMnLApAQCAtMTI1LDcgKzIxOSw3IEBAIG9rKCAkc3RkZXJyID1+ CiAJICAvV0FJVCBGT1IgbXVzdCBiZSBvbmx5IGNhbGxlZCB3aXRob3V0IGFuIGFjdGl2ZSBvciBy ZWdpc3RlcmVkIHNuYXBzaG90LywKIAkiZ2V0IGFuIGVycm9yIHdoZW4gcnVubmluZyB3aXRoaW4g YW5vdGhlciBmdW5jdGlvbiIpOwogCi0jIDUuIENoZWNrIHBhcmFtZXRlciB2YWxpZGF0aW9uIGVy cm9yIGNhc2VzIG9uIHN0YW5kYnkgYmVmb3JlIHByb21vdGlvbgorIyA2LiBDaGVjayBwYXJhbWV0 ZXIgdmFsaWRhdGlvbiBlcnJvciBjYXNlcyBvbiBzdGFuZGJ5IGJlZm9yZSBwcm9tb3Rpb24KIG15 ICR0ZXN0X2xzbiA9CiAgICRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VM RUNUIHBnX2N1cnJlbnRfd2FsX2luc2VydF9sc24oKSIpOwogCkBAIC0yMDgsMTAgKzMwMiwyNiBA QCAkbm9kZV9zdGFuZGJ5LT5wc3FsKAogb2soICRzdGRlcnIgPX4gL29wdGlvbiAiaW52YWxpZF9v cHRpb24iIG5vdCByZWNvZ25pemVkLywKIAkiZ2V0IGVycm9yIGZvciBpbnZhbGlkIFdJVEggY2xh dXNlIG9wdGlvbiIpOwogCi0jIDYuIENoZWNrIHRoZSBzY2VuYXJpbyBvZiBtdWx0aXBsZSBMU04g d2FpdGVycy4gIFdlIG1ha2UgNSBiYWNrZ3JvdW5kCi0jIHBzcWwgc2Vzc2lvbnMgZWFjaCB3YWl0 aW5nIGZvciBhIGNvcnJlc3BvbmRpbmcgaW5zZXJ0aW9uLiAgV2hlbiB3YWl0aW5nIGlzCi0jIGZp bmlzaGVkLCBzdG9yZWQgcHJvY2VkdXJlcyBsb2dzIGlmIHRoZXJlIGFyZSB2aXNpYmxlIGFzIG1h bnkgcm93cyBhcwotIyBzaG91bGQgYmUuCisjIFRlc3QgaW52YWxpZCBNT0RFIHZhbHVlCiskbm9k ZV9zdGFuZGJ5LT5wc3FsKAorCSdwb3N0Z3JlcycsCisJIldBSVQgRk9SIExTTiAnJHt0ZXN0X2xz bn0nIFdJVEggKE1PREUgJ2ludmFsaWQnKTsiLAorCXN0ZGVyciA9PiBcJHN0ZGVycik7Citvaygk c3RkZXJyID1+IC91bnJlY29nbml6ZWQgdmFsdWUgZm9yIFdBSVQgb3B0aW9uICJtb2RlIjogImlu dmFsaWQiLywKKwkiZ2V0IGVycm9yIGZvciBpbnZhbGlkIE1PREUgdmFsdWUiKTsKKworIyBUZXN0 IGR1cGxpY2F0ZSBNT0RFIHBhcmFtZXRlcgorJG5vZGVfc3RhbmRieS0+cHNxbCgKKwkncG9zdGdy ZXMnLAorCSJXQUlUIEZPUiBMU04gJyR7dGVzdF9sc259JyBXSVRIIChNT0RFICdzdGFuZGJ5X3Jl cGxheScsIE1PREUgJ3N0YW5kYnlfd3JpdGUnKTsiLAorCXN0ZGVyciA9PiBcJHN0ZGVycik7Citv ayggJHN0ZGVyciA9fiAvY29uZmxpY3Rpbmcgb3IgcmVkdW5kYW50IG9wdGlvbnMvLAorCSJnZXQg ZXJyb3IgZm9yIGR1cGxpY2F0ZSBNT0RFIHBhcmFtZXRlciIpOworCisjIDdhLiBDaGVjayB0aGUg c2NlbmFyaW8gb2YgbXVsdGlwbGUgc3RhbmRieV9yZXBsYXkgd2FpdGVycy4gIFdlIG1ha2UgNQor IyBiYWNrZ3JvdW5kIHBzcWwgc2Vzc2lvbnMgZWFjaCB3YWl0aW5nIGZvciBhIGNvcnJlc3BvbmRp bmcgaW5zZXJ0aW9uLiAgV2hlbgorIyB3YWl0aW5nIGlzIGZpbmlzaGVkLCBzdG9yZWQgcHJvY2Vk dXJlcyBsb2dzIGlmIHRoZXJlIGFyZSB2aXNpYmxlIGFzIG1hbnkKKyMgcm93cyBhcyBzaG91bGQg YmUuCiAkbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoCiAJJ3Bvc3RncmVzJywgcXFbCiBDUkVBVEUg RlVOQ1RJT04gbG9nX2NvdW50KGkgaW50KSBSRVRVUk5TIHZvaWQgQVMgXCRcJApAQCAtMjI1LDgg KzMzNSwxNyBAQCBDUkVBVEUgRlVOQ1RJT04gbG9nX2NvdW50KGkgaW50KSBSRVRVUk5TIHZvaWQg QVMgXCRcJAogICBFTkQKIFwkXCQKIExBTkdVQUdFIHBscGdzcWw7CisKK0NSRUFURSBGVU5DVElP TiBsb2dfd2FpdF9kb25lKHByZWZpeCB0ZXh0LCBpIGludCkgUkVUVVJOUyB2b2lkIEFTIFwkXCQK KyAgQkVHSU4KKyAgICBSQUlTRSBMT0cgJyUgJScsIHByZWZpeCwgaTsKKyAgRU5ECitcJFwkCitM QU5HVUFHRSBwbHBnc3FsOwogXSk7CisKICRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCAiU0VMRUNUIHBnX3dhbF9yZXBsYXlfcGF1c2UoKTsiKTsKKwogbXkgQHBzcWxfc2Vzc2lv bnM7CiBmb3IgKG15ICRpID0gMDsgJGkgPCA1OyAkaSsrKQogewpAQCAtMjQzLDYgKzM2Miw3IEBA IGZvciAobXkgJGkgPSAwOyAkaSA8IDU7ICRpKyspCiAJCVNFTEVDVCBsb2dfY291bnQoJHtpfSk7 CiAJXSk7CiB9CisKIG15ICRsb2dfb2Zmc2V0ID0gLXMgJG5vZGVfc3RhbmRieS0+bG9nZmlsZTsK ICRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIHBnX3dhbF9yZXBs YXlfcmVzdW1lKCk7Iik7CiBmb3IgKG15ICRpID0gMDsgJGkgPCA1OyAkaSsrKQpAQCAtMjUxLDIz ICszNzEsMjQ2IEBAIGZvciAobXkgJGkgPSAwOyAkaSA8IDU7ICRpKyspCiAJJHBzcWxfc2Vzc2lv bnNbJGldLT5xdWl0OwogfQogCi1vaygxLCAnbXVsdGlwbGUgTFNOIHdhaXRlcnMgcmVwb3J0ZWQg Y29uc2lzdGVudCBkYXRhJyk7CitvaygxLCAnbXVsdGlwbGUgc3RhbmRieV9yZXBsYXkgd2FpdGVy cyByZXBvcnRlZCBjb25zaXN0ZW50IGRhdGEnKTsKKworIyA3Yi4gQ2hlY2sgdGhlIHNjZW5hcmlv IG9mIG11bHRpcGxlIHN0YW5kYnlfd3JpdGUgd2FpdGVycy4KKyMgU3RvcCB3YWxyZWNlaXZlciB0 byBlbnN1cmUgd2FpdGVycyBhY3R1YWxseSBibG9jay4KK3N0b3Bfd2FscmVjZWl2ZXIoJG5vZGVf c3RhbmRieSk7CisKKyMgR2VuZXJhdGUgV0FMIG9uIHByaW1hcnkgKHN0YW5kYnkgd29uJ3QgcmVj ZWl2ZSBpdCB5ZXQpCitteSBAd3JpdGVfbHNuczsKK2ZvciAobXkgJGkgPSAwOyAkaSA8IDU7ICRp KyspCit7CisJJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJJTlNFUlQg SU5UTyB3YWl0X3Rlc3QgVkFMVUVTICgxMDAgKyAke2l9KTsiKTsKKwkkd3JpdGVfbHNuc1skaV0g PQorCSAgJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgcGdf Y3VycmVudF93YWxfaW5zZXJ0X2xzbigpIik7Cit9CisKKyMgU3RhcnQgc3RhbmRieV93cml0ZSB3 YWl0ZXJzICh0aGV5IHdpbGwgYmxvY2sgc2luY2Ugd2FscmVjZWl2ZXIgaXMgc3RvcHBlZCkKK215 IEB3cml0ZV9zZXNzaW9uczsKK2ZvciAobXkgJGkgPSAwOyAkaSA8IDU7ICRpKyspCit7CisJJHdy aXRlX3Nlc3Npb25zWyRpXSA9ICRub2RlX3N0YW5kYnktPmJhY2tncm91bmRfcHNxbCgncG9zdGdy ZXMnKTsKKwkkd3JpdGVfc2Vzc2lvbnNbJGldLT5xdWVyeV91bnRpbCgKKwkJcXIvc3RhcnQvLCBx cVsKKwkJXFxlY2hvIHN0YXJ0CisJCVdBSVQgRk9SIExTTiAnJHdyaXRlX2xzbnNbJGldJyBXSVRI IChNT0RFICdzdGFuZGJ5X3dyaXRlJywgdGltZW91dCAnMWQnKTsKKwkJU0VMRUNUIGxvZ193YWl0 X2RvbmUoJ3dyaXRlX2RvbmUnLCAkaSk7CisJXSk7Cit9CisKKyMgVmVyaWZ5IHdhaXRlcnMgYXJl IGJsb2NrZWQKKyRub2RlX3N0YW5kYnktPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywKKwki U0VMRUNUIGNvdW50KCopID0gNSBGUk9NIHBnX3N0YXRfYWN0aXZpdHkgV0hFUkUgd2FpdF9ldmVu dCA9ICdXYWl0Rm9yV2FsV3JpdGUnIgorKTsKKworIyBSZXN0b3JlIHdhbHJlY2VpdmVyIHRvIHVu YmxvY2sgd2FpdGVycworbXkgJHdyaXRlX2xvZ19vZmZzZXQgPSAtcyAkbm9kZV9zdGFuZGJ5LT5s b2dmaWxlOworcmVzdW1lX3dhbHJlY2VpdmVyKCRub2RlX3N0YW5kYnkpOworCisjIFdhaXQgZm9y IGFsbCB3YWl0ZXJzIHRvIGNvbXBsZXRlIGFuZCBjbG9zZSBzZXNzaW9ucworZm9yIChteSAkaSA9 IDA7ICRpIDwgNTsgJGkrKykKK3sKKwkkbm9kZV9zdGFuZGJ5LT53YWl0X2Zvcl9sb2coIndyaXRl X2RvbmUgJGkiLCAkd3JpdGVfbG9nX29mZnNldCk7CisJJHdyaXRlX3Nlc3Npb25zWyRpXS0+cXVp dDsKK30KKworIyBWZXJpZnkgb24gc3RhbmRieSB0aGF0IFdBTCB3YXMgd3JpdHRlbiB1cCB0byB0 aGUgdGFyZ2V0IExTTgorJG91dHB1dCA9ICRub2RlX3N0YW5kYnktPnNhZmVfcHNxbCgncG9zdGdy ZXMnLAorCSJTRUxFQ1QgcGdfbHNuX2NtcCgoU0VMRUNUIHdyaXR0ZW5fbHNuIEZST00gcGdfc3Rh dF93YWxfcmVjZWl2ZXIpLCAnJHdyaXRlX2xzbnNbNF0nOjpwZ19sc24pOyIKKyk7CisKK29rKCRv dXRwdXQgPj0gMCwKKwkibXVsdGlwbGUgc3RhbmRieV93cml0ZSB3YWl0ZXJzOiBzdGFuZGJ5IHdy b3RlIFdBTCB1cCB0byB0YXJnZXQgTFNOIik7CisKKyMgN2MuIENoZWNrIHRoZSBzY2VuYXJpbyBv ZiBtdWx0aXBsZSBzdGFuZGJ5X2ZsdXNoIHdhaXRlcnMuCisjIFN0b3Agd2FscmVjZWl2ZXIgdG8g ZW5zdXJlIHdhaXRlcnMgYWN0dWFsbHkgYmxvY2suCitzdG9wX3dhbHJlY2VpdmVyKCRub2RlX3N0 YW5kYnkpOworCisjIEdlbmVyYXRlIFdBTCBvbiBwcmltYXJ5IChzdGFuZGJ5IHdvbid0IHJlY2Vp dmUgaXQgeWV0KQorbXkgQGZsdXNoX2xzbnM7Citmb3IgKG15ICRpID0gMDsgJGkgPCA1OyAkaSsr KQoreworCSRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiSU5TRVJUIElO VE8gd2FpdF90ZXN0IFZBTFVFUyAoMjAwICsgJHtpfSk7Iik7CisJJGZsdXNoX2xzbnNbJGldID0K KwkgICRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiU0VMRUNUIHBnX2N1 cnJlbnRfd2FsX2luc2VydF9sc24oKSIpOworfQorCisjIFN0YXJ0IHN0YW5kYnlfZmx1c2ggd2Fp dGVycyAodGhleSB3aWxsIGJsb2NrIHNpbmNlIHdhbHJlY2VpdmVyIGlzIHN0b3BwZWQpCitteSBA Zmx1c2hfc2Vzc2lvbnM7Citmb3IgKG15ICRpID0gMDsgJGkgPCA1OyAkaSsrKQoreworCSRmbHVz aF9zZXNzaW9uc1skaV0gPSAkbm9kZV9zdGFuZGJ5LT5iYWNrZ3JvdW5kX3BzcWwoJ3Bvc3RncmVz Jyk7CisJJGZsdXNoX3Nlc3Npb25zWyRpXS0+cXVlcnlfdW50aWwoCisJCXFyL3N0YXJ0LywgcXFb CisJCVxcZWNobyBzdGFydAorCQlXQUlUIEZPUiBMU04gJyRmbHVzaF9sc25zWyRpXScgV0lUSCAo TU9ERSAnc3RhbmRieV9mbHVzaCcsIHRpbWVvdXQgJzFkJyk7CisJCVNFTEVDVCBsb2dfd2FpdF9k b25lKCdmbHVzaF9kb25lJywgJGkpOworCV0pOworfQorCisjIFZlcmlmeSB3YWl0ZXJzIGFyZSBi bG9ja2VkCiskbm9kZV9zdGFuZGJ5LT5wb2xsX3F1ZXJ5X3VudGlsKCdwb3N0Z3JlcycsCisJIlNF TEVDVCBjb3VudCgqKSA9IDUgRlJPTSBwZ19zdGF0X2FjdGl2aXR5IFdIRVJFIHdhaXRfZXZlbnQg PSAnV2FpdEZvcldhbEZsdXNoJyIKKyk7CisKKyMgUmVzdG9yZSB3YWxyZWNlaXZlciB0byB1bmJs b2NrIHdhaXRlcnMKK215ICRmbHVzaF9sb2dfb2Zmc2V0ID0gLXMgJG5vZGVfc3RhbmRieS0+bG9n ZmlsZTsKK3Jlc3VtZV93YWxyZWNlaXZlcigkbm9kZV9zdGFuZGJ5KTsKKworIyBXYWl0IGZvciBh bGwgd2FpdGVycyB0byBjb21wbGV0ZSBhbmQgY2xvc2Ugc2Vzc2lvbnMKK2ZvciAobXkgJGkgPSAw OyAkaSA8IDU7ICRpKyspCit7CisJJG5vZGVfc3RhbmRieS0+d2FpdF9mb3JfbG9nKCJmbHVzaF9k b25lICRpIiwgJGZsdXNoX2xvZ19vZmZzZXQpOworCSRmbHVzaF9zZXNzaW9uc1skaV0tPnF1aXQ7 Cit9CisKKyMgVmVyaWZ5IG9uIHN0YW5kYnkgdGhhdCBXQUwgd2FzIGZsdXNoZWQgdXAgdG8gdGhl IHRhcmdldCBMU04KKyRvdXRwdXQgPSAkbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkiU0VMRUNUIHBnX2xzbl9jbXAocGdfbGFzdF93YWxfcmVjZWl2ZV9sc24oKSwgJyRmbHVz aF9sc25zWzRdJzo6cGdfbHNuKTsiCispOworCitvaygkb3V0cHV0ID49IDAsCisJIm11bHRpcGxl IHN0YW5kYnlfZmx1c2ggd2FpdGVyczogc3RhbmRieSBmbHVzaGVkIFdBTCB1cCB0byB0YXJnZXQg TFNOIik7CisKKyMgN2QuIENoZWNrIHRoZSBzY2VuYXJpbyBvZiBtaXhlZCBzdGFuZGJ5IG1vZGUg d2FpdGVycyAoc3RhbmRieV9yZXBsYXksCisjIHN0YW5kYnlfd3JpdGUsIHN0YW5kYnlfZmx1c2gp IHJ1bm5pbmcgY29uY3VycmVudGx5LiAgV2Ugc3RhcnQgNiBzZXNzaW9uczoKKyMgMiBmb3IgZWFj aCBtb2RlLCBhbGwgd2FpdGluZyBmb3IgdGhlIHNhbWUgdGFyZ2V0IExTTi4gIFdlIHN0b3AgdGhl CisjIHdhbHJlY2VpdmVyIGFuZCBwYXVzZSByZXBsYXkgdG8gZW5zdXJlIGFsbCB3YWl0ZXJzIGJs b2NrLiAgVGhlbiB3ZSByZXN1bWUKKyMgcmVwbGF5IGFuZCByZXN0YXJ0IHRoZSB3YWxyZWNlaXZl ciB0byB2ZXJpZnkgdGhleSB1bmJsb2NrIGFuZCBjb21wbGV0ZQorIyBjb3JyZWN0bHkuCisKKyMg U3RvcCB3YWxyZWNlaXZlciBmaXJzdCB0byBlbnN1cmUgd2UgY2FuIGNvbnRyb2wgdGhlIGZsb3cg d2l0aG91dCBoYW5naW5nCisjIChzdG9wcGluZyBpdCBhZnRlciBwYXVzaW5nIHJlcGxheSBjYW4g aGFuZyBpZiB0aGUgc3RhcnR1cCBwcm9jZXNzIGlzIHBhdXNlZCkuCitzdG9wX3dhbHJlY2VpdmVy KCRub2RlX3N0YW5kYnkpOworCisjIFBhdXNlIHJlcGxheQorJG5vZGVfc3RhbmRieS0+c2FmZV9w c3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgcGdfd2FsX3JlcGxheV9wYXVzZSgpOyIpOworCisjIEdl bmVyYXRlIFdBTCBvbiBwcmltYXJ5Ciskbm9kZV9wcmltYXJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKKwkiSU5TRVJUIElOVE8gd2FpdF90ZXN0IFZBTFVFUyAoZ2VuZXJhdGVfc2VyaWVzKDMwMSwg MzEwKSk7Iik7CitteSAkbWl4ZWRfdGFyZ2V0X2xzbiA9CisgICRub2RlX3ByaW1hcnktPnNhZmVf cHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIHBnX2N1cnJlbnRfd2FsX2luc2VydF9sc24oKSIpOwor CisjIFN0YXJ0IDYgd2FpdGVyczogMiBmb3IgZWFjaCBtb2RlCitteSBAbWl4ZWRfc2Vzc2lvbnM7 CitteSBAbWl4ZWRfbW9kZXMgPSAoJ3N0YW5kYnlfcmVwbGF5JywgJ3N0YW5kYnlfd3JpdGUnLCAn c3RhbmRieV9mbHVzaCcpOworZm9yIChteSAkaSA9IDA7ICRpIDwgNjsgJGkrKykKK3sKKwkkbWl4 ZWRfc2Vzc2lvbnNbJGldID0gJG5vZGVfc3RhbmRieS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3Jl cycpOworCSRtaXhlZF9zZXNzaW9uc1skaV0tPnF1ZXJ5X3VudGlsKAorCQlxci9zdGFydC8sIHFx WworCQlcXGVjaG8gc3RhcnQKKwkJV0FJVCBGT1IgTFNOICcke21peGVkX3RhcmdldF9sc259JyBX SVRIIChNT0RFICckbWl4ZWRfbW9kZXNbJGkgJSAzXScsIHRpbWVvdXQgJzFkJyk7CisJCVNFTEVD VCBsb2dfd2FpdF9kb25lKCdtaXhlZF9kb25lJywgJGkpOworCV0pOworfQorCisjIFZlcmlmeSBh bGwgd2FpdGVycyBhcmUgYmxvY2tlZAorJG5vZGVfc3RhbmRieS0+cG9sbF9xdWVyeV91bnRpbCgn cG9zdGdyZXMnLAorCSJTRUxFQ1QgY291bnQoKikgPSA2IEZST00gcGdfc3RhdF9hY3Rpdml0eSBX SEVSRSB3YWl0X2V2ZW50IExJS0UgJ1dhaXRGb3JXYWwlJyIKKyk7CisKKyMgUmVzdW1lIHJlcGxh eSAod2FpdGVycyBzaG91bGQgc3RpbGwgYmUgYmxvY2tlZCBhcyBubyBXQUwgaGFzIGFycml2ZWQp CitteSAkbWl4ZWRfbG9nX29mZnNldCA9IC1zICRub2RlX3N0YW5kYnktPmxvZ2ZpbGU7Ciskbm9k ZV9zdGFuZGJ5LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBwZ193YWxfcmVwbGF5X3Jl c3VtZSgpOyIpOworJG5vZGVfc3RhbmRieS0+cG9sbF9xdWVyeV91bnRpbCgncG9zdGdyZXMnLAor CSJTRUxFQ1QgTk9UIHBnX2lzX3dhbF9yZXBsYXlfcGF1c2VkKCk7Iik7CisKKyMgUmVzdG9yZSB3 YWxyZWNlaXZlciB0byBhbGxvdyBXQUwgdG8gYXJyaXZlCityZXN1bWVfd2FscmVjZWl2ZXIoJG5v ZGVfc3RhbmRieSk7CiAKLSMgNy4gQ2hlY2sgdGhhdCB0aGUgc3RhbmRieSBwcm9tb3Rpb24gdGVy bWluYXRlcyB0aGUgd2FpdCBvbiBMU04uICBTdGFydAotIyB3YWl0aW5nIGZvciBhbiB1bnJlYWNo YWJsZSBMU04gdGhlbiBwcm9tb3RlLiAgQ2hlY2sgdGhlIGxvZyBmb3IgdGhlIHJlbGV2YW50Ci0j IGVycm9yIG1lc3NhZ2UuICBBbHNvLCBjaGVjayB0aGF0IHdhaXRpbmcgZm9yIGFscmVhZHkgcmVw bGF5ZWQgTFNOIGRvZXNuJ3QKLSMgY2F1c2UgYW4gZXJyb3IgZXZlbiBhZnRlciBwcm9tb3Rpb24u CisjIFdhaXQgZm9yIGFsbCBzZXNzaW9ucyB0byBjb21wbGV0ZSBhbmQgY2xvc2UgdGhlbQorZm9y IChteSAkaSA9IDA7ICRpIDwgNjsgJGkrKykKK3sKKwkkbm9kZV9zdGFuZGJ5LT53YWl0X2Zvcl9s b2coIm1peGVkX2RvbmUgJGkiLCAkbWl4ZWRfbG9nX29mZnNldCk7CisJJG1peGVkX3Nlc3Npb25z WyRpXS0+cXVpdDsKK30KKworIyBWZXJpZnkgYWxsIG1vZGVzIHJlYWNoZWQgdGhlIHRhcmdldCBM U04KKyRvdXRwdXQgPSAkbm9kZV9zdGFuZGJ5LT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywgcXFb CisJU0VMRUNUIHBnX2xzbl9jbXAoKFNFTEVDVCB3cml0dGVuX2xzbiBGUk9NIHBnX3N0YXRfd2Fs X3JlY2VpdmVyKSwgJyR7bWl4ZWRfdGFyZ2V0X2xzbn0nOjpwZ19sc24pID49IDAgQU5ECisJICAg ICAgIHBnX2xzbl9jbXAocGdfbGFzdF93YWxfcmVjZWl2ZV9sc24oKSwgJyR7bWl4ZWRfdGFyZ2V0 X2xzbn0nOjpwZ19sc24pID49IDAgQU5ECisJICAgICAgIHBnX2xzbl9jbXAocGdfbGFzdF93YWxf cmVwbGF5X2xzbigpLCAnJHttaXhlZF90YXJnZXRfbHNufSc6OnBnX2xzbikgPj0gMDsKK10pOwor Citvaygkb3V0cHV0IGVxICd0JywKKwkibWl4ZWQgbW9kZSB3YWl0ZXJzOiBhbGwgbW9kZXMgY29t cGxldGVkIGFuZCByZWFjaGVkIHRhcmdldCBMU04iKTsKKworIyA3ZS4gQ2hlY2sgdGhlIHNjZW5h cmlvIG9mIG11bHRpcGxlIHByaW1hcnlfZmx1c2ggd2FpdGVycyBvbiBwcmltYXJ5LgorIyBXZSBz dGFydCA1IGJhY2tncm91bmQgc2Vzc2lvbnMgd2FpdGluZyBmb3IgZGlmZmVyZW50IExTTnMgd2l0 aCBwcmltYXJ5X2ZsdXNoCisjIG1vZGUuICBFYWNoIHdhaXRlciBsb2dzIHdoZW4gZG9uZS4KK215 IEBwcmltYXJ5X2ZsdXNoX2xzbnM7Citmb3IgKG15ICRpID0gMDsgJGkgPCA1OyAkaSsrKQorewor CSRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCQkiSU5TRVJUIElOVE8gd2Fp dF90ZXN0IFZBTFVFUyAoNDAwICsgJHtpfSk7Iik7CisJJHByaW1hcnlfZmx1c2hfbHNuc1skaV0g PQorCSAgJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJCSJTRUxFQ1QgcGdf Y3VycmVudF93YWxfaW5zZXJ0X2xzbigpIik7Cit9CisKK215ICRwcmltYXJ5X2ZsdXNoX2xvZ19v ZmZzZXQgPSAtcyAkbm9kZV9wcmltYXJ5LT5sb2dmaWxlOworCisjIFN0YXJ0IHByaW1hcnlfZmx1 c2ggd2FpdGVycworbXkgQHByaW1hcnlfZmx1c2hfc2Vzc2lvbnM7Citmb3IgKG15ICRpID0gMDsg JGkgPCA1OyAkaSsrKQoreworCSRwcmltYXJ5X2ZsdXNoX3Nlc3Npb25zWyRpXSA9ICRub2RlX3By aW1hcnktPmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnKTsKKwkkcHJpbWFyeV9mbHVzaF9zZXNz aW9uc1skaV0tPnF1ZXJ5X3VudGlsKAorCQlxci9zdGFydC8sIHFxWworCQlcXGVjaG8gc3RhcnQK KwkJV0FJVCBGT1IgTFNOICckcHJpbWFyeV9mbHVzaF9sc25zWyRpXScgV0lUSCAoTU9ERSAncHJp bWFyeV9mbHVzaCcsIHRpbWVvdXQgJzFkJyk7CisJCVNFTEVDVCBsb2dfd2FpdF9kb25lKCdwcmlt YXJ5X2ZsdXNoX2RvbmUnLCAkaSk7CisJXSk7Cit9CisKKyMgVGhlIFdBTCBzaG91bGQgYWxyZWFk eSBiZSBmbHVzaGVkLCBzbyB3YWl0ZXJzIHNob3VsZCBjb21wbGV0ZSBxdWlja2x5Citmb3IgKG15 ICRpID0gMDsgJGkgPCA1OyAkaSsrKQoreworCSRub2RlX3ByaW1hcnktPndhaXRfZm9yX2xvZygi cHJpbWFyeV9mbHVzaF9kb25lICRpIiwKKwkJJHByaW1hcnlfZmx1c2hfbG9nX29mZnNldCk7CisJ JHByaW1hcnlfZmx1c2hfc2Vzc2lvbnNbJGldLT5xdWl0OworfQorCisjIFZlcmlmeSBvbiBwcmlt YXJ5IHRoYXQgV0FMIHdhcyBmbHVzaGVkIHVwIHRvIHRoZSB0YXJnZXQgTFNOCiskb3V0cHV0ID0g JG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJIlNFTEVDVCBwZ19sc25fY21w KHBnX2N1cnJlbnRfd2FsX2ZsdXNoX2xzbigpLCAnJHByaW1hcnlfZmx1c2hfbHNuc1s0XSc6OnBn X2xzbik7IgorKTsKKworb2soJG91dHB1dCA+PSAwLAorCSJtdWx0aXBsZSBwcmltYXJ5X2ZsdXNo IHdhaXRlcnM6IHByaW1hcnkgZmx1c2hlZCBXQUwgdXAgdG8gdGFyZ2V0IExTTiIpOworCisjIDgu IENoZWNrIHRoYXQgdGhlIHN0YW5kYnkgcHJvbW90aW9uIHRlcm1pbmF0ZXMgYWxsIHN0YW5kYnkg d2FpdCBtb2Rlcy4gIFN0YXJ0CisjIHdhaXRpbmcgZm9yIHVucmVhY2hhYmxlIExTTnMgd2l0aCBz dGFuZGJ5X3JlcGxheSwgc3RhbmRieV93cml0ZSwgYW5kCisjIHN0YW5kYnlfZmx1c2ggbW9kZXMs IHRoZW4gcHJvbW90ZS4gIENoZWNrIHRoZSBsb2cgZm9yIHRoZSByZWxldmFudCBlcnJvcgorIyBt ZXNzYWdlcy4gIEFsc28sIGNoZWNrIHRoYXQgd2FpdGluZyBmb3IgYWxyZWFkeSByZXBsYXllZCBM U04gZG9lc24ndCBjYXVzZQorIyBhbiBlcnJvciBldmVuIGFmdGVyIHByb21vdGlvbi4KIG15ICRs c240ID0KICAgJG5vZGVfcHJpbWFyeS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJIlNFTEVDVCBw Z19jdXJyZW50X3dhbF9pbnNlcnRfbHNuKCkgKyAxMDAwMDAwMDAwMCIpOworCiBteSAkbHNuNSA9 CiAgICRub2RlX3ByaW1hcnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiU0VMRUNUIHBnX2N1cnJl bnRfd2FsX2luc2VydF9sc24oKSIpOwotbXkgJHBzcWxfc2Vzc2lvbiA9ICRub2RlX3N0YW5kYnkt PmJhY2tncm91bmRfcHNxbCgncG9zdGdyZXMnKTsKLSRwc3FsX3Nlc3Npb24tPnF1ZXJ5X3VudGls KAotCXFyL3N0YXJ0LywgcXFbCi0JXFxlY2hvIHN0YXJ0Ci0JV0FJVCBGT1IgTFNOICcke2xzbjR9 JzsKLV0pOworCisjIFN0YXJ0IGJhY2tncm91bmQgc2Vzc2lvbnMgd2FpdGluZyBmb3IgdW5yZWFj aGFibGUgTFNOIHdpdGggYWxsIG1vZGVzCitteSBAd2FpdF9tb2RlcyA9ICgnc3RhbmRieV9yZXBs YXknLCAnc3RhbmRieV93cml0ZScsICdzdGFuZGJ5X2ZsdXNoJyk7CitteSBAd2FpdF9zZXNzaW9u czsKK2ZvciAobXkgJGkgPSAwOyAkaSA8IDM7ICRpKyspCit7CisJJHdhaXRfc2Vzc2lvbnNbJGld ID0gJG5vZGVfc3RhbmRieS0+YmFja2dyb3VuZF9wc3FsKCdwb3N0Z3JlcycpOworCSR3YWl0X3Nl c3Npb25zWyRpXS0+cXVlcnlfdW50aWwoCisJCXFyL3N0YXJ0LywgcXFbCisJCVxcZWNobyBzdGFy dAorCQlXQUlUIEZPUiBMU04gJyR7bHNuNH0nIFdJVEggKE1PREUgJyR3YWl0X21vZGVzWyRpXScp OworCV0pOworfQogCiAjIE1ha2Ugc3VyZSBzdGFuZGJ5IHdpbGwgYmUgcHJvbW90ZWQgYXQgbGVh c3QgYXQgdGhlIHByaW1hcnkgaW5zZXJ0IExTTiB3ZQogIyBoYXZlIGp1c3Qgb2JzZXJ2ZWQuICBV c2UgcGdfc3dpdGNoX3dhbCgpIHRvIGZvcmNlIHRoZSBpbnNlcnQgTFNOIHRvIGJlCkBAIC0yNzcs OSArNjIwLDE2IEBAICRub2RlX3ByaW1hcnktPndhaXRfZm9yX2NhdGNodXAoJG5vZGVfc3RhbmRi eSk7CiAKICRsb2dfb2Zmc2V0ID0gLXMgJG5vZGVfc3RhbmRieS0+bG9nZmlsZTsKICRub2RlX3N0 YW5kYnktPnByb21vdGU7Ci0kbm9kZV9zdGFuZGJ5LT53YWl0X2Zvcl9sb2coJ3JlY292ZXJ5IGlz IG5vdCBpbiBwcm9ncmVzcycsICRsb2dfb2Zmc2V0KTsKIAotb2soMSwgJ2dvdCBlcnJvciBhZnRl ciBzdGFuZGJ5IHByb21vdGUnKTsKKyMgV2FpdCBmb3IgYWxsIHRocmVlIHNlc3Npb25zIHRvIGdl dCB0aGUgZXJyb3IgKGVhY2ggbW9kZSBoYXMgZGlzdGluY3QgbWVzc2FnZSkKKyRub2RlX3N0YW5k YnktPndhaXRfZm9yX2xvZyhxci9SZWNvdmVyeSBlbmRlZCBiZWZvcmUgdGFyZ2V0IExTTi4qd2Fz IHdyaXR0ZW4vLAorCSRsb2dfb2Zmc2V0KTsKKyRub2RlX3N0YW5kYnktPndhaXRfZm9yX2xvZyhx ci9SZWNvdmVyeSBlbmRlZCBiZWZvcmUgdGFyZ2V0IExTTi4qd2FzIGZsdXNoZWQvLAorCSRsb2df b2Zmc2V0KTsKKyRub2RlX3N0YW5kYnktPndhaXRfZm9yX2xvZygKKwlxci9SZWNvdmVyeSBlbmRl ZCBiZWZvcmUgdGFyZ2V0IExTTi4qd2FzIHJlcGxheWVkLywgJGxvZ19vZmZzZXQpOworCitvaygx LCAncHJvbW90aW9uIGludGVycnVwdGVkIGFsbCB3YWl0IG1vZGVzJyk7CiAKICRub2RlX3N0YW5k YnktPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAiV0FJVCBGT1IgTFNOICcke2xzbjV9JzsiKTsKIApA QCAtMjk1LDggKzY0NSwxMSBAQCBvaygkb3V0cHV0IGVxICJub3QgaW4gcmVjb3ZlcnkiLAogJG5v ZGVfc3RhbmRieS0+c3RvcDsKICRub2RlX3ByaW1hcnktPnN0b3A7CiAKLSMgSWYgd2Ugc2VuZCBc cSB3aXRoICRwc3FsX3Nlc3Npb24tPnF1aXQgdGhlIGNvbW1hbmQgY2FuIGJlIHNlbnQgdG8gdGhl IHNlc3Npb24KKyMgSWYgd2Ugc2VuZCBccSB3aXRoICRzZXNzaW9uLT5xdWl0IHRoZSBjb21tYW5k IGNhbiBiZSBzZW50IHRvIHRoZSBzZXNzaW9uCiAjIGFscmVhZHkgY2xvc2VkLiBTbyBccSBpcyBp biBpbml0aWFsIHNjcmlwdCwgaGVyZSB3ZSBvbmx5IGZpbmlzaCBJUEM6OlJ1bi4KLSRwc3FsX3Nl c3Npb24tPntydW59LT5maW5pc2g7Citmb3IgKG15ICRpID0gMDsgJGkgPCAzOyAkaSsrKQorewor CSR3YWl0X3Nlc3Npb25zWyRpXS0+e3J1bn0tPmZpbmlzaDsKK30KIAogZG9uZV90ZXN0aW5nKCk7 Ci0tIAoyLjUxLjAKCg== --000000000000c5b88c0647642e91--