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 1va9b9-004OGG-0W for pgpool-hackers@arkaria.postgresql.org; Mon, 29 Dec 2025 09:31:32 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1va9b8-00GIbr-0P for pgpool-hackers@arkaria.postgresql.org; Mon, 29 Dec 2025 09:31:30 +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 1va9b7-00GIbj-1E for pgpool-hackers@lists.postgresql.org; Mon, 29 Dec 2025 09:31:30 +0000 Received: from mail-yw1-x1131.google.com ([2607:f8b0:4864:20::1131]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1va9b4-0039iW-34 for pgpool-hackers@lists.postgresql.org; Mon, 29 Dec 2025 09:31:29 +0000 Received: by mail-yw1-x1131.google.com with SMTP id 00721157ae682-787eb2d8663so111609957b3.0 for ; Mon, 29 Dec 2025 01:31:26 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tailorbrands.com; s=google; t=1767000686; x=1767605486; 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=rm7g+8PDNClTcwSHOf3AaZkgDJVqI0YT/J4ahf3vHoY=; b=X2ew9rDCLMgYVKY7qs18YPDM+0hCdAOwnjoNKPWa1p0wNv7lqCB9VCZeIq1xHxgUTV 62FROT3H6w2pUW30yu7T9drLQYOS6Wm/Kt8hodBT5b/SF/uCHvPNVqSR4LvpaazkzpjY 9MkqQkw3dn1CxS85loc++uMa9G3v2fzwvjA3W7o1jI9t5QV3PitMzBMS8qvkOA9kxYmh g6LqAaxS3PNO4wdG8hwzbGMb7D9d4xpZOWcCHtRGuusriPpLti13dpxVELbIPvbVhdo6 dmWSRr5FLuwu0o7ah2QIJrOw3m5zBYtan7UqhnGKfwixzEX4zaJM2HrGLLsXtuGp9+AV vDhA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767000686; x=1767605486; 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=rm7g+8PDNClTcwSHOf3AaZkgDJVqI0YT/J4ahf3vHoY=; b=TCHc5Ym0d6R/SHLAQG6zBcvRpM9JLQEL9c7zpId9g8dOl7QfAijHEUg2xb7dbmNUwf xFEEA7ENnoX1eM0SCyeEFlHwZ7pVEHz62GNJQafwa4S/oLU9TZ0EwZn02skxvZO/5Exe 1CPFysq+ZMVit9Wq4lwa5bHoBY4jw3s/eP3eXtkEKJcin4uJX5SKfJPzC/jvnvvqbf9+ TC3dOTgSTpOLWEDfXucyuYmVK3cfZT+U9g4DZWa0gSMLAv3gUzgoZUOffPdeW6TZyM7Z KoS3iyTneiHPkyjGE35V/ugrabPaOiO3dKHdXjBwvDdPcXy3VuKYbWbPSoe1nM94nx9V 6klg== X-Gm-Message-State: AOJu0YypES52G3Ig13w9nF1sb8fHtOwZ8SUXGT8PUo/Pyf3AegUD+ANe CL+NA9Hk5Q801PAizJLQ1UbdU6p93kBbYmdlUsxkJUTvPTtJrHYT/Mqf/8xmF/2l2YmC1AyayhS bVwc7yWw4updYo4zBNyBXHINADxZa8n2VNmF8Kdvx9A== X-Gm-Gg: AY/fxX4Q1snWwrs26ayucqtmoTvVu4wlVCT8tCJcdSUMbQ8NZfC3DdtZMH+oUM0Wh9y 9ZHgvxUgIF76TfaLzD5XwEfPZL9cLzTjctim/BDqFF1xt2hamHBsNf24a9Ph10hAJfhBfFgecQG bpxrytXGiIUOkhBb76HG6FLIZLJyBJjQsVQIZRiVpjip3qtj9V6RO91X9lF8AjmdMJUy6XLMOC2 leh5FQqFfhhCVppDCJSBIMQR1qRdaYLH5Bw9VjZZcqno2OqQ9ogNw+ecPz+S2khJi0tNmwrbOzt t0+jkbwVPYHfr6cuV3uEiYlqm55oIAisz4/DTMY2HnBrulaeWaLC5frdb4QExYhosQhC X-Google-Smtp-Source: AGHT+IH1wmiHo1DByHzf0hBfIDrr3pEop9bwBOqb/14QMqQWOdroiT6Utsulhk/jdqXn/CVfghFhez38CFRl9ljizx0= X-Received: by 2002:a05:690c:f15:b0:78f:cdec:73e9 with SMTP id 00721157ae682-78fcdecbd5cmr225982217b3.14.1767000685593; Mon, 29 Dec 2025 01:31:25 -0800 (PST) MIME-Version: 1.0 References: <20251226.190349.1321105398044197651.ishii@postgresql.org> <20251229.084844.1964712636774742758.ishii@postgresql.org> <20251229.085803.2270812288334644179.ishii@postgresql.org> In-Reply-To: <20251229.085803.2270812288334644179.ishii@postgresql.org> From: Nadav Shatz Date: Mon, 29 Dec 2025 11:31:12 +0200 X-Gm-Features: AQt7F2obbUA5f-dAQ_-j3bZLM0BXZJXxhFpzOvfKUUDxbxM_CFNNKUxrCboTZzY Message-ID: Subject: Re: Proposal: recent access based routing for primary-replica setups To: Tatsuo Ishii Cc: pgpool-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="0000000000002f6723064713e83c" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000002f6723064713e83c Content-Type: multipart/alternative; boundary="0000000000002f6722064713e83a" --0000000000002f6722064713e83a Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Thanks for the help! please find attached the latest version with all changes and test passing. On Mon, Dec 29, 2025 at 1:58=E2=80=AFAM Tatsuo Ishii = wrote: > >> thank you! works for me. should we merge both into master or do you > want me > >> to send a combined one? > > > >> do you want me to send a combined one? > > > > Yes, please send a combined one. > > > > I will do more tests and detailed code review. > > Also when combing the patches, please correspond followings. > > >>> > I also notice that something like: > >>> > > >>> > /* Count tokens in output for validation */ > >>> > char *line_copy =3D pstrdup(line); > >>> > char *temp_token =3D strtok(line_copy, " \t\n"); > >>> > > >>> > You should declare line_copy and temp_token in the begging of the > code > >>> > block (or in the outer block). The forward declaration is > recommended > >>> > coding style in Pgpool-II (and PostgreSQL). Same thing can be said = to > >>> > some other variables. > > Best regards, > -- > Tatsuo Ishii > SRA OSS K.K. > English: http://www.sraoss.co.jp/index_en/ > Japanese:http://www.sraoss.co.jp > > >> On Fri, Dec 26, 2025 at 12:03=E2=80=AFPM Tatsuo Ishii > wrote: > >> > >>> Hi Nadav, > >>> > >>> I just want to make it clear. The patch should be applied on top of > >>> your latest.patch. > >>> > >>> > (Please disregard previous mail. I seem to have mangled the message= ). > >>> > > >>> > I think I found a cause of the problem. On Linux, if SIGCHLD is > >>> > ignored (set to SIG_IGN), waitpid() cannot get proper child status. > >>> > Because the kernel relcaims the resource for the child process to n= ot > >>> > make the child process a zombie. And this makes waitpid() to fail > with > >>> > ECHLD. Since the return of waitpid() is not checked, I did not noti= ce > >>> > the waitpid() failure (I recommend to check the return value of > >>> > waitpid()). > >>> > > >>> > /* set up signal handlers */ > >>> > signal(SIGALRM, SIG_DFL); > >>> > signal(SIGTERM, my_signal_handler); > >>> > signal(SIGINT, my_signal_handler); > >>> > signal(SIGHUP, reload_config_handler); > >>> > signal(SIGQUIT, my_signal_handler); > >>> > signal(SIGCHLD, SIG_IGN); <--- SIGCHLD is ignored > >>> > signal(SIGUSR1, my_signal_handler); > >>> > signal(SIGUSR2, SIG_IGN); > >>> > signal(SIGPIPE, SIG_IGN); > >>> > > >>> > To fix this, either change the line above to: > >>> > > >>> > signal(SIGCHLD, SIG_DFL); > >>> > or > >>> > signal(SIGCHLD, my_signal_handler); > >>> > and modify my_signal_handler. > >>> > > >>> > I recommend the latter, because it does not depend on the default > >>> > behavior of SIGCHLD, which might be different per platform. > >>> > Attached is the patch to do this. (and run pgindent). > >>> > I also notice that something like: > >>> > > >>> > /* Count tokens in output for validation */ > >>> > char *line_copy =3D pstrdup(line); > >>> > char *temp_token =3D strtok(line_copy, " \t\n"); > >>> > > >>> > You should declare line_copy and temp_token in the begging of the > code > >>> > block (or in the outer block). The forward declaration is > recommended > >>> > coding style in Pgpool-II (and PostgreSQL). Same thing can be said = to > >>> > some other variables. > >>> > > >>> > Best regards, > >>> > -- > >>> > Tatsuo Ishii > >>> > SRA OSS K.K. > >>> > English: http://www.sraoss.co.jp/index_en/ > >>> > Japanese:http://www.sraoss.co.jp > >>> > > >>> >> Hi Tatsuo, > >>> >> > >>> >> Thank you for the note. > >>> >> > >>> >> I've removed the docker stuff. started working in an ubuntu 24 VM = to > >>> match > >>> >> the setup. hopefully the results will be better, had so many issue= s > >>> >> compiling and testing before that stuff wasn't properly formulated= . > >>> >> > >>> >> Attaching the latest patch. > >>> >> > >>> >> this is what i'm seeing: > >>> >> adav@lima-dev:/src/pgpool2/src/test/regression$ PGHOST=3D/tmp > >>> ./regress.sh -p > >>> >> /usr/bin 041.external_replication_delay > >>> >> creating pgpool-II temporary installation ... > >>> >> moving pgpool_setup to temporary installation path ... > >>> >> moving watchdog_setup to temporary installation path ... > >>> >> using pgpool-II at /src/pgpool2/src/test/regression/temp/installed > >>> >> ************************* > >>> >> REGRESSION MODE : install > >>> >> Pgpool-II version : pgpool-II version 4.8devel > (mitsukakeboshi) > >>> >> Pgpool-II install path : > >>> /src/pgpool2/src/test/regression/temp/installed > >>> >> PostgreSQL bin : /usr/lib/postgresql/16/bin > >>> >> PostgreSQL Major version : 16 > >>> >> pgbench : /usr/lib/postgresql/16/bin/pgbench > >>> >> PostgreSQL jdbc : > >>> >> /usr/local/pgsql/share/postgresql-9.2-1003.jdbc4.jar > >>> >> ************************* > >>> >> testing 041.external_replication_delay...ok. > >>> >> out of 1 ok:1 failed:0 timeout:0 > >>> >> > >>> >> > >>> >> > >>> >> On Tue, Dec 23, 2025 at 10:46=E2=80=AFAM Tatsuo Ishii > > >>> wrote: > >>> >> > >>> >>> > Hi Tatsuo, > >>> >>> > > >>> >>> > I'km running into issues testing this and have created a full > docker > >>> >>> > compose setup - can you please point me to up to date guides on > the > >>> best > >>> >>> > way to run the tests so i know we're doing it the same way? > >>> >>> > > >>> >>> > Thank you for all your help! > >>> >>> > >>> >>> I have run the regression test on the Pgpool-II master branch on = my > >>> >>> Ubuntu 24 box. > >>> >>> > >>> >>> cd pgpool2/src/test/regression > >>> >>> ./regress.sh 041 > >>> >>> > >>> >>> This time I noticed: > >>> >>> > >>> >>> - The patch does not named with version number > >>> >>> - The patch creates .dockerignore and docker/ directory. > >>> >>> > >>> >>> Are they intended? I am asking because they are different from th= e > >>> >>> previous version. > >>> >>> > >>> >>> > On Tue, Dec 23, 2025 at 2:13=E2=80=AFAM Tatsuo Ishii < > ishii@postgresql.org> > >>> >>> wrote: > >>> >>> > > >>> >>> >> > I think everything is passing now. new version attached. > >>> >>> >> > >>> >>> >> Unfortunately Test1 did not pass. > >>> >>> >> > >>> >>> >> =3D=3D=3D Test1: Basic external command with integer milliseco= nd > values > >>> =3D=3D=3D > >>> >>> >> waiting for server to start....1438600 2025-12-23 09:09:48.337 > JST > >>> LOG: > >>> >>> >> redirecting log output to logging collector process > >>> >>> >> 1438600 2025-12-23 09:09:48.337 JST HINT: Future log output > will > >>> appear > >>> >>> >> in directory "log". > >>> >>> >> done > >>> >>> >> server started > >>> >>> >> waiting for server to start....1438617 2025-12-23 09:09:48.443 > JST > >>> LOG: > >>> >>> >> redirecting log output to logging collector process > >>> >>> >> 1438617 2025-12-23 09:09:48.443 JST HINT: Future log output > will > >>> appear > >>> >>> >> in directory "log". > >>> >>> >> done > >>> >>> >> server started > >>> >>> >> waiting for server to start....1438634 2025-12-23 09:09:48.561 > JST > >>> LOG: > >>> >>> >> redirecting log output to logging collector process > >>> >>> >> 1438634 2025-12-23 09:09:48.561 JST HINT: Future log output > will > >>> appear > >>> >>> >> in directory "log". > >>> >>> >> done > >>> >>> >> server started > >>> >>> >> CREATE TABLE > >>> >>> >> Waiting for sr_check to run... > >>> >>> >> Command executed after 1 seconds > >>> >>> >> node_id | hostname | port | status | pg_status | lb_weight = | > >>> role > >>> >>> | > >>> >>> >> pg_role | select_cnt | load_balance_node | replication_delay | > >>> >>> >> replication_state | replication_sync_state | last_status_chang= e > >>> >>> >> > >>> >>> >> > >>> >>> > >>> > ---------+-----------+-------+--------+-----------+-----------+---------+= ---------+------------+-------------------+-------------------+------------= -------+------------------------+--------------------- > >>> >>> >> 0 | localhost | 11002 | up | up | 0.333333 = | > >>> primary > >>> >>> | > >>> >>> >> primary | 0 | true | 0 | > >>> >>> >> | | 2025-12-23 09:09:49 > >>> >>> >> 1 | localhost | 11003 | up | up | 0.333333 = | > >>> standby > >>> >>> | > >>> >>> >> standby | 0 | false | 0 | > >>> >>> >> | | 2025-12-23 09:09:49 > >>> >>> >> 2 | localhost | 11004 | up | up | 0.333333 = | > >>> standby > >>> >>> | > >>> >>> >> standby | 0 | false | 0 | > >>> >>> >> | | 2025-12-23 09:09:49 > >>> >>> >> (3 rows) > >>> >>> >> > >>> >>> >> fail: external command delay logging not found > >>> >>> >> > >>> >>> >> > On Mon, Nov 24, 2025 at 9:41=E2=80=AFAM Tatsuo Ishii < > >>> ishii@postgresql.org> > >>> >>> >> wrote: > >>> >>> >> > > >>> >>> >> >> Thank you for updating the patch! This time the patch appli= es > >>> without > >>> >>> >> >> any issue and compiles fine. Unfortunately regression test > >>> failed. > >>> >>> >> >> > >>> >>> >> >> testing 041.external_replication_delay...failed. > >>> >>> >> >> > >>> >>> >> >> From the regression log, it seems Test7 failed. > >>> >>> >> >> > >>> >>> >> >> > >>> >>> >> > >>> >>> > >>> > -------------------------------------------------------------------------= ----- > >>> >>> >> >> =3D=3D=3D Test7: Command timeout handling =3D=3D=3D > >>> >>> >> >> waiting for server to start....411181 2025-11-24 > 16:31:05.244 JST > >>> >>> LOG: > >>> >>> >> >> redirecting log output to logging collector process > >>> >>> >> >> 411181 2025-11-24 16:31:05.244 JST HINT: Future log output > will > >>> >>> appear > >>> >>> >> in > >>> >>> >> >> directory "log". > >>> >>> >> >> done > >>> >>> >> >> server started > >>> >>> >> >> waiting for server to start....411196 2025-11-24 > 16:31:05.352 JST > >>> >>> LOG: > >>> >>> >> >> redirecting log output to logging collector process > >>> >>> >> >> 411196 2025-11-24 16:31:05.352 JST HINT: Future log output > will > >>> >>> appear > >>> >>> >> in > >>> >>> >> >> directory "log". > >>> >>> >> >> done > >>> >>> >> >> server started > >>> >>> >> >> waiting for server to start....411213 2025-11-24 > 16:31:05.461 JST > >>> >>> LOG: > >>> >>> >> >> redirecting log output to logging collector process > >>> >>> >> >> 411213 2025-11-24 16:31:05.461 JST HINT: Future log output > will > >>> >>> appear > >>> >>> >> in > >>> >>> >> >> directory "log". > >>> >>> >> >> done > >>> >>> >> >> server started > >>> >>> >> >> Waiting for command timeout... > >>> >>> >> >> fail: command timeout not detected > >>> >>> >> >> > >>> >>> >> >> > >>> >>> >> > >>> >>> > >>> > -------------------------------------------------------------------------= ----- > >>> >>> >> >> > >>> >>> >> >> Attached is the pgpool.log. If you need more info, please > let me > >>> >>> know. > >>> >>> >> >> > >>> >>> >> >> Best regards, > >>> >>> >> >> -- > >>> >>> >> >> Tatsuo Ishii > >>> >>> >> >> SRA OSS K.K. > >>> >>> >> >> English: http://www.sraoss.co.jp/index_en/ > >>> >>> >> >> Japanese:http://www.sraoss.co.jp > >>> >>> >> >> > >>> >>> >> >> > >>> >>> >> >> > Hi Tatsuo, > >>> >>> >> >> > > >>> >>> >> >> > Sorry again, this was due to the separation of 2 patches > and i > >>> only > >>> >>> >> sent > >>> >>> >> >> > the one. > >>> >>> >> >> > > >>> >>> >> >> > I've merged it into 1 commit and 1 patch and rebased over > >>> master to > >>> >>> >> avoid > >>> >>> >> >> > these issues moving forward. > >>> >>> >> >> > > >>> >>> >> >> > PFA latest version > >>> >>> >> >> > > >>> >>> >> >> > On Thu, Nov 20, 2025 at 1:09=E2=80=AFAM Tatsuo Ishii < > >>> ishii@postgresql.org > >>> >>> > > >>> >>> >> >> wrote: > >>> >>> >> >> > > >>> >>> >> >> >> Hi Nadav, > >>> >>> >> >> >> > >>> >>> >> >> >> Thank you for new patch. > >>> >>> >> >> >> Unfortunately the patch did not apply to current master. > >>> >>> >> >> >> > >>> >>> >> >> >> $ git apply > >>> >>> >> >> >> > >>> ~/0001-Fix-multiple-issues-in-external-replication-delay-fe.patch > >>> >>> >> >> >> error: patch failed: > >>> >>> >> src/streaming_replication/pool_worker_child.c:694 > >>> >>> >> >> >> error: src/streaming_replication/pool_worker_child.c: > patch > >>> does > >>> >>> not > >>> >>> >> >> apply > >>> >>> >> >> >> > >>> >>> >> >> >> Maybe the patch is on top of your previous patch? > >>> >>> >> >> >> > >>> >>> >> >> >> Also I suggest to use "-v" option of "git format-patch" = to > >>> add the > >>> >>> >> >> >> patch version number so that we can easily know which > patch > >>> is the > >>> >>> >> >> >> latest. > >>> >>> >> >> >> > >>> >>> >> >> >> Best regards, > >>> >>> >> >> >> -- > >>> >>> >> >> >> Tatsuo Ishii > >>> >>> >> >> >> SRA OSS K.K. > >>> >>> >> >> >> English: http://www.sraoss.co.jp/index_en/ > >>> >>> >> >> >> Japanese:http://www.sraoss.co.jp > >>> >>> >> >> >> > >>> >>> >> >> >> > Hi Tatsuo, > >>> >>> >> >> >> > > >>> >>> >> >> >> > Please see attached an updated version. > >>> >>> >> >> >> > > >>> >>> >> >> >> > thank you > >>> >>> >> >> >> > > >>> >>> >> >> >> > On Fri, Nov 7, 2025 at 2:07=E2=80=AFAM Tatsuo Ishii < > >>> >>> ishii@postgresql.org> > >>> >>> >> >> >> wrote: > >>> >>> >> >> >> > > >>> >>> >> >> >> >> > Sorry for that - thanks for the patch. > >>> >>> >> >> >> >> > > >>> >>> >> >> >> >> > Please find attached a new version > >>> >>> >> >> >> >> > >>> >>> >> >> >> >> Thanks for the new version. Unfortunately this time > >>> regression > >>> >>> >> test > >>> >>> >> >> >> >> fails at: > >>> >>> >> >> >> >> > >>> >>> >> >> >> >> > Waiting for command timeout... > >>> >>> >> >> >> >> > fail: command timeout not detected > >>> >>> >> >> >> >> > >>> >>> >> >> >> >> Attached is the pgpool.log. > >>> >>> >> >> >> >> > >>> >>> >> >> >> >> Best regards, > >>> >>> >> >> >> >> -- > >>> >>> >> >> >> >> Tatsuo Ishii > >>> >>> >> >> >> >> SRA OSS K.K. > >>> >>> >> >> >> >> English: http://www.sraoss.co.jp/index_en/ > >>> >>> >> >> >> >> Japanese:http://www.sraoss.co.jp > >>> >>> >> >> >> >> > >>> >>> >> >> >> >> > On Mon, Nov 3, 2025 at 9:05=E2=80=AFAM Tatsuo Ishii= < > >>> >>> >> ishii@postgresql.org> > >>> >>> >> >> >> >> wrote: > >>> >>> >> >> >> >> > > >>> >>> >> >> >> >> >> > thanks and sorry for the issues, please find > attached > >>> >>> updated > >>> >>> >> >> >> version. > >>> >>> >> >> >> >> >> > >>> >>> >> >> >> >> >> No problem. > >>> >>> >> >> >> >> >> > >>> >>> >> >> >> >> >> This time the patch applies fine, no compiler > warnings. > >>> >>> >> However, > >>> >>> >> >> >> >> >> regression test did not passed here (on Ubuntu 24 > LTS if > >>> >>> this > >>> >>> >> >> >> >> >> matters). So I looked into > >>> >>> >> >> >> >> >> > >>> >>> >> > src/test/regression/tests/041.external_replication_delay/test.sh a > >>> >>> >> >> >> >> >> little bit and apply attached patch > (test.sh.patch). It > >>> >>> moved > >>> >>> >> >> forward > >>> >>> >> >> >> >> >> partially but failed at: > >>> >>> >> >> >> >> >> > >>> >>> >> >> >> >> >> fail: command execution failure not detected > >>> >>> >> >> >> >> >> > >>> >>> >> >> >> >> >> Please find attached > >>> >>> >> >> >> >> >> > >>> >>> >> >> >> >> > >>> >>> >> >> >> > >>> >>> >> >> > >>> >>> >> > >>> >>> > >>> > src/test/regression/tests/041.external_replication_delay/testdir/pgpool.l= og > >>> >>> >> >> >> >> >> and > >>> src/test/regression/log/041.external_replication_delay. > >>> >>> >> >> >> >> >> > >>> >>> >> >> >> >> >> Best regards, > >>> >>> >> >> >> >> >> -- > >>> >>> >> >> >> >> >> Tatsuo Ishii > >>> >>> >> >> >> >> >> SRA OSS K.K. > >>> >>> >> >> >> >> >> English: http://www.sraoss.co.jp/index_en/ > >>> >>> >> >> >> >> >> Japanese:http://www.sraoss.co.jp > >>> >>> >> >> >> >> >> > >>> >>> >> >> >> >> > > >>> >>> >> >> >> >> > > >>> >>> >> >> >> >> > -- > >>> >>> >> >> >> >> > Nadav Shatz > >>> >>> >> >> >> >> > Tailor Brands | CTO > >>> >>> >> >> >> >> > >>> >>> >> >> >> > > >>> >>> >> >> >> > > >>> >>> >> >> >> > -- > >>> >>> >> >> >> > Nadav Shatz > >>> >>> >> >> >> > Tailor Brands | CTO > >>> >>> >> >> >> > >>> >>> >> >> > > >>> >>> >> >> > > >>> >>> >> >> > -- > >>> >>> >> >> > Nadav Shatz > >>> >>> >> >> > Tailor Brands | CTO > >>> >>> >> >> > >>> >>> >> > > >>> >>> >> > > >>> >>> >> > -- > >>> >>> >> > Nadav Shatz > >>> >>> >> > Tailor Brands | CTO > >>> >>> >> > >>> >>> > > >>> >>> > > >>> >>> > -- > >>> >>> > Nadav Shatz > >>> >>> > Tailor Brands | CTO > >>> >>> > >>> >> > >>> >> > >>> >> -- > >>> >> Nadav Shatz > >>> >> Tailor Brands | CTO > >>> > >> > >> > >> -- > >> Nadav Shatz > >> Tailor Brands | CTO > > < > --=20 Nadav Shatz Tailor Brands | CTO --0000000000002f6722064713e83a Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Thanks for the help! please find attached the latest versi= on with all changes and test passing.

<= div dir=3D"ltr" class=3D"gmail_attr">On Mon, Dec 29, 2025 at 1:58=E2=80=AFA= M Tatsuo Ishii <ishii@postgresql.org> wrote:
>> thank you! works for me. should we merge bot= h into master or do you want me
>> to send a combined one?
>
>> do you want me to send a combined one?
>
> Yes, please send a combined one.
>
> I will do more tests and detailed code review.

Also when combing the patches, please correspond followings.

>>> > I also notice that something like:
>>> >
>>> >=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* = Count tokens in output for validation */
>>> >=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0cha= r *line_copy =3D pstrdup(line);
>>> >=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0cha= r *temp_token =3D strtok(line_copy, " \t\n");
>>> >
>>> > You should declare line_copy and temp_token in the beggin= g of the code
>>> > block (or in the outer block).=C2=A0 The forward declarat= ion is recommended
>>> > coding style in Pgpool-II (and PostgreSQL). Same thing ca= n be said to
>>> > some other variables.

Best regards,
--
Tatsuo Ishii
SRA OSS K.K.
English: http://www.sraoss.co.jp/index_en/
Japanese:http://www.sraoss.co.jp

>> On Fri, Dec 26, 2025 at 12:03=E2=80=AFPM Tatsuo Ishii <ishii@postgresql.org= > wrote:
>>
>>> Hi Nadav,
>>>
>>> I just want to make it clear. The patch should be applied on t= op of
>>> your latest.patch.
>>>
>>> > (Please disregard previous mail. I seem to have mangled t= he message).
>>> >
>>> > I think I found a cause of the problem. On Linux, if SIGC= HLD is
>>> > ignored (set to SIG_IGN), waitpid() cannot get proper chi= ld status.
>>> > Because the kernel relcaims the resource for the child pr= ocess to not
>>> > make the child process a zombie. And this makes waitpid()= to fail with
>>> > ECHLD. Since the return of waitpid() is not checked, I di= d not notice
>>> > the waitpid() failure (I recommend to check the return va= lue of
>>> > waitpid()).
>>> >
>>> >=C2=A0 =C2=A0 =C2=A0 =C2=A0/* set up signal handlers */ >>> >=C2=A0 =C2=A0 =C2=A0 =C2=A0signal(SIGALRM, SIG_DFL);
>>> >=C2=A0 =C2=A0 =C2=A0 =C2=A0signal(SIGTERM, my_signal_handl= er);
>>> >=C2=A0 =C2=A0 =C2=A0 =C2=A0signal(SIGINT, my_signal_handle= r);
>>> >=C2=A0 =C2=A0 =C2=A0 =C2=A0signal(SIGHUP, reload_config_ha= ndler);
>>> >=C2=A0 =C2=A0 =C2=A0 =C2=A0signal(SIGQUIT, my_signal_handl= er);
>>> >=C2=A0 =C2=A0 =C2=A0 =C2=A0signal(SIGCHLD, SIG_IGN);=C2=A0= =C2=A0 =C2=A0 =C2=A0<--- SIGCHLD is ignored
>>> >=C2=A0 =C2=A0 =C2=A0 =C2=A0signal(SIGUSR1, my_signal_handl= er);
>>> >=C2=A0 =C2=A0 =C2=A0 =C2=A0signal(SIGUSR2, SIG_IGN);
>>> >=C2=A0 =C2=A0 =C2=A0 =C2=A0signal(SIGPIPE, SIG_IGN);
>>> >
>>> > To fix this, either change the line above to:
>>> >
>>> >=C2=A0 =C2=A0 =C2=A0 =C2=A0signal(SIGCHLD, SIG_DFL);
>>> > or
>>> >=C2=A0 =C2=A0 =C2=A0 =C2=A0signal(SIGCHLD, my_signal_handl= er);
>>> >=C2=A0 =C2=A0 =C2=A0 =C2=A0and modify my_signal_handler. >>> >
>>> > I recommend the latter, because it does not depend on the= default
>>> > behavior of SIGCHLD, which might be different per platfor= m.
>>> > Attached is the patch to do this. (and run pgindent).
>>> > I also notice that something like:
>>> >
>>> >=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0/* = Count tokens in output for validation */
>>> >=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0cha= r *line_copy =3D pstrdup(line);
>>> >=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0cha= r *temp_token =3D strtok(line_copy, " \t\n");
>>> >
>>> > You should declare line_copy and temp_token in the beggin= g of the code
>>> > block (or in the outer block).=C2=A0 The forward declarat= ion is recommended
>>> > coding style in Pgpool-II (and PostgreSQL). Same thing ca= n be said to
>>> > some other variables.
>>> >
>>> > Best regards,
>>> > --
>>> > Tatsuo Ishii
>>> > SRA OSS K.K.
>>> > English: http://www.sraoss.co.jp/index_en/ >>> > Japanese:http://www.sraoss.co.jp
>>> >
>>> >> Hi Tatsuo,
>>> >>
>>> >> Thank you for the note.
>>> >>
>>> >> I've removed the docker stuff. started working in= an ubuntu 24 VM to
>>> match
>>> >> the setup. hopefully the results will be better, had = so many issues
>>> >> compiling and testing before that stuff wasn't pr= operly formulated.
>>> >>
>>> >> Attaching the latest patch.
>>> >>
>>> >> this is what i'm seeing:
>>> >> adav@lima-dev:/src/pgpool2/src/test/regression$ PGHOS= T=3D/tmp
>>> ./regress.sh -p
>>> >> /usr/bin 041.external_replication_delay
>>> >> creating pgpool-II temporary installation ...
>>> >> moving pgpool_setup to temporary installation path ..= .
>>> >> moving watchdog_setup to temporary installation path = ...
>>> >> using pgpool-II at /src/pgpool2/src/test/regression/t= emp/installed
>>> >> *************************
>>> >> REGRESSION MODE=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 : i= nstall
>>> >> Pgpool-II version=C2=A0 =C2=A0 =C2=A0 =C2=A0 : pgpool= -II version 4.8devel (mitsukakeboshi)
>>> >> Pgpool-II install path=C2=A0 =C2=A0:
>>> /src/pgpool2/src/test/regression/temp/installed
>>> >> PostgreSQL bin=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0: /usr/lib/postgresql/16/bin
>>> >> PostgreSQL Major version : 16
>>> >> pgbench=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 : /usr/lib/postgresql/16/bin/pgbench
>>> >> PostgreSQL jdbc=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 : >>> >> /usr/local/pgsql/share/postgresql-9.2-1003.jdbc4.jar<= br> >>> >> *************************
>>> >> testing 041.external_replication_delay...ok.
>>> >> out of 1 ok:1 failed:0 timeout:0
>>> >>
>>> >>
>>> >>
>>> >> On Tue, Dec 23, 2025 at 10:46=E2=80=AFAM Tatsuo Ishii= <ishii@postgr= esql.org>
>>> wrote:
>>> >>
>>> >>> > Hi Tatsuo,
>>> >>> >
>>> >>> > I'km running into issues testing this an= d have created a full docker
>>> >>> > compose setup - can you please point me to u= p to date guides on the
>>> best
>>> >>> > way to run the tests so i know we're doi= ng it the same way?
>>> >>> >
>>> >>> > Thank you for all your help!
>>> >>>
>>> >>> I have run the regression test on the Pgpool-II m= aster branch on my
>>> >>> Ubuntu 24 box.
>>> >>>
>>> >>> cd pgpool2/src/test/regression
>>> >>> ./regress.sh 041
>>> >>>
>>> >>> This time I noticed:
>>> >>>
>>> >>> - The patch does not named with version number >>> >>> - The patch creates .dockerignore and docker/ dir= ectory.
>>> >>>
>>> >>> Are they intended? I am asking because they are d= ifferent from the
>>> >>> previous version.
>>> >>>
>>> >>> > On Tue, Dec 23, 2025 at 2:13=E2=80=AFAM Tats= uo Ishii <ishi= i@postgresql.org>
>>> >>> wrote:
>>> >>> >
>>> >>> >> > I think everything is passing now. = new version attached.
>>> >>> >>
>>> >>> >> Unfortunately Test1 did not pass.
>>> >>> >>
>>> >>> >> =3D=3D=3D Test1: Basic external command = with integer millisecond values
>>> =3D=3D=3D
>>> >>> >> waiting for server to start....1438600 2= 025-12-23 09:09:48.337 JST
>>> LOG:
>>> >>> >> redirecting log output to logging collec= tor process
>>> >>> >> 1438600 2025-12-23 09:09:48.337 JST HINT= :=C2=A0 Future log output will
>>> appear
>>> >>> >> in directory "log".
>>> >>> >>=C2=A0 done
>>> >>> >> server started
>>> >>> >> waiting for server to start....1438617 2= 025-12-23 09:09:48.443 JST
>>> LOG:
>>> >>> >> redirecting log output to logging collec= tor process
>>> >>> >> 1438617 2025-12-23 09:09:48.443 JST HINT= :=C2=A0 Future log output will
>>> appear
>>> >>> >> in directory "log".
>>> >>> >>=C2=A0 done
>>> >>> >> server started
>>> >>> >> waiting for server to start....1438634 2= 025-12-23 09:09:48.561 JST
>>> LOG:
>>> >>> >> redirecting log output to logging collec= tor process
>>> >>> >> 1438634 2025-12-23 09:09:48.561 JST HINT= :=C2=A0 Future log output will
>>> appear
>>> >>> >> in directory "log".
>>> >>> >>=C2=A0 done
>>> >>> >> server started
>>> >>> >> CREATE TABLE
>>> >>> >> Waiting for sr_check to run...
>>> >>> >> Command executed after 1 seconds
>>> >>> >>=C2=A0 node_id | hostname=C2=A0 | port=C2= =A0 | status | pg_status | lb_weight |
>>> role
>>> >>>=C2=A0 |
>>> >>> >> pg_role | select_cnt | load_balance_node= | replication_delay |
>>> >>> >> replication_state | replication_sync_sta= te | last_status_change
>>> >>> >>
>>> >>> >>
>>> >>>
>>> ---------+-----------+-------+--------+-----------+-----------= +---------+---------+------------+-------------------+-------------------+-= ------------------+------------------------+---------------------
>>> >>> >>=C2=A0 0=C2=A0 =C2=A0 =C2=A0 =C2=A0| loca= lhost | 11002 | up=C2=A0 =C2=A0 =C2=A0| up=C2=A0 =C2=A0 =C2=A0 =C2=A0 | 0.3= 33333=C2=A0 |
>>> primary
>>> >>> |
>>> >>> >> primary | 0=C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 | true=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 | 0=C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0|
>>> >>> >>=C2=A0 =C2=A0 =C2=A0 |=C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 | 2025-1= 2-23 09:09:49
>>> >>> >>=C2=A0 1=C2=A0 =C2=A0 =C2=A0 =C2=A0| loca= lhost | 11003 | up=C2=A0 =C2=A0 =C2=A0| up=C2=A0 =C2=A0 =C2=A0 =C2=A0 | 0.3= 33333=C2=A0 |
>>> standby
>>> >>> |
>>> >>> >> standby | 0=C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 | false=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0| 0=C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0|
>>> >>> >>=C2=A0 =C2=A0 =C2=A0 |=C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 | 2025-1= 2-23 09:09:49
>>> >>> >>=C2=A0 2=C2=A0 =C2=A0 =C2=A0 =C2=A0| loca= lhost | 11004 | up=C2=A0 =C2=A0 =C2=A0| up=C2=A0 =C2=A0 =C2=A0 =C2=A0 | 0.3= 33333=C2=A0 |
>>> standby
>>> >>> |
>>> >>> >> standby | 0=C2=A0 =C2=A0 =C2=A0 =C2=A0 = =C2=A0 | false=C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0| 0=C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0|
>>> >>> >>=C2=A0 =C2=A0 =C2=A0 |=C2=A0 =C2=A0 =C2= =A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 =C2=A0 | 2025-1= 2-23 09:09:49
>>> >>> >> (3 rows)
>>> >>> >>
>>> >>> >> fail: external command delay logging not= found
>>> >>> >>
>>> >>> >> > On Mon, Nov 24, 2025 at 9:41=E2=80= =AFAM Tatsuo Ishii <
>>> ishi= i@postgresql.org>
>>> >>> >> wrote:
>>> >>> >> >
>>> >>> >> >> Thank you for updating the patc= h! This time the patch applies
>>> without
>>> >>> >> >> any issue and compiles fine. Un= fortunately regression test
>>> failed.
>>> >>> >> >>
>>> >>> >> >> testing 041.external_replicatio= n_delay...failed.
>>> >>> >> >>
>>> >>> >> >> From the regression log, it see= ms Test7 failed.
>>> >>> >> >>
>>> >>> >> >>
>>> >>> >>
>>> >>>
>>> --------------------------------------------------------------= ----------------
>>> >>> >> >> =3D=3D=3D Test7: Command timeou= t handling =3D=3D=3D
>>> >>> >> >> waiting for server to start....= 411181 2025-11-24 16:31:05.244 JST
>>> >>> LOG:
>>> >>> >> >> redirecting log output to loggi= ng collector process
>>> >>> >> >> 411181 2025-11-24 16:31:05.244 = JST HINT:=C2=A0 Future log output will
>>> >>> appear
>>> >>> >> in
>>> >>> >> >> directory "log".
>>> >>> >> >>=C2=A0 done
>>> >>> >> >> server started
>>> >>> >> >> waiting for server to start....= 411196 2025-11-24 16:31:05.352 JST
>>> >>> LOG:
>>> >>> >> >> redirecting log output to loggi= ng collector process
>>> >>> >> >> 411196 2025-11-24 16:31:05.352 = JST HINT:=C2=A0 Future log output will
>>> >>> appear
>>> >>> >> in
>>> >>> >> >> directory "log".
>>> >>> >> >>=C2=A0 done
>>> >>> >> >> server started
>>> >>> >> >> waiting for server to start....= 411213 2025-11-24 16:31:05.461 JST
>>> >>> LOG:
>>> >>> >> >> redirecting log output to loggi= ng collector process
>>> >>> >> >> 411213 2025-11-24 16:31:05.461 = JST HINT:=C2=A0 Future log output will
>>> >>> appear
>>> >>> >> in
>>> >>> >> >> directory "log".
>>> >>> >> >>=C2=A0 done
>>> >>> >> >> server started
>>> >>> >> >> Waiting for command timeout...<= br> >>> >>> >> >> fail: command timeout not detec= ted
>>> >>> >> >>
>>> >>> >> >>
>>> >>> >>
>>> >>>
>>> --------------------------------------------------------------= ----------------
>>> >>> >> >>
>>> >>> >> >> Attached is the pgpool.log. If = you need more info, please let me
>>> >>> know.
>>> >>> >> >>
>>> >>> >> >> Best regards,
>>> >>> >> >> --
>>> >>> >> >> Tatsuo Ishii
>>> >>> >> >> SRA OSS K.K.
>>> >>> >> >> English: http://www.sra= oss.co.jp/index_en/
>>> >>> >> >> Japanese:http://www.sraoss.co.jp<= /a>
>>> >>> >> >>
>>> >>> >> >>
>>> >>> >> >> > Hi Tatsuo,
>>> >>> >> >> >
>>> >>> >> >> > Sorry again, this was due = to the separation of 2 patches and i
>>> only
>>> >>> >> sent
>>> >>> >> >> > the one.
>>> >>> >> >> >
>>> >>> >> >> > I've merged it into 1 = commit and 1 patch and rebased over
>>> master to
>>> >>> >> avoid
>>> >>> >> >> > these issues moving forwar= d.
>>> >>> >> >> >
>>> >>> >> >> > PFA latest version
>>> >>> >> >> >
>>> >>> >> >> > On Thu, Nov 20, 2025 at 1:= 09=E2=80=AFAM Tatsuo Ishii <
>>>
ishi= i@postgresql.org
>>> >>> >
>>> >>> >> >> wrote:
>>> >>> >> >> >
>>> >>> >> >> >> Hi Nadav,
>>> >>> >> >> >>
>>> >>> >> >> >> Thank you for new patc= h.
>>> >>> >> >> >> Unfortunately the patc= h did not apply to current master.
>>> >>> >> >> >>
>>> >>> >> >> >> $ git apply
>>> >>> >> >> >>
>>> ~/0001-Fix-multiple-issues-in-external-replication-delay-fe.pa= tch
>>> >>> >> >> >> error: patch failed: >>> >>> >> src/streaming_replication/pool_worker_ch= ild.c:694
>>> >>> >> >> >> error: src/streaming_r= eplication/pool_worker_child.c: patch
>>> does
>>> >>> not
>>> >>> >> >> apply
>>> >>> >> >> >>
>>> >>> >> >> >> Maybe the patch is on = top of your previous patch?
>>> >>> >> >> >>
>>> >>> >> >> >> Also I suggest to use = "-v" option of "git format-patch" to
>>> add the
>>> >>> >> >> >> patch version number s= o that we can easily know which patch
>>> is the
>>> >>> >> >> >> latest.
>>> >>> >> >> >>
>>> >>> >> >> >> Best regards,
>>> >>> >> >> >> --
>>> >>> >> >> >> Tatsuo Ishii
>>> >>> >> >> >> SRA OSS K.K.
>>> >>> >> >> >> English: http:= //www.sraoss.co.jp/index_en/
>>> >>> >> >> >> Japanese:http://www.srao= ss.co.jp
>>> >>> >> >> >>
>>> >>> >> >> >> > Hi Tatsuo,
>>> >>> >> >> >> >
>>> >>> >> >> >> > Please see attach= ed an updated version.
>>> >>> >> >> >> >
>>> >>> >> >> >> > thank you
>>> >>> >> >> >> >
>>> >>> >> >> >> > On Fri, Nov 7, 20= 25 at 2:07=E2=80=AFAM Tatsuo Ishii <
>>> >>> ishii@postgresql.org>
>>> >>> >> >> >> wrote:
>>> >>> >> >> >> >
>>> >>> >> >> >> >> > Sorry fo= r that - thanks for the patch.
>>> >>> >> >> >> >> >
>>> >>> >> >> >> >> > Please f= ind attached a new version
>>> >>> >> >> >> >>
>>> >>> >> >> >> >> Thanks for th= e new version. Unfortunately this time
>>> regression
>>> >>> >> test
>>> >>> >> >> >> >> fails at:
>>> >>> >> >> >> >>
>>> >>> >> >> >> >> > Waiting = for command timeout...
>>> >>> >> >> >> >> > fail: co= mmand timeout not detected
>>> >>> >> >> >> >>
>>> >>> >> >> >> >> Attached is t= he pgpool.log.
>>> >>> >> >> >> >>
>>> >>> >> >> >> >> Best regards,=
>>> >>> >> >> >> >> --
>>> >>> >> >> >> >> Tatsuo Ishii<= br> >>> >>> >> >> >> >> SRA OSS K.K.<= br> >>> >>> >> >> >> >> English: http://www.sraoss.co.jp/index_en/
>>> >>> >> >> >> >> Japanese:http:/= /www.sraoss.co.jp
>>> >>> >> >> >> >>
>>> >>> >> >> >> >> > On Mon, = Nov 3, 2025 at 9:05=E2=80=AFAM Tatsuo Ishii <
>>> >>> >> ishii@postgresql.org>
>>> >>> >> >> >> >> wrote:
>>> >>> >> >> >> >> >
>>> >>> >> >> >> >> >> >= thanks and sorry for the issues, please find attached
>>> >>> updated
>>> >>> >> >> >> version.
>>> >>> >> >> >> >> >>
>>> >>> >> >> >> >> >> No p= roblem.
>>> >>> >> >> >> >> >>
>>> >>> >> >> >> >> >> This= time the patch applies fine, no compiler warnings.
>>> >>> >> However,
>>> >>> >> >> >> >> >> regr= ession test did not passed here (on Ubuntu 24 LTS if
>>> >>> this
>>> >>> >> >> >> >> >> matt= ers).=C2=A0 So I looked into
>>> >>> >> >> >> >> >>
>>> >>> >> src/test/regression/tests/041.external_r= eplication_delay/test.sh a
>>> >>> >> >> >> >> >> litt= le bit and apply attached patch (test.sh.patch). It
>>> >>> moved
>>> >>> >> >> forward
>>> >>> >> >> >> >> >> part= ially but failed at:
>>> >>> >> >> >> >> >>
>>> >>> >> >> >> >> >> fail= : command execution failure not detected
>>> >>> >> >> >> >> >>
>>> >>> >> >> >> >> >> Plea= se find attached
>>> >>> >> >> >> >> >>
>>> >>> >> >> >> >>
>>> >>> >> >> >>
>>> >>> >> >>
>>> >>> >>
>>> >>>
>>> src/test/regression/tests/041.external_replication_delay/testd= ir/pgpool.log
>>> >>> >> >> >> >> >> and<= br> >>> src/test/regression/log/041.external_replication_delay.
>>> >>> >> >> >> >> >>
>>> >>> >> >> >> >> >> Best= regards,
>>> >>> >> >> >> >> >> -- >>> >>> >> >> >> >> >> Tats= uo Ishii
>>> >>> >> >> >> >> >> SRA = OSS K.K.
>>> >>> >> >> >> >> >> Engl= ish: http://www.sraoss.co.jp/index_en/
>>> >>> >> >> >> >> >> Japa= nese:http://www.sraoss.co.jp
>>> >>> >> >> >> >> >>
>>> >>> >> >> >> >> >
>>> >>> >> >> >> >> >
>>> >>> >> >> >> >> > --
>>> >>> >> >> >> >> > Nadav Sh= atz
>>> >>> >> >> >> >> > Tailor B= rands | CTO
>>> >>> >> >> >> >>
>>> >>> >> >> >> >
>>> >>> >> >> >> >
>>> >>> >> >> >> > --
>>> >>> >> >> >> > Nadav Shatz
>>> >>> >> >> >> > Tailor Brands | C= TO
>>> >>> >> >> >>
>>> >>> >> >> >
>>> >>> >> >> >
>>> >>> >> >> > --
>>> >>> >> >> > Nadav Shatz
>>> >>> >> >> > Tailor Brands | CTO
>>> >>> >> >>
>>> >>> >> >
>>> >>> >> >
>>> >>> >> > --
>>> >>> >> > Nadav Shatz
>>> >>> >> > Tailor Brands | CTO
>>> >>> >>
>>> >>> >
>>> >>> >
>>> >>> > --
>>> >>> > Nadav Shatz
>>> >>> > Tailor Brands | CTO
>>> >>>
>>> >>
>>> >>
>>> >> --
>>> >> Nadav Shatz
>>> >> Tailor Brands | CTO
>>>
>>
>>
>> --
>> Nadav Shatz
>> Tailor Brands | CTO
> <


--
Nadav Shatz
<= font color=3D"#000000">Tailor Brands=C2=A0| CTO
--0000000000002f6722064713e83a-- --0000000000002f6723064713e83c Content-Type: application/x-patch; name="latest.patch" Content-Disposition: attachment; filename="latest.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mjqu2g3x0 RnJvbSBhYmIyMWE4N2VhZTQxMDcwYWRlNjFhMjQ1YjkxYzU2ODM4MDhhZDBhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOYWRhdiBTaGF0eiA8bmFkYXZAdGFpbG9yYnJhbmRzLmNvbT4K RGF0ZTogVHVlLCAyMyBEZWMgMjAyNSAxMzozOTowNCArMDIwMApTdWJqZWN0OiBbUEFUQ0hdICAg IGZlYXQ6IGV4dGVybmFsIHJlcGxpY2F0aW9uIGRlbGF5IGluamVjdGlvbiB2aWEgZXh0ZXJuYWwK IGNvbW1hbmQKCiAgICBBZGQgc3VwcG9ydCBmb3Igb2J0YWluaW5nIHJlcGxpY2F0aW9uIGRlbGF5 IGZyb20gYW4gZXh0ZXJuYWwgY29tbWFuZAogICAgaW5zdGVhZCBvZiBxdWVyeWluZyBwZ19zdGF0 X3JlcGxpY2F0aW9uIGRpcmVjdGx5LiBUaGlzIGFsbG93cyBmb3IKICAgIG1vcmUgZmxleGlibGUg bW9uaXRvcmluZyBzZXR1cHMgd2hlcmUgcmVwbGljYXRpb24gZGVsYXkgaW5mb3JtYXRpb24KICAg IG1heSBjb21lIGZyb20gZXh0ZXJuYWwgbW9uaXRvcmluZyBzeXN0ZW1zLgoKICAgIE5ldyBjb25m aWd1cmF0aW9uIHBhcmFtZXRlcnM6CiAgICAtIHJlcGxpY2F0aW9uX2RlbGF5X3NvdXJjZV9jbWQ6 IFBhdGggdG8gZXh0ZXJuYWwgY29tbWFuZCB0aGF0IHByb3ZpZGVzCiAgICAgIGRlbGF5IHZhbHVl cy4gV2hlbiBzZXQsIHBncG9vbCBjYWxscyB0aGlzIGNvbW1hbmQgaW5zdGVhZCBvZiBxdWVyeWlu ZwogICAgICBQb3N0Z3JlU1FMIGRpcmVjdGx5LgogICAgLSByZXBsaWNhdGlvbl9kZWxheV9zb3Vy Y2VfdGltZW91dDogVGltZW91dCBpbiBzZWNvbmRzIGZvciB0aGUgZXh0ZXJuYWwKICAgICAgY29t bWFuZCAoZGVmYXVsdDogMTApLgoKICAgIFRoZSBleHRlcm5hbCBjb21tYW5kIHJlY2VpdmVzIHJl cGxpY2EgaWRlbnRpZmllcnMgYXMgYXJndW1lbnRzIGluCiAgICAiaG9zdDpwb3J0IiBmb3JtYXQg YW5kIHNob3VsZCBvdXRwdXQgZGVsYXkgdmFsdWVzIGluIG1pbGxpc2Vjb25kcywKICAgIG9uZSBw ZXIgbGluZSwgY29ycmVzcG9uZGluZyB0byBlYWNoIHJlcGxpY2EgYXJndW1lbnQuCgogICAgSW5j bHVkZXMgcmVncmVzc2lvbiB0ZXN0ICgwNDEuZXh0ZXJuYWxfcmVwbGljYXRpb25fZGVsYXkpIGNv dmVyaW5nOgogICAgLSBBcmd1bWVudCBmb3JtYXQgdmFsaWRhdGlvbgogICAgLSBJbnRlZ2VyIGFu ZCBmbG9hdGluZy1wb2ludCBkZWxheSBwYXJzaW5nCiAgICAtIEVycm9yIGhhbmRsaW5nIGZvciBt YWxmb3JtZWQgb3V0cHV0IGFuZCB0aW1lb3V0cwoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9z dHJlYW0tY2hlY2suc2dtbCBiL2RvYy9zcmMvc2dtbC9zdHJlYW0tY2hlY2suc2dtbAppbmRleCBk MmNhM2NhNDljNjJkZDQ4MWZiOGUxODYxNmIxMmFiNTIxNTIxYjFmLi5mYzQ3OTkwODA3MmY2YWZj NjM5MjNhYzY5OWJlMGY2M2UxNWJjOTBhIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvc3RyZWFt LWNoZWNrLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3N0cmVhbS1jaGVjay5zZ21sCkBAIC0zMDks NiArMzA5LDc0IEBAIEdSQU5UIHBnX21vbml0b3IgVE8gc3JfY2hlY2tfdXNlcjsKICAgICA8L2xp c3RpdGVtPgogICA8L3Zhcmxpc3RlbnRyeT4KIAorICA8dmFybGlzdGVudHJ5IGlkPSJndWMtcmVw bGljYXRpb24tZGVsYXktc291cmNlLWNtZCIgeHJlZmxhYmVsPSJyZXBsaWNhdGlvbl9kZWxheV9z b3VyY2VfY21kIj4KKyAgIDx0ZXJtPjx2YXJuYW1lPnJlcGxpY2F0aW9uX2RlbGF5X3NvdXJjZV9j bWQ8L3Zhcm5hbWU+ICg8dHlwZT5zdHJpbmc8L3R5cGU+KQorICAgIDxpbmRleHRlcm0+CisgICAg IDxwcmltYXJ5Pjx2YXJuYW1lPnJlcGxpY2F0aW9uX2RlbGF5X3NvdXJjZV9jbWQ8L3Zhcm5hbWU+ IGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyPC9wcmltYXJ5PgorICAgIDwvaW5kZXh0ZXJtPgorICAg PC90ZXJtPgorICAgPGxpc3RpdGVtPgorICAgIDxwYXJhPgorICAgICBTcGVjaWZpZXMgYW4gZXh0 ZXJuYWwgY29tbWFuZCB0byByZXRyaWV2ZSByZXBsaWNhdGlvbiBkZWxheSBpbmZvcm1hdGlvbiBm b3IgcmVwbGljYSBub2Rlcy4KKyAgICAgV2hlbiB0aGlzIHBhcmFtZXRlciBpcyBzZXQgYW5kIG5v dCBlbXB0eSwgPHByb2R1Y3RuYW1lPlBncG9vbC1JSTwvcHJvZHVjdG5hbWU+IHVzZXMgdGhlCisg ICAgIGV4dGVybmFsIGNvbW1hbmQgaW5zdGVhZCBvZiBidWlsdC1pbiBkYXRhYmFzZSBxdWVyaWVz IHRvIG9idGFpbiByZXBsaWNhdGlvbiBkZWxheXMuCisgICAgIFRoZSBjb21tYW5kIGlzIGV4ZWN1 dGVkIGFzIHRoZSA8cHJvZHVjdG5hbWU+UGdwb29sLUlJPC9wcm9kdWN0bmFtZT4gcHJvY2VzcyB1 c2VyLgorICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgVGhlIGNvbW1hbmQgcmVjZWl2ZXMg cmVwbGljYSBub2RlIGlkZW50aWZpZXJzIGFzIHBvc2l0aW9uYWwgYXJndW1lbnRzLCB3aXRoIHRo ZSBwcmltYXJ5CisgICAgIG5vZGUgb21pdHRlZC4gRWFjaCBpZGVudGlmaWVyIGlzIGluIHRoZSBm b3JtYXQgPGxpdGVyYWw+Jmx0O2hvc3RuYW1lJmd0OzombHQ7cG9ydCZndDs8L2xpdGVyYWw+LAor ICAgICBmb3IgZXhhbXBsZSA8bGl0ZXJhbD5zZXJ2ZXIxOjU0MzIgc2VydmVyMjo1NDMyPC9saXRl cmFsPi4gVGhlIG9yZGVyIG1hdGNoZXMKKyAgICAgPHByb2R1Y3RuYW1lPlBncG9vbC1JSTwvcHJv ZHVjdG5hbWU+J3MgYmFja2VuZCBvcmRlciAoZXhjbHVkaW5nIHRoZSBwcmltYXJ5KSwgYWxsb3dp bmcgdGhlCisgICAgIHNjcmlwdCB0byBjb3JyZWxhdGUgZXh0ZXJuYWwgbWV0cmljcyAoc3VjaCBh cyBmcm9tIEFXUyBDbG91ZFdhdGNoIGZvciBBdXJvcmEpIHRvIHRoZSBjb3JyZWN0IG5vZGVzLgor ICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgVGhlIGNvbW1hbmQgbXVzdCB3cml0ZSBhIHNp bmdsZSBsaW5lIHRvIHN0ZG91dCBjb250YWluaW5nIG9uZSB3aGl0ZXNwYWNlLXNlcGFyYXRlZCBk ZWxheSB2YWx1ZQorICAgICBwZXIgcmVwbGljYSwgaW4gbWlsbGlzZWNvbmRzLCBpbiB0aGUgc2Ft ZSBvcmRlciBhcyB0aGUgYXJndW1lbnRzLiBUaGUgcHJpbWFyeSBub2RlJ3MgZGVsYXkgaXMKKyAg ICAgaW1wbGljaXRseSB6ZXJvIGFuZCBzaG91bGQgbm90IGJlIGluY2x1ZGVkIGluIHRoZSBvdXRw dXQuIERlbGF5IHZhbHVlcyBjYW4gYmUgaW50ZWdlcnMgb3IKKyAgICAgZmxvYXRpbmctcG9pbnQg bnVtYmVycy4KKyAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgIFNwZWNpYWwgdmFsdWU6IDxs aXRlcmFsPi0xPC9saXRlcmFsPiBpbmRpY2F0ZXMgYSByZXBsaWNhIHRoYXQgaXMgZG93biBidXQg bm90IHlldCBkZXRlY3RlZAorICAgICBieSA8cHJvZHVjdG5hbWU+UGdwb29sLUlJPC9wcm9kdWN0 bmFtZT4ncyBoZWFsdGggY2hlY2tzLiA8cHJvZHVjdG5hbWU+UGdwb29sLUlJPC9wcm9kdWN0bmFt ZT4KKyAgICAgd2lsbCBsb2cgdGhpcyBjb25kaXRpb24gYnV0IHJlbHkgb24gaXRzIG93biBoZWFs dGgtY2hlY2sgbG9naWMgdG8gZGVjaWRlIHdoZXRoZXIgdG8gdHJpZ2dlcgorICAgICBmYWlsb3Zl cjsgbm8gZmFpbG92ZXIgaXMgdHJpZ2dlcmVkIHNvbGVseSBieSByZWNlaXZpbmcgPGxpdGVyYWw+ LTE8L2xpdGVyYWw+LgorICAgIDwvcGFyYT4KKyAgICA8cGFyYT4KKyAgICAgRXhhbXBsZSBmb3Ig YSAzLW5vZGUgY2x1c3RlciAoMSBwcmltYXJ5ICsgMiByZXBsaWNhcyk6IGlmIHRoZSBjb21tYW5k IHJlY2VpdmVzIGFyZ3VtZW50cworICAgICA8bGl0ZXJhbD5zZXJ2ZXIxOjU0MzIgc2VydmVyMjo1 NDMyPC9saXRlcmFsPiwgaXQgc2hvdWxkIG91dHB1dCA8bGl0ZXJhbD4iMjUuNSAxMDAiPC9saXRl cmFsPgorICAgICB0byBpbmRpY2F0ZSB0aGUgZmlyc3QgcmVwbGljYSBoYXMgMjUuNW1zIGRlbGF5 IGFuZCB0aGUgc2Vjb25kIGhhcyAxMDBtcyBkZWxheS4KKyAgICA8L3BhcmE+CisgICAgPHBhcmE+ CisgICAgIERlZmF1bHQgaXMgZW1wdHkgKHVzZSBidWlsdC1pbiByZXBsaWNhdGlvbiBkZWxheSBx dWVyaWVzKS4KKyAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgIFRoaXMgcGFyYW1ldGVyIGNh biBiZSBjaGFuZ2VkIGJ5IHJlbG9hZGluZyB0aGUgPHByb2R1Y3RuYW1lPlBncG9vbC1JSTwvPiBj b25maWd1cmF0aW9ucy4KKyAgICA8L3BhcmE+CisgICA8L2xpc3RpdGVtPgorICA8L3Zhcmxpc3Rl bnRyeT4KKworICA8dmFybGlzdGVudHJ5IGlkPSJndWMtcmVwbGljYXRpb24tZGVsYXktc291cmNl LXRpbWVvdXQiIHhyZWZsYWJlbD0icmVwbGljYXRpb25fZGVsYXlfc291cmNlX3RpbWVvdXQiPgor ICAgPHRlcm0+PHZhcm5hbWU+cmVwbGljYXRpb25fZGVsYXlfc291cmNlX3RpbWVvdXQ8L3Zhcm5h bWU+ICg8dHlwZT5pbnRlZ2VyPC90eXBlPikKKyAgICA8aW5kZXh0ZXJtPgorICAgICA8cHJpbWFy eT48dmFybmFtZT5yZXBsaWNhdGlvbl9kZWxheV9zb3VyY2VfdGltZW91dDwvdmFybmFtZT4gY29u ZmlndXJhdGlvbiBwYXJhbWV0ZXI8L3ByaW1hcnk+CisgICAgPC9pbmRleHRlcm0+CisgICA8L3Rl cm0+CisgICA8bGlzdGl0ZW0+CisgICAgPHBhcmE+CisgICAgIFNwZWNpZmllcyB0aGUgdGltZW91 dCBpbiBzZWNvbmRzIGZvciB0aGUgZXh0ZXJuYWwgY29tbWFuZCBzcGVjaWZpZWQgYnkKKyAgICAg PHhyZWYgbGlua2VuZD0iZ3VjLXJlcGxpY2F0aW9uLWRlbGF5LXNvdXJjZS1jbWQiPi4KKyAgICAg SWYgdGhlIGNvbW1hbmQgZG9lcyBub3QgZmluaXNoIHdpdGhpbiB0aGUgdGltZW91dCwgPHByb2R1 Y3RuYW1lPlBncG9vbC1JSTwvcHJvZHVjdG5hbWU+CisgICAgIGxvZ3MgYW4gZXJyb3IgYW5kIGNv bnRpbnVlcyB1c2luZyB0aGUgYnVpbHQtaW4gbWV0aG9kLgorICAgIDwvcGFyYT4KKyAgICA8cGFy YT4KKyAgICAgRGVmYXVsdCBpcyAxMCBzZWNvbmRzLiBWYWxpZCByYW5nZSBpcyAxLTM2MDAgc2Vj b25kcy4KKyAgICA8L3BhcmE+CisgICAgPHBhcmE+CisgICAgIFRoaXMgcGFyYW1ldGVyIGNhbiBi ZSBjaGFuZ2VkIGJ5IHJlbG9hZGluZyB0aGUgPHByb2R1Y3RuYW1lPlBncG9vbC1JSTwvPiBjb25m aWd1cmF0aW9ucy4KKyAgICA8L3BhcmE+CisgICA8L2xpc3RpdGVtPgorICA8L3Zhcmxpc3RlbnRy eT4KKwogICA8dmFybGlzdGVudHJ5IGlkPSJndWMtbG9nLXN0YW5kYnktZGVsYXkiIHhyZWZsYWJl bD0ibG9nX3N0YW5kYnlfZGVsYXkiPgogICAgPHRlcm0+PHZhcm5hbWU+bG9nX3N0YW5kYnlfZGVs YXk8L3Zhcm5hbWU+ICg8dHlwZT5lbnVtPC90eXBlPikKICAgICA8aW5kZXh0ZXJtPgpkaWZmIC0t Z2l0IGEvc3JjL2NvbmZpZy9wb29sX2NvbmZpZ192YXJpYWJsZXMuYyBiL3NyYy9jb25maWcvcG9v bF9jb25maWdfdmFyaWFibGVzLmMKaW5kZXggMGEwZTQ4MzE0OTE5MGUxNGNhMTM0MDZjMDhkMGVl MmFjMGE5YzUzYS4uN2M2ZDE4MDMxMTc1NDFhYWJhNTBkOWY5ZmY2MmU0MWUxNDVjNWQ5NSAxMDA2 NDQKLS0tIGEvc3JjL2NvbmZpZy9wb29sX2NvbmZpZ192YXJpYWJsZXMuYworKysgYi9zcmMvY29u ZmlnL3Bvb2xfY29uZmlnX3ZhcmlhYmxlcy5jCkBAIC05ODAsNiArOTgwLDE2IEBAIHN0YXRpYyBz dHJ1Y3QgY29uZmlnX3N0cmluZyBDb25maWd1cmVOYW1lc1N0cmluZ1tdID0KIAkJTlVMTCwgTlVM TCwgTlVMTCwgTlVMTAogCX0sCiAKKwl7CisJCXsicmVwbGljYXRpb25fZGVsYXlfc291cmNlX2Nt ZCIsIENGR0NYVF9SRUxPQUQsIFNUUkVBTUlOR19SRVBMSUNBVElPTl9DT05GSUcsCisJCQkiRXh0 ZXJuYWwgY29tbWFuZCB0byByZXRyaWV2ZSByZXBsaWNhdGlvbiBkZWxheSBpbmZvcm1hdGlvbi4i LAorCQkJQ09ORklHX1ZBUl9UWVBFX1NUUklORywgZmFsc2UsIDAKKwkJfSwKKwkJJmdfcG9vbF9j b25maWcucmVwbGljYXRpb25fZGVsYXlfc291cmNlX2NtZCwKKwkJIiIsCisJCU5VTEwsIE5VTEws IE5VTEwsIE5VTEwKKwl9LAorCiAJewogCQl7ImZhaWxiYWNrX2NvbW1hbmQiLCBDRkdDWFRfUkVM T0FELCBGQUlMT1ZFUl9DT05GSUcsCiAJCQkiQ29tbWFuZCB0byBleGVjdXRlIHdoZW4gYmFja2Vu ZCBub2RlIGlzIGF0dGFjaGVkLiIsCkBAIC0yMzM0LDYgKzIzNDQsMTcgQEAgc3RhdGljIHN0cnVj dCBjb25maWdfaW50IENvbmZpZ3VyZU5hbWVzSW50W10gPQogCQlOVUxMLCBOVUxMLCBOVUxMCiAJ fSwKIAorCXsKKwkJeyJyZXBsaWNhdGlvbl9kZWxheV9zb3VyY2VfdGltZW91dCIsIENGR0NYVF9S RUxPQUQsIFNUUkVBTUlOR19SRVBMSUNBVElPTl9DT05GSUcsCisJCQkiVGltZW91dCBmb3IgZXh0 ZXJuYWwgcmVwbGljYXRpb24gZGVsYXkgY29tbWFuZCBleGVjdXRpb24gaW4gc2Vjb25kcy4iLAor CQkJQ09ORklHX1ZBUl9UWVBFX0lOVCwgZmFsc2UsIDAKKwkJfSwKKwkJJmdfcG9vbF9jb25maWcu cmVwbGljYXRpb25fZGVsYXlfc291cmNlX3RpbWVvdXQsCisJCTEwLAorCQkxLCAzNjAwLAorCQlO VUxMLCBOVUxMLCBOVUxMCisJfSwKKwogCS8qIEVuZC1vZi1saXN0IG1hcmtlciAqLwogCUVNUFRZ X0NPTkZJR19JTlQKIH07CmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9wb29sX2NvbmZpZy5oIGIv c3JjL2luY2x1ZGUvcG9vbF9jb25maWcuaAppbmRleCA3NThkNTE1NTI1YzkzYzFjM2YyNjg2ZGEw NDliMjk0YTI4NmE1NzRhLi42ZjVmODhmYjIwMGMyZWE4MmNjY2RkZDhmMDJjMzVjOGQwYWRlOGY0 IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wb29sX2NvbmZpZy5oCisrKyBiL3NyYy9pbmNsdWRl L3Bvb2xfY29uZmlnLmgKQEAgLTg2LDcgKzg2LDYgQEAgdHlwZWRlZiBlbnVtIExvZ1N0YW5kYnlE ZWxheU1vZGVzCiAJTFNEX05PTkUKIH0gTG9nU3RhbmRieURlbGF5TW9kZXM7CiAKLQogdHlwZWRl ZiBlbnVtIE1lbUNhY2hlTWV0aG9kCiB7CiAJU0hNRU1fQ0FDSEUgPSAxLApAQCAtMzY0LDYgKzM2 Myw4IEBAIHR5cGVkZWYgc3RydWN0CiAJY2hhcgkgICAqc3JfY2hlY2tfcGFzc3dvcmQ7CS8qIHBh c3N3b3JkIGZvciBzcl9jaGVja191c2VyICovCiAJY2hhcgkgICAqc3JfY2hlY2tfZGF0YWJhc2U7 CS8qIFBvc3RncmVTUUwgZGF0YWJhc2UgbmFtZSBmb3Igc3RyZWFtaW5nCiAJCQkJCQkJCQkgKiBy ZXBsaWNhdGlvbiBjaGVjayAqLworCWNoYXIJICAgKnJlcGxpY2F0aW9uX2RlbGF5X3NvdXJjZV9j bWQ7CS8qIGV4dGVybmFsIGNvbW1hbmQgZm9yIHJlcGxpY2F0aW9uIGRlbGF5ICovCisJaW50CQkJ cmVwbGljYXRpb25fZGVsYXlfc291cmNlX3RpbWVvdXQ7CS8qIHRpbWVvdXQgZm9yIGV4dGVybmFs IGNvbW1hbmQgaW4gc2Vjb25kcyAqLwogCWNoYXIJICAgKmZhaWxvdmVyX2NvbW1hbmQ7CS8qIGV4 ZWN1dGUgY29tbWFuZCB3aGVuIGZhaWxvdmVyIGhhcHBlbnMgKi8KIAljaGFyCSAgICpmb2xsb3df cHJpbWFyeV9jb21tYW5kOyAvKiBleGVjdXRlIGNvbW1hbmQgd2hlbiBmYWlsb3ZlciBpcwogCQkJ CQkJCQkJCSAqIGVuZGVkICovCmRpZmYgLS1naXQgYS9zcmMvc2FtcGxlL3BncG9vbC5jb25mLnNh bXBsZS1zdHJlYW0gYi9zcmMvc2FtcGxlL3BncG9vbC5jb25mLnNhbXBsZS1zdHJlYW0KaW5kZXgg Nzk3OTA2NDkxY2I5OTZkMjRjNTliMzcxMGY0NjJmMTQwNTczNzI0OC4uNDU0ZmRiOWU1ZDFmZDY1 NDM3YjZhNjdmMTJhYjYyNjU4ZWEwOGY0OSAxMDA2NDQKLS0tIGEvc3JjL3NhbXBsZS9wZ3Bvb2wu Y29uZi5zYW1wbGUtc3RyZWFtCisrKyBiL3NyYy9zYW1wbGUvcGdwb29sLmNvbmYuc2FtcGxlLXN0 cmVhbQpAQCAtNTE5LDYgKzUxOSwyMCBAQCBiYWNrZW5kX2NsdXN0ZXJpbmdfbW9kZSA9IHN0cmVh bWluZ19yZXBsaWNhdGlvbgogCiAjc3JfY2hlY2tfZGF0YWJhc2UgPSAncG9zdGdyZXMnCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgRGF0YWJhc2UgbmFtZSBmb3Igc3RyZWFt aW5nIHJlcGxpY2F0aW9uIGNoZWNrCisKKyNyZXBsaWNhdGlvbl9kZWxheV9zb3VyY2VfY21kID0g JycKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBFeHRlcm5hbCBjb21tYW5k IHRvIHJldHJpZXZlIHJlcGxpY2F0aW9uIGRlbGF5IGluZm9ybWF0aW9uCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICMgSWYgc2V0LCBwZ3Bvb2wgdXNlcyB0aGlzIGNvbW1hbmQg aW5zdGVhZCBvZiBidWlsdC1pbiBxdWVyaWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICMgQ29tbWFuZCByZWNlaXZlcyByZXBsaWNhIG5vZGUgaWRlbnRpZmllcnMgKGhvc3Q6 cG9ydCkgYXMgYXJndW1lbnRzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMg UHJpbWFyeSBub2RlIGlzIG9taXR0ZWQgZnJvbSBhcmd1bWVudHMKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIyBDb21tYW5kIHNob3VsZCBvdXRwdXQgb25lIGRlbGF5IHZhbHVl IChpbiBtcykgcGVyIHJlcGxpY2EKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IyBVc2UgLTEgdG8gaW5kaWNhdGUgYSByZXBsaWNhIHRoYXQgaXMgZG93biBidXQgbm90IHlldCBk ZXRlY3RlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEZvcm1hdDogIjI1 IDEwMCIgZm9yIDIgcmVwbGljYXMgKGUuZy4sIDMtbm9kZSBjbHVzdGVyIHdpdGggMSBwcmltYXJ5 KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIENvbW1hbmQgcnVucyBhcyB0 aGUgcGdwb29sIHByb2Nlc3MgdXNlcgorI3JlcGxpY2F0aW9uX2RlbGF5X3NvdXJjZV90aW1lb3V0 ID0gMTAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBUaW1lb3V0IGZvciBl eHRlcm5hbCBjb21tYW5kIGV4ZWN1dGlvbiBpbiBzZWNvbmRzCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICMgUmFuZ2U6IDEtMzYwMCBzZWNvbmRzIChkZWZhdWx0OiAxMCkKKwog I2RlbGF5X3RocmVzaG9sZCA9IDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IyBUaHJlc2hvbGQgYmVmb3JlIG5vdCBkaXNwYXRjaGluZyBxdWVyeSB0byBzdGFuZGJ5IG5vZGUK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBVbml0IGlzIGluIGJ5dGVzCmRp ZmYgLS1naXQgYS9zcmMvc3RyZWFtaW5nX3JlcGxpY2F0aW9uL3Bvb2xfd29ya2VyX2NoaWxkLmMg Yi9zcmMvc3RyZWFtaW5nX3JlcGxpY2F0aW9uL3Bvb2xfd29ya2VyX2NoaWxkLmMKaW5kZXggNWJm MTljMzdkMGNmMTAzM2M2MjRmMzRhYjM3MzdmMTg4NzFiYzJmNS4uNmM1M2ZiOGQ1OWMwMDg5MTQ1 NjM4NGE0MDRiNmVjYWI4YzU0NTFjNSAxMDA2NDQKLS0tIGEvc3JjL3N0cmVhbWluZ19yZXBsaWNh dGlvbi9wb29sX3dvcmtlcl9jaGlsZC5jCisrKyBiL3NyYy9zdHJlYW1pbmdfcmVwbGljYXRpb24v cG9vbF93b3JrZXJfY2hpbGQuYwpAQCAtNDMsNiArNDMsNyBAQAogI2luY2x1ZGUgPHVuaXN0ZC5o PgogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHN5cy90aW1lLmg+CisjaW5jbHVkZSA8 c3lzL3dhaXQuaD4KIAogI2lmZGVmIEhBVkVfQ1JZUFRfSAogI2luY2x1ZGUgPGNyeXB0Lmg+CkBA IC03Niw2ICs3Nyw4IEBAIHN0YXRpYyB2b2xhdGlsZSBzaWdfYXRvbWljX3QgcmVzdGFydF9yZXF1 ZXN0ID0gMDsKIHN0YXRpYyB2b2lkIGVzdGFibGlzaF9wZXJzaXN0ZW50X2Nvbm5lY3Rpb24odm9p ZCk7CiBzdGF0aWMgdm9pZCBkaXNjYXJkX3BlcnNpc3RlbnRfY29ubmVjdGlvbih2b2lkKTsKIHN0 YXRpYyB2b2lkIGNoZWNrX3JlcGxpY2F0aW9uX3RpbWVfbGFnKHZvaWQpOworc3RhdGljIHZvaWQg Y2hlY2tfcmVwbGljYXRpb25fdGltZV9sYWdfd2l0aF9jbWQodm9pZCk7CitzdGF0aWMgY2hhciAq YnVpbGRfaW5zdGFuY2VfaWRlbnRpZmllcl9mb3Jfbm9kZShpbnQgbm9kZV9pZCk7CiBzdGF0aWMg dm9pZCBDaGVja1JlcGxpY2F0aW9uVGltZUxhZ0Vycm9yQ2Iodm9pZCAqYXJnKTsKIHN0YXRpYyB1 bnNpZ25lZCBsb25nIGxvbmcgaW50IHRleHRfdG9fbHNuKGNoYXIgKnRleHQpOwogc3RhdGljIFJF VFNJR1RZUEUgbXlfc2lnbmFsX2hhbmRsZXIoaW50IHNpZyk7CkBAIC0xMjksNyArMTMyLDcgQEAg ZG9fd29ya2VyX2NoaWxkKHZvaWQgKnBhcmFtcykKIAlzaWduYWwoU0lHSU5ULCBteV9zaWduYWxf aGFuZGxlcik7CiAJc2lnbmFsKFNJR0hVUCwgcmVsb2FkX2NvbmZpZ19oYW5kbGVyKTsKIAlzaWdu YWwoU0lHUVVJVCwgbXlfc2lnbmFsX2hhbmRsZXIpOwotCXNpZ25hbChTSUdDSExELCBTSUdfSUdO KTsKKwlzaWduYWwoU0lHQ0hMRCwgbXlfc2lnbmFsX2hhbmRsZXIpOwogCXNpZ25hbChTSUdVU1Ix LCBteV9zaWduYWxfaGFuZGxlcik7CiAJc2lnbmFsKFNJR1VTUjIsIFNJR19JR04pOwogCXNpZ25h bChTSUdQSVBFLCBTSUdfSUdOKTsKQEAgLTI2MCw3ICsyNjMsMTYgQEAgZG9fd29ya2VyX2NoaWxk KHZvaWQgKnBhcmFtcykKIAkJCQkJaW50CQkJaTsKIAogCQkJCQkvKiBEbyByZXBsaWNhdGlvbiB0 aW1lIGxhZyBjaGVja2luZyAqLwotCQkJCQljaGVja19yZXBsaWNhdGlvbl90aW1lX2xhZygpOwor CisJCQkJCS8qCisJCQkJCSAqIFVzZSBleHRlcm5hbCBjb21tYW5kIGlmIHJlcGxpY2F0aW9uX2Rl bGF5X3NvdXJjZV9jbWQgaXMKKwkJCQkJICogY29uZmlndXJlZAorCQkJCQkgKi8KKwkJCQkJaWYg KHBvb2xfY29uZmlnLT5yZXBsaWNhdGlvbl9kZWxheV9zb3VyY2VfY21kICYmCisJCQkJCQlzdHJs ZW4ocG9vbF9jb25maWctPnJlcGxpY2F0aW9uX2RlbGF5X3NvdXJjZV9jbWQpID4gMCkKKwkJCQkJ CWNoZWNrX3JlcGxpY2F0aW9uX3RpbWVfbGFnX3dpdGhfY21kKCk7CisJCQkJCWVsc2UKKwkJCQkJ CWNoZWNrX3JlcGxpY2F0aW9uX3RpbWVfbGFnKCk7CiAKIAkJCQkJLyogQ2hlY2sgbm9kZSBzdGF0 dXMgKi8KIAkJCQkJbm9kZV9zdGF0dXMgPSB2ZXJpZnlfYmFja2VuZF9ub2RlX3N0YXR1cyhzbG90 cyk7CkBAIC02NTksNiArNjcxLDQ0NiBAQCBjaGVja19yZXBsaWNhdGlvbl90aW1lX2xhZyh2b2lk KQogCWVycm9yX2NvbnRleHRfc3RhY2sgPSBjYWxsYmFjay5wcmV2aW91czsKIH0KIAorI2RlZmlu ZSBNQVhfQ01EX09VVFBVVCA0MDk2CisjZGVmaW5lIE1BWF9SRUFTT05BQkxFX0RFTEFZX01TIDM2 MDAwMDAuMAkvKiAxIGhvdXIgaW4gbWlsbGlzZWNvbmRzICovCisKKy8qCisgKiBDaGVjayByZXBs aWNhdGlvbiB0aW1lIGxhZyB1c2luZyBleHRlcm5hbCBjb21tYW5kCisgKgorICogVGhlIGV4dGVy bmFsIGNvbW1hbmQgcmVjZWl2ZXMgb25seSByZXBsaWNhIChzdGFuZGJ5KSBub2RlIGlkZW50aWZp ZXJzIGFzIGFyZ3VtZW50cywKKyAqIG9taXR0aW5nIHRoZSBwcmltYXJ5IG5vZGUuIEl0IHJldHVy bnMgZGVsYXkgdmFsdWVzIGluIG1pbGxpc2Vjb25kcyBmb3IgZWFjaCByZXBsaWNhLgorICogQSB2 YWx1ZSBvZiAtMSBpbmRpY2F0ZXMgYSBub2RlIHRoYXQgaXMgZG93biBidXQgbm90IHlldCBkZXRl Y3RlZCBieSBwZ3Bvb2wncyBoZWFsdGggY2hlY2tzLgorICovCitzdGF0aWMgdm9pZAorY2hlY2tf cmVwbGljYXRpb25fdGltZV9sYWdfd2l0aF9jbWQodm9pZCkKK3sKKwljaGFyCSAgICpjb21tYW5k ID0gTlVMTDsKKwljaGFyCSAgICpsaW5lOworCWNoYXIJICAgKnRva2VuOworCWNoYXIJICAgKnNh dmVwdHI7CisJY2hhcgkgICAqbGluZV9jb3B5OworCWNoYXIJICAgKnRlbXBfdG9rZW47CisJY2hh cgkgICAqZW5kcHRyOworCWNoYXIJICAgKmlkZW50OworCWNvbnN0IGNoYXIgKmJhc2VfY29tbWFu ZDsKKwlkb3VibGUJCWRlbGF5X21zOworCXVpbnQ2NAkJZGVsYXk7CisJdWludDY0CQlkZWxheV90 aHJlc2hvbGRfYnlfdGltZTsKKwlpbnQJCQl0b2tlbl9jb3VudCA9IDA7CisJaW50CQkJcHJpbWFy eV9ub2RlX2lkOworCWludAkJCXNhdmVfZXJybm87CisJaW50CQkJaTsKKwlzaXplX3QJCXRvdGFs X2xlbjsKKwlzaXplX3QJCWN1cnJlbnRfbGVuOworCUJhY2tlbmRJbmZvICpia2luZm87CisJRXJy b3JDb250ZXh0Q2FsbGJhY2sgY2FsbGJhY2s7CisJaW50CQkJcGlwZWZkWzJdID0gey0xLCAtMX07 CisJcGlkX3QJCXBpZCA9IC0xOworCWludAkJCXJldDsKKwlzdHJ1Y3QgdGltZXZhbCB0aW1lb3V0 OworCWZkX3NldAkJcmVhZGZkczsKKwlzc2l6ZV90CQlieXRlc19yZWFkOworCWludAkJCXN0YXR1 czsKKwlpbnQJCQludW1fcmVwbGljYXM7CisKKwlpZiAoTlVNX0JBQ0tFTkRTIDw9IDEpCisJewor CQkvKiBJZiB0aGVyZSdzIG9ubHkgb25lIG5vZGUsIHRoZXJlJ3Mgbm8gcG9pbnQgdG8gZG8gY2hl Y2tpbmcgKi8KKwkJcmV0dXJuOworCX0KKworCWlmIChSRUFMX1BSSU1BUllfTk9ERV9JRCA8IDAp CisJeworCQkvKiBObyBuZWVkIHRvIGNoZWNrIGlmIHRoZXJlJ3Mgbm8gcHJpbWFyeSAqLworCQly ZXR1cm47CisJfQorCisJaWYgKCFWQUxJRF9CQUNLRU5EKFJFQUxfUFJJTUFSWV9OT0RFX0lEKSkK Kwl7CisJCS8qIE5vIG5lZWQgdG8gY2hlY2sgcmVwbGljYXRpb24gZGVsYXkgaWYgcHJpbWFyeSBp cyBkb3duICovCisJCXJldHVybjsKKwl9CisKKwkvKiBDYXB0dXJlIHByaW1hcnkgbm9kZSBJRCB0 byBhdm9pZCByYWNlIGNvbmRpdGlvbnMgZHVyaW5nIGV4ZWN1dGlvbiAqLworCXByaW1hcnlfbm9k ZV9pZCA9IFJFQUxfUFJJTUFSWV9OT0RFX0lEOworCisJaWYgKCFwb29sX2NvbmZpZy0+cmVwbGlj YXRpb25fZGVsYXlfc291cmNlX2NtZCB8fAorCQlzdHJsZW4ocG9vbF9jb25maWctPnJlcGxpY2F0 aW9uX2RlbGF5X3NvdXJjZV9jbWQpID09IDApCisJeworCQllcmVwb3J0KFdBUk5JTkcsCisJCQkJ KGVycm1zZygicmVwbGljYXRpb25fZGVsYXlfc291cmNlX2NtZCBpcyBub3QgY29uZmlndXJlZCIp LAorCQkJCSBlcnJoaW50KCJTZXQgcmVwbGljYXRpb25fZGVsYXlfc291cmNlX2NtZCB0byB1c2Ug ZXh0ZXJuYWwgY29tbWFuZCBtb2RlIikpKTsKKwkJLyogRmFsbCBiYWNrIHRvIGJ1aWx0aW4gbWV0 aG9kICovCisJCWNoZWNrX3JlcGxpY2F0aW9uX3RpbWVfbGFnKCk7CisJCXJldHVybjsKKwl9CisK KwkvKiBBbGxvY2F0ZSBidWZmZXIgZm9yIGNvbW1hbmQgb3V0cHV0ICovCisJbGluZSA9IHBhbGxv YyhNQVhfQ01EX09VVFBVVCk7CisJbWVtc2V0KGxpbmUsIDAsIE1BWF9DTURfT1VUUFVUKTsKKwor CS8qCisJICogUmVnaXN0ZXIgYSBlcnJvciBjb250ZXh0IGNhbGxiYWNrIHRvIHRocm93IHByb3Bl ciBjb250ZXh0IG1lc3NhZ2UKKwkgKi8KKwljYWxsYmFjay5jYWxsYmFjayA9IENoZWNrUmVwbGlj YXRpb25UaW1lTGFnRXJyb3JDYjsKKwljYWxsYmFjay5hcmcgPSBOVUxMOworCWNhbGxiYWNrLnBy ZXZpb3VzID0gZXJyb3JfY29udGV4dF9zdGFjazsKKwllcnJvcl9jb250ZXh0X3N0YWNrID0gJmNh bGxiYWNrOworCisJLyogRXhlY3V0ZSBjb21tYW5kIGFzIGN1cnJlbnQgcHJvY2VzcyB1c2VyICov CisJUEdfVFJZKCk7CisJeworCQliYXNlX2NvbW1hbmQgPSBwb29sX2NvbmZpZy0+cmVwbGljYXRp b25fZGVsYXlfc291cmNlX2NtZDsKKwkJdG90YWxfbGVuID0gc3RybGVuKGJhc2VfY29tbWFuZCkg KyAxOwkvKiArMSBmb3IgTlVMICovCisKKwkJLyogQnVpbGQgY29tbWFuZCB3aXRoIHJlcGxpY2Et b25seSBhcmd1bWVudHMgKG9taXQgcHJpbWFyeSkgKi8KKworCQkvKgorCQkgKiBDYWxjdWxhdGUg dG90YWwgY29tbWFuZCBsZW5ndGggaW5jbHVkaW5nIHNwYWNlLXNlcGFyYXRlZCByZXBsaWNhCisJ CSAqIGlkZW50aWZpZXJzCisJCSAqLworCQlmb3IgKGkgPSAwOyBpIDwgTlVNX0JBQ0tFTkRTOyBp KyspCisJCXsKKwkJCWlmIChpID09IHByaW1hcnlfbm9kZV9pZCkKKwkJCQljb250aW51ZTsJCS8q IFNraXAgcHJpbWFyeSBub2RlICovCisKKwkJCWlkZW50ID0gYnVpbGRfaW5zdGFuY2VfaWRlbnRp Zmllcl9mb3Jfbm9kZShpKTsKKworCQkJdG90YWxfbGVuICs9IDEgLyogc3BhY2UgKi8gKyBzdHJs ZW4oaWRlbnQpOworCQkJcGZyZWUoaWRlbnQpOworCQl9CisKKwkJY29tbWFuZCA9IHBhbGxvYyh0 b3RhbF9sZW4pOworCQlzdHJsY3B5KGNvbW1hbmQsIGJhc2VfY29tbWFuZCwgdG90YWxfbGVuKTsK KworCQkvKiBBcHBlbmQgcmVwbGljYSBpZGVudGlmaWVycyAqLworCQljdXJyZW50X2xlbiA9IHN0 cmxlbihjb21tYW5kKTsKKworCQlmb3IgKGkgPSAwOyBpIDwgTlVNX0JBQ0tFTkRTOyBpKyspCisJ CXsKKwkJCWlmIChpID09IHByaW1hcnlfbm9kZV9pZCkKKwkJCQljb250aW51ZTsJCS8qIFNraXAg cHJpbWFyeSBub2RlICovCisKKwkJCWlkZW50ID0gYnVpbGRfaW5zdGFuY2VfaWRlbnRpZmllcl9m b3Jfbm9kZShpKTsKKworCQkJLyogQXBwZW5kIHNwYWNlIGFuZCBpZGVudGlmaWVyICovCisJCQlz bnByaW50Zihjb21tYW5kICsgY3VycmVudF9sZW4sIHRvdGFsX2xlbiAtIGN1cnJlbnRfbGVuLCAi ICVzIiwgaWRlbnQpOworCQkJY3VycmVudF9sZW4gKz0gc3RybGVuKGNvbW1hbmQgKyBjdXJyZW50 X2xlbik7CisKKwkJCXBmcmVlKGlkZW50KTsKKwkJfQorCisJCWVyZXBvcnQoREVCVUcxLAorCQkJ CShlcnJtc2coImV4ZWN1dGluZyByZXBsaWNhdGlvbiBkZWxheSBjb21tYW5kOiAlcyIsIGNvbW1h bmQpKSk7CisKKwkJaWYgKHBpcGUocGlwZWZkKSA9PSAtMSkKKwkJeworCQkJZXJlcG9ydChFUlJP UiwKKwkJCQkJKGVycm1zZygicGlwZSBmYWlsZWQ6ICVtIikpKTsKKwkJfQorCisJCXBpZCA9IGZv cmsoKTsKKwkJaWYgKHBpZCA9PSAtMSkKKwkJeworCQkJY2xvc2UocGlwZWZkWzBdKTsKKwkJCWNs b3NlKHBpcGVmZFsxXSk7CisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJybXNnKCJmb3JrIGZh aWxlZDogJW0iKSkpOworCQl9CisKKwkJaWYgKHBpZCA9PSAwKQorCQl7CisJCQkvKiBDaGlsZCBw cm9jZXNzICovCisJCQljbG9zZShwaXBlZmRbMF0pOwkvKiBDbG9zZSByZWFkIGVuZCAqLworCQkJ aWYgKGR1cDIocGlwZWZkWzFdLCBTVERPVVRfRklMRU5PKSA9PSAtMSkKKwkJCXsKKwkJCQlmcHJp bnRmKHN0ZGVyciwgImR1cDIgZmFpbGVkOiAlc1xuIiwgc3RyZXJyb3IoZXJybm8pKTsKKwkJCQll eGl0KDEpOworCQkJfQorCQkJY2xvc2UocGlwZWZkWzFdKTsJLyogQ2xvc2Ugd3JpdGUgZW5kIChk dXBsaWNhdGVkIHRvIHN0ZG91dCkgKi8KKworCQkJLyogRXhlY3V0ZSBjb21tYW5kIHVzaW5nIHNo ZWxsICovCisJCQlleGVjbCgiL2Jpbi9zaCIsICJzaCIsICItYyIsIGNvbW1hbmQsIChjaGFyICop IE5VTEwpOworCisJCQkvKiBJZiBleGVjbCBmYWlscyAqLworCQkJZnByaW50ZihzdGRlcnIsICJl eGVjbCBmYWlsZWQ6ICVzXG4iLCBzdHJlcnJvcihlcnJubykpOworCQkJX2V4aXQoMTI3KTsKKwkJ fQorCisJCS8qIFBhcmVudCBwcm9jZXNzICovCisJCWNsb3NlKHBpcGVmZFsxXSk7CQkvKiBDbG9z ZSB3cml0ZSBlbmQgKi8KKwkJcGlwZWZkWzFdID0gLTE7CisKKwkJLyogU2V0IHVwIHRpbWVvdXQg Zm9yIHNlbGVjdCAqLworCQl0aW1lb3V0LnR2X3NlYyA9IHBvb2xfY29uZmlnLT5yZXBsaWNhdGlv bl9kZWxheV9zb3VyY2VfdGltZW91dDsKKwkJdGltZW91dC50dl91c2VjID0gMDsKKworCQlGRF9a RVJPKCZyZWFkZmRzKTsKKwkJRkRfU0VUKHBpcGVmZFswXSwgJnJlYWRmZHMpOworCisJCS8qIFdh aXQgZm9yIG91dHB1dCBvciB0aW1lb3V0ICovCisJCXJldCA9IHNlbGVjdChwaXBlZmRbMF0gKyAx LCAmcmVhZGZkcywgTlVMTCwgTlVMTCwgJnRpbWVvdXQpOworCisJCWlmIChyZXQgPT0gLTEpCisJ CXsKKwkJCXNhdmVfZXJybm8gPSBlcnJubzsKKworCQkJa2lsbChwaWQsIFNJR0tJTEwpOworCQkJ d2FpdHBpZChwaWQsIE5VTEwsIDApOworCQkJcGlkID0gLTE7CisJCQljbG9zZShwaXBlZmRbMF0p OworCQkJcGlwZWZkWzBdID0gLTE7CisJCQlpZiAoc2F2ZV9lcnJubyA9PSBFSU5UUikKKwkJCXsK KwkJCQkvKiBJbnRlcnJ1cHRlZCAqLworCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkoZXJybXNn KCJzZWxlY3QgaW50ZXJydXB0ZWQgZHVyaW5nIHJlcGxpY2F0aW9uIGRlbGF5IGNvbW1hbmQgZXhl Y3V0aW9uIikpKTsKKwkJCX0KKwkJCWVsc2UKKwkJCXsKKwkJCQllcmVwb3J0KEVSUk9SLAorCQkJ CQkJKGVycm1zZygic2VsZWN0IGZhaWxlZDogJW0iKSkpOworCQkJfQorCQl9CisJCWVsc2UgaWYg KHJldCA9PSAwKQorCQl7CisJCQkvKiBUaW1lb3V0ICovCisJCQlraWxsKHBpZCwgU0lHS0lMTCk7 CisJCQl3YWl0cGlkKHBpZCwgTlVMTCwgMCk7CisJCQlwaWQgPSAtMTsKKwkJCWNsb3NlKHBpcGVm ZFswXSk7CisJCQlwaXBlZmRbMF0gPSAtMTsKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJt c2coInJlcGxpY2F0aW9uIGRlbGF5IGNvbW1hbmQgdGltZWQgb3V0IGFmdGVyICVkIHNlY29uZHM6 ICVzIiwKKwkJCQkJCQlwb29sX2NvbmZpZy0+cmVwbGljYXRpb25fZGVsYXlfc291cmNlX3RpbWVv dXQsIGNvbW1hbmQpLAorCQkJCQkgZXJyaGludCgiQ29uc2lkZXIgaW5jcmVhc2luZyByZXBsaWNh dGlvbl9kZWxheV9zb3VyY2VfdGltZW91dCBvciBvcHRpbWl6aW5nIHRoZSBjb21tYW5kIikpKTsK KwkJfQorCisJCS8qIERhdGEgaXMgYXZhaWxhYmxlICovCisJCWJ5dGVzX3JlYWQgPSByZWFkKHBp cGVmZFswXSwgbGluZSwgTUFYX0NNRF9PVVRQVVQgLSAxKTsKKwkJY2xvc2UocGlwZWZkWzBdKTsK KwkJcGlwZWZkWzBdID0gLTE7CisKKwkJLyogV2FpdCBmb3IgY2hpbGQgdG8gZmluaXNoICovCisJ CXdhaXRwaWQocGlkLCAmc3RhdHVzLCAwKTsKKwkJcGlkID0gLTE7CisKKwkJaWYgKGJ5dGVzX3Jl YWQgPCAwKQorCQl7CisJCQllcmVwb3J0KEVSUk9SLAorCQkJCQkoZXJybXNnKCJmYWlsZWQgdG8g cmVhZCBvdXRwdXQgZnJvbSByZXBsaWNhdGlvbiBkZWxheSBjb21tYW5kOiAlcyIsIGNvbW1hbmQp LAorCQkJCQkgZXJyZGV0YWlsKCJyZWFkIGZhaWxlZDogJW0iKSkpOworCQl9CisKKwkJLyogQ2hl Y2sgZXhpdCBzdGF0dXMgKi8KKwkJaWYgKFdJRkVYSVRFRChzdGF0dXMpICYmIFdFWElUU1RBVFVT KHN0YXR1cykgIT0gMCkKKwkJeworCQkJZXJlcG9ydChFUlJPUiwKKwkJCQkJKGVycm1zZygicmVw bGljYXRpb24gZGVsYXkgY29tbWFuZCBmYWlsZWQgd2l0aCBleGl0IGNvZGUgJWQ6ICVzIiwKKwkJ CQkJCQlXRVhJVFNUQVRVUyhzdGF0dXMpLCBjb21tYW5kKSkpOworCQl9CisJCWVsc2UgaWYgKFdJ RlNJR05BTEVEKHN0YXR1cykpCisJCXsKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJtc2co InJlcGxpY2F0aW9uIGRlbGF5IGNvbW1hbmQgdGVybWluYXRlZCBieSBzaWduYWwgJWQ6ICVzIiwK KwkJCQkJCQlXVEVSTVNJRyhzdGF0dXMpLCBjb21tYW5kKSkpOworCQl9CisKKwkJLyogQ2hlY2sg aWYgb3V0cHV0IHdhcyB0cnVuY2F0ZWQgKi8KKwkJaWYgKGJ5dGVzX3JlYWQgPT0gTUFYX0NNRF9P VVRQVVQgLSAxICYmIGxpbmVbTUFYX0NNRF9PVVRQVVQgLSAyXSAhPSAnXG4nKQorCQl7CisJCQll cmVwb3J0KFdBUk5JTkcsCisJCQkJCShlcnJtc2coInJlcGxpY2F0aW9uIGRlbGF5IGNvbW1hbmQg b3V0cHV0IG1heSBoYXZlIGJlZW4gdHJ1bmNhdGVkIikpKTsKKwkJfQorCisJCS8qIE51bGwtdGVy bWluYXRlIHRoZSBzdHJpbmcgKi8KKwkJbGluZVtieXRlc19yZWFkXSA9ICdcMCc7CisKKwkJcGZy ZWUoY29tbWFuZCk7CisJCWNvbW1hbmQgPSBOVUxMOworCisJCS8qIFNldCBwcmltYXJ5IG5vZGUg ZGVsYXkgdG8gMCAqLworCQlia2luZm8gPSBwb29sX2dldF9ub2RlX2luZm8ocHJpbWFyeV9ub2Rl X2lkKTsKKwkJYmtpbmZvLT5zdGFuZGJ5X2RlbGF5ID0gMDsKKwkJYmtpbmZvLT5zdGFuZGJ5X2Rl bGF5X2J5X3RpbWUgPSB0cnVlOworCisJCS8qIENvdW50IGV4cGVjdGVkIHJlcGxpY2FzICovCisJ CW51bV9yZXBsaWNhcyA9IE5VTV9CQUNLRU5EUyAtIDE7CS8qIFRvdGFsIG5vZGVzIG1pbnVzIHBy aW1hcnkgKi8KKworCQkvKiBDb3VudCB0b2tlbnMgaW4gb3V0cHV0IGZvciB2YWxpZGF0aW9uICov CisJCWxpbmVfY29weSA9IHBzdHJkdXAobGluZSk7CisJCXRlbXBfdG9rZW4gPSBzdHJ0b2sobGlu ZV9jb3B5LCAiIFx0XG4iKTsKKworCQl3aGlsZSAodGVtcF90b2tlbiAhPSBOVUxMKQorCQl7CisJ CQl0b2tlbl9jb3VudCsrOworCQkJdGVtcF90b2tlbiA9IHN0cnRvayhOVUxMLCAiIFx0XG4iKTsK KwkJfQorCQlwZnJlZShsaW5lX2NvcHkpOworCisJCS8qIFZhbGlkYXRlIG91dHB1dCBmb3JtYXQg Ki8KKwkJaWYgKHRva2VuX2NvdW50ID09IDApCisJCXsKKwkJCWVyZXBvcnQoV0FSTklORywKKwkJ CQkJKGVycm1zZygicmVwbGljYXRpb24gZGVsYXkgY29tbWFuZCBwcm9kdWNlZCBubyBvdXRwdXQi KSwKKwkJCQkJIGVycmhpbnQoIkNvbW1hbmQgc2hvdWxkIG91dHB1dCBkZWxheSB2YWx1ZXMgc2Vw YXJhdGVkIGJ5IHNwYWNlcywgb25lIHBlciByZXBsaWNhIG5vZGUiKSkpOworCQl9CisJCWVsc2Ug aWYgKHRva2VuX2NvdW50IDwgbnVtX3JlcGxpY2FzKQorCQl7CisJCQllcmVwb3J0KFdBUk5JTkcs CisJCQkJCShlcnJtc2coInJlcGxpY2F0aW9uIGRlbGF5IGNvbW1hbmQgcmV0dXJuZWQgJWQgdmFs dWVzLCBleHBlY3RlZCAlZCAob25lIHBlciByZXBsaWNhLCBleGNsdWRpbmcgcHJpbWFyeSkiLAor CQkJCQkJCXRva2VuX2NvdW50LCBudW1fcmVwbGljYXMpLAorCQkJCQkgZXJyaGludCgiQ29tbWFu ZCBzaG91bGQgb3V0cHV0IG9uZSBkZWxheSB2YWx1ZSBwZXIgcmVwbGljYSBub2RlLiBNaXNzaW5n IHZhbHVlcyB3aWxsIGJlIHRyZWF0ZWQgYXMgMC4iKSkpOworCQl9CisJCWVsc2UgaWYgKHRva2Vu X2NvdW50ID4gbnVtX3JlcGxpY2FzKQorCQl7CisJCQllcmVwb3J0KFdBUk5JTkcsCisJCQkJCShl cnJtc2coInJlcGxpY2F0aW9uIGRlbGF5IGNvbW1hbmQgcmV0dXJuZWQgJWQgdmFsdWVzLCBleHBl Y3RlZCAlZCAob25lIHBlciByZXBsaWNhLCBleGNsdWRpbmcgcHJpbWFyeSkiLAorCQkJCQkJCXRv a2VuX2NvdW50LCBudW1fcmVwbGljYXMpLAorCQkJCQkgZXJyaGludCgiQ29tbWFuZCBzaG91bGQg b3V0cHV0IGV4YWN0bHkgb25lIGRlbGF5IHZhbHVlIHBlciByZXBsaWNhIG5vZGUuIEV4dHJhIHZh bHVlcyB3aWxsIGJlIGlnbm9yZWQuIikpKTsKKwkJfQorCisJCS8qIFBhcnNlIHRoZSBvdXRwdXQg LSBvbmUgZGVsYXkgdmFsdWUgcGVyIHJlcGxpY2EgaW4gb3JkZXIgKi8KKwkJdG9rZW4gPSBzdHJ0 b2tfcihsaW5lLCAiIFx0XG4iLCAmc2F2ZXB0cik7CisKKwkJZm9yIChpID0gMDsgaSA8IE5VTV9C QUNLRU5EUyAmJiB0b2tlbiAhPSBOVUxMOyBpKyspCisJCXsKKwkJCWlmIChpID09IHByaW1hcnlf bm9kZV9pZCkKKwkJCQljb250aW51ZTsJCS8qIFNraXAgcHJpbWFyeSAtIGl0J3Mgbm90IGluIHRo ZSBvdXRwdXQgKi8KKworCQkJaWYgKCFWQUxJRF9CQUNLRU5EKGkpKQorCQkJeworCQkJCS8qIFNr aXAgaW52YWxpZCBiYWNrZW5kIGJ1dCBjb25zdW1lIHRva2VuICovCisJCQkJdG9rZW4gPSBzdHJ0 b2tfcihOVUxMLCAiIFx0XG4iLCAmc2F2ZXB0cik7CisJCQkJY29udGludWU7CisJCQl9CisKKwkJ CWRlbGF5X21zID0gc3RydG9kKHRva2VuLCAmZW5kcHRyKTsKKworCQkJLyogVmFsaWRhdGUgdGhl IGNvbnZlcnNpb24gKi8KKwkJCWlmICgqZW5kcHRyICE9ICdcMCcpCisJCQl7CisJCQkJZXJlcG9y dChXQVJOSU5HLAorCQkJCQkJKGVycm1zZygiaW52YWxpZCBkZWxheSB2YWx1ZSAnJXMnIGZvciBu b2RlICVkLCB0cmVhdGluZyBhcyAwIiwKKwkJCQkJCQkJdG9rZW4sIGkpKSk7CisJCQkJZGVsYXlf bXMgPSAwOworCQkJfQorCisJCQlia2luZm8gPSBwb29sX2dldF9ub2RlX2luZm8oaSk7CisKKwkJ CS8qIEhhbmRsZSAtMSBmb3IgZG93biBub2RlcyAqLworCQkJaWYgKGRlbGF5X21zID09IC0xLjAp CisJCQl7CisJCQkJZXJlcG9ydChMT0csCisJCQkJCQkoZXJybXNnKCJub2RlICVkIHJlcG9ydGVk IGFzIGRvd24gYnkgZXh0ZXJuYWwgY29tbWFuZCAoZGVsYXkgLTEpLCByZWx5aW5nIG9uIGhlYWx0 aCBjaGVjayBmb3IgZmFpbG92ZXIgZGVjaXNpb24iLAorCQkJCQkJCQlpKSkpOworCQkJCS8qIEtl ZXAgcHJldmlvdXMgZGVsYXkgdmFsdWUsIGRvbid0IHRyaWdnZXIgZmFpbG92ZXIgKi8KKwkJCQl0 b2tlbiA9IHN0cnRva19yKE5VTEwsICIgXHRcbiIsICZzYXZlcHRyKTsKKwkJCQljb250aW51ZTsK KwkJCX0KKworCQkJLyogVmFsaWRhdGUgZGVsYXkgdmFsdWUgcmFuZ2UgKi8KKwkJCWlmIChkZWxh eV9tcyA8IDApCisJCQl7CisJCQkJZXJlcG9ydChXQVJOSU5HLAorCQkJCQkJKGVycm1zZygibmVn YXRpdmUgZGVsYXkgdmFsdWUgJS4zZiBmb3Igbm9kZSAlZCAob3RoZXIgdGhhbiAtMSksIHRyZWF0 aW5nIGFzIDAiLAorCQkJCQkJCQlkZWxheV9tcywgaSkpKTsKKwkJCQlkZWxheV9tcyA9IDA7CisJ CQl9CisJCQllbHNlIGlmIChkZWxheV9tcyA+IE1BWF9SRUFTT05BQkxFX0RFTEFZX01TKQorCQkJ eworCQkJCWVyZXBvcnQoV0FSTklORywKKwkJCQkJCShlcnJtc2coImV4dHJlbWVseSBsYXJnZSBk ZWxheSB2YWx1ZSAlLjNmIGZvciBub2RlICVkIiwKKwkJCQkJCQkJZGVsYXlfbXMsIGkpKSk7CisJ CQl9CisKKwkJCS8qCisJCQkgKiBDb252ZXJ0IGRlbGF5IGZyb20gbWlsbGlzZWNvbmRzIHRvIG1p Y3Jvc2Vjb25kcyBmb3IgaW50ZXJuYWwKKwkJCSAqIHN0b3JhZ2UKKwkJCSAqLworCQkJZGVsYXkg PSAodWludDY0KSAoZGVsYXlfbXMgKiAxMDAwKTsKKwkJCWJraW5mby0+c3RhbmRieV9kZWxheSA9 IGRlbGF5OworCQkJYmtpbmZvLT5zdGFuZGJ5X2RlbGF5X2J5X3RpbWUgPSB0cnVlOworCisJCQkv KiBMb2cgZGVsYXkgaWYgbmVjZXNzYXJ5ICovCisJCQlkZWxheV90aHJlc2hvbGRfYnlfdGltZSA9 IHBvb2xfY29uZmlnLT5kZWxheV90aHJlc2hvbGRfYnlfdGltZSAqIDEwMDA7CS8qIHRocmVzaG9s ZCBpcyBpbgorCQkJCQkJCQkJCQkJCQkJCQkJCQkJICogbWlsbGlzZWNvbmRzLCBjb252ZXJ0CisJ CQkJCQkJCQkJCQkJCQkJCQkJCQkgKiB0byBtaWNyb3NlY29uZHMgKi8KKworCQkJaWYgKChwb29s X2NvbmZpZy0+bG9nX3N0YW5kYnlfZGVsYXkgPT0gTFNEX0FMV0FZUyAmJiBkZWxheV9tcyA+IDAp IHx8CisJCQkJKHBvb2xfY29uZmlnLT5sb2dfc3RhbmRieV9kZWxheSA9PSBMU0RfT1ZFUl9USFJF U0hPTEQgJiYKKwkJCQkgYmtpbmZvLT5zdGFuZGJ5X2RlbGF5ID4gZGVsYXlfdGhyZXNob2xkX2J5 X3RpbWUpKQorCQkJeworCQkJCWVyZXBvcnQoTE9HLAorCQkJCQkJKGVycm1zZygiUmVwbGljYXRp b24gb2Ygbm9kZTogJWQgaXMgYmVoaW5kICUuM2Ygc2Vjb25kKHMpIGZyb20gdGhlIHByaW1hcnkg c2VydmVyIChub2RlOiAlZCkgW2V4dGVybmFsIGNvbW1hbmRdIiwKKwkJCQkJCQkJaSwgZGVsYXlf bXMgLyAxMDAwLCBwcmltYXJ5X25vZGVfaWQpKSk7CisJCQl9CisKKwkJCXRva2VuID0gc3RydG9r X3IoTlVMTCwgIiBcdFxuIiwgJnNhdmVwdHIpOworCQl9CisKKwl9CisJUEdfQ0FUQ0goKTsKKwl7 CisJCS8qIENsZWFudXAgaW4gY2FzZSBvZiBlcnJvciAqLworCQlpZiAocGlkID4gMCkKKwkJewor CQkJa2lsbChwaWQsIFNJR0tJTEwpOworCQkJd2FpdHBpZChwaWQsIE5VTEwsIDApOworCQl9CisJ CWlmIChwaXBlZmRbMF0gIT0gLTEpCisJCQljbG9zZShwaXBlZmRbMF0pOworCQlpZiAocGlwZWZk WzFdICE9IC0xKQorCQkJY2xvc2UocGlwZWZkWzFdKTsKKworCQlpZiAobGluZSkKKwkJCXBmcmVl KGxpbmUpOworCQlpZiAoY29tbWFuZCkKKwkJCXBmcmVlKGNvbW1hbmQpOworCQllcnJvcl9jb250 ZXh0X3N0YWNrID0gY2FsbGJhY2sucHJldmlvdXM7CisJCVBHX1JFX1RIUk9XKCk7CisJfQorCVBH X0VORF9UUlkoKTsKKworCS8qIE5vcm1hbCBjbGVhbnVwICovCisJaWYgKGxpbmUpCisJCXBmcmVl KGxpbmUpOworCisJZXJyb3JfY29udGV4dF9zdGFjayA9IGNhbGxiYWNrLnByZXZpb3VzOworfQor CisvKgorICogYnVpbGRfaW5zdGFuY2VfaWRlbnRpZmllcl9mb3Jfbm9kZQorICogIEJ1aWxkIGFu IGlkZW50aWZpZXIgc3RyaW5nIGZvciBhIGJhY2tlbmQgbm9kZSBmb3IgcGFzc2luZyB0byBleHRl cm5hbCBjb21tYW5kcy4KKyAqICBGb3JtYXQ6ICI8aG9zdG5hbWU+Ojxwb3J0PiIKKyAqLworc3Rh dGljIGNoYXIgKgorYnVpbGRfaW5zdGFuY2VfaWRlbnRpZmllcl9mb3Jfbm9kZShpbnQgbm9kZV9p ZCkKK3sKKwlCYWNrZW5kSW5mbyAqYmkgPSBwb29sX2dldF9ub2RlX2luZm8obm9kZV9pZCk7CisJ Y29uc3QgY2hhciAqaG9zdG5hbWU7CisKKwlpZiAoIWJpIHx8IGJpLT5iYWNrZW5kX2hvc3RuYW1l WzBdID09ICdcMCcgfHwgYmktPmJhY2tlbmRfcG9ydCA8PSAwKQorCXsKKwkJLyogRmFsbGJhY2sg aWYgaG9zdG5hbWUgb3IgcG9ydCBpcyBub3Qgc2V0ICovCisJCXJldHVybiBwc3ByaW50ZigidW5r bm93bl9ub2RlXyVkIiwgbm9kZV9pZCk7CisJfQorCisJaG9zdG5hbWUgPSBiaS0+YmFja2VuZF9o b3N0bmFtZTsKKworCS8qIFZhbGlkYXRlIGhvc3RuYW1lIGZvciBzZWN1cml0eSAtIGNoZWNrIGZv ciBzaGVsbCBtZXRhY2hhcmFjdGVycyAqLworCWlmIChzdHJwYnJrKGhvc3RuYW1lLCAiJGBcXHw7 Jjw+KClbXXt9XCJcJ1xuXHJcdCIpICE9IE5VTEwpCisJeworCQllcmVwb3J0KExPRywKKwkJCQko ZXJybXNnKCJob3N0bmFtZSBmb3Igbm9kZSAlZCBjb250YWlucyBwb3RlbnRpYWxseSBkYW5nZXJv dXMgY2hhcmFjdGVyczogJXMiLAorCQkJCQkJbm9kZV9pZCwgaG9zdG5hbWUpLAorCQkJCSBlcnJo aW50KCJIb3N0bmFtZXMgd2l0aCBzaGVsbCBtZXRhY2hhcmFjdGVycyBtYXkgcG9zZSBzZWN1cml0 eSByaXNrcyB3aGVuIHVzZWQgd2l0aCBleHRlcm5hbCBjb21tYW5kcy4gQ29uc2lkZXIgdXNpbmcg SVAgYWRkcmVzc2VzIG9yIHNhbml0aXplZCBob3N0bmFtZXMuIikpKTsKKwl9CisKKwkvKiBVc2Ug aG9zdG5hbWU6cG9ydCBmb3JtYXQgKi8KKwlyZXR1cm4gcHNwcmludGYoIiVzOiVkIiwgaG9zdG5h bWUsIGJpLT5iYWNrZW5kX3BvcnQpOworfQorCiBzdGF0aWMgdm9pZAogQ2hlY2tSZXBsaWNhdGlv blRpbWVMYWdFcnJvckNiKHZvaWQgKmFyZykKIHsKQEAgLTcxNSw2ICsxMTY3LDkgQEAgc3RhdGlj IFJFVFNJR1RZUEUgbXlfc2lnbmFsX2hhbmRsZXIoaW50IHNpZykKIAkJCXJlc3RhcnRfcmVxdWVz dCA9IDE7CiAJCQlicmVhazsKIAorCQljYXNlIFNJR0NITEQ6CisJCQlicmVhazsKKwogCQlkZWZh dWx0OgogCQkJZXhpdCgxKTsKIAkJCWJyZWFrOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVz c2lvbi90ZXN0cy8wNDEuZXh0ZXJuYWxfcmVwbGljYXRpb25fZGVsYXkvUkVBRE1FIGIvc3JjL3Rl c3QvcmVncmVzc2lvbi90ZXN0cy8wNDEuZXh0ZXJuYWxfcmVwbGljYXRpb25fZGVsYXkvUkVBRE1F Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAuLmI0ZGY1ZGE0MDJiNTU3MTkwYzhmNmEyYmM3ODIyOTQ0Y2M1YjA0Y2MKLS0t IC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzaW9uL3Rlc3RzLzA0MS5leHRlcm5hbF9y ZXBsaWNhdGlvbl9kZWxheS9SRUFETUUKQEAgLTAsMCArMSw1OSBAQAorRXh0ZXJuYWwgUmVwbGlj YXRpb24gRGVsYXkgQ29tbWFuZCBUZXN0Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09CisKK1RoaXMgdGVzdCB2ZXJpZmllcyB0aGUgZXh0ZXJuYWwgY29tbWFuZCByZXBs aWNhdGlvbiBkZWxheSBzb3VyY2UgZmVhdHVyZS4KKworVGVzdCBDb3ZlcmFnZToKKy0gRXh0ZXJu YWwgY29tbWFuZCByZWNlaXZlcyByZXBsaWNhIG5vZGUgaWRlbnRpZmllcnMgb25seSAocHJpbWFy eSBvbWl0dGVkKQorLSBJbnN0YW5jZSBpZGVudGlmaWVycyBpbiBob3N0OnBvcnQgZm9ybWF0Cist IEJhc2ljIGV4dGVybmFsIGNvbW1hbmQgZXhlY3V0aW9uIHdpdGggaW50ZWdlciBhbmQgZmxvYXQg bWlsbGlzZWNvbmQgdmFsdWVzCistIERlbGF5IHRocmVzaG9sZCBmdW5jdGlvbmFsaXR5IHdpdGgg ZXh0ZXJuYWwgY29tbWFuZHMKKy0gQ29tbWFuZCBleGVjdXRpb24gYXMgcGdwb29sIHByb2Nlc3Mg dXNlciAobm8gc3Ugd3JhcHBlcikKKy0gRXJyb3IgaGFuZGxpbmcgZm9yIG1pc3NpbmcvaW52YWxp ZCBjb21tYW5kcworLSBDb21tYW5kIGV4ZWN1dGlvbiBmYWlsdXJlIHNjZW5hcmlvcworLSBDb21t YW5kIHRpbWVvdXQgaGFuZGxpbmcgd2l0aCBjb25maWd1cmFibGUgdGltZW91dCB2YWx1ZXMKKy0g SW5wdXQgdmFsaWRhdGlvbiBmb3IgaW52YWxpZCwgbmVnYXRpdmUgKG90aGVyIHRoYW4gLTEpLCBh bmQgZXh0cmVtZWx5IGxhcmdlIGRlbGF5IHZhbHVlcworLSBIYW5kbGluZyBvZiAtMSBmb3IgZG93 biBub2RlcyAobG9nZ2VkIGJ1dCBubyBpbW1lZGlhdGUgZmFpbG92ZXIpCistIFdyb25nIG51bWJl ciBvZiBvdXRwdXQgdmFsdWVzIHZhbGlkYXRpb24KKy0gTXVsdGlwbGUgLTEgdmFsdWVzIChtdWx0 aXBsZSBkb3duIHJlcGxpY2FzKQorLSBNaXhlZCBzY2VuYXJpb3MgKHNvbWUgcmVwbGljYXMgdXAs IHNvbWUgZG93bikKKy0gT3V0cHV0IHRydW5jYXRpb24gZGV0ZWN0aW9uCisKK0ZpbGVzOgorLSB0 ZXN0LnNoOiBNYWluIHRlc3Qgc2NyaXB0CistIHRlc3RfcGFyc2luZy5zaDogVW5pdCB0ZXN0IGZv ciBwYXJzaW5nIGxvZ2ljCistIHRlc3RfdmFsaWRhdGlvbi5zaDogVmFsaWRhdGlvbiBhbmQgZWRn ZSBjYXNlIHRlc3RpbmcKKy0gUkVBRE1FOiBUaGlzIGRvY3VtZW50YXRpb24KKworS2V5IENoYW5n ZXMgZnJvbSBPcmlnaW5hbCBWZXJzaW9uOgorLSBQcmltYXJ5IG5vZGUgaXMgb21pdHRlZCBmcm9t IGNvbW1hbmQgYXJndW1lbnRzCistIENvbW1hbmQgcmVjZWl2ZXMgb25seSByZXBsaWNhIGlkZW50 aWZpZXJzCistIEluc3RhbmNlIGlkZW50aWZpZXJzIGFyZSBpbiBob3N0OnBvcnQgZm9ybWF0IChu b3QgYXBwbGljYXRpb25fbmFtZSkKKy0gT3V0cHV0IGZvcm1hdDogb25lIGRlbGF5IHBlciByZXBs aWNhIChub3QgcGVyIGFsbCBub2RlcykKKy0gLTEgdmFsdWUgaW5kaWNhdGVzIGRvd24gcmVwbGlj YSB3aXRob3V0IHRyaWdnZXJpbmcgZmFpbG92ZXIKKy0gRm9ybWF0IGV4YW1wbGU6ICIyNSAxMDAi IGZvciAyIHJlcGxpY2FzICgzLW5vZGUgY2x1c3RlciA9IDEgcHJpbWFyeSArIDIgcmVwbGljYXMp CisKK1RoZSB0ZXN0IGNyZWF0ZXMgdGVtcG9yYXJ5IGNvbW1hbmQgc2NyaXB0cyB0aGF0IG91dHB1 dCBkZWxheSB2YWx1ZXMgaW4gdGhlIGZvcm1hdDoKKyJyZXBsaWNhMV9kZWxheSByZXBsaWNhMl9k ZWxheSAuLi4iCisKK1doZXJlIGRlbGF5cyBhcmUgaW4gbWlsbGlzZWNvbmRzIGFuZCBjYW4gYmUg aW50ZWdlciBvciBmbG9hdGluZy1wb2ludCB2YWx1ZXMuCitTcGVjaWFsIHZhbHVlIC0xIGluZGlj YXRlcyBhIHJlcGxpY2EgdGhhdCBpcyBkb3duIGJ1dCBub3QgeWV0IGRldGVjdGVkIGJ5IHBncG9v bC4KKworVGVzdCBFbnZpcm9ubWVudDoKKy0gVXNlcyBzdHJlYW1pbmcgcmVwbGljYXRpb24gbW9k ZSB3aXRoIDMgbm9kZXMKKy0gTm9kZSAwIGlzIHByaW1hcnkgKG9taXR0ZWQgZnJvbSBjb21tYW5k IGFyZ3VtZW50cykKKy0gTm9kZXMgMSBhbmQgMiBhcmUgcmVwbGljYXMgKGluY2x1ZGVkIGluIGNv bW1hbmQgYXJndW1lbnRzKQorLSBDb25maWd1cmVzIHNyX2NoZWNrX3BlcmlvZCA9IDEgc2Vjb25k IGZvciBmYXN0ZXIgdGVzdGluZworLSBUZXN0cyB2YXJpb3VzIGRlbGF5IHNjZW5hcmlvcyBhbmQg dGhyZXNob2xkIGJlaGF2aW9ycworCitFeHBlY3RlZCBCZWhhdmlvcjoKKy0gRXh0ZXJuYWwgY29t bWFuZHMgcmVjZWl2ZSByZXBsaWNhIGlkZW50aWZpZXJzIGluIGhvc3Q6cG9ydCBmb3JtYXQKKy0g UHJpbWFyeSBub2RlIGlkZW50aWZpZXIgaXMgbmV2ZXIgcGFzc2VkIHRvIGNvbW1hbmQKKy0gQ29t bWFuZCBvdXRwdXRzIG9uZSBkZWxheSB2YWx1ZSBwZXIgcmVwbGljYQorLSAtMSB2YWx1ZXMgYXJl IGxvZ2dlZCBidXQgZG9uJ3QgdHJpZ2dlciBpbW1lZGlhdGUgZmFpbG92ZXIKKy0gRGVsYXkgdmFs dWVzIGFyZSBwYXJzZWQgY29ycmVjdGx5IChib3RoIGludCBhbmQgZmxvYXQpCistIFRocmVzaG9s ZCBjb21wYXJpc29ucyB3b3JrIHByb3Blcmx5CistIEVycm9yIGNvbmRpdGlvbnMgYXJlIGhhbmRs ZWQgZ3JhY2VmdWxseQorLSBDb21tYW5kcyB0aW1lb3V0IGFwcHJvcHJpYXRlbHkgYmFzZWQgb24g Y29uZmlndXJhdGlvbgorLSBUaW1lb3V0IGVycm9ycyBwcm92aWRlIGhlbHBmdWwgbWVzc2FnZXMg YW5kIGhpbnRzCistIFRlc3RzIGFyZSByZWxpYWJsZSB3aXRoIHByb3BlciB3YWl0IG1lY2hhbmlz bXMgaW5zdGVhZCBvZiBmaXhlZCBzbGVlcHMKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Np b24vdGVzdHMvMDQxLmV4dGVybmFsX3JlcGxpY2F0aW9uX2RlbGF5L3Rlc3Quc2ggYi9zcmMvdGVz dC9yZWdyZXNzaW9uL3Rlc3RzLzA0MS5leHRlcm5hbF9yZXBsaWNhdGlvbl9kZWxheS90ZXN0LnNo Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAuLmRlNzA0ZTU1MzMxMjQ3ODkzZjRiMmUyNmZiNjc5Nzc4NzVmMWJhNDIKLS0t IC9kZXYvbnVsbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzaW9uL3Rlc3RzLzA0MS5leHRlcm5hbF9y ZXBsaWNhdGlvbl9kZWxheS90ZXN0LnNoCkBAIC0wLDAgKzEsNDA5IEBACisjIS91c3IvYmluL2Vu diBiYXNoCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIyB0ZXN0IHNjcmlwdCBmb3IgZXh0ZXJuYWwgY29tbWFuZCBy ZXBsaWNhdGlvbiBkZWxheSBzb3VyY2UKKyMKK3NvdXJjZSAkVEVTVExJQlMKK1RFU1RESVI9dGVz dGRpcgorUEdfQ1RMPSRQR0JJTi9wZ19jdGwKK1BTUUw9IiRQR0JJTi9wc3FsIC1YICIKKworcm0g LWZyICRURVNURElSCitta2RpciAkVEVTVERJUgorY2QgJFRFU1RESVIKKworIyBjcmVhdGUgdGVz dCBlbnZpcm9ubWVudAorZWNobyAtbiAiY3JlYXRpbmcgdGVzdCBlbnZpcm9ubWVudC4uLiIKKyRQ R1BPT0xfU0VUVVAgLW0gcyAtbiAzIHx8IGV4aXQgMQorZWNobyAiZG9uZS4iCitzb3VyY2UgLi9i YXNocmMucG9ydHMKK2V4cG9ydCBQR1BPUlQ9JFBHUE9PTF9QT1JUCisKKyMgQ3JlYXRlIGV4dGVy bmFsIGNvbW1hbmQgc2NyaXB0cyBmb3IgdGVzdGluZworIyBOT1RFOiBDb21tYW5kcyBub3cgb25s eSBvdXRwdXQgZGVsYXkgdmFsdWVzIGZvciBSRVBMSUNBUyAobm90IHByaW1hcnkpCitjYXQgPiBk ZWxheV9jbWRfc3RhdGljLnNoIDw8ICdFT0YnCisjIS9iaW4vYmFzaAorIyBTdGF0aWMgZGVsYXkg dmFsdWVzIGZvciByZXBsaWNhczogbm9kZTE9MjVtcywgbm9kZTI9NTBtcyAobm9kZTAgaXMgcHJp bWFyeSwgbm90IGluY2x1ZGVkKQorZWNobyAiMjUgNTAiCitFT0YKK2NobW9kICt4IGRlbGF5X2Nt ZF9zdGF0aWMuc2gKKworY2F0ID4gZGVsYXlfY21kX2Zsb2F0LnNoIDw8ICdFT0YnCisjIS9iaW4v YmFzaAorIyBGbG9hdCBkZWxheSB2YWx1ZXMgZm9yIHJlcGxpY2FzOiBub2RlMT0yNS41bXMsIG5v ZGUyPTEwMC43NW1zCitlY2hvICIyNS41IDEwMC43NSIKK0VPRgorY2htb2QgK3ggZGVsYXlfY21k X2Zsb2F0LnNoCisKK2NhdCA+IGRlbGF5X2NtZF9oaWdoLnNoIDw8ICdFT0YnCisjIS9iaW4vYmFz aAorIyBIaWdoIGRlbGF5IHZhbHVlcyB0byB0ZXN0IHRocmVzaG9sZDogbm9kZTE9MjAwMG1zLCBu b2RlMj0zMDAwbXMKK2VjaG8gIjIwMDAgMzAwMCIKK0VPRgorY2htb2QgK3ggZGVsYXlfY21kX2hp Z2guc2gKKworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitlY2hvICI9PT0gVGVz dDA6IEV4dGVybmFsIGNvbW1hbmQgcmVjZWl2ZXMgcmVwbGljYSBpZGVudGlmaWVycyBvbmx5IChw cmltYXJ5IG9taXR0ZWQpID09PSIKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQor IyBDb21tYW5kIHRoYXQgY2FwdHVyZXMgaXRzIGFyZ3VtZW50cyBhbmQgb3V0cHV0cyB2YWxpZCBk ZWxheXMgZm9yIDIgcmVwbGljYXMKK2NhdCA+IGRlbGF5X2NtZF9hcmdzLnNoIDw8ICdFT0YnCisj IS9iaW4vYmFzaAorcHJpbnRmICIlcyAiICIkQCIgPiBhcmdzLnR4dAorZWNobyAiMjUgNTAiCitF T0YKK2NobW9kICt4IGRlbGF5X2NtZF9hcmdzLnNoCisKK2VjaG8gInJlcGxpY2F0aW9uX2RlbGF5 X3NvdXJjZV9jbWQgPSAnLi9kZWxheV9jbWRfYXJncy5zaCciID4+IGV0Yy9wZ3Bvb2wuY29uZgor ZWNobyAic3JfY2hlY2tfcGVyaW9kID0gMSIgPj4gZXRjL3BncG9vbC5jb25mCitlY2hvICJsb2df bWluX21lc3NhZ2VzID0gJ0RFQlVHMSciID4+IGV0Yy9wZ3Bvb2wuY29uZgorIyBSZWR1Y2UgbWVt b3J5IHJlcXVpcmVtZW50cyBmb3IgbWFjT1Mgc2hhcmVkIG1lbW9yeSBsaW1pdHMKK2VjaG8gIm51 bV9pbml0X2NoaWxkcmVuID0gNCIgPj4gZXRjL3BncG9vbC5jb25mCitlY2hvICJtYXhfcG9vbCA9 IDIiID4+IGV0Yy9wZ3Bvb2wuY29uZgorIyBEaXNhYmxlIHF1ZXJ5IGNhY2hpbmcgdG8gYXZvaWQg c2hhcmVkIG1lbW9yeSBpc3N1ZXMgb24gbWFjT1MKK2VjaG8gIm1lbW9yeV9jYWNoZV9lbmFibGVk ID0gb2ZmIiA+PiBldGMvcGdwb29sLmNvbmYKKworLi9zdGFydGFsbAord2FpdF9mb3JfcGdwb29s X3N0YXJ0dXAKKworZWNobyAiV2FpdGluZyBmb3Igc3JfY2hlY2sgdG8gcGFzcyBhcmdzLi4uIgor Zm9yIGkgaW4gezEuLjEwfTsgZG8KKyAgICBpZiBbIC1mIGFyZ3MudHh0IF07IHRoZW4KKyAgICAg ICAgYnJlYWsKKyAgICBmaQorICAgIHNsZWVwIDEKK2RvbmUKKworaWYgWyAhIC1mIGFyZ3MudHh0 IF07IHRoZW4KKyAgICBlY2hvIGZhaWw6IGRpZCBub3QgY2FwdHVyZSBjb21tYW5kIGFyZ3VtZW50 cworICAgIC4vc2h1dGRvd25hbGwKKyAgICBleGl0IDEKK2ZpCisKK0FSR1NfQ09OVEVOVD0kKGNh dCBhcmdzLnR4dCB8IHNlZCAncy9bWzpzcGFjZTpdXSokLy8nKQorIyBTaG91bGQgcmVjZWl2ZSAy IHJlcGxpY2EgaWRlbnRpZmllcnMgaW4gaG9zdDpwb3J0IGZvcm1hdCAobG9jYWxob3N0OjExMDAz IGxvY2FsaG9zdDoxMTAwNCBvciBzZXJ2ZXIxOjExMDAzIHNlcnZlcjI6MTEwMDQpCisjIFByaW1h cnkgKGxvY2FsaG9zdDoxMTAwMiBvciBzZXJ2ZXIwOjExMDAyKSBzaG91bGQgYmUgb21pdHRlZAor aWYgISBlY2hvICIkQVJHU19DT05URU5UIiB8IGdyZXAgLXFFICIoc2VydmVyMXxsb2NhbGhvc3Qp OjExMDAzIjsgdGhlbgorICAgIGVjaG8gImZhaWw6IGV4cGVjdGVkIHJlcGxpY2ExOjExMDAzIGlu IGFyZ3VtZW50cywgZ290OiAnJEFSR1NfQ09OVEVOVCciCisgICAgLi9zaHV0ZG93bmFsbAorICAg IGV4aXQgMQorZmkKK2lmICEgZWNobyAiJEFSR1NfQ09OVEVOVCIgfCBncmVwIC1xRSAiKHNlcnZl cjJ8bG9jYWxob3N0KToxMTAwNCI7IHRoZW4KKyAgICBlY2hvICJmYWlsOiBleHBlY3RlZCByZXBs aWNhMjoxMTAwNCBpbiBhcmd1bWVudHMsIGdvdDogJyRBUkdTX0NPTlRFTlQnIgorICAgIC4vc2h1 dGRvd25hbGwKKyAgICBleGl0IDEKK2ZpCitpZiBlY2hvICIkQVJHU19DT05URU5UIiB8IGdyZXAg LXFFICIoc2VydmVyMHxsb2NhbGhvc3QpOjExMDAyIjsgdGhlbgorICAgIGVjaG8gImZhaWw6IHBy aW1hcnkgc2hvdWxkIG5vdCBiZSBpbiBhcmd1bWVudHMsIGdvdDogJyRBUkdTX0NPTlRFTlQnIgor ICAgIC4vc2h1dGRvd25hbGwKKyAgICBleGl0IDEKK2ZpCisKK2VjaG8gb2s6IGFyZ3VtZW50IG9y ZGVyIGNvcnJlY3QgLSByZXBsaWNhcyBvbmx5LCBwcmltYXJ5IG9taXR0ZWQsIGhvc3Q6cG9ydCBm b3JtYXQKKy4vc2h1dGRvd25hbGwKKworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CitlY2hvICI9PT0gVGVzdDE6IEJhc2ljIGV4dGVybmFsIGNvbW1hbmQgd2l0aCBpbnRlZ2VyIG1p bGxpc2Vjb25kIHZhbHVlcyA9PT0iCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K K2VjaG8gInJlcGxpY2F0aW9uX2RlbGF5X3NvdXJjZV9jbWQgPSAnLi9kZWxheV9jbWRfc3RhdGlj LnNoJyIgPj4gZXRjL3BncG9vbC5jb25mCitlY2hvICJzcl9jaGVja19wZXJpb2QgPSAxIiA+PiBl dGMvcGdwb29sLmNvbmYKK2VjaG8gImxvZ19zdGFuZGJ5X2RlbGF5ID0gJ2Fsd2F5cyciID4+IGV0 Yy9wZ3Bvb2wuY29uZgorZWNobyAibG9nX21pbl9tZXNzYWdlcyA9ICdERUJVRzEnIiA+PiBldGMv cGdwb29sLmNvbmYKKworLi9zdGFydGFsbAord2FpdF9mb3JfcGdwb29sX3N0YXJ0dXAKKworJFBT UUwgdGVzdCA8PEVPRgorQ1JFQVRFIFRBQkxFIHQxKGkgSU5URUdFUik7CitFT0YKKworIyBXYWl0 IGZvciBzcl9jaGVjayB0byBydW4gYW5kIHBvcHVsYXRlIGRlbGF5IHZhbHVlcworIyBzcl9jaGVj a19wZXJpb2QgaXMgMSBzZWNvbmQsIHNvIHdhaXQgYSBiaXQgbG9uZ2VyIHRvIGVuc3VyZSBpdCBy dW5zCitlY2hvICJXYWl0aW5nIGZvciBzcl9jaGVjayB0byBydW4uLi4iCitmb3IgaSBpbiB7MS4u MTB9OyBkbworICAgIGlmIGdyZXAgLXEgImV4ZWN1dGluZyByZXBsaWNhdGlvbiBkZWxheSBjb21t YW5kIiBsb2cvcGdwb29sLmxvZyAyPi9kZXYvbnVsbDsgdGhlbgorICAgICAgICBlY2hvICJDb21t YW5kIGV4ZWN1dGVkIGFmdGVyICR7aX0gc2Vjb25kcyIKKyAgICAgICAgYnJlYWsKKyAgICBmaQor ICAgIHNsZWVwIDEKK2RvbmUKKworJFBTUUwgdGVzdCA8PEVPRgorU0hPVyBQT09MX05PREVTOwor RU9GCisKKyMgQ2hlY2sgdGhhdCBkZWxheSB2YWx1ZXMgYXJlIHBvcHVsYXRlZCBpbiB0aGUgbG9n CitncmVwICJleGVjdXRpbmcgcmVwbGljYXRpb24gZGVsYXkgY29tbWFuZCIgbG9nL3BncG9vbC5s b2cgPi9kZXYvbnVsbCAyPiYxCitpZiBbICQ/ICE9IDAgXTt0aGVuCisgICAgZWNobyBmYWlsOiBl eHRlcm5hbCBjb21tYW5kIHdhcyBub3QgZXhlY3V0ZWQKKyAgICBlY2hvICJMb2cgY29udGVudHM6 IgorICAgIHRhaWwgLTIwIGxvZy9wZ3Bvb2wubG9nCisgICAgLi9zaHV0ZG93bmFsbAorICAgIGV4 aXQgMQorZmkKKworIyBWZXJpZnkgYWN0dWFsIGRlbGF5IHZhbHVlcyB3ZXJlIHBhcnNlZAoraWYg ISAkUFNRTCAtdCAtYyAiU0hPVyBQT09MX05PREVTIiB0ZXN0IHwgZ3JlcCAtRSAiWzAtOV0rXC5b MC05XSsiID4vZGV2L251bGw7IHRoZW4KKyAgICBlY2hvICJXYXJuaW5nOiBObyBkZWxheSB2YWx1 ZXMgZm91bmQgaW4gUE9PTF9OT0RFUyBvdXRwdXQiCitmaQorCisjIENoZWNrIGZvciBkZWxheSBs b2cgbWVzc2FnZXMKK2dyZXAgIlJlcGxpY2F0aW9uIG9mIG5vZGUuKmV4dGVybmFsIGNvbW1hbmQi IGxvZy9wZ3Bvb2wubG9nID4vZGV2L251bGwgMj4mMQoraWYgWyAkPyAhPSAwIF07dGhlbgorICAg IGVjaG8gZmFpbDogZXh0ZXJuYWwgY29tbWFuZCBkZWxheSBsb2dnaW5nIG5vdCBmb3VuZAorICAg IC4vc2h1dGRvd25hbGwKKyAgICBleGl0IDEKK2ZpCisKK2VjaG8gb2s6IGJhc2ljIGV4dGVybmFs IGNvbW1hbmQgdGVzdCBzdWNjZWVkZWQKKy4vc2h1dGRvd25hbGwKKworIyAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCitlY2hvICI9PT0gVGVzdDI6IEV4dGVybmFsIGNvbW1hbmQgd2l0 aCBmbG9hdGluZy1wb2ludCBtaWxsaXNlY29uZCB2YWx1ZXMgPT09IgorIyAtLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tCisjIFVwZGF0ZSBjb25maWd1cmF0aW9uIHRvIHVzZSBmbG9hdCBj b21tYW5kCitzZWQgLWkuYmFrICJzfGRlbGF5X2NtZF9zdGF0aWMuc2h8ZGVsYXlfY21kX2Zsb2F0 LnNofCIgZXRjL3BncG9vbC5jb25mCisKKy4vc3RhcnRhbGwKK3dhaXRfZm9yX3BncG9vbF9zdGFy dHVwCisKKyMgV2FpdCBmb3Igc3JfY2hlY2sgdG8gcnVuIHdpdGggZmxvYXQgdmFsdWVzCitlY2hv ICJXYWl0aW5nIGZvciBzcl9jaGVjayB3aXRoIGZsb2F0IHZhbHVlcy4uLiIKK2ZvciBpIGluIHsx Li4xMH07IGRvCisgICAgaWYgZ3JlcCAtcSAiZXhlY3V0aW5nIHJlcGxpY2F0aW9uIGRlbGF5IGNv bW1hbmQuKmRlbGF5X2NtZF9mbG9hdC5zaCIgbG9nL3BncG9vbC5sb2cgMj4vZGV2L251bGw7IHRo ZW4KKyAgICAgICAgZWNobyAiRmxvYXQgY29tbWFuZCBleGVjdXRlZCBhZnRlciAke2l9IHNlY29u ZHMiCisgICAgICAgIGJyZWFrCisgICAgZmkKKyAgICBzbGVlcCAxCitkb25lCisKKyRQU1FMIHRl c3QgPDxFT0YKK1NIT1cgUE9PTF9OT0RFUzsKK0VPRgorCisjIENoZWNrIHRoYXQgZmxvYXQgdmFs dWVzIGFyZSBoYW5kbGVkIGNvcnJlY3RseQorZ3JlcCAiZXhlY3V0aW5nIHJlcGxpY2F0aW9uIGRl bGF5IGNvbW1hbmQuKmRlbGF5X2NtZF9mbG9hdC5zaCIgbG9nL3BncG9vbC5sb2cgPi9kZXYvbnVs bCAyPiYxCitpZiBbICQ/ICE9IDAgXTt0aGVuCisgICAgZWNobyBmYWlsOiBmbG9hdCBjb21tYW5k IHdhcyBub3QgZXhlY3V0ZWQKKyAgICAuL3NodXRkb3duYWxsCisgICAgZXhpdCAxCitmaQorCitl Y2hvIG9rOiBmbG9hdGluZy1wb2ludCB2YWx1ZXMgdGVzdCBzdWNjZWVkZWQKKy4vc2h1dGRvd25h bGwKKworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitlY2hvICI9PT0gVGVzdDM6 IEV4dGVybmFsIGNvbW1hbmQgd2l0aCBkZWxheSB0aHJlc2hvbGQgPT09IgorIyAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFVwZGF0ZSBjb25maWd1cmF0aW9uIHRvIHVzZSBoaWdo IGRlbGF5IGNvbW1hbmQgYW5kIHNldCB0aHJlc2hvbGQKK3NlZCAtaS5iYWsgInN8ZGVsYXlfY21k X2Zsb2F0LnNofGRlbGF5X2NtZF9oaWdoLnNofCIgZXRjL3BncG9vbC5jb25mCitlY2hvICJkZWxh eV90aHJlc2hvbGRfYnlfdGltZSA9IDEwMDAiID4+IGV0Yy9wZ3Bvb2wuY29uZgorZWNobyAiYmFj a2VuZF93ZWlnaHQwID0gMCIgPj4gZXRjL3BncG9vbC5jb25mICAjIEZvcmNlIHF1ZXJpZXMgdG8g c3RhbmRieSBub3JtYWxseQorZWNobyAiYmFja2VuZF93ZWlnaHQyID0gMCIgPj4gZXRjL3BncG9v bC5jb25mICAjIE9ubHkgdXNlIG5vZGUgMSBhcyBzdGFuZGJ5CisKKy4vc3RhcnRhbGwKK3dhaXRf Zm9yX3BncG9vbF9zdGFydHVwCisKKyMgV2FpdCBmb3Igc3JfY2hlY2sgdG8gcnVuIGFuZCBkZXRl Y3QgaGlnaCBkZWxheXMKK2VjaG8gIldhaXRpbmcgZm9yIHNyX2NoZWNrIHdpdGggaGlnaCBkZWxh eSB2YWx1ZXMuLi4iCitmb3IgaSBpbiB7MS4uMTB9OyBkbworICAgIGlmIGdyZXAgLXEgImV4ZWN1 dGluZyByZXBsaWNhdGlvbiBkZWxheSBjb21tYW5kLipkZWxheV9jbWRfaGlnaC5zaCIgbG9nL3Bn cG9vbC5sb2cgMj4vZGV2L251bGw7IHRoZW4KKyAgICAgICAgZWNobyAiSGlnaCBkZWxheSBjb21t YW5kIGV4ZWN1dGVkIGFmdGVyICR7aX0gc2Vjb25kcyIKKyAgICAgICAgYnJlYWsKKyAgICBmaQor ICAgIHNsZWVwIDEKK2RvbmUKKworJFBTUUwgdGVzdCA8PEVPRgorU0VMRUNUICogRlJPTSB0MSBM SU1JVCAxOworRU9GCisKKyMgV2l0aCBoaWdoIGRlbGF5cyAoMjAwMG1zID4gMTAwMG1zIHRocmVz aG9sZCksIHF1ZXJ5IHNob3VsZCBnbyB0byBwcmltYXJ5IChub2RlIDApCisjIExvZyBmb3JtYXQg Y2FuIHZhcnk6IGVpdGhlciAic3RhdGVtZW50OiBTRUxFQ1QuLi4iIG9yICJTRUxFQ1QuLi4gREIg bm9kZSBpZDoiCitpZiAhIGdyZXAgLUUgIkRCIG5vZGUgaWQ6IDAuKnN0YXRlbWVudDogU0VMRUNU IFwqIEZST00gdDEgTElNSVQgMSIgbG9nL3BncG9vbC5sb2cgPi9kZXYvbnVsbCAyPiYxICYmIFwK KyAgICEgZ3JlcCAtRSAiU0VMRUNUIFwqIEZST00gdDEgTElNSVQgMS4qREIgbm9kZSBpZDogMCIg bG9nL3BncG9vbC5sb2cgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisgICAgZWNobyBmYWlsOiBxdWVy eSB3YXMgbm90IHNlbnQgdG8gcHJpbWFyeSBub2RlIGRlc3BpdGUgaGlnaCBkZWxheQorICAgIC4v c2h1dGRvd25hbGwKKyAgICBleGl0IDEKK2ZpCisKK2VjaG8gb2s6IGRlbGF5IHRocmVzaG9sZCB0 ZXN0IHN1Y2NlZWRlZAorLi9zaHV0ZG93bmFsbAorCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0KK2VjaG8gIj09PSBUZXN0NDogRXh0ZXJuYWwgY29tbWFuZCBleGVjdXRpb24gYXMg cHJvY2VzcyB1c2VyID09PSIKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBU ZXN0IHRoYXQgY29tbWFuZCBydW5zIGFzIHRoZSBjdXJyZW50IHBncG9vbCBwcm9jZXNzIHVzZXIK K3NlZCAtaS5iYWsgInN8ZGVsYXlfY21kX2hpZ2guc2h8ZGVsYXlfY21kX3N0YXRpYy5zaHwiIGV0 Yy9wZ3Bvb2wuY29uZgorCisuL3N0YXJ0YWxsCit3YWl0X2Zvcl9wZ3Bvb2xfc3RhcnR1cAorCisj IFdhaXQgZm9yIHNyX2NoZWNrIHRvIHJ1bgorZWNobyAiV2FpdGluZyBmb3Igc3JfY2hlY2sgdG8g cnVuIGFzIHByb2Nlc3MgdXNlci4uLiIKK2ZvciBpIGluIHsxLi4xMH07IGRvCisgICAgaWYgZ3Jl cCAtcSAiZXhlY3V0aW5nIHJlcGxpY2F0aW9uIGRlbGF5IGNvbW1hbmQuKmRlbGF5X2NtZF9zdGF0 aWMuc2giIGxvZy9wZ3Bvb2wubG9nIDI+L2Rldi9udWxsOyB0aGVuCisgICAgICAgIGVjaG8gIkNv bW1hbmQgZXhlY3V0ZWQgYXMgcHJvY2VzcyB1c2VyIGFmdGVyICR7aX0gc2Vjb25kcyIKKyAgICAg ICAgYnJlYWsKKyAgICBmaQorICAgIHNsZWVwIDEKK2RvbmUKKworIyBDaGVjayB0aGF0IGNvbW1h bmQgd2FzIGV4ZWN1dGVkICh3aXRob3V0IHN1IHdyYXBwZXIpCitncmVwICJleGVjdXRpbmcgcmVw bGljYXRpb24gZGVsYXkgY29tbWFuZC4qZGVsYXlfY21kX3N0YXRpYy5zaCIgbG9nL3BncG9vbC5s b2cgPi9kZXYvbnVsbCAyPiYxCitpZiBbICQ/ICE9IDAgXTt0aGVuCisgICAgZWNobyBmYWlsOiBj b21tYW5kIHdhcyBub3QgZXhlY3V0ZWQgYXMgcHJvY2VzcyB1c2VyCisgICAgLi9zaHV0ZG93bmFs bAorICAgIGV4aXQgMQorZmkKKworIyBWZXJpZnkgbm8gc3UgY29tbWFuZCB3YXMgdXNlZAoraWYg Z3JlcCAtcSAiZXhlY3V0aW5nIHJlcGxpY2F0aW9uIGRlbGF5IGNvbW1hbmQuKnN1LioiIGxvZy9w Z3Bvb2wubG9nIDI+L2Rldi9udWxsOyB0aGVuCisgICAgZWNobyBmYWlsOiBjb21tYW5kIHNob3Vs ZCBub3QgdXNlIHN1IHdyYXBwZXIKKyAgICAuL3NodXRkb3duYWxsCisgICAgZXhpdCAxCitmaQor CitlY2hvIG9rOiBwcm9jZXNzIHVzZXIgZXhlY3V0aW9uIHRlc3Qgc3VjY2VlZGVkCisuL3NodXRk b3duYWxsCisKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZWNobyAiPT09IFRl c3Q1OiBFcnJvciBoYW5kbGluZyAtIG1pc3NpbmcgY29tbWFuZCA9PT0iCisjIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgVGVzdCBlcnJvciBoYW5kbGluZyB3aGVuIGNvbW1hbmQg aXMgbm90IGNvbmZpZ3VyZWQKK3NlZCAtaS5iYWsgInN8cmVwbGljYXRpb25fZGVsYXlfc291cmNl X2NtZCA9ICcuL2RlbGF5X2NtZF9zdGF0aWMuc2gnfHJlcGxpY2F0aW9uX2RlbGF5X3NvdXJjZV9j bWQgPSAnJ3wiIGV0Yy9wZ3Bvb2wuY29uZgorCisuL3N0YXJ0YWxsCit3YWl0X2Zvcl9wZ3Bvb2xf c3RhcnR1cAorCisjIFdpdGggZW1wdHkgY29tbWFuZCwgc2hvdWxkIGZhbGwgYmFjayB0byBidWls dGluIG1ldGhvZAorIyBObyBzcGVjaWZpYyBlcnJvciBtZXNzYWdlIGV4cGVjdGVkIC0ganVzdCB2 ZXJpZnkgaXQgZG9lc24ndCBjcmFzaAorc2xlZXAgMworCitlY2hvICJvazogZW1wdHkgY29tbWFu ZCB0ZXN0IHN1Y2NlZWRlZCAoZmFsbGJhY2sgdG8gYnVpbHRpbikiCisuL3NodXRkb3duYWxsCisK KyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZWNobyAiPT09IFRlc3Q2OiBFcnJv ciBoYW5kbGluZyAtIGNvbW1hbmQgZXhlY3V0aW9uIGZhaWx1cmUgPT09IgorIyAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFRlc3QgZXJyb3IgaGFuZGxpbmcgd2hlbiBjb21tYW5k IGZhaWxzCitlY2hvICJyZXBsaWNhdGlvbl9kZWxheV9zb3VyY2VfY21kID0gJy4vbm9uZXhpc3Rl bnRfY29tbWFuZC5zaCciID4+IGV0Yy9wZ3Bvb2wuY29uZgorCisuL3N0YXJ0YWxsCit3YWl0X2Zv cl9wZ3Bvb2xfc3RhcnR1cAorCisjIFdhaXQgZm9yIHNyX2NoZWNrIHRvIHJ1biB3aXRoIGZhaWxp bmcgY29tbWFuZAorZWNobyAiV2FpdGluZyBmb3Igc3JfY2hlY2sgd2l0aCBmYWlsaW5nIGNvbW1h bmQuLi4iCitmb3IgaSBpbiB7MS4uNX07IGRvCisgICAgIyBDaGVjayBmb3IgdmFyaW91cyBlcnJv ciBjb25kaXRpb25zOiBleGl0IGNvZGUgZmFpbHVyZSwgbm8gb3V0cHV0LCBvciBleHBsaWNpdCBm YWlsdXJlIG1lc3NhZ2UKKyAgICBpZiBncmVwIC1xRSAiKHJlcGxpY2F0aW9uIGRlbGF5IGNvbW1h bmQgZmFpbGVkIHdpdGggZXhpdCBjb2RlfHJlcGxpY2F0aW9uIGRlbGF5IGNvbW1hbmQgcHJvZHVj ZWQgbm8gb3V0cHV0fGZhaWxlZCB0byAoZXhlY3V0ZXxyZWFkIG91dHB1dCBmcm9tKSByZXBsaWNh dGlvbiBkZWxheSBjb21tYW5kKSIgbG9nL3BncG9vbC5sb2cgMj4vZGV2L251bGw7IHRoZW4KKyAg ICAgICAgZWNobyAiQ29tbWFuZCBmYWlsdXJlIGRldGVjdGVkIGFmdGVyICR7aX0gc2Vjb25kcyIK KyAgICAgICAgYnJlYWsKKyAgICBmaQorICAgIHNsZWVwIDEKK2RvbmUKKworIyBDaGVjayBmb3Ig ZXJyb3IgbWVzc2FnZSBhYm91dCBjb21tYW5kIGV4ZWN1dGlvbiBmYWlsdXJlCisjIEFjY2VwdCBt dWx0aXBsZSBwb3NzaWJsZSBlcnJvciBtZXNzYWdlcyBkZXBlbmRpbmcgb24gc2hlbGwgYmVoYXZp b3I6CisjIC0gImZhaWxlZCB3aXRoIGV4aXQgY29kZSIgd2hlbiBjb21tYW5kIHJldHVybnMgbm9u LXplcm8KKyMgLSAicHJvZHVjZWQgbm8gb3V0cHV0IiB3aGVuIGNvbW1hbmQgcHJvZHVjZXMgZW1w dHkgb3V0cHV0CisjIC0gImZhaWxlZCB0byBleGVjdXRlL3JlYWQiIGZvciBvdGhlciBmYWlsdXJl cworaWYgISBncmVwIC1xRSAiKHJlcGxpY2F0aW9uIGRlbGF5IGNvbW1hbmQgZmFpbGVkIHdpdGgg ZXhpdCBjb2RlfHJlcGxpY2F0aW9uIGRlbGF5IGNvbW1hbmQgcHJvZHVjZWQgbm8gb3V0cHV0fGZh aWxlZCB0byAoZXhlY3V0ZXxyZWFkIG91dHB1dCBmcm9tKSByZXBsaWNhdGlvbiBkZWxheSBjb21t YW5kKSIgbG9nL3BncG9vbC5sb2cgMj4vZGV2L251bGw7IHRoZW4KKyAgICBlY2hvIGZhaWw6IGNv bW1hbmQgZXhlY3V0aW9uIGZhaWx1cmUgbm90IGRldGVjdGVkCisgICAgZWNobyAiTG9nIGNvbnRl bnRzOiIKKyAgICB0YWlsIC01MCBsb2cvcGdwb29sLmxvZworICAgIC4vc2h1dGRvd25hbGwKKyAg ICBleGl0IDEKK2ZpCisKK2VjaG8gb2s6IGNvbW1hbmQgZmFpbHVyZSB0ZXN0IHN1Y2NlZWRlZAor Li9zaHV0ZG93bmFsbAorCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2VjaG8g Ij09PSBUZXN0NzogQ29tbWFuZCB0aW1lb3V0IGhhbmRsaW5nID09PSIKKyMgLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorIyBDcmVhdGUgYSBjb21tYW5kIHRoYXQgdGFrZXMgbG9uZ2Vy IHRoYW4gdGhlIHRpbWVvdXQKK2NhdCA+IGRlbGF5X2NtZF9zbG93LnNoIDw8ICdFT0YnCisjIS9i aW4vYmFzaAorIyBTbG93IGNvbW1hbmQgdGhhdCB0YWtlcyAxNSBzZWNvbmRzIChsb25nZXIgdGhh biBkZWZhdWx0IDEwcyB0aW1lb3V0KQorc2xlZXAgMTUKK2VjaG8gIjI1IDUwIgorRU9GCitjaG1v ZCAreCBkZWxheV9jbWRfc2xvdy5zaAorCisjIFNldCBhIHNob3J0IHRpbWVvdXQgYW5kIHVzZSB0 aGUgc2xvdyBjb21tYW5kCitzZWQgLWkuYmFrICJzfHJlcGxpY2F0aW9uX2RlbGF5X3NvdXJjZV9j bWQgPSAnLi9ub25leGlzdGVudF9jb21tYW5kLnNoJ3xyZXBsaWNhdGlvbl9kZWxheV9zb3VyY2Vf Y21kID0gJy4vZGVsYXlfY21kX3Nsb3cuc2gnfCIgZXRjL3BncG9vbC5jb25mCitlY2hvICJyZXBs aWNhdGlvbl9kZWxheV9zb3VyY2VfdGltZW91dCA9IDMiID4+IGV0Yy9wZ3Bvb2wuY29uZgorCisu L3N0YXJ0YWxsCit3YWl0X2Zvcl9wZ3Bvb2xfc3RhcnR1cAorCisjIFdhaXQgZm9yIHNyX2NoZWNr IHRvIHJ1biBhbmQgdGltZW91dAorZWNobyAiV2FpdGluZyBmb3IgY29tbWFuZCB0aW1lb3V0Li4u IgorZm9yIGkgaW4gezEuLjE1fTsgZG8KKyAgICBpZiBncmVwIC1xICJyZXBsaWNhdGlvbiBkZWxh eSBjb21tYW5kIHRpbWVkIG91dCIgbG9nL3BncG9vbC5sb2cgMj4vZGV2L251bGw7IHRoZW4KKyAg ICAgICAgZWNobyAiQ29tbWFuZCB0aW1lb3V0IGRldGVjdGVkIGFmdGVyICR7aX0gc2Vjb25kcyIK KyAgICAgICAgYnJlYWsKKyAgICBmaQorICAgIHNsZWVwIDEKK2RvbmUKKworIyBDaGVjayBmb3Ig dGltZW91dCBlcnJvciBtZXNzYWdlCitncmVwICJyZXBsaWNhdGlvbiBkZWxheSBjb21tYW5kIHRp bWVkIG91dCBhZnRlciAzIHNlY29uZHMiIGxvZy9wZ3Bvb2wubG9nID4vZGV2L251bGwgMj4mMQor aWYgWyAkPyAhPSAwIF07dGhlbgorICAgIGVjaG8gZmFpbDogY29tbWFuZCB0aW1lb3V0IG5vdCBk ZXRlY3RlZAorICAgIC4vc2h1dGRvd25hbGwKKyAgICBleGl0IDEKK2ZpCisKK2VjaG8gb2s6IGNv bW1hbmQgdGltZW91dCB0ZXN0IHN1Y2NlZWRlZAorLi9zaHV0ZG93bmFsbAorCisjIC0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2VjaG8gIj09PSBUZXN0ODogSGFuZGxpbmcgb2YgLTEg Zm9yIGRvd24gbm9kZXMgPT09IgorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisj IENyZWF0ZSBhIGNvbW1hbmQgdGhhdCByZXR1cm5zIC0xIGZvciBvbmUgcmVwbGljYQorY2F0ID4g ZGVsYXlfY21kX3dpdGhfZG93bl9ub2RlLnNoIDw8ICdFT0YnCisjIS9iaW4vYmFzaAorIyBSZXR1 cm4gLTEgZm9yIGZpcnN0IHJlcGxpY2EgKGluZGljYXRpbmcgaXQncyBkb3duKSwgbm9ybWFsIHZh bHVlIGZvciBzZWNvbmQKK2VjaG8gIi0xIDUwIgorRU9GCitjaG1vZCAreCBkZWxheV9jbWRfd2l0 aF9kb3duX25vZGUuc2gKKworIyBSZXNldCBjb25maWcKK3JtIC1mIGV0Yy9wZ3Bvb2wuY29uZi5i YWsKK3NlZCAtaS5iYWsgInN8ZGVsYXlfY21kX3Nsb3cuc2h8ZGVsYXlfY21kX3dpdGhfZG93bl9u b2RlLnNofCIgZXRjL3BncG9vbC5jb25mCitzZWQgLWkuYmFrICJzfHJlcGxpY2F0aW9uX2RlbGF5 X3NvdXJjZV90aW1lb3V0ID0gM3xyZXBsaWNhdGlvbl9kZWxheV9zb3VyY2VfdGltZW91dCA9IDEw fCIgZXRjL3BncG9vbC5jb25mCisKKy4vc3RhcnRhbGwKK3dhaXRfZm9yX3BncG9vbF9zdGFydHVw CisKKyMgV2FpdCBmb3Igc3JfY2hlY2sgdG8gcHJvY2VzcyAtMSB2YWx1ZQorZWNobyAiV2FpdGlu ZyBmb3Igc3JfY2hlY2sgdG8gcHJvY2VzcyAtMSB2YWx1ZS4uLiIKK2ZvciBpIGluIHsxLi4xMH07 IGRvCisgICAgaWYgZ3JlcCAtcSAibm9kZS4qcmVwb3J0ZWQgYXMgZG93biBieSBleHRlcm5hbCBj b21tYW5kLipkZWxheSAtMSIgbG9nL3BncG9vbC5sb2cgMj4vZGV2L251bGw7IHRoZW4KKyAgICAg ICAgZWNobyAiLTEgaGFuZGxpbmcgZGV0ZWN0ZWQgYWZ0ZXIgJHtpfSBzZWNvbmRzIgorICAgICAg ICBicmVhaworICAgIGZpCisgICAgc2xlZXAgMQorZG9uZQorCisjIENoZWNrIGZvciAtMSBsb2dn aW5nIG1lc3NhZ2UKK2dyZXAgIm5vZGUuKnJlcG9ydGVkIGFzIGRvd24gYnkgZXh0ZXJuYWwgY29t bWFuZC4qZGVsYXkgLTEuKnJlbHlpbmcgb24gaGVhbHRoIGNoZWNrIiBsb2cvcGdwb29sLmxvZyA+ L2Rldi9udWxsIDI+JjEKK2lmIFsgJD8gIT0gMCBdO3RoZW4KKyAgICBlY2hvIGZhaWw6IC0xIGhh bmRsaW5nIG1lc3NhZ2Ugbm90IGZvdW5kCisgICAgLi9zaHV0ZG93bmFsbAorICAgIGV4aXQgMQor ZmkKKworIyBWZXJpZnkgdGhhdCBwZ3Bvb2wgZGlkbid0IHRyaWdnZXIgZmFpbG92ZXIganVzdCBm cm9tIC0xCisjIENoZWNrIGZvciBhY3R1YWwgZmFpbG92ZXIgZXhlY3V0aW9uLCBub3QganVzdCBj b25maWcgbWVudGlvbnMgb2YgZmFpbG92ZXJfY29tbWFuZAoraWYgZ3JlcCAtcUUgIihzdGFydGlu Zy4qKGZhaWxvdmVyfGRlZ2VuZXJhdGlvbil8ZmFpbG92ZXIgZG9uZXxleGVjdXRlLiooZmFpbG92 ZXJ8ZmFpbGJhY2spX2NvbW1hbmQpIiBsb2cvcGdwb29sLmxvZyAyPi9kZXYvbnVsbDsgdGhlbgor ICAgIGVjaG8gImZhaWw6IC0xIHNob3VsZCBub3QgdHJpZ2dlciBpbW1lZGlhdGUgZmFpbG92ZXIi CisgICAgLi9zaHV0ZG93bmFsbAorICAgIGV4aXQgMQorZmkKKworZWNobyBvazogLTEgaGFuZGxp bmcgdGVzdCBzdWNjZWVkZWQKKy4vc2h1dGRvd25hbGwKKworZWNobyAiQWxsIGV4dGVybmFsIHJl cGxpY2F0aW9uIGRlbGF5IHRlc3RzIHBhc3NlZCEiCitleGl0IDAKZGlmZiAtLWdpdCBhL3NyYy90 ZXN0L3JlZ3Jlc3Npb24vdGVzdHMvMDQxLmV4dGVybmFsX3JlcGxpY2F0aW9uX2RlbGF5L3Rlc3Rf cGFyc2luZy5zaCBiL3NyYy90ZXN0L3JlZ3Jlc3Npb24vdGVzdHMvMDQxLmV4dGVybmFsX3JlcGxp Y2F0aW9uX2RlbGF5L3Rlc3RfcGFyc2luZy5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MmZkYWQxNDRjZjVhOTRl ZmJmNzkwMjBhNTBlYmMyZWYwMGQ2ZmI4Ci0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVn cmVzc2lvbi90ZXN0cy8wNDEuZXh0ZXJuYWxfcmVwbGljYXRpb25fZGVsYXkvdGVzdF9wYXJzaW5n LnNoCkBAIC0wLDAgKzEsNTQgQEAKKyMhL2Jpbi9iYXNoCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBVbml0IHRl c3QgZm9yIGV4dGVybmFsIGNvbW1hbmQgcGFyc2luZyBsb2dpYworIyBUaGlzIHRlc3RzIHRoZSBw YXJzaW5nIHdpdGhvdXQgbmVlZGluZyBhIGZ1bGwgcGdwb29sIHNldHVwCisjCisKK2VjaG8gIj09 PSBUZXN0aW5nIGV4dGVybmFsIGNvbW1hbmQgb3V0cHV0IHBhcnNpbmcgPT09IgorCisjIFRlc3Qg MTogSW50ZWdlciB2YWx1ZXMKK2VjaG8gIlRlc3QgMTogSW50ZWdlciBtaWxsaXNlY29uZCB2YWx1 ZXMiCitlY2hvICIwIDI1IDUwIiA+IHRlc3Rfb3V0cHV0LnR4dAorZWNobyAiRXhwZWN0ZWQ6IDBt cywgMjVtcywgNTBtcyIKK2VjaG8gIk91dHB1dDogJChjYXQgdGVzdF9vdXRwdXQudHh0KSIKK2Vj aG8gIiIKKworIyBUZXN0IDI6IEZsb2F0IHZhbHVlcworZWNobyAiVGVzdCAyOiBGbG9hdGluZy1w b2ludCBtaWxsaXNlY29uZCB2YWx1ZXMiCitlY2hvICIwIDI1LjUgMTAwLjc1IiA+IHRlc3Rfb3V0 cHV0X2Zsb2F0LnR4dAorZWNobyAiRXhwZWN0ZWQ6IDBtcywgMjUuNW1zLCAxMDAuNzVtcyIKK2Vj aG8gIk91dHB1dDogJChjYXQgdGVzdF9vdXRwdXRfZmxvYXQudHh0KSIKK2VjaG8gIiIKKworIyBU ZXN0IDM6IEhpZ2ggcHJlY2lzaW9uIGZsb2F0IHZhbHVlcworZWNobyAiVGVzdCAzOiBIaWdoIHBy ZWNpc2lvbiB2YWx1ZXMiCitlY2hvICIwIDAuMDAxIDk5OS45OTkiID4gdGVzdF9vdXRwdXRfcHJl Y2lzaW9uLnR4dAorZWNobyAiRXhwZWN0ZWQ6IDBtcywgMC4wMDFtcywgOTk5Ljk5OW1zIgorZWNo byAiT3V0cHV0OiAkKGNhdCB0ZXN0X291dHB1dF9wcmVjaXNpb24udHh0KSIKK2VjaG8gIiIKKwor IyBUZXN0IDQ6IEVkZ2UgY2FzZSAtIHplcm8gdmFsdWVzCitlY2hvICJUZXN0IDQ6IEFsbCB6ZXJv IHZhbHVlcyIKK2VjaG8gIjAgMCAwIiA+IHRlc3Rfb3V0cHV0X3plcm9zLnR4dAorZWNobyAiRXhw ZWN0ZWQ6IDBtcywgMG1zLCAwbXMiCitlY2hvICJPdXRwdXQ6ICQoY2F0IHRlc3Rfb3V0cHV0X3pl cm9zLnR4dCkiCitlY2hvICIiCisKKyMgVGVzdCA1OiBFZGdlIGNhc2UgLSBsYXJnZSB2YWx1ZXMK K2VjaG8gIlRlc3QgNTogTGFyZ2UgZGVsYXkgdmFsdWVzIgorZWNobyAiMCA1MDAwIDEwMDAwIiA+ IHRlc3Rfb3V0cHV0X2xhcmdlLnR4dAorZWNobyAiRXhwZWN0ZWQ6IDBtcywgNTAwMG1zLCAxMDAw MG1zIgorZWNobyAiT3V0cHV0OiAkKGNhdCB0ZXN0X291dHB1dF9sYXJnZS50eHQpIgorZWNobyAi IgorCisjIFRlc3QgNjogTWl4ZWQgaW50ZWdlciBhbmQgZmxvYXQgdmFsdWVzCitlY2hvICJUZXN0 IDY6IE1peGVkIGludGVnZXIgYW5kIGZsb2F0IHZhbHVlcyIKK2VjaG8gIjAgMjUgNTAuNSIgPiB0 ZXN0X291dHB1dF9taXhlZC50eHQKK2VjaG8gIkV4cGVjdGVkOiAwbXMsIDI1bXMsIDUwLjVtcyIK K2VjaG8gIk91dHB1dDogJChjYXQgdGVzdF9vdXRwdXRfbWl4ZWQudHh0KSIKK2VjaG8gIiIKKwor IyBDbGVhbnVwCitybSAtZiB0ZXN0X291dHB1dF8qLnR4dAorCitlY2hvICJBbGwgcGFyc2luZyB0 ZXN0cyBjb21wbGV0ZWQuIFRoZXNlIG91dHB1dHMgc2hvdWxkIGJlIHBhcnNlYWJsZSBieSB0aGUg ZXh0ZXJuYWwgY29tbWFuZCBmZWF0dXJlLiIKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Np b24vdGVzdHMvMDQxLmV4dGVybmFsX3JlcGxpY2F0aW9uX2RlbGF5L3Rlc3RfdmFsaWRhdGlvbi5z aCBiL3NyYy90ZXN0L3JlZ3Jlc3Npb24vdGVzdHMvMDQxLmV4dGVybmFsX3JlcGxpY2F0aW9uX2Rl bGF5L3Rlc3RfdmFsaWRhdGlvbi5zaApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yY2Q0YTdmMGIzNWUxNTJiNmQ0Yjc3 MDkzMWVkNDgyMWNkZDlkMjAxCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvcmVncmVzc2lv bi90ZXN0cy8wNDEuZXh0ZXJuYWxfcmVwbGljYXRpb25fZGVsYXkvdGVzdF92YWxpZGF0aW9uLnNo CkBAIC0wLDAgKzEsMzIzIEBACisjIS91c3IvYmluL2VudiBiYXNoCisjLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyB0 ZXN0IHNjcmlwdCBmb3IgZXh0ZXJuYWwgY29tbWFuZCB2YWxpZGF0aW9uIGFuZCBlZGdlIGNhc2Vz CisjCitzb3VyY2UgJFRFU1RMSUJTCitURVNURElSPXRlc3RkaXJfdmFsaWRhdGlvbgorUEdfQ1RM PSRQR0JJTi9wZ19jdGwKK1BTUUw9IiRQR0JJTi9wc3FsIC1YICIKKworcm0gLWZyICRURVNURElS Citta2RpciAkVEVTVERJUgorY2QgJFRFU1RESVIKKworIyBjcmVhdGUgdGVzdCBlbnZpcm9ubWVu dAorZWNobyAtbiAiY3JlYXRpbmcgdGVzdCBlbnZpcm9ubWVudC4uLiIKKyRQR1BPT0xfU0VUVVAg LW0gcyAtbiAzIHx8IGV4aXQgMQorZWNobyAiZG9uZS4iCitzb3VyY2UgLi9iYXNocmMucG9ydHMK K2V4cG9ydCBQR1BPUlQ9JFBHUE9PTF9QT1JUCisKKyMgQ3JlYXRlIHRlc3QgY29tbWFuZCBzY3Jp cHRzCisjIE5PVEU6IEFsbCBjb21tYW5kcyBvdXRwdXQgdmFsdWVzIGZvciBSRVBMSUNBUyBvbmx5 IChwcmltYXJ5IG9taXR0ZWQpCitjYXQgPiBkZWxheV9jbWRfdmFsaWRhdGlvbi5zaCA8PCAnRU9G JworIyEvYmluL2Jhc2gKKyMgVGVzdCB2YWxpZGF0aW9uOiBvdXRwdXQgd2l0aCBpbnZhbGlkIHZh bHVlcyBmb3IgMiByZXBsaWNhcworZWNobyAiaW52YWxpZF92YWx1ZSA1MC41IgorRU9GCitjaG1v ZCAreCBkZWxheV9jbWRfdmFsaWRhdGlvbi5zaAorCitjYXQgPiBkZWxheV9jbWRfbmVnYXRpdmUu c2ggPDwgJ0VPRicKKyMhL2Jpbi9iYXNoCisjIFRlc3QgbmVnYXRpdmUgdmFsdWVzIChvdGhlciB0 aGFuIC0xKQorZWNobyAiLTI1IDUwIgorRU9GCitjaG1vZCAreCBkZWxheV9jbWRfbmVnYXRpdmUu c2gKKworY2F0ID4gZGVsYXlfY21kX2xhcmdlLnNoIDw8ICdFT0YnCisjIS9iaW4vYmFzaAorIyBU ZXN0IGV4dHJlbWVseSBsYXJnZSB2YWx1ZXMKK2VjaG8gIjk5OTk5OTkgNTAiCitFT0YKK2NobW9k ICt4IGRlbGF5X2NtZF9sYXJnZS5zaAorCitjYXQgPiBkZWxheV9jbWRfd3JvbmdfY291bnQuc2gg PDwgJ0VPRicKKyMhL2Jpbi9iYXNoCisjIFRlc3Qgd3JvbmcgbnVtYmVyIG9mIHZhbHVlcyAob25s eSAxIGluc3RlYWQgb2YgMiBmb3IgMiByZXBsaWNhcykKK2VjaG8gIjI1IgorRU9GCitjaG1vZCAr eCBkZWxheV9jbWRfd3JvbmdfY291bnQuc2gKKworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCitlY2hvICI9PT0gVGVzdDE6IFZhbGlkYXRpb24gb2YgaW52YWxpZCBkZWxheSB2YWx1 ZXMgPT09IgorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitlY2hvICJyZXBsaWNh dGlvbl9kZWxheV9zb3VyY2VfY21kID0gJy4vZGVsYXlfY21kX3ZhbGlkYXRpb24uc2gnIiA+PiBl dGMvcGdwb29sLmNvbmYKK2VjaG8gInNyX2NoZWNrX3BlcmlvZCA9IDEiID4+IGV0Yy9wZ3Bvb2wu Y29uZgorZWNobyAibG9nX3N0YW5kYnlfZGVsYXkgPSAnYWx3YXlzJyIgPj4gZXRjL3BncG9vbC5j b25mCitlY2hvICJsb2dfbWluX21lc3NhZ2VzID0gJ0RFQlVHMSciID4+IGV0Yy9wZ3Bvb2wuY29u ZgorIyBSZWR1Y2UgbWVtb3J5IHJlcXVpcmVtZW50cyBmb3IgbWFjT1Mgc2hhcmVkIG1lbW9yeSBs aW1pdHMKK2VjaG8gIm51bV9pbml0X2NoaWxkcmVuID0gNCIgPj4gZXRjL3BncG9vbC5jb25mCitl Y2hvICJtYXhfcG9vbCA9IDIiID4+IGV0Yy9wZ3Bvb2wuY29uZgorIyBEaXNhYmxlIHF1ZXJ5IGNh Y2hpbmcgdG8gYXZvaWQgc2hhcmVkIG1lbW9yeSBpc3N1ZXMgb24gbWFjT1MKK2VjaG8gIm1lbW9y eV9jYWNoZV9lbmFibGVkID0gb2ZmIiA+PiBldGMvcGdwb29sLmNvbmYKKworLi9zdGFydGFsbAor d2FpdF9mb3JfcGdwb29sX3N0YXJ0dXAKKworJFBTUUwgdGVzdCA8PEVPRgorQ1JFQVRFIFRBQkxF IHQxKGkgSU5URUdFUik7CitFT0YKKworIyBXYWl0IGZvciBzcl9jaGVjayB0byBydW4KK2VjaG8g IldhaXRpbmcgZm9yIHZhbGlkYXRpb24gdGVzdC4uLiIKK2ZvciBpIGluIHsxLi4xMH07IGRvCisg ICAgaWYgZ3JlcCAtcSAiaW52YWxpZCBkZWxheSB2YWx1ZSIgbG9nL3BncG9vbC5sb2cgMj4vZGV2 L251bGw7IHRoZW4KKyAgICAgICAgZWNobyAiVmFsaWRhdGlvbiBlcnJvciBkZXRlY3RlZCBhZnRl ciAke2l9IHNlY29uZHMiCisgICAgICAgIGJyZWFrCisgICAgZmkKKyAgICBzbGVlcCAxCitkb25l CisKKyMgQ2hlY2sgZm9yIHZhbGlkYXRpb24gd2FybmluZworZ3JlcCAiaW52YWxpZCBkZWxheSB2 YWx1ZSAnaW52YWxpZF92YWx1ZScgZm9yIG5vZGUiIGxvZy9wZ3Bvb2wubG9nID4vZGV2L251bGwg Mj4mMQoraWYgWyAkPyAhPSAwIF07dGhlbgorICAgIGVjaG8gZmFpbDogdmFsaWRhdGlvbiB3YXJu aW5nIG5vdCBmb3VuZAorICAgIC4vc2h1dGRvd25hbGwKKyAgICBleGl0IDEKK2ZpCisKK2VjaG8g b2s6IGludmFsaWQgdmFsdWUgdmFsaWRhdGlvbiB0ZXN0IHN1Y2NlZWRlZAorLi9zaHV0ZG93bmFs bAorCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2VjaG8gIj09PSBUZXN0Mjog TmVnYXRpdmUgZGVsYXkgdmFsdWVzIChvdGhlciB0aGFuIC0xKSA9PT0iCisjIC0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KK3NlZCAtaS5iYWsgInN8ZGVsYXlfY21kX3ZhbGlkYXRpb24u c2h8ZGVsYXlfY21kX25lZ2F0aXZlLnNofCIgZXRjL3BncG9vbC5jb25mCisKKy4vc3RhcnRhbGwK K3dhaXRfZm9yX3BncG9vbF9zdGFydHVwCisKKyMgV2FpdCBmb3Igc3JfY2hlY2sgdG8gcnVuCitl Y2hvICJXYWl0aW5nIGZvciBuZWdhdGl2ZSB2YWx1ZSB0ZXN0Li4uIgorZm9yIGkgaW4gezEuLjEw fTsgZG8KKyAgICBpZiBncmVwIC1xICJuZWdhdGl2ZSBkZWxheSB2YWx1ZS4qb3RoZXIgdGhhbiAt MSIgbG9nL3BncG9vbC5sb2cgMj4vZGV2L251bGw7IHRoZW4KKyAgICAgICAgZWNobyAiTmVnYXRp dmUgdmFsdWUgd2FybmluZyBkZXRlY3RlZCBhZnRlciAke2l9IHNlY29uZHMiCisgICAgICAgIGJy ZWFrCisgICAgZmkKKyAgICBzbGVlcCAxCitkb25lCisKKyMgQ2hlY2sgZm9yIG5lZ2F0aXZlIHZh bHVlIHdhcm5pbmcKK2dyZXAgIm5lZ2F0aXZlIGRlbGF5IHZhbHVlLipvdGhlciB0aGFuIC0xLip0 cmVhdGluZyBhcyAwIiBsb2cvcGdwb29sLmxvZyA+L2Rldi9udWxsIDI+JjEKK2lmIFsgJD8gIT0g MCBdO3RoZW4KKyAgICBlY2hvIGZhaWw6IG5lZ2F0aXZlIHZhbHVlIHdhcm5pbmcgbm90IGZvdW5k CisgICAgLi9zaHV0ZG93bmFsbAorICAgIGV4aXQgMQorZmkKKworZWNobyBvazogbmVnYXRpdmUg dmFsdWUgdmFsaWRhdGlvbiB0ZXN0IHN1Y2NlZWRlZAorLi9zaHV0ZG93bmFsbAorCisjIC0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2VjaG8gIj09PSBUZXN0MzogRXh0cmVtZWx5IGxh cmdlIGRlbGF5IHZhbHVlcyA9PT0iCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K K3NlZCAtaS5iYWsgInN8ZGVsYXlfY21kX25lZ2F0aXZlLnNofGRlbGF5X2NtZF9sYXJnZS5zaHwi IGV0Yy9wZ3Bvb2wuY29uZgorCisuL3N0YXJ0YWxsCit3YWl0X2Zvcl9wZ3Bvb2xfc3RhcnR1cAor CisjIFdhaXQgZm9yIHNyX2NoZWNrIHRvIHJ1bgorZWNobyAiV2FpdGluZyBmb3IgbGFyZ2UgdmFs dWUgdGVzdC4uLiIKK2ZvciBpIGluIHsxLi4xMH07IGRvCisgICAgaWYgZ3JlcCAtcSAiZXh0cmVt ZWx5IGxhcmdlIGRlbGF5IHZhbHVlIiBsb2cvcGdwb29sLmxvZyAyPi9kZXYvbnVsbDsgdGhlbgor ICAgICAgICBlY2hvICJMYXJnZSB2YWx1ZSB3YXJuaW5nIGRldGVjdGVkIGFmdGVyICR7aX0gc2Vj b25kcyIKKyAgICAgICAgYnJlYWsKKyAgICBmaQorICAgIHNsZWVwIDEKK2RvbmUKKworIyBDaGVj ayBmb3IgbGFyZ2UgdmFsdWUgd2FybmluZworZ3JlcCAiZXh0cmVtZWx5IGxhcmdlIGRlbGF5IHZh bHVlLipmb3Igbm9kZSIgbG9nL3BncG9vbC5sb2cgPi9kZXYvbnVsbCAyPiYxCitpZiBbICQ/ICE9 IDAgXTt0aGVuCisgICAgZWNobyBmYWlsOiBsYXJnZSB2YWx1ZSB3YXJuaW5nIG5vdCBmb3VuZAor ICAgIC4vc2h1dGRvd25hbGwKKyAgICBleGl0IDEKK2ZpCisKK2VjaG8gb2s6IGxhcmdlIHZhbHVl IHZhbGlkYXRpb24gdGVzdCBzdWNjZWVkZWQKKy4vc2h1dGRvd25hbGwKKworIyAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tCitlY2hvICI9PT0gVGVzdDQ6IFdyb25nIG51bWJlciBvZiBv dXRwdXQgdmFsdWVzID09PSIKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorc2Vk IC1pLmJhayAic3xkZWxheV9jbWRfbGFyZ2Uuc2h8ZGVsYXlfY21kX3dyb25nX2NvdW50LnNofCIg ZXRjL3BncG9vbC5jb25mCisKKy4vc3RhcnRhbGwKK3dhaXRfZm9yX3BncG9vbF9zdGFydHVwCisK KyMgV2FpdCBmb3Igc3JfY2hlY2sgdG8gcnVuCitlY2hvICJXYWl0aW5nIGZvciB3cm9uZyBjb3Vu dCB0ZXN0Li4uIgorZm9yIGkgaW4gezEuLjEwfTsgZG8KKyAgICBpZiBncmVwIC1xICJyZXR1cm5l ZC4qdmFsdWVzLCBleHBlY3RlZC4qcmVwbGljYSIgbG9nL3BncG9vbC5sb2cgMj4vZGV2L251bGw7 IHRoZW4KKyAgICAgICAgZWNobyAiV3JvbmcgY291bnQgd2FybmluZyBkZXRlY3RlZCBhZnRlciAk e2l9IHNlY29uZHMiCisgICAgICAgIGJyZWFrCisgICAgZmkKKyAgICBzbGVlcCAxCitkb25lCisK KyMgQ2hlY2sgZm9yIHdyb25nIGNvdW50IHdhcm5pbmcKK2dyZXAgInJldHVybmVkLip2YWx1ZXMs IGV4cGVjdGVkLipyZXBsaWNhLipDb21tYW5kIHNob3VsZCBvdXRwdXQgb25lIGRlbGF5IHZhbHVl IHBlciByZXBsaWNhIiBsb2cvcGdwb29sLmxvZyA+L2Rldi9udWxsIDI+JjEKK2lmIFsgJD8gIT0g MCBdO3RoZW4KKyAgICBlY2hvIGZhaWw6IHdyb25nIGNvdW50IHZhbGlkYXRpb24gdGVzdCBub3Qg Zm91bmQKKyAgICAuL3NodXRkb3duYWxsCisgICAgZXhpdCAxCitmaQorCitlY2hvIG9rOiB3cm9u ZyBjb3VudCB2YWxpZGF0aW9uIHRlc3Qgc3VjY2VlZGVkCisuL3NodXRkb3duYWxsCisKKyMgLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorZWNobyAiPT09IFRlc3Q1OiBNdWx0aXBsZSAt MSB2YWx1ZXMgPT09IgorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitjYXQgPiBk ZWxheV9jbWRfbXVsdGlfZG93bi5zaCA8PCAnRU9GJworIyEvYmluL2Jhc2gKKyMgVGVzdCBtdWx0 aXBsZSByZXBsaWNhcyBkb3duCitlY2hvICItMSAtMSIKK0VPRgorY2htb2QgK3ggZGVsYXlfY21k X211bHRpX2Rvd24uc2gKKworc2VkIC1pLmJhayAic3xkZWxheV9jbWRfd3JvbmdfY291bnQuc2h8 ZGVsYXlfY21kX211bHRpX2Rvd24uc2h8IiBldGMvcGdwb29sLmNvbmYKKworLi9zdGFydGFsbAor d2FpdF9mb3JfcGdwb29sX3N0YXJ0dXAKKworIyBXYWl0IGZvciBzcl9jaGVjayB0byBydW4KK2Vj aG8gIldhaXRpbmcgZm9yIG11bHRpLWRvd24gdGVzdC4uLiIKK2ZvciBpIGluIHsxLi4xMH07IGRv CisgICAgaWYgZ3JlcCAtcSAibm9kZS4qcmVwb3J0ZWQgYXMgZG93biBieSBleHRlcm5hbCBjb21t YW5kIiBsb2cvcGdwb29sLmxvZyAyPi9kZXYvbnVsbDsgdGhlbgorICAgICAgICBlY2hvICJNdWx0 aXBsZSBkb3duIG5vZGVzIGRldGVjdGVkIGFmdGVyICR7aX0gc2Vjb25kcyIKKyAgICAgICAgYnJl YWsKKyAgICBmaQorICAgIHNsZWVwIDEKK2RvbmUKKworIyBDaGVjayBmb3IgbXVsdGlwbGUgLTEg aGFuZGxpbmcKK0RPV05fQ09VTlQ9JChncmVwIC1jICJub2RlLipyZXBvcnRlZCBhcyBkb3duIGJ5 IGV4dGVybmFsIGNvbW1hbmQuKmRlbGF5IC0xIiBsb2cvcGdwb29sLmxvZykKK2lmIFsgIiRET1dO X0NPVU5UIiAtbHQgMiBdOyB0aGVuCisgICAgZWNobyBmYWlsOiBleHBlY3RlZCAyIGRvd24gbm9k ZSBtZXNzYWdlcywgZm91bmQgJERPV05fQ09VTlQKKyAgICAuL3NodXRkb3duYWxsCisgICAgZXhp dCAxCitmaQorCitlY2hvIG9rOiBtdWx0aXBsZSAtMSBoYW5kbGluZyB0ZXN0IHN1Y2NlZWRlZAor Li9zaHV0ZG93bmFsbAorCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2VjaG8g Ij09PSBUZXN0NjogQ29tbWFuZCB0aW1lb3V0IHdpdGggZGlmZmVyZW50IHRpbWVvdXQgdmFsdWVz ID09PSIKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorY2F0ID4gZGVsYXlfY21k X3RpbWVvdXQuc2ggPDwgJ0VPRicKKyMhL2Jpbi9iYXNoCisjIENvbW1hbmQgdGhhdCB0YWtlcyA1 IHNlY29uZHMKK3NsZWVwIDUKK2VjaG8gIjI1IDUwIgorRU9GCitjaG1vZCAreCBkZWxheV9jbWRf dGltZW91dC5zaAorCisjIFRlc3Qgd2l0aCB0aW1lb3V0IHNob3J0ZXIgdGhhbiBjb21tYW5kIGR1 cmF0aW9uCitzZWQgLWkuYmFrICJzfGRlbGF5X2NtZF9tdWx0aV9kb3duLnNofGRlbGF5X2NtZF90 aW1lb3V0LnNofCIgZXRjL3BncG9vbC5jb25mCitlY2hvICJyZXBsaWNhdGlvbl9kZWxheV9zb3Vy Y2VfdGltZW91dCA9IDIiID4+IGV0Yy9wZ3Bvb2wuY29uZgorCisuL3N0YXJ0YWxsCit3YWl0X2Zv cl9wZ3Bvb2xfc3RhcnR1cAorCisjIFdhaXQgZm9yIHRpbWVvdXQKK2VjaG8gIldhaXRpbmcgZm9y IHRpbWVvdXQgdGVzdCAoMnMgdGltZW91dCwgNXMgY29tbWFuZCkuLi4iCitmb3IgaSBpbiB7MS4u MTB9OyBkbworICAgIGlmIGdyZXAgLXEgInJlcGxpY2F0aW9uIGRlbGF5IGNvbW1hbmQgdGltZWQg b3V0IGFmdGVyIDIgc2Vjb25kcyIgbG9nL3BncG9vbC5sb2cgMj4vZGV2L251bGw7IHRoZW4KKyAg ICAgICAgZWNobyAiVGltZW91dCBkZXRlY3RlZCBhZnRlciAke2l9IHNlY29uZHMiCisgICAgICAg IGJyZWFrCisgICAgZmkKKyAgICBzbGVlcCAxCitkb25lCisKKyMgQ2hlY2sgZm9yIHRpbWVvdXQg bWVzc2FnZQorZ3JlcCAicmVwbGljYXRpb24gZGVsYXkgY29tbWFuZCB0aW1lZCBvdXQgYWZ0ZXIg MiBzZWNvbmRzIiBsb2cvcGdwb29sLmxvZyA+L2Rldi9udWxsIDI+JjEKK2lmIFsgJD8gIT0gMCBd O3RoZW4KKyAgICBlY2hvIGZhaWw6IHRpbWVvdXQgbm90IGRldGVjdGVkCisgICAgLi9zaHV0ZG93 bmFsbAorICAgIGV4aXQgMQorZmkKKworZWNobyBvazogdGltZW91dCB0ZXN0IHN1Y2NlZWRlZAor Li9zaHV0ZG93bmFsbAorCisjIFRlc3Qgd2l0aCB0aW1lb3V0IGxvbmdlciB0aGFuIGNvbW1hbmQg ZHVyYXRpb24KK3NlZCAtaS5iYWsgInN8cmVwbGljYXRpb25fZGVsYXlfc291cmNlX3RpbWVvdXQg PSAyfHJlcGxpY2F0aW9uX2RlbGF5X3NvdXJjZV90aW1lb3V0ID0gMTB8IiBldGMvcGdwb29sLmNv bmYKKworLi9zdGFydGFsbAord2FpdF9mb3JfcGdwb29sX3N0YXJ0dXAKKworIyBXYWl0IGZvciBz dWNjZXNzZnVsIGV4ZWN1dGlvbgorZWNobyAiV2FpdGluZyBmb3Igc3VjY2Vzc2Z1bCBleGVjdXRp b24gKDEwcyB0aW1lb3V0LCA1cyBjb21tYW5kKS4uLiIKK2ZvciBpIGluIHsxLi4xNX07IGRvCisg ICAgaWYgZ3JlcCAtcSAiZXhlY3V0aW5nIHJlcGxpY2F0aW9uIGRlbGF5IGNvbW1hbmQuKmRlbGF5 X2NtZF90aW1lb3V0LnNoIiBsb2cvcGdwb29sLmxvZyAyPi9kZXYvbnVsbDsgdGhlbgorICAgICAg ICBlY2hvICJDb21tYW5kIGV4ZWN1dGVkIHN1Y2Nlc3NmdWxseSBhZnRlciAke2l9IHNlY29uZHMi CisgICAgICAgIGJyZWFrCisgICAgZmkKKyAgICBzbGVlcCAxCitkb25lCisKKyMgU2hvdWxkIG5v dCB0aW1lb3V0IHRoaXMgdGltZQoraWYgZ3JlcCAtcSAicmVwbGljYXRpb24gZGVsYXkgY29tbWFu ZCB0aW1lZCBvdXQiIGxvZy9wZ3Bvb2wubG9nIDI+L2Rldi9udWxsOyB0aGVuCisgICAgZWNobyBm YWlsOiBjb21tYW5kIHNob3VsZCBub3QgaGF2ZSB0aW1lZCBvdXQgd2l0aCAxMHMgdGltZW91dAor ICAgIC4vc2h1dGRvd25hbGwKKyAgICBleGl0IDEKK2ZpCisKK2VjaG8gb2s6IGV4dGVuZGVkIHRp bWVvdXQgdGVzdCBzdWNjZWVkZWQKKy4vc2h1dGRvd25hbGwKKworIyAtLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCitlY2hvICI9PT0gVGVzdDc6IE1peCBvZiB2YWxpZCBkZWxheXMgYW5k IC0xID09PSIKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorY2F0ID4gZGVsYXlf Y21kX21peGVkLnNoIDw8ICdFT0YnCisjIS9iaW4vYmFzaAorIyBPbmUgcmVwbGljYSB1cCAoMjVt cyksIG9uZSBkb3duICgtMSkKK2VjaG8gIjI1IC0xIgorRU9GCitjaG1vZCAreCBkZWxheV9jbWRf bWl4ZWQuc2gKKworc2VkIC1pLmJhayAic3xkZWxheV9jbWRfdGltZW91dC5zaHxkZWxheV9jbWRf bWl4ZWQuc2h8IiBldGMvcGdwb29sLmNvbmYKKworLi9zdGFydGFsbAord2FpdF9mb3JfcGdwb29s X3N0YXJ0dXAKKworIyBXYWl0IGZvciBzcl9jaGVjaworZWNobyAiV2FpdGluZyBmb3IgbWl4ZWQg ZGVsYXkgdGVzdC4uLiIKK2ZvciBpIGluIHsxLi4xMH07IGRvCisgICAgaWYgZ3JlcCAtcSAibm9k ZS4qcmVwb3J0ZWQgYXMgZG93biBieSBleHRlcm5hbCBjb21tYW5kIiBsb2cvcGdwb29sLmxvZyAy Pi9kZXYvbnVsbDsgdGhlbgorICAgICAgICBlY2hvICJNaXhlZCBkZWxheSBoYW5kbGluZyBkZXRl Y3RlZCBhZnRlciAke2l9IHNlY29uZHMiCisgICAgICAgIGJyZWFrCisgICAgZmkKKyAgICBzbGVl cCAxCitkb25lCisKKyMgU2hvdWxkIGxvZyBvbmUgLTEgYW5kIHByb2Nlc3Mgb25lIG5vcm1hbCBk ZWxheQorZ3JlcCAibm9kZS4qcmVwb3J0ZWQgYXMgZG93biBieSBleHRlcm5hbCBjb21tYW5kLipk ZWxheSAtMSIgbG9nL3BncG9vbC5sb2cgPi9kZXYvbnVsbCAyPiYxCitpZiBbICQ/ICE9IDAgXTt0 aGVuCisgICAgZWNobyBmYWlsOiAtMSBub3QgbG9nZ2VkCisgICAgLi9zaHV0ZG93bmFsbAorICAg IGV4aXQgMQorZmkKKworIyBTaG91bGQgYWxzbyBsb2cgdGhlIG5vcm1hbCByZXBsaWNhIGRlbGF5 CitncmVwICJSZXBsaWNhdGlvbiBvZiBub2RlLipleHRlcm5hbCBjb21tYW5kIiBsb2cvcGdwb29s LmxvZyA+L2Rldi9udWxsIDI+JjEKK2lmIFsgJD8gIT0gMCBdO3RoZW4KKyAgICBlY2hvICJOb3Rl OiBOb3JtYWwgcmVwbGljYSBkZWxheSBsb2dnaW5nIG1heSBub3QgYmUgdmlzaWJsZSB3aXRoIGxv Z19zdGFuZGJ5X2RlbGF5IHNldHRpbmdzIgorZmkKKworZWNobyBvazogbWl4ZWQgZGVsYXkgaGFu ZGxpbmcgdGVzdCBzdWNjZWVkZWQKKy4vc2h1dGRvd25hbGwKKworZWNobyAiQWxsIHZhbGlkYXRp b24gdGVzdHMgcGFzc2VkISIKK2V4aXQgMApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKLS0g CjIuNTIuMAoK --0000000000002f6723064713e83c--