Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pkXqU-0003lg-DA for pgsql-hackers@arkaria.postgresql.org; Thu, 06 Apr 2023 22:12:42 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1pkXqT-0002W4-8p for pgsql-hackers@arkaria.postgresql.org; Thu, 06 Apr 2023 22:12:41 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1pkXqS-0002Vv-GX for pgsql-hackers@lists.postgresql.org; Thu, 06 Apr 2023 22:12:40 +0000 Received: from mail-pf1-x431.google.com ([2607:f8b0:4864:20::431]) by makus.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.92) (envelope-from ) id 1pkXqN-0005Ui-HM for pgsql-hackers@postgresql.org; Thu, 06 Apr 2023 22:12:39 +0000 Received: by mail-pf1-x431.google.com with SMTP id dw14so26441168pfb.6 for ; Thu, 06 Apr 2023 15:12:35 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; t=1680819154; x=1683411154; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=NJXl4WrIM+CQgBf4NWWwOhJm6E3GbanNPq5ZEM3lguc=; b=CWYIM7dS3wGjtLm2c9CWoMVj6BIaR1wLzeZDdEDDT8pAyIuWw5a/wzQ3u3RwWsIymS FZyyLeFHQGRhl24yttFcI406RocHxnPAh5VgIHIJ2ohIZPN30N3nZeepG06n7rHRroW7 sGtgbzQmKl3OG8mtt5g1fmgVhp+eFDvByFYsaKRdwfyWiBGrU69IA54gDMzuXFEYUxzl XdkfFrPNoWpHIvIsK+nKPgERELrVoI0ODn6ltnpyGmUQUDdAGA6jBbyXOGNGJQ/2hkCV CaBJAqhJcsPxkIqAigsydj01jR2MudB2PM4XhCRsw7tAHJVX5l+f3PsMLyG+ERMlhdt9 9C6g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680819154; x=1683411154; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=NJXl4WrIM+CQgBf4NWWwOhJm6E3GbanNPq5ZEM3lguc=; b=3pE12uOpl9Fe3PZ7Qw7AryeXbb99uKPSCvvCnZDPABZ1TmLVWqMExQxKWapGw5wNUE 1b2xFdM9X9BkTkkDJKCmeNKiE42x7eRN43Ti/THdPzNXRPxyU4LfhinNaaUwjO7ARSdS uXRwo6CSDrT0fO9ZPfmABeLuwzyd6RiKj4n3BZNnlLHqejk70ajpRNyTyfmld2oEBTcZ A3SlYYXS+1X9tEwNb2QUV7eSXAceWQpszaj/gLa/hTGW9Rg12klnIYPF+wbDAYGRx4e5 48iBxSaQP3rqVN8s1w9qH/OjcUDNIiSSwJ+msYbw7hEaVGVPIT9xYN5Q8bXB4Fezv7Nu BavQ== X-Gm-Message-State: AAQBX9f4W8G6FtC84hFkdONnmjlWGo9jcHwPWiufanYv+fuwetx3Ic78 UFxWt1LqnPvUKLzeWIHTlVJqO7PDXl72CV3guhQ= X-Google-Smtp-Source: AKy350aCS1kAMFPJBPwb8vKloAJ6qrcEf6rIrQafZTLtGibjjEk5J1eQyBMxisls7xByivaq9beyEGhdX7QHwiLUdOY= X-Received: by 2002:a63:cd08:0:b0:513:e029:d172 with SMTP id i8-20020a63cd08000000b00513e029d172mr3611257pgg.12.1680819154564; Thu, 06 Apr 2023 15:12:34 -0700 (PDT) MIME-Version: 1.0 References: <20230329.132155.629765142788133576.horikyota.ntt@gmail.com> <20230329.173456.1185961934810139447.horikyota.ntt@gmail.com> <935191FB-083B-4060-89FC-466F61FAA391@yesql.se> <1252075.1680547394@sss.pgh.pa.us> <20230403190837.qubpnwugfe2k2g46@awork3.anarazel.de> <7E06F879-7E20-4A6A-862F-CA72CDC9A323@yesql.se> <5028847C-937A-4CC2-B127-AFF5F9FB79C5@yesql.se> In-Reply-To: <5028847C-937A-4CC2-B127-AFF5F9FB79C5@yesql.se> From: Melanie Plageman Date: Thu, 6 Apr 2023 18:12:22 -0400 Message-ID: Subject: Re: Should vacuum process config file reload more often To: Daniel Gustafsson Cc: Robert Haas , Andres Freund , Tom Lane , Masahiko Sawada , Kyotaro Horiguchi , PostgreSQL Hackers , Amit Kapila Content-Type: multipart/mixed; boundary="000000000000a48b7005f8b23428" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000a48b7005f8b23428 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Apr 6, 2023 at 5:45=E2=80=AFPM Daniel Gustafsson = wrote: > > > On 6 Apr 2023, at 23:06, Melanie Plageman w= rote: > > > Autovacuum workers, at the end of VacuumUpdateCosts(), check if cost > > limit or cost delay have been changed. If they have, they assert that > > they don't already hold the AutovacuumLock, take it in shared mode, and > > do the logging. > > Another idea would be to copy the values to local temp variables while ho= lding > the lock, and release the lock before calling elog() to avoid holding the= lock > over potential IO. Good idea. I've done this in attached v19. Also I looked through the docs and everything still looks correct for balancing algo. - Melanie --000000000000a48b7005f8b23428 Content-Type: text/x-patch; charset="US-ASCII"; name="v19-0001-Make-vacuum-failsafe_active-global.patch" Content-Disposition: attachment; filename="v19-0001-Make-vacuum-failsafe_active-global.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lg5ob1d80 RnJvbSAwMDQyMDY3Y2U3MmE0NzRmZTQwODcyNDViOTc4ODQ3YzBiODM1YjcyIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBGcmksIDMxIE1hciAyMDIzIDEwOjM4OjM5IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTkgMS8zXSBNYWtlIHZhY3V1bSBmYWlsc2FmZV9hY3RpdmUgZ2xvYmFsCgpXaGlsZSB2 YWN1dW1pbmcgYSB0YWJsZSBpbiBmYWlsc2FmZSBtb2RlLCBWYWN1dW1Db3N0QWN0aXZlIHNob3Vs ZCBub3QgYmUKcmUtZW5hYmxlZC4gVGhpcyBjdXJyZW50bHkgaXNuJ3QgYSBwcm9ibGVtIGJlY2F1 c2UgdmFjdXVtIGNvc3QKcGFyYW1ldGVycyBhcmUgb25seSByZWZyZXNoZWQgaW4gYmV0d2VlbiB2 YWN1dW1pbmcgdGFibGVzIGFuZCBmYWlsc2FmZQpzdGF0dXMgaXMgcmVzZXQgZm9yIGV2ZXJ5IHRh YmxlLiBJbiBwcmVwYXJhdGlvbiBmb3IgYWxsb3dpbmcgdmFjdXVtIGNvc3QKcGFyYW1ldGVycyB0 byBiZSB1cGRhdGVkIG1vcmUgZnJlcXVlbnRseSwgZWxldmF0ZQpMVlJlbFN0YXRlLT5mYWlsc2Fm ZV9hY3RpdmUgdG8gYSBnbG9iYWwsIFZhY3V1bUZhaWxzYWZlQWN0aXZlLCB3aGljaAp3aWxsIGJl IGNoZWNrZWQgd2hlbiBkZXRlcm1pbmluZyB3aGV0aGVyIG9yIG5vdCB0byByZS1lbmFibGUgdmFj dXVtCmNvc3QtcmVsYXRlZCBkZWxheXMuCgpSZXZpZXdlZC1ieTogTWFzYWhpa28gU2F3YWRhIDxz YXdhZGEubXNoa0BnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBEYW5pZWwgR3VzdGFmc3NvbiA8ZGFu aWVsQHllc3FsLnNlPgpSZXZpZXdlZC1ieTogS3lvdGFybyBIb3JpZ3VjaGkgPGhvcmlreW90YS5u dHRAZ21haWwuY29tPgpEaXNjdXNzaW9uOiBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNz YWdlLWlkL2ZsYXQvQ0FBS1J1X1puZ3pxbkVPRGM3TG1TMU5IMDRLdDZZOWh1U2p6NXBwNyUyQkRY aHJqREEwZ3clNDBtYWlsLmdtYWlsLmNvbQotLS0KIHNyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zh Y3V1bWxhenkuYyB8IDE2ICsrKysrKystLS0tLS0tLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3Zh Y3V1bS5jICAgICAgICB8IDE1ICsrKysrKysrKysrKysrKwogc3JjL2luY2x1ZGUvY29tbWFuZHMv dmFjdXVtLmggICAgICAgIHwgIDEgKwogMyBmaWxlcyBjaGFuZ2VkLCAyMyBpbnNlcnRpb25zKCsp LCA5IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3Zh Y3V1bWxhenkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwppbmRleCA2 MzkxNzlhYTQ2Li4yYmE4NWJkM2Q2IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVh cC92YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5j CkBAIC0xNTMsOCArMTUzLDYgQEAgdHlwZWRlZiBzdHJ1Y3QgTFZSZWxTdGF0ZQogCWJvb2wJCWFn Z3Jlc3NpdmU7CiAJLyogVXNlIHZpc2liaWxpdHkgbWFwIHRvIHNraXA/IChkaXNhYmxlZCBieSBE SVNBQkxFX1BBR0VfU0tJUFBJTkcpICovCiAJYm9vbAkJc2tpcHdpdGh2bTsKLQkvKiBXcmFwYXJv dW5kIGZhaWxzYWZlIGhhcyBiZWVuIHRyaWdnZXJlZD8gKi8KLQlib29sCQlmYWlsc2FmZV9hY3Rp dmU7CiAJLyogQ29uc2lkZXIgaW5kZXggdmFjdXVtaW5nIGJ5cGFzcyBvcHRpbWl6YXRpb24/ICov CiAJYm9vbAkJY29uc2lkZXJfYnlwYXNzX29wdGltaXphdGlvbjsKIApAQCAtMzkxLDcgKzM4OSw3 IEBAIGhlYXBfdmFjdXVtX3JlbChSZWxhdGlvbiByZWwsIFZhY3V1bVBhcmFtcyAqcGFyYW1zLAog CUFzc2VydChwYXJhbXMtPmluZGV4X2NsZWFudXAgIT0gVkFDT1BUVkFMVUVfVU5TUEVDSUZJRUQp OwogCUFzc2VydChwYXJhbXMtPnRydW5jYXRlICE9IFZBQ09QVFZBTFVFX1VOU1BFQ0lGSUVEICYm CiAJCSAgIHBhcmFtcy0+dHJ1bmNhdGUgIT0gVkFDT1BUVkFMVUVfQVVUTyk7Ci0JdmFjcmVsLT5m YWlsc2FmZV9hY3RpdmUgPSBmYWxzZTsKKwlWYWN1dW1GYWlsc2FmZUFjdGl2ZSA9IGZhbHNlOwog CXZhY3JlbC0+Y29uc2lkZXJfYnlwYXNzX29wdGltaXphdGlvbiA9IHRydWU7CiAJdmFjcmVsLT5k b19pbmRleF92YWN1dW1pbmcgPSB0cnVlOwogCXZhY3JlbC0+ZG9faW5kZXhfY2xlYW51cCA9IHRy dWU7CkBAIC03MDksNyArNzA3LDcgQEAgaGVhcF92YWN1dW1fcmVsKFJlbGF0aW9uIHJlbCwgVmFj dXVtUGFyYW1zICpwYXJhbXMsCiAJCQl9CiAJCQllbHNlCiAJCQl7Ci0JCQkJaWYgKCF2YWNyZWwt PmZhaWxzYWZlX2FjdGl2ZSkKKwkJCQlpZiAoIVZhY3V1bUZhaWxzYWZlQWN0aXZlKQogCQkJCQlh cHBlbmRTdHJpbmdJbmZvU3RyaW5nKCZidWYsIF8oImluZGV4IHNjYW4gYnlwYXNzZWQ6ICIpKTsK IAkJCQllbHNlCiAJCQkJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoJmJ1ZiwgXygiaW5kZXggc2Nh biBieXBhc3NlZCBieSBmYWlsc2FmZTogIikpOwpAQCAtMjI5Myw3ICsyMjkxLDcgQEAgbGF6eV92 YWN1dW0oTFZSZWxTdGF0ZSAqdmFjcmVsKQogCQkgKiB2YWN1dW1pbmcgb3IgaGVhcCB2YWN1dW1p bmcuICBUaGlzIFZBQ1VVTSBvcGVyYXRpb24gd29uJ3QgZW5kIHVwCiAJCSAqIGJhY2sgaGVyZSBh Z2Fpbi4KIAkJICovCi0JCUFzc2VydCh2YWNyZWwtPmZhaWxzYWZlX2FjdGl2ZSk7CisJCUFzc2Vy dChWYWN1dW1GYWlsc2FmZUFjdGl2ZSk7CiAJfQogCiAJLyoKQEAgLTIzNzQsNyArMjM3Miw3IEBA IGxhenlfdmFjdXVtX2FsbF9pbmRleGVzKExWUmVsU3RhdGUgKnZhY3JlbCkKIAkgKi8KIAlBc3Nl cnQodmFjcmVsLT5udW1faW5kZXhfc2NhbnMgPiAwIHx8CiAJCSAgIHZhY3JlbC0+ZGVhZF9pdGVt cy0+bnVtX2l0ZW1zID09IHZhY3JlbC0+bHBkZWFkX2l0ZW1zKTsKLQlBc3NlcnQoYWxsaW5kZXhl cyB8fCB2YWNyZWwtPmZhaWxzYWZlX2FjdGl2ZSk7CisJQXNzZXJ0KGFsbGluZGV4ZXMgfHwgVmFj dXVtRmFpbHNhZmVBY3RpdmUpOwogCiAJLyoKIAkgKiBJbmNyZWFzZSBhbmQgcmVwb3J0IHRoZSBu dW1iZXIgb2YgaW5kZXggc2NhbnMuCkBAIC0yNjE2LDEyICsyNjE0LDEyIEBAIHN0YXRpYyBib29s CiBsYXp5X2NoZWNrX3dyYXBhcm91bmRfZmFpbHNhZmUoTFZSZWxTdGF0ZSAqdmFjcmVsKQogewog CS8qIERvbid0IHdhcm4gbW9yZSB0aGFuIG9uY2UgcGVyIFZBQ1VVTSAqLwotCWlmICh2YWNyZWwt PmZhaWxzYWZlX2FjdGl2ZSkKKwlpZiAoVmFjdXVtRmFpbHNhZmVBY3RpdmUpCiAJCXJldHVybiB0 cnVlOwogCiAJaWYgKHVubGlrZWx5KHZhY3V1bV94aWRfZmFpbHNhZmVfY2hlY2soJnZhY3JlbC0+ Y3V0b2ZmcykpKQogCXsKLQkJdmFjcmVsLT5mYWlsc2FmZV9hY3RpdmUgPSB0cnVlOworCQlWYWN1 dW1GYWlsc2FmZUFjdGl2ZSA9IHRydWU7CiAKIAkJLyoKIAkJICogQWJhbmRvbiB1c2Ugb2YgYSBi dWZmZXIgYWNjZXNzIHN0cmF0ZWd5IHRvIGFsbG93IHVzZSBvZiBhbGwgb2YKQEAgLTI4MjAsNyAr MjgxOCw3IEBAIHNob3VsZF9hdHRlbXB0X3RydW5jYXRpb24oTFZSZWxTdGF0ZSAqdmFjcmVsKQog ewogCUJsb2NrTnVtYmVyIHBvc3NpYmx5X2ZyZWVhYmxlOwogCi0JaWYgKCF2YWNyZWwtPmRvX3Jl bF90cnVuY2F0ZSB8fCB2YWNyZWwtPmZhaWxzYWZlX2FjdGl2ZSB8fAorCWlmICghdmFjcmVsLT5k b19yZWxfdHJ1bmNhdGUgfHwgVmFjdXVtRmFpbHNhZmVBY3RpdmUgfHwKIAkJb2xkX3NuYXBzaG90 X3RocmVzaG9sZCA+PSAwKQogCQlyZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3ZhY3V1bS5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtLmMKaW5k ZXggZWExZDg5NjBmNC4uN2ZjNWMxOWUzNyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvdmFjdXVtLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtLmMKQEAgLTcyLDYg KzcyLDIxIEBAIGludAkJCXZhY3V1bV9tdWx0aXhhY3RfZnJlZXplX3RhYmxlX2FnZTsKIGludAkJ CXZhY3V1bV9mYWlsc2FmZV9hZ2U7CiBpbnQJCQl2YWN1dW1fbXVsdGl4YWN0X2ZhaWxzYWZlX2Fn ZTsKIAorLyoKKyAqIFZhY3V1bUZhaWxzYWZlQWN0aXZlIGlzIGEgZGVmaW5lZCBhcyBhIGdsb2Jh bCBzbyB0aGF0IHdlIGNhbiBkZXRlcm1pbmUKKyAqIHdoZXRoZXIgb3Igbm90IHRvIHJlLWVuYWJs ZSBjb3N0LWJhc2VkIHZhY3V1bSBkZWxheSB3aGVuIHZhY3V1bWluZyBhIHRhYmxlLgorICogSWYg ZmFpbHNhZmUgbW9kZSBoYXMgYmVlbiBlbmdhZ2VkLCB3ZSB3aWxsIG5vdCByZS1lbmFibGUgY29z dC1iYXNlZCBkZWxheQorICogZm9yIHRoZSB0YWJsZSB1bnRpbCBhZnRlciB2YWN1dW1pbmcgaGFz IGNvbXBsZXRlZCwgcmVnYXJkbGVzcyBvZiBvdGhlcgorICogc2V0dGluZ3MuCisgKgorICogT25s eSBWQUNVVU0gY29kZSBzaG91bGQgaW5zcGVjdCB0aGlzIHZhcmlhYmxlIGFuZCBvbmx5IHRhYmxl IGFjY2VzcyBtZXRob2RzCisgKiBzaG91bGQgc2V0IGl0IHRvIHRydWUuIEluIFRhYmxlIEFNLWFn bm9zdGljIFZBQ1VVTSBjb2RlLCB0aGlzIHZhcmlhYmxlIGlzCisgKiBpbnNwZWN0ZWQgdG8gZGV0 ZXJtaW5lIHdoZXRoZXIgb3Igbm90IHRvIGFsbG93IGNvc3QtYmFzZWQgZGVsYXlzLiBUYWJsZSBB TXMKKyAqIGFyZSBmcmVlIHRvIHNldCBpdCBpZiB0aGV5IGRlc2lyZSB0aGlzIGJlaGF2aW9yLCBi dXQgaXQgaXMgZmFsc2UgYnkgZGVmYXVsdAorICogYW5kIHJlc2V0IHRvIGZhbHNlIGluIGJldHdl ZW4gdmFjdXVtaW5nIGVhY2ggcmVsYXRpb24uCisgKi8KK2Jvb2wJCVZhY3V1bUZhaWxzYWZlQWN0 aXZlID0gZmFsc2U7CisKIC8qCiAgKiBWYXJpYWJsZXMgZm9yIGNvc3QtYmFzZWQgcGFyYWxsZWwg dmFjdXVtLiAgU2VlIGNvbW1lbnRzIGF0b3AKICAqIGNvbXB1dGVfcGFyYWxsZWxfZGVsYXkgdG8g dW5kZXJzdGFuZCBob3cgaXQgd29ya3MuCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jb21tYW5k cy92YWN1dW0uaCBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3ZhY3V1bS5oCmluZGV4IDE5Y2E4MThk YzIuLjEyMjNkMTVlMGQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3ZhY3V1bS5o CisrKyBiL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3ZhY3V1bS5oCkBAIC0zMDYsNiArMzA2LDcgQEAg ZXh0ZXJuIFBHRExMSU1QT1JUIHBnX2F0b21pY191aW50MzIgKlZhY3V1bVNoYXJlZENvc3RCYWxh bmNlOwogZXh0ZXJuIFBHRExMSU1QT1JUIHBnX2F0b21pY191aW50MzIgKlZhY3V1bUFjdGl2ZU5X b3JrZXJzOwogZXh0ZXJuIFBHRExMSU1QT1JUIGludCBWYWN1dW1Db3N0QmFsYW5jZUxvY2FsOwog CitleHRlcm4gUEdETExJTVBPUlQgYm9vbCBWYWN1dW1GYWlsc2FmZUFjdGl2ZTsKIAogLyogaW4g Y29tbWFuZHMvdmFjdXVtLmMgKi8KIGV4dGVybiB2b2lkIEV4ZWNWYWN1dW0oUGFyc2VTdGF0ZSAq cHN0YXRlLCBWYWN1dW1TdG10ICp2YWNzdG10LCBib29sIGlzVG9wTGV2ZWwpOwotLSAKMi4zNy4y Cgo= --000000000000a48b7005f8b23428 Content-Type: text/x-patch; charset="US-ASCII"; name="v19-0003-Autovacuum-refreshes-cost-based-delay-params-mor.patch" Content-Disposition: attachment; filename="v19-0003-Autovacuum-refreshes-cost-based-delay-params-mor.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lg5ob1de2 RnJvbSAzZGI2YjkwMDA0MmYxOTM4OTI4NTdiYTdiMjMwMWE0NzhhZDBlZjlhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBTYXQsIDI1IE1hciAyMDIzIDE0OjE0OjU1IC0wNDAwClN1YmplY3Q6IFtQ QVRDSCB2MTkgMy8zXSBBdXRvdmFjdXVtIHJlZnJlc2hlcyBjb3N0LWJhc2VkIGRlbGF5IHBhcmFt cyBtb3JlCiBvZnRlbgoKQWxsb3cgYXV0b3ZhY3V1bSB0byByZWxvYWQgdGhlIGNvbmZpZyBmaWxl IG1vcmUgb2Z0ZW4gc28gdGhhdCBjb3N0LWJhc2VkCmRlbGF5IHBhcmFtZXRlcnMgY2FuIHRha2Ug ZWZmZWN0IHdoaWxlIFZBQ1VVTWluZyBhIHJlbGF0aW9uLiBQcmV2aW91c2x5LAphdXRvdmFjdXVt IHdvcmtlcnMgb25seSByZWxvYWRlZCB0aGUgY29uZmlnIGZpbGUgb25jZSBwZXIgcmVsYXRpb24K dmFjdXVtZWQsIHNvIGNvbmZpZyBjaGFuZ2VzIGNvdWxkIG5vdCB0YWtlIGVmZmVjdCB1bnRpbCBi ZWdpbm5pbmcgdG8KdmFjdXVtIHRoZSBuZXh0IHRhYmxlLgoKTm93LCBjaGVjayBpZiBhIHJlbG9h ZCBpcyBwZW5kaW5nIHJvdWdobHkgb25jZSBwZXIgYmxvY2ssIHdoZW4gY2hlY2tpbmcKaWYgd2Ug bmVlZCB0byBkZWxheS4KCkluIG9yZGVyIGZvciBhdXRvdmFjdXVtIHdvcmtlcnMgdG8gc2FmZWx5 IHVwZGF0ZSB0aGVpciBvd24gY29zdCBkZWxheQphbmQgY29zdCBsaW1pdCBwYXJhbWV0ZXJzIHdp dGhvdXQgaW1wYWN0aW5nIHBlcmZvcm1hbmNlLCB3ZSBoYWQgdG8KcmV0aGluayB3aGVuIGFuZCBo b3cgdGhlc2UgdmFsdWVzIHdlcmUgYWNjZXNzZWQuCgpQcmV2aW91c2x5LCBhbiBhdXRvdmFjdXVt IHdvcmtlcidzIHdpX2Nvc3RfbGltaXQgd2FzIHNldCBvbmx5IGF0IHRoZQpiZWdpbm5pbmcgb2Yg dmFjdXVtaW5nIGEgdGFibGUsIGFmdGVyIHJlbG9hZGluZyB0aGUgY29uZmlnIGZpbGUuClRoZXJl Zm9yZSwgYXQgdGhlIHRpbWUgdGhhdCBhdXRvdmFjX2JhbGFuY2VfY29zdCgpIHdhcyBjYWxsZWQs IHdvcmtlcnMKdmFjdXVtaW5nIHRhYmxlcyB3aXRoIG5vIGNvc3QtcmVsYXRlZCBzdG9yYWdlIHBh cmFtZXRlcnMgY291bGQgc3RpbGwKaGF2ZSBkaWZmZXJlbnQgdmFsdWVzIGZvciB0aGVpciB3aV9j b3N0X2xpbWl0X2Jhc2UgYW5kIHdpX2Nvc3RfZGVsYXkuCgpOb3cgdGhhdCB0aGUgY29zdCBwYXJh bWV0ZXJzIGNhbiBiZSB1cGRhdGVkIHdoaWxlIHZhY3V1bWluZyBhIHRhYmxlLAp3b3JrZXJzIHdp bGwgKHdpdGhpbiBzb21lIG1hcmdpbiBvZiBlcnJvcikgaGF2ZSBubyByZWFzb24gdG8gaGF2ZQpk aWZmZXJlbnQgdmFsdWVzIGZvciBjb3N0IGxpbWl0IGFuZCBjb3N0IGRlbGF5IChpbiB0aGUgYWJz ZW5jZSBvZgpjb3N0LXJlbGF0ZWQgc3RvcmFnZSBwYXJhbWV0ZXJzKS4gVGhpcyByZW1vdmVzIHRo ZSByYXRpb25hbGUgZm9yIGtlZXBpbmcKY29zdCBsaW1pdCBhbmQgY29zdCBkZWxheSBpbiBzaGFy ZWQgbWVtb3J5LiBCYWxhbmNpbmcgdGhlIGNvc3QgbGltaXQKcmVxdWlyZXMgb25seSB0aGUgbnVt YmVyIG9mIGFjdGl2ZSBhdXRvdmFjdXVtIHdvcmtlcnMgdmFjdXVtaW5nIGEgdGFibGUKd2l0aCBu byBjb3N0LWJhc2VkIHN0b3JhZ2UgcGFyYW1ldGVycy4KClJldmlld2VkLWJ5OiBNYXNhaGlrbyBT YXdhZGEgPHNhd2FkYS5tc2hrQGdtYWlsLmNvbT4KUmV2aWV3ZWQtYnk6IERhbmllbCBHdXN0YWZz c29uIDxkYW5pZWxAeWVzcWwuc2U+ClJldmlld2VkLWJ5OiBLeW90YXJvIEhvcmlndWNoaSA8aG9y aWt5b3RhLm50dEBnbWFpbC5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8vd3d3LnBvc3RncmVzcWwu b3JnL21lc3NhZ2UtaWQvZmxhdC9DQUFLUnVfWm5nenFuRU9EYzdMbVMxTkgwNEt0Nlk5aHVTano1 cHA3JTJCRFhocmpEQTBndyU0MG1haWwuZ21haWwuY29tCi0tLQogc3JjL2JhY2tlbmQvYWNjZXNz L2hlYXAvdmFjdXVtbGF6eS5jICB8ICAgMiArLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVt LmMgICAgICAgICB8ICA0NiArKystCiBzcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxl bC5jIHwgICAxIC0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jICAgfCAyOTMg KysrKysrKysrKysrKysrKy0tLS0tLS0tLS0KIHNyYy9pbmNsdWRlL2NvbW1hbmRzL3ZhY3V1bS5o ICAgICAgICAgfCAgIDEgKwogNSBmaWxlcyBjaGFuZ2VkLCAyMjEgaW5zZXJ0aW9ucygrKSwgMTIy IGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1 bWxhenkuYyBiL3NyYy9iYWNrZW5kL2FjY2Vzcy9oZWFwL3ZhY3V1bWxhenkuYwppbmRleCAyYmE4 NWJkM2Q2Li4wYTllYmQyMmJkIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9hY2Nlc3MvaGVhcC92 YWN1dW1sYXp5LmMKKysrIGIvc3JjL2JhY2tlbmQvYWNjZXNzL2hlYXAvdmFjdXVtbGF6eS5jCkBA IC0zODksNyArMzg5LDcgQEAgaGVhcF92YWN1dW1fcmVsKFJlbGF0aW9uIHJlbCwgVmFjdXVtUGFy YW1zICpwYXJhbXMsCiAJQXNzZXJ0KHBhcmFtcy0+aW5kZXhfY2xlYW51cCAhPSBWQUNPUFRWQUxV RV9VTlNQRUNJRklFRCk7CiAJQXNzZXJ0KHBhcmFtcy0+dHJ1bmNhdGUgIT0gVkFDT1BUVkFMVUVf VU5TUEVDSUZJRUQgJiYKIAkJICAgcGFyYW1zLT50cnVuY2F0ZSAhPSBWQUNPUFRWQUxVRV9BVVRP KTsKLQlWYWN1dW1GYWlsc2FmZUFjdGl2ZSA9IGZhbHNlOworCUFzc2VydCghVmFjdXVtRmFpbHNh ZmVBY3RpdmUpOwogCXZhY3JlbC0+Y29uc2lkZXJfYnlwYXNzX29wdGltaXphdGlvbiA9IHRydWU7 CiAJdmFjcmVsLT5kb19pbmRleF92YWN1dW1pbmcgPSB0cnVlOwogCXZhY3JlbC0+ZG9faW5kZXhf Y2xlYW51cCA9IHRydWU7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0u YyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jCmluZGV4IGYyYmU3NGNkYjUuLmNhMzQ3 ZTBhNmQgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jCisrKyBiL3Ny Yy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jCkBAIC00OCw2ICs0OCw3IEBACiAjaW5jbHVkZSAi cGdzdGF0LmgiCiAjaW5jbHVkZSAicG9zdG1hc3Rlci9hdXRvdmFjdXVtLmgiCiAjaW5jbHVkZSAi cG9zdG1hc3Rlci9iZ3dvcmtlcl9pbnRlcm5hbHMuaCIKKyNpbmNsdWRlICJwb3N0bWFzdGVyL2lu dGVycnVwdC5oIgogI2luY2x1ZGUgInN0b3JhZ2UvYnVmbWdyLmgiCiAjaW5jbHVkZSAic3RvcmFn ZS9sbWdyLmgiCiAjaW5jbHVkZSAic3RvcmFnZS9wbXNpZ25hbC5oIgpAQCAtNTIzLDkgKzUyNCw5 IEBAIHZhY3V1bShMaXN0ICpyZWxhdGlvbnMsIFZhY3V1bVBhcmFtcyAqcGFyYW1zLCBCdWZmZXJB Y2Nlc3NTdHJhdGVneSBic3RyYXRlZ3ksCiAJewogCQlMaXN0Q2VsbCAgICpjdXI7CiAKLQkJVmFj dXVtVXBkYXRlQ29zdHMoKTsKIAkJaW5fdmFjdXVtID0gdHJ1ZTsKLQkJVmFjdXVtQ29zdEFjdGl2 ZSA9ICh2YWN1dW1fY29zdF9kZWxheSA+IDApOworCQlWYWN1dW1GYWlsc2FmZUFjdGl2ZSA9IGZh bHNlOworCQlWYWN1dW1VcGRhdGVDb3N0cygpOwogCQlWYWN1dW1Db3N0QmFsYW5jZSA9IDA7CiAJ CVZhY3V1bVBhZ2VIaXQgPSAwOwogCQlWYWN1dW1QYWdlTWlzcyA9IDA7CkBAIC01NzksMTIgKzU4 MCwyMCBAQCB2YWN1dW0oTGlzdCAqcmVsYXRpb25zLCBWYWN1dW1QYXJhbXMgKnBhcmFtcywgQnVm ZmVyQWNjZXNzU3RyYXRlZ3kgYnN0cmF0ZWd5LAogCQkJCQlDb21tYW5kQ291bnRlckluY3JlbWVu dCgpOwogCQkJCX0KIAkJCX0KKworCQkJLyoKKwkJCSAqIEVuc3VyZSBWYWN1dW1GYWlsc2FmZUFj dGl2ZSBoYXMgYmVlbiByZXNldCBiZWZvcmUgdmFjdXVtaW5nIHRoZQorCQkJICogbmV4dCByZWxh dGlvbi4KKwkJCSAqLworCQkJVmFjdXVtRmFpbHNhZmVBY3RpdmUgPSBmYWxzZTsKIAkJfQogCX0K IAlQR19GSU5BTExZKCk7CiAJewogCQlpbl92YWN1dW0gPSBmYWxzZTsKIAkJVmFjdXVtQ29zdEFj dGl2ZSA9IGZhbHNlOworCQlWYWN1dW1GYWlsc2FmZUFjdGl2ZSA9IGZhbHNlOworCQlWYWN1dW1D b3N0QmFsYW5jZSA9IDA7CiAJfQogCVBHX0VORF9UUlkoKTsKIApAQCAtMjI0NSw3ICsyMjU0LDI4 IEBAIHZhY3V1bV9kZWxheV9wb2ludCh2b2lkKQogCS8qIEFsd2F5cyBjaGVjayBmb3IgaW50ZXJy dXB0cyAqLwogCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CiAKLQlpZiAoIVZhY3V1bUNvc3RBY3Rp dmUgfHwgSW50ZXJydXB0UGVuZGluZykKKwlpZiAoSW50ZXJydXB0UGVuZGluZyB8fAorCQkoIVZh Y3V1bUNvc3RBY3RpdmUgJiYgIUNvbmZpZ1JlbG9hZFBlbmRpbmcpKQorCQlyZXR1cm47CisKKwkv KgorCSAqIEF1dG92YWN1dW0gd29ya2VycyBzaG91bGQgcmVsb2FkIHRoZSBjb25maWd1cmF0aW9u IGZpbGUgaWYgcmVxdWVzdGVkLgorCSAqIFRoaXMgYWxsb3dzIGNoYW5nZXMgdG8gW2F1dG92YWN1 dW1fXXZhY3V1bV9jb3N0X2xpbWl0IGFuZAorCSAqIFthdXRvdmFjdXVtX112YWN1dW1fY29zdF9k ZWxheSB0byB0YWtlIGVmZmVjdCB3aGlsZSBhIHRhYmxlIGlzIGJlaW5nCisJICogdmFjdXVtZWQg b3IgYW5hbHl6ZWQuCisJICovCisJaWYgKENvbmZpZ1JlbG9hZFBlbmRpbmcgJiYgSXNBdXRvVmFj dXVtV29ya2VyUHJvY2VzcygpKQorCXsKKwkJQ29uZmlnUmVsb2FkUGVuZGluZyA9IGZhbHNlOwor CQlQcm9jZXNzQ29uZmlnRmlsZShQR0NfU0lHSFVQKTsKKwkJVmFjdXVtVXBkYXRlQ29zdHMoKTsK Kwl9CisKKwkvKgorCSAqIElmIHdlIGRpc2FibGVkIGNvc3QtYmFzZWQgZGVsYXlzIGFmdGVyIHJl bG9hZGluZyB0aGUgY29uZmlnIGZpbGUsCisJICogcmV0dXJuLgorCSAqLworCWlmICghVmFjdXVt Q29zdEFjdGl2ZSkKIAkJcmV0dXJuOwogCiAJLyoKQEAgLTIyNzgsNyArMjMwOCwxNSBAQCB2YWN1 dW1fZGVsYXlfcG9pbnQodm9pZCkKIAogCQlWYWN1dW1Db3N0QmFsYW5jZSA9IDA7CiAKLQkJVmFj dXVtVXBkYXRlQ29zdHMoKTsKKwkJLyoKKwkJICogQmFsYW5jZSBhbmQgdXBkYXRlIGxpbWl0IHZh bHVlcyBmb3IgYXV0b3ZhY3V1bSB3b3JrZXJzLiBXZSBtdXN0IGRvCisJCSAqIHRoaXMgcGVyaW9k aWNhbGx5LCBhcyB0aGUgbnVtYmVyIG9mIHdvcmtlcnMgYWNyb3NzIHdoaWNoIHdlIGFyZQorCQkg KiBiYWxhbmNpbmcgdGhlIGxpbWl0IG1heSBoYXZlIGNoYW5nZWQuCisJCSAqCisJCSAqIFhYWDog VGhlcmUgbWF5IGJlIGJldHRlciBjcml0ZXJpYSBmb3IgZGV0ZXJtaW5pbmcgd2hlbiB0byBkbyB0 aGlzCisJCSAqIGJlc2lkZXMgImNoZWNrIGFmdGVyIG5hcHBpbmciLgorCQkgKi8KKwkJQXV0b1Zh Y3V1bVVwZGF0ZUNvc3RMaW1pdCgpOwogCiAJCS8qIE1pZ2h0IGhhdmUgZ290dGVuIGFuIGludGVy cnVwdCB3aGlsZSBzbGVlcGluZyAqLwogCQlDSEVDS19GT1JfSU5URVJSVVBUUygpOwpkaWZmIC0t Z2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMKaW5kZXggY2MwYWZmNzkwNC4uZTIwMGQ1Y2FmOCAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYworKysgYi9z cmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCkBAIC05OTUsNyArOTk1LDYgQEAg cGFyYWxsZWxfdmFjdXVtX21haW4oZHNtX3NlZ21lbnQgKnNlZywgc2htX3RvYyAqdG9jKQogCQkJ CQkJCQkJCQkJIGZhbHNlKTsKIAogCS8qIFNldCBjb3N0LWJhc2VkIHZhY3V1bSBkZWxheSAqLwot CVZhY3V1bUNvc3RBY3RpdmUgPSAodmFjdXVtX2Nvc3RfZGVsYXkgPiAwKTsKIAlWYWN1dW1VcGRh dGVDb3N0cygpOwogCVZhY3V1bUNvc3RCYWxhbmNlID0gMDsKIAlWYWN1dW1QYWdlSGl0ID0gMDsK ZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jIGIvc3JjL2Jh Y2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKaW5kZXggMzY0NGI4NjQ0My4uMTcxNzdjNDRj NiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKKysrIGIv c3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKQEAgLTEzOSw2ICsxMzksMTggQEAg aW50CQkJTG9nX2F1dG92YWN1dW1fbWluX2R1cmF0aW9uID0gNjAwMDAwOwogc3RhdGljIGJvb2wg YW1fYXV0b3ZhY3V1bV9sYXVuY2hlciA9IGZhbHNlOwogc3RhdGljIGJvb2wgYW1fYXV0b3ZhY3V1 bV93b3JrZXIgPSBmYWxzZTsKIAorLyoKKyAqIFZhcmlhYmxlcyB0byBzYXZlIHRoZSBjb3N0LXJl bGF0ZWQgc3RvcmFnZSBwYXJhbWV0ZXJzIGZvciB0aGUgY3VycmVudAorICogcmVsYXRpb24gYmVp bmcgdmFjdXVtZWQgYnkgdGhpcyBhdXRvdmFjdXVtIHdvcmtlci4gVXNpbmcgdGhlc2UsIHdlIGNh bgorICogZW5zdXJlIHdlIGRvbid0IG92ZXJ3cml0ZSB0aGUgdmFsdWVzIG9mIHZhY3V1bV9jb3N0 X2RlbGF5IGFuZAorICogdmFjdXVtX2Nvc3RfbGltaXQgYWZ0ZXIgcmVsb2FkaW5nIHRoZSBjb25m aWd1cmF0aW9uIGZpbGUuIFRoZXkgYXJlCisgKiBpbml0aWFsaXplZCB0byAiaW52YWxpZCIgdmFs dWVzIHRvIGluZGljYXRlIHRoYXQgbm8gY29zdC1yZWxhdGVkIHN0b3JhZ2UKKyAqIHBhcmFtZXRl cnMgd2VyZSBzcGVjaWZpZWQgYW5kIHdpbGwgYmUgc2V0IGluIGRvX2F1dG92YWN1dW0oKSBhZnRl ciBjaGVja2luZworICogdGhlIHN0b3JhZ2UgcGFyYW1ldGVycyBpbiB0YWJsZV9yZWNoZWNrX2F1 dG92YWMoKS4KKyAqLworc3RhdGljIGRvdWJsZSBhdl9zdG9yYWdlX3BhcmFtX2Nvc3RfZGVsYXkg PSAtMTsKK3N0YXRpYyBpbnQJYXZfc3RvcmFnZV9wYXJhbV9jb3N0X2xpbWl0ID0gLTE7CisKIC8q IEZsYWdzIHNldCBieSBzaWduYWwgaGFuZGxlcnMgKi8KIHN0YXRpYyB2b2xhdGlsZSBzaWdfYXRv bWljX3QgZ290X1NJR1VTUjIgPSBmYWxzZTsKIApAQCAtMTg5LDggKzIwMSw4IEBAIHR5cGVkZWYg c3RydWN0IGF1dG92YWNfdGFibGUKIHsKIAlPaWQJCQlhdF9yZWxpZDsKIAlWYWN1dW1QYXJhbXMg YXRfcGFyYW1zOwotCWRvdWJsZQkJYXRfdmFjdXVtX2Nvc3RfZGVsYXk7Ci0JaW50CQkJYXRfdmFj dXVtX2Nvc3RfbGltaXQ7CisJZG91YmxlCQlhdF9zdG9yYWdlX3BhcmFtX3ZhY19jb3N0X2RlbGF5 OworCWludAkJCWF0X3N0b3JhZ2VfcGFyYW1fdmFjX2Nvc3RfbGltaXQ7CiAJYm9vbAkJYXRfZG9i YWxhbmNlOwogCWJvb2wJCWF0X3NoYXJlZHJlbDsKIAljaGFyCSAgICphdF9yZWxuYW1lOwpAQCAt MjA5LDcgKzIyMSw3IEBAIHR5cGVkZWYgc3RydWN0IGF1dG92YWNfdGFibGUKICAqIHdpX3NoYXJl ZHJlbCBmbGFnIGluZGljYXRpbmcgd2hldGhlciB0YWJsZSBpcyBtYXJrZWQgcmVsaXNzaGFyZWQK ICAqIHdpX3Byb2MJCXBvaW50ZXIgdG8gUEdQUk9DIG9mIHRoZSBydW5uaW5nIHdvcmtlciwgTlVM TCBpZiBub3Qgc3RhcnRlZAogICogd2lfbGF1bmNodGltZSBUaW1lIGF0IHdoaWNoIHRoaXMgd29y a2VyIHdhcyBsYXVuY2hlZAotICogd2lfY29zdF8qCVZhY3V1bSBjb3N0LWJhc2VkIGRlbGF5IHBh cmFtZXRlcnMgY3VycmVudCBpbiB0aGlzIHdvcmtlcgorICogd2lfZG9iYWxhbmNlIFdoZXRoZXIg dGhpcyB3b3JrZXIgc2hvdWxkIGJlIGluY2x1ZGVkIGluIGJhbGFuY2UgY2FsY3VsYXRpb25zCiAg KgogICogQWxsIGZpZWxkcyBhcmUgcHJvdGVjdGVkIGJ5IEF1dG92YWN1dW1Mb2NrLCBleGNlcHQg Zm9yIHdpX3RhYmxlb2lkIGFuZAogICogd2lfc2hhcmVkcmVsIHdoaWNoIGFyZSBwcm90ZWN0ZWQg YnkgQXV0b3ZhY3V1bVNjaGVkdWxlTG9jayAobm90ZSB0aGVzZQpAQCAtMjIzLDExICsyMzUsOCBA QCB0eXBlZGVmIHN0cnVjdCBXb3JrZXJJbmZvRGF0YQogCU9pZAkJCXdpX3RhYmxlb2lkOwogCVBH UFJPQwkgICAqd2lfcHJvYzsKIAlUaW1lc3RhbXBUeiB3aV9sYXVuY2h0aW1lOwotCWJvb2wJCXdp X2RvYmFsYW5jZTsKKwlwZ19hdG9taWNfZmxhZyB3aV9kb2JhbGFuY2U7CiAJYm9vbAkJd2lfc2hh cmVkcmVsOwotCWRvdWJsZQkJd2lfY29zdF9kZWxheTsKLQlpbnQJCQl3aV9jb3N0X2xpbWl0Owot CWludAkJCXdpX2Nvc3RfbGltaXRfYmFzZTsKIH0gV29ya2VySW5mb0RhdGE7CiAKIHR5cGVkZWYg c3RydWN0IFdvcmtlckluZm9EYXRhICpXb3JrZXJJbmZvOwpAQCAtMjczLDYgKzI4Miw4IEBAIHR5 cGVkZWYgc3RydWN0IEF1dG9WYWN1dW1Xb3JrSXRlbQogICogYXZfc3RhcnRpbmdXb3JrZXIgcG9p bnRlciB0byBXb3JrZXJJbmZvIGN1cnJlbnRseSBiZWluZyBzdGFydGVkIChjbGVhcmVkIGJ5CiAg KgkJCQkJdGhlIHdvcmtlciBpdHNlbGYgYXMgc29vbiBhcyBpdCdzIHVwIGFuZCBydW5uaW5nKQog ICogYXZfd29ya0l0ZW1zCQl3b3JrIGl0ZW0gYXJyYXkKKyAqIGF2X253b3JrZXJzRm9yQmFsYW5j ZSB0aGUgbnVtYmVyIG9mIGF1dG92YWN1dW0gd29ya2VycyB0byB1c2Ugd2hlbgorICogCQkJCQlj YWxjdWxhdGluZyB0aGUgcGVyIHdvcmtlciBjb3N0IGxpbWl0CiAgKgogICogVGhpcyBzdHJ1Y3Qg aXMgcHJvdGVjdGVkIGJ5IEF1dG92YWN1dW1Mb2NrLCBleGNlcHQgZm9yIGF2X3NpZ25hbCBhbmQg cGFydHMKICAqIG9mIHRoZSB3b3JrZXIgbGlzdCAoc2VlIGFib3ZlKS4KQEAgLTI4Niw2ICsyOTcs NyBAQCB0eXBlZGVmIHN0cnVjdAogCWRsaXN0X2hlYWQJYXZfcnVubmluZ1dvcmtlcnM7CiAJV29y a2VySW5mbwlhdl9zdGFydGluZ1dvcmtlcjsKIAlBdXRvVmFjdXVtV29ya0l0ZW0gYXZfd29ya0l0 ZW1zW05VTV9XT1JLSVRFTVNdOworCXBnX2F0b21pY191aW50MzIgYXZfbndvcmtlcnNGb3JCYWxh bmNlOwogfSBBdXRvVmFjdXVtU2htZW1TdHJ1Y3Q7CiAKIHN0YXRpYyBBdXRvVmFjdXVtU2htZW1T dHJ1Y3QgKkF1dG9WYWN1dW1TaG1lbTsKQEAgLTMxOSw3ICszMzEsNyBAQCBzdGF0aWMgdm9pZCBs YXVuY2hfd29ya2VyKFRpbWVzdGFtcFR6IG5vdyk7CiBzdGF0aWMgTGlzdCAqZ2V0X2RhdGFiYXNl X2xpc3Qodm9pZCk7CiBzdGF0aWMgdm9pZCByZWJ1aWxkX2RhdGFiYXNlX2xpc3QoT2lkIG5ld2Ri KTsKIHN0YXRpYyBpbnQJZGJfY29tcGFyYXRvcihjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpi KTsKLXN0YXRpYyB2b2lkIGF1dG92YWNfYmFsYW5jZV9jb3N0KHZvaWQpOworc3RhdGljIHZvaWQg YXV0b3ZhY19yZWNhbGN1bGF0ZV93b3JrZXJzX2Zvcl9iYWxhbmNlKHZvaWQpOwogCiBzdGF0aWMg dm9pZCBkb19hdXRvdmFjdXVtKHZvaWQpOwogc3RhdGljIHZvaWQgRnJlZVdvcmtlckluZm8oaW50 IGNvZGUsIERhdHVtIGFyZyk7CkBAIC02NjksNyArNjgxLDcgQEAgQXV0b1ZhY0xhdW5jaGVyTWFp bihpbnQgYXJnYywgY2hhciAqYXJndltdKQogCQkJewogCQkJCUxXTG9ja0FjcXVpcmUoQXV0b3Zh Y3V1bUxvY2ssIExXX0VYQ0xVU0lWRSk7CiAJCQkJQXV0b1ZhY3V1bVNobWVtLT5hdl9zaWduYWxb QXV0b1ZhY1JlYmFsYW5jZV0gPSBmYWxzZTsKLQkJCQlhdXRvdmFjX2JhbGFuY2VfY29zdCgpOwor CQkJCWF1dG92YWNfcmVjYWxjdWxhdGVfd29ya2Vyc19mb3JfYmFsYW5jZSgpOwogCQkJCUxXTG9j a1JlbGVhc2UoQXV0b3ZhY3V1bUxvY2spOwogCQkJfQogCkBAIC04MTgsMTEgKzgzMCw2IEBAIEhh bmRsZUF1dG9WYWNMYXVuY2hlckludGVycnVwdHModm9pZCkKIAkJaWYgKCFBdXRvVmFjdXVtaW5n QWN0aXZlKCkpCiAJCQlBdXRvVmFjTGF1bmNoZXJTaHV0ZG93bigpOwogCi0JCS8qIHJlYmFsYW5j ZSBpbiBjYXNlIHRoZSBkZWZhdWx0IGNvc3QgcGFyYW1ldGVycyBjaGFuZ2VkICovCi0JCUxXTG9j a0FjcXVpcmUoQXV0b3ZhY3V1bUxvY2ssIExXX0VYQ0xVU0lWRSk7Ci0JCWF1dG92YWNfYmFsYW5j ZV9jb3N0KCk7Ci0JCUxXTG9ja1JlbGVhc2UoQXV0b3ZhY3V1bUxvY2spOwotCiAJCS8qIHJlYnVp bGQgdGhlIGxpc3QgaW4gY2FzZSB0aGUgbmFwdGltZSBjaGFuZ2VkICovCiAJCXJlYnVpbGRfZGF0 YWJhc2VfbGlzdChJbnZhbGlkT2lkKTsKIAl9CkBAIC0xNzU0LDEwICsxNzYxLDcgQEAgRnJlZVdv cmtlckluZm8oaW50IGNvZGUsIERhdHVtIGFyZykKIAkJTXlXb3JrZXJJbmZvLT53aV9zaGFyZWRy ZWwgPSBmYWxzZTsKIAkJTXlXb3JrZXJJbmZvLT53aV9wcm9jID0gTlVMTDsKIAkJTXlXb3JrZXJJ bmZvLT53aV9sYXVuY2h0aW1lID0gMDsKLQkJTXlXb3JrZXJJbmZvLT53aV9kb2JhbGFuY2UgPSBm YWxzZTsKLQkJTXlXb3JrZXJJbmZvLT53aV9jb3N0X2RlbGF5ID0gMDsKLQkJTXlXb3JrZXJJbmZv LT53aV9jb3N0X2xpbWl0ID0gMDsKLQkJTXlXb3JrZXJJbmZvLT53aV9jb3N0X2xpbWl0X2Jhc2Ug PSAwOworCQlwZ19hdG9taWNfY2xlYXJfZmxhZygmTXlXb3JrZXJJbmZvLT53aV9kb2JhbGFuY2Up OwogCQlkbGlzdF9wdXNoX2hlYWQoJkF1dG9WYWN1dW1TaG1lbS0+YXZfZnJlZVdvcmtlcnMsCiAJ CQkJCQkmTXlXb3JrZXJJbmZvLT53aV9saW5rcyk7CiAJCS8qIG5vdCBtaW5lIGFueW1vcmUgKi8K QEAgLTE3ODEsMTAgKzE3ODUsMjAgQEAgRnJlZVdvcmtlckluZm8oaW50IGNvZGUsIERhdHVtIGFy ZykKIHZvaWQKIFZhY3V1bVVwZGF0ZUNvc3RzKHZvaWQpCiB7CisJZG91YmxlCQlvcmlnaW5hbF9j b3N0X2RlbGF5ID0gdmFjdXVtX2Nvc3RfZGVsYXk7CisJaW50CQkJb3JpZ2luYWxfY29zdF9saW1p dCA9IHZhY3V1bV9jb3N0X2xpbWl0OworCiAJaWYgKE15V29ya2VySW5mbykKIAl7Ci0JCXZhY3V1 bV9jb3N0X2RlbGF5ID0gTXlXb3JrZXJJbmZvLT53aV9jb3N0X2RlbGF5OwotCQl2YWN1dW1fY29z dF9saW1pdCA9IE15V29ya2VySW5mby0+d2lfY29zdF9saW1pdDsKKwkJaWYgKGF2X3N0b3JhZ2Vf cGFyYW1fY29zdF9kZWxheSA+PSAwKQorCQkJdmFjdXVtX2Nvc3RfZGVsYXkgPSBhdl9zdG9yYWdl X3BhcmFtX2Nvc3RfZGVsYXk7CisJCWVsc2UgaWYgKGF1dG92YWN1dW1fdmFjX2Nvc3RfZGVsYXkg Pj0gMCkKKwkJCXZhY3V1bV9jb3N0X2RlbGF5ID0gYXV0b3ZhY3V1bV92YWNfY29zdF9kZWxheTsK KwkJZWxzZQorCQkJLyogZmFsbCBiYWNrIHRvIFZhY3V1bUNvc3REZWxheSAqLworCQkJdmFjdXVt X2Nvc3RfZGVsYXkgPSBWYWN1dW1Db3N0RGVsYXk7CisKKwkJQXV0b1ZhY3V1bVVwZGF0ZUNvc3RM aW1pdCgpOwogCX0KIAllbHNlCiAJewpAQCAtMTc5Miw4OCArMTgwNiwxMjggQEAgVmFjdXVtVXBk YXRlQ29zdHModm9pZCkKIAkJdmFjdXVtX2Nvc3RfZGVsYXkgPSBWYWN1dW1Db3N0RGVsYXk7CiAJ CXZhY3V1bV9jb3N0X2xpbWl0ID0gVmFjdXVtQ29zdExpbWl0OwogCX0KKworCS8qCisJICogSWYg Y29uZmlndXJhdGlvbiBjaGFuZ2VzIGFyZSBhbGxvd2VkIHRvIGltcGFjdCBWYWN1dW1Db3N0QWN0 aXZlLCBtYWtlCisJICogc3VyZSBpdCBpcyB1cGRhdGVkLgorCSAqLworCWlmIChWYWN1dW1GYWls c2FmZUFjdGl2ZSkKKwkJQXNzZXJ0KCFWYWN1dW1Db3N0QWN0aXZlKTsKKwllbHNlIGlmICh2YWN1 dW1fY29zdF9kZWxheSA+IDApCisJCVZhY3V1bUNvc3RBY3RpdmUgPSB0cnVlOworCWVsc2UKKwl7 CisJCVZhY3V1bUNvc3RBY3RpdmUgPSBmYWxzZTsKKwkJVmFjdXVtQ29zdEJhbGFuY2UgPSAwOwor CX0KKworCWlmIChNeVdvcmtlckluZm8pCisJeworCQlPaWQJCQlkYm9pZCwKKwkJCQkJdGFibGVv aWQ7CisKKwkJLyogT25seSBsb2cgdXBkYXRlcyB0byBjb3N0LXJlbGF0ZWQgdmFyaWFibGVzICov CisJCWlmICh2YWN1dW1fY29zdF9kZWxheSA9PSBvcmlnaW5hbF9jb3N0X2RlbGF5ICYmCisJCQl2 YWN1dW1fY29zdF9saW1pdCA9PSBvcmlnaW5hbF9jb3N0X2xpbWl0KQorCQkJcmV0dXJuOworCisJ CUFzc2VydCghTFdMb2NrSGVsZEJ5TWUoQXV0b3ZhY3V1bUxvY2spKTsKKworCQlMV0xvY2tBY3F1 aXJlKEF1dG92YWN1dW1Mb2NrLCBMV19TSEFSRUQpOworCQlkYm9pZCA9IE15V29ya2VySW5mby0+ d2lfZGJvaWQ7CisJCXRhYmxlb2lkID0gTXlXb3JrZXJJbmZvLT53aV90YWJsZW9pZDsKKwkJTFdM b2NrUmVsZWFzZShBdXRvdmFjdXVtTG9jayk7CisKKwkJZWxvZyhERUJVRzIsCisJCQkgIkF1dG92 YWN1dW0gVmFjdXVtVXBkYXRlQ29zdHMoZGI9JXUsIHJlbD0ldSwgZG9iYWxhbmNlPSVzLCBjb3N0 X2xpbWl0PSVkLCBjb3N0X2RlbGF5PSVnIGFjdGl2ZT0lcyBmYWlsc2FmZT0lcykiLAorCQkJIGRi b2lkLCB0YWJsZW9pZCwgcGdfYXRvbWljX3VubG9ja2VkX3Rlc3RfZmxhZygmTXlXb3JrZXJJbmZv LT53aV9kb2JhbGFuY2UpID8gIm5vIiA6ICJ5ZXMiLAorCQkJIHZhY3V1bV9jb3N0X2xpbWl0LCB2 YWN1dW1fY29zdF9kZWxheSwKKwkJCSB2YWN1dW1fY29zdF9kZWxheSA+IDAgPyAieWVzIiA6ICJu byIsCisJCQkgVmFjdXVtRmFpbHNhZmVBY3RpdmUgPyAieWVzIiA6ICJubyIpOworCisJfQogfQog CiAvKgotICogYXV0b3ZhY19iYWxhbmNlX2Nvc3QKLSAqCQlSZWNhbGN1bGF0ZSB0aGUgY29zdCBs aW1pdCBzZXR0aW5nIGZvciBlYWNoIGFjdGl2ZSB3b3JrZXIuCi0gKgotICogQ2FsbGVyIG11c3Qg aG9sZCB0aGUgQXV0b3ZhY3V1bUxvY2sgaW4gZXhjbHVzaXZlIG1vZGUuCisgKiBVcGRhdGUgdmFj dXVtX2Nvc3RfbGltaXQgd2l0aCB0aGUgY29ycmVjdCB2YWx1ZSBmb3IgYW4gYXV0b3ZhY3V1bSB3 b3JrZXIsCisgKiBnaXZlbiB0aGUgdmFsdWUgb2Ygb3RoZXIgcmVsZXZhbnQgY29zdCBsaW1pdCBw YXJhbWV0ZXJzIGFuZCB0aGUgbnVtYmVyIG9mCisgKiB3b3JrZXJzIGFjcm9zcyB3aGljaCB0aGUg bGltaXQgbXVzdCBiZSBiYWxhbmNlZC4gQXV0b3ZhY3V1bSB3b3JrZXJzIG11c3QKKyAqIGNhbGwg dGhpcyByZWd1bGFybHkgaW4gY2FzZSBhdl9ud29ya2Vyc0ZvckJhbGFuY2UgaGFzIGJlZW4gdXBk YXRlZCBieQorICogYW5vdGhlciB3b3JrZXIgb3IgYnkgdGhlIGF1dG92YWN1dW0gbGF1bmNoZXIu IFRoZXkgbXVzdCBhbHNvIGNhbGwgaXQgYWZ0ZXIgYQorICogY29uZmlnIHJlbG9hZC4KICAqLwot c3RhdGljIHZvaWQKLWF1dG92YWNfYmFsYW5jZV9jb3N0KHZvaWQpCit2b2lkCitBdXRvVmFjdXVt VXBkYXRlQ29zdExpbWl0KHZvaWQpCiB7CisJaWYgKCFNeVdvcmtlckluZm8pCisJCXJldHVybjsK KwogCS8qCi0JICogVGhlIGlkZWEgaGVyZSBpcyB0aGF0IHdlIHJhdGlvbiBvdXQgSS9PIGVxdWFs bHkuICBUaGUgYW1vdW50IG9mIEkvTwotCSAqIHRoYXQgYSB3b3JrZXIgY2FuIGNvbnN1bWUgaXMg ZGV0ZXJtaW5lZCBieSBjb3N0X2xpbWl0L2Nvc3RfZGVsYXksIHNvIHdlCi0JICogdHJ5IHRvIGVx dWFsaXplIHRob3NlIHJhdGlvcyByYXRoZXIgdGhhbiB0aGUgcmF3IGxpbWl0IHNldHRpbmdzLgot CSAqCiAJICogbm90ZTogaW4gY29zdF9saW1pdCwgemVybyBhbHNvIG1lYW5zIHVzZSB2YWx1ZSBm cm9tIGVsc2V3aGVyZSwgYmVjYXVzZQogCSAqIHplcm8gaXMgbm90IGEgdmFsaWQgdmFsdWUuCiAJ ICovCi0JaW50CQkJdmFjX2Nvc3RfbGltaXQgPSAoYXV0b3ZhY3V1bV92YWNfY29zdF9saW1pdCA+ IDAgPwotCQkJCQkJCQkgIGF1dG92YWN1dW1fdmFjX2Nvc3RfbGltaXQgOiBWYWN1dW1Db3N0TGlt aXQpOwotCWRvdWJsZQkJdmFjX2Nvc3RfZGVsYXkgPSAoYXV0b3ZhY3V1bV92YWNfY29zdF9kZWxh eSA+PSAwID8KLQkJCQkJCQkJICBhdXRvdmFjdXVtX3ZhY19jb3N0X2RlbGF5IDogVmFjdXVtQ29z dERlbGF5KTsKLQlkb3VibGUJCWNvc3RfdG90YWw7Ci0JZG91YmxlCQljb3N0X2F2YWlsOwotCWRs aXN0X2l0ZXIJaXRlcjsKLQotCS8qIG5vdCBzZXQ/IG5vdGhpbmcgdG8gZG8gKi8KLQlpZiAodmFj X2Nvc3RfbGltaXQgPD0gMCB8fCB2YWNfY29zdF9kZWxheSA8PSAwKQotCQlyZXR1cm47CiAKLQkv KiBjYWxjdWxhdGUgdGhlIHRvdGFsIGJhc2UgY29zdCBsaW1pdCBvZiBwYXJ0aWNpcGF0aW5nIGFj dGl2ZSB3b3JrZXJzICovCi0JY29zdF90b3RhbCA9IDAuMDsKLQlkbGlzdF9mb3JlYWNoKGl0ZXIs ICZBdXRvVmFjdXVtU2htZW0tPmF2X3J1bm5pbmdXb3JrZXJzKQorCWlmIChhdl9zdG9yYWdlX3Bh cmFtX2Nvc3RfbGltaXQgPiAwKQorCQl2YWN1dW1fY29zdF9saW1pdCA9IGF2X3N0b3JhZ2VfcGFy YW1fY29zdF9saW1pdDsKKwllbHNlCiAJewotCQlXb3JrZXJJbmZvCXdvcmtlciA9IGRsaXN0X2Nv bnRhaW5lcihXb3JrZXJJbmZvRGF0YSwgd2lfbGlua3MsIGl0ZXIuY3VyKTsKKwkJaW50CQkJbndv cmtlcnNfZm9yX2JhbGFuY2U7CisKKwkJaWYgKGF1dG92YWN1dW1fdmFjX2Nvc3RfbGltaXQgPiAw KQorCQkJdmFjdXVtX2Nvc3RfbGltaXQgPSBhdXRvdmFjdXVtX3ZhY19jb3N0X2xpbWl0OworCQll bHNlCisJCQl2YWN1dW1fY29zdF9saW1pdCA9IFZhY3V1bUNvc3RMaW1pdDsKKworCQkvKiBPbmx5 IGJhbGFuY2UgbGltaXQgaWYgbm8gY29zdC1yZWxhdGVkIHN0b3JhZ2UgcGFyYW1ldGVycyBzcGVj aWZpZWQgKi8KKwkJaWYgKHBnX2F0b21pY191bmxvY2tlZF90ZXN0X2ZsYWcoJk15V29ya2VySW5m by0+d2lfZG9iYWxhbmNlKSkKKwkJCXJldHVybjsKKworCQlBc3NlcnQodmFjdXVtX2Nvc3RfbGlt aXQgPiAwKTsKIAotCQlpZiAod29ya2VyLT53aV9wcm9jICE9IE5VTEwgJiYKLQkJCXdvcmtlci0+ d2lfZG9iYWxhbmNlICYmCi0JCQl3b3JrZXItPndpX2Nvc3RfbGltaXRfYmFzZSA+IDAgJiYgd29y a2VyLT53aV9jb3N0X2RlbGF5ID4gMCkKLQkJCWNvc3RfdG90YWwgKz0KLQkJCQkoZG91YmxlKSB3 b3JrZXItPndpX2Nvc3RfbGltaXRfYmFzZSAvIHdvcmtlci0+d2lfY29zdF9kZWxheTsKKwkJbndv cmtlcnNfZm9yX2JhbGFuY2UgPSBwZ19hdG9taWNfcmVhZF91MzIoJkF1dG9WYWN1dW1TaG1lbS0+ YXZfbndvcmtlcnNGb3JCYWxhbmNlKTsKKworCQkvKiBUaGVyZSBpcyBhdCBsZWFzdCAxIGF1dG92 YWMgd29ya2VyICh0aGlzIHdvcmtlcikgKi8KKwkJaWYgKG53b3JrZXJzX2Zvcl9iYWxhbmNlIDw9 IDApCisJCQllbG9nKEVSUk9SLCAibndvcmtlcnNfZm9yX2JhbGFuY2UgbXVzdCBiZSA+IDAiKTsK KworCQl2YWN1dW1fY29zdF9saW1pdCA9IE1heCh2YWN1dW1fY29zdF9saW1pdCAvIG53b3JrZXJz X2Zvcl9iYWxhbmNlLCAxKTsKIAl9Cit9CiAKLQkvKiB0aGVyZSBhcmUgbm8gY29zdCBsaW1pdHMg LS0gbm90aGluZyB0byBkbyAqLwotCWlmIChjb3N0X3RvdGFsIDw9IDApCi0JCXJldHVybjsKKy8q CisgKiBhdXRvdmFjX3JlY2FsY3VsYXRlX3dvcmtlcnNfZm9yX2JhbGFuY2UKKyAqCQlSZWNhbGN1 bGF0ZSB0aGUgbnVtYmVyIG9mIHdvcmtlcnMgdG8gY29uc2lkZXIsIGdpdmVuIGNvc3QtcmVsYXRl ZAorICoJCXN0b3JhZ2UgcGFyYW1ldGVycyBhbmQgdGhlIGN1cnJlbnQgbnVtYmVyIG9mIGFjdGl2 ZSB3b3JrZXJzLgorICoKKyAqIENhbGxlciBtdXN0IGhvbGQgdGhlIEF1dG92YWN1dW1Mb2NrIGlu IGF0IGxlYXN0IHNoYXJlZCBtb2RlIHRvIGFjY2VzcworICogd29ya2VyLT53aV9wcm9jLgorICov CitzdGF0aWMgdm9pZAorYXV0b3ZhY19yZWNhbGN1bGF0ZV93b3JrZXJzX2Zvcl9iYWxhbmNlKHZv aWQpCit7CisJZGxpc3RfaXRlcglpdGVyOworCWludAkJCW9yaWdfbndvcmtlcnNfZm9yX2JhbGFu Y2U7CisJaW50CQkJbndvcmtlcnNfZm9yX2JhbGFuY2UgPSAwOworCisJQXNzZXJ0KExXTG9ja0hl bGRCeU1lKEF1dG92YWN1dW1Mb2NrKSk7CisKKwlvcmlnX253b3JrZXJzX2Zvcl9iYWxhbmNlID0K KwkJcGdfYXRvbWljX3JlYWRfdTMyKCZBdXRvVmFjdXVtU2htZW0tPmF2X253b3JrZXJzRm9yQmFs YW5jZSk7CiAKLQkvKgotCSAqIEFkanVzdCBjb3N0IGxpbWl0IG9mIGVhY2ggYWN0aXZlIHdvcmtl ciB0byBiYWxhbmNlIHRoZSB0b3RhbCBvZiBjb3N0Ci0JICogbGltaXQgdG8gYXV0b3ZhY3V1bV92 YWN1dW1fY29zdF9saW1pdC4KLQkgKi8KLQljb3N0X2F2YWlsID0gKGRvdWJsZSkgdmFjX2Nvc3Rf bGltaXQgLyB2YWNfY29zdF9kZWxheTsKIAlkbGlzdF9mb3JlYWNoKGl0ZXIsICZBdXRvVmFjdXVt U2htZW0tPmF2X3J1bm5pbmdXb3JrZXJzKQogCXsKIAkJV29ya2VySW5mbwl3b3JrZXIgPSBkbGlz dF9jb250YWluZXIoV29ya2VySW5mb0RhdGEsIHdpX2xpbmtzLCBpdGVyLmN1cik7CiAKLQkJaWYg KHdvcmtlci0+d2lfcHJvYyAhPSBOVUxMICYmCi0JCQl3b3JrZXItPndpX2RvYmFsYW5jZSAmJgot CQkJd29ya2VyLT53aV9jb3N0X2xpbWl0X2Jhc2UgPiAwICYmIHdvcmtlci0+d2lfY29zdF9kZWxh eSA+IDApCi0JCXsKLQkJCWludAkJCWxpbWl0ID0gKGludCkKLQkJCShjb3N0X2F2YWlsICogd29y a2VyLT53aV9jb3N0X2xpbWl0X2Jhc2UgLyBjb3N0X3RvdGFsKTsKLQotCQkJLyoKLQkJCSAqIFdl IHB1dCBhIGxvd2VyIGJvdW5kIG9mIDEgb24gdGhlIGNvc3RfbGltaXQsIHRvIGF2b2lkIGRpdmlz aW9uLQotCQkJICogYnktemVybyBpbiB0aGUgdmFjdXVtIGNvZGUuICBBbHNvLCBpbiBjYXNlIG9m IHJvdW5kb2ZmIHRyb3VibGUKLQkJCSAqIGluIHRoZXNlIGNhbGN1bGF0aW9ucywgbGV0J3MgYmUg c3VyZSB3ZSBkb24ndCBldmVyIHNldAotCQkJICogY29zdF9saW1pdCB0byBtb3JlIHRoYW4gdGhl IGJhc2UgdmFsdWUuCi0JCQkgKi8KLQkJCXdvcmtlci0+d2lfY29zdF9saW1pdCA9IE1heChNaW4o bGltaXQsCi0JCQkJCQkJCQkJCXdvcmtlci0+d2lfY29zdF9saW1pdF9iYXNlKSwKLQkJCQkJCQkJ CQkxKTsKLQkJfQorCQlpZiAod29ya2VyLT53aV9wcm9jID09IE5VTEwgfHwKKwkJCXBnX2F0b21p Y191bmxvY2tlZF90ZXN0X2ZsYWcoJndvcmtlci0+d2lfZG9iYWxhbmNlKSkKKwkJCWNvbnRpbnVl OwogCi0JCWlmICh3b3JrZXItPndpX3Byb2MgIT0gTlVMTCkKLQkJCWVsb2coREVCVUcyLCAiYXV0 b3ZhY19iYWxhbmNlX2Nvc3QocGlkPSVkIGRiPSV1LCByZWw9JXUsIGRvYmFsYW5jZT0lcyBjb3N0 X2xpbWl0PSVkLCBjb3N0X2xpbWl0X2Jhc2U9JWQsIGNvc3RfZGVsYXk9JWcpIiwKLQkJCQkgd29y a2VyLT53aV9wcm9jLT5waWQsIHdvcmtlci0+d2lfZGJvaWQsIHdvcmtlci0+d2lfdGFibGVvaWQs Ci0JCQkJIHdvcmtlci0+d2lfZG9iYWxhbmNlID8gInllcyIgOiAibm8iLAotCQkJCSB3b3JrZXIt PndpX2Nvc3RfbGltaXQsIHdvcmtlci0+d2lfY29zdF9saW1pdF9iYXNlLAotCQkJCSB3b3JrZXIt PndpX2Nvc3RfZGVsYXkpOworCQlud29ya2Vyc19mb3JfYmFsYW5jZSsrOwogCX0KKworCWlmIChu d29ya2Vyc19mb3JfYmFsYW5jZSAhPSBvcmlnX253b3JrZXJzX2Zvcl9iYWxhbmNlKQorCQlwZ19h dG9taWNfd3JpdGVfdTMyKCZBdXRvVmFjdXVtU2htZW0tPmF2X253b3JrZXJzRm9yQmFsYW5jZSwK KwkJCQkJCQlud29ya2Vyc19mb3JfYmFsYW5jZSk7CiB9CiAKIC8qCkBAIC0yNDIxLDIzICsyNDc1 LDM0IEBAIGRvX2F1dG92YWN1dW0odm9pZCkKIAkJCWNvbnRpbnVlOwogCQl9CiAKLQkJLyogTXVz dCBob2xkIEF1dG92YWN1dW1Mb2NrIHdoaWxlIG11Y2tpbmcgd2l0aCBjb3N0IGJhbGFuY2UgaW5m byAqLwotCQlMV0xvY2tBY3F1aXJlKEF1dG92YWN1dW1Mb2NrLCBMV19FWENMVVNJVkUpOworCQkv KgorCQkgKiBTYXZlIHRoZSBjb3N0LXJlbGF0ZWQgc3RvcmFnZSBwYXJhbWV0ZXIgdmFsdWVzIGlu IGdsb2JhbCB2YXJpYWJsZXMKKwkJICogZm9yIHJlZmVyZW5jZSB3aGVuIHVwZGF0aW5nIHZhY3V1 bV9jb3N0X2RlbGF5IGFuZCB2YWN1dW1fY29zdF9saW1pdAorCQkgKiBkdXJpbmcgdmFjdXVtaW5n IHRoaXMgdGFibGUuCisJCSAqLworCQlhdl9zdG9yYWdlX3BhcmFtX2Nvc3RfZGVsYXkgPSB0YWIt PmF0X3N0b3JhZ2VfcGFyYW1fdmFjX2Nvc3RfZGVsYXk7CisJCWF2X3N0b3JhZ2VfcGFyYW1fY29z dF9saW1pdCA9IHRhYi0+YXRfc3RvcmFnZV9wYXJhbV92YWNfY29zdF9saW1pdDsKIAotCQkvKiBh ZHZlcnRpc2UgbXkgY29zdCBkZWxheSBwYXJhbWV0ZXJzIGZvciB0aGUgYmFsYW5jaW5nIGFsZ29y aXRobSAqLwotCQlNeVdvcmtlckluZm8tPndpX2RvYmFsYW5jZSA9IHRhYi0+YXRfZG9iYWxhbmNl OwotCQlNeVdvcmtlckluZm8tPndpX2Nvc3RfZGVsYXkgPSB0YWItPmF0X3ZhY3V1bV9jb3N0X2Rl bGF5OwotCQlNeVdvcmtlckluZm8tPndpX2Nvc3RfbGltaXQgPSB0YWItPmF0X3ZhY3V1bV9jb3N0 X2xpbWl0OwotCQlNeVdvcmtlckluZm8tPndpX2Nvc3RfbGltaXRfYmFzZSA9IHRhYi0+YXRfdmFj dXVtX2Nvc3RfbGltaXQ7CisJCS8qCisJCSAqIFdlIG9ubHkgZXhwZWN0IHRoaXMgd29ya2VyIHRv IGV2ZXIgc2V0IHRoZSBmbGFnLCBzbyBkb24ndCBib3RoZXIKKwkJICogY2hlY2tpbmcgdGhlIHJl dHVybiB2YWx1ZS4gV2Ugc2hvdWxkbid0IGhhdmUgdG8gcmV0cnkuCisJCSAqLworCQlpZiAodGFi LT5hdF9kb2JhbGFuY2UpCisJCQlwZ19hdG9taWNfdGVzdF9zZXRfZmxhZygmTXlXb3JrZXJJbmZv LT53aV9kb2JhbGFuY2UpOworCQllbHNlCisJCQlwZ19hdG9taWNfY2xlYXJfZmxhZygmTXlXb3Jr ZXJJbmZvLT53aV9kb2JhbGFuY2UpOwogCi0JCS8qIGRvIGEgYmFsYW5jZSAqLwotCQlhdXRvdmFj X2JhbGFuY2VfY29zdCgpOworCQlMV0xvY2tBY3F1aXJlKEF1dG92YWN1dW1Mb2NrLCBMV19TSEFS RUQpOworCQlhdXRvdmFjX3JlY2FsY3VsYXRlX3dvcmtlcnNfZm9yX2JhbGFuY2UoKTsKKwkJTFdM b2NrUmVsZWFzZShBdXRvdmFjdXVtTG9jayk7CiAKLQkJLyogc2V0IHRoZSBhY3RpdmUgY29zdCBw YXJhbWV0ZXJzIGZyb20gdGhlIHJlc3VsdCBvZiB0aGF0ICovCisJCS8qCisJCSAqIFdlIHdhaXQg dW50aWwgdGhpcyBwb2ludCB0byB1cGRhdGUgY29zdCBkZWxheSBhbmQgY29zdCBsaW1pdAorCQkg KiB2YWx1ZXMsIGV2ZW4gdGhvdWdoIHdlIHJlbG9hZGVkIHRoZSBjb25maWd1cmF0aW9uIGZpbGUg YWJvdmUsIHNvCisJCSAqIHRoYXQgd2UgY2FuIHRha2UgaW50byBhY2NvdW50IHRoZSBjb3N0LXJl bGF0ZWQgc3RvcmFnZSBwYXJhbWV0ZXJzLgorCQkgKi8KIAkJVmFjdXVtVXBkYXRlQ29zdHMoKTsK IAotCQkvKiBkb25lICovCi0JCUxXTG9ja1JlbGVhc2UoQXV0b3ZhY3V1bUxvY2spOwogCiAJCS8q IGNsZWFuIHVwIG1lbW9yeSBiZWZvcmUgZWFjaCBpdGVyYXRpb24gKi8KIAkJTWVtb3J5Q29udGV4 dFJlc2V0QW5kRGVsZXRlQ2hpbGRyZW4oUG9ydGFsQ29udGV4dCk7CkBAIC0yNTIxLDE2ICsyNTg2 LDE3IEBAIGRlbGV0ZWQ6CiAJCXBmcmVlKHRhYik7CiAKIAkJLyoKLQkJICogUmVtb3ZlIG15IGlu Zm8gZnJvbSBzaGFyZWQgbWVtb3J5LiAgV2UgY291bGQsIGJ1dCBpbnRlbnRpb25hbGx5Ci0JCSAq IGRvbid0LCBjbGVhciB3aV9jb3N0X2xpbWl0IGFuZCBmcmllbmRzIC0tLSB0aGlzIGlzIG9uIHRo ZQotCQkgKiBhc3N1bXB0aW9uIHRoYXQgd2UgcHJvYmFibHkgaGF2ZSBtb3JlIHRvIGRvIHdpdGgg c2ltaWxhciBjb3N0Ci0JCSAqIHNldHRpbmdzLCBzbyB3ZSBkb24ndCB3YW50IHRvIGdpdmUgdXAg b3VyIHNoYXJlIG9mIEkvTyBmb3IgYSB2ZXJ5Ci0JCSAqIHNob3J0IGludGVydmFsIGFuZCB0aGVy ZWJ5IHRocmFzaCB0aGUgZ2xvYmFsIGJhbGFuY2UuCisJCSAqIFJlbW92ZSBteSBpbmZvIGZyb20g c2hhcmVkIG1lbW9yeS4gIFdlIHNldCB3aV9kb2JhbGFuY2Ugb24gdGhlCisJCSAqIGFzc3VtcHRp b24gdGhhdCB3ZSBhcmUgbW9yZSBsaWtlbHkgdGhhbiBub3QgdG8gdmFjdXVtIGEgdGFibGUgd2l0 aAorCQkgKiBubyBjb3N0LXJlbGF0ZWQgc3RvcmFnZSBwYXJhbWV0ZXJzIG5leHQsIHNvIHdlIHdh bnQgdG8gY2xhaW0gb3VyCisJCSAqIHNoYXJlIG9mIEkvTyBhcyBzb29uIGFzIHBvc3NpYmxlIHRv IGF2b2lkIHRocmFzaGluZyB0aGUgZ2xvYmFsCisJCSAqIGJhbGFuY2UuCiAJCSAqLwogCQlMV0xv Y2tBY3F1aXJlKEF1dG92YWN1dW1TY2hlZHVsZUxvY2ssIExXX0VYQ0xVU0lWRSk7CiAJCU15V29y a2VySW5mby0+d2lfdGFibGVvaWQgPSBJbnZhbGlkT2lkOwogCQlNeVdvcmtlckluZm8tPndpX3No YXJlZHJlbCA9IGZhbHNlOwogCQlMV0xvY2tSZWxlYXNlKEF1dG92YWN1dW1TY2hlZHVsZUxvY2sp OworCQlwZ19hdG9taWNfdGVzdF9zZXRfZmxhZygmTXlXb3JrZXJJbmZvLT53aV9kb2JhbGFuY2Up OwogCX0KIAogCS8qCkBAIC0yNTYyLDYgKzI2MjgsNyBAQCBkZWxldGVkOgogCQl7CiAJCQlDb25m aWdSZWxvYWRQZW5kaW5nID0gZmFsc2U7CiAJCQlQcm9jZXNzQ29uZmlnRmlsZShQR0NfU0lHSFVQ KTsKKwkJCVZhY3V1bVVwZGF0ZUNvc3RzKCk7CiAJCX0KIAogCQlMV0xvY2tBY3F1aXJlKEF1dG92 YWN1dW1Mb2NrLCBMV19FWENMVVNJVkUpOwpAQCAtMjc5Nyw4ICsyODY0LDYgQEAgdGFibGVfcmVj aGVja19hdXRvdmFjKE9pZCByZWxpZCwgSFRBQiAqdGFibGVfdG9hc3RfbWFwLAogCQlpbnQJCQlm cmVlemVfdGFibGVfYWdlOwogCQlpbnQJCQltdWx0aXhhY3RfZnJlZXplX21pbl9hZ2U7CiAJCWlu dAkJCW11bHRpeGFjdF9mcmVlemVfdGFibGVfYWdlOwotCQlpbnQJCQl2YWNfY29zdF9saW1pdDsK LQkJZG91YmxlCQl2YWNfY29zdF9kZWxheTsKIAkJaW50CQkJbG9nX21pbl9kdXJhdGlvbjsKIAog CQkvKgpAQCAtMjgwOCwyMCArMjg3Myw2IEBAIHRhYmxlX3JlY2hlY2tfYXV0b3ZhYyhPaWQgcmVs aWQsIEhUQUIgKnRhYmxlX3RvYXN0X21hcCwKIAkJICogZGVmYXVsdHMsIGF1dG92YWN1dW0ncyBv d24gZmlyc3QgYW5kIHBsYWluIHZhY3V1bSBzZWNvbmQuCiAJCSAqLwogCi0JCS8qIC0xIGluIGF1 dG92YWMgc2V0dGluZyBtZWFucyB1c2UgcGxhaW4gdmFjdXVtX2Nvc3RfZGVsYXkgKi8KLQkJdmFj X2Nvc3RfZGVsYXkgPSAoYXZvcHRzICYmIGF2b3B0cy0+dmFjdXVtX2Nvc3RfZGVsYXkgPj0gMCkK LQkJCT8gYXZvcHRzLT52YWN1dW1fY29zdF9kZWxheQotCQkJOiAoYXV0b3ZhY3V1bV92YWNfY29z dF9kZWxheSA+PSAwKQotCQkJPyBhdXRvdmFjdXVtX3ZhY19jb3N0X2RlbGF5Ci0JCQk6IFZhY3V1 bUNvc3REZWxheTsKLQotCQkvKiAwIG9yIC0xIGluIGF1dG92YWMgc2V0dGluZyBtZWFucyB1c2Ug cGxhaW4gdmFjdXVtX2Nvc3RfbGltaXQgKi8KLQkJdmFjX2Nvc3RfbGltaXQgPSAoYXZvcHRzICYm IGF2b3B0cy0+dmFjdXVtX2Nvc3RfbGltaXQgPiAwKQotCQkJPyBhdm9wdHMtPnZhY3V1bV9jb3N0 X2xpbWl0Ci0JCQk6IChhdXRvdmFjdXVtX3ZhY19jb3N0X2xpbWl0ID4gMCkKLQkJCT8gYXV0b3Zh Y3V1bV92YWNfY29zdF9saW1pdAotCQkJOiBWYWN1dW1Db3N0TGltaXQ7Ci0KIAkJLyogLTEgaW4g YXV0b3ZhYyBzZXR0aW5nIG1lYW5zIHVzZSBsb2dfYXV0b3ZhY3V1bV9taW5fZHVyYXRpb24gKi8K IAkJbG9nX21pbl9kdXJhdGlvbiA9IChhdm9wdHMgJiYgYXZvcHRzLT5sb2dfbWluX2R1cmF0aW9u ID49IDApCiAJCQk/IGF2b3B0cy0+bG9nX21pbl9kdXJhdGlvbgpAQCAtMjg3Nyw4ICsyOTI4LDEw IEBAIHRhYmxlX3JlY2hlY2tfYXV0b3ZhYyhPaWQgcmVsaWQsIEhUQUIgKnRhYmxlX3RvYXN0X21h cCwKIAkJdGFiLT5hdF9wYXJhbXMubXVsdGl4YWN0X2ZyZWV6ZV90YWJsZV9hZ2UgPSBtdWx0aXhh Y3RfZnJlZXplX3RhYmxlX2FnZTsKIAkJdGFiLT5hdF9wYXJhbXMuaXNfd3JhcGFyb3VuZCA9IHdy YXBhcm91bmQ7CiAJCXRhYi0+YXRfcGFyYW1zLmxvZ19taW5fZHVyYXRpb24gPSBsb2dfbWluX2R1 cmF0aW9uOwotCQl0YWItPmF0X3ZhY3V1bV9jb3N0X2xpbWl0ID0gdmFjX2Nvc3RfbGltaXQ7Ci0J CXRhYi0+YXRfdmFjdXVtX2Nvc3RfZGVsYXkgPSB2YWNfY29zdF9kZWxheTsKKwkJdGFiLT5hdF9z dG9yYWdlX3BhcmFtX3ZhY19jb3N0X2xpbWl0ID0gYXZvcHRzID8KKwkJCWF2b3B0cy0+dmFjdXVt X2Nvc3RfbGltaXQgOiAwOworCQl0YWItPmF0X3N0b3JhZ2VfcGFyYW1fdmFjX2Nvc3RfZGVsYXkg PSBhdm9wdHMgPworCQkJYXZvcHRzLT52YWN1dW1fY29zdF9kZWxheSA6IC0xOwogCQl0YWItPmF0 X3JlbG5hbWUgPSBOVUxMOwogCQl0YWItPmF0X25zcG5hbWUgPSBOVUxMOwogCQl0YWItPmF0X2Rh dG5hbWUgPSBOVUxMOwpAQCAtMzM4MCwxMCArMzQzMywxOCBAQCBBdXRvVmFjdXVtU2htZW1Jbml0 KHZvaWQpCiAJCXdvcmtlciA9IChXb3JrZXJJbmZvKSAoKGNoYXIgKikgQXV0b1ZhY3V1bVNobWVt ICsKIAkJCQkJCQkgICBNQVhBTElHTihzaXplb2YoQXV0b1ZhY3V1bVNobWVtU3RydWN0KSkpOwog CisKIAkJLyogaW5pdGlhbGl6ZSB0aGUgV29ya2VySW5mbyBmcmVlIGxpc3QgKi8KIAkJZm9yIChp ID0gMDsgaSA8IGF1dG92YWN1dW1fbWF4X3dvcmtlcnM7IGkrKykKKwkJewogCQkJZGxpc3RfcHVz aF9oZWFkKCZBdXRvVmFjdXVtU2htZW0tPmF2X2ZyZWVXb3JrZXJzLAogCQkJCQkJCSZ3b3JrZXJb aV0ud2lfbGlua3MpOworCisJCQlwZ19hdG9taWNfaW5pdF9mbGFnKCZ3b3JrZXJbaV0ud2lfZG9i YWxhbmNlKTsKKwkJfQorCisJCXBnX2F0b21pY19pbml0X3UzMigmQXV0b1ZhY3V1bVNobWVtLT5h dl9ud29ya2Vyc0ZvckJhbGFuY2UsIDApOworCiAJfQogCWVsc2UKIAkJQXNzZXJ0KGZvdW5kKTsK ZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL3ZhY3V1bS5oIGIvc3JjL2luY2x1ZGUv Y29tbWFuZHMvdmFjdXVtLmgKaW5kZXggNTBjYWYxMzE1ZC4uMmE4NTZiMGU1ZSAxMDA2NDQKLS0t IGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvdmFjdXVtLmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFu ZHMvdmFjdXVtLmgKQEAgLTM1MCw2ICszNTAsNyBAQCBleHRlcm4gSW5kZXhCdWxrRGVsZXRlUmVz dWx0ICp2YWNfY2xlYW51cF9vbmVfaW5kZXgoSW5kZXhWYWN1dW1JbmZvICppdmluZm8sCiBleHRl cm4gU2l6ZSB2YWNfbWF4X2l0ZW1zX3RvX2FsbG9jX3NpemUoaW50IG1heF9pdGVtcyk7CiAKIC8q IEluIHBvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jICovCitleHRlcm4gdm9pZCBBdXRvVmFjdXVtVXBk YXRlQ29zdExpbWl0KHZvaWQpOwogZXh0ZXJuIHZvaWQgVmFjdXVtVXBkYXRlQ29zdHModm9pZCk7 CiAKIC8qIGluIGNvbW1hbmRzL3ZhY3V1bXBhcmFsbGVsLmMgKi8KLS0gCjIuMzcuMgoK --000000000000a48b7005f8b23428 Content-Type: text/x-patch; charset="US-ASCII"; name="v19-0002-Separate-vacuum-cost-variables-from-GUCs.patch" Content-Disposition: attachment; filename="v19-0002-Separate-vacuum-cost-variables-from-GUCs.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lg5ob1dd1 RnJvbSA5MmZjODc5NjlhNDk2YzFhMWY1ZmQ2MTJkM2M3YzMyMjUxZGVjNmUxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNZWxhbmllIFBsYWdlbWFuIDxtZWxhbmllcGxhZ2VtYW5AZ21h aWwuY29tPgpEYXRlOiBUaHUsIDYgQXByIDIwMjMgMTY6MDI6MTIgLTA0MDAKU3ViamVjdDogW1BB VENIIHYxOSAyLzNdIFNlcGFyYXRlIHZhY3V1bSBjb3N0IHZhcmlhYmxlcyBmcm9tIEdVQ3MKClZh Y3V1bSBjb2RlIHJ1biBib3RoIGJ5IGF1dG92YWN1dW0gd29ya2VycyBhbmQgYSBiYWNrZW5kIGRv aW5nClZBQ1VVTS9BTkFMWVpFIHByZXZpb3VzbHkgaW5zcGVjdGVkIFZhY3V1bUNvc3RMaW1pdCBh bmQgVmFjdXVtQ29zdERlbGF5LAp3aGljaCBhcmUgdGhlIGdsb2JhbCB2YXJpYWJsZXMgYmFja2lu ZyB0aGUgR1VDcyB2YWN1dW1fY29zdF9saW1pdCBhbmQKdmFjdXVtX2Nvc3RfZGVsYXkuCgpBdXRv dmFjdXVtIHdvcmtlcnMgbmVlZGVkIHRvIG92ZXJyaWRlIHRoZXNlIHZhcmlhYmxlcyB3aXRoIHRo ZWlyIG93bgp2YWx1ZXMsIGRlcml2ZWQgZnJvbSBhdXRvdmFjdXVtX3ZhY3V1bV9jb3N0X2xpbWl0 IGFuZAphdXRvdmFjdXVtX3ZhY3V1bV9jb3N0X2RlbGF5IGFuZCB3b3JrZXIgY29zdCBsaW1pdCBi YWxhbmNpbmcgbG9naWMuIFRoaXMKbGVkIHRvIGNvbmZ1c2luZyBjb2RlIHdoaWNoLCBpbiBzb21l IGNhc2VzLCBib3RoIGRlcml2ZWQgYW5kIHNldCBhIG5ldwp2YWx1ZSBvZiBWYWN1dW1Db3N0TGlt aXQgZnJvbSBWYWN1dW1Db3N0TGltaXQuCgpJbiBwcmVwYXJhdGlvbiBmb3IgcmVmcmVzaGluZyB0 aGVzZSBHVUMgdmFsdWVzIG1vcmUgb2Z0ZW4sIGludHJvZHVjZQpuZXcsIGluZGVwZW5kZW50IGds b2JhbCB2YXJpYWJsZXMgYW5kIGFkZCBhIGZ1bmN0aW9uIHRvIHVwZGF0ZSB0aGVtCnVzaW5nIHRo ZSBHVUNzIGFuZCBleGlzdGluZyBsb2dpYy4KClBlciBzdWdnZXN0aW9uIGJ5IEt5b3Rhcm8gSG9y aWd1Y2hpCgpSZXZpZXdlZC1ieTogTWFzYWhpa28gU2F3YWRhIDxzYXdhZGEubXNoa0BnbWFpbC5j b20+ClJldmlld2VkLWJ5OiBEYW5pZWwgR3VzdGFmc3NvbiA8ZGFuaWVsQHllc3FsLnNlPgpSZXZp ZXdlZC1ieTogS3lvdGFybyBIb3JpZ3VjaGkgPGhvcmlreW90YS5udHRAZ21haWwuY29tPgpEaXNj dXNzaW9uOiBodHRwczovL3d3dy5wb3N0Z3Jlc3FsLm9yZy9tZXNzYWdlLWlkL2ZsYXQvQ0FBS1J1 X1puZ3pxbkVPRGM3TG1TMU5IMDRLdDZZOWh1U2p6NXBwNyUyQkRYaHJqREEwZ3clNDBtYWlsLmdt YWlsLmNvbQotLS0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3ZhY3V1bS5jICAgICAgICAgfCAyOSAr KysrKysrKysrKysrKystLS0tLS0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFyYWxs ZWwuYyB8ICAzICsrLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMgICB8IDM0 ICsrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLQogc3JjL2luY2x1ZGUvY29tbWFuZHMvdmFjdXVt LmggICAgICAgICB8ICA1ICsrKysKIHNyYy9pbmNsdWRlL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5o ICAgfCAgMyAtLS0KIDUgZmlsZXMgY2hhbmdlZCwgNDAgaW5zZXJ0aW9ucygrKSwgMzQgZGVsZXRp b25zKC0pCgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtLmMgYi9zcmMv YmFja2VuZC9jb21tYW5kcy92YWN1dW0uYwppbmRleCA3ZmM1YzE5ZTM3Li5mMmJlNzRjZGI1IDEw MDY0NAotLS0gYS9zcmMvYmFja2VuZC9jb21tYW5kcy92YWN1dW0uYworKysgYi9zcmMvYmFja2Vu ZC9jb21tYW5kcy92YWN1dW0uYwpAQCAtNzIsNiArNzIsMTUgQEAgaW50CQkJdmFjdXVtX211bHRp eGFjdF9mcmVlemVfdGFibGVfYWdlOwogaW50CQkJdmFjdXVtX2ZhaWxzYWZlX2FnZTsKIGludAkJ CXZhY3V1bV9tdWx0aXhhY3RfZmFpbHNhZmVfYWdlOwogCisvKgorICogVmFyaWFibGVzIGZvciBj b3N0LWJhc2VkIHZhY3V1bSBkZWxheS4gVGhlIGRlZmF1bHRzIGRpZmZlciBiZXR3ZWVuCisgKiBh dXRvdmFjdXVtIGFuZCB2YWN1dW0uIFRoZXkgc2hvdWxkIGJlIHNldCB3aXRoIHRoZSBhcHByb3By aWF0ZSBHVUMgdmFsdWUgaW4KKyAqIHZhY3V1bSBjb2RlLiBUaGV5IGFyZSBpbml0aWFsaXplZCBo ZXJlIHRvIHRoZSBkZWZhdWx0cyBmb3IgY2xpZW50IGJhY2tlbmRzCisgKiBleGVjdXRpbmcgVkFD VVVNIG9yIEFOQUxZWkUuCisgKi8KK2RvdWJsZQkJdmFjdXVtX2Nvc3RfZGVsYXkgPSAwOworaW50 CQkJdmFjdXVtX2Nvc3RfbGltaXQgPSAyMDA7CisKIC8qCiAgKiBWYWN1dW1GYWlsc2FmZUFjdGl2 ZSBpcyBhIGRlZmluZWQgYXMgYSBnbG9iYWwgc28gdGhhdCB3ZSBjYW4gZGV0ZXJtaW5lCiAgKiB3 aGV0aGVyIG9yIG5vdCB0byByZS1lbmFibGUgY29zdC1iYXNlZCB2YWN1dW0gZGVsYXkgd2hlbiB2 YWN1dW1pbmcgYSB0YWJsZS4KQEAgLTUxNCw4ICs1MjMsOSBAQCB2YWN1dW0oTGlzdCAqcmVsYXRp b25zLCBWYWN1dW1QYXJhbXMgKnBhcmFtcywgQnVmZmVyQWNjZXNzU3RyYXRlZ3kgYnN0cmF0ZWd5 LAogCXsKIAkJTGlzdENlbGwgICAqY3VyOwogCisJCVZhY3V1bVVwZGF0ZUNvc3RzKCk7CiAJCWlu X3ZhY3V1bSA9IHRydWU7Ci0JCVZhY3V1bUNvc3RBY3RpdmUgPSAoVmFjdXVtQ29zdERlbGF5ID4g MCk7CisJCVZhY3V1bUNvc3RBY3RpdmUgPSAodmFjdXVtX2Nvc3RfZGVsYXkgPiAwKTsKIAkJVmFj dXVtQ29zdEJhbGFuY2UgPSAwOwogCQlWYWN1dW1QYWdlSGl0ID0gMDsKIAkJVmFjdXVtUGFnZU1p c3MgPSAwOwpAQCAtMjI0NCwxNCArMjI1NCwxNCBAQCB2YWN1dW1fZGVsYXlfcG9pbnQodm9pZCkK IAkgKi8KIAlpZiAoVmFjdXVtU2hhcmVkQ29zdEJhbGFuY2UgIT0gTlVMTCkKIAkJbXNlYyA9IGNv bXB1dGVfcGFyYWxsZWxfZGVsYXkoKTsKLQllbHNlIGlmIChWYWN1dW1Db3N0QmFsYW5jZSA+PSBW YWN1dW1Db3N0TGltaXQpCi0JCW1zZWMgPSBWYWN1dW1Db3N0RGVsYXkgKiBWYWN1dW1Db3N0QmFs YW5jZSAvIFZhY3V1bUNvc3RMaW1pdDsKKwllbHNlIGlmIChWYWN1dW1Db3N0QmFsYW5jZSA+PSB2 YWN1dW1fY29zdF9saW1pdCkKKwkJbXNlYyA9IHZhY3V1bV9jb3N0X2RlbGF5ICogVmFjdXVtQ29z dEJhbGFuY2UgLyB2YWN1dW1fY29zdF9saW1pdDsKIAogCS8qIE5hcCBpZiBhcHByb3ByaWF0ZSAq LwogCWlmIChtc2VjID4gMCkKIAl7Ci0JCWlmIChtc2VjID4gVmFjdXVtQ29zdERlbGF5ICogNCkK LQkJCW1zZWMgPSBWYWN1dW1Db3N0RGVsYXkgKiA0OworCQlpZiAobXNlYyA+IHZhY3V1bV9jb3N0 X2RlbGF5ICogNCkKKwkJCW1zZWMgPSB2YWN1dW1fY29zdF9kZWxheSAqIDQ7CiAKIAkJcGdzdGF0 X3JlcG9ydF93YWl0X3N0YXJ0KFdBSVRfRVZFTlRfVkFDVVVNX0RFTEFZKTsKIAkJcGdfdXNsZWVw KG1zZWMgKiAxMDAwKTsKQEAgLTIyNjgsOCArMjI3OCw3IEBAIHZhY3V1bV9kZWxheV9wb2ludCh2 b2lkKQogCiAJCVZhY3V1bUNvc3RCYWxhbmNlID0gMDsKIAotCQkvKiB1cGRhdGUgYmFsYW5jZSB2 YWx1ZXMgZm9yIHdvcmtlcnMgKi8KLQkJQXV0b1ZhY3V1bVVwZGF0ZURlbGF5KCk7CisJCVZhY3V1 bVVwZGF0ZUNvc3RzKCk7CiAKIAkJLyogTWlnaHQgaGF2ZSBnb3R0ZW4gYW4gaW50ZXJydXB0IHdo aWxlIHNsZWVwaW5nICovCiAJCUNIRUNLX0ZPUl9JTlRFUlJVUFRTKCk7CkBAIC0yMzE5LDExICsy MzI4LDExIEBAIGNvbXB1dGVfcGFyYWxsZWxfZGVsYXkodm9pZCkKIAkvKiBDb21wdXRlIHRoZSB0 b3RhbCBsb2NhbCBiYWxhbmNlIGZvciB0aGUgY3VycmVudCB3b3JrZXIgKi8KIAlWYWN1dW1Db3N0 QmFsYW5jZUxvY2FsICs9IFZhY3V1bUNvc3RCYWxhbmNlOwogCi0JaWYgKChzaGFyZWRfYmFsYW5j ZSA+PSBWYWN1dW1Db3N0TGltaXQpICYmCi0JCShWYWN1dW1Db3N0QmFsYW5jZUxvY2FsID4gMC41 ICogKChkb3VibGUpIFZhY3V1bUNvc3RMaW1pdCAvIG53b3JrZXJzKSkpCisJaWYgKChzaGFyZWRf YmFsYW5jZSA+PSB2YWN1dW1fY29zdF9saW1pdCkgJiYKKwkJKFZhY3V1bUNvc3RCYWxhbmNlTG9j YWwgPiAwLjUgKiAoKGRvdWJsZSkgdmFjdXVtX2Nvc3RfbGltaXQgLyBud29ya2VycykpKQogCXsK IAkJLyogQ29tcHV0ZSBzbGVlcCB0aW1lIGJhc2VkIG9uIHRoZSBsb2NhbCBjb3N0IGJhbGFuY2Ug Ki8KLQkJbXNlYyA9IFZhY3V1bUNvc3REZWxheSAqIFZhY3V1bUNvc3RCYWxhbmNlTG9jYWwgLyBW YWN1dW1Db3N0TGltaXQ7CisJCW1zZWMgPSB2YWN1dW1fY29zdF9kZWxheSAqIFZhY3V1bUNvc3RC YWxhbmNlTG9jYWwgLyB2YWN1dW1fY29zdF9saW1pdDsKIAkJcGdfYXRvbWljX3N1Yl9mZXRjaF91 MzIoVmFjdXVtU2hhcmVkQ29zdEJhbGFuY2UsIFZhY3V1bUNvc3RCYWxhbmNlTG9jYWwpOwogCQlW YWN1dW1Db3N0QmFsYW5jZUxvY2FsID0gMDsKIAl9CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9j b21tYW5kcy92YWN1dW1wYXJhbGxlbC5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvdmFjdXVtcGFy YWxsZWwuYwppbmRleCA1NjMxMTdhOGY2Li5jYzBhZmY3OTA0IDEwMDY0NAotLS0gYS9zcmMvYmFj a2VuZC9jb21tYW5kcy92YWN1dW1wYXJhbGxlbC5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRz L3ZhY3V1bXBhcmFsbGVsLmMKQEAgLTk5NSw3ICs5OTUsOCBAQCBwYXJhbGxlbF92YWN1dW1fbWFp bihkc21fc2VnbWVudCAqc2VnLCBzaG1fdG9jICp0b2MpCiAJCQkJCQkJCQkJCQkgZmFsc2UpOwog CiAJLyogU2V0IGNvc3QtYmFzZWQgdmFjdXVtIGRlbGF5ICovCi0JVmFjdXVtQ29zdEFjdGl2ZSA9 IChWYWN1dW1Db3N0RGVsYXkgPiAwKTsKKwlWYWN1dW1Db3N0QWN0aXZlID0gKHZhY3V1bV9jb3N0 X2RlbGF5ID4gMCk7CisJVmFjdXVtVXBkYXRlQ29zdHMoKTsKIAlWYWN1dW1Db3N0QmFsYW5jZSA9 IDA7CiAJVmFjdXVtUGFnZUhpdCA9IDA7CiAJVmFjdXVtUGFnZU1pc3MgPSAwOwpkaWZmIC0tZ2l0 IGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMgYi9zcmMvYmFja2VuZC9wb3N0 bWFzdGVyL2F1dG92YWN1dW0uYwppbmRleCBjMWU5MTFiMWIzLi4zNjQ0Yjg2NDQzIDEwMDY0NAot LS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYworKysgYi9zcmMvYmFja2Vu ZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYwpAQCAtMTc3MywxNiArMTc3MywyNCBAQCBGcmVlV29y a2VySW5mbyhpbnQgY29kZSwgRGF0dW0gYXJnKQogfQogCiAvKgotICogVXBkYXRlIHRoZSBjb3N0 LWJhc2VkIGRlbGF5IHBhcmFtZXRlcnMsIHNvIHRoYXQgbXVsdGlwbGUgd29ya2VycyBjb25zdW1l Ci0gKiBlYWNoIGEgZnJhY3Rpb24gb2YgdGhlIHRvdGFsIGF2YWlsYWJsZSBJL08uCisgKiBVcGRh dGUgdmFjdXVtIGNvc3QtYmFzZWQgZGVsYXktcmVsYXRlZCBwYXJhbWV0ZXJzIGZvciBhdXRvdmFj dXVtIHdvcmtlcnMgYW5kCisgKiBiYWNrZW5kcyBleGVjdXRpbmcgVkFDVVVNIG9yIEFOQUxZWkUg dXNpbmcgdGhlIHZhbHVlIG9mIHJlbGV2YW50IGd1Y3MgYW5kCisgKiBnbG9iYWwgc3RhdGUuIFRo aXMgbXVzdCBiZSBjYWxsZWQgZHVyaW5nIHNldHVwIGZvciB2YWN1dW0gYW5kIGFmdGVyIGV2ZXJ5 CisgKiBjb25maWcgcmVsb2FkIHRvIGVuc3VyZSB1cC10by1kYXRlIHZhbHVlcy4KICAqLwogdm9p ZAotQXV0b1ZhY3V1bVVwZGF0ZURlbGF5KHZvaWQpCitWYWN1dW1VcGRhdGVDb3N0cyh2b2lkKQog ewogCWlmIChNeVdvcmtlckluZm8pCiAJewotCQlWYWN1dW1Db3N0RGVsYXkgPSBNeVdvcmtlcklu Zm8tPndpX2Nvc3RfZGVsYXk7Ci0JCVZhY3V1bUNvc3RMaW1pdCA9IE15V29ya2VySW5mby0+d2lf Y29zdF9saW1pdDsKKwkJdmFjdXVtX2Nvc3RfZGVsYXkgPSBNeVdvcmtlckluZm8tPndpX2Nvc3Rf ZGVsYXk7CisJCXZhY3V1bV9jb3N0X2xpbWl0ID0gTXlXb3JrZXJJbmZvLT53aV9jb3N0X2xpbWl0 OworCX0KKwllbHNlCisJeworCQkvKiBNdXN0IGJlIGV4cGxpY2l0IFZBQ1VVTSBvciBBTkFMWVpF ICovCisJCXZhY3V1bV9jb3N0X2RlbGF5ID0gVmFjdXVtQ29zdERlbGF5OworCQl2YWN1dW1fY29z dF9saW1pdCA9IFZhY3V1bUNvc3RMaW1pdDsKIAl9CiB9CiAKQEAgLTIzMTEsOCArMjMxOSw2IEBA IGRvX2F1dG92YWN1dW0odm9pZCkKIAkJYXV0b3ZhY190YWJsZSAqdGFiOwogCQlib29sCQlpc3No YXJlZDsKIAkJYm9vbAkJc2tpcGl0OwotCQlkb3VibGUJCXN0ZFZhY3V1bUNvc3REZWxheTsKLQkJ aW50CQkJc3RkVmFjdXVtQ29zdExpbWl0OwogCQlkbGlzdF9pdGVyCWl0ZXI7CiAKIAkJQ0hFQ0tf Rk9SX0lOVEVSUlVQVFMoKTsKQEAgLTI0MTUsMTQgKzI0MjEsNiBAQCBkb19hdXRvdmFjdXVtKHZv aWQpCiAJCQljb250aW51ZTsKIAkJfQogCi0JCS8qCi0JCSAqIFJlbWVtYmVyIHRoZSBwcmV2YWls aW5nIHZhbHVlcyBvZiB0aGUgdmFjdXVtIGNvc3QgR1VDcy4gIFdlIGhhdmUgdG8KLQkJICogcmVz dG9yZSB0aGVzZSBhdCB0aGUgYm90dG9tIG9mIHRoZSBsb29wLCBlbHNlIHdlJ2xsIGNvbXB1dGUg d3JvbmcKLQkJICogdmFsdWVzIGluIHRoZSBuZXh0IGl0ZXJhdGlvbiBvZiBhdXRvdmFjX2JhbGFu Y2VfY29zdCgpLgotCQkgKi8KLQkJc3RkVmFjdXVtQ29zdERlbGF5ID0gVmFjdXVtQ29zdERlbGF5 OwotCQlzdGRWYWN1dW1Db3N0TGltaXQgPSBWYWN1dW1Db3N0TGltaXQ7Ci0KIAkJLyogTXVzdCBo b2xkIEF1dG92YWN1dW1Mb2NrIHdoaWxlIG11Y2tpbmcgd2l0aCBjb3N0IGJhbGFuY2UgaW5mbyAq LwogCQlMV0xvY2tBY3F1aXJlKEF1dG92YWN1dW1Mb2NrLCBMV19FWENMVVNJVkUpOwogCkBAIC0y NDM2LDcgKzI0MzQsNyBAQCBkb19hdXRvdmFjdXVtKHZvaWQpCiAJCWF1dG92YWNfYmFsYW5jZV9j b3N0KCk7CiAKIAkJLyogc2V0IHRoZSBhY3RpdmUgY29zdCBwYXJhbWV0ZXJzIGZyb20gdGhlIHJl c3VsdCBvZiB0aGF0ICovCi0JCUF1dG9WYWN1dW1VcGRhdGVEZWxheSgpOworCQlWYWN1dW1VcGRh dGVDb3N0cygpOwogCiAJCS8qIGRvbmUgKi8KIAkJTFdMb2NrUmVsZWFzZShBdXRvdmFjdXVtTG9j ayk7CkBAIC0yNTMzLDEwICsyNTMxLDYgQEAgZGVsZXRlZDoKIAkJTXlXb3JrZXJJbmZvLT53aV90 YWJsZW9pZCA9IEludmFsaWRPaWQ7CiAJCU15V29ya2VySW5mby0+d2lfc2hhcmVkcmVsID0gZmFs c2U7CiAJCUxXTG9ja1JlbGVhc2UoQXV0b3ZhY3V1bVNjaGVkdWxlTG9jayk7Ci0KLQkJLyogcmVz dG9yZSB2YWN1dW0gY29zdCBHVUNzIGZvciB0aGUgbmV4dCBpdGVyYXRpb24gKi8KLQkJVmFjdXVt Q29zdERlbGF5ID0gc3RkVmFjdXVtQ29zdERlbGF5OwotCQlWYWN1dW1Db3N0TGltaXQgPSBzdGRW YWN1dW1Db3N0TGltaXQ7CiAJfQogCiAJLyoKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1h bmRzL3ZhY3V1bS5oIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvdmFjdXVtLmgKaW5kZXggMTIyM2Qx NWUwZC4uNTBjYWYxMzE1ZCAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY29tbWFuZHMvdmFjdXVt LmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvdmFjdXVtLmgKQEAgLTMwNyw2ICszMDcsOCBA QCBleHRlcm4gUEdETExJTVBPUlQgcGdfYXRvbWljX3VpbnQzMiAqVmFjdXVtQWN0aXZlTldvcmtl cnM7CiBleHRlcm4gUEdETExJTVBPUlQgaW50IFZhY3V1bUNvc3RCYWxhbmNlTG9jYWw7CiAKIGV4 dGVybiBQR0RMTElNUE9SVCBib29sIFZhY3V1bUZhaWxzYWZlQWN0aXZlOworZXh0ZXJuIFBHRExM SU1QT1JUIGRvdWJsZSB2YWN1dW1fY29zdF9kZWxheTsKK2V4dGVybiBQR0RMTElNUE9SVCBpbnQg dmFjdXVtX2Nvc3RfbGltaXQ7CiAKIC8qIGluIGNvbW1hbmRzL3ZhY3V1bS5jICovCiBleHRlcm4g dm9pZCBFeGVjVmFjdXVtKFBhcnNlU3RhdGUgKnBzdGF0ZSwgVmFjdXVtU3RtdCAqdmFjc3RtdCwg Ym9vbCBpc1RvcExldmVsKTsKQEAgLTM0Nyw2ICszNDksOSBAQCBleHRlcm4gSW5kZXhCdWxrRGVs ZXRlUmVzdWx0ICp2YWNfY2xlYW51cF9vbmVfaW5kZXgoSW5kZXhWYWN1dW1JbmZvICppdmluZm8s CiAJCQkJCQkJCQkJCQkJSW5kZXhCdWxrRGVsZXRlUmVzdWx0ICppc3RhdCk7CiBleHRlcm4gU2l6 ZSB2YWNfbWF4X2l0ZW1zX3RvX2FsbG9jX3NpemUoaW50IG1heF9pdGVtcyk7CiAKKy8qIEluIHBv c3RtYXN0ZXIvYXV0b3ZhY3V1bS5jICovCitleHRlcm4gdm9pZCBWYWN1dW1VcGRhdGVDb3N0cyh2 b2lkKTsKKwogLyogaW4gY29tbWFuZHMvdmFjdXVtcGFyYWxsZWwuYyAqLwogZXh0ZXJuIFBhcmFs bGVsVmFjdXVtU3RhdGUgKnBhcmFsbGVsX3ZhY3V1bV9pbml0KFJlbGF0aW9uIHJlbCwgUmVsYXRp b24gKmluZHJlbHMsCiAJCQkJCQkJCQkJCQkgaW50IG5pbmRleGVzLCBpbnQgbnJlcXVlc3RlZF93 b3JrZXJzLApkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmgg Yi9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2F1dG92YWN1dW0uaAppbmRleCBjMTQwMzcxYjUxLi42 NWFmZDFlYTFlIDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2F1dG92YWN1dW0u aAorKysgYi9zcmMvaW5jbHVkZS9wb3N0bWFzdGVyL2F1dG92YWN1dW0uaApAQCAtNjMsOSArNjMs NiBAQCBleHRlcm4gaW50CVN0YXJ0QXV0b1ZhY1dvcmtlcih2b2lkKTsKIC8qIGNhbGxlZCBmcm9t IHBvc3RtYXN0ZXIgd2hlbiBhIHdvcmtlciBjb3VsZCBub3QgYmUgZm9ya2VkICovCiBleHRlcm4g dm9pZCBBdXRvVmFjV29ya2VyRmFpbGVkKHZvaWQpOwogCi0vKiBhdXRvdmFjdXVtIGNvc3QtZGVs YXkgYmFsYW5jZXIgKi8KLWV4dGVybiB2b2lkIEF1dG9WYWN1dW1VcGRhdGVEZWxheSh2b2lkKTsK LQogI2lmZGVmIEVYRUNfQkFDS0VORAogZXh0ZXJuIHZvaWQgQXV0b1ZhY0xhdW5jaGVyTWFpbihp bnQgYXJnYywgY2hhciAqYXJndltdKSBwZ19hdHRyaWJ1dGVfbm9yZXR1cm4oKTsKIGV4dGVybiB2 b2lkIEF1dG9WYWNXb3JrZXJNYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pIHBnX2F0dHJpYnV0 ZV9ub3JldHVybigpOwotLSAKMi4zNy4yCgo= --000000000000a48b7005f8b23428--