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 1vcrR7-00BaOU-1W for pgsql-hackers@arkaria.postgresql.org; Mon, 05 Jan 2026 20:44:22 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1vcrR5-004A7i-2t for pgsql-hackers@arkaria.postgresql.org; Mon, 05 Jan 2026 20:44:20 +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.96) (envelope-from <3danissimo@gmail.com>) id 1vcrR5-004A7Y-1L for pgsql-hackers@lists.postgresql.org; Mon, 05 Jan 2026 20:44:20 +0000 Received: from mail-yw1-x1136.google.com ([2607:f8b0:4864:20::1136]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from <3danissimo@gmail.com>) id 1vcrR3-004kMk-1R for pgsql-hackers@lists.postgresql.org; Mon, 05 Jan 2026 20:44:19 +0000 Received: by mail-yw1-x1136.google.com with SMTP id 00721157ae682-78f89501423so25436707b3.1 for ; Mon, 05 Jan 2026 12:44:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1767645854; x=1768250654; 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=IweKRY5+RsRLl8HN9RC5V4GV9U1CWSTR+cTjCBZNIAU=; b=jdiye3etq8FnRagWm4/aYPN4+TLr2pIicUc4C7zRaSMSUHZ6/4pS380f9CL10sFd4i WYv9jKfv0z/4r/eI89MGVFmiJJNI9lTSWZUaLDfKHoW3xz3ZT8oXmejAQTdYiR5NO9eQ W+/NfptySivZOUOFQrJL5s61tgplpBAXLCu/DBtmv/Lh5gmRRXif6kBTU9k6r3h1a8Be n2JBKhENfRlG2Kzgymw566e9hg2MmOJpfdMkS0i7mKogjHKFLUiMHPmlF+oHEPplYfXU KeVrOgjMyKto7K5nCZhVkf4qdojEivHF7UujKbSLvwiO2fJ5FdHyfIc2AzI10lYZftpU xS8A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1767645854; x=1768250654; 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=IweKRY5+RsRLl8HN9RC5V4GV9U1CWSTR+cTjCBZNIAU=; b=eQu0AEgArCGFCE5WLC+SdxovhVhdqnqABkSMk7+XmMrsOV5ZMNYoC2dl1qxLBIy96R b+VWPLJhO3DrprNwKahiuE8St+5+LvfofnOaOrOweUqrU4VJMkfHdoOwKezOhuFXNUUz d05Vdxc2PPvJs1yTm/rAWUU9POk07LvgrAmUGqQoBqSymVfzmxCJ72AWCD/H9m+syDrd 1WO9Z7EPnxXpN8IeOqGpBLFPPS944/saODIOIHvLUcnWq0YwGaujNVRjK1AYWJ6xFFho zHRWDHjsgIw2am/fdFRpe3KBPOS8GMBj9xL3sDiN2dDLYVcqLC1XS6Ku0JCkLrsEwVUs 6u+g== X-Forwarded-Encrypted: i=1; AJvYcCVdjPjV7IuxIsDBLxhczzNI5z+RQzcg683Tro9cVE0cbN5unGO2vrb433hMtAcViux2pySoJLCw9F8jpUqW@lists.postgresql.org X-Gm-Message-State: AOJu0YyWCPIt7f4O2onBbOi4uhFnLFV83nGsKQzz0BnMndzrZVTLYqqp BWiqsYFIwQatzE/8kbuMbVs7gWK04/M3kE5WMJFQ+1wucDEM2JFTGuK1nKG21yFWUTSz9gCCqvv qE12CqfQXvE3Dsq7XHMZtUrO/FHBDMvI= X-Gm-Gg: AY/fxX4rrDBAMpcz/h7qKFzyDKKYoWhEaDG3NzdQmiqkzNQgDrCR0E4SfxGzB7D/gkL 5RQ2a2h+/Pe9N206KVTE0/Mh1Lwfkuk1BYKY0bxWlCtj2HPEYUQbtVECxGGNYwrStM1o2RcTG+W dv+Qt7u7NuBXXE/LbIGPNeFcbi5L91Q1/jnb+g6qZ58HzDSadwjsBbuS0hOWQPNTsG6iERpsFcz CzxhWa7eQQDFj5DlHPqF8yAKZcvFsjuWbkTnf+rGn5t8QFEj/lLk7FYJQF6Vbwg4wv4 X-Google-Smtp-Source: AGHT+IHoGVPshaVHebyYjAH2ESreDQDXbTtTxiCRMFv6TMAGD+W1V/W5SRbNuBkJasiwzk2RQRfn58ZzVVKzFcXIGR8= X-Received: by 2002:a05:690e:1206:b0:63f:c019:23b2 with SMTP id 956f58d0204a3-6470d2dfce6mr356335d50.28.1767645853588; Mon, 05 Jan 2026 12:44:13 -0800 (PST) MIME-Version: 1.0 References: In-Reply-To: From: Daniil Davydov <3danissimo@gmail.com> Date: Tue, 6 Jan 2026 03:44:02 +0700 X-Gm-Features: AQt7F2qvZz_eNPmluxA6JSu3LgsnOim0r-LHRifutEqXwEtmYlnThqfCUAwH4j0 Message-ID: Subject: Re: POC: Parallel processing of indexes in autovacuum To: Masahiko Sawada Cc: Sami Imseih , Alexander Korotkov , Matheus Alcantara , Maxim Orlov , Postgres hackers Content-Type: multipart/mixed; boundary="00000000000031e0340647aa1f3d" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000031e0340647aa1f3d Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Hi, On Tue, Jan 6, 2026 at 1:51=E2=80=AFAM Masahiko Sawada wrote: > > On Sun, Nov 23, 2025 at 7:02=E2=80=AFAM Daniil Davydov <3danissimo@gmail.= com> wrote: > > > > Hi, > > > > On Sun, Nov 23, 2025 at 5:51=E2=80=AFAM Sami Imseih wrote: > > > > > > > > nworkers has a double meaning. The return value of > > > > > AutoVacuumReserveParallelWorkers > > > > > is nreserved. I think this should be > > > > > > > > > > ``` > > > > > nreserved =3D AutoVacuumReserveParallelWorkers(nworkers); > > > > > ``` > > > > > > > > > > and nreserved becomes the authoritative value for the number of p= arallel > > > > > workers after that point. > > > > > > I could not find this pattern being used in the code base. > > > I think it will be better and more in-line without what we generally = do > > > and pass-by-reference and update the value inside > > > AutoVacuumReserveParallelWorkers: > > > > > > ``` > > > AutoVacuumReserveParallelWorkers(&nworkers). > > > ``` > > > > Maybe I just don't like functions with side effects, but this function = will > > have ones anyway. I'll add logic with passing by reference as you > > suggested. > > > > > > > > >> --- > > > >> { name =3D> 'autovacuum_max_parallel_workers', type =3D> 'int', co= ntext =3D> > > > >> 'PGC_SIGHUP', group =3D> 'VACUUM_AUTOVACUUM', > > > >> short_desc =3D> 'Maximum number of parallel autovacuum workers, = that > > > >> can be taken from bgworkers pool.', > > > >> long_desc =3D> 'This parameter is capped by "max_worker_processe= s" > > > >> (not by "autovacuum_max_workers"!).', > > > >> variable =3D> 'autovacuum_max_parallel_workers', > > > >> boot_val =3D> '0', > > > >> min =3D> '0', > > > >> max =3D> 'MAX_BACKENDS', > > > >> }, > > > >> > > > >> Parallel vacuum in autovacuum can be used only when users set the > > > >> autovacuum_parallel_workers storage parameter. How about using the > > > >> default value 2 for autovacuum_max_parallel_workers GUC parameter? > > > > > > > Sounds reasonable, +1 for it. > > > > > > v15-0004 has an incorrect default value for `autovacuum_max_parallel_= workers`. > > > It should now be 2. > > > > > > + Sets the maximum number of parallel autovacuum workers tha= t > > > + can be used for parallel index vacuuming at one time. Is c= apped by > > > + . The default = is 0, > > > + which means no parallel index vacuuming. > > > > Thanks for noticing it! Fixed. > > > > I am sending an updated set of patches. > > Thank you for updating the patch! I've reviewed the 0001 patch and > here are some comments: Thank you for the review! > > --- > + /* Remember how many workers we have reserved. */ > + av_nworkers_reserved +=3D *nworkers; > > I think we can simply assign *nworkers to av_nworkers_reserved instead > of incrementing it as we're sure that av_nworkers_reserved is 0 at the > beginning of this function. Agree, it will be more clear. > > --- > +static void > +AutoVacuumReleaseAllParallelWorkers(void) > +{ > + /* Only leader worker can call this function. */ > + Assert(AmAutoVacuumWorkerProcess() && !IsParallelWorker()); > + > + if (av_nworkers_reserved > 0) > + AutoVacuumReleaseParallelWorkers(av_nworkers_reserved); > +} > > We can put an assertion at the end of the function to verify that this > worker doesn't reserve any worker. It's not a problem to add this assertion, but I have doubts : we have a function that promises to release a given number of workers, but we are still checking whether a specified number of workers have been released. I suggest another place for assertion - see comment below. > > --- > +static void > +autovacuum_worker_before_shmem_exit(int code, Datum arg) > +{ > + if (code !=3D 0) > + AutoVacuumReleaseAllParallelWorkers(); > +} > > I think it would be more future-proof if we call > AutoVacuumReleaseAllParallelWorkers() regardless of the code if there > is no strong reason why we check the code there. I think we can leave "code !=3D 0" so as not to confuse the readers, but add the assertion that at the end of the function all workers have been released. Thus, we are telling that 1) in normal processing we must not have reserved workers and 2) even after a FATAL error we are sure that we don't have reserved workers. > > --- > + before_shmem_exit(autovacuum_worker_before_shmem_exit, 0); > > /* > * Create a per-backend PGPROC struct in shared memory. We must do = this > * before we can use LWLocks or access any shared memory. > */ > InitProcess(); > > I think it's better to register the > autovacuum_worker_before_shmem_exit() after the process > initialization. The function could use LWLocks to release the reserved > workers. Given that AutoVacuumReleaseAllParallelWorkers() doesn't try > to release the reserved worker when av_nworkers_reserved =3D=3D 0, but it > would be more future-proof to do that after the basic process > initialization processes. My bad, I miss the comment above InitProcess. Agree with you. Just in case, callback registration will be invoked after BaseInit. > > How about renaming autovacuum_worker_before_shmem_exit() to > autovacuum_worker_onexit()? We also have "on_shmem_exit" callbacks. Maybe "onexit" naming can confuse somebody?.. Since the function name does not cross line length boundary anywhere, I sug= gest leaving the current naming. > --- > IIUC the patch needs to implement some logic to propagate the updates > of vacuum delay parameters to parallel vacuum workers. Yep. > Are you still working on it? Or shall I draft this part on top of the > 0001 patch? I thought about some "beautiful" approach, but for now I have only one idea - force parallel a/v workers to get values for these parameters from shmem (which obviously can be modified by the leader a/v process). I'll post this patch in the near future. Please, see v17 patches (only 0001 has been changed). -- Best regards, Daniil Davydov --00000000000031e0340647aa1f3d Content-Type: text/x-patch; charset="US-ASCII"; name="v17-0002-Logging-for-parallel-autovacuum.patch" Content-Disposition: attachment; filename="v17-0002-Logging-for-parallel-autovacuum.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mk1mog162 RnJvbSAwYWFmYTI3MWVjOTBkYmU0OTRlZWE3OWZkNDg0YTQ4NTYwMjNiM2E4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5paWwgRGF2aWRvdiA8ZC5kYXZ5ZG92QHBvc3RncmVzcHJv LnJ1PgpEYXRlOiBTdW4sIDIzIE5vdiAyMDI1IDAxOjA3OjQ3ICswNzAwClN1YmplY3Q6IFtQQVRD SCB2MTcgMi80XSBMb2dnaW5nIGZvciBwYXJhbGxlbCBhdXRvdmFjdXVtCgotLS0KIHNyYy9iYWNr ZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyAgfCAyNyArKysrKysrKysrKysrKysrKysrKysr KysrLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMgfCAyMCArKysrKysr KysrKysrKy0tLS0tLQogc3JjL2luY2x1ZGUvY29tbWFuZHMvdmFjdXVtLmggICAgICAgICB8IDE2 ICsrKysrKysrKysrKysrLS0KIHNyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICAg fCAgMSArCiA0IGZpbGVzIGNoYW5nZWQsIDU0IGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygt KQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYyBiL3Ny Yy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwppbmRleCAyMDg2YTU3NzE5OS4uMzVk MmIwN2FhOGEgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenku YworKysgYi9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92YWN1dW1sYXp5LmMKQEAgLTM0OSw2ICsz NDksMTIgQEAgdHlwZWRlZiBzdHJ1Y3QgTFZSZWxTdGF0ZQogCWludAkJCW51bV9pbmRleF9zY2Fu czsKIAlpbnQJCQludW1fZGVhZF9pdGVtc19yZXNldHM7CiAJU2l6ZQkJdG90YWxfZGVhZF9pdGVt c19ieXRlczsKKworCS8qCisJICogTnVtYmVyIG9mIHBsYW5uZWQgYW5kIGFjdHVhbGx5IGxhdW5j aGVkIHBhcmFsbGVsIHdvcmtlcnMgZm9yIGFsbCBpbmRleAorCSAqIHNjYW5zLCBvciBOVUxMCisJ ICovCisJUFZXb3JrZXJzVXNhZ2UgKndvcmtlcnNfdXNhZ2U7CiAJLyogQ291bnRlcnMgdGhhdCBm b2xsb3cgYXJlIG9ubHkgZm9yIHNjYW5uZWRfcGFnZXMgKi8KIAlpbnQ2NAkJdHVwbGVzX2RlbGV0 ZWQ7IC8qICMgZGVsZXRlZCBmcm9tIHRhYmxlICovCiAJaW50NjQJCXR1cGxlc19mcm96ZW47CS8q ICMgbmV3bHkgZnJvemVuICovCkBAIC03MTEsNiArNzE3LDE2IEBAIGhlYXBfdmFjdXVtX3JlbChS ZWxhdGlvbiByZWwsIGNvbnN0IFZhY3V1bVBhcmFtcyBwYXJhbXMsCiAJCWluZG5hbWVzID0gcGFs bG9jX2FycmF5KGNoYXIgKiwgdmFjcmVsLT5uaW5kZXhlcyk7CiAJCWZvciAoaW50IGkgPSAwOyBp IDwgdmFjcmVsLT5uaW5kZXhlczsgaSsrKQogCQkJaW5kbmFtZXNbaV0gPSBwc3RyZHVwKFJlbGF0 aW9uR2V0UmVsYXRpb25OYW1lKHZhY3JlbC0+aW5kcmVsc1tpXSkpOworCisJCS8qCisJCSAqIEFs bG9jYXRlIHNwYWNlIGZvciB3b3JrZXJzIHVzYWdlIHN0YXRpc3RpY3MuIFRodXMsIHdlIGV4cGxp Y2l0bHkKKwkJICogbWFrZSBjbGVhciB0aGF0IHN1Y2ggc3RhdGlzdGljcyBtdXN0IGJlIGFjY3Vt dWxhdGVkLiBGb3Igbm93LCB0aGlzCisJCSAqIGlzIHVzZWQgb25seSBieSBhdXRvdmFjdXVtIGxl YWRlciB3b3JrZXIsIGJlY2F1c2UgaXQgbXVzdCBsb2cgaXQgaW4KKwkJICogdGhlIGVuZCBvZiB0 YWJsZSBwcm9jZXNzaW5nLgorCQkgKi8KKwkJdmFjcmVsLT53b3JrZXJzX3VzYWdlID0gQW1BdXRv VmFjdXVtV29ya2VyUHJvY2VzcygpID8KKwkJCShQVldvcmtlcnNVc2FnZSAqKSBwYWxsb2MwKHNp emVvZihQVldvcmtlcnNVc2FnZSkpIDoKKwkJCU5VTEw7CiAJfQogCiAJLyoKQEAgLTExMjUsNiAr MTE0MSwxMSBAQCBoZWFwX3ZhY3V1bV9yZWwoUmVsYXRpb24gcmVsLCBjb25zdCBWYWN1dW1QYXJh bXMgcGFyYW1zLAogCQkJCQkJCSBvcmlnX3JlbF9wYWdlcyA9PSAwID8gMTAwLjAgOgogCQkJCQkJ CSAxMDAuMCAqIHZhY3JlbC0+bHBkZWFkX2l0ZW1fcGFnZXMgLyBvcmlnX3JlbF9wYWdlcywKIAkJ CQkJCQkgdmFjcmVsLT5scGRlYWRfaXRlbXMpOworCQkJaWYgKHZhY3JlbC0+d29ya2Vyc191c2Fn ZSkKKwkJCQlhcHBlbmRTdHJpbmdJbmZvKCZidWYsCisJCQkJCQkJCSBfKCJwYXJhbGxlbCBpbmRl eCB2YWN1dW0vY2xlYW51cCA6IHdvcmtlcnMgcGxhbm5lZCA9ICVkLCB3b3JrZXJzIGxhdW5jaGVk ID0gJWRcbiIpLAorCQkJCQkJCQkgdmFjcmVsLT53b3JrZXJzX3VzYWdlLT5ucGxhbm5lZCwKKwkJ CQkJCQkJIHZhY3JlbC0+d29ya2Vyc191c2FnZS0+bmxhdW5jaGVkKTsKIAkJCWZvciAoaW50IGkg PSAwOyBpIDwgdmFjcmVsLT5uaW5kZXhlczsgaSsrKQogCQkJewogCQkJCUluZGV4QnVsa0RlbGV0 ZVJlc3VsdCAqaXN0YXQgPSB2YWNyZWwtPmluZHN0YXRzW2ldOwpAQCAtMjcwMCw3ICsyNzIxLDgg QEAgbGF6eV92YWN1dW1fYWxsX2luZGV4ZXMoTFZSZWxTdGF0ZSAqdmFjcmVsKQogCXsKIAkJLyog T3V0c291cmNlIGV2ZXJ5dGhpbmcgdG8gcGFyYWxsZWwgdmFyaWFudCAqLwogCQlwYXJhbGxlbF92 YWN1dW1fYnVsa2RlbF9hbGxfaW5kZXhlcyh2YWNyZWwtPnB2cywgb2xkX2xpdmVfdHVwbGVzLAot CQkJCQkJCQkJCQl2YWNyZWwtPm51bV9pbmRleF9zY2Fucyk7CisJCQkJCQkJCQkJCXZhY3JlbC0+ bnVtX2luZGV4X3NjYW5zLAorCQkJCQkJCQkJCQl2YWNyZWwtPndvcmtlcnNfdXNhZ2UpOwogCiAJ CS8qCiAJCSAqIERvIGEgcG9zdGNoZWNrIHRvIGNvbnNpZGVyIGFwcGx5aW5nIHdyYXBhcm91bmQg ZmFpbHNhZmUgbm93LiAgTm90ZQpAQCAtMzEzMyw3ICszMTU1LDggQEAgbGF6eV9jbGVhbnVwX2Fs bF9pbmRleGVzKExWUmVsU3RhdGUgKnZhY3JlbCkKIAkJLyogT3V0c291cmNlIGV2ZXJ5dGhpbmcg dG8gcGFyYWxsZWwgdmFyaWFudCAqLwogCQlwYXJhbGxlbF92YWN1dW1fY2xlYW51cF9hbGxfaW5k ZXhlcyh2YWNyZWwtPnB2cywgcmVsdHVwbGVzLAogCQkJCQkJCQkJCQl2YWNyZWwtPm51bV9pbmRl eF9zY2FucywKLQkJCQkJCQkJCQkJZXN0aW1hdGVkX2NvdW50KTsKKwkJCQkJCQkJCQkJZXN0aW1h dGVkX2NvdW50LAorCQkJCQkJCQkJCQl2YWNyZWwtPndvcmtlcnNfdXNhZ2UpOwogCX0KIAogCS8q IFJlc2V0IHRoZSBwcm9ncmVzcyBjb3VudGVycyAqLwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv Y29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBh cmFsbGVsLmMKaW5kZXggNmEzYTAwNTg1ZjkuLjQ5MGY5Mzk1OWQxIDEwMDY0NAotLS0gYS9zcmMv YmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1h bmRzL3ZhY3V1bXBhcmFsbGVsLmMKQEAgLTIyNyw3ICsyMjcsNyBAQCBzdHJ1Y3QgUGFyYWxsZWxW YWN1dW1TdGF0ZQogc3RhdGljIGludAlwYXJhbGxlbF92YWN1dW1fY29tcHV0ZV93b3JrZXJzKFJl bGF0aW9uICppbmRyZWxzLCBpbnQgbmluZGV4ZXMsIGludCBucmVxdWVzdGVkLAogCQkJCQkJCQkJ CQlib29sICp3aWxsX3BhcmFsbGVsX3ZhY3V1bSk7CiBzdGF0aWMgdm9pZCBwYXJhbGxlbF92YWN1 dW1fcHJvY2Vzc19hbGxfaW5kZXhlcyhQYXJhbGxlbFZhY3V1bVN0YXRlICpwdnMsIGludCBudW1f aW5kZXhfc2NhbnMsCi0JCQkJCQkJCQkJCQlib29sIHZhY3V1bSk7CisJCQkJCQkJCQkJCQlib29s IHZhY3V1bSwgUFZXb3JrZXJzVXNhZ2UgKnd1c2FnZSk7CiBzdGF0aWMgdm9pZCBwYXJhbGxlbF92 YWN1dW1fcHJvY2Vzc19zYWZlX2luZGV4ZXMoUGFyYWxsZWxWYWN1dW1TdGF0ZSAqcHZzKTsKIHN0 YXRpYyB2b2lkIHBhcmFsbGVsX3ZhY3V1bV9wcm9jZXNzX3Vuc2FmZV9pbmRleGVzKFBhcmFsbGVs VmFjdXVtU3RhdGUgKnB2cyk7CiBzdGF0aWMgdm9pZCBwYXJhbGxlbF92YWN1dW1fcHJvY2Vzc19v bmVfaW5kZXgoUGFyYWxsZWxWYWN1dW1TdGF0ZSAqcHZzLCBSZWxhdGlvbiBpbmRyZWwsCkBAIC01 MDIsNyArNTAyLDcgQEAgcGFyYWxsZWxfdmFjdXVtX3Jlc2V0X2RlYWRfaXRlbXMoUGFyYWxsZWxW YWN1dW1TdGF0ZSAqcHZzKQogICovCiB2b2lkCiBwYXJhbGxlbF92YWN1dW1fYnVsa2RlbF9hbGxf aW5kZXhlcyhQYXJhbGxlbFZhY3V1bVN0YXRlICpwdnMsIGxvbmcgbnVtX3RhYmxlX3R1cGxlcywK LQkJCQkJCQkJCWludCBudW1faW5kZXhfc2NhbnMpCisJCQkJCQkJCQlpbnQgbnVtX2luZGV4X3Nj YW5zLCBQVldvcmtlcnNVc2FnZSAqd3VzYWdlKQogewogCUFzc2VydCghSXNQYXJhbGxlbFdvcmtl cigpKTsKIApAQCAtNTEzLDcgKzUxMyw3IEBAIHBhcmFsbGVsX3ZhY3V1bV9idWxrZGVsX2FsbF9p bmRleGVzKFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2cywgbG9uZyBudW1fdGFibGVfdHVwCiAJcHZz LT5zaGFyZWQtPnJlbHR1cGxlcyA9IG51bV90YWJsZV90dXBsZXM7CiAJcHZzLT5zaGFyZWQtPmVz dGltYXRlZF9jb3VudCA9IHRydWU7CiAKLQlwYXJhbGxlbF92YWN1dW1fcHJvY2Vzc19hbGxfaW5k ZXhlcyhwdnMsIG51bV9pbmRleF9zY2FucywgdHJ1ZSk7CisJcGFyYWxsZWxfdmFjdXVtX3Byb2Nl c3NfYWxsX2luZGV4ZXMocHZzLCBudW1faW5kZXhfc2NhbnMsIHRydWUsIHd1c2FnZSk7CiB9CiAK IC8qCkBAIC01MjEsNyArNTIxLDggQEAgcGFyYWxsZWxfdmFjdXVtX2J1bGtkZWxfYWxsX2luZGV4 ZXMoUGFyYWxsZWxWYWN1dW1TdGF0ZSAqcHZzLCBsb25nIG51bV90YWJsZV90dXAKICAqLwogdm9p ZAogcGFyYWxsZWxfdmFjdXVtX2NsZWFudXBfYWxsX2luZGV4ZXMoUGFyYWxsZWxWYWN1dW1TdGF0 ZSAqcHZzLCBsb25nIG51bV90YWJsZV90dXBsZXMsCi0JCQkJCQkJCQlpbnQgbnVtX2luZGV4X3Nj YW5zLCBib29sIGVzdGltYXRlZF9jb3VudCkKKwkJCQkJCQkJCWludCBudW1faW5kZXhfc2NhbnMs IGJvb2wgZXN0aW1hdGVkX2NvdW50LAorCQkJCQkJCQkJUFZXb3JrZXJzVXNhZ2UgKnd1c2FnZSkK IHsKIAlBc3NlcnQoIUlzUGFyYWxsZWxXb3JrZXIoKSk7CiAKQEAgLTUzMyw3ICs1MzQsNyBAQCBw YXJhbGxlbF92YWN1dW1fY2xlYW51cF9hbGxfaW5kZXhlcyhQYXJhbGxlbFZhY3V1bVN0YXRlICpw dnMsIGxvbmcgbnVtX3RhYmxlX3R1cAogCXB2cy0+c2hhcmVkLT5yZWx0dXBsZXMgPSBudW1fdGFi bGVfdHVwbGVzOwogCXB2cy0+c2hhcmVkLT5lc3RpbWF0ZWRfY291bnQgPSBlc3RpbWF0ZWRfY291 bnQ7CiAKLQlwYXJhbGxlbF92YWN1dW1fcHJvY2Vzc19hbGxfaW5kZXhlcyhwdnMsIG51bV9pbmRl eF9zY2FucywgZmFsc2UpOworCXBhcmFsbGVsX3ZhY3V1bV9wcm9jZXNzX2FsbF9pbmRleGVzKHB2 cywgbnVtX2luZGV4X3NjYW5zLCBmYWxzZSwgd3VzYWdlKTsKIH0KIAogLyoKQEAgLTYxOCw3ICs2 MTksNyBAQCBwYXJhbGxlbF92YWN1dW1fY29tcHV0ZV93b3JrZXJzKFJlbGF0aW9uICppbmRyZWxz LCBpbnQgbmluZGV4ZXMsIGludCBucmVxdWVzdGVkLAogICovCiBzdGF0aWMgdm9pZAogcGFyYWxs ZWxfdmFjdXVtX3Byb2Nlc3NfYWxsX2luZGV4ZXMoUGFyYWxsZWxWYWN1dW1TdGF0ZSAqcHZzLCBp bnQgbnVtX2luZGV4X3NjYW5zLAotCQkJCQkJCQkJYm9vbCB2YWN1dW0pCisJCQkJCQkJCQlib29s IHZhY3V1bSwgUFZXb3JrZXJzVXNhZ2UgKnd1c2FnZSkKIHsKIAlpbnQJCQlud29ya2VyczsKIAlQ VkluZFZhY1N0YXR1cyBuZXdfc3RhdHVzOwpAQCAtNzQyLDYgKzc0MywxMyBAQCBwYXJhbGxlbF92 YWN1dW1fcHJvY2Vzc19hbGxfaW5kZXhlcyhQYXJhbGxlbFZhY3V1bVN0YXRlICpwdnMsIGludCBu dW1faW5kZXhfc2NhbgogCQkJCQkJCQkJICJsYXVuY2hlZCAlZCBwYXJhbGxlbCB2YWN1dW0gd29y a2VycyBmb3IgaW5kZXggY2xlYW51cCAocGxhbm5lZDogJWQpIiwKIAkJCQkJCQkJCSBwdnMtPnBj eHQtPm53b3JrZXJzX2xhdW5jaGVkKSwKIAkJCQkJCQlwdnMtPnBjeHQtPm53b3JrZXJzX2xhdW5j aGVkLCBud29ya2VycykpKTsKKworCQkvKiBSZW1lbWJlciB0aGVzZSB2YWx1ZXMsIGlmIHdlIGFz a2VkIHRvLiAqLworCQlpZiAod3VzYWdlICE9IE5VTEwpCisJCXsKKwkJCXd1c2FnZS0+bmxhdW5j aGVkICs9IHB2cy0+cGN4dC0+bndvcmtlcnNfbGF1bmNoZWQ7CisJCQl3dXNhZ2UtPm5wbGFubmVk ICs9IG53b3JrZXJzOworCQl9CiAJfQogCiAJLyogVmFjdXVtIHRoZSBpbmRleGVzIHRoYXQgY2Fu IGJlIHByb2Nlc3NlZCBieSBvbmx5IGxlYWRlciBwcm9jZXNzICovCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9jb21tYW5kcy92YWN1dW0uaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3ZhY3V1bS5o CmluZGV4IGU4ODVhNGI5Yzc3Li5lYzVkNzBhYWNkYyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUv Y29tbWFuZHMvdmFjdXVtLmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvdmFjdXVtLmgKQEAg LTMwMCw2ICszMDAsMTYgQEAgdHlwZWRlZiBzdHJ1Y3QgVmFjRGVhZEl0ZW1zSW5mbwogCWludDY0 CQludW1faXRlbXM7CQkvKiBjdXJyZW50ICMgb2YgZW50cmllcyAqLwogfSBWYWNEZWFkSXRlbXNJ bmZvOwogCisvKgorICogUFZXb3JrZXJzVXNhZ2Ugc3RvcmVzIGluZm9ybWF0aW9uIGFib3V0IHRv dGFsIG51bWJlciBvZiBsYXVuY2hlZCBhbmQgcGxhbm5lZAorICogd29ya2VycyBkdXJpbmcgcGFy YWxsZWwgdmFjdXVtLgorICovCit0eXBlZGVmIHN0cnVjdCBQVldvcmtlcnNVc2FnZQoreworCWlu dAkJCW5sYXVuY2hlZDsKKwlpbnQJCQlucGxhbm5lZDsKK30gUFZXb3JrZXJzVXNhZ2U7CisKIC8q IEdVQyBwYXJhbWV0ZXJzICovCiBleHRlcm4gUEdETExJTVBPUlQgaW50IGRlZmF1bHRfc3RhdGlz dGljc190YXJnZXQ7CS8qIFBHRExMSU1QT1JUIGZvciBQb3N0R0lTICovCiBleHRlcm4gUEdETExJ TVBPUlQgaW50IHZhY3V1bV9mcmVlemVfbWluX2FnZTsKQEAgLTM5NCwxMSArNDA0LDEzIEBAIGV4 dGVybiBUaWRTdG9yZSAqcGFyYWxsZWxfdmFjdXVtX2dldF9kZWFkX2l0ZW1zKFBhcmFsbGVsVmFj dXVtU3RhdGUgKnB2cywKIGV4dGVybiB2b2lkIHBhcmFsbGVsX3ZhY3V1bV9yZXNldF9kZWFkX2l0 ZW1zKFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2cyk7CiBleHRlcm4gdm9pZCBwYXJhbGxlbF92YWN1 dW1fYnVsa2RlbF9hbGxfaW5kZXhlcyhQYXJhbGxlbFZhY3V1bVN0YXRlICpwdnMsCiAJCQkJCQkJ CQkJCQlsb25nIG51bV90YWJsZV90dXBsZXMsCi0JCQkJCQkJCQkJCQlpbnQgbnVtX2luZGV4X3Nj YW5zKTsKKwkJCQkJCQkJCQkJCWludCBudW1faW5kZXhfc2NhbnMsCisJCQkJCQkJCQkJCQlQVldv cmtlcnNVc2FnZSAqd3VzYWdlKTsKIGV4dGVybiB2b2lkIHBhcmFsbGVsX3ZhY3V1bV9jbGVhbnVw X2FsbF9pbmRleGVzKFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2cywKIAkJCQkJCQkJCQkJCWxvbmcg bnVtX3RhYmxlX3R1cGxlcywKIAkJCQkJCQkJCQkJCWludCBudW1faW5kZXhfc2NhbnMsCi0JCQkJ CQkJCQkJCQlib29sIGVzdGltYXRlZF9jb3VudCk7CisJCQkJCQkJCQkJCQlib29sIGVzdGltYXRl ZF9jb3VudCwKKwkJCQkJCQkJCQkJCVBWV29ya2Vyc1VzYWdlICp3dXNhZ2UpOwogZXh0ZXJuIHZv aWQgcGFyYWxsZWxfdmFjdXVtX21haW4oZHNtX3NlZ21lbnQgKnNlZywgc2htX3RvYyAqdG9jKTsK IAogLyogaW4gY29tbWFuZHMvYW5hbHl6ZS5jICovCmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdp bmRlbnQvdHlwZWRlZnMubGlzdCBiL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0Cmlu ZGV4IGI5ZTY3MWZjZGE4Li42ZTM1YzZhYTQ5MyAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5k ZW50L3R5cGVkZWZzLmxpc3QKKysrIGIvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QK QEAgLTIzOTcsNiArMjM5Nyw3IEBAIFB1bGxGaWx0ZXJPcHMKIFB1c2hGaWx0ZXIKIFB1c2hGaWx0 ZXJPcHMKIFB1c2hGdW5jdGlvbgorUFZXb3JrZXJzVXNhZ2UKIFB5Q0Z1bmN0aW9uCiBQeU1ldGhv ZERlZgogUHlNb2R1bGVEZWYKLS0gCjIuNDMuMAoK --00000000000031e0340647aa1f3d Content-Type: text/x-patch; charset="US-ASCII"; name="v17-0004-Documentation-for-parallel-autovacuum.patch" Content-Disposition: attachment; filename="v17-0004-Documentation-for-parallel-autovacuum.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mk1mog0j0 RnJvbSA2ZjYxNWIwNmIxNTc4YjVjNzJiMzYwNzRkZTIwODExOTk5YjUyZTRmIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5paWwgRGF2aWRvdiA8ZC5kYXZ5ZG92QHBvc3RncmVzcHJv LnJ1PgpEYXRlOiBTdW4sIDIzIE5vdiAyMDI1IDAyOjMyOjQ0ICswNzAwClN1YmplY3Q6IFtQQVRD SCB2MTcgNC80XSBEb2N1bWVudGF0aW9uIGZvciBwYXJhbGxlbCBhdXRvdmFjdXVtCgotLS0KIGRv Yy9zcmMvc2dtbC9jb25maWcuc2dtbCAgICAgICAgICAgfCAxNyArKysrKysrKysrKysrKysrKwog ZG9jL3NyYy9zZ21sL21haW50ZW5hbmNlLnNnbWwgICAgICB8IDEyICsrKysrKysrKysrKwogZG9j L3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbCB8IDIwICsrKysrKysrKysrKysrKysrKysr CiAzIGZpbGVzIGNoYW5nZWQsIDQ5IGluc2VydGlvbnMoKykKCmRpZmYgLS1naXQgYS9kb2Mvc3Jj L3NnbWwvY29uZmlnLnNnbWwgYi9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwKaW5kZXggNjAxYWEz YWZiOGUuLjM2ZmNjNzJmMzI1IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY29uZmlnLnNnbWwK KysrIGIvZG9jL3NyYy9zZ21sL2NvbmZpZy5zZ21sCkBAIC0yODQ3LDYgKzI4NDcsNyBAQCBpbmNs dWRlX2RpciAnY29uZi5kJwogICAgICAgICA8cGFyYT4KICAgICAgICAgIFdoZW4gY2hhbmdpbmcg dGhpcyB2YWx1ZSwgY29uc2lkZXIgYWxzbyBhZGp1c3RpbmcKICAgICAgICAgIDx4cmVmIGxpbmtl bmQ9Imd1Yy1tYXgtcGFyYWxsZWwtd29ya2VycyIvPiwKKyAgICAgICAgIDx4cmVmIGxpbmtlbmQ9 Imd1Yy1hdXRvdmFjdXVtLW1heC1wYXJhbGxlbC13b3JrZXJzIi8+LAogICAgICAgICAgPHhyZWYg bGlua2VuZD0iZ3VjLW1heC1wYXJhbGxlbC1tYWludGVuYW5jZS13b3JrZXJzIi8+LCBhbmQKICAg ICAgICAgIDx4cmVmIGxpbmtlbmQ9Imd1Yy1tYXgtcGFyYWxsZWwtd29ya2Vycy1wZXItZ2F0aGVy Ii8+LgogICAgICAgICA8L3BhcmE+CkBAIC05MjgyLDYgKzkyODMsMjIgQEAgQ09QWSBwb3N0Z3Jl c19sb2cgRlJPTSAnL2Z1bGwvcGF0aC90by9sb2dmaWxlLmNzdicgV0lUSCBjc3Y7CiAgICAgICAg PC9saXN0aXRlbT4KICAgICAgIDwvdmFybGlzdGVudHJ5PgogCisgICAgICA8dmFybGlzdGVudHJ5 IGlkPSJndWMtYXV0b3ZhY3V1bS1tYXgtcGFyYWxsZWwtd29ya2VycyIgeHJlZmxhYmVsPSJhdXRv dmFjdXVtX21heF9wYXJhbGxlbF93b3JrZXJzIj4KKyAgICAgICAgPHRlcm0+PHZhcm5hbWU+YXV0 b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VyczwvdmFybmFtZT4gKDx0eXBlPmludGVnZXI8L3R5 cGU+KQorICAgICAgICA8aW5kZXh0ZXJtPgorICAgICAgICAgPHByaW1hcnk+PHZhcm5hbWU+YXV0 b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VyczwvdmFybmFtZT48L3ByaW1hcnk+CisgICAgICAg ICA8c2Vjb25kYXJ5PmNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyPC9zZWNvbmRhcnk+CisgICAgICAg IDwvaW5kZXh0ZXJtPgorICAgICAgICA8L3Rlcm0+CisgICAgICAgIDxsaXN0aXRlbT4KKyAgICAg ICAgIDxwYXJhPgorICAgICAgICAgIFNldHMgdGhlIG1heGltdW0gbnVtYmVyIG9mIHBhcmFsbGVs IGF1dG92YWN1dW0gd29ya2VycyB0aGF0CisgICAgICAgICAgY2FuIGJlIHVzZWQgZm9yIHBhcmFs bGVsIGluZGV4IHZhY3V1bWluZyBhdCBvbmUgdGltZS4gSXMgY2FwcGVkIGJ5CisgICAgICAgICAg PHhyZWYgbGlua2VuZD0iZ3VjLW1heC13b3JrZXItcHJvY2Vzc2VzIi8+LiBUaGUgZGVmYXVsdCBp cyAyLgorICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L2xpc3RpdGVtPgorICAgICA8L3Zhcmxp c3RlbnRyeT4KKwogICAgICA8L3ZhcmlhYmxlbGlzdD4KICAgICA8L3NlY3QyPgogCmRpZmYgLS1n aXQgYS9kb2Mvc3JjL3NnbWwvbWFpbnRlbmFuY2Uuc2dtbCBiL2RvYy9zcmMvc2dtbC9tYWludGVu YW5jZS5zZ21sCmluZGV4IDdjOTU4YjA2MjczLi5jOWY5MTYzYzU1MSAxMDA2NDQKLS0tIGEvZG9j L3NyYy9zZ21sL21haW50ZW5hbmNlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL21haW50ZW5hbmNl LnNnbWwKQEAgLTkyNiw2ICs5MjYsMTggQEAgSElOVDogIEV4ZWN1dGUgYSBkYXRhYmFzZS13aWRl IFZBQ1VVTSBpbiB0aGF0IGRhdGFiYXNlLgogICAgIGF1dG92YWN1dW0gd29ya2VycycgYWN0aXZp dHkuCiAgICA8L3BhcmE+CiAKKyAgIDxwYXJhPgorICAgIElmIGFuIGF1dG92YWN1dW0gd29ya2Vy IHByb2Nlc3MgY29tZXMgYWNyb3NzIGEgdGFibGUgd2l0aCB0aGUgZW5hYmxlZAorICAgIDx4cmVm IGxpbmtlbmQ9InJlbG9wdGlvbi1hdXRvdmFjdXVtLXBhcmFsbGVsLXdvcmtlcnMiLz4gc3RvcmFn ZSBwYXJhbWV0ZXIsCisgICAgaXQgd2lsbCBsYXVuY2ggcGFyYWxsZWwgd29ya2VycyBpbiBvcmRl ciB0byB2YWN1dW0gaW5kZXhlcyBvZiB0aGlzIHRhYmxlCisgICAgaW4gYSBwYXJhbGxlbCBtb2Rl LiBQYXJhbGxlbCB3b3JrZXJzIGFyZSB0YWtlbiBmcm9tIHRoZSBwb29sIG9mIHByb2Nlc3Nlcwor ICAgIGVzdGFibGlzaGVkIGJ5IDx4cmVmIGxpbmtlbmQ9Imd1Yy1tYXgtd29ya2VyLXByb2Nlc3Nl cyIvPiwgbGltaXRlZCBieQorICAgIDx4cmVmIGxpbmtlbmQ9Imd1Yy1tYXgtcGFyYWxsZWwtd29y a2VycyIvPi4KKyAgICBUaGUgdG90YWwgbnVtYmVyIG9mIHBhcmFsbGVsIGF1dG92YWN1dW0gd29y a2VycyB0aGF0IGNhbiBiZSBhY3RpdmUgYXQgb25lCisgICAgdGltZSBpcyBsaW1pdGVkIGJ5IHRo ZSA8eHJlZiBsaW5rZW5kPSJndWMtYXV0b3ZhY3V1bS1tYXgtcGFyYWxsZWwtd29ya2VycyIvPgor ICAgIGNvbmZpZ3VyYXRpb24gcGFyYW1ldGVyLgorICAgPC9wYXJhPgorCiAgICA8cGFyYT4KICAg ICBJZiBzZXZlcmFsIGxhcmdlIHRhYmxlcyBhbGwgYmVjb21lIGVsaWdpYmxlIGZvciB2YWN1dW1p bmcgaW4gYSBzaG9ydAogICAgIGFtb3VudCBvZiB0aW1lLCBhbGwgYXV0b3ZhY3V1bSB3b3JrZXJz IG1pZ2h0IGJlY29tZSBvY2N1cGllZCB3aXRoCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVm L2NyZWF0ZV90YWJsZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUuc2dtbApp bmRleCA3N2M1YTc2M2Q0NS4uMzU5MmM5YWNmZjkgMTAwNjQ0Ci0tLSBhL2RvYy9zcmMvc2dtbC9y ZWYvY3JlYXRlX3RhYmxlLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9jcmVhdGVfdGFibGUu c2dtbApAQCAtMTcxNyw2ICsxNzE3LDI2IEBAIFdJVEggKCBNT0RVTFVTIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxhY2VhYmxlPiwgUkVNCiAgICAg PC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgogCisgIDx2YXJsaXN0ZW50cnkgaWQ9InJl bG9wdGlvbi1hdXRvdmFjdXVtLXBhcmFsbGVsLXdvcmtlcnMiIHhyZWZsYWJlbD0iYXV0b3ZhY3V1 bV9wYXJhbGxlbF93b3JrZXJzIj4KKyAgICA8dGVybT48bGl0ZXJhbD5hdXRvdmFjdXVtX3BhcmFs bGVsX3dvcmtlcnM8L2xpdGVyYWw+ICg8dHlwZT5pbnRlZ2VyPC90eXBlPikKKyAgICA8aW5kZXh0 ZXJtPgorICAgICA8cHJpbWFyeT48dmFybmFtZT5hdXRvdmFjdXVtX3BhcmFsbGVsX3dvcmtlcnM8 L3Zhcm5hbWU+IHN0b3JhZ2UgcGFyYW1ldGVyPC9wcmltYXJ5PgorICAgIDwvaW5kZXh0ZXJtPgor ICAgIDwvdGVybT4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgU2V0cyB0aGUg bWF4aW11bSBudW1iZXIgb2YgcGFyYWxsZWwgYXV0b3ZhY3V1bSB3b3JrZXJzIHRoYXQgY2FuIHBy b2Nlc3MKKyAgICAgIGluZGV4ZXMgb2YgdGhpcyB0YWJsZS4KKyAgICAgIFRoZSBkZWZhdWx0IHZh bHVlIGlzIC0xLCB3aGljaCBtZWFucyBubyBwYXJhbGxlbCBpbmRleCB2YWN1dW1pbmcgZm9yCisg ICAgICB0aGlzIHRhYmxlLiBJZiB2YWx1ZSBpcyAwIHRoZW4gcGFyYWxsZWwgZGVncmVlIHdpbGwg Y29tcHV0ZWQgYmFzZWQgb24KKyAgICAgIG51bWJlciBvZiBpbmRleGVzLgorICAgICAgTm90ZSB0 aGF0IHRoZSBjb21wdXRlZCBudW1iZXIgb2Ygd29ya2VycyBtYXkgbm90IGFjdHVhbGx5IGJlIGF2 YWlsYWJsZSBhdAorICAgICAgcnVuIHRpbWUuIElmIHRoaXMgb2NjdXJzLCB0aGUgYXV0b3ZhY3V1 bSB3aWxsIHJ1biB3aXRoIGZld2VyIHdvcmtlcnMKKyAgICAgIHRoYW4gZXhwZWN0ZWQuCisgICAg IDwvcGFyYT4KKyAgICA8L2xpc3RpdGVtPgorICAgPC92YXJsaXN0ZW50cnk+CisKICAgIDx2YXJs aXN0ZW50cnkgaWQ9InJlbG9wdGlvbi1hdXRvdmFjdXVtLXZhY3V1bS10aHJlc2hvbGQiIHhyZWZs YWJlbD0iYXV0b3ZhY3V1bV92YWN1dW1fdGhyZXNob2xkIj4KICAgICA8dGVybT48bGl0ZXJhbD5h dXRvdmFjdXVtX3ZhY3V1bV90aHJlc2hvbGQ8L2xpdGVyYWw+LCA8bGl0ZXJhbD50b2FzdC5hdXRv dmFjdXVtX3ZhY3V1bV90aHJlc2hvbGQ8L2xpdGVyYWw+ICg8dHlwZT5pbnRlZ2VyPC90eXBlPikK ICAgICA8aW5kZXh0ZXJtPgotLSAKMi40My4wCgo= --00000000000031e0340647aa1f3d Content-Type: text/x-patch; charset="US-ASCII"; name="v17-0003-Tests-for-parallel-autovacuum.patch" Content-Disposition: attachment; filename="v17-0003-Tests-for-parallel-autovacuum.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mk1mog0w1 RnJvbSBjYTUyZWZiMDliMDJkMjFmNmUzNWRhYmVkMmI5NTYzZDg1MTE1MWEwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5paWwgRGF2aWRvdiA8ZC5kYXZ5ZG92QHBvc3RncmVzcHJv LnJ1PgpEYXRlOiBTdW4sIDIzIE5vdiAyMDI1IDAxOjA4OjE0ICswNzAwClN1YmplY3Q6IFtQQVRD SCB2MTcgMy80XSBUZXN0cyBmb3IgcGFyYWxsZWwgYXV0b3ZhY3V1bQoKLS0tCiBzcmMvYmFja2Vu ZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jICAgICAgICAgfCAgIDggKwogc3JjL2JhY2tlbmQv cG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMgICAgICAgICAgIHwgIDE0ICsKIHNyYy90ZXN0L21vZHVs ZXMvTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvdGVzdC9tb2R1bGVz L21lc29uLmJ1aWxkICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL3Rlc3QvbW9kdWxlcy90 ZXN0X2F1dG92YWN1dW0vLmdpdGlnbm9yZSAgIHwgICAyICsKIHNyYy90ZXN0L21vZHVsZXMvdGVz dF9hdXRvdmFjdXVtL01ha2VmaWxlICAgICB8ICAyNiArKwogc3JjL3Rlc3QvbW9kdWxlcy90ZXN0 X2F1dG92YWN1dW0vbWVzb24uYnVpbGQgIHwgIDM2ICsrKwogLi4uL21vZHVsZXMvdGVzdF9hdXRv dmFjdXVtL3QvMDAxX2Jhc2ljLnBsICAgIHwgMTY1ICsrKysrKysrKysrKwogLi4uL3Rlc3RfYXV0 b3ZhY3V1bS90ZXN0X2F1dG92YWN1dW0tLTEuMC5zcWwgIHwgIDM0ICsrKwogLi4uL21vZHVsZXMv dGVzdF9hdXRvdmFjdXVtL3Rlc3RfYXV0b3ZhY3V1bS5jIHwgMjU1ICsrKysrKysrKysrKysrKysr KwogLi4uL3Rlc3RfYXV0b3ZhY3V1bS90ZXN0X2F1dG92YWN1dW0uY29udHJvbCAgIHwgICAzICsK IDExIGZpbGVzIGNoYW5nZWQsIDU0NSBpbnNlcnRpb25zKCspCiBjcmVhdGUgbW9kZSAxMDA2NDQg c3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vLmdpdGlnbm9yZQogY3JlYXRlIG1vZGUg MTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL01ha2VmaWxlCiBjcmVhdGUg bW9kZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vbWVzb24uYnVpbGQK IGNyZWF0ZSBtb2RlIDEwMDY0NCBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS90LzAw MV9iYXNpYy5wbAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRv dmFjdXVtL3Rlc3RfYXV0b3ZhY3V1bS0tMS4wLnNxbAogY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy90 ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL3Rlc3RfYXV0b3ZhY3V1bS5jCiBjcmVhdGUgbW9k ZSAxMDA2NDQgc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0vdGVzdF9hdXRvdmFjdXVt LmNvbnRyb2wKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxl bC5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYwppbmRleCA0OTBmOTM5 NTlkMS4uYzJmMGEzN2VlZjIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1 bXBhcmFsbGVsLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYwpA QCAtMzksNiArMzksNyBAQAogI2luY2x1ZGUgInBvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5oIgogI2lu Y2x1ZGUgInN0b3JhZ2UvYnVmbWdyLmgiCiAjaW5jbHVkZSAidGNvcC90Y29wcHJvdC5oIgorI2lu Y2x1ZGUgInV0aWxzL2luamVjdGlvbl9wb2ludC5oIgogI2luY2x1ZGUgInV0aWxzL2xzeXNjYWNo ZS5oIgogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgogCkBAIC03NTIsNiArNzUzLDEzIEBAIHBhcmFs bGVsX3ZhY3V1bV9wcm9jZXNzX2FsbF9pbmRleGVzKFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2cywg aW50IG51bV9pbmRleF9zY2FuCiAJCX0KIAl9CiAKKwkvKgorCSAqIFRvIGJlIGFibGUgdG8gZXhl cmNpc2Ugd2hldGhlciBhbGwgcmVzZXJ2ZWQgcGFyYWxsZWwgd29ya2VycyBhcmUgYmVpbmcKKwkg KiByZWxlYXNlZCBhbnl3YXksIGFsbG93IGluamVjdGlvbiBwb2ludHMgdG8gdHJpZ2dlciBhIGZh aWx1cmUgYXQgdGhpcworCSAqIHBvaW50LgorCSAqLworCUlOSkVDVElPTl9QT0lOVCgiYXV0b3Zh Y3V1bS10cmlnZ2VyLWxlYWRlci1mYWlsdXJlIiwgTlVMTCk7CisKIAkvKiBWYWN1dW0gdGhlIGlu ZGV4ZXMgdGhhdCBjYW4gYmUgcHJvY2Vzc2VkIGJ5IG9ubHkgbGVhZGVyIHByb2Nlc3MgKi8KIAlw YXJhbGxlbF92YWN1dW1fcHJvY2Vzc191bnNhZmVfaW5kZXhlcyhwdnMpOwogCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYyBiL3NyYy9iYWNrZW5kL3Bvc3Rt YXN0ZXIvYXV0b3ZhY3V1bS5jCmluZGV4IGJjMTE5NzBiZmVlLi5hMjcyNzRiZmI0ZCAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKKysrIGIvc3JjL2JhY2tl bmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKQEAgLTM0MzksNiArMzQzOSwxMyBAQCBBdXRvVmFj dXVtUmVzZXJ2ZVBhcmFsbGVsV29ya2VycyhpbnQgKm53b3JrZXJzKQogCS8qIFJlbWVtYmVyIGhv dyBtYW55IHdvcmtlcnMgd2UgaGF2ZSByZXNlcnZlZC4gKi8KIAlhdl9ud29ya2Vyc19yZXNlcnZl ZCA9ICpud29ya2VyczsKIAorCS8qCisJICogSW5qZWN0aW9uIHBvaW50IHRvIGhlbHAgZXhlcmNp c2luZyBudW1iZXIgb2YgYXZhaWxhYmxlIHBhcmFsbGVsCisJICogYXV0b3ZhY3V1bSB3b3JrZXJz LgorCSAqLworCUlOSkVDVElPTl9QT0lOVCgiYXV0b3ZhY3V1bS1zZXQtZnJlZS1wYXJhbGxlbC13 b3JrZXJzLW51bSIsCisJCQkJCSZBdXRvVmFjdXVtU2htZW0tPmF2X2ZyZWVQYXJhbGxlbFdvcmtl cnMpOworCiAJTFdMb2NrUmVsZWFzZShBdXRvdmFjdXVtTG9jayk7CiB9CiAKQEAgLTM0NjgsNiAr MzQ3NSwxMyBAQCBBdXRvVmFjdXVtUmVsZWFzZVBhcmFsbGVsV29ya2VycyhpbnQgbndvcmtlcnMp CiAJLyogRG9uJ3QgaGF2ZSB0byByZW1lbWJlciB0aGVzZSB3b3JrZXJzIGFueW1vcmUuICovCiAJ YXZfbndvcmtlcnNfcmVzZXJ2ZWQgLT0gbndvcmtlcnM7CiAKKwkvKgorCSAqIEluamVjdGlvbiBw b2ludCB0byBoZWxwIGV4ZXJjaXNpbmcgbnVtYmVyIG9mIGF2YWlsYWJsZSBwYXJhbGxlbAorCSAq IGF1dG92YWN1dW0gd29ya2Vycy4KKwkgKi8KKwlJTkpFQ1RJT05fUE9JTlQoImF1dG92YWN1dW0t c2V0LWZyZWUtcGFyYWxsZWwtd29ya2Vycy1udW0iLAorCQkJCQkmQXV0b1ZhY3V1bVNobWVtLT5h dl9mcmVlUGFyYWxsZWxXb3JrZXJzKTsKKwogCUxXTG9ja1JlbGVhc2UoQXV0b3ZhY3V1bUxvY2sp OwogfQogCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL01ha2VmaWxlIGIvc3JjL3Rlc3Qv bW9kdWxlcy9NYWtlZmlsZQppbmRleCA0YzZkNTZkOTdkOC4uYmZlMzY1ZmE1NzUgMTAwNjQ0Ci0t LSBhL3NyYy90ZXN0L21vZHVsZXMvTWFrZWZpbGUKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy9NYWtl ZmlsZQpAQCAtMTYsNiArMTYsNyBAQCBTVUJESVJTID0gXAogCQkgIHBsc2FtcGxlIFwKIAkJICBz cGdpc3RfbmFtZV9vcHMgXAogCQkgIHRlc3RfYWlvIFwKKwkJICB0ZXN0X2F1dG92YWN1dW0gXAog CQkgIHRlc3RfYmluYXJ5aGVhcCBcCiAJCSAgdGVzdF9iaXRtYXBzZXQgXAogCQkgIHRlc3RfYmxv b21maWx0ZXIgXApkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy9tZXNvbi5idWlsZCBiL3Ny Yy90ZXN0L21vZHVsZXMvbWVzb24uYnVpbGQKaW5kZXggMWIzMWM1Yjk4ZDYuLjAxYTNlM2VjMDQ0 IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9tb2R1bGVzL21lc29uLmJ1aWxkCisrKyBiL3NyYy90ZXN0 L21vZHVsZXMvbWVzb24uYnVpbGQKQEAgLTE2LDYgKzE2LDcgQEAgc3ViZGlyKCdwbHNhbXBsZScp CiBzdWJkaXIoJ3NwZ2lzdF9uYW1lX29wcycpCiBzdWJkaXIoJ3NzbF9wYXNzcGhyYXNlX2NhbGxi YWNrJykKIHN1YmRpcigndGVzdF9haW8nKQorc3ViZGlyKCd0ZXN0X2F1dG92YWN1dW0nKQogc3Vi ZGlyKCd0ZXN0X2JpbmFyeWhlYXAnKQogc3ViZGlyKCd0ZXN0X2JpdG1hcHNldCcpCiBzdWJkaXIo J3Rlc3RfYmxvb21maWx0ZXInKQpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1 dG92YWN1dW0vLmdpdGlnbm9yZSBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtLy5n aXRpZ25vcmUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAuLjcxNmUxN2Y1 YTJhCi0tLSAvZGV2L251bGwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0v LmdpdGlnbm9yZQpAQCAtMCwwICsxLDIgQEAKKyMgR2VuZXJhdGVkIHN1YmRpcmVjdG9yaWVzCisv dG1wX2NoZWNrLwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2F1dG92YWN1dW0v TWFrZWZpbGUgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS9NYWtlZmlsZQpuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMC4uNGNmNzM0NGIyYWMKLS0tIC9kZXYv bnVsbAorKysgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS9NYWtlZmlsZQpAQCAt MCwwICsxLDI2IEBACisjIHNyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL01ha2VmaWxl CisKK1BHRklMRURFU0MgPSAidGVzdF9hdXRvdmFjdXVtIC0gdGVzdCBjb2RlIGZvciBwYXJhbGxl bCBhdXRvdmFjdXVtIgorCitNT0RVTEVfYmlnID0gdGVzdF9hdXRvdmFjdXVtCitPQkpTID0gXAor CSQoV0lOMzJSRVMpIFwKKwl0ZXN0X2F1dG92YWN1dW0ubworCitFWFRFTlNJT04gPSB0ZXN0X2F1 dG92YWN1dW0KK0RBVEEgPSB0ZXN0X2F1dG92YWN1dW0tLTEuMC5zcWwKKworVEFQX1RFU1RTID0g MQorCitleHBvcnQgZW5hYmxlX2luamVjdGlvbl9wb2ludHMKKworaWZkZWYgVVNFX1BHWFMKK1BH X0NPTkZJRyA9IHBnX2NvbmZpZworUEdYUyA6PSAkKHNoZWxsICQoUEdfQ09ORklHKSAtLXBneHMp CitpbmNsdWRlICQoUEdYUykKK2Vsc2UKK3N1YmRpciA9IHNyYy90ZXN0L21vZHVsZXMvdGVzdF9h dXRvdmFjdXVtCit0b3BfYnVpbGRkaXIgPSAuLi8uLi8uLi8uLgoraW5jbHVkZSAkKHRvcF9idWls ZGRpcikvc3JjL01ha2VmaWxlLmdsb2JhbAoraW5jbHVkZSAkKHRvcF9zcmNkaXIpL2NvbnRyaWIv Y29udHJpYi1nbG9iYWwubWsKK2VuZGlmCmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rl c3RfYXV0b3ZhY3V1bS9tZXNvbi5idWlsZCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFj dXVtL21lc29uLmJ1aWxkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4z NDQxZTVlNDljZgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRv dmFjdXVtL21lc29uLmJ1aWxkCkBAIC0wLDAgKzEsMzYgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDI0 LTIwMjUsIFBvc3RncmVTUUwgR2xvYmFsIERldmVsb3BtZW50IEdyb3VwCisKK3Rlc3RfYXV0b3Zh Y3V1bV9zb3VyY2VzID0gZmlsZXMoCisgICd0ZXN0X2F1dG92YWN1dW0uYycsCispCisKK2lmIGhv c3Rfc3lzdGVtID09ICd3aW5kb3dzJworICB0ZXN0X2F1dG92YWN1dW1fc291cmNlcyArPSByY19s aWJfZ2VuLnByb2Nlc3Mod2luMzJ2ZXJfcmMsIGV4dHJhX2FyZ3M6IFsKKyAgICAnLS1OQU1FJywg J3Rlc3RfYXV0b3ZhY3V1bScsCisgICAgJy0tRklMRURFU0MnLCAndGVzdF9hdXRvdmFjdXVtIC0g dGVzdCBjb2RlIGZvciBwYXJhbGxlbCBhdXRvdmFjdXVtJyxdKQorZW5kaWYKKwordGVzdF9hdXRv dmFjdXVtID0gc2hhcmVkX21vZHVsZSgndGVzdF9hdXRvdmFjdXVtJywKKyAgdGVzdF9hdXRvdmFj dXVtX3NvdXJjZXMsCisgIGt3YXJnczogcGdfdGVzdF9tb2RfYXJncywKKykKK3Rlc3RfaW5zdGFs bF9saWJzICs9IHRlc3RfYXV0b3ZhY3V1bQorCit0ZXN0X2luc3RhbGxfZGF0YSArPSBmaWxlcygK KyAgJ3Rlc3RfYXV0b3ZhY3V1bS5jb250cm9sJywKKyAgJ3Rlc3RfYXV0b3ZhY3V1bS0tMS4wLnNx bCcsCispCisKK3Rlc3RzICs9IHsKKyAgJ25hbWUnOiAndGVzdF9hdXRvdmFjdXVtJywKKyAgJ3Nk JzogbWVzb24uY3VycmVudF9zb3VyY2VfZGlyKCksCisgICdiZCc6IG1lc29uLmN1cnJlbnRfYnVp bGRfZGlyKCksCisgICd0YXAnOiB7CisgICAgJ2Vudic6IHsKKyAgICAgICAnZW5hYmxlX2luamVj dGlvbl9wb2ludHMnOiBnZXRfb3B0aW9uKCdpbmplY3Rpb25fcG9pbnRzJykgPyAneWVzJyA6ICdu bycsCisgICAgfSwKKyAgICAndGVzdHMnOiBbCisgICAgICAndC8wMDFfYmFzaWMucGwnLAorICAg IF0sCisgIH0sCit9CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1 bS90LzAwMV9iYXNpYy5wbCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL3QvMDAx X2Jhc2ljLnBsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4xMjcxNzY4 ZWJkMgotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVt L3QvMDAxX2Jhc2ljLnBsCkBAIC0wLDAgKzEsMTY1IEBACit1c2Ugd2FybmluZ3MgRkFUQUwgPT4g J2FsbCc7Cit1c2UgUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3RlcjsKK3VzZSBQb3N0Z3JlU1FMOjpU ZXN0OjpVdGlsczsKK3VzZSBUZXN0OjpNb3JlOworCitteSAkcHNxbF9vdXQ7CisKK215ICRub2Rl ID0gUG9zdGdyZVNRTDo6VGVzdDo6Q2x1c3Rlci0+bmV3KCdub2RlMScpOworJG5vZGUtPmluaXQ7 CisKKyMgQ29uZmlndXJlIHBvc3RncmVzLCBzbyBpdCBjYW4gbGF1bmNoIHBhcmFsbGVsIGF1dG92 YWN1dW0gd29ya2VycywgbG9nIGFsbAorIyBpbmZvcm1hdGlvbiB3ZSBhcmUgaW50ZXJlc3RlZCBp biBhbmQgYXV0b3ZhY3V1bSB3b3JrcyBmcmVxdWVudGx5Ciskbm9kZS0+YXBwZW5kX2NvbmYoJ3Bv c3RncmVzcWwuY29uZicsIHFxeworCW1heF93b3JrZXJfcHJvY2Vzc2VzID0gMjAKKwltYXhfcGFy YWxsZWxfd29ya2VycyA9IDIwCisJbWF4X3BhcmFsbGVsX21haW50ZW5hbmNlX3dvcmtlcnMgPSAy MAorCWF1dG92YWN1dW1fbWF4X3BhcmFsbGVsX3dvcmtlcnMgPSAxMAorCWxvZ19taW5fbWVzc2Fn ZXMgPSBkZWJ1ZzIKKwlsb2dfYXV0b3ZhY3V1bV9taW5fZHVyYXRpb24gPSAwCisJYXV0b3ZhY3V1 bV9uYXB0aW1lID0gJzFzJworCW1pbl9wYXJhbGxlbF9pbmRleF9zY2FuX3NpemUgPSAwCisJc2hh cmVkX3ByZWxvYWRfbGlicmFyaWVzPXRlc3RfYXV0b3ZhY3V1bQorfSk7Ciskbm9kZS0+c3RhcnQ7 CisKK215ICRpbmRleGVzX251bSA9IDQ7CitteSAkaW5pdGlhbF9yb3dzX251bSA9IDEwXzAwMDsK K215ICRhdXRvdmFjdXVtX3BhcmFsbGVsX3dvcmtlcnMgPSAyOworCisjIENyZWF0ZSB0YWJsZSB3 aXRoIHNwZWNpZmllZCBudW1iZXIgb2YgYi10cmVlIGluZGV4ZXMgb24gaXQKKyRub2RlLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywgcXF7CisJQ1JFQVRFIFRBQkxFIHRlc3RfYXV0b3ZhYyAoCisJCWlk IFNFUklBTCBQUklNQVJZIEtFWSwKKwkJY29sXzEgSU5URUdFUiwgIGNvbF8yIElOVEVHRVIsICBj b2xfMyBJTlRFR0VSLCAgY29sXzQgSU5URUdFUgorCSkgV0lUSCAoYXV0b3ZhY3V1bV9wYXJhbGxl bF93b3JrZXJzID0gJGF1dG92YWN1dW1fcGFyYWxsZWxfd29ya2VycywKKwkJCWF1dG92YWN1dW1f ZW5hYmxlZCA9IGZhbHNlKTsKKworCURPIFwkXCQKKwlERUNMQVJFCisJCWkgSU5URUdFUjsKKwlC RUdJTgorCQlGT1IgaSBJTiAxLi4kaW5kZXhlc19udW0gTE9PUAorCQkJRVhFQ1VURSBmb3JtYXQo J0NSRUFURSBJTkRFWCBpZHhfY29sX1wlcyBPTiB0ZXN0X2F1dG92YWMgKGNvbF9cJXMpOycsIGks IGkpOworCQlFTkQgTE9PUDsKKwlFTkQgXCRcJDsKK30pOworCisjIEluc2VydCBzcGVjaWZpZWQg dHVwbGVzIG51bSBpbnRvIHRoZSB0YWJsZQorJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBx cXsKKwlETyBcJFwkCisJREVDTEFSRQorCQlpIElOVEVHRVI7CisJQkVHSU4KKwkJRk9SIGkgSU4g MS4uJGluaXRpYWxfcm93c19udW0gTE9PUAorCQkJSU5TRVJUIElOVE8gdGVzdF9hdXRvdmFjIFZB TFVFUyAoaSwgaSArIDEsIGkgKyAyLCBpICsgMyk7CisJCUVORCBMT09QOworCUVORCBcJFwkOwor fSk7CisKKyMgTm93LCBjcmVhdGUgc29tZSBkZWFkIHR1cGxlcyBhbmQgcmVmcmVzaCB0YWJsZSBz dGF0aXN0aWNzCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxeworCVVQREFURSB0ZXN0 X2F1dG92YWMgU0VUIGNvbF8xID0gMCBXSEVSRSAoY29sXzEgJSAzKSA9IDA7CisJQU5BTFlaRSB0 ZXN0X2F1dG92YWM7Cit9KTsKKworIyBDcmVhdGUgYWxsIGZ1bmN0aW9ucyBuZWVkZWQgZm9yIHRl c3RpbmcKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgcXF7CisJQ1JFQVRFIEVYVEVOU0lP TiB0ZXN0X2F1dG92YWN1dW07CisJU0VMRUNUIGlual9zZXRfZnJlZV93b3JrZXJzX2F0dGFjaCgp OworCVNFTEVDVCBpbmpfbGVhZGVyX2ZhaWx1cmVfYXR0YWNoKCk7Cit9KTsKKworIyBUZXN0IDEg OgorIyBPdXIgdGFibGUgaGFzIGVub3VnaCBpbmRleGVzIGFuZCBhcHByb3ByaWF0ZSByZWxvcHRp b25zLCBzbyBhdXRvdmFjdXVtIG11c3QKKyMgYmUgYWJsZSB0byBwcm9jZXNzIGl0IGluIHBhcmFs bGVsIG1vZGUuIEp1c3QgY2hlY2sgaWYgaXQgY2FuLgorIyBBbHNvIGNoZWNrIHdoZXRoZXIgYWxs IHJlcXVlc3RlZCB3b3JrZXJzOgorIyAJMSkgbGF1bmNoZWQKKyMgCTIpIGNvcnJlY3RseSByZWxl YXNlZAorCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxeworCUFMVEVSIFRBQkxFIHRl c3RfYXV0b3ZhYyBTRVQgKGF1dG92YWN1dW1fZW5hYmxlZCA9IHRydWUpOworfSk7CisKKyMgV2Fp dCB1bnRpbCB0aGUgcGFyYWxsZWwgYXV0b3ZhY3V1bSBvbiB0YWJsZSBpcyBjb21wbGV0ZWQuIEF0 IHRoZSBzYW1lIHRpbWUsCisjIHdlIGNoZWNrIHRoYXQgdGhlIHJlcXVpcmVkIG51bWJlciBvZiBw YXJhbGxlbCB3b3JrZXJzIGhhcyBiZWVuIHN0YXJ0ZWQuCiskbm9kZS0+d2FpdF9mb3JfbG9nKHFy L3BhcmFsbGVsIGluZGV4IHZhY3V1bVwvY2xlYW51cCA6IHdvcmtlcnMgcGxhbm5lZCA9IDIsIC8g LgorCQkJCQlxci93b3JrZXJzIGxhdW5jaGVkID0gMi8pOworCiskbm9kZS0+cHNxbCgncG9zdGdy ZXMnLAorCSJTRUxFQ1QgZ2V0X3BhcmFsbGVsX2F1dG92YWN1dW1fZnJlZV93b3JrZXJzKCk7IiwK KwlzdGRvdXQgPT4gXCRwc3FsX291dCwKKyk7CitpcygkcHNxbF9vdXQsIDEwLCAnQWxsIHBhcmFs bGVsIHdvcmtlcnMgaGFzIGJlZW4gcmVsZWFzZWQgYnkgdGhlIGxlYWRlcicpOworCisjIERpc2Fi bGUgYXV0b3ZhY3V1bSBvbiB0YWJsZSBkdXJpbmcgcHJlcGFyYXRpb24gZm9yIHRoZSBuZXh0IHRl c3QKKyRub2RlLT5hcHBlbmRfY29uZigncG9zdGdyZXNxbC5jb25mJywgcXF7CisJQUxURVIgVEFC TEUgdGVzdF9hdXRvdmFjIFNFVCAoYXV0b3ZhY3V1bV9lbmFibGVkID0gZmFsc2UpOworfSk7CisK KyMgQ3JlYXRlIG1vcmUgZGVhZCB0dXBsZXMKKyRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywg cXF7CisJVVBEQVRFIHRlc3RfYXV0b3ZhYyBTRVQgY29sXzIgPSAwIFdIRVJFIChjb2xfMiAlIDMp ID0gMDsKKwlBTkFMWVpFIHRlc3RfYXV0b3ZhYzsKK30pOworCisjIFRlc3QgMjoKKyMgV2Ugd2Fu dCBwYXJhbGxlbCBhdXRvdmFjdXVtIHdvcmtlcnMgdG8gYmUgcmVsZWFzZWQgZXZlbiBpZiBsZWFk ZXIgZ2V0cyBhbgorIyBlcnJvci4gQXQgZmlyc3QsIHNpbXVsYXRlIHNpdHVhdGlvbiwgd2hlbiBs ZWFkZXIgZXhpdGVzIGR1ZSB0byBhbiBFUlJPUi4KKworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdy ZXMnLCBxcSgKKwlTRUxFQ1QgdHJpZ2dlcl9sZWFkZXJfZmFpbHVyZSgnRVJST1InKTsKKykpOwor Ciskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxeworCUFMVEVSIFRBQkxFIHRlc3RfYXV0 b3ZhYyBTRVQgKGF1dG92YWN1dW1fZW5hYmxlZCA9IHRydWUpOworfSk7CisKKyRub2RlLT53YWl0 X2Zvcl9sb2cocXIvZXJyb3IsIHRyaWdnZXJlZCBieSBpbmplY3Rpb24gcG9pbnQvKTsKKworJG5v ZGUtPnBzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIGdldF9wYXJhbGxlbF9hdXRvdmFjdXVtX2Zy ZWVfd29ya2VycygpOyIsCisJc3Rkb3V0ID0+IFwkcHNxbF9vdXQsCispOworaXMoJHBzcWxfb3V0 LCAxMCwKKyAgICdBbGwgcGFyYWxsZWwgd29ya2VycyBoYXMgYmVlbiByZWxlYXNlZCBieSB0aGUg bGVhZGVyIGFmdGVyIEVSUk9SJyk7CisKKyMgRGlzYWJsZSBhdXRvdmFjdXVtIG9uIHRhYmxlIGR1 cmluZyBwcmVwYXJhdGlvbiBmb3IgdGhlIG5leHQgdGVzdAorJG5vZGUtPmFwcGVuZF9jb25mKCdw b3N0Z3Jlc3FsLmNvbmYnLCBxcXsKKwlBTFRFUiBUQUJMRSB0ZXN0X2F1dG92YWMgU0VUIChhdXRv dmFjdXVtX2VuYWJsZWQgPSBmYWxzZSk7Cit9KTsKKworIyBDcmVhdGUgbW9yZSBkZWFkIHR1cGxl cworJG5vZGUtPnNhZmVfcHNxbCgncG9zdGdyZXMnLCBxcXsKKwlVUERBVEUgdGVzdF9hdXRvdmFj IFNFVCBjb2xfMyA9IDAgV0hFUkUgKGNvbF8zICUgMykgPSAwOworCUFOQUxZWkUgdGVzdF9hdXRv dmFjOworfSk7CisKKyMgVGVzdCAzOgorIyBTYW1lIGFzIFRlc3QgMiwgYnV0IHNpbXVsYXRlIHNp dHVhdGlvbiwgd2hlbiBsZWFkZXIgZXhpdGVzIGR1ZSB0byBGQVRBTC4KKworJG5vZGUtPnNhZmVf cHNxbCgncG9zdGdyZXMnLCBxcSgKKwlTRUxFQ1QgdHJpZ2dlcl9sZWFkZXJfZmFpbHVyZSgnRkFU QUwnKTsKKykpOworCiskbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsIHFxeworCUFMVEVSIFRB QkxFIHRlc3RfYXV0b3ZhYyBTRVQgKGF1dG92YWN1dW1fZW5hYmxlZCA9IHRydWUpOworfSk7CisK KyRub2RlLT53YWl0X2Zvcl9sb2cocXIvZmF0YWwsIHRyaWdnZXJlZCBieSBpbmplY3Rpb24gcG9p bnQvKTsKKworJG5vZGUtPnBzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIGdldF9wYXJhbGxlbF9h dXRvdmFjdXVtX2ZyZWVfd29ya2VycygpOyIsCisJc3Rkb3V0ID0+IFwkcHNxbF9vdXQsCispOwor aXMoJHBzcWxfb3V0LCAxMCwKKyAgICdBbGwgcGFyYWxsZWwgd29ya2VycyBoYXMgYmVlbiByZWxl YXNlZCBieSB0aGUgbGVhZGVyIGFmdGVyIEZBVEFMJyk7CisKKyMgQ2xlYW51cAorJG5vZGUtPnNh ZmVfcHNxbCgncG9zdGdyZXMnLCBxcXsKKwlTRUxFQ1QgaW5qX3NldF9mcmVlX3dvcmtlcnNfZGV0 YWNoKCk7CisJU0VMRUNUIGlual9sZWFkZXJfZmFpbHVyZV9kZXRhY2goKTsKK30pOworCiskbm9k ZS0+c3RvcDsKK2RvbmVfdGVzdGluZygpOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvbW9kdWxlcy90 ZXN0X2F1dG92YWN1dW0vdGVzdF9hdXRvdmFjdXVtLS0xLjAuc3FsIGIvc3JjL3Rlc3QvbW9kdWxl cy90ZXN0X2F1dG92YWN1dW0vdGVzdF9hdXRvdmFjdXVtLS0xLjAuc3FsCm5ldyBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwLi4wMTdkNWRhODVlYQotLS0gL2Rldi9udWxsCisrKyBi L3NyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFjdXVtL3Rlc3RfYXV0b3ZhY3V1bS0tMS4wLnNx bApAQCAtMCwwICsxLDM0IEBACisvKiBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS90 ZXN0X2F1dG92YWN1dW0tLTEuMC5zcWwgKi8KKworLS0gY29tcGxhaW4gaWYgc2NyaXB0IGlzIHNv dXJjZWQgaW4gcHNxbCwgcmF0aGVyIHRoYW4gdmlhIENSRUFURSBFWFRFTlNJT04KK1xlY2hvIFVz ZSAiQ1JFQVRFIEVYVEVOU0lPTiB0ZXN0X2F1dG92YWN1dW0iIHRvIGxvYWQgdGhpcyBmaWxlLiBc cXVpdAorCisvKgorICogRnVuY3Rpb25zIGZvciBleHBlY3Rpbmcgb3IgdG8gaW50ZXJmZXJlIGF1 dG92YWN1dW0gc3RhdGUKKyAqLworQ1JFQVRFIEZVTkNUSU9OIGdldF9wYXJhbGxlbF9hdXRvdmFj dXVtX2ZyZWVfd29ya2VycygpCitSRVRVUk5TIElOVEVHRVIgU1RSSUNUCitBUyAnTU9EVUxFX1BB VEhOQU1FJyBMQU5HVUFHRSBDOworCitDUkVBVEUgRlVOQ1RJT04gdHJpZ2dlcl9sZWFkZXJfZmFp bHVyZShmYWlsdXJlX3R5cGUgdGV4dCkKK1JFVFVSTlMgVk9JRCBTVFJJQ1QKK0FTICdNT0RVTEVf UEFUSE5BTUUnIExBTkdVQUdFIEM7CisKKy8qCisgKiBJbmplY3Rpb24gcG9pbnQgcmVsYXRlZCBm dW5jdGlvbnMKKyAqLworQ1JFQVRFIEZVTkNUSU9OIGlual9zZXRfZnJlZV93b3JrZXJzX2F0dGFj aCgpCitSRVRVUk5TIFZPSUQgU1RSSUNUCitBUyAnTU9EVUxFX1BBVEhOQU1FJyBMQU5HVUFHRSBD OworCitDUkVBVEUgRlVOQ1RJT04gaW5qX3NldF9mcmVlX3dvcmtlcnNfZGV0YWNoKCkKK1JFVFVS TlMgVk9JRCBTVFJJQ1QKK0FTICdNT0RVTEVfUEFUSE5BTUUnIExBTkdVQUdFIEM7CisKK0NSRUFU RSBGVU5DVElPTiBpbmpfbGVhZGVyX2ZhaWx1cmVfYXR0YWNoKCkKK1JFVFVSTlMgVk9JRCBTVFJJ Q1QKK0FTICdNT0RVTEVfUEFUSE5BTUUnIExBTkdVQUdFIEM7CisKK0NSRUFURSBGVU5DVElPTiBp bmpfbGVhZGVyX2ZhaWx1cmVfZGV0YWNoKCkKK1JFVFVSTlMgVk9JRCBTVFJJQ1QKK0FTICdNT0RV TEVfUEFUSE5BTUUnIExBTkdVQUdFIEM7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rl c3RfYXV0b3ZhY3V1bS90ZXN0X2F1dG92YWN1dW0uYyBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9h dXRvdmFjdXVtL3Rlc3RfYXV0b3ZhY3V1bS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwLi43OTQ4ZjQ4NThhZQotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVs ZXMvdGVzdF9hdXRvdmFjdXVtL3Rlc3RfYXV0b3ZhY3V1bS5jCkBAIC0wLDAgKzEsMjU1IEBACisv Ki0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0KKyAqCisgKiB0ZXN0X2F1dG92YWN1dW0uYworICoJCUhlbHBlcnMg dG8gd3JpdGUgdGVzdHMgZm9yIHBhcmFsbGVsIGF1dG92YWN1dW0KKyAqCisgKiBDb3B5cmlnaHQg KGMpIDIwMjAtMjAyNSwgUG9zdGdyZVNRTCBHbG9iYWwgRGV2ZWxvcG1lbnQgR3JvdXAKKyAqCisg KiBJREVOVElGSUNBVElPTgorICoJICBzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1bS90 ZXN0X2F1dG92YWN1dW0uYworICoKKyAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICovCisKKyNpbmNsdWRl ICJwb3N0Z3Jlcy5oIgorCisjaW5jbHVkZSAiZm1nci5oIgorI2luY2x1ZGUgIm1pc2NhZG1pbi5o IgorI2luY2x1ZGUgInBvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5oIgorI2luY2x1ZGUgInN0b3JhZ2Uv c2htZW0uaCIKKyNpbmNsdWRlICJzdG9yYWdlL2lwYy5oIgorI2luY2x1ZGUgInN0b3JhZ2UvbHds b2NrLmgiCisjaW5jbHVkZSAidXRpbHMvYnVpbHRpbnMuaCIKKyNpbmNsdWRlICJ1dGlscy9pbmpl Y3Rpb25fcG9pbnQuaCIKKworUEdfTU9EVUxFX01BR0lDOworCit0eXBlZGVmIGVudW0gQVZMZWFk ZXJGYXVsdXJlVHlwZQoreworCUZBSUxfTk9ORSwKKwlGQUlMX0VSUk9SLAorCUZBSUxfRkFUQUws Cit9CQkJQVZMZWFkZXJGYXVsdXJlVHlwZTsKKwordHlwZWRlZiBzdHJ1Y3QgSW5qUG9pbnRTdGF0 ZQoreworCWJvb2wJCWVuYWJsZWRfc2V0X2ZyZWVfd29ya2VyczsKKwl1aW50MzIJCWZyZWVfcGFy YWxsZWxfd29ya2VyczsKKworCWJvb2wJCWVuYWJsZWRfbGVhZGVyX2ZhaWx1cmU7CisJQVZMZWFk ZXJGYXVsdXJlVHlwZSBmdHlwZTsKK30JCQlJbmpQb2ludFN0YXRlOworCitzdGF0aWMgSW5qUG9p bnRTdGF0ZSAqIGlual9wb2ludF9zdGF0ZTsKKworLyogU2hhcmVkIG1lbW9yeSBpbml0IGNhbGxi YWNrcyAqLworc3RhdGljIHNobWVtX3JlcXVlc3RfaG9va190eXBlIHByZXZfc2htZW1fcmVxdWVz dF9ob29rID0gTlVMTDsKK3N0YXRpYyBzaG1lbV9zdGFydHVwX2hvb2tfdHlwZSBwcmV2X3NobWVt X3N0YXJ0dXBfaG9vayA9IE5VTEw7CisKK3N0YXRpYyB2b2lkCit0ZXN0X2F1dG92YWN1dW1fc2ht ZW1fcmVxdWVzdCh2b2lkKQoreworCWlmIChwcmV2X3NobWVtX3JlcXVlc3RfaG9vaykKKwkJcHJl dl9zaG1lbV9yZXF1ZXN0X2hvb2soKTsKKworCVJlcXVlc3RBZGRpblNobWVtU3BhY2Uoc2l6ZW9m KElualBvaW50U3RhdGUpKTsKK30KKworc3RhdGljIHZvaWQKK3Rlc3RfYXV0b3ZhY3V1bV9zaG1l bV9zdGFydHVwKHZvaWQpCit7CisJYm9vbAkJZm91bmQ7CisKKwlpZiAocHJldl9zaG1lbV9zdGFy dHVwX2hvb2spCisJCXByZXZfc2htZW1fc3RhcnR1cF9ob29rKCk7CisKKwkvKiBDcmVhdGUgb3Ig YXR0YWNoIHRvIHRoZSBzaGFyZWQgbWVtb3J5IHN0YXRlICovCisJTFdMb2NrQWNxdWlyZShBZGRp blNobWVtSW5pdExvY2ssIExXX0VYQ0xVU0lWRSk7CisKKwlpbmpfcG9pbnRfc3RhdGUgPSBTaG1l bUluaXRTdHJ1Y3QoImluamVjdGlvbl9wb2ludHMiLAorCQkJCQkJCQkJICBzaXplb2YoSW5qUG9p bnRTdGF0ZSksCisJCQkJCQkJCQkgICZmb3VuZCk7CisKKwlpZiAoIWZvdW5kKQorCXsKKwkJLyog Rmlyc3QgdGltZSB0aHJvdWdoLCBpbml0aWFsaXplICovCisJCWlual9wb2ludF9zdGF0ZS0+ZW5h YmxlZF9sZWFkZXJfZmFpbHVyZSA9IGZhbHNlOworCQlpbmpfcG9pbnRfc3RhdGUtPmVuYWJsZWRf c2V0X2ZyZWVfd29ya2VycyA9IGZhbHNlOworCQlpbmpfcG9pbnRfc3RhdGUtPmZ0eXBlID0gRkFJ TF9OT05FOworCisJCS8qIEtlZXAgaXQgaW4gc3luYyB3aXRoIEF1dG9WYWN1dW1TaG1lbUluaXQg Ki8KKwkJaW5qX3BvaW50X3N0YXRlLT5mcmVlX3BhcmFsbGVsX3dvcmtlcnMgPQorCQkJTWluKGF1 dG92YWN1dW1fbWF4X3BhcmFsbGVsX3dvcmtlcnMsIG1heF93b3JrZXJfcHJvY2Vzc2VzKTsKKwor CQlJbmplY3Rpb25Qb2ludEF0dGFjaCgiYXV0b3ZhY3V1bS1zZXQtZnJlZS1wYXJhbGxlbC13b3Jr ZXJzLW51bSIsCisJCQkJCQkJICJ0ZXN0X2F1dG92YWN1dW0iLAorCQkJCQkJCSAiaW5qX3NldF9m cmVlX3dvcmtlcnMiLAorCQkJCQkJCSBOVUxMLAorCQkJCQkJCSAwKTsKKworCQlJbmplY3Rpb25Q b2ludEF0dGFjaCgiYXV0b3ZhY3V1bS10cmlnZ2VyLWxlYWRlci1mYWlsdXJlIiwKKwkJCQkJCQkg InRlc3RfYXV0b3ZhY3V1bSIsCisJCQkJCQkJICJpbmpfdHJpZ2dlcl9sZWFkZXJfZmFpbHVyZSIs CisJCQkJCQkJIE5VTEwsCisJCQkJCQkJIDApOworCX0KKworCUxXTG9ja1JlbGVhc2UoQWRkaW5T aG1lbUluaXRMb2NrKTsKK30KKwordm9pZAorX1BHX2luaXQodm9pZCkKK3sKKwlpZiAoIXByb2Nl c3Nfc2hhcmVkX3ByZWxvYWRfbGlicmFyaWVzX2luX3Byb2dyZXNzKQorCQlyZXR1cm47CisKKwlw cmV2X3NobWVtX3JlcXVlc3RfaG9vayA9IHNobWVtX3JlcXVlc3RfaG9vazsKKwlzaG1lbV9yZXF1 ZXN0X2hvb2sgPSB0ZXN0X2F1dG92YWN1dW1fc2htZW1fcmVxdWVzdDsKKwlwcmV2X3NobWVtX3N0 YXJ0dXBfaG9vayA9IHNobWVtX3N0YXJ0dXBfaG9vazsKKwlzaG1lbV9zdGFydHVwX2hvb2sgPSB0 ZXN0X2F1dG92YWN1dW1fc2htZW1fc3RhcnR1cDsKK30KKworZXh0ZXJuIFBHRExMRVhQT1JUIHZv aWQgaW5qX3NldF9mcmVlX3dvcmtlcnMoY29uc3QgY2hhciAqbmFtZSwKKwkJCQkJCQkJCQkJIGNv bnN0IHZvaWQgKnByaXZhdGVfZGF0YSwKKwkJCQkJCQkJCQkJIHZvaWQgKmFyZyk7CitleHRlcm4g UEdETExFWFBPUlQgdm9pZCBpbmpfdHJpZ2dlcl9sZWFkZXJfZmFpbHVyZShjb25zdCBjaGFyICpu YW1lLAorCQkJCQkJCQkJCQkJICAgY29uc3Qgdm9pZCAqcHJpdmF0ZV9kYXRhLAorCQkJCQkJCQkJ CQkJICAgdm9pZCAqYXJnKTsKKworLyoKKyAqIFNldCBudW1iZXIgb2YgY3VycmVudGx5IGF2YWls YWJsZSBwYXJhbGxlbCBhL3Ygd29ya2Vycy4gVGhpcyB2YWx1ZSBtYXkKKyAqIGNoYW5nZSBhZnRl ciByZXNlcnZpbmcgb3IgcmVsZWFzaW5nIHN1Y2ggd29ya2Vycy4KKyAqCisgKiBGdW5jdGlvbiBj YWxsZWQgZnJvbSBwYXJhbGxlbCBhdXRvdmFjdXVtIGxlYWRlci4KKyAqLwordm9pZAoraW5qX3Nl dF9mcmVlX3dvcmtlcnMoY29uc3QgY2hhciAqbmFtZSwgY29uc3Qgdm9pZCAqcHJpdmF0ZV9kYXRh LCB2b2lkICphcmcpCit7CisJZXJlcG9ydChMT0csCisJCQllcnJtc2coInNldCBwYXJhbGxlbCB3 b3JrZXJzIGluamVjdGlvbiBwb2ludCBjYWxsZWQiKSwKKwkJCWVycmhpZGVzdG10KHRydWUpLCBl cnJoaWRlY29udGV4dCh0cnVlKSk7CisKKwlpZiAoaW5qX3BvaW50X3N0YXRlLT5lbmFibGVkX3Nl dF9mcmVlX3dvcmtlcnMpCisJeworCQlBc3NlcnQoYXJnICE9IE5VTEwpOworCQlpbmpfcG9pbnRf c3RhdGUtPmZyZWVfcGFyYWxsZWxfd29ya2VycyA9ICoodWludDMyICopIGFyZzsKKwl9Cit9CisK Ky8qCisgKiBUaHJvdyBhbiBFUlJPUiBvciBGQVRBTCwgaWYgc29tZWJvZHkgcmVxdWVzdGVkIGl0 LgorICoKKyAqIEZ1bmN0aW9uIGNhbGxlZCBmcm9tIHBhcmFsbGVsIGF1dG92YWN1dW0gbGVhZGVy LgorICovCit2b2lkCitpbmpfdHJpZ2dlcl9sZWFkZXJfZmFpbHVyZShjb25zdCBjaGFyICpuYW1l LCBjb25zdCB2b2lkICpwcml2YXRlX2RhdGEsCisJCQkJCQkgICB2b2lkICphcmcpCit7CisJaW50 CQkJZWxldmVsOworCWNoYXIJICAgKmVsZXZlbF9zdHI7CisKKwllcmVwb3J0KExPRywKKwkJCWVy cm1zZygidHJpZ2dlciBsZWFkZXIgZmFpbHVyZSBpbmplY3Rpb24gcG9pbnQgY2FsbGVkIiksCisJ CQllcnJoaWRlc3RtdCh0cnVlKSwgZXJyaGlkZWNvbnRleHQodHJ1ZSkpOworCisJaWYgKGlual9w b2ludF9zdGF0ZS0+ZnR5cGUgPT0gRkFJTF9OT05FIHx8CisJCSFpbmpfcG9pbnRfc3RhdGUtPmVu YWJsZWRfbGVhZGVyX2ZhaWx1cmUpCisJeworCQlyZXR1cm47CisJfQorCisJZWxldmVsID0gaW5q X3BvaW50X3N0YXRlLT5mdHlwZSA9PSBGQUlMX0VSUk9SID8gRVJST1IgOiBGQVRBTDsKKwllbGV2 ZWxfc3RyID0gZWxldmVsID09IEVSUk9SID8gImVycm9yIiA6ICJmYXRhbCI7CisKKwllcmVwb3J0 KGVsZXZlbCwgZXJybXNnKCIlcywgdHJpZ2dlcmVkIGJ5IGluamVjdGlvbiBwb2ludCIsIGVsZXZl bF9zdHIpKTsKK30KKworUEdfRlVOQ1RJT05fSU5GT19WMShnZXRfcGFyYWxsZWxfYXV0b3ZhY3V1 bV9mcmVlX3dvcmtlcnMpOworRGF0dW0KK2dldF9wYXJhbGxlbF9hdXRvdmFjdXVtX2ZyZWVfd29y a2VycyhQR19GVU5DVElPTl9BUkdTKQoreworCXVpbnQzMgkJbndvcmtlcnM7CisKKyNpZm5kZWYg VVNFX0lOSkVDVElPTl9QT0lOVFMKKwllbG9nKEVSUk9SLCAiaW5qZWN0aW9uIHBvaW50cyBub3Qg c3VwcG9ydGVkIik7CisjZW5kaWYKKworCUxXTG9ja0FjcXVpcmUoQXV0b3ZhY3V1bUxvY2ssIExX X0VYQ0xVU0lWRSk7CisJbndvcmtlcnMgPSBpbmpfcG9pbnRfc3RhdGUtPmZyZWVfcGFyYWxsZWxf d29ya2VyczsKKwlMV0xvY2tSZWxlYXNlKEF1dG92YWN1dW1Mb2NrKTsKKworCVBHX1JFVFVSTl9V SU5UMzIobndvcmtlcnMpOworfQorCitQR19GVU5DVElPTl9JTkZPX1YxKHRyaWdnZXJfbGVhZGVy X2ZhaWx1cmUpOworRGF0dW0KK3RyaWdnZXJfbGVhZGVyX2ZhaWx1cmUoUEdfRlVOQ1RJT05fQVJH UykKK3sKKwljb25zdCBjaGFyICpmYWlsdXJlX3R5cGUgPSB0ZXh0X3RvX2NzdHJpbmcoUEdfR0VU QVJHX1RFWFRfUFAoMCkpOworCisjaWZuZGVmIFVTRV9JTkpFQ1RJT05fUE9JTlRTCisJZWxvZyhF UlJPUiwgImluamVjdGlvbiBwb2ludHMgbm90IHN1cHBvcnRlZCIpOworI2VuZGlmCisKKwlpZiAo c3RyY21wKGZhaWx1cmVfdHlwZSwgIk5PTkUiKSA9PSAwKQorCQlpbmpfcG9pbnRfc3RhdGUtPmZ0 eXBlID0gRkFJTF9OT05FOworCWVsc2UgaWYgKHN0cmNtcChmYWlsdXJlX3R5cGUsICJFUlJPUiIp ID09IDApCisJCWlual9wb2ludF9zdGF0ZS0+ZnR5cGUgPSBGQUlMX0VSUk9SOworCWVsc2UgaWYg KHN0cmNtcChmYWlsdXJlX3R5cGUsICJGQVRBTCIpID09IDApCisJCWlual9wb2ludF9zdGF0ZS0+ ZnR5cGUgPSBGQUlMX0ZBVEFMOworCWVsc2UKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29k ZShFUlJDT0RFX0lOVkFMSURfUEFSQU1FVEVSX1ZBTFVFKSwKKwkJCQkgZXJybXNnKCJpbnZhbGlk IGxlYWRlciBmYWlsdXJlIHR5cGUgOiAlcyIsIGZhaWx1cmVfdHlwZSkpKTsKKworCVBHX1JFVFVS Tl9WT0lEKCk7Cit9CisKK1BHX0ZVTkNUSU9OX0lORk9fVjEoaW5qX3NldF9mcmVlX3dvcmtlcnNf YXR0YWNoKTsKK0RhdHVtCitpbmpfc2V0X2ZyZWVfd29ya2Vyc19hdHRhY2goUEdfRlVOQ1RJT05f QVJHUykKK3sKKyNpZmRlZiBVU0VfSU5KRUNUSU9OX1BPSU5UUworCWlual9wb2ludF9zdGF0ZS0+ ZW5hYmxlZF9zZXRfZnJlZV93b3JrZXJzID0gdHJ1ZTsKKwlpbmpfcG9pbnRfc3RhdGUtPmZ0eXBl ID0gRkFJTF9OT05FOworI2Vsc2UKKwllbG9nKEVSUk9SLCAiaW5qZWN0aW9uIHBvaW50cyBub3Qg c3VwcG9ydGVkIik7CisjZW5kaWYKKwlQR19SRVRVUk5fVk9JRCgpOworfQorCitQR19GVU5DVElP Tl9JTkZPX1YxKGlual9zZXRfZnJlZV93b3JrZXJzX2RldGFjaCk7CitEYXR1bQoraW5qX3NldF9m cmVlX3dvcmtlcnNfZGV0YWNoKFBHX0ZVTkNUSU9OX0FSR1MpCit7CisjaWZkZWYgVVNFX0lOSkVD VElPTl9QT0lOVFMKKwlpbmpfcG9pbnRfc3RhdGUtPmVuYWJsZWRfc2V0X2ZyZWVfd29ya2VycyA9 IGZhbHNlOworI2Vsc2UKKwllbG9nKEVSUk9SLCAiaW5qZWN0aW9uIHBvaW50cyBub3Qgc3VwcG9y dGVkIik7CisjZW5kaWYKKwlQR19SRVRVUk5fVk9JRCgpOworfQorCitQR19GVU5DVElPTl9JTkZP X1YxKGlual9sZWFkZXJfZmFpbHVyZV9hdHRhY2gpOworRGF0dW0KK2lual9sZWFkZXJfZmFpbHVy ZV9hdHRhY2goUEdfRlVOQ1RJT05fQVJHUykKK3sKKyNpZmRlZiBVU0VfSU5KRUNUSU9OX1BPSU5U UworCWlual9wb2ludF9zdGF0ZS0+ZW5hYmxlZF9sZWFkZXJfZmFpbHVyZSA9IHRydWU7CisjZWxz ZQorCWVsb2coRVJST1IsICJpbmplY3Rpb24gcG9pbnRzIG5vdCBzdXBwb3J0ZWQiKTsKKyNlbmRp ZgorCVBHX1JFVFVSTl9WT0lEKCk7Cit9CisKK1BHX0ZVTkNUSU9OX0lORk9fVjEoaW5qX2xlYWRl cl9mYWlsdXJlX2RldGFjaCk7CitEYXR1bQoraW5qX2xlYWRlcl9mYWlsdXJlX2RldGFjaChQR19G VU5DVElPTl9BUkdTKQoreworI2lmZGVmIFVTRV9JTkpFQ1RJT05fUE9JTlRTCisJaW5qX3BvaW50 X3N0YXRlLT5lbmFibGVkX2xlYWRlcl9mYWlsdXJlID0gZmFsc2U7CisjZWxzZQorCWVsb2coRVJS T1IsICJpbmplY3Rpb24gcG9pbnRzIG5vdCBzdXBwb3J0ZWQiKTsKKyNlbmRpZgorCVBHX1JFVFVS Tl9WT0lEKCk7Cit9CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfYXV0b3ZhY3V1 bS90ZXN0X2F1dG92YWN1dW0uY29udHJvbCBiL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9hdXRvdmFj dXVtL3Rlc3RfYXV0b3ZhY3V1bS5jb250cm9sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw MDAwMDAwMDAwLi4xYjdmYWQyNThmMAotLS0gL2Rldi9udWxsCisrKyBiL3NyYy90ZXN0L21vZHVs ZXMvdGVzdF9hdXRvdmFjdXVtL3Rlc3RfYXV0b3ZhY3V1bS5jb250cm9sCkBAIC0wLDAgKzEsMyBA QAorY29tbWVudCA9ICdUZXN0IGNvZGUgZm9yIHBhcmFsbGVsIGF1dG92YWN1dW0nCitkZWZhdWx0 X3ZlcnNpb24gPSAnMS4wJworbW9kdWxlX3BhdGhuYW1lID0gJyRsaWJkaXIvdGVzdF9hdXRvdmFj dXVtJwotLSAKMi40My4wCgo= --00000000000031e0340647aa1f3d Content-Type: text/x-patch; charset="US-ASCII"; name="v17-0001-Parallel-autovacuum.patch" Content-Disposition: attachment; filename="v17-0001-Parallel-autovacuum.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mk1mog1g3 RnJvbSBhNWYyNjFkYzdiNGZlMzdhYmE4ZjI0ZWY1MjQxZTJiMWYyZDg1YTM2IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYW5paWwgRGF2aWRvdiA8ZC5kYXZ5ZG92QHBvc3RncmVzcHJv LnJ1PgpEYXRlOiBTdW4sIDIzIE5vdiAyMDI1IDAxOjAzOjI0ICswNzAwClN1YmplY3Q6IFtQQVRD SCB2MTcgMS80XSBQYXJhbGxlbCBhdXRvdmFjdXVtCgotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9j b21tb24vcmVsb3B0aW9ucy5jICAgICAgICB8ICAxMSArKwogc3JjL2JhY2tlbmQvY29tbWFuZHMv dmFjdXVtcGFyYWxsZWwuYyAgICAgICAgIHwgIDQyICsrKystCiBzcmMvYmFja2VuZC9wb3N0bWFz dGVyL2F1dG92YWN1dW0uYyAgICAgICAgICAgfCAxNjYgKysrKysrKysrKysrKysrKystCiBzcmMv YmFja2VuZC91dGlscy9pbml0L2dsb2JhbHMuYyAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2Jh Y2tlbmQvdXRpbHMvbWlzYy9ndWMuYyAgICAgICAgICAgICAgICAgIHwgICA4ICstCiBzcmMvYmFj a2VuZC91dGlscy9taXNjL2d1Y19wYXJhbWV0ZXJzLmRhdCAgICAgfCAgIDkgKwogc3JjL2JhY2tl bmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlIHwgICAyICsKIHNyYy9iaW4vcHNx bC90YWItY29tcGxldGUuaW4uYyAgICAgICAgICAgICAgICB8ICAgMSArCiBzcmMvaW5jbHVkZS9t aXNjYWRtaW4uaCAgICAgICAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvcG9z dG1hc3Rlci9hdXRvdmFjdXVtLmggICAgICAgICAgIHwgICA0ICsKIHNyYy9pbmNsdWRlL3V0aWxz L3JlbC5oICAgICAgICAgICAgICAgICAgICAgICB8ICAgNyArCiAxMSBmaWxlcyBjaGFuZ2VkLCAy NDIgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tl bmQvYWNjZXNzL2NvbW1vbi9yZWxvcHRpb25zLmMgYi9zcmMvYmFja2VuZC9hY2Nlc3MvY29tbW9u L3JlbG9wdGlvbnMuYwppbmRleCAwYjgzZjk4ZWQ1Zi4uNjkyYWM0NjczM2UgMTAwNjQ0Ci0tLSBh L3NyYy9iYWNrZW5kL2FjY2Vzcy9jb21tb24vcmVsb3B0aW9ucy5jCisrKyBiL3NyYy9iYWNrZW5k L2FjY2Vzcy9jb21tb24vcmVsb3B0aW9ucy5jCkBAIC0yMjIsNiArMjIyLDE1IEBAIHN0YXRpYyBy ZWxvcHRfaW50IGludFJlbE9wdHNbXSA9CiAJCX0sCiAJCVNQR0lTVF9ERUZBVUxUX0ZJTExGQUNU T1IsIFNQR0lTVF9NSU5fRklMTEZBQ1RPUiwgMTAwCiAJfSwKKwl7CisJCXsKKwkJCSJhdXRvdmFj dXVtX3BhcmFsbGVsX3dvcmtlcnMiLAorCQkJIk1heGltdW0gbnVtYmVyIG9mIHBhcmFsbGVsIGF1 dG92YWN1dW0gd29ya2VycyB0aGF0IGNhbiBiZSB1c2VkIGZvciBwcm9jZXNzaW5nIHRoaXMgdGFi bGUuIiwKKwkJCVJFTE9QVF9LSU5EX0hFQVAsCisJCQlTaGFyZVVwZGF0ZUV4Y2x1c2l2ZUxvY2sK KwkJfSwKKwkJLTEsIC0xLCAxMDI0CisJfSwKIAl7CiAJCXsKIAkJCSJhdXRvdmFjdXVtX3ZhY3V1 bV90aHJlc2hvbGQiLApAQCAtMTg4MSw2ICsxODkwLDggQEAgZGVmYXVsdF9yZWxvcHRpb25zKERh dHVtIHJlbG9wdGlvbnMsIGJvb2wgdmFsaWRhdGUsIHJlbG9wdF9raW5kIGtpbmQpCiAJCXsiZmls bGZhY3RvciIsIFJFTE9QVF9UWVBFX0lOVCwgb2Zmc2V0b2YoU3RkUmRPcHRpb25zLCBmaWxsZmFj dG9yKX0sCiAJCXsiYXV0b3ZhY3V1bV9lbmFibGVkIiwgUkVMT1BUX1RZUEVfQk9PTCwKIAkJb2Zm c2V0b2YoU3RkUmRPcHRpb25zLCBhdXRvdmFjdXVtKSArIG9mZnNldG9mKEF1dG9WYWNPcHRzLCBl bmFibGVkKX0sCisJCXsiYXV0b3ZhY3V1bV9wYXJhbGxlbF93b3JrZXJzIiwgUkVMT1BUX1RZUEVf SU5ULAorCQlvZmZzZXRvZihTdGRSZE9wdGlvbnMsIGF1dG92YWN1dW0pICsgb2Zmc2V0b2YoQXV0 b1ZhY09wdHMsIGF1dG92YWN1dW1fcGFyYWxsZWxfd29ya2Vycyl9LAogCQl7ImF1dG92YWN1dW1f dmFjdXVtX3RocmVzaG9sZCIsIFJFTE9QVF9UWVBFX0lOVCwKIAkJb2Zmc2V0b2YoU3RkUmRPcHRp b25zLCBhdXRvdmFjdXVtKSArIG9mZnNldG9mKEF1dG9WYWNPcHRzLCB2YWN1dW1fdGhyZXNob2xk KX0sCiAJCXsiYXV0b3ZhY3V1bV92YWN1dW1fbWF4X3RocmVzaG9sZCIsIFJFTE9QVF9UWVBFX0lO VCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMgYi9z cmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCmluZGV4IGMzYjNjOWVhMjFhLi42 YTNhMDA1ODVmOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxs ZWwuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCkBAIC0xLDcg KzEsOSBAQAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgogICogdmFjdXVtcGFyYWxsZWwuYwotICoJ ICBTdXBwb3J0IHJvdXRpbmVzIGZvciBwYXJhbGxlbCB2YWN1dW0gZXhlY3V0aW9uLgorICoJICBT dXBwb3J0IHJvdXRpbmVzIGZvciBwYXJhbGxlbCB2YWN1dW0gYW5kIGF1dG92YWN1dW0gZXhlY3V0 aW9uLiBJbiB0aGUKKyAqCSAgY29tbWVudHMgYmVsb3csIHRoZSB3b3JkICJ2YWN1dW0iIHdpbGwg cmVmZXIgdG8gYm90aCB2YWN1dW0gYW5kCisgKgkgIGF1dG92YWN1dW0uCiAgKgogICogVGhpcyBm aWxlIGNvbnRhaW5zIHJvdXRpbmVzIHRoYXQgYXJlIGludGVuZGVkIHRvIHN1cHBvcnQgc2V0dGlu ZyB1cCwgdXNpbmcsCiAgKiBhbmQgdGVhcmluZyBkb3duIGEgUGFyYWxsZWxWYWN1dW1TdGF0ZS4K QEAgLTM0LDYgKzM2LDcgQEAKICNpbmNsdWRlICJleGVjdXRvci9pbnN0cnVtZW50LmgiCiAjaW5j bHVkZSAib3B0aW1pemVyL3BhdGhzLmgiCiAjaW5jbHVkZSAicGdzdGF0LmgiCisjaW5jbHVkZSAi cG9zdG1hc3Rlci9hdXRvdmFjdXVtLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9idWZtZ3IuaCIKICNp bmNsdWRlICJ0Y29wL3Rjb3Bwcm90LmgiCiAjaW5jbHVkZSAidXRpbHMvbHN5c2NhY2hlLmgiCkBA IC0zNzMsOCArMzc2LDkgQEAgcGFyYWxsZWxfdmFjdXVtX2luaXQoUmVsYXRpb24gcmVsLCBSZWxh dGlvbiAqaW5kcmVscywgaW50IG5pbmRleGVzLAogCXNoYXJlZC0+cXVlcnlpZCA9IHBnc3RhdF9n ZXRfbXlfcXVlcnlfaWQoKTsKIAlzaGFyZWQtPm1haW50ZW5hbmNlX3dvcmtfbWVtX3dvcmtlciA9 CiAJCShuaW5kZXhlc19td20gPiAwKSA/Ci0JCW1haW50ZW5hbmNlX3dvcmtfbWVtIC8gTWluKHBh cmFsbGVsX3dvcmtlcnMsIG5pbmRleGVzX213bSkgOgotCQltYWludGVuYW5jZV93b3JrX21lbTsK KwkJdmFjX3dvcmtfbWVtIC8gTWluKHBhcmFsbGVsX3dvcmtlcnMsIG5pbmRleGVzX213bSkgOgor CQl2YWNfd29ya19tZW07CisKIAlzaGFyZWQtPmRlYWRfaXRlbXNfaW5mby5tYXhfYnl0ZXMgPSB2 YWNfd29ya19tZW0gKiAoc2l6ZV90KSAxMDI0OwogCiAJLyogUHJlcGFyZSBEU0Egc3BhY2UgZm9y IGRlYWQgaXRlbXMgKi8KQEAgLTU1MywxMiArNTU3LDE3IEBAIHBhcmFsbGVsX3ZhY3V1bV9jb21w dXRlX3dvcmtlcnMoUmVsYXRpb24gKmluZHJlbHMsIGludCBuaW5kZXhlcywgaW50IG5yZXF1ZXN0 ZWQsCiAJaW50CQkJbmluZGV4ZXNfcGFyYWxsZWxfYnVsa2RlbCA9IDA7CiAJaW50CQkJbmluZGV4 ZXNfcGFyYWxsZWxfY2xlYW51cCA9IDA7CiAJaW50CQkJcGFyYWxsZWxfd29ya2VyczsKKwlpbnQJ CQltYXhfd29ya2VyczsKKworCW1heF93b3JrZXJzID0gQW1BdXRvVmFjdXVtV29ya2VyUHJvY2Vz cygpID8KKwkJYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VycyA6CisJCW1heF9wYXJhbGxl bF9tYWludGVuYW5jZV93b3JrZXJzOwogCiAJLyoKIAkgKiBXZSBkb24ndCBhbGxvdyBwZXJmb3Jt aW5nIHBhcmFsbGVsIG9wZXJhdGlvbiBpbiBzdGFuZGFsb25lIGJhY2tlbmQgb3IKIAkgKiB3aGVu IHBhcmFsbGVsaXNtIGlzIGRpc2FibGVkLgogCSAqLwotCWlmICghSXNVbmRlclBvc3RtYXN0ZXIg fHwgbWF4X3BhcmFsbGVsX21haW50ZW5hbmNlX3dvcmtlcnMgPT0gMCkKKwlpZiAoIUlzVW5kZXJQ b3N0bWFzdGVyIHx8IG1heF93b3JrZXJzID09IDApCiAJCXJldHVybiAwOwogCiAJLyoKQEAgLTU5 Nyw4ICs2MDYsOCBAQCBwYXJhbGxlbF92YWN1dW1fY29tcHV0ZV93b3JrZXJzKFJlbGF0aW9uICpp bmRyZWxzLCBpbnQgbmluZGV4ZXMsIGludCBucmVxdWVzdGVkLAogCXBhcmFsbGVsX3dvcmtlcnMg PSAobnJlcXVlc3RlZCA+IDApID8KIAkJTWluKG5yZXF1ZXN0ZWQsIG5pbmRleGVzX3BhcmFsbGVs KSA6IG5pbmRleGVzX3BhcmFsbGVsOwogCi0JLyogQ2FwIGJ5IG1heF9wYXJhbGxlbF9tYWludGVu YW5jZV93b3JrZXJzICovCi0JcGFyYWxsZWxfd29ya2VycyA9IE1pbihwYXJhbGxlbF93b3JrZXJz LCBtYXhfcGFyYWxsZWxfbWFpbnRlbmFuY2Vfd29ya2Vycyk7CisJLyogQ2FwIGJ5IEdVQyB2YXJp YWJsZSAqLworCXBhcmFsbGVsX3dvcmtlcnMgPSBNaW4ocGFyYWxsZWxfd29ya2VycywgbWF4X3dv cmtlcnMpOwogCiAJcmV0dXJuIHBhcmFsbGVsX3dvcmtlcnM7CiB9CkBAIC02NDYsNiArNjU1LDEz IEBAIHBhcmFsbGVsX3ZhY3V1bV9wcm9jZXNzX2FsbF9pbmRleGVzKFBhcmFsbGVsVmFjdXVtU3Rh dGUgKnB2cywgaW50IG51bV9pbmRleF9zY2FuCiAJICovCiAJbndvcmtlcnMgPSBNaW4obndvcmtl cnMsIHB2cy0+cGN4dC0+bndvcmtlcnMpOwogCisJLyoKKwkgKiBSZXNlcnZlIHdvcmtlcnMgaW4g YXV0b3ZhY3V1bSBnbG9iYWwgc3RhdGUuIE5vdGUsIHRoYXQgd2UgbWF5IGJlIGdpdmVuCisJICog ZmV3ZXIgd29ya2VycyB0aGFuIHdlIHJlcXVlc3RlZC4KKwkgKi8KKwlpZiAoQW1BdXRvVmFjdXVt V29ya2VyUHJvY2VzcygpICYmIG53b3JrZXJzID4gMCkKKwkJQXV0b1ZhY3V1bVJlc2VydmVQYXJh bGxlbFdvcmtlcnMoJm53b3JrZXJzKTsKKwogCS8qCiAJICogU2V0IGluZGV4IHZhY3V1bSBzdGF0 dXMgYW5kIG1hcmsgd2hldGhlciBwYXJhbGxlbCB2YWN1dW0gd29ya2VyIGNhbgogCSAqIHByb2Nl c3MgaXQuCkBAIC02OTAsNiArNzA2LDE2IEBAIHBhcmFsbGVsX3ZhY3V1bV9wcm9jZXNzX2FsbF9p bmRleGVzKFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2cywgaW50IG51bV9pbmRleF9zY2FuCiAKIAkJ TGF1bmNoUGFyYWxsZWxXb3JrZXJzKHB2cy0+cGN4dCk7CiAKKwkJaWYgKEFtQXV0b1ZhY3V1bVdv cmtlclByb2Nlc3MoKSAmJgorCQkJcHZzLT5wY3h0LT5ud29ya2Vyc19sYXVuY2hlZCA8IG53b3Jr ZXJzKQorCQl7CisJCQkvKgorCQkJICogVGVsbCBhdXRvdmFjdXVtIHRoYXQgd2UgY291bGQgbm90 IGxhdW5jaCBhbGwgdGhlIHByZXZpb3VzbHkKKwkJCSAqIHJlc2VydmVkIHdvcmtlcnMuCisJCQkg Ki8KKwkJCUF1dG9WYWN1dW1SZWxlYXNlUGFyYWxsZWxXb3JrZXJzKG53b3JrZXJzIC0gcHZzLT5w Y3h0LT5ud29ya2Vyc19sYXVuY2hlZCk7CisJCX0KKwogCQlpZiAocHZzLT5wY3h0LT5ud29ya2Vy c19sYXVuY2hlZCA+IDApCiAJCXsKIAkJCS8qCkBAIC03MzgsNiArNzY0LDEwIEBAIHBhcmFsbGVs X3ZhY3V1bV9wcm9jZXNzX2FsbF9pbmRleGVzKFBhcmFsbGVsVmFjdXVtU3RhdGUgKnB2cywgaW50 IG51bV9pbmRleF9zY2FuCiAKIAkJZm9yIChpbnQgaSA9IDA7IGkgPCBwdnMtPnBjeHQtPm53b3Jr ZXJzX2xhdW5jaGVkOyBpKyspCiAJCQlJbnN0ckFjY3VtUGFyYWxsZWxRdWVyeSgmcHZzLT5idWZm ZXJfdXNhZ2VbaV0sICZwdnMtPndhbF91c2FnZVtpXSk7CisKKwkJLyogQWxzbyByZWxlYXNlIGFs bCBwcmV2aW91c2x5IHJlc2VydmVkIHBhcmFsbGVsIGF1dG92YWN1dW0gd29ya2VycyAqLworCQlp ZiAoQW1BdXRvVmFjdXVtV29ya2VyUHJvY2VzcygpICYmIHB2cy0+cGN4dC0+bndvcmtlcnNfbGF1 bmNoZWQgPiAwKQorCQkJQXV0b1ZhY3V1bVJlbGVhc2VQYXJhbGxlbFdvcmtlcnMocHZzLT5wY3h0 LT5ud29ya2Vyc19sYXVuY2hlZCk7CiAJfQogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFj dXVtLmMKaW5kZXggM2U1MDdkMjNjYzkuLmJjMTE5NzBiZmVlIDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVy L2F1dG92YWN1dW0uYwpAQCAtMTUxLDYgKzE1MSwxMiBAQCBpbnQJCQlMb2dfYXV0b2FuYWx5emVf bWluX2R1cmF0aW9uID0gNjAwMDAwOwogc3RhdGljIGRvdWJsZSBhdl9zdG9yYWdlX3BhcmFtX2Nv c3RfZGVsYXkgPSAtMTsKIHN0YXRpYyBpbnQJYXZfc3RvcmFnZV9wYXJhbV9jb3N0X2xpbWl0ID0g LTE7CiAKKy8qCisgKiBWYXJpYWJsZSB0byBrZWVwIG51bWJlciBvZiBjdXJyZW50bHkgcmVzZXJ2 ZWQgcGFyYWxsZWwgYXV0b3ZhY3V1bSB3b3JrZXJzLgorICogSXQgaXMgb25seSByZWxldmFudCBm b3IgcGFyYWxsZWwgYXV0b3ZhY3V1bSBsZWFkZXIgcHJvY2Vzcy4KKyAqLworc3RhdGljIGludAlh dl9ud29ya2Vyc19yZXNlcnZlZCA9IDA7CisKIC8qIEZsYWdzIHNldCBieSBzaWduYWwgaGFuZGxl cnMgKi8KIHN0YXRpYyB2b2xhdGlsZSBzaWdfYXRvbWljX3QgZ290X1NJR1VTUjIgPSBmYWxzZTsK IApAQCAtMjg1LDYgKzI5MSw4IEBAIHR5cGVkZWYgc3RydWN0IEF1dG9WYWN1dW1Xb3JrSXRlbQog ICogYXZfd29ya0l0ZW1zCQl3b3JrIGl0ZW0gYXJyYXkKICAqIGF2X253b3JrZXJzRm9yQmFsYW5j ZSB0aGUgbnVtYmVyIG9mIGF1dG92YWN1dW0gd29ya2VycyB0byB1c2Ugd2hlbgogICogCQkJCQlj YWxjdWxhdGluZyB0aGUgcGVyIHdvcmtlciBjb3N0IGxpbWl0CisgKiBhdl9mcmVlUGFyYWxsZWxX b3JrZXJzIHRoZSBudW1iZXIgb2YgZnJlZSBwYXJhbGxlbCBhdXRvdmFjdXVtIHdvcmtlcnMKKyAq IGF2X21heFBhcmFsbGVsV29ya2VycyB0aGUgbWF4aW11bSBudW1iZXIgb2YgcGFyYWxsZWwgYXV0 b3ZhY3V1bSB3b3JrZXJzCiAgKgogICogVGhpcyBzdHJ1Y3QgaXMgcHJvdGVjdGVkIGJ5IEF1dG92 YWN1dW1Mb2NrLCBleGNlcHQgZm9yIGF2X3NpZ25hbCBhbmQgcGFydHMKICAqIG9mIHRoZSB3b3Jr ZXIgbGlzdCAoc2VlIGFib3ZlKS4KQEAgLTI5OSw2ICszMDcsOCBAQCB0eXBlZGVmIHN0cnVjdAog CVdvcmtlckluZm8JYXZfc3RhcnRpbmdXb3JrZXI7CiAJQXV0b1ZhY3V1bVdvcmtJdGVtIGF2X3dv cmtJdGVtc1tOVU1fV09SS0lURU1TXTsKIAlwZ19hdG9taWNfdWludDMyIGF2X253b3JrZXJzRm9y QmFsYW5jZTsKKwl1aW50MzIJCWF2X2ZyZWVQYXJhbGxlbFdvcmtlcnM7CisJdWludDMyCQlhdl9t YXhQYXJhbGxlbFdvcmtlcnM7CiB9IEF1dG9WYWN1dW1TaG1lbVN0cnVjdDsKIAogc3RhdGljIEF1 dG9WYWN1dW1TaG1lbVN0cnVjdCAqQXV0b1ZhY3V1bVNobWVtOwpAQCAtMzY0LDYgKzM3NCw4IEBA IHN0YXRpYyB2b2lkIGF1dG92YWNfcmVwb3J0X3dvcmtpdGVtKEF1dG9WYWN1dW1Xb3JrSXRlbSAq d29ya2l0ZW0sCiBzdGF0aWMgdm9pZCBhdmxfc2lndXNyMl9oYW5kbGVyKFNJR05BTF9BUkdTKTsK IHN0YXRpYyBib29sIGF2X3dvcmtlcl9hdmFpbGFibGUodm9pZCk7CiBzdGF0aWMgdm9pZCBjaGVj a19hdl93b3JrZXJfZ3Vjcyh2b2lkKTsKK3N0YXRpYyB2b2lkIGFkanVzdF9mcmVlX3BhcmFsbGVs X3dvcmtlcnMoaW50IHByZXZfbWF4X3BhcmFsbGVsX3dvcmtlcnMpOworc3RhdGljIHZvaWQgQXV0 b1ZhY3V1bVJlbGVhc2VBbGxQYXJhbGxlbFdvcmtlcnModm9pZCk7CiAKIAogCkBAIC03NjMsNiAr Nzc1LDggQEAgUHJvY2Vzc0F1dG9WYWNMYXVuY2hlckludGVycnVwdHModm9pZCkKIAlpZiAoQ29u ZmlnUmVsb2FkUGVuZGluZykKIAl7CiAJCWludAkJCWF1dG92YWN1dW1fbWF4X3dvcmtlcnNfcHJl diA9IGF1dG92YWN1dW1fbWF4X3dvcmtlcnM7CisJCWludAkJCWF1dG92YWN1dW1fbWF4X3BhcmFs bGVsX3dvcmtlcnNfcHJldiA9CisJCQlhdXRvdmFjdXVtX21heF9wYXJhbGxlbF93b3JrZXJzOwog CiAJCUNvbmZpZ1JlbG9hZFBlbmRpbmcgPSBmYWxzZTsKIAkJUHJvY2Vzc0NvbmZpZ0ZpbGUoUEdD X1NJR0hVUCk7CkBAIC03NzksNiArNzkzLDE1IEBAIFByb2Nlc3NBdXRvVmFjTGF1bmNoZXJJbnRl cnJ1cHRzKHZvaWQpCiAJCWlmIChhdXRvdmFjdXVtX21heF93b3JrZXJzX3ByZXYgIT0gYXV0b3Zh Y3V1bV9tYXhfd29ya2VycykKIAkJCWNoZWNrX2F2X3dvcmtlcl9ndWNzKCk7CiAKKwkJLyoKKwkJ ICogSWYgYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VycyBjaGFuZ2VkLCB3ZSBtdXN0IHRh a2UgY2FyZSBvZgorCQkgKiB0aGUgY29ycmVjdCB2YWx1ZSBvZiBhdmFpbGFibGUgcGFyYWxsZWwg YXV0b3ZhY3V1bSB3b3JrZXJzIGluCisJCSAqIHNobWVtLgorCQkgKi8KKwkJaWYgKGF1dG92YWN1 dW1fbWF4X3BhcmFsbGVsX3dvcmtlcnNfcHJldiAhPQorCQkJYXV0b3ZhY3V1bV9tYXhfcGFyYWxs ZWxfd29ya2VycykKKwkJCWFkanVzdF9mcmVlX3BhcmFsbGVsX3dvcmtlcnMoYXV0b3ZhY3V1bV9t YXhfcGFyYWxsZWxfd29ya2Vyc19wcmV2KTsKKwogCQkvKiByZWJ1aWxkIHRoZSBsaXN0IGluIGNh c2UgdGhlIG5hcHRpbWUgY2hhbmdlZCAqLwogCQlyZWJ1aWxkX2RhdGFiYXNlX2xpc3QoSW52YWxp ZE9pZCk7CiAJfQpAQCAtMTM4Myw2ICsxNDA2LDE5IEBAIGF2bF9zaWd1c3IyX2hhbmRsZXIoU0lH TkFMX0FSR1MpCiAgKgkJCQkJICBBVVRPVkFDVVVNIFdPUktFUiBDT0RFCiAgKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiov CiAKKy8qCisgKiBNYWtlIHN1cmUgdGhhdCBhbGwgcmVzZXJ2ZWQgd29ya2VycyBhcmUgcmVsZWFz ZWQsIGV2ZW4gaWYgcGFyYWxsZWwKKyAqIGF1dG92YWN1dW0gbGVhZGVyIGlzIGZpbmlzaGluZyBk dWUgdG8gRkFUQUwgZXJyb3IuCisgKi8KK3N0YXRpYyB2b2lkCithdXRvdmFjdXVtX3dvcmtlcl9i ZWZvcmVfc2htZW1fZXhpdChpbnQgY29kZSwgRGF0dW0gYXJnKQoreworCWlmIChjb2RlICE9IDAp CisJCUF1dG9WYWN1dW1SZWxlYXNlQWxsUGFyYWxsZWxXb3JrZXJzKCk7CisKKwlBc3NlcnQoYXZf bndvcmtlcnNfcmVzZXJ2ZWQgPT0gMCk7Cit9CisKIC8qCiAgKiBNYWluIGVudHJ5IHBvaW50IGZv ciBhdXRvdmFjdXVtIHdvcmtlciBwcm9jZXNzZXMuCiAgKi8KQEAgLTE0MzgsNiArMTQ3NCw4IEBA IEF1dG9WYWNXb3JrZXJNYWluKGNvbnN0IHZvaWQgKnN0YXJ0dXBfZGF0YSwgc2l6ZV90IHN0YXJ0 dXBfZGF0YV9sZW4pCiAJLyogRWFybHkgaW5pdGlhbGl6YXRpb24gKi8KIAlCYXNlSW5pdCgpOwog CisJYmVmb3JlX3NobWVtX2V4aXQoYXV0b3ZhY3V1bV93b3JrZXJfYmVmb3JlX3NobWVtX2V4aXQs IDApOworCiAJLyoKIAkgKiBJZiBhbiBleGNlcHRpb24gaXMgZW5jb3VudGVyZWQsIHByb2Nlc3Np bmcgcmVzdW1lcyBoZXJlLgogCSAqCkBAIC0yNDgwLDYgKzI1MTgsMTIgQEAgZG9fYXV0b3ZhY3V1 bSh2b2lkKQogCQl9CiAJCVBHX0NBVENIKCk7CiAJCXsKKwkJCS8qCisJCQkgKiBQYXJhbGxlbCBh dXRvdmFjdXVtIGNhbiByZXNlcnZlIHBhcmFsbGVsIHdvcmtlcnMuIE1ha2Ugc3VyZQorCQkJICog dGhhdCBhbGwgcmVzZXJ2ZWQgd29ya2VycyBhcmUgcmVsZWFzZWQuCisJCQkgKi8KKwkJCUF1dG9W YWN1dW1SZWxlYXNlQWxsUGFyYWxsZWxXb3JrZXJzKCk7CisKIAkJCS8qCiAJCQkgKiBBYm9ydCB0 aGUgdHJhbnNhY3Rpb24sIHN0YXJ0IGEgbmV3IG9uZSwgYW5kIHByb2NlZWQgd2l0aCB0aGUKIAkJ CSAqIG5leHQgdGFibGUgaW4gb3VyIGxpc3QuCkBAIC0yODgwLDggKzI5MjQsMTIgQEAgdGFibGVf cmVjaGVja19hdXRvdmFjKE9pZCByZWxpZCwgSFRBQiAqdGFibGVfdG9hc3RfbWFwLAogCQkgKi8K IAkJdGFiLT5hdF9wYXJhbXMuaW5kZXhfY2xlYW51cCA9IFZBQ09QVFZBTFVFX1VOU1BFQ0lGSUVE OwogCQl0YWItPmF0X3BhcmFtcy50cnVuY2F0ZSA9IFZBQ09QVFZBTFVFX1VOU1BFQ0lGSUVEOwot CQkvKiBBcyBvZiBub3csIHdlIGRvbid0IHN1cHBvcnQgcGFyYWxsZWwgdmFjdXVtIGZvciBhdXRv dmFjdXVtICovCi0JCXRhYi0+YXRfcGFyYW1zLm53b3JrZXJzID0gLTE7CisKKwkJLyogRGVjaWRl IHdoZXRoZXIgd2UgbmVlZCB0byBwcm9jZXNzIGluZGV4ZXMgb2YgdGFibGUgaW4gcGFyYWxsZWwu ICovCisJCXRhYi0+YXRfcGFyYW1zLm53b3JrZXJzID0gYXZvcHRzCisJCQk/IGF2b3B0cy0+YXV0 b3ZhY3V1bV9wYXJhbGxlbF93b3JrZXJzCisJCQk6IC0xOworCiAJCXRhYi0+YXRfcGFyYW1zLmZy ZWV6ZV9taW5fYWdlID0gZnJlZXplX21pbl9hZ2U7CiAJCXRhYi0+YXRfcGFyYW1zLmZyZWV6ZV90 YWJsZV9hZ2UgPSBmcmVlemVfdGFibGVfYWdlOwogCQl0YWItPmF0X3BhcmFtcy5tdWx0aXhhY3Rf ZnJlZXplX21pbl9hZ2UgPSBtdWx0aXhhY3RfZnJlZXplX21pbl9hZ2U7CkBAIC0zMzU4LDYgKzM0 MDYsODUgQEAgQXV0b1ZhY3V1bVJlcXVlc3RXb3JrKEF1dG9WYWN1dW1Xb3JrSXRlbVR5cGUgdHlw ZSwgT2lkIHJlbGF0aW9uSWQsCiAJcmV0dXJuIHJlc3VsdDsKIH0KIAorLyoKKyAqIEluIG9yZGVy IHRvIG1lZXQgdGhlICdhdXRvdmFjdXVtX21heF9wYXJhbGxlbF93b3JrZXJzJyBsaW1pdCwgbGVh ZGVyCisgKiBhdXRvdmFjdXVtIHByb2Nlc3MgbXVzdCBjYWxsIHRoaXMgZnVuY3Rpb24gZHVyaW5n IGNvbXB1dGluZyB0aGUgcGFyYWxsZWwKKyAqIGRlZ3JlZS4KKyAqCisgKiAnbndvcmtlcnMnIGlz IHRoZSBkZXNpcmVkIG51bWJlciBvZiBwYXJhbGxlbCB3b3JrZXJzIHRvIHJlc2VydmUuIEZ1bmN0 aW9uCisgKiBzZXRzICdud29ya2VycycgdG8gdGhlIG51bWJlciBvZiBwYXJhbGxlbCB3b3JrZXJz IHRoYXQgYWN0dWFsbHkgY2FuIGJlCisgKiBsYXVuY2hlZCBhbmQgcmVzZXJ2ZXMgdGhlc2Ugd29y a2VycyAoaWYgYW55KSBpbiBnbG9iYWwgYXV0b3ZhY3V1bSBzdGF0ZS4KKyAqCisgKiBOT1RFOiBX ZSB3aWxsIHRyeSB0byBwcm92aWRlIGFzIG1hbnkgd29ya2VycyBhcyByZXF1ZXN0ZWQsIGV2ZW4g aWYgY2FsbGVyCisgKiB3aWxsIG9jY3VweSBhbGwgYXZhaWxhYmxlIHdvcmtlcnMuCisgKi8KK3Zv aWQKK0F1dG9WYWN1dW1SZXNlcnZlUGFyYWxsZWxXb3JrZXJzKGludCAqbndvcmtlcnMpCit7CisJ LyogT25seSBsZWFkZXIgd29ya2VyIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24uICovCisJQXNzZXJ0 KEFtQXV0b1ZhY3V1bVdvcmtlclByb2Nlc3MoKSAmJiAhSXNQYXJhbGxlbFdvcmtlcigpKTsKKwor CS8qCisJICogV2UgY2FuIG9ubHkgcmVzZXJ2ZSB3b3JrZXJzIGF0IHRoZSBiZWdpbm5pbmcgb2Yg cGFyYWxsZWwgaW5kZXgKKwkgKiBwcm9jZXNzaW5nLCBzbyB3ZSBtdXN0IG5vdCBoYXZlIGFueSBy ZXNlcnZlZCB3b3JrZXJzIHJpZ2h0IG5vdy4KKwkgKi8KKwlBc3NlcnQoYXZfbndvcmtlcnNfcmVz ZXJ2ZWQgPT0gMCk7CisKKwlMV0xvY2tBY3F1aXJlKEF1dG92YWN1dW1Mb2NrLCBMV19FWENMVVNJ VkUpOworCisJLyogUHJvdmlkZSBhcyBtYW55IHdvcmtlcnMgYXMgd2UgY2FuLiAqLworCSpud29y a2Vycz0gTWluKEF1dG9WYWN1dW1TaG1lbS0+YXZfZnJlZVBhcmFsbGVsV29ya2VycywgKm53b3Jr ZXJzKTsKKwlBdXRvVmFjdXVtU2htZW0tPmF2X2ZyZWVQYXJhbGxlbFdvcmtlcnMgLT0gKm53b3Jr ZXJzOworCisJLyogUmVtZW1iZXIgaG93IG1hbnkgd29ya2VycyB3ZSBoYXZlIHJlc2VydmVkLiAq LworCWF2X253b3JrZXJzX3Jlc2VydmVkID0gKm53b3JrZXJzOworCisJTFdMb2NrUmVsZWFzZShB dXRvdmFjdXVtTG9jayk7Cit9CisKKy8qCisgKiBMZWFkZXIgYXV0b3ZhY3V1bSBwcm9jZXNzIG11 c3QgY2FsbCB0aGlzIGZ1bmN0aW9uIGluIG9yZGVyIHRvIHVwZGF0ZSBnbG9iYWwKKyAqIGF1dG92 YWN1dW0gc3RhdGUsIHNvIG90aGVyIGxlYWRlcnMgd2lsbCBiZSBhYmxlIHRvIHVzZSB0aGVzZSBw YXJhbGxlbAorICogd29ya2Vycy4KKyAqCisgKiAnbndvcmtlcnMnIC0gaG93IG1hbnkgd29ya2Vy cyBjYWxsZXIgd2FudHMgdG8gcmVsZWFzZS4KKyAqLwordm9pZAorQXV0b1ZhY3V1bVJlbGVhc2VQ YXJhbGxlbFdvcmtlcnMoaW50IG53b3JrZXJzKQoreworCS8qIE9ubHkgbGVhZGVyIHdvcmtlciBj YW4gY2FsbCB0aGlzIGZ1bmN0aW9uLiAqLworCUFzc2VydChBbUF1dG9WYWN1dW1Xb3JrZXJQcm9j ZXNzKCkgJiYgIUlzUGFyYWxsZWxXb3JrZXIoKSk7CisKKwlMV0xvY2tBY3F1aXJlKEF1dG92YWN1 dW1Mb2NrLCBMV19FWENMVVNJVkUpOworCisJLyoKKwkgKiBJZiB0aGUgbWF4aW11bSBudW1iZXIg b2YgcGFyYWxsZWwgd29ya2VycyB3YXMgcmVkdWNlZCBkdXJpbmcgZXhlY3V0aW9uLAorCSAqIHdl IG11c3QgY2FwIGF2YWlsYWJsZSB3b3JrZXJzIG51bWJlciBieSBpdHMgbmV3IHZhbHVlLgorCSAq LworCUF1dG9WYWN1dW1TaG1lbS0+YXZfZnJlZVBhcmFsbGVsV29ya2VycyA9CisJCU1pbihBdXRv VmFjdXVtU2htZW0tPmF2X2ZyZWVQYXJhbGxlbFdvcmtlcnMgKyBud29ya2VycywKKwkJCUF1dG9W YWN1dW1TaG1lbS0+YXZfbWF4UGFyYWxsZWxXb3JrZXJzKTsKKworCS8qIERvbid0IGhhdmUgdG8g cmVtZW1iZXIgdGhlc2Ugd29ya2VycyBhbnltb3JlLiAqLworCWF2X253b3JrZXJzX3Jlc2VydmVk IC09IG53b3JrZXJzOworCisJTFdMb2NrUmVsZWFzZShBdXRvdmFjdXVtTG9jayk7Cit9CisKKy8q CisgKiBTYW1lIGFzIGFib3ZlLCBidXQgcmVsZWFzZSAqYWxsKiBwYXJhbGxlbCB3b3JrZXJzLCB0 aGF0IHdlcmUgcmVzZXJ2ZWQgYnkKKyAqIGN1cnJlbnQgbGVhZGVyIGF1dG92YWN1dW0gcHJvY2Vz cy4KKyAqLworc3RhdGljIHZvaWQKK0F1dG9WYWN1dW1SZWxlYXNlQWxsUGFyYWxsZWxXb3JrZXJz KHZvaWQpCit7CisJLyogT25seSBsZWFkZXIgd29ya2VyIGNhbiBjYWxsIHRoaXMgZnVuY3Rpb24u ICovCisJQXNzZXJ0KEFtQXV0b1ZhY3V1bVdvcmtlclByb2Nlc3MoKSAmJiAhSXNQYXJhbGxlbFdv cmtlcigpKTsKKworCWlmIChhdl9ud29ya2Vyc19yZXNlcnZlZCA+IDApCisJCUF1dG9WYWN1dW1S ZWxlYXNlUGFyYWxsZWxXb3JrZXJzKGF2X253b3JrZXJzX3Jlc2VydmVkKTsKK30KKwogLyoKICAq IGF1dG92YWNfaW5pdAogICoJCVRoaXMgaXMgY2FsbGVkIGF0IHBvc3RtYXN0ZXIgaW5pdGlhbGl6 YXRpb24uCkBAIC0zNDE4LDYgKzM1NDUsMTAgQEAgQXV0b1ZhY3V1bVNobWVtSW5pdCh2b2lkKQog CQlBc3NlcnQoIWZvdW5kKTsKIAogCQlBdXRvVmFjdXVtU2htZW0tPmF2X2xhdW5jaGVycGlkID0g MDsKKwkJQXV0b1ZhY3V1bVNobWVtLT5hdl9tYXhQYXJhbGxlbFdvcmtlcnMgPQorCQkJTWluKGF1 dG92YWN1dW1fbWF4X3BhcmFsbGVsX3dvcmtlcnMsIG1heF93b3JrZXJfcHJvY2Vzc2VzKTsKKwkJ QXV0b1ZhY3V1bVNobWVtLT5hdl9mcmVlUGFyYWxsZWxXb3JrZXJzID0KKwkJCUF1dG9WYWN1dW1T aG1lbS0+YXZfbWF4UGFyYWxsZWxXb3JrZXJzOwogCQlkY2xpc3RfaW5pdCgmQXV0b1ZhY3V1bVNo bWVtLT5hdl9mcmVlV29ya2Vycyk7CiAJCWRsaXN0X2luaXQoJkF1dG9WYWN1dW1TaG1lbS0+YXZf cnVubmluZ1dvcmtlcnMpOwogCQlBdXRvVmFjdXVtU2htZW0tPmF2X3N0YXJ0aW5nV29ya2VyID0g TlVMTDsKQEAgLTM0OTksMyArMzYzMCwzNCBAQCBjaGVja19hdl93b3JrZXJfZ3Vjcyh2b2lkKQog CQkJCSBlcnJkZXRhaWwoIlRoZSBzZXJ2ZXIgd2lsbCBvbmx5IHN0YXJ0IHVwIHRvIFwiYXV0b3Zh Y3V1bV93b3JrZXJfc2xvdHNcIiAoJWQpIGF1dG92YWN1dW0gd29ya2VycyBhdCBhIGdpdmVuIHRp bWUuIiwKIAkJCQkJCSAgIGF1dG92YWN1dW1fd29ya2VyX3Nsb3RzKSkpOwogfQorCisvKgorICog TWFrZSBzdXJlIHRoYXQgbnVtYmVyIG9mIGZyZWUgcGFyYWxsZWwgd29ya2VycyBjb3JyZXNwb25k cyB0byB0aGUKKyAqIGF1dG92YWN1dW1fbWF4X3BhcmFsbGVsX3dvcmtlcnMgcGFyYW1ldGVyIChh ZnRlciBpdCB3YXMgY2hhbmdlZCkuCisgKi8KK3N0YXRpYyB2b2lkCithZGp1c3RfZnJlZV9wYXJh bGxlbF93b3JrZXJzKGludCBwcmV2X21heF9wYXJhbGxlbF93b3JrZXJzKQoreworCUxXTG9ja0Fj cXVpcmUoQXV0b3ZhY3V1bUxvY2ssIExXX0VYQ0xVU0lWRSk7CisKKwkvKgorCSAqIENhcCB0aGUg bnVtYmVyIG9mIGZyZWUgd29ya2VycyBieSBuZXcgcGFyYW1ldGVyJ3MgdmFsdWUsIGlmIG5lZWRl ZC4KKwkgKi8KKwlBdXRvVmFjdXVtU2htZW0tPmF2X2ZyZWVQYXJhbGxlbFdvcmtlcnMgPQorCQlN aW4oQXV0b1ZhY3V1bVNobWVtLT5hdl9mcmVlUGFyYWxsZWxXb3JrZXJzLAorCQkJYXV0b3ZhY3V1 bV9tYXhfcGFyYWxsZWxfd29ya2Vycyk7CisKKwlpZiAoYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxf d29ya2VycyA+IHByZXZfbWF4X3BhcmFsbGVsX3dvcmtlcnMpCisJeworCQkvKgorCQkgKiBJZiB1 c2VyIHdhbnRzIHRvIGluY3JlYXNlIG51bWJlciBvZiBwYXJhbGxlbCBhdXRvdmFjdXVtIHdvcmtl cnMsIHdlCisJCSAqIG11c3QgaW5jcmVhc2UgbnVtYmVyIG9mIGZyZWUgd29ya2Vycy4KKwkJICov CisJCUF1dG9WYWN1dW1TaG1lbS0+YXZfZnJlZVBhcmFsbGVsV29ya2VycyArPQorCQkJKGF1dG92 YWN1dW1fbWF4X3BhcmFsbGVsX3dvcmtlcnMgLSBwcmV2X21heF9wYXJhbGxlbF93b3JrZXJzKTsK Kwl9CisKKwlBdXRvVmFjdXVtU2htZW0tPmF2X21heFBhcmFsbGVsV29ya2VycyA9IGF1dG92YWN1 dW1fbWF4X3BhcmFsbGVsX3dvcmtlcnM7CisKKwlMV0xvY2tSZWxlYXNlKEF1dG92YWN1dW1Mb2Nr KTsKK30KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxzL2luaXQvZ2xvYmFscy5jIGIvc3Jj L2JhY2tlbmQvdXRpbHMvaW5pdC9nbG9iYWxzLmMKaW5kZXggMzZhZDcwOGIzNjAuLjI0ZGRiMjc2 ZjBjIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9pbml0L2dsb2JhbHMuYworKysgYi9z cmMvYmFja2VuZC91dGlscy9pbml0L2dsb2JhbHMuYwpAQCAtMTQzLDYgKzE0Myw3IEBAIGludAkJ CU5CdWZmZXJzID0gMTYzODQ7CiBpbnQJCQlNYXhDb25uZWN0aW9ucyA9IDEwMDsKIGludAkJCW1h eF93b3JrZXJfcHJvY2Vzc2VzID0gODsKIGludAkJCW1heF9wYXJhbGxlbF93b3JrZXJzID0gODsK K2ludAkJCWF1dG92YWN1dW1fbWF4X3BhcmFsbGVsX3dvcmtlcnMgPSAwOwogaW50CQkJTWF4QmFj a2VuZHMgPSAwOwogCiAvKiBHVUMgcGFyYW1ldGVycyBmb3IgdmFjdXVtICovCmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC91dGlscy9taXNjL2d1Yy5jIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9n dWMuYwppbmRleCBhZTlkNWYzZmI3MC4uYzhhOTlhNjc3NjcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3V0aWxzL21pc2MvZ3VjLmMKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWMuYwpA QCAtMzMyNiw5ICszMzI2LDEzIEBAIHNldF9jb25maWdfd2l0aF9oYW5kbGUoY29uc3QgY2hhciAq bmFtZSwgY29uZmlnX2hhbmRsZSAqaGFuZGxlLAogCSAqCiAJICogQWxzbyBhbGxvdyBub3JtYWwg c2V0dGluZyBpZiB0aGUgR1VDIGlzIG1hcmtlZCBHVUNfQUxMT1dfSU5fUEFSQUxMRUwuCiAJICoK LQkgKiBPdGhlciBjaGFuZ2VzIG1pZ2h0IG5lZWQgdG8gYWZmZWN0IG90aGVyIHdvcmtlcnMsIHNv IGZvcmJpZCB0aGVtLgorCSAqIE90aGVyIGNoYW5nZXMgbWlnaHQgbmVlZCB0byBhZmZlY3Qgb3Ro ZXIgd29ya2Vycywgc28gZm9yYmlkIHRoZW0uIE5vdGUsCisJICogdGhhdCBwYXJhbGxlbCBhdXRv dmFjdXVtIGxlYWRlciBpcyBhbiBleGNlcHRpb24sIGJlY2F1c2Ugb25seQorCSAqIGNvc3QtYmFz ZWQgZGVsYXlzIG5lZWQgdG8gYmUgYWZmZWN0ZWQgYWxzbyB0byBwYXJhbGxlbCB2YWN1dW0gd29y a2VycywKKwkgKiBhbmQgd2Ugd2lsbCBoYW5kbGUgaXQgZWxzZXdoZXJlIGlmIGFwcHJvcHJpYXRl LgogCSAqLwotCWlmIChJc0luUGFyYWxsZWxNb2RlKCkgJiYgY2hhbmdlVmFsICYmIGFjdGlvbiAh PSBHVUNfQUNUSU9OX1NBVkUgJiYKKwlpZiAoSXNJblBhcmFsbGVsTW9kZSgpICYmICFBbUF1dG9W YWN1dW1Xb3JrZXJQcm9jZXNzKCkgJiYgY2hhbmdlVmFsICYmCisJCWFjdGlvbiAhPSBHVUNfQUNU SU9OX1NBVkUgJiYKIAkJKHJlY29yZC0+ZmxhZ3MgJiBHVUNfQUxMT1dfSU5fUEFSQUxMRUwpID09 IDApCiAJewogCQllcmVwb3J0KGVsZXZlbCwKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3V0aWxz L21pc2MvZ3VjX3BhcmFtZXRlcnMuZGF0IGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9ndWNfcGFy YW1ldGVycy5kYXQKaW5kZXggN2M2MGIxMjU1NjQuLmU5MzNmNTA0OGY3IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC91dGlscy9taXNjL2d1Y19wYXJhbWV0ZXJzLmRhdAorKysgYi9zcmMvYmFja2Vu ZC91dGlscy9taXNjL2d1Y19wYXJhbWV0ZXJzLmRhdApAQCAtMTU0LDYgKzE1NCwxNSBAQAogICBt YXggPT4gJzIwMDAwMDAwMDAnLAogfSwKIAoreyBuYW1lID0+ICdhdXRvdmFjdXVtX21heF9wYXJh bGxlbF93b3JrZXJzJywgdHlwZSA9PiAnaW50JywgY29udGV4dCA9PiAnUEdDX1NJR0hVUCcsIGdy b3VwID0+ICdWQUNVVU1fQVVUT1ZBQ1VVTScsCisgIHNob3J0X2Rlc2MgPT4gJ01heGltdW0gbnVt YmVyIG9mIHBhcmFsbGVsIGF1dG92YWN1dW0gd29ya2VycywgdGhhdCBjYW4gYmUgdGFrZW4gZnJv bSBiZ3dvcmtlcnMgcG9vbC4nLAorICBsb25nX2Rlc2MgPT4gJ1RoaXMgcGFyYW1ldGVyIGlzIGNh cHBlZCBieSAibWF4X3dvcmtlcl9wcm9jZXNzZXMiIChub3QgYnkgImF1dG92YWN1dW1fbWF4X3dv cmtlcnMiISkuJywKKyAgdmFyaWFibGUgPT4gJ2F1dG92YWN1dW1fbWF4X3BhcmFsbGVsX3dvcmtl cnMnLAorICBib290X3ZhbCA9PiAnMicsCisgIG1pbiA9PiAnMCcsCisgIG1heCA9PiAnTUFYX0JB Q0tFTkRTJywKK30sCisKIHsgbmFtZSA9PiAnYXV0b3ZhY3V1bV9tYXhfd29ya2VycycsIHR5cGUg PT4gJ2ludCcsIGNvbnRleHQgPT4gJ1BHQ19TSUdIVVAnLCBncm91cCA9PiAnVkFDVVVNX0FVVE9W QUNVVU0nLAogICBzaG9ydF9kZXNjID0+ICdTZXRzIHRoZSBtYXhpbXVtIG51bWJlciBvZiBzaW11 bHRhbmVvdXNseSBydW5uaW5nIGF1dG92YWN1dW0gd29ya2VyIHByb2Nlc3Nlcy4nLAogICB2YXJp YWJsZSA9PiAnYXV0b3ZhY3V1bV9tYXhfd29ya2VycycsCmRpZmYgLS1naXQgYS9zcmMvYmFja2Vu ZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUgYi9zcmMvYmFja2VuZC91dGlscy9t aXNjL3Bvc3RncmVzcWwuY29uZi5zYW1wbGUKaW5kZXggZGM5ZTIyNTVmOGEuLjg2YzY3Yjc5MGIw IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC91dGlscy9taXNjL3Bvc3RncmVzcWwuY29uZi5zYW1w bGUKKysrIGIvc3JjL2JhY2tlbmQvdXRpbHMvbWlzYy9wb3N0Z3Jlc3FsLmNvbmYuc2FtcGxlCkBA IC02OTEsNiArNjkxLDggQEAKICNhdXRvdmFjdXVtX3dvcmtlcl9zbG90cyA9IDE2ICAgICAgICAg ICAjIGF1dG92YWN1dW0gd29ya2VyIHNsb3RzIHRvIGFsbG9jYXRlCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIyAoY2hhbmdlIHJlcXVpcmVzIHJlc3RhcnQpCiAjYXV0 b3ZhY3V1bV9tYXhfd29ya2VycyA9IDMgICAgICAgICAgICAgIyBtYXggbnVtYmVyIG9mIGF1dG92 YWN1dW0gc3VicHJvY2Vzc2VzCisjYXV0b3ZhY3V1bV9tYXhfcGFyYWxsZWxfd29ya2VycyA9IDIg ICAgIyBkaXNhYmxlZCBieSBkZWZhdWx0IGFuZCBsaW1pdGVkIGJ5CisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIyBtYXhfd29ya2VyX3Byb2Nlc3NlcwogI2F1dG92YWN1 dW1fbmFwdGltZSA9IDFtaW4gICAgICAgICAgICAgICMgdGltZSBiZXR3ZWVuIGF1dG92YWN1dW0g cnVucwogI2F1dG92YWN1dW1fdmFjdXVtX3RocmVzaG9sZCA9IDUwICAgICAgICMgbWluIG51bWJl ciBvZiByb3cgdXBkYXRlcyBiZWZvcmUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAjIHZhY3V1bQpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5p bi5jIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCmluZGV4IDA2ZWRlYTk4ZjA2Li4y YjhhNGFhYjM5MCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCisr KyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYwpAQCAtMTQyMyw2ICsxNDIzLDcgQEAg c3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHRhYmxlX3N0b3JhZ2VfcGFyYW1ldGVyc1tdID0gewog CSJhdXRvdmFjdXVtX211bHRpeGFjdF9mcmVlemVfbWF4X2FnZSIsCiAJImF1dG92YWN1dW1fbXVs dGl4YWN0X2ZyZWV6ZV9taW5fYWdlIiwKIAkiYXV0b3ZhY3V1bV9tdWx0aXhhY3RfZnJlZXplX3Rh YmxlX2FnZSIsCisJImF1dG92YWN1dW1fcGFyYWxsZWxfd29ya2VycyIsCiAJImF1dG92YWN1dW1f dmFjdXVtX2Nvc3RfZGVsYXkiLAogCSJhdXRvdmFjdXVtX3ZhY3V1bV9jb3N0X2xpbWl0IiwKIAki YXV0b3ZhY3V1bV92YWN1dW1faW5zZXJ0X3NjYWxlX2ZhY3RvciIsCmRpZmYgLS1naXQgYS9zcmMv aW5jbHVkZS9taXNjYWRtaW4uaCBiL3NyYy9pbmNsdWRlL21pc2NhZG1pbi5oCmluZGV4IGRiNTU5 YjM5YzRkLi5hZDZlMTlmNDI2YyAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmgK KysrIGIvc3JjL2luY2x1ZGUvbWlzY2FkbWluLmgKQEAgLTE3OCw2ICsxNzgsNyBAQCBleHRlcm4g UEdETExJTVBPUlQgaW50IE1heEJhY2tlbmRzOwogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBNYXhD b25uZWN0aW9uczsKIGV4dGVybiBQR0RMTElNUE9SVCBpbnQgbWF4X3dvcmtlcl9wcm9jZXNzZXM7 CiBleHRlcm4gUEdETExJTVBPUlQgaW50IG1heF9wYXJhbGxlbF93b3JrZXJzOworZXh0ZXJuIFBH RExMSU1QT1JUIGludCBhdXRvdmFjdXVtX21heF9wYXJhbGxlbF93b3JrZXJzOwogCiBleHRlcm4g UEdETExJTVBPUlQgaW50IGNvbW1pdF90aW1lc3RhbXBfYnVmZmVyczsKIGV4dGVybiBQR0RMTElN UE9SVCBpbnQgbXVsdGl4YWN0X21lbWJlcl9idWZmZXJzOwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1 ZGUvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmggYi9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2F1dG92 YWN1dW0uaAppbmRleCBlNDMwNjdkMDI2MC4uNGFjYWRiYzA2MTAgMTAwNjQ0Ci0tLSBhL3NyYy9p bmNsdWRlL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5oCisrKyBiL3NyYy9pbmNsdWRlL3Bvc3RtYXN0 ZXIvYXV0b3ZhY3V1bS5oCkBAIC02NSw2ICs2NSwxMCBAQCBwZ19ub3JldHVybiBleHRlcm4gdm9p ZCBBdXRvVmFjV29ya2VyTWFpbihjb25zdCB2b2lkICpzdGFydHVwX2RhdGEsIHNpemVfdCBzdGFy dAogZXh0ZXJuIGJvb2wgQXV0b1ZhY3V1bVJlcXVlc3RXb3JrKEF1dG9WYWN1dW1Xb3JrSXRlbVR5 cGUgdHlwZSwKIAkJCQkJCQkJICBPaWQgcmVsYXRpb25JZCwgQmxvY2tOdW1iZXIgYmxrbm8pOwog CisvKiBwYXJhbGxlbCBhdXRvdmFjdXVtIHN0dWZmICovCitleHRlcm4gdm9pZAlBdXRvVmFjdXVt UmVzZXJ2ZVBhcmFsbGVsV29ya2VycyhpbnQgKm53b3JrZXJzKTsKK2V4dGVybiB2b2lkIEF1dG9W YWN1dW1SZWxlYXNlUGFyYWxsZWxXb3JrZXJzKGludCBud29ya2Vycyk7CisKIC8qIHNoYXJlZCBt ZW1vcnkgc3R1ZmYgKi8KIGV4dGVybiBTaXplIEF1dG9WYWN1dW1TaG1lbVNpemUodm9pZCk7CiBl eHRlcm4gdm9pZCBBdXRvVmFjdXVtU2htZW1Jbml0KHZvaWQpOwpkaWZmIC0tZ2l0IGEvc3JjL2lu Y2x1ZGUvdXRpbHMvcmVsLmggYi9zcmMvaW5jbHVkZS91dGlscy9yZWwuaAppbmRleCBkMDNhYjI0 Nzc4OC4uYzFkODgyNjU5ZjkgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL3V0aWxzL3JlbC5oCisr KyBiL3NyYy9pbmNsdWRlL3V0aWxzL3JlbC5oCkBAIC0zMTEsNiArMzExLDEzIEBAIHR5cGVkZWYg c3RydWN0IEZvcmVpZ25LZXlDYWNoZUluZm8KIHR5cGVkZWYgc3RydWN0IEF1dG9WYWNPcHRzCiB7 CiAJYm9vbAkJZW5hYmxlZDsKKworCS8qCisJICogTWF4IG51bWJlciBvZiBwYXJhbGxlbCBhdXRv dmFjdXVtIHdvcmtlcnMuIElmIHZhbHVlIGlzIDAgdGhlbiBwYXJhbGxlbAorCSAqIGRlZ3JlZSB3 aWxsIGNvbXB1dGVkIGJhc2VkIG9uIG51bWJlciBvZiBpbmRleGVzLgorCSAqLworCWludAkJCWF1 dG92YWN1dW1fcGFyYWxsZWxfd29ya2VyczsKKwogCWludAkJCXZhY3V1bV90aHJlc2hvbGQ7CiAJ aW50CQkJdmFjdXVtX21heF90aHJlc2hvbGQ7CiAJaW50CQkJdmFjdXVtX2luc190aHJlc2hvbGQ7 Ci0tIAoyLjQzLjAKCg== --00000000000031e0340647aa1f3d--