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.98.2) (envelope-from ) id 1x9u8j-00000002JTy-1J5p for pgsql-bugs@arkaria.postgresql.org; Fri, 25 Sep 2026 00:50:13 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.98.2) (envelope-from ) id 1x9u8i-0000000FUrw-0bLD for pgsql-bugs@arkaria.postgresql.org; Fri, 25 Sep 2026 00:50:12 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.98.2) (envelope-from ) id 1x9u8h-0000000FUro-3SO9 for pgsql-bugs@lists.postgresql.org; Fri, 25 Sep 2026 00:50:11 +0000 Received: from mail-ua2-x1f.google.com ([2a00:1450:4864:39::1f]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1x9u8f-000000019Sa-0uXq for pgsql-bugs@lists.postgresql.org; Fri, 25 Sep 2026 00:50:11 +0000 Received: by mail-ua2-x1f.google.com with SMTP id a1e0cc1a2514c-9851556e278so3260241.0 for ; Thu, 24 Sep 2026 17:50:08 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1790297407; x=1790902207; darn=lists.postgresql.org; h=content-type:mime-version:references:in-reply-to:message-id:date :subject:cc:to:from:from:to:cc:subject:date:message-id:reply-to :content-type; bh=B9cbDd1PzB4VO/hqtuqmCB+xPqO0Yls2uandphMrE5A=; b=RI9W0HAaHy0QG3h2/1UWmbnWhWCLxnPJfRHZbuReXoNXdIbgCtHjsyN8jYcYsCII2S Mbw4ByAGVzg5DaK6//TW4FoYdr12njG8UqIX8RQVHNF5xFGWPM2Bh2o8vTza2LrRw01N NFVP74u05xoFppBVkmcRc2fSzTQ7kKHfVpWWRbarvskI5/huNt9wSC4ZwIL60+Z9iHcD Qxt4+rlWQCu4539NVbkNtVUheKr7JBnDySOL646ffxFT2IffAlTt4tm4bcZmlbG7Fm1V +lwr4/a8vGMXwdNmp2S0tCS2jILussdC0KYk6zFbqeGNlsX9aHDGlUq/PMwfowv1CiQA d9gQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20260707; t=1790297407; x=1790902207; h=content-type:mime-version:references:in-reply-to:message-id:date :subject:cc:to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject :date:message-id:reply-to:content-type; bh=B9cbDd1PzB4VO/hqtuqmCB+xPqO0Yls2uandphMrE5A=; b=p/2BEjH9jYFFUQ9Cstsi+jcLs4Knqp6EnBc2gCWHIAKcamnBd/LcXf8x/hOUaAcZ1V ixz4H/70bGUreyiENuXO0Ssyb7jYZf7JOOORqmDrSnn/7hz7BBndhfwRE6qMPNwqTv3e 3kRwtrLxF4N7JpneeZFx+p8+gAbDnWmBSqtcyIMJ+/G3VJ5qR6zsNAoZm7rxW7aiRuFC qnWNI1Jok7l29BHWSzK8CiXO8lgiusMwZh/fnF8nYvGFKBoNW7ykTmfEMYeDIgS1yteR 6G85gmU+M4Um0oCS6BECjWDHM5YvCekx5Fdli7Z/OQMNB+Kd1pL+ByclSjIHtz/bQvbK gWuw== X-Forwarded-Encrypted: i=1; AKwUvBw9CL/nCG+6dqBOocIjvWWtAJK1bdBR54LLYAxlLWJchRA2seaYp6iXuwf70AoPBwrJWxw7w3Os0p5X@lists.postgresql.org X-Gm-Message-State: AFuF++n3Uxm7Nzite9uYJGZZKgt+qzOhJNj1R7j9Kd80T/LUxcX4QSXI 2LykfTSVcnzBt8OsQmCqmm3UrW1CpHuLEvHIxKcrGAtBkjRVKg+siWU2 X-Gm-Gg: AYBFou33AlXpxCMZ6j94sAgpz+OGdxQwo9TUTd31b+WtD5+3SIzcKxntSfqFiQt4ON+ 5DI52peXFBBEXJdTWsy5zw4SbtsAMPlYspjw2b2dNyWNOedJUbsqncVV0OtWbHTVPwVK/XUlxoH zGhLC9jWrMc8/3Q9f4EHWQb/n+fhcyN9Gf81qmFVGQrmjjV8oaNmIQD/7IkKd1nX4Y4c3r6UNuP aEf6BDri2qeksnbPvdcOqxUyg6A/V57zbLeslsgVSuqbDpnifpiq1HWS3SrrqGyZXcfoHLnzdgy 0GfSj16gwwHCx3GqjxKOn0690pnt6umUMDBcqHXba5BCb0RTfnG5e3hRi1H2e5hfa32m1V7hONb bmuXvmNbkJD0E1j9IB9qqfeP2Ij1196o8VkhQyz+V826u7MavcM68V4Pctx9398EZXe/RNWInZc DySf6zJ3LTG6FwJ3P6YX6B3LgPBHJwU0PWm/fFt6uoW+PETpFP9TWRRiT8tWTuyTPfH08Q8Xyhl 5AJMQN1Ifvkalcuqu1NMliWak3ovctfZ/2hYd9EE5I29RD1zD83WHoI+gY5Ma2xEd1JjsYipjyB X0PeJgV802Hppq5KtbqU7NE= X-Received: by 2002:a05:6102:c0f:b0:7a7:326b:688d with SMTP id ada2fe7eead31-7b08e131b49mr417890137.2.1790297407207; Thu, 24 Sep 2026 17:50:07 -0700 (PDT) Received: from 192.168.1.109 ([190.12.169.171]) by smtp.gmail.com with ESMTPSA id a1e0cc1a2514c-9861afee4c1sm860265241.7.2026.09.24.17.50.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 24 Sep 2026 17:50:06 -0700 (PDT) From: Manu To: Masahiko Sawada Cc: Daniel Gustafsson , Bharath Rupireddy , Nikolay Samokhvalov , Zsolt Parragi , pgsql-bugs@lists.postgresql.org Subject: Re: autovacuum: automatically propagate updated parameters Date: Thu, 24 Sep 2026 21:50:02 -0300 Message-ID: <179029740211.4041151.3406196415226766626@gmail.com> In-Reply-To: References: MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="===============5152859019181651828==" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --===============5152859019181651828== Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 7bit Hi, Masahiko Sawada wrote: > While it's a good idea to wake the leader up instead of polling, I'm a > bit concerned that we call SetLatch() on all autovacuum workers > participating in cost balancing, whereas we need it only in a narrow > situation: when the worker is participating in cost balancing, using > parallel vacuum, and waiting for its parallel workers to finish. I wanted to know how narrow, so I logged every SetLatch() that v3 adds, with the target's wait event and whether its latch was already set (the log line is in the attachment, on top of v3, REL_19_STABLE e60ee52841d). Load: autovacuum_max_workers = 3, three databases with the same 120 small tables each (every third table with its own autovacuum_vacuum_cost_limit, so it is not in the balance) plus one table with three indexes and autovacuum_parallel_workers = 2, updated in rounds for 120 s. That gave 14506 table vacuums, 28 of them parallel. SetLatch() calls: 10066 on the calling worker itself: 4871 on another worker: 5195 waiting in ParallelFinish: 235 in VacuumDelay: 4635 anything else: 325 other-worker latch already set: 4724 ParallelFinish latch already set: 1 Workers made 10001 of the calls and the launcher 65. The count moves every time a worker starts a table that is in the balance or not, often 2 -> 3 -> 2 within a few milliseconds, and v3 turns each move into a SetLatch() on every balanced worker. So you are right that almost none of them are needed: 235 out of 5195 reach a leader that is waiting. The cost is smaller than the count suggests, though. A worker that is vacuuming sleeps with pg_usleep() and does not reset its latch, so 4724 of those calls found it already set and changed nothing. That leaves 237 new spurious sets in 120 s across all workers, each costing at most one early return from the worker's next wait. Workers already get the same from a config reload, since SignalHandlerForConfigReload() does SetLatch(MyLatch). With a single database, only one worker ran at a time and every call was on the caller itself. Those 4871 calls are never needed, because the caller runs VacuumUpdateCosts() right after the recalculation. If the SetLatch() stays, skipping wi_proc == MyProc removes about half of them. With the condition variable you describe, none of this applies, and only the 235 waiting leaders would be woken. The script, the log line and the full results are in the attachment. Regards, Manu --===============5152859019181651828== Content-Type: text/plain Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="nocfbot-av-setlatch-targets.txt" MIME-Version: 1.0 V2hvIHJlY2VpdmVzIHRoZSBTZXRMYXRjaCgpIHRoYXQgdjMgYWRkcyB0byBhdXRvdmFjX3JlY2Fs Y3VsYXRlX3dvcmtlcnNfZm9yX2JhbGFuY2UoKQpSRUxfMTlfU1RBQkxFIGU2MGVlNTI4NDFkICsg djMsIC0tZW5hYmxlLWNhc3NlcnQgLS1lbmFibGUtaW5qZWN0aW9uLXBvaW50cwoKPT09PT0gaW5z dHJ1bWVudC5kaWZmIChsb2dnaW5nIG9ubHksIG9uIHRvcCBvZiB2MykgPT09PT0KLS0tIGEvc3Jj L2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMgKHYzKQorKysgYi9zcmMvYmFja2VuZC9w b3N0bWFzdGVyL2F1dG92YWN1dW0uYyAodjMgKyBsb2cpCkBAIC0xODM1LDYgKzE4MzUsMTYgQEAK IAkJCQlwZ19hdG9taWNfdW5sb2NrZWRfdGVzdF9mbGFnKCZ3b3JrZXItPndpX2RvYmFsYW5jZSkp CiAJCQkJY29udGludWU7CiAKKwkJCXsKKwkJCQljb25zdCBjaGFyICp3ZSA9IHBnc3RhdF9nZXRf d2FpdF9ldmVudCh3b3JrZXItPndpX3Byb2MtPndhaXRfZXZlbnRfaW5mbyk7CisKKwkJCQllbG9n KExPRywgIkFWTEFUQ0ggY2FsbGVyPSVzIGNvdW50PSVkLT4lZCB0YXJnZXQ9JWQgc2VsZj0lZCBh bHJlYWR5X3NldD0lZCB3YWl0PSVzIiwKKwkJCQkJIEFtQXV0b1ZhY3V1bUxhdW5jaGVyUHJvY2Vz cygpID8gImxhdW5jaGVyIiA6ICJ3b3JrZXIiLAorCQkJCQkgb3JpZ19ud29ya2Vyc19mb3JfYmFs YW5jZSwgbndvcmtlcnNfZm9yX2JhbGFuY2UsCisJCQkJCSB3b3JrZXItPndpX3Byb2MtPnBpZCwg d29ya2VyLT53aV9wcm9jID09IE15UHJvYywKKwkJCQkJIChpbnQpIHdvcmtlci0+d2lfcHJvYy0+ cHJvY0xhdGNoLmlzX3NldCwKKwkJCQkJIHdlID8gd2UgOiAibm9uZSIpOworCQkJfQogCQkJU2V0 TGF0Y2goJndvcmtlci0+d2lfcHJvYy0+cHJvY0xhdGNoKTsKIAkJfQogCX0KCj09PT09IGxhdGNo Y291bnQuc2ggPT09PT0KIyEvYmluL2Jhc2gKIyBXaG8gcmVjZWl2ZXMgdGhlIFNldExhdGNoKCkg dGhhdCB2MyBhZGRzIHRvCiMgYXV0b3ZhY19yZWNhbGN1bGF0ZV93b3JrZXJzX2Zvcl9iYWxhbmNl KCksIGFuZCB3aGF0IGVhY2ggdGFyZ2V0IHdhcyBkb2luZwojIGF0IHRoYXQgbW9tZW50LCB1bmRl ciBhbiBvcmRpbmFyeSBhdXRvdmFjdXVtIGxvYWQuCiMKIyBCdWlsZDogdjMgcGx1cyBvbmUgZWxv ZyhMT0cpIGJlZm9yZSB0aGF0IFNldExhdGNoKCkgKGluc3RydW1lbnQuZGlmZiksCiMgcHJpbnRp bmcgdGhlIGNhbGxlciwgdGhlIG9sZCBhbmQgbmV3IGNvdW50LCB0aGUgdGFyZ2V0IHBpZCBhbmQg dGhlCiMgdGFyZ2V0J3Mgd2FpdCBldmVudCByZWFkIGZyb20gaXRzIFBHUFJPQy4KIwojIExvYWQ6 IDMgd29ya2VycywgMTIwIHNtYWxsIHRhYmxlcyAoZXZlcnkgdGhpcmQgb25lIHdpdGggaXRzIG93 bgojIGF1dG92YWN1dW1fdmFjdXVtX2Nvc3RfbGltaXQsIHNvIGl0IGlzIG5vdCBpbiB0aGUgYmFs YW5jZSBhbmQgdGhlIGNvdW50CiMgY2hhbmdlcyBhcyB3b3JrZXJzIG1vdmUgYmV0d2VlbiB0YWJs ZXMpLCBhbmQgb25lIGxhcmdlciB0YWJsZSB3aXRoIHRocmVlCiMgaW5kZXhlcyBhbmQgYXV0b3Zh Y3V1bV9wYXJhbGxlbF93b3JrZXJzID0gMiwgc28gYSBsZWFkZXIgc29tZXRpbWVzIHdhaXRzCiMg aW4gUGFyYWxsZWxGaW5pc2guICBUaGUgdGFibGVzIGFyZSB1cGRhdGVkIGluIHJvdW5kcyBmb3Ig RFVSQVRJT04gc2Vjb25kcy4KIyBOREIgZGF0YWJhc2VzIGdldCB0aGUgc2FtZSB0YWJsZXMsIHNv IHVwIHRvIHRocmVlIHdvcmtlcnMgcnVuIGF0IG9uY2UuCiMgICBsYXRjaGNvdW50LnNoIFtEVVJB VElPTl0gW05EQl0Kc2V0IC11CkRVUkFUSU9OPSR7MTotMTIwfQpOREI9JHsyOi0xfQpBPSQoY2Qg IiQoZGlybmFtZSAiJDAiKSIgJiYgcHdkKQpJPSRIT01FL3BnYXYvaS16c2luc3QvYmluCkQ9JCht a3RlbXAgLWQgL3RtcC9jbGF1ZGUtMTAwMC9sYy5YWFhYKTsgUD01NTQ0MQoiJEkvaW5pdGRiIiAt RCAkRCAtQSB0cnVzdCAtLW5vLXN5bmMgLVUgcG9zdGdyZXMgPi9kZXYvbnVsbApjYXQgPj4gJEQv cG9zdGdyZXNxbC5jb25mIDw8RU9GCnBvcnQgPSAkUAp1bml4X3NvY2tldF9kaXJlY3RvcmllcyA9 ICcvdG1wJwphdXRvdmFjdXVtX21heF93b3JrZXJzID0gMwphdXRvdmFjdXVtX21heF9wYXJhbGxl bF93b3JrZXJzID0gMgptYXhfd29ya2VyX3Byb2Nlc3NlcyA9IDE2Cm1heF9wYXJhbGxlbF93b3Jr ZXJzID0gOAphdXRvdmFjdXVtX25hcHRpbWUgPSAnMXMnCmF1dG92YWN1dW1fdmFjdXVtX2Nvc3Rf bGltaXQgPSAyMDAKYXV0b3ZhY3V1bV92YWN1dW1fY29zdF9kZWxheSA9ICcybXMnCmF1dG92YWN1 dW1fdmFjdXVtX3RocmVzaG9sZCA9IDUwCmF1dG92YWN1dW1fdmFjdXVtX3NjYWxlX2ZhY3RvciA9 IDAKYXV0b3ZhY3V1bV9hbmFseXplX3RocmVzaG9sZCA9IDEwMDAwMDAwMDAKbWluX3BhcmFsbGVs X2luZGV4X3NjYW5fc2l6ZSA9IDAKbG9nX2F1dG92YWN1dW1fbWluX2R1cmF0aW9uID0gMApsb2df bGluZV9wcmVmaXggPSAnJW0gWyVwXSAnCkVPRgoiJEkvcGdfY3RsIiAtRCAkRCAtbCAkRC9sb2cg LXcgc3RhcnQgPi9kZXYvbnVsbApxKCkgeyAiJEkvcHNxbCIgLVggLXFBdCAtaCAvdG1wIC1wICRQ IC1VIHBvc3RncmVzICIkQCI7IH0KCnsKICBmb3IgbiBpbiAkKHNlcSAxIDEyMCk7IGRvCiAgICBp ZiBbICQoKG4gJSAzKSkgPSAwIF07IHRoZW4gb3B0PSJXSVRIIChhdXRvdmFjdXVtX3ZhY3V1bV9j b3N0X2xpbWl0ID0gNTAwKSI7IGVsc2Ugb3B0PSIiOyBmaQogICAgZWNobyAiQ1JFQVRFIFRBQkxF IHMkbiAoaWQgaW50IFBSSU1BUlkgS0VZLCB2IGludCkgJG9wdDsiCiAgICBlY2hvICJJTlNFUlQg SU5UTyBzJG4gU0VMRUNUIGcsIGcgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMzAwMCkgZzsiCiAg ZG9uZQogIGVjaG8gIkNSRUFURSBUQUJMRSBiaWcgKGlkIGludCBQUklNQVJZIEtFWSwgYSBpbnQs IGIgaW50LCBjIGludCkgV0lUSCAoYXV0b3ZhY3V1bV9wYXJhbGxlbF93b3JrZXJzID0gMik7Igog IGVjaG8gIklOU0VSVCBJTlRPIGJpZyBTRUxFQ1QgZywgZywgZywgZyBGUk9NIGdlbmVyYXRlX3Nl cmllcygxLCA0MDAwMDApIGc7IgogIGVjaG8gIkNSRUFURSBJTkRFWCBiaWdfYSBPTiBiaWcgKGEp OyBDUkVBVEUgSU5ERVggYmlnX2IgT04gYmlnIChiKTsgQ1JFQVRFIElOREVYIGJpZ19jIE9OIGJp ZyAoYyk7Igp9ID4gJEQvc2V0dXAuc3FsCkRCUz1wb3N0Z3Jlcwpmb3IgayBpbiAkKHNlcSAyICRO REIpOyBkbyBxIC1jICJDUkVBVEUgREFUQUJBU0UgZCRrIjsgREJTPSIkREJTIGQkayI7IGRvbmUK Zm9yIGRiIGluICREQlM7IGRvIHEgLWQgJGRiIC1mICREL3NldHVwLnNxbDsgZG9uZQoKIyBPbmUg cm91bmQgZGlydGllcyBldmVyeSBzbWFsbCB0YWJsZTsgZXZlcnkgZmlmdGggcm91bmQgYWxzbyBk aXJ0aWVzIGJpZy4KZm9yIG4gaW4gJChzZXEgMSAxMjApOyBkbyBlY2hvICJVUERBVEUgcyRuIFNF VCB2ID0gdiArIDEgV0hFUkUgaWQgPD0gNTAwOyI7IGRvbmUgPiAkRC9yb3VuZC5zcWwKZWNobyAi VVBEQVRFIGJpZyBTRVQgYSA9IGEgKyAxIFdIRVJFIGlkICUgNCA9IDA7IiA+ICREL2JpZy5zcWwK Cm9mZj0kKHN0YXQgLWMgJXMgJEQvbG9nKQplbmQ9JCgoICQoZGF0ZSArJXMpICsgRFVSQVRJT04g KSk7IHI9MAp3aGlsZSBbICIkKGRhdGUgKyVzKSIgLWx0ICRlbmQgXTsgZG8KICBmb3IgZGIgaW4g JERCUzsgZG8gcSAtZCAkZGIgLWYgJEQvcm91bmQuc3FsICYgZG9uZTsgd2FpdAogIGlmIFsgJCgo ciAlIDUpKSA9IDAgXTsgdGhlbiBmb3IgZGIgaW4gJERCUzsgZG8gcSAtZCAkZGIgLWYgJEQvYmln LnNxbCAmIGRvbmU7IHdhaXQ7IGZpCiAgcj0kKChyICsgMSkpOyBzbGVlcCAyCmRvbmUKc2xlZXAg NQp0YWlsIC1jICskKChvZmYgKyAxKSkgJEQvbG9nID4gJEEvbGF0Y2hjb3VudC5uZGIkTkRCLnNl cnZlci5sb2cKIiRJL3BnX2N0bCIgLUQgJEQgLW0gZmFzdCAtdyBzdG9wID4vZGV2L251bGwKcm0g LXJmICRECgpMPSRBL2xhdGNoY291bnQubmRiJE5EQi5zZXJ2ZXIubG9nCnsKICBlY2hvICJkdXJh dGlvbiAke0RVUkFUSU9OfXMsICROREIgZGF0YWJhc2UocyksICRyIHVwZGF0ZSByb3VuZHMiCiAg ZWNobyAidGFibGVzIHZhY3V1bWVkOiAgICAgICAgJChncmVwIC1jICdhdXRvbWF0aWMgdmFjdXVt IG9mIHRhYmxlJyAkTCkiCiAgZWNobyAiICBvZiB0aGVtIGJpZyAocGFyYWxsZWwpOiAkKGdyZXAg LWMgJ2F1dG9tYXRpYyB2YWN1dW0gb2YgdGFibGUgIlthLXowLTldKi5wdWJsaWMuYmlnIicgJEwp IgogIGVjaG8gIlNldExhdGNoKCkgY2FsbHM6ICAgICAgICQoZ3JlcCAtYyBBVkxBVENIICRMKSIK ICBlY2hvICIgIHRhcmdldCBpcyB0aGUgY2FsbGVyIGl0c2VsZjogJChncmVwIEFWTEFUQ0ggJEwg fCBncmVwIC1jICdzZWxmPTEnKSIKICBlY2hvICIgIHRhcmdldCBpcyBhbm90aGVyIHdvcmtlcjog ICAgJChncmVwIEFWTEFUQ0ggJEwgfCBncmVwIC1jICdzZWxmPTAnKSIKICBlY2hvICIgIGJ5IGNh bGxlcjoiCiAgZ3JlcCBBVkxBVENIICRMIHwgZ3JlcCAtbyAnY2FsbGVyPVthLXpdKicgfCBzb3J0 IHwgdW5pcSAtYyB8IHNlZCAncy9eLyAgICAvJwogIGVjaG8gIiAgb3RoZXItd29ya2VyIHRhcmdl dHMgd2hvc2UgbGF0Y2ggd2FzIGFscmVhZHkgc2V0OiAkKGdyZXAgQVZMQVRDSCAkTCB8IGdyZXAg J3NlbGY9MCcgfCBncmVwIC1jICdhbHJlYWR5X3NldD0xJykiCiAgZWNobyAiICBQYXJhbGxlbEZp bmlzaCB0YXJnZXRzIHdob3NlIGxhdGNoIHdhcyBhbHJlYWR5IHNldDogJChncmVwIEFWTEFUQ0gg JEwgfCBncmVwICd3YWl0PVBhcmFsbGVsRmluaXNoJyB8IGdyZXAgLWMgJ2FscmVhZHlfc2V0PTEn KSIKICBlY2hvICIgIG90aGVyLXdvcmtlciB0YXJnZXRzLCBieSB3YWl0IGV2ZW50IGF0IHRoYXQg bW9tZW50OiIKICBncmVwIEFWTEFUQ0ggJEwgfCBncmVwICdzZWxmPTAnIHwgZ3JlcCAtbyAnd2Fp dD1bQS1aYS16XSonIHwgc29ydCB8IHVuaXEgLWMgfCBzb3J0IC1ybiB8IHNlZCAncy9eLyAgICAv JwogIGVjaG8gImRpc3RpbmN0IHdvcmtlciBwaWRzOiAkKGdyZXAgJ2F1dG9tYXRpYyB2YWN1dW0g b2YgdGFibGUnICRMIHwgZ3JlcCAtbyAnXFtbMC05XSpcXScgfCBzb3J0IC11IHwgd2MgLWwpIgp9 IHwgdGVlICRBL2xhdGNoY291bnQubmRiJE5EQi50eHQKCj09PT09IC4vbGF0Y2hjb3VudC5zaCAx MjAgMyA9PT09PQpkdXJhdGlvbiAxMjBzLCAzIGRhdGFiYXNlKHMpLCA0NSB1cGRhdGUgcm91bmRz CnRhYmxlcyB2YWN1dW1lZDogICAgICAgIDE0NTA2CiAgb2YgdGhlbSBiaWcgKHBhcmFsbGVsKTog MjgKU2V0TGF0Y2goKSBjYWxsczogICAgICAgMTAwNjYKICB0YXJnZXQgaXMgdGhlIGNhbGxlciBp dHNlbGY6IDQ4NzEKICB0YXJnZXQgaXMgYW5vdGhlciB3b3JrZXI6ICAgIDUxOTUKICBieSBjYWxs ZXI6CiAgICAgICAgIDY1IGNhbGxlcj1sYXVuY2hlcgogICAgICAxMDAwMSBjYWxsZXI9d29ya2Vy CiAgb3RoZXItd29ya2VyIHRhcmdldHMgd2hvc2UgbGF0Y2ggd2FzIGFscmVhZHkgc2V0OiA0NzI0 CiAgUGFyYWxsZWxGaW5pc2ggdGFyZ2V0cyB3aG9zZSBsYXRjaCB3YXMgYWxyZWFkeSBzZXQ6IDEK ICBvdGhlci13b3JrZXIgdGFyZ2V0cywgYnkgd2FpdCBldmVudCBhdCB0aGF0IG1vbWVudDoKICAg ICAgIDQ2MzUgd2FpdD1WYWN1dW1EZWxheQogICAgICAgIDIzNSB3YWl0PVBhcmFsbGVsRmluaXNo CiAgICAgICAgMTE3IHdhaXQ9bm9uZQogICAgICAgICA5NiB3YWl0PUFpb0lvQ29tcGxldGlvbgog ICAgICAgICA2NiB3YWl0PVdBTFdyaXRlCiAgICAgICAgIDIxIHdhaXQ9V2FsV3JpdGUKICAgICAg ICAgMTMgd2FpdD1CdWZmZXJFeGNsdXNpdmUKICAgICAgICAgMTAgd2FpdD1EYXRhRmlsZVdyaXRl CiAgICAgICAgICAxIHdhaXQ9V0FMQnVmTWFwcGluZwogICAgICAgICAgMSB3YWl0PURhdGFGaWxl UmVhZApkaXN0aW5jdCB3b3JrZXIgcGlkczogMTQ4Cgooc2VsZj0xIGNhbGxzIHdob3NlIGxhdGNo IHdhcyBhbHJlYWR5IHNldDogODE0KQoKPT09PT0gLi9sYXRjaGNvdW50LnNoIDEyMCAxIChlYXJs aWVyIGJ1aWxkOiBzYW1lIGxvZyBsaW5lIHdpdGhvdXQgYWxyZWFkeV9zZXQpID09PT09CmR1cmF0 aW9uIDEyMHMsIDU0IHVwZGF0ZSByb3VuZHMKdGFibGVzIHZhY3V1bWVkOiAgICAgICAgNjYxMwog IG9mIHRoZW0gYmlnIChwYXJhbGxlbCk6IDEyClNldExhdGNoKCkgY2FsbHM6ICAgICAgIDIyMTIK ICB0YXJnZXQgaXMgdGhlIGNhbGxlciBpdHNlbGY6IDIyMTIKICB0YXJnZXQgaXMgYW5vdGhlciB3 b3JrZXI6ICAgIDAKICBieSBjYWxsZXI6CiAgICAgICAyMjEyIGNhbGxlcj13b3JrZXIKICBvdGhl ci13b3JrZXIgdGFyZ2V0cywgYnkgd2FpdCBldmVudCBhdCB0aGF0IG1vbWVudDoKCj09PT09IHNh bXBsZSBvZiB0aGUgbG9nLCAzIGRhdGFiYXNlcyA9PT09PQoyMDI2LTA5LTI0IDIxOjM1OjA2LjI2 MyAtMDMgWzM3NzM1MTldIExPRzogIEFWTEFUQ0ggY2FsbGVyPXdvcmtlciBjb3VudD0yLT4zIHRh cmdldD0zNzczNTE5IHNlbGY9MSBhbHJlYWR5X3NldD0wIHdhaXQ9bm9uZQoyMDI2LTA5LTI0IDIx OjM1OjA2LjI2MyAtMDMgWzM3NzM1MTldIExPRzogIEFWTEFUQ0ggY2FsbGVyPXdvcmtlciBjb3Vu dD0yLT4zIHRhcmdldD0zNzcyNDI1IHNlbGY9MCBhbHJlYWR5X3NldD0xIHdhaXQ9VmFjdXVtRGVs YXkKMjAyNi0wOS0yNCAyMTozNTowNi4yNjMgLTAzIFszNzczNTE5XSBMT0c6ICBBVkxBVENIIGNh bGxlcj13b3JrZXIgY291bnQ9Mi0+MyB0YXJnZXQ9Mzc3MjMyNyBzZWxmPTAgYWxyZWFkeV9zZXQ9 MSB3YWl0PVZhY3V1bURlbGF5CjIwMjYtMDktMjQgMjE6MzU6MDYuMjY4IC0wMyBbMzc3MzUxOV0g TE9HOiAgQVZMQVRDSCBjYWxsZXI9d29ya2VyIGNvdW50PTMtPjIgdGFyZ2V0PTM3NzI0MjUgc2Vs Zj0wIGFscmVhZHlfc2V0PTEgd2FpdD1WYWN1dW1EZWxheQoyMDI2LTA5LTI0IDIxOjM1OjA2LjI2 OCAtMDMgWzM3NzM1MTldIExPRzogIEFWTEFUQ0ggY2FsbGVyPXdvcmtlciBjb3VudD0zLT4yIHRh cmdldD0zNzcyMzI3IHNlbGY9MCBhbHJlYWR5X3NldD0xIHdhaXQ9VmFjdXVtRGVsYXkKMjAyNi0w OS0yNCAyMTozNTowNi4yNjggLTAzIFszNzczNTE5XSBMT0c6ICBBVkxBVENIIGNhbGxlcj13b3Jr ZXIgY291bnQ9Mi0+MyB0YXJnZXQ9Mzc3MzUxOSBzZWxmPTEgYWxyZWFkeV9zZXQ9MCB3YWl0PW5v bmUKMjAyNi0wOS0yNCAyMTozNTowNi4yNjggLTAzIFszNzczNTE5XSBMT0c6ICBBVkxBVENIIGNh bGxlcj13b3JrZXIgY291bnQ9Mi0+MyB0YXJnZXQ9Mzc3MjQyNSBzZWxmPTAgYWxyZWFkeV9zZXQ9 MSB3YWl0PVZhY3V1bURlbGF5CjIwMjYtMDktMjQgMjE6MzU6MDYuMjY4IC0wMyBbMzc3MzUxOV0g TE9HOiAgQVZMQVRDSCBjYWxsZXI9d29ya2VyIGNvdW50PTItPjMgdGFyZ2V0PTM3NzIzMjcgc2Vs Zj0wIGFscmVhZHlfc2V0PTEgd2FpdD1WYWN1dW1EZWxheQoyMDI2LTA5LTI0IDIxOjM1OjA2LjI3 NCAtMDMgWzM3NzM1MTldIExPRzogIEFWTEFUQ0ggY2FsbGVyPXdvcmtlciBjb3VudD0zLT4yIHRh cmdldD0zNzcyNDI1IHNlbGY9MCBhbHJlYWR5X3NldD0xIHdhaXQ9VmFjdXVtRGVsYXkKMjAyNi0w OS0yNCAyMTozNTowNi4yNzQgLTAzIFszNzczNTE5XSBMT0c6ICBBVkxBVENIIGNhbGxlcj13b3Jr ZXIgY291bnQ9My0+MiB0YXJnZXQ9Mzc3MjMyNyBzZWxmPTAgYWxyZWFkeV9zZXQ9MSB3YWl0PVZh Y3V1bURlbGF5CjIwMjYtMDktMjQgMjE6MzU6MDYuMjc0IC0wMyBbMzc3MzUxOV0gTE9HOiAgQVZM QVRDSCBjYWxsZXI9d29ya2VyIGNvdW50PTItPjMgdGFyZ2V0PTM3NzM1MTkgc2VsZj0xIGFscmVh ZHlfc2V0PTAgd2FpdD1ub25lCjIwMjYtMDktMjQgMjE6MzU6MDYuMjc0IC0wMyBbMzc3MzUxOV0g TE9HOiAgQVZMQVRDSCBjYWxsZXI9d29ya2VyIGNvdW50PTItPjMgdGFyZ2V0PTM3NzI0MjUgc2Vs Zj0wIGFscmVhZHlfc2V0PTEgd2FpdD1WYWN1dW1EZWxheQoyMDI2LTA5LTI0IDIxOjM1OjA2LjI3 NCAtMDMgWzM3NzM1MTldIExPRzogIEFWTEFUQ0ggY2FsbGVyPXdvcmtlciBjb3VudD0yLT4zIHRh cmdldD0zNzcyMzI3IHNlbGY9MCBhbHJlYWR5X3NldD0xIHdhaXQ9VmFjdXVtRGVsYXkKMjAyNi0w OS0yNCAyMTozNTowNi4yNzkgLTAzIFszNzczNTE5XSBMT0c6ICBBVkxBVENIIGNhbGxlcj13b3Jr ZXIgY291bnQ9My0+MiB0YXJnZXQ9Mzc3MjQyNSBzZWxmPTAgYWxyZWFkeV9zZXQ9MSB3YWl0PVZh Y3V1bURlbGF5CjIwMjYtMDktMjQgMjE6MzU6MDYuMjc5IC0wMyBbMzc3MzUxOV0gTE9HOiAgQVZM QVRDSCBjYWxsZXI9d29ya2VyIGNvdW50PTMtPjIgdGFyZ2V0PTM3NzIzMjcgc2VsZj0wIGFscmVh ZHlfc2V0PTEgd2FpdD1WYWN1dW1EZWxheQoyMDI2LTA5LTI0IDIxOjM1OjA2LjI4MCAtMDMgWzM3 NzM1MTldIExPRzogIEFWTEFUQ0ggY2FsbGVyPXdvcmtlciBjb3VudD0yLT4zIHRhcmdldD0zNzcz NTE5IHNlbGY9MSBhbHJlYWR5X3NldD0wIHdhaXQ9bm9uZQoyMDI2LTA5LTI0IDIxOjM1OjA2LjI4 MCAtMDMgWzM3NzM1MTldIExPRzogIEFWTEFUQ0ggY2FsbGVyPXdvcmtlciBjb3VudD0yLT4zIHRh cmdldD0zNzcyNDI1IHNlbGY9MCBhbHJlYWR5X3NldD0xIHdhaXQ9VmFjdXVtRGVsYXkKMjAyNi0w OS0yNCAyMTozNTowNi4yODAgLTAzIFszNzczNTE5XSBMT0c6ICBBVkxBVENIIGNhbGxlcj13b3Jr ZXIgY291bnQ9Mi0+MyB0YXJnZXQ9Mzc3MjMyNyBzZWxmPTAgYWxyZWFkeV9zZXQ9MSB3YWl0PVZh Y3V1bURlbGF5CjIwMjYtMDktMjQgMjE6MzU6MDYuMjg1IC0wMyBbMzc3MzUxOV0gTE9HOiAgQVZM QVRDSCBjYWxsZXI9d29ya2VyIGNvdW50PTMtPjIgdGFyZ2V0PTM3NzI0MjUgc2VsZj0wIGFscmVh ZHlfc2V0PTEgd2FpdD1WYWN1dW1EZWxheQoyMDI2LTA5LTI0IDIxOjM1OjA2LjI4NSAtMDMgWzM3 NzM1MTldIExPRzogIEFWTEFUQ0ggY2FsbGVyPXdvcmtlciBjb3VudD0zLT4yIHRhcmdldD0zNzcy MzI3IHNlbGY9MCBhbHJlYWR5X3NldD0xIHdhaXQ9VmFjdXVtRGVsYXkKMjAyNi0wOS0yNCAyMToz NTowNi4yODUgLTAzIFszNzczNTE5XSBMT0c6ICBBVkxBVENIIGNhbGxlcj13b3JrZXIgY291bnQ9 Mi0+MyB0YXJnZXQ9Mzc3MzUxOSBzZWxmPTEgYWxyZWFkeV9zZXQ9MCB3YWl0PW5vbmUKMjAyNi0w OS0yNCAyMTozNTowNi4yODUgLTAzIFszNzczNTE5XSBMT0c6ICBBVkxBVENIIGNhbGxlcj13b3Jr ZXIgY291bnQ9Mi0+MyB0YXJnZXQ9Mzc3MjQyNSBzZWxmPTAgYWxyZWFkeV9zZXQ9MSB3YWl0PVZh Y3V1bURlbGF5CjIwMjYtMDktMjQgMjE6MzU6MDYuMjg1IC0wMyBbMzc3MzUxOV0gTE9HOiAgQVZM QVRDSCBjYWxsZXI9d29ya2VyIGNvdW50PTItPjMgdGFyZ2V0PTM3NzIzMjcgc2VsZj0wIGFscmVh ZHlfc2V0PTEgd2FpdD1WYWN1dW1EZWxheQoyMDI2LTA5LTI0IDIxOjM1OjA2LjI5MCAtMDMgWzM3 NzM1MTldIExPRzogIEFWTEFUQ0ggY2FsbGVyPXdvcmtlciBjb3VudD0zLT4yIHRhcmdldD0zNzcy NDI1IHNlbGY9MCBhbHJlYWR5X3NldD0xIHdhaXQ9VmFjdXVtRGVsYXkKMjAyNi0wOS0yNCAyMToz NTowNi4yOTAgLTAzIFszNzczNTE5XSBMT0c6ICBBVkxBVENIIGNhbGxlcj13b3JrZXIgY291bnQ9 My0+MiB0YXJnZXQ9Mzc3MjMyNyBzZWxmPTAgYWxyZWFkeV9zZXQ9MSB3YWl0PVZhY3V1bURlbGF5 CjIwMjYtMDktMjQgMjE6MzU6MDYuMjkwIC0wMyBbMzc3MzUxOV0gTE9HOiAgQVZMQVRDSCBjYWxs ZXI9d29ya2VyIGNvdW50PTItPjMgdGFyZ2V0PTM3NzM1MTkgc2VsZj0xIGFscmVhZHlfc2V0PTAg d2FpdD1ub25lCjIwMjYtMDktMjQgMjE6MzU6MDYuMjkwIC0wMyBbMzc3MzUxOV0gTE9HOiAgQVZM QVRDSCBjYWxsZXI9d29ya2VyIGNvdW50PTItPjMgdGFyZ2V0PTM3NzI0MjUgc2VsZj0wIGFscmVh ZHlfc2V0PTEgd2FpdD1WYWN1dW1EZWxheQoyMDI2LTA5LTI0IDIxOjM1OjA2LjI5MCAtMDMgWzM3 NzM1MTldIExPRzogIEFWTEFUQ0ggY2FsbGVyPXdvcmtlciBjb3VudD0yLT4zIHRhcmdldD0zNzcy MzI3IHNlbGY9MCBhbHJlYWR5X3NldD0xIHdhaXQ9VmFjdXVtRGVsYXkKMjAyNi0wOS0yNCAyMToz NTowNi4yOTUgLTAzIFszNzczNTE5XSBMT0c6ICBBVkxBVENIIGNhbGxlcj13b3JrZXIgY291bnQ9 My0+MiB0YXJnZXQ9Mzc3MjQyNSBzZWxmPTAgYWxyZWFkeV9zZXQ9MSB3YWl0PVZhY3V1bURlbGF5 CjIwMjYtMDktMjQgMjE6MzU6MDYuMjk1IC0wMyBbMzc3MzUxOV0gTE9HOiAgQVZMQVRDSCBjYWxs ZXI9d29ya2VyIGNvdW50PTMtPjIgdGFyZ2V0PTM3NzIzMjcgc2VsZj0wIGFscmVhZHlfc2V0PTEg d2FpdD1WYWN1dW1EZWxheQoyMDI2LTA5LTI0IDIxOjM1OjA2LjI5NiAtMDMgWzM3NzM1MTldIExP RzogIEFWTEFUQ0ggY2FsbGVyPXdvcmtlciBjb3VudD0yLT4zIHRhcmdldD0zNzczNTE5IHNlbGY9 MSBhbHJlYWR5X3NldD0wIHdhaXQ9bm9uZQo= --===============5152859019181651828==--