Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1svf5O-00Ghxi-Il for pgsql-hackers@arkaria.postgresql.org; Tue, 01 Oct 2024 15:46:51 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1svf5N-001JaC-1Q for pgsql-hackers@arkaria.postgresql.org; Tue, 01 Oct 2024 15:46:49 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1svf5M-001JZi-Kb for pgsql-hackers@lists.postgresql.org; Tue, 01 Oct 2024 15:46:48 +0000 Received: from mail-qv1-xf36.google.com ([2607:f8b0:4864:20::f36]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.94.2) (envelope-from ) id 1svf5I-0022NW-5w for pgsql-hackers@lists.postgresql.org; Tue, 01 Oct 2024 15:46:47 +0000 Received: by mail-qv1-xf36.google.com with SMTP id 6a1803df08f44-6cb7f5f9fb7so2327996d6.1 for ; Tue, 01 Oct 2024 08:46:45 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1727797604; x=1728402404; 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=wc0LB9I1KkGLSofsgtdrTwKWMX0JG671wz8DfVBhW3A=; b=PX7MbTAJvymTFUkof8d0x2A0Ye4jCPrjUjbvxlyRK4cWzJw1o5w1b5/FaA8kWRCwNp JHiyaxfwZPGjvVNfQZf9sXRXnayh4jdLmRhukvddpXz2ntZR/cFIgAvTxLhBqK+y61Ds VBPnkw1dZPTl6q9XCNjGD/ul7+Hhqwh4+pHZJ4Ne0M4oYzlPxt7SqgtCuL1dvk6yZwRh 6JPd93CDW18gIUOeLaV9hIJXTPOFytVuae18B+gaQMfSg4ywMq/pEBYZ0nnlQryOss3u CaUfi2OHG8tED5tGcBwCCTgV/D+DtpOuUk66bhcGKe0zB/0ZpotL9R3NzH0gvEk6BnLK ZKMA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1727797604; x=1728402404; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=wc0LB9I1KkGLSofsgtdrTwKWMX0JG671wz8DfVBhW3A=; b=MNtkq6xfbW0ysaR+FRFdG0mNmjoHFVgWGyzKSFVlFH1tX5trokoGjimBpkWySQdidW sVOdBufLv3B4PeKobmvHVG0xSVkx8tTPtHN8HzmVCZdZPUi8XlRwi7BBG6GxHbv8NCvq Cg1knlT/sYkEToRi+5nhv8ADUYAg8d+76/U4L/ZBNEJPLErlbwCFTqtUfbdXno4C8QQH YHaKTrIbvmU/tq/hiGpND9ebTJfWea9U4T5gsocvaIwwh5rSZ4IPD5HNJLDIblFOYD+G n/nkLkJmOxZoim1fUZGB9aQuDYxa5ml7tlipgKdFb0sMysJ/8AgYUSLMPsF4i+D0n6yy N0sg== X-Forwarded-Encrypted: i=1; AJvYcCUyEW5ZTjQ11BZVvc25r+GcJwI46Wp4StBoptjytfhcL7CqCj8wdSdUG0aEcKEi2N804Npoijcb946AbgKT@lists.postgresql.org X-Gm-Message-State: AOJu0YzcxOAPZeDN0sxwwPBmuUIDon7e7EYrJSGjk6Akq2p6U/ncN8tr WVntkp7tbH3BbDoLRrZfa6AaHbS17nl4r9/9UprdM/0QEvQs7I8gmiQt9z5jWKu7Ktk0+QG/u4F 24eQw/2Kvxb1KfFXMQed61yqGd54= X-Google-Smtp-Source: AGHT+IGdcxxvGws3nPPyy8g5HOzyOSmRl7VORAJZ/NcDCo19Wgax5Aq7Y7O2XGiM9DF63JziVfEDkpmBAvm9x+If5WE= X-Received: by 2002:a05:6214:448c:b0:6c1:8663:e8f0 with SMTP id 6a1803df08f44-6cb3b61465amr235353726d6.28.1727797603690; Tue, 01 Oct 2024 08:46:43 -0700 (PDT) MIME-Version: 1.0 References: <94d53a41-d1f5-4fd1-8d1e-ff36ac569848@app.fastmail.com> <4DA5A159-39FD-47DB-95E5-A4F65BC5782A@yandex-team.ru> <53e96b5a-cc77-4afa-8103-79c69afef1a6@uni-muenster.de> In-Reply-To: <53e96b5a-cc77-4afa-8103-79c69afef1a6@uni-muenster.de> From: Kirill Gavrilov Date: Tue, 1 Oct 2024 18:46:32 +0300 Message-ID: Subject: Re: Truncate logs by max_log_size To: Jim Jones Cc: "Andrey M. Borodin" , Euler Taveira , pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="00000000000069af8b06236c3a53" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000069af8b06236c3a53 Content-Type: multipart/alternative; boundary="00000000000069af8b06236c3a51" --00000000000069af8b06236c3a51 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, Oct 1, 2024 at 2:46=E2=80=AFPM Jim Jones wrote: > > On 27.09.24 12:36, Andrey M. Borodin wrote: > > Consider max_log_size =3D 10Mb. The perspective might look very differe= nt. > > It=E2=80=99s not about WHERE anymore. It's a guard against heavy abuse= . > > > > The feature looks very important for me. > I have the same opinion. As a fail safe it sounds very useful to me. > > Unfortunately, the patch does not apply: > > $ git apply > ~/patches/max_log_query/0001-parameter-max_log_size-to-truncate-logs.patc= h > -v > Checking patch src/backend/utils/error/elog.c... > error: while searching for: > char *Log_destination_string =3D NULL; > bool syslog_sequence_numbers =3D true; > bool syslog_split_messages =3D true; > > /* Processed form of backtrace_symbols GUC */ > static char *backtrace_symbol_list; > > error: patch failed: src/backend/utils/error/elog.c:114 > error: src/backend/utils/error/elog.c: patch does not apply > Checking patch src/backend/utils/misc/guc_tables.c... > Hunk #1 succeeded at 3714 (offset 247 lines). > Checking patch src/backend/utils/misc/postgresql.conf.sample... > Hunk #1 succeeded at 615 (offset 23 lines). > Checking patch src/bin/pg_ctl/t/004_logrotate.pl... > error: while searching for: > check_log_pattern('csvlog', $new_current_logfiles, 'syntax error', $node= ); > check_log_pattern('jsonlog', $new_current_logfiles, 'syntax error', $node= ); > > $node->stop(); > > done_testing(); > > error: patch failed: src/bin/pg_ctl/t/004_logrotate.pl:135 > error: src/bin/pg_ctl/t/004_logrotate.pl: patch does not apply > Checking patch src/include/utils/elog.h... > Hunk #1 succeeded at 502 (offset 1 line). > > Does it truncate only single queries or also a transaction with many > statements? > > Thanks! > > Best, Jim > My apologies, attached patch should work on master branch. It truncates single queries and a statement in transaction that occurred an error. --00000000000069af8b06236c3a51 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
On Tue, Oct 1, 2024 at 2:46=E2=80=AFPM Ji= m Jones <jim.jones@uni-muen= ster.de> wrote:

On 27.09.24 12:36, Andrey M. Borodin wrote:
> Consider max_log_size =3D 10Mb. The perspective might look very differ= ent.
>=C2=A0 It=E2=80=99s not about WHERE anymore. It's a guard against h= eavy abuse.
>
> The feature looks very important for me.
I have the same opinion. As a fail safe it sounds very useful to me.

Unfortunately, the patch does not apply:

$ git apply
~/patches/max_log_query/0001-parameter-max_log_size-to-truncate-logs.patch<= br> -v
Checking patch src/backend/utils/error/elog.c...
error: while searching for:
char=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 *Log_destination_string =3D NULL;<= br> bool=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 sysl= og_sequence_numbers =3D true;
bool=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0=C2=A0 sysl= og_split_messages =3D true;

/* Processed form of backtrace_symbols GUC */
static char *backtrace_symbol_list;

error: patch failed: src/backend/utils/error/elog.c:114
error: src/backend/utils/error/elog.c: patch does not apply
Checking patch src/backend/utils/misc/guc_tables.c...
Hunk #1 succeeded at 3714 (offset 247 lines).
Checking patch src/backend/utils/misc/postgresql.conf.sample...
Hunk #1 succeeded at 615 (offset 23 lines).
Checking patch src/bin/pg_ctl/t/004_logrotate.pl...
error: while searching for:
check_log_pattern('csvlog',=C2=A0 $new_current_logfiles, 'synta= x error', $node);
check_log_pattern('jsonlog', $new_current_logfiles, 'syntax err= or', $node);

$node->stop();

done_testing();

error: patch failed: src/bin/pg_ctl/t/004_logrotate.pl:135
error: src/bin/pg_ctl/t/004_logrotate.pl: patch does not apply
Checking patch src/include/utils/elog.h...
Hunk #1 succeeded at 502 (offset 1 line).

Does it truncate only single queries or also a transaction with many
statements?

Thanks!

Best, Jim

=C2=A0My apologies, attached = patch should work on master branch.
It truncates single queries a= nd a statement in transaction that occurred an error.

<= /div>
--00000000000069af8b06236c3a51-- --00000000000069af8b06236c3a53 Content-Type: application/octet-stream; name="0002-parameter-max_log_size-to-truncate-logs.patch" Content-Disposition: attachment; filename="0002-parameter-max_log_size-to-truncate-logs.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m1qlxzr20 RnJvbSBkMmViOWNjZGU5NzBmNzUyYmUxMmNlNGRiY2Y0MGM1NTgwNjU5OWM5IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBkaXBoYW50eG0gPGRpcGhhbnR4bUB5YW5kZXgtdGVhbS5ydT4K RGF0ZTogVHVlLCAxIE9jdCAyMDI0IDE3OjI4OjE2ICswMzAwClN1YmplY3Q6IFtQQVRDSF0gcGFy YW1ldGVyIG1heF9sb2dfc2l6ZSB0byB0cnVuY2F0ZSBsb2dzCgpUaGVyZSBpcyBubyBuZWVkIHRv IGxvZyB0aGUgZW50aXJlIHF1ZXJ5LCBiZWNhdXNlIGl0IG1heSBiZSBsYXJnZSBhbmQgdGFrZSBs b3RzIG9mIHNwYWNlIG9uIGRpc2suIFBhcmFtZXRlciBtYXhfbG9nX3NpemUgc2V0IHRoZSBtYXhp bXVtIGxlbmd0aCBmb3IgbG9nZ2VkIHF1ZXJ5LiBFdmVyeXRoaW5nIGJleW9uZCB0aGF0IGxlbmd0 aCBpcyB0cnVuY2F0ZWQuIFZhbHVlIDAgZGlzYWJsZXMgdGhlIHBhcmFtZXRlci4KLS0tCiBzcmMv YmFja2VuZC91dGlscy9lcnJvci9lbG9nLmMgICAgICAgICAgICAgICAgfCAgOCArKysrKysrKwog c3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfdGFibGVzLmMgICAgICAgICAgIHwgMTEgKysrKysr KysrKysKIHNyYy9iYWNrZW5kL3V0aWxzL21pc2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZSB8ICAy ICsrCiBzcmMvYmluL3BnX2N0bC90LzAwNF9sb2dyb3RhdGUucGwgICAgICAgICAgICAgfCAxNSAr KysrKysrKysrKysrKysKIHNyYy9pbmNsdWRlL3V0aWxzL2Vsb2cuaCAgICAgICAgICAgICAgICAg ICAgICB8ICAxICsKIDUgZmlsZXMgY2hhbmdlZCwgMzcgaW5zZXJ0aW9ucygrKQoKZGlmZiAtLWdp dCBhL3NyYy9iYWNrZW5kL3V0aWxzL2Vycm9yL2Vsb2cuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2Vy cm9yL2Vsb2cuYwppbmRleCA1Y2JiNWI1NDE2Li4wNjkwZWM1N2NlIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC91dGlscy9lcnJvci9lbG9nLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvZXJyb3Iv ZWxvZy5jCkBAIC0xMTEsNiArMTExLDcgQEAgaW50CQkJTG9nX2Rlc3RpbmF0aW9uID0gTE9HX0RF U1RJTkFUSU9OX1NUREVSUjsKIGNoYXIJICAgKkxvZ19kZXN0aW5hdGlvbl9zdHJpbmcgPSBOVUxM OwogYm9vbAkJc3lzbG9nX3NlcXVlbmNlX251bWJlcnMgPSB0cnVlOwogYm9vbAkJc3lzbG9nX3Nw bGl0X21lc3NhZ2VzID0gdHJ1ZTsKK2ludAkJCW1heF9sb2dfc2l6ZSA9IDA7CiAKIC8qIFByb2Nl c3NlZCBmb3JtIG9mIGJhY2t0cmFjZV9mdW5jdGlvbnMgR1VDICovCiBzdGF0aWMgY2hhciAqYmFj a3RyYWNlX2Z1bmN0aW9uX2xpc3Q7CkBAIC0xNjkzLDYgKzE2OTQsMTMgQEAgRW1pdEVycm9yUmVw b3J0KHZvaWQpCiAJQ0hFQ0tfU1RBQ0tfREVQVEgoKTsKIAlvbGRjb250ZXh0ID0gTWVtb3J5Q29u dGV4dFN3aXRjaFRvKGVkYXRhLT5hc3NvY19jb250ZXh0KTsKIAorCWlmIChtYXhfbG9nX3NpemUg IT0gMCAmJiBkZWJ1Z19xdWVyeV9zdHJpbmcgIT0gTlVMTCkKKwl7CisJCWNoYXIqIHN0ciA9IGRl YnVnX3F1ZXJ5X3N0cmluZzsKKwkJc3RyW3BnX21iY2xpcGxlbihzdHIsIHN0cmxlbihzdHIpLCBt YXhfbG9nX3NpemUpXSA9ICdcMCc7CisJCWRlYnVnX3F1ZXJ5X3N0cmluZyA9IHN0cjsKKwl9CisK IAkvKgogCSAqIFJlc2V0IHRoZSBmb3JtYXR0ZWQgdGltZXN0YW1wIGZpZWxkcyBiZWZvcmUgZW1p dHRpbmcgYW55IGxvZ3MuICBUaGlzCiAJICogaW5jbHVkZXMgYWxsIHRoZSBsb2cgZGVzdGluYXRp b25zIGFuZCBlbWl0X2xvZ19ob29rLCBhcyB0aGUgbGF0dGVyCmRpZmYgLS1naXQgYS9zcmMvYmFj a2VuZC91dGlscy9taXNjL2d1Y190YWJsZXMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL21pc2MvZ3Vj X3RhYmxlcy5jCmluZGV4IDY4NjMwOWRiNTguLmNmMTQwNGMwNTkgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL3V0aWxzL21pc2MvZ3VjX3RhYmxlcy5jCisrKyBiL3NyYy9iYWNrZW5kL3V0aWxzL21p c2MvZ3VjX3RhYmxlcy5jCkBAIC0zNzE0LDYgKzM3MTQsMTcgQEAgc3RydWN0IGNvbmZpZ19pbnQg Q29uZmlndXJlTmFtZXNJbnRbXSA9CiAJCU5VTEwsIE5VTEwsIE5VTEwKIAl9LAogCisJeworCQl7 Im1heF9sb2dfc2l6ZSIsIFBHQ19TSUdIVVAsIExPR0dJTkdfV0hBVCwKKwkJCWdldHRleHRfbm9v cCgiU2V0cyBtYXggc2l6ZSBvZiBsb2dnZWQgc3RhdGVtZW50LiIpLAorCQkJTlVMTAorCQl9LAor CQkmbWF4X2xvZ19zaXplLAorCQk1ICogKDEwMjQgKiAxMDI0KSwKKwkJMCwgSU5UX01BWCwKKwkJ TlVMTCwgTlVMTCwgTlVMTAorCX0sCisKIAkvKiBFbmQtb2YtbGlzdCBtYXJrZXIgKi8KIAl7CiAJ CXtOVUxMLCAwLCAwLCBOVUxMLCBOVUxMfSwgTlVMTCwgMCwgMCwgMCwgTlVMTCwgTlVMTCwgTlVM TApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2Ft cGxlIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCmluZGV4 IDY2N2UwZGM0MGEuLjBmZmIzMmQ1ZmIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3V0aWxzL21p c2MvcG9zdGdyZXNxbC5jb25mLnNhbXBsZQorKysgYi9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bv c3RncmVzcWwuY29uZi5zYW1wbGUKQEAgLTYxNSw2ICs2MTUsOCBAQAogCQkJCQkjIGJpbmQtcGFy YW1ldGVyIHZhbHVlcyB0byBOIGJ5dGVzOwogCQkJCQkjIC0xIG1lYW5zIHByaW50IGluIGZ1bGws IDAgZGlzYWJsZXMKICNsb2dfc3RhdGVtZW50ID0gJ25vbmUnCQkJIyBub25lLCBkZGwsIG1vZCwg YWxsCisjbWF4X2xvZ19zaXplID0gMCAJCQkJIyBtYXggc2l6ZSBvZiBsb2dnZWQgc3RhdGVtZW50 X3RpbWVvdXQKKwkJCQkgICAgIyAwIGRpc2FibGVzIHRoZSBmZWF0dXJlCiAjbG9nX3JlcGxpY2F0 aW9uX2NvbW1hbmRzID0gb2ZmCiAjbG9nX3RlbXBfZmlsZXMgPSAtMQkJCSMgbG9nIHRlbXBvcmFy eSBmaWxlcyBlcXVhbCBvciBsYXJnZXIKIAkJCQkJIyB0aGFuIHRoZSBzcGVjaWZpZWQgc2l6ZSBp biBraWxvYnl0ZXM7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BnX2N0bC90LzAwNF9sb2dyb3RhdGUu cGwgYi9zcmMvYmluL3BnX2N0bC90LzAwNF9sb2dyb3RhdGUucGwKaW5kZXggZWFjY2ExYTY1Mi4u MWMxZjg5Y2IwYSAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19jdGwvdC8wMDRfbG9ncm90YXRlLnBs CisrKyBiL3NyYy9iaW4vcGdfY3RsL3QvMDA0X2xvZ3JvdGF0ZS5wbApAQCAtNjksNiArNjksNyBA QCBsb2dfZGVzdGluYXRpb24gPSAnc3RkZXJyLCBjc3Zsb2csIGpzb25sb2cnCiAjIHRoZXNlIGVu c3VyZSBzdGFiaWxpdHkgb2YgdGVzdCByZXN1bHRzOgogbG9nX3JvdGF0aW9uX2FnZSA9IDAKIGxj X21lc3NhZ2VzID0gJ0MnCittYXhfbG9nX3NpemUgPSAzMgogKSk7CiAKICRub2RlLT5zdGFydCgp OwpAQCAtMTM1LDYgKzEzNiwyMCBAQCBjaGVja19sb2dfcGF0dGVybignc3RkZXJyJywgJG5ld19j dXJyZW50X2xvZ2ZpbGVzLCAnc3ludGF4IGVycm9yJywgJG5vZGUpOwogY2hlY2tfbG9nX3BhdHRl cm4oJ2NzdmxvZycsICRuZXdfY3VycmVudF9sb2dmaWxlcywgJ3N5bnRheCBlcnJvcicsICRub2Rl KTsKIGNoZWNrX2xvZ19wYXR0ZXJuKCdqc29ubG9nJywgJG5ld19jdXJyZW50X2xvZ2ZpbGVzLCAn c3ludGF4IGVycm9yJywgJG5vZGUpOwogCiskbm9kZS0+cHNxbCgncG9zdGdyZXMnLCAnSU5TRVJU IElOVE8gU09NRV9OT05fRVhJU1RBTlRfVEFCTEUgVkFMVUVTIChURVNUKScpOworZm9yIChteSAk YXR0ZW1wdHMgPSAwOyAkYXR0ZW1wdHMgPCAkbWF4X2F0dGVtcHRzOyAkYXR0ZW1wdHMrKykKK3sK KwlldmFsIHsKKwkJJGN1cnJlbnRfbG9nZmlsZXMgPSBzbHVycF9maWxlKCRub2RlLT5kYXRhX2Rp ciAuICcvY3VycmVudF9sb2dmaWxlcycpOworCX07CisJbGFzdCB1bmxlc3MgJEA7CisJdXNsZWVw KDEwMF8wMDApOworfQorZGllICRAIGlmICRAOworY2hlY2tfbG9nX3BhdHRlcm4oJ3N0ZGVycics ICAkY3VycmVudF9sb2dmaWxlcywgJ0lOU0VSVCBJTlRPIFNPTUVfTk9OX0VYSVNUQU5UX1RBKD8h KEJMRSBWQUxVRVMgXChURVNUXCkpKScsICRub2RlKTsKK2NoZWNrX2xvZ19wYXR0ZXJuKCdjc3Zs b2cnLCAgJGN1cnJlbnRfbG9nZmlsZXMsICdJTlNFUlQgSU5UTyBTT01FX05PTl9FWElTVEFOVF9U QSg/IShCTEUgVkFMVUVTIFwoVEVTVFwpKSknLCAkbm9kZSk7CitjaGVja19sb2dfcGF0dGVybign anNvbmxvZycsICRjdXJyZW50X2xvZ2ZpbGVzLCAnSU5TRVJUIElOVE8gU09NRV9OT05fRVhJU1RB TlRfVEEoPyEoQkxFIFZBTFVFUyBcKFRFU1RcKSkpJywgJG5vZGUpOworCiAkbm9kZS0+c3RvcCgp OwogCiBkb25lX3Rlc3RpbmcoKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL3V0aWxzL2Vsb2cu aCBiL3NyYy9pbmNsdWRlL3V0aWxzL2Vsb2cuaAppbmRleCBlNTRlY2E1YjQ4Li5hOGUzMDAwNmYy IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS91dGlscy9lbG9nLmgKKysrIGIvc3JjL2luY2x1ZGUv dXRpbHMvZWxvZy5oCkBAIC01MDIsNiArNTAyLDcgQEAgZXh0ZXJuIFBHRExMSU1QT1JUIGludCBM b2dfZGVzdGluYXRpb247CiBleHRlcm4gUEdETExJTVBPUlQgY2hhciAqTG9nX2Rlc3RpbmF0aW9u X3N0cmluZzsKIGV4dGVybiBQR0RMTElNUE9SVCBib29sIHN5c2xvZ19zZXF1ZW5jZV9udW1iZXJz OwogZXh0ZXJuIFBHRExMSU1QT1JUIGJvb2wgc3lzbG9nX3NwbGl0X21lc3NhZ2VzOworZXh0ZXJu IFBHRExMSU1QT1JUIGludCBtYXhfbG9nX3NpemU7CiAKIC8qIExvZyBkZXN0aW5hdGlvbiBiaXRt YXAgKi8KICNkZWZpbmUgTE9HX0RFU1RJTkFUSU9OX1NUREVSUgkgMQotLSAKMi4zOS4yIChBcHBs ZSBHaXQtMTQzKQoK --00000000000069af8b06236c3a53--