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 1w9573-001Aim-0S for pgsql-hackers@arkaria.postgresql.org; Sat, 04 Apr 2026 17:48:49 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w9570-00HU7t-12 for pgsql-hackers@arkaria.postgresql.org; Sat, 04 Apr 2026 17:48:46 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w956z-00HU7k-1u for pgsql-hackers@lists.postgresql.org; Sat, 04 Apr 2026 17:48:46 +0000 Received: from mail-ed1-x534.google.com ([2a00:1450:4864:20::534]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w956x-00000000YUe-2oZD for pgsql-hackers@postgresql.org; Sat, 04 Apr 2026 17:48:44 +0000 Received: by mail-ed1-x534.google.com with SMTP id 4fb4d7f45d1cf-66eb95b5d6dso223478a12.3 for ; Sat, 04 Apr 2026 10:48:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1775324921; cv=none; d=google.com; s=arc-20240605; b=g/5xwdZRc6ydlw+POETZ4lAa4LVP4bl69faPX66yRxneawUIHIGbwnRNUoFPK7RVHP 48FqT8BN6Hm5ZJQQDOAEGyomM+uL0O6oZ+fjntsY7PeEU9aAnHR6RrgUNkr1TzkZGN8R qvzOnb4OkWUab5g7H8/bl5XynRZL1IZcaU8nJqu84oVRj7YHQrj1yKJ7JEmOZx1O7hp/ tnfQcA8IeinAlS+bjDVixsLe25IOPTBcwnC8IFU6Q803etcu6kcf7hRU/pOPNlJx5Iqc RUSk5Nq33mQGYWs5G3OmWopkbqAoJt44azCSEZa/mqnkBemI1XYCCYZ4EHGfCnQGWNrJ x3yw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=Wji9v1vXHR4dyP3f4IajDvMviJyRTqtRXC6XGDyB7L0=; fh=ROJW0Gk70TPNtOu13rgv+J0FBHal1Sso+VdLv3iJOb8=; b=j9irYwHY1vK8ioaJCRczPrDwYQNFefHAeZw5yqfuFAoxAUOSsEamgMDSzpEzyrv6mU x2XelRypKz3ViqmOeZppHj1IoJSZH74eFi1oTCNG/pv/7CD5FOedOdX0gQ5zqjmB0QBA XXkROpH7G+SQFvfY4fS9vNcbyN8wyGW8BtpJa758bUHwH0d8OmhRDr17Tr7dKn62M4ZQ +Jc5OWvtl6NoUhnxe6LUQ1ua1/k3yC3RnrGr0EHlufF/RBxzWR5FaWYtJqf1Lve92I97 NVMFYbkBMB4Qv1CDlSmLdfBJDVuQvRv7HEoRXBhlQYfr0Kdi7uHeN87QVHMCEfFxhI0J re6Q==; darn=postgresql.org ARC-Authentication-Results: i=1; mx.google.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1775324921; x=1775929721; darn=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=Wji9v1vXHR4dyP3f4IajDvMviJyRTqtRXC6XGDyB7L0=; b=LyCrSl62q/ILLj6lWYL95hHpytk7cQBRAJiGeXKs9A/oUPP8g6Jt1+eW9INWQiopRZ qh7DyYA9HwTkrYwQfdzx0wwpoR0+PyvzrAcl+gfZRYf/QASEYyMI+h9To70yGHNkXVpT Dx5FweYiLrQM+uFhiARaLiJ5FKiCmjHdN+LZrKmIKAhTj1+qgXvLd8zremXJfCYUnQtY CyGnASaZbdFHX9C9j/aMeJzpwYF3Rhunu2ITLm5czB1CXF2+H1T5zNCOikOQq47qySYZ +KlGkt0h5M0/enzXt5LLXMdpQ3HlVzppHFgAy5x6wN/vFOZVNC9sPFg3SaUW07JUXyk0 Bu0g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1775324921; x=1775929721; 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=Wji9v1vXHR4dyP3f4IajDvMviJyRTqtRXC6XGDyB7L0=; b=GSayrrg0vwmozrzcEqh+naUjoEZqOasP1lxBgtoCpZlvNL7VW4KyIWYd/VE4GUJqQ5 L7Ch8TGOKFido+FVCa+LpPZ2Obtz0/thpm88ohuElAUjG6cen7/Lbg6RY3MZ2z0hVWts ZBKVobA3A9QkMUy8ZnNiDLGj93b4HH0BlhVPmWmrndr1knpXAefIxZf9Myiug13uDaKF xBgzHdmP/jp7EtfeS3FmqDtpJqGbjSU+UDJ9cTP2Pt8atvBtLwaoFm9rzmA5YVEVG8zY YNek1WpTMgiQV0s0hgN1+sQ600PXohnjZMAGTbg2smO6/yJnM+gfb+lMLuWeCtzqLkJJ dsFg== X-Forwarded-Encrypted: i=1; AJvYcCV8miOFUs8jVpKmsZD3yyNDXB5DcUw2DhqIwAjqPw8shFKrpYe5vnzax5Pyf9AcB9/gcaLBzMnZgNidWABs@postgresql.org X-Gm-Message-State: AOJu0YzaMMS2f/uwM6Zb1+VwaXthvvpabXJsnDEyyPYT9EGnetM9vqTu ZmTmid7idH/9lNMtvkq55ClHTAyClWKjFewMX4eH9iSx8ydLB3TBACMP6HbLhnKU06iEAGQbKaS 415R3TOPo2t2q1wx4qkVENCylWmXBkTI= X-Gm-Gg: AeBDietb2HEPJJ5wO9TBsv7fqEWfBS5WymK8crJybRpt/sWHNpfeqdVQvs1HRSO85VZ ZCR9Moo21aNU+pppmamAVxaUlwBwW3QQWBOsDnlIjYwFd6OkY8npO290fZjtanswKktT+ogcf1w 9144G8Np9f/ctNQRHGcdz+0yY0VFBXRZgVTsplYKEkmEAH97JWWJZn6HakSuP+201XxOkeslOEv orUlfEXqpL+1uFZM+MQdP7llRThncN9OabLitfwRzhdi0+OjI5p7xu6tSu//DOYrXnLLR2o6ugw z35z1A== X-Received: by 2002:a05:6402:5046:b0:66e:45a8:7de5 with SMTP id 4fb4d7f45d1cf-66e45a88065mr2934327a12.5.1775324920630; Sat, 04 Apr 2026 10:48:40 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Sami Imseih Date: Sat, 4 Apr 2026 12:48:28 -0500 X-Gm-Features: AQROBzBN-LE_s-S2OFBBm1JaYut3hD7rbTROmuojvvv6SnYTg6RUjXBl25yP7ck Message-ID: Subject: Re: Add pg_stat_autovacuum_priority To: Nathan Bossart Cc: Bharath Rupireddy , Robert Treat , satyanarlapuram@gmail.com, pgsql-hackers Content-Type: multipart/mixed; boundary="000000000000418a02064ea60bf2" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000418a02064ea60bf2 Content-Type: text/plain; charset="UTF-8" > > eligibility: is av enabled and is the table meeting thresholds > > score: The priority of how the eligible tables will be processed. > > > > So, while this could be explained in docs, I think it's better we report > > these fields. > > I understand your position, but I still worry about potential confusion if > when dovacuum and needs_vacuum differ. And I don't know how much we really > ought to be tailoring this stuff to clusters where autovacuum is disabled > or where the scores are being adjusted. Also, I think we ought to go into > more detail in the documentation, anyway. After looking at it a bit more, I don't think we can avoid putting the needs_analyze and needs_vacuum fields, because without them there will still be a gap in understanding of if a table is eligible for autovacuum. A score on its own will not draw the full picture. For example, if I tune the _weight settings, I want to know if this table now becomes a candidate for vacuum/analyze, irrespective if autovacuum will actually process it due to some bad configuration. I can see someone seaching this view by just the bool fields to see the eligibile tables also without caring about the score. > If we did report booleans, I would probably argue for just reporting > dovacuum and doanalyze and calling out the criteria for why they may be > false even when it looks like the table needs processing. Yes, we only require a needs_analyze and needs_vacuum. The latter can be set to true due to thresholds or wraparound. But, I don't think we should rely on the dovacuum or doanalyze, instead we can just have a flag in AutoVacuumScores->needs and track what is needed. This will separate the autovacuum processing from the reporting. Here is what I am thinking we should do. v11-0001 is same as v10-0001 v11-0002 introduces the additional bit field for reporting. This sets the need for vacuum regardless of av_enabled. v11-0003 the view with slightly more detailed documentation. -- Sami --000000000000418a02064ea60bf2 Content-Type: application/octet-stream; name="v11-0002-Add-vacuum-need-flag-to-AutoVacuumScores.patch" Content-Disposition: attachment; filename="v11-0002-Add-vacuum-need-flag-to-AutoVacuumScores.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnkmjyx91 RnJvbSA5YjE0YzM3MTM2ZmRkMzE4M2U2YTIxYTlhMDJmODJjNzBjNGIxNjAwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTYW1pIEltc2VpaCA8c2FtaW1zZWloQGdtYWlsLmNvbT4KRGF0 ZTogU2F0LCA0IEFwciAyMDI2IDE2OjQ2OjI0ICswMDAwClN1YmplY3Q6IFtQQVRDSCB2MTEgMi8z XSBBZGQgdmFjdXVtIG5lZWQgZmxhZyB0byBBdXRvVmFjdXVtU2NvcmVzCgotLS0KIHNyYy9iYWNr ZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jIHwgMjYgKysrKysrKysrKysrKysrKysrKysrLS0t LS0KIDEgZmlsZSBjaGFuZ2VkLCAyMSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQoKZGlm ZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jIGIvc3JjL2JhY2tl bmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKaW5kZXggMWJlMWJhOGEyNWYuLjFiY2Q0YWM0YTE3 IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYworKysgYi9z cmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYwpAQCAtMzI5LDggKzMyOSwxMyBAQCB0 eXBlZGVmIHN0cnVjdAogCWRvdWJsZQkJdmFjOwkJCS8qIHZhY3V1bSBjb21wb25lbnQgKi8KIAlk b3VibGUJCXZhY19pbnM7CQkvKiB2YWN1dW0gaW5zZXJ0IGNvbXBvbmVudCAqLwogCWRvdWJsZQkJ YW5sOwkJCS8qIGFuYWx5emUgY29tcG9uZW50ICovCisJaW50CQkJbmVlZHM7CQkJLyogV2hhdCB0 eXBlIG9mIHZhY3V1bWluZyBpcyBuZWVkZWQgKi8KIH0gQXV0b1ZhY3V1bVNjb3JlczsKIAorLyog VGhlIGZsYWdzIGZvciBBdXRvVmFjdXVtU2NvcmVzLT5uZWVkcyAqLworI2RlZmluZSBORUVEU19W QUNVVU0gMHgxCisjZGVmaW5lIE5FRURTX0FOQUxZWkUgMHgyCisKIC8qCiAgKiBUaGlzIHN0cnVj dCBpcyB1c2VkIHRvIHRyYWNrIGFuZCBzb3J0IHRoZSBsaXN0IG9mIHRhYmxlcyB0byBwcm9jZXNz LgogICovCkBAIC0zMDUxLDYgKzMwNTYsOCBAQCByZWxhdGlvbl9uZWVkc192YWNhbmFseXplKE9p ZCByZWxpZCwKIAlQZ1N0YXRfU3RhdFRhYkVudHJ5ICp0YWJlbnRyeTsKIAlib29sCQlmb3JjZV92 YWN1dW07CiAJYm9vbAkJYXZfZW5hYmxlZDsKKwlib29sCQluZWVkc192YWN1dW07CisJYm9vbAkJ bmVlZHNfdmFjdXVtX2luczsKIAogCS8qIGNvbnN0YW50cyBmcm9tIHJlbG9wdGlvbnMgb3IgR1VD IHZhcmlhYmxlcyAqLwogCWludAkJCXZhY19iYXNlX3RocmVzaCwKQEAgLTMyNTgsMTUgKzMyNjUs MjAgQEAgcmVsYXRpb25fbmVlZHNfdmFjYW5hbHl6ZShPaWQgcmVsaWQsCiAJc2NvcmVzLT52YWMg PSAoZG91YmxlKSB2YWN0dXBsZXMgLyBNYXgodmFjdGhyZXNoLCAxKTsKIAlzY29yZXMtPnZhYyAq PSBhdXRvdmFjdXVtX3ZhY3V1bV9zY29yZV93ZWlnaHQ7CiAJc2NvcmVzLT5tYXggPSBNYXgoc2Nv cmVzLT5tYXgsIHNjb3Jlcy0+dmFjKTsKLQlpZiAoYXZfZW5hYmxlZCAmJiB2YWN0dXBsZXMgPiB2 YWN0aHJlc2gpCi0JCSpkb3ZhY3V1bSA9IHRydWU7CisJbmVlZHNfdmFjdXVtID0gKHZhY3R1cGxl cyA+IHZhY3RocmVzaCk7CiAKIAlpZiAodmFjX2luc19iYXNlX3RocmVzaCA+PSAwKQogCXsKIAkJ c2NvcmVzLT52YWNfaW5zID0gKGRvdWJsZSkgaW5zdHVwbGVzIC8gTWF4KHZhY2luc3RocmVzaCwg MSk7CiAJCXNjb3Jlcy0+dmFjX2lucyAqPSBhdXRvdmFjdXVtX3ZhY3V1bV9pbnNlcnRfc2NvcmVf d2VpZ2h0OwogCQlzY29yZXMtPm1heCA9IE1heChzY29yZXMtPm1heCwgc2NvcmVzLT52YWNfaW5z KTsKLQkJaWYgKGF2X2VuYWJsZWQgJiYgaW5zdHVwbGVzID4gdmFjaW5zdGhyZXNoKQorCX0KKwlu ZWVkc192YWN1dW1faW5zID0gKHZhY19pbnNfYmFzZV90aHJlc2ggPj0gMCAmJiBpbnN0dXBsZXMg PiB2YWNpbnN0aHJlc2gpOworCisJaWYgKG5lZWRzX3ZhY3V1bSB8fCBuZWVkc192YWN1dW1faW5z KQorCXsKKwkJc2NvcmVzLT5uZWVkcyB8PSBORUVEU19WQUNVVU07CisJCWlmIChhdl9lbmFibGVk KQogCQkJKmRvdmFjdXVtID0gdHJ1ZTsKIAl9CiAKQEAgLTMyODAsOCArMzI5MiwxMiBAQCByZWxh dGlvbl9uZWVkc192YWNhbmFseXplKE9pZCByZWxpZCwKIAkJc2NvcmVzLT5hbmwgPSAoZG91Ymxl KSBhbmx0dXBsZXMgLyBNYXgoYW5sdGhyZXNoLCAxKTsKIAkJc2NvcmVzLT5hbmwgKj0gYXV0b3Zh Y3V1bV9hbmFseXplX3Njb3JlX3dlaWdodDsKIAkJc2NvcmVzLT5tYXggPSBNYXgoc2NvcmVzLT5t YXgsIHNjb3Jlcy0+YW5sKTsKLQkJaWYgKGF2X2VuYWJsZWQgJiYgYW5sdHVwbGVzID4gYW5sdGhy ZXNoKQotCQkJKmRvYW5hbHl6ZSA9IHRydWU7CisJCWlmIChhbmx0dXBsZXMgPiBhbmx0aHJlc2gp CisJCXsKKwkJCXNjb3Jlcy0+bmVlZHMgfD0gTkVFRFNfQU5BTFlaRTsKKwkJCWlmIChhdl9lbmFi bGVkKQorCQkJCSpkb2FuYWx5emUgPSB0cnVlOworCQl9CiAKIAkJLyoKIAkJICogRm9yIGhpc3Rv cmljYWwgcmVhc29ucywgd2UgYW5hbHl6ZSBldmVuIHdoZW4gYXV0b3ZhY3V1bSBpcyBkaXNhYmxl ZAotLSAKMi41MC4xCgo= --000000000000418a02064ea60bf2 Content-Type: application/octet-stream; name="v11-0003-add-pg_stat_autovacuum_scores-system-view.patch" Content-Disposition: attachment; filename="v11-0003-add-pg_stat_autovacuum_scores-system-view.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnkmjyww0 RnJvbSA4ZjQ1NDRjMjQwZjVkN2QyYzU5MjAxY2Q2OTY4NWQ2Mjc4MTM4OTA1IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOYXRoYW4gQm9zc2FydCA8bmF0aGFuQHBvc3RncmVzcWwub3Jn PgpEYXRlOiBUaHUsIDIgQXByIDIwMjYgMTU6NDc6MTkgLTA1MDAKU3ViamVjdDogW1BBVENIIHYx MSAzLzNdIGFkZCBwZ19zdGF0X2F1dG92YWN1dW1fc2NvcmVzIHN5c3RlbSB2aWV3CgotLS0KIGRv Yy9zcmMvc2dtbC9tYWludGVuYW5jZS5zZ21sICAgICAgICB8ICAgNyArKwogZG9jL3NyYy9zZ21s L21vbml0b3Jpbmcuc2dtbCAgICAgICAgIHwgMTUxICsrKysrKysrKysrKysrKysrKysrKysrKysr Kwogc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsIHwgIDE3ICsrKwogc3JjL2Jh Y2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMgIHwgIDcyICsrKysrKysrKysrKysKIHNyYy9p bmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQgICAgICB8ICAgNyArKwogc3JjL3Rlc3QvcmVncmVz cy9leHBlY3RlZC9ydWxlcy5vdXQgIHwgIDE0ICsrKwogNiBmaWxlcyBjaGFuZ2VkLCAyNjggaW5z ZXJ0aW9ucygrKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9tYWludGVuYW5jZS5zZ21sIGIv ZG9jL3NyYy9zZ21sL21haW50ZW5hbmNlLnNnbWwKaW5kZXggMGQyYTI4MjA3ZWQuLmJmNGI2ZjRj MzA5IDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvbWFpbnRlbmFuY2Uuc2dtbAorKysgYi9kb2Mv c3JjL3NnbWwvbWFpbnRlbmFuY2Uuc2dtbApAQCAtMTE2NCw2ICsxMTY0LDEzIEBAIGFuYWx5emUg dGhyZXNob2xkID0gYW5hbHl6ZSBiYXNlIHRocmVzaG9sZCArIGFuYWx5emUgc2NhbGUgZmFjdG9y ICogbnVtYmVyIG9mIHR1CiAgICAgIDxsaXRlcmFsPjIuMDwvbGl0ZXJhbD4gZWZmZWN0aXZlbHkg ZG91YmxlcyB0aGUKICAgICAgPGVtcGhhc2lzPmFuYWx5emU8L2VtcGhhc2lzPiBjb21wb25lbnQg c2NvcmUuCiAgICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgIFRoZSA8bGluayBsaW5rZW5k PSJtb25pdG9yaW5nLXBnLXN0YXQtYXV0b3ZhY3V1bS1zY29yZXMtdmlldyI+CisgICAgIDxzdHJ1 Y3RuYW1lPnBnX3N0YXRfYXV0b3ZhY3V1bV9zY29yZXM8L3N0cnVjdG5hbWU+PC9saW5rPgorICAg ICB2aWV3IHNob3dzIHdoZXRoZXIgdmFjdXVtIG9yIGFuYWx5emUgdGhyZXNob2xkcyBoYXZlIGJl ZW4gZXhjZWVkZWQKKyAgICAgYW5kIHRoZSBjdXJyZW50IGF1dG92YWN1dW0gc2NvcmVzIGZvciBh bGwgdGFibGVzIGluIHRoZSBjdXJyZW50IGRhdGFiYXNlLgorICAgIDwvcGFyYT4KICAgIDwvc2Vj dDM+CiAgIDwvc2VjdDI+CiAgPC9zZWN0MT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9tb25p dG9yaW5nLnNnbWwgYi9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCmluZGV4IDMxMjM3NGRh NWUwLi5iZDJjNGQ0MzczMSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dt bAorKysgYi9kb2Mvc3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCkBAIC01OTYsNiArNTk2LDE2IEBA IHBvc3RncmVzICAgMjcwOTMgIDAuMCAgMC4wICAzMDA5NiAgMjc1MiA/ICAgICAgICBTcyAgIDEx OjM0ICAgMDowMCBwb3N0Z3Jlczogc2VyCiAgICAgICB1c2VyIHRhYmxlcyBhcmUgc2hvd24uPC9l bnRyeT4KICAgICAgPC9yb3c+CiAKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeT48c3RydWN0bmFt ZT5wZ19zdGF0X2F1dG92YWN1dW1fc2NvcmVzPC9zdHJ1Y3RuYW1lPjxpbmRleHRlcm0+PHByaW1h cnk+cGdfc3RhdF9hdXRvdmFjdXVtX3Njb3JlczwvcHJpbWFyeT48L2luZGV4dGVybT48L2VudHJ5 PgorICAgICAgPGVudHJ5PgorICAgICAgIE9uZSByb3cgZm9yIGVhY2ggdGFibGUgaW4gdGhlIGN1 cnJlbnQgZGF0YWJhc2UsIHNob3dpbmcgdGhlIGN1cnJlbnQKKyAgICAgICBhdXRvdmFjdXVtIHNj b3JlcyBmb3IgdGhhdCBzcGVjaWZpYyB0YWJsZS4gIFNlZQorICAgICAgIDxsaW5rIGxpbmtlbmQ9 Im1vbml0b3JpbmctcGctc3RhdC1hdXRvdmFjdXVtLXNjb3Jlcy12aWV3Ij4KKyAgICAgICA8c3Ry dWN0bmFtZT5wZ19zdGF0X2F1dG92YWN1dW1fc2NvcmVzPC9zdHJ1Y3RuYW1lPjwvbGluaz4gZm9y IGRldGFpbHMuCisgICAgICA8L2VudHJ5PgorICAgICA8L3Jvdz4KKwogICAgICA8cm93PgogICAg ICAgPGVudHJ5PjxzdHJ1Y3RuYW1lPnBnX3N0YXRfYWxsX2luZGV4ZXM8L3N0cnVjdG5hbWU+PGlu ZGV4dGVybT48cHJpbWFyeT5wZ19zdGF0X2FsbF9pbmRleGVzPC9wcmltYXJ5PjwvaW5kZXh0ZXJt PjwvZW50cnk+CiAgICAgICA8ZW50cnk+CkBAIC00NTAyLDYgKzQ1MTIsMTQ3IEBAIGRlc2NyaXB0 aW9uIHwgV2FpdGluZyBmb3IgYSBuZXdseSBpbml0aWFsaXplZCBXQUwgZmlsZSB0byByZWFjaCBk dXJhYmxlIHN0b3JhZ2UKIAogIDwvc2VjdDI+CiAKKyA8c2VjdDIgaWQ9Im1vbml0b3JpbmctcGct c3RhdC1hdXRvdmFjdXVtLXNjb3Jlcy12aWV3Ij4KKyAgPHRpdGxlPjxzdHJ1Y3RuYW1lPnBnX3N0 YXRfYXV0b3ZhY3V1bV9zY29yZXM8L3N0cnVjdG5hbWU+PC90aXRsZT4KKworICA8aW5kZXh0ZXJt PgorICAgPHByaW1hcnk+cGdfc3RhdF9hdXRvdmFjdXVtX3Njb3JlczwvcHJpbWFyeT4KKyAgPC9p bmRleHRlcm0+CisKKyAgPHBhcmE+CisgICBUaGUgPHN0cnVjdG5hbWU+cGdfc3RhdF9hdXRvdmFj dXVtX3Njb3Jlczwvc3RydWN0bmFtZT4gdmlldyB3aWxsIGNvbnRhaW4gb25lCisgICByb3cgZm9y IGVhY2ggdGFibGUgaW4gdGhlIGN1cnJlbnQgZGF0YWJhc2UgKGluY2x1ZGluZyBUT0FTVCB0YWJs ZXMpLCBzaG93aW5nCisgICB3aGV0aGVyIHZhY3V1bSBvciBhbmFseXplIHRocmVzaG9sZHMgaGF2 ZSBiZWVuIGV4Y2VlZGVkIGFuZCB0aGUgY3VycmVudAorICAgYXV0b3ZhY3V1bSBzY29yZXMgZm9y IHRoYXQgc3BlY2lmaWMgdGFibGUuICBUYWJsZXMgd2l0aG91dCBhY2Nlc3MKKyAgIHN0YXRpc3Rp Y3Mgd2lsbCBub3QgcmVwb3J0IGEgc2NvcmUsIGV4Y2VwdCBmb3IgYSB3cmFwYXJvdW5kIHNjb3Jl LgorICAgU2VlIDx4cmVmIGxpbmtlbmQ9ImF1dG92YWN1dW0tcHJpb3JpdHkiLz4gZm9yIG1vcmUg aW5mb3JtYXRpb24uCisgIDwvcGFyYT4KKworICA8dGFibGUgaWQ9InBnLXN0YXQtYXV0b3ZhY3V1 bS1zY29yZXMtdmlldyIgeHJlZmxhYmVsPSJwZ19zdGF0X2F1dG92YWN1dW1fc2NvcmVzIj4KKyAg IDx0aXRsZT48c3RydWN0bmFtZT5wZ19zdGF0X2F1dG92YWN1dW1fc2NvcmVzPC9zdHJ1Y3RuYW1l PiBWaWV3PC90aXRsZT4KKyAgIDx0Z3JvdXAgY29scz0iMSI+CisgICAgPHRoZWFkPgorICAgICA8 cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9 ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICBDb2x1bW4gVHlwZQorICAgICAgPC9wYXJhPgor ICAgICAgPHBhcmE+CisgICAgICAgRGVzY3JpcHRpb24KKyAgICAgIDwvcGFyYT48L2VudHJ5Pgor ICAgICA8L3Jvdz4KKyAgICA8L3RoZWFkPgorCisgICAgPHRib2R5PgorICAgICA8cm93PgorICAg ICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9k ZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+cmVsaWQ8L3N0cnVjdGZpZWxkPiA8dHlw ZT5vaWQ8L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBPaWQgb2Yg dGhlIHRhYmxlLgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxy b3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0i Y29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5zY2hlbWFuYW1lPC9zdHJ1 Y3RmaWVsZD4gPHR5cGU+bmFtZTwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgor ICAgICAgIE5hbWUgb2YgdGhlIHNjaGVtYSB0aGF0IHRoZSB0YWJsZSBpcyBpbi4KKyAgICAgIDwv cGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJv bGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4K KyAgICAgICA8c3RydWN0ZmllbGQ+cmVsbmFtZTwvc3RydWN0ZmllbGQ+IDx0eXBlPm5hbWU8L3R5 cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBOYW1lIG9mIHRoZSB0YWJs ZS4KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAg ICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9k ZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+bmVlZHNfdmFjdXVtPC9zdHJ1Y3RmaWVs ZD4gPHR5cGU+Ym9vbGVhbjwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAg ICAgIFRydWUgaWYgdGhlIHRhYmxlIG5lZWRzIHRvIGJlIHZhY3V1bWVkLCBiYXNlZCBvbiB3aGV0 aGVyIHRoZSB2YWN1dW0KKyAgICAgICB0aHJlc2hvbGQgaGFzIGJlZW4gZXhjZWVkZWQgb3IgdGhl IHRhYmxlIGlzIGF0IHJpc2sgb2Ygd3JhcGFyb3VuZC4KKyAgICAgICBUaGlzIGRvZXMgbm90IGlt cGx5IHRoYXQgYXV0b3ZhY3V1bSB3aWxsIGFjdHVhbGx5IHByb2Nlc3MgdGhlIHRhYmxlLAorICAg ICAgIGUuZy4sIGlmIGF1dG92YWN1dW0gaXMgZGlzYWJsZWQgZm9yIHRoZSB0YWJsZS4KKyAgICAg IDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5 IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9u Ij4KKyAgICAgICA8c3RydWN0ZmllbGQ+bmVlZHNfYW5hbHl6ZTwvc3RydWN0ZmllbGQ+IDx0eXBl PmJvb2xlYW48L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBUcnVl IGlmIHRoZSB0YWJsZSBuZWVkcyB0byBiZSBhbmFseXplZCwgYmFzZWQgb24gd2hldGhlciB0aGUg YW5hbHl6ZQorICAgICAgIHRocmVzaG9sZCBoYXMgYmVlbiBleGNlZWRlZC4KKyAgICAgICBUaGlz IGRvZXMgbm90IGltcGx5IHRoYXQgYXV0b3ZhY3V1bSB3aWxsIGFjdHVhbGx5IHByb2Nlc3MgdGhl IHRhYmxlLAorICAgICAgIGUuZy4sIGlmIGF1dG92YWN1dW0gaXMgZGlzYWJsZWQgZm9yIHRoZSB0 YWJsZS4KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93Pgor ICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVt bl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+c2NvcmU8L3N0cnVjdGZpZWxkPiA8 dHlwZT5kb3VibGUgcHJlY2lzaW9uPC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+ CisgICAgICAgTWF4aW11bSB2YWx1ZSBvZiBhbGwgY29tcG9uZW50IHNjb3Jlcy4gIFRoaXMgaXMg dGhlIHZhbHVlIHRoYXQKKyAgICAgICBhdXRvdmFjdXVtIHVzZXMgdG8gc29ydCB0aGUgbGlzdCBv ZiB0YWJsZXMgdG8gcHJvY2Vzcy4KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4K KworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxw YXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+eGlkX3Nj b3JlPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+ZG91YmxlIHByZWNpc2lvbjwvdHlwZT4KKyAgICAgIDwv cGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRyYW5zYWN0aW9uIElEIGFnZSBjb21wb25lbnQg c2NvcmUuCisgICAgICA8L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4K KyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1 bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0cnVjdGZpZWxkPm14aWRfc2NvcmU8L3N0cnVjdGZp ZWxkPiA8dHlwZT5kb3VibGUgcHJlY2lzaW9uPC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAg PHBhcmE+CisgICAgICAgTXVsdGl4YWN0IElEIGFnZSBjb21wb25lbnQgc2NvcmUuCisgICAgICA8 L3BhcmE+PC9lbnRyeT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSBy b2xlPSJjYXRhbG9nX3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+ CisgICAgICAgPHN0cnVjdGZpZWxkPnZhY3V1bV9zY29yZTwvc3RydWN0ZmllbGQ+IDx0eXBlPmRv dWJsZSBwcmVjaXNpb248L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAg ICBWYWN1dW0gY29tcG9uZW50IHNjb3JlLgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwv cm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRy eSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD52 YWN1dW1faW5zZXJ0X3Njb3JlPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+ZG91YmxlIHByZWNpc2lvbjwv dHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFZhY3V1bSBpbnNlcnQg Y29tcG9uZW50IHNjb3JlLgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisg ICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEg cm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5hbmFseXplX3Nj b3JlPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+ZG91YmxlIHByZWNpc2lvbjwvdHlwZT4KKyAgICAgIDwv cGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIEFuYWx5emUgY29tcG9uZW50IHNjb3JlLgorICAg ICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorICAgIDwvdGJvZHk+CisgICA8L3Rncm91 cD4KKyAgPC90YWJsZT4KKyA8L3NlY3QyPgorCiAgPHNlY3QyIGlkPSJtb25pdG9yaW5nLXBnLXN0 YXQtYWxsLWluZGV4ZXMtdmlldyI+CiAgIDx0aXRsZT48c3RydWN0bmFtZT5wZ19zdGF0X2FsbF9p bmRleGVzPC9zdHJ1Y3RuYW1lPjwvdGl0bGU+CiAKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL2Nh dGFsb2cvc3lzdGVtX3ZpZXdzLnNxbCBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdz LnNxbAppbmRleCBlYmEyNWFhM2U0ZC4uMTFjZTk0ZWI5YzUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbAorKysgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3N5 c3RlbV92aWV3cy5zcWwKQEAgLTc5NSw2ICs3OTUsMjMgQEAgQ1JFQVRFIFZJRVcgcGdfc3RhdF94 YWN0X3VzZXJfdGFibGVzIEFTCiAgICAgV0hFUkUgc2NoZW1hbmFtZSBOT1QgSU4gKCdwZ19jYXRh bG9nJywgJ2luZm9ybWF0aW9uX3NjaGVtYScpIEFORAogICAgICAgICAgIHNjaGVtYW5hbWUgIX4g J15wZ190b2FzdCc7CiAKK0NSRUFURSBWSUVXIHBnX3N0YXRfYXV0b3ZhY3V1bV9zY29yZXMgQVMK KyAgICBTRUxFQ1QKKyAgICAgICAgcy5vaWQgQVMgcmVsaWQsCisgICAgICAgIG4ubnNwbmFtZSBB UyBzY2hlbWFuYW1lLAorICAgICAgICBjLnJlbG5hbWUgQVMgcmVsbmFtZSwKKyAgICAgICAgcy5u ZWVkc192YWN1dW0sCisgICAgICAgIHMubmVlZHNfYW5hbHl6ZSwKKyAgICAgICAgcy5zY29yZSwK KyAgICAgICAgcy54aWRfc2NvcmUsCisgICAgICAgIHMubXhpZF9zY29yZSwKKyAgICAgICAgcy52 YWN1dW1fc2NvcmUsCisgICAgICAgIHMudmFjdXVtX2luc2VydF9zY29yZSwKKyAgICAgICAgcy5h bmFseXplX3Njb3JlCisgICAgRlJPTSBwZ19zdGF0X2dldF9hdXRvdmFjdXVtX3Njb3JlcygpIHMK KyAgICBKT0lOIHBnX2NsYXNzIGMgb24gYy5vaWQgPSBzLm9pZAorICAgIExFRlQgSk9JTiBwZ19u YW1lc3BhY2UgbiBPTiBuLm9pZCA9IGMucmVsbmFtZXNwYWNlOworCiBDUkVBVEUgVklFVyBwZ19z dGF0aW9fYWxsX3RhYmxlcyBBUwogICAgIFNFTEVDVAogICAgICAgICAgICAgQy5vaWQgQVMgcmVs aWQsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYyBiL3Ny Yy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jCmluZGV4IDFiY2Q0YWM0YTE3Li41Y2Q2 YjRlMGJiMiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMK KysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKQEAgLTgwLDYgKzgwLDcg QEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX25hbWVzcGFjZS5oIgogI2luY2x1ZGUgImNvbW1hbmRz L3ZhY3V1bS5oIgogI2luY2x1ZGUgImNvbW1vbi9pbnQuaCIKKyNpbmNsdWRlICJmdW5jYXBpLmgi CiAjaW5jbHVkZSAibGliL2lsaXN0LmgiCiAjaW5jbHVkZSAibGlicHEvcHFzaWduYWwuaCIKICNp bmNsdWRlICJtaXNjYWRtaW4uaCIKQEAgLTExMSw2ICsxMTIsNyBAQAogI2luY2x1ZGUgInV0aWxz L3N5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvdGltZW91dC5oIgogI2luY2x1ZGUgInV0aWxz L3RpbWVzdGFtcC5oIgorI2luY2x1ZGUgInV0aWxzL3R1cGxlc3RvcmUuaCIKICNpbmNsdWRlICJ1 dGlscy93YWl0X2V2ZW50LmgiCiAKIApAQCAtMzYzOSwzICszNjQxLDczIEBAIGNoZWNrX2F2X3dv cmtlcl9ndWNzKHZvaWQpCiAJCQkJIGVycmRldGFpbCgiVGhlIHNlcnZlciB3aWxsIG9ubHkgc3Rh cnQgdXAgdG8gXCJhdXRvdmFjdXVtX3dvcmtlcl9zbG90c1wiICglZCkgYXV0b3ZhY3V1bSB3b3Jr ZXJzIGF0IGEgZ2l2ZW4gdGltZS4iLAogCQkJCQkJICAgYXV0b3ZhY3V1bV93b3JrZXJfc2xvdHMp KSk7CiB9CisKKy8qCisgKiBwZ19zdGF0X2dldF9hdXRvdmFjdXVtX3Njb3JlcworICoKKyAqIFJl dHVybnMgY3VycmVudCBhdXRvdmFjdXVtIHNjb3JlcyBmb3IgYWxsIHJlbGV2YW50IHRhYmxlcyBp biB0aGUgY3VycmVudAorICogZGF0YWJhc2UuCisgKi8KK0RhdHVtCitwZ19zdGF0X2dldF9hdXRv dmFjdXVtX3Njb3JlcyhQR19GVU5DVElPTl9BUkdTKQoreworCWludAkJCWVmZmVjdGl2ZV9tdWx0 aXhhY3RfZnJlZXplX21heF9hZ2U7CisJUmVsYXRpb24JcmVsOworCVRhYmxlU2NhbkRlc2Mgc2Nh bjsKKwlIZWFwVHVwbGUJdHVwOworCVJldHVyblNldEluZm8gKnJzaW5mbyA9IChSZXR1cm5TZXRJ bmZvICopIGZjaW5mby0+cmVzdWx0aW5mbzsKKworCUluaXRNYXRlcmlhbGl6ZWRTUkYoZmNpbmZv LCAwKTsKKworCS8qIHNvbWUgcHJlcmVxdWlzaXRlIGluaXRpYWxpemF0aW9uICovCisJZWZmZWN0 aXZlX211bHRpeGFjdF9mcmVlemVfbWF4X2FnZSA9IE11bHRpWGFjdE1lbWJlckZyZWV6ZVRocmVz aG9sZCgpOworCXJlY2VudFhpZCA9IFJlYWROZXh0VHJhbnNhY3Rpb25JZCgpOworCXJlY2VudE11 bHRpID0gUmVhZE5leHRNdWx0aVhhY3RJZCgpOworCisJLyogc2NhbiBwZ19jbGFzcyAqLworCXJl bCA9IHRhYmxlX29wZW4oUmVsYXRpb25SZWxhdGlvbklkLCBBY2Nlc3NTaGFyZUxvY2spOworCXNj YW4gPSB0YWJsZV9iZWdpbnNjYW5fY2F0YWxvZyhyZWwsIDAsIE5VTEwpOworCXdoaWxlICgodHVw ID0gaGVhcF9nZXRuZXh0KHNjYW4sIEZvcndhcmRTY2FuRGlyZWN0aW9uKSkgIT0gTlVMTCkKKwl7 CisJCUZvcm1fcGdfY2xhc3MgZm9ybSA9IChGb3JtX3BnX2NsYXNzKSBHRVRTVFJVQ1QodHVwKTsK KwkJQXV0b1ZhY09wdHMgKmF2b3B0czsKKwkJYm9vbAkJZG92YWN1dW07CisJCWJvb2wJCWRvYW5h bHl6ZTsKKwkJYm9vbAkJd3JhcGFyb3VuZDsKKwkJQXV0b1ZhY3V1bVNjb3JlcyBzY29yZXM7CisJ CURhdHVtCQl2YWxzWzldOworCQlib29sCQludWxsc1s5XSA9IHtmYWxzZX07CisKKwkJLyogc2tp cCBpbmVsaWdpYmxlIGVudHJpZXMgKi8KKwkJaWYgKGZvcm0tPnJlbGtpbmQgIT0gUkVMS0lORF9S RUxBVElPTiAmJgorCQkJZm9ybS0+cmVsa2luZCAhPSBSRUxLSU5EX01BVFZJRVcgJiYKKwkJCWZv cm0tPnJlbGtpbmQgIT0gUkVMS0lORF9UT0FTVFZBTFVFKQorCQkJY29udGludWU7CisJCWlmIChm b3JtLT5yZWxwZXJzaXN0ZW5jZSA9PSBSRUxQRVJTSVNURU5DRV9URU1QKQorCQkJY29udGludWU7 CisKKwkJYXZvcHRzID0gZXh0cmFjdF9hdXRvdmFjX29wdHModHVwLCBSZWxhdGlvbkdldERlc2Ny KHJlbCkpOworCQlyZWxhdGlvbl9uZWVkc192YWNhbmFseXplKGZvcm0tPm9pZCwgYXZvcHRzLCBm b3JtLAorCQkJCQkJCQkgIGVmZmVjdGl2ZV9tdWx0aXhhY3RfZnJlZXplX21heF9hZ2UsIDAsCisJ CQkJCQkJCSAgJmRvdmFjdXVtLCAmZG9hbmFseXplLCAmd3JhcGFyb3VuZCwKKwkJCQkJCQkJICAm c2NvcmVzKTsKKwkJaWYgKGF2b3B0cykKKwkJCXBmcmVlKGF2b3B0cyk7CisKKwkJdmFsc1swXSA9 IE9iamVjdElkR2V0RGF0dW0oZm9ybS0+b2lkKTsKKwkJdmFsc1sxXSA9IEJvb2xHZXREYXR1bSh3 cmFwYXJvdW5kIHx8IChzY29yZXMubmVlZHMgJiBORUVEU19WQUNVVU0pKTsKKwkJdmFsc1syXSA9 IEJvb2xHZXREYXR1bShzY29yZXMubmVlZHMgJiBORUVEU19BTkFMWVpFKTsKKwkJdmFsc1szXSA9 IEZsb2F0OEdldERhdHVtKHNjb3Jlcy5tYXgpOworCQl2YWxzWzRdID0gRmxvYXQ4R2V0RGF0dW0o c2NvcmVzLnhpZCk7CisJCXZhbHNbNV0gPSBGbG9hdDhHZXREYXR1bShzY29yZXMubXhpZCk7CisJ CXZhbHNbNl0gPSBGbG9hdDhHZXREYXR1bShzY29yZXMudmFjKTsKKwkJdmFsc1s3XSA9IEZsb2F0 OEdldERhdHVtKHNjb3Jlcy52YWNfaW5zKTsKKwkJdmFsc1s4XSA9IEZsb2F0OEdldERhdHVtKHNj b3Jlcy5hbmwpOworCisJCXR1cGxlc3RvcmVfcHV0dmFsdWVzKHJzaW5mby0+c2V0UmVzdWx0LCBy c2luZm8tPnNldERlc2MsIHZhbHMsIG51bGxzKTsKKwl9CisJdGFibGVfZW5kc2NhbihzY2FuKTsK Kwl0YWJsZV9jbG9zZShyZWwsIEFjY2Vzc1NoYXJlTG9jayk7CisKKwlyZXR1cm4gKERhdHVtKSAw OworfQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdCBiL3NyYy9p bmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKaW5kZXggYmQxNzdhZWJmY2IuLmYzZGJmOGUwODg3 IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CisrKyBiL3NyYy9p bmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQKQEAgLTU2NjcsNiArNTY2NywxMyBAQAogICBwcm9u YW1lID0+ICdwZ19zdGF0X2dldF90b3RhbF9hdXRvYW5hbHl6ZV90aW1lJywgcHJvdm9sYXRpbGUg PT4gJ3MnLAogICBwcm9wYXJhbGxlbCA9PiAncicsIHByb3JldHR5cGUgPT4gJ2Zsb2F0OCcsIHBy b2FyZ3R5cGVzID0+ICdvaWQnLAogICBwcm9zcmMgPT4gJ3BnX3N0YXRfZ2V0X3RvdGFsX2F1dG9h bmFseXplX3RpbWUnIH0sCit7IG9pZCA9PiAnODQwOScsIGRlc2NyID0+ICdhdXRvdmFjdXVtIHNj b3JlcycsCisgIHByb25hbWUgPT4gJ3BnX3N0YXRfZ2V0X2F1dG92YWN1dW1fc2NvcmVzJywgcHJv cm93cyA9PiAnMTAwJywgcHJvcmV0c2V0ID0+ICd0JywKKyAgcHJvdm9sYXRpbGUgPT4gJ3YnLCBw cm9wYXJhbGxlbCA9PiAndScsIHByb3JldHR5cGUgPT4gJ3JlY29yZCcsIHByb2FyZ3R5cGVzID0+ ICcnLAorICBwcm9hbGxhcmd0eXBlcyA9PiAne29pZCxib29sLGJvb2wsZmxvYXQ4LGZsb2F0OCxm bG9hdDgsZmxvYXQ4LGZsb2F0OCxmbG9hdDh9JywKKyAgcHJvYXJnbW9kZXMgPT4gJ3tvLG8sbyxv LG8sbyxvLG8sb30nLAorICBwcm9hcmduYW1lcyA9PiAne29pZCxuZWVkc192YWN1dW0sbmVlZHNf YW5hbHl6ZSxzY29yZSx4aWRfc2NvcmUsbXhpZF9zY29yZSx2YWN1dW1fc2NvcmUsdmFjdXVtX2lu c2VydF9zY29yZSxhbmFseXplX3Njb3JlfScsCisgIHByb3NyYyA9PiAncGdfc3RhdF9nZXRfYXV0 b3ZhY3V1bV9zY29yZXMnIH0sCiB7IG9pZCA9PiAnMTkzNicsIGRlc2NyID0+ICdzdGF0aXN0aWNz OiBjdXJyZW50bHkgYWN0aXZlIGJhY2tlbmQgSURzJywKICAgcHJvbmFtZSA9PiAncGdfc3RhdF9n ZXRfYmFja2VuZF9pZHNldCcsIHByb3Jvd3MgPT4gJzEwMCcsIHByb3JldHNldCA9PiAndCcsCiAg IHByb3ZvbGF0aWxlID0+ICdzJywgcHJvcGFyYWxsZWwgPT4gJ3InLCBwcm9yZXR0eXBlID0+ICdp bnQ0JywKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcnVsZXMub3V0IGIv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQKaW5kZXggODFhNzNjNDI2ZDIuLmE1 ZWUyMTM1Y2FlIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91 dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1bGVzLm91dApAQCAtMTg2MCw2ICsx ODYwLDIwIEBAIHBnX3N0YXRfYXJjaGl2ZXJ8IFNFTEVDVCBhcmNoaXZlZF9jb3VudCwKICAgICBs YXN0X2ZhaWxlZF90aW1lLAogICAgIHN0YXRzX3Jlc2V0CiAgICBGUk9NIHBnX3N0YXRfZ2V0X2Fy Y2hpdmVyKCkgcyhhcmNoaXZlZF9jb3VudCwgbGFzdF9hcmNoaXZlZF93YWwsIGxhc3RfYXJjaGl2 ZWRfdGltZSwgZmFpbGVkX2NvdW50LCBsYXN0X2ZhaWxlZF93YWwsIGxhc3RfZmFpbGVkX3RpbWUs IHN0YXRzX3Jlc2V0KTsKK3BnX3N0YXRfYXV0b3ZhY3V1bV9zY29yZXN8IFNFTEVDVCBzLm9pZCBB UyByZWxpZCwKKyAgICBuLm5zcG5hbWUgQVMgc2NoZW1hbmFtZSwKKyAgICBjLnJlbG5hbWUsCisg ICAgcy5uZWVkc192YWN1dW0sCisgICAgcy5uZWVkc19hbmFseXplLAorICAgIHMuc2NvcmUsCisg ICAgcy54aWRfc2NvcmUsCisgICAgcy5teGlkX3Njb3JlLAorICAgIHMudmFjdXVtX3Njb3JlLAor ICAgIHMudmFjdXVtX2luc2VydF9zY29yZSwKKyAgICBzLmFuYWx5emVfc2NvcmUKKyAgIEZST00g KChwZ19zdGF0X2dldF9hdXRvdmFjdXVtX3Njb3JlcygpIHMob2lkLCBuZWVkc192YWN1dW0sIG5l ZWRzX2FuYWx5emUsIHNjb3JlLCB4aWRfc2NvcmUsIG14aWRfc2NvcmUsIHZhY3V1bV9zY29yZSwg dmFjdXVtX2luc2VydF9zY29yZSwgYW5hbHl6ZV9zY29yZSkKKyAgICAgSk9JTiBwZ19jbGFzcyBj IE9OICgoYy5vaWQgPSBzLm9pZCkpKQorICAgICBMRUZUIEpPSU4gcGdfbmFtZXNwYWNlIG4gT04g KChuLm9pZCA9IGMucmVsbmFtZXNwYWNlKSkpOwogcGdfc3RhdF9iZ3dyaXRlcnwgU0VMRUNUIHBn X3N0YXRfZ2V0X2Jnd3JpdGVyX2J1Zl93cml0dGVuX2NsZWFuKCkgQVMgYnVmZmVyc19jbGVhbiwK ICAgICBwZ19zdGF0X2dldF9iZ3dyaXRlcl9tYXh3cml0dGVuX2NsZWFuKCkgQVMgbWF4d3JpdHRl bl9jbGVhbiwKICAgICBwZ19zdGF0X2dldF9idWZfYWxsb2MoKSBBUyBidWZmZXJzX2FsbG9jLAot LSAKMi41MC4xCgo= --000000000000418a02064ea60bf2 Content-Type: application/octet-stream; name="v11-0001-refactor-autovacuum-subroutine-in-preparation-fo.patch" Content-Disposition: attachment; filename="v11-0001-refactor-autovacuum-subroutine-in-preparation-fo.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mnkmjyxc2 RnJvbSA0MWFjNjc5OWQwY2VmMTg2OGQyNjg0YTAyMWI1YzQwYWQyNzAyMzUzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBOYXRoYW4gQm9zc2FydCA8bmF0aGFuQHBvc3RncmVzcWwub3Jn PgpEYXRlOiBUaHUsIDIgQXByIDIwMjYgMTQ6MTc6MTEgLTA1MDAKU3ViamVjdDogW1BBVENIIHYx MSAxLzNdIHJlZmFjdG9yIGF1dG92YWN1dW0gc3Vicm91dGluZSBpbiBwcmVwYXJhdGlvbiBmb3IK IHN5c3RlbSB2aWV3CgotLS0KIHNyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jIHwg NzMgKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCAxNSBpbnNl cnRpb25zKCspLCA1OCBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0 bWFzdGVyL2F1dG92YWN1dW0uYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5j CmluZGV4IDg0MDBlNjcyMmNjLi4xYmUxYmE4YTI1ZiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQv cG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRv dmFjdXVtLmMKQEAgLTM3MCwxMyArMzcwLDggQEAgc3RhdGljIHZvaWQgRnJlZVdvcmtlckluZm8o aW50IGNvZGUsIERhdHVtIGFyZyk7CiBzdGF0aWMgYXV0b3ZhY190YWJsZSAqdGFibGVfcmVjaGVj a19hdXRvdmFjKE9pZCByZWxpZCwgSFRBQiAqdGFibGVfdG9hc3RfbWFwLAogCQkJCQkJCQkJCQlU dXBsZURlc2MgcGdfY2xhc3NfZGVzYywKIAkJCQkJCQkJCQkJaW50IGVmZmVjdGl2ZV9tdWx0aXhh Y3RfZnJlZXplX21heF9hZ2UpOwotc3RhdGljIHZvaWQgcmVjaGVja19yZWxhdGlvbl9uZWVkc192 YWNhbmFseXplKE9pZCByZWxpZCwgQXV0b1ZhY09wdHMgKmF2b3B0cywKLQkJCQkJCQkJCQkJICBG b3JtX3BnX2NsYXNzIGNsYXNzRm9ybSwKLQkJCQkJCQkJCQkJICBpbnQgZWZmZWN0aXZlX211bHRp eGFjdF9mcmVlemVfbWF4X2FnZSwKLQkJCQkJCQkJCQkJICBib29sICpkb3ZhY3V1bSwgYm9vbCAq ZG9hbmFseXplLCBib29sICp3cmFwYXJvdW5kKTsKIHN0YXRpYyB2b2lkIHJlbGF0aW9uX25lZWRz X3ZhY2FuYWx5emUoT2lkIHJlbGlkLCBBdXRvVmFjT3B0cyAqcmVsb3B0cywKIAkJCQkJCQkJCSAg Rm9ybV9wZ19jbGFzcyBjbGFzc0Zvcm0sCi0JCQkJCQkJCQkgIFBnU3RhdF9TdGF0VGFiRW50cnkg KnRhYmVudHJ5LAogCQkJCQkJCQkJICBpbnQgZWZmZWN0aXZlX211bHRpeGFjdF9mcmVlemVfbWF4 X2FnZSwKIAkJCQkJCQkJCSAgaW50IGVsZXZlbCwKIAkJCQkJCQkJCSAgYm9vbCAqZG92YWN1dW0s IGJvb2wgKmRvYW5hbHl6ZSwgYm9vbCAqd3JhcGFyb3VuZCwKQEAgLTIwMjksNyArMjAyNCw2IEBA IGRvX2F1dG92YWN1dW0odm9pZCkKIAl3aGlsZSAoKHR1cGxlID0gaGVhcF9nZXRuZXh0KHJlbFNj YW4sIEZvcndhcmRTY2FuRGlyZWN0aW9uKSkgIT0gTlVMTCkKIAl7CiAJCUZvcm1fcGdfY2xhc3Mg Y2xhc3NGb3JtID0gKEZvcm1fcGdfY2xhc3MpIEdFVFNUUlVDVCh0dXBsZSk7Ci0JCVBnU3RhdF9T dGF0VGFiRW50cnkgKnRhYmVudHJ5OwogCQlBdXRvVmFjT3B0cyAqcmVsb3B0czsKIAkJT2lkCQkJ cmVsaWQ7CiAJCWJvb2wJCWRvdmFjdXVtOwpAQCAtMjA3MCwxMSArMjA2NCw5IEBAIGRvX2F1dG92 YWN1dW0odm9pZCkKIAogCQkvKiBGZXRjaCByZWxvcHRpb25zIGFuZCB0aGUgcGdzdGF0IGVudHJ5 IGZvciB0aGlzIHRhYmxlICovCiAJCXJlbG9wdHMgPSBleHRyYWN0X2F1dG92YWNfb3B0cyh0dXBs ZSwgcGdfY2xhc3NfZGVzYyk7Ci0JCXRhYmVudHJ5ID0gcGdzdGF0X2ZldGNoX3N0YXRfdGFiZW50 cnlfZXh0KGNsYXNzRm9ybS0+cmVsaXNzaGFyZWQsCi0JCQkJCQkJCQkJCQkgIHJlbGlkKTsKIAog CQkvKiBDaGVjayBpZiBpdCBuZWVkcyB2YWN1dW0gb3IgYW5hbHl6ZSAqLwotCQlyZWxhdGlvbl9u ZWVkc192YWNhbmFseXplKHJlbGlkLCByZWxvcHRzLCBjbGFzc0Zvcm0sIHRhYmVudHJ5LAorCQly ZWxhdGlvbl9uZWVkc192YWNhbmFseXplKHJlbGlkLCByZWxvcHRzLCBjbGFzc0Zvcm0sCiAJCQkJ CQkJCSAgZWZmZWN0aXZlX211bHRpeGFjdF9mcmVlemVfbWF4X2FnZSwKIAkJCQkJCQkJICBERUJV RzMsCiAJCQkJCQkJCSAgJmRvdmFjdXVtLCAmZG9hbmFseXplLCAmd3JhcGFyb3VuZCwKQEAgLTIx MjEsOCArMjExMyw2IEBAIGRvX2F1dG92YWN1dW0odm9pZCkKIAkJLyogUmVsZWFzZSBzdHVmZiB0 byBhdm9pZCBwZXItcmVsYXRpb24gbGVha2FnZSAqLwogCQlpZiAocmVsb3B0cykKIAkJCXBmcmVl KHJlbG9wdHMpOwotCQlpZiAodGFiZW50cnkpCi0JCQlwZnJlZSh0YWJlbnRyeSk7CiAJfQogCiAJ dGFibGVfZW5kc2NhbihyZWxTY2FuKTsKQEAgLTIxMzcsNyArMjEyNyw2IEBAIGRvX2F1dG92YWN1 dW0odm9pZCkKIAl3aGlsZSAoKHR1cGxlID0gaGVhcF9nZXRuZXh0KHJlbFNjYW4sIEZvcndhcmRT Y2FuRGlyZWN0aW9uKSkgIT0gTlVMTCkKIAl7CiAJCUZvcm1fcGdfY2xhc3MgY2xhc3NGb3JtID0g KEZvcm1fcGdfY2xhc3MpIEdFVFNUUlVDVCh0dXBsZSk7Ci0JCVBnU3RhdF9TdGF0VGFiRW50cnkg KnRhYmVudHJ5OwogCQlPaWQJCQlyZWxpZDsKIAkJQXV0b1ZhY09wdHMgKnJlbG9wdHM7CiAJCWJv b2wJCWZyZWVfcmVsb3B0cyA9IGZhbHNlOwpAQCAtMjE3MSwxMSArMjE2MCw3IEBAIGRvX2F1dG92 YWN1dW0odm9pZCkKIAkJCQlyZWxvcHRzID0gJmhlbnRyeS0+YXJfcmVsb3B0aW9uczsKIAkJfQog Ci0JCS8qIEZldGNoIHRoZSBwZ3N0YXQgZW50cnkgZm9yIHRoaXMgdGFibGUgKi8KLQkJdGFiZW50 cnkgPSBwZ3N0YXRfZmV0Y2hfc3RhdF90YWJlbnRyeV9leHQoY2xhc3NGb3JtLT5yZWxpc3NoYXJl ZCwKLQkJCQkJCQkJCQkJCSAgcmVsaWQpOwotCi0JCXJlbGF0aW9uX25lZWRzX3ZhY2FuYWx5emUo cmVsaWQsIHJlbG9wdHMsIGNsYXNzRm9ybSwgdGFiZW50cnksCisJCXJlbGF0aW9uX25lZWRzX3Zh Y2FuYWx5emUocmVsaWQsIHJlbG9wdHMsIGNsYXNzRm9ybSwKIAkJCQkJCQkJICBlZmZlY3RpdmVf bXVsdGl4YWN0X2ZyZWV6ZV9tYXhfYWdlLAogCQkJCQkJCQkgIERFQlVHMywKIAkJCQkJCQkJICAm ZG92YWN1dW0sICZkb2FuYWx5emUsICZ3cmFwYXJvdW5kLApAQCAtMjE5NCw4ICsyMTc5LDYgQEAg ZG9fYXV0b3ZhY3V1bSh2b2lkKQogCQkvKiBSZWxlYXNlIHN0dWZmIHRvIGF2b2lkIGxlYWthZ2Ug Ki8KIAkJaWYgKGZyZWVfcmVsb3B0cykKIAkJCXBmcmVlKHJlbG9wdHMpOwotCQlpZiAodGFiZW50 cnkpCi0JCQlwZnJlZSh0YWJlbnRyeSk7CiAJfQogCiAJdGFibGVfZW5kc2NhbihyZWxTY2FuKTsK QEAgLTI4MzQsNiArMjgxNyw3IEBAIHRhYmxlX3JlY2hlY2tfYXV0b3ZhYyhPaWQgcmVsaWQsIEhU QUIgKnRhYmxlX3RvYXN0X21hcCwKIAlib29sCQl3cmFwYXJvdW5kOwogCUF1dG9WYWNPcHRzICph dm9wdHM7CiAJYm9vbAkJZnJlZV9hdm9wdHMgPSBmYWxzZTsKKwlBdXRvVmFjdXVtU2NvcmVzIHNj b3JlczsKIAogCS8qIGZldGNoIHRoZSByZWxhdGlvbidzIHJlbGNhY2hlIGVudHJ5ICovCiAJY2xh c3NUdXAgPSBTZWFyY2hTeXNDYWNoZUNvcHkxKFJFTE9JRCwgT2JqZWN0SWRHZXREYXR1bShyZWxp ZCkpOwpAQCAtMjg1OSw5ICsyODQzLDExIEBAIHRhYmxlX3JlY2hlY2tfYXV0b3ZhYyhPaWQgcmVs aWQsIEhUQUIgKnRhYmxlX3RvYXN0X21hcCwKIAkJCWF2b3B0cyA9ICZoZW50cnktPmFyX3JlbG9w dGlvbnM7CiAJfQogCi0JcmVjaGVja19yZWxhdGlvbl9uZWVkc192YWNhbmFseXplKHJlbGlkLCBh dm9wdHMsIGNsYXNzRm9ybSwKLQkJCQkJCQkJCSAgZWZmZWN0aXZlX211bHRpeGFjdF9mcmVlemVf bWF4X2FnZSwKLQkJCQkJCQkJCSAgJmRvdmFjdXVtLCAmZG9hbmFseXplLCAmd3JhcGFyb3VuZCk7 CisJcmVsYXRpb25fbmVlZHNfdmFjYW5hbHl6ZShyZWxpZCwgYXZvcHRzLCBjbGFzc0Zvcm0sCisJ CQkJCQkJICBlZmZlY3RpdmVfbXVsdGl4YWN0X2ZyZWV6ZV9tYXhfYWdlLAorCQkJCQkJCSAgREVC VUczLAorCQkJCQkJCSAgJmRvdmFjdXVtLCAmZG9hbmFseXplLCAmd3JhcGFyb3VuZCwKKwkJCQkJ CQkgICZzY29yZXMpOwogCiAJLyogT0ssIGl0IG5lZWRzIHNvbWV0aGluZyBkb25lICovCiAJaWYg KGRvYW5hbHl6ZSB8fCBkb3ZhY3V1bSkKQEAgLTI5NzAsNDEgKzI5NTYsNiBAQCB0YWJsZV9yZWNo ZWNrX2F1dG92YWMoT2lkIHJlbGlkLCBIVEFCICp0YWJsZV90b2FzdF9tYXAsCiAJcmV0dXJuIHRh YjsKIH0KIAotLyoKLSAqIHJlY2hlY2tfcmVsYXRpb25fbmVlZHNfdmFjYW5hbHl6ZQotICoKLSAq IFN1YnJvdXRpbmUgZm9yIHRhYmxlX3JlY2hlY2tfYXV0b3ZhYy4KLSAqCi0gKiBGZXRjaCB0aGUg cGdzdGF0IG9mIGEgcmVsYXRpb24gYW5kIHJlY2hlY2sgd2hldGhlciBhIHJlbGF0aW9uCi0gKiBu ZWVkcyB0byBiZSB2YWN1dW1lZCBvciBhbmFseXplZC4KLSAqLwotc3RhdGljIHZvaWQKLXJlY2hl Y2tfcmVsYXRpb25fbmVlZHNfdmFjYW5hbHl6ZShPaWQgcmVsaWQsCi0JCQkJCQkJCSAgQXV0b1Zh Y09wdHMgKmF2b3B0cywKLQkJCQkJCQkJICBGb3JtX3BnX2NsYXNzIGNsYXNzRm9ybSwKLQkJCQkJ CQkJICBpbnQgZWZmZWN0aXZlX211bHRpeGFjdF9mcmVlemVfbWF4X2FnZSwKLQkJCQkJCQkJICBi b29sICpkb3ZhY3V1bSwKLQkJCQkJCQkJICBib29sICpkb2FuYWx5emUsCi0JCQkJCQkJCSAgYm9v bCAqd3JhcGFyb3VuZCkKLXsKLQlQZ1N0YXRfU3RhdFRhYkVudHJ5ICp0YWJlbnRyeTsKLQlBdXRv VmFjdXVtU2NvcmVzIHNjb3JlczsKLQotCS8qIGZldGNoIHRoZSBwZ3N0YXQgdGFibGUgZW50cnkg Ki8KLQl0YWJlbnRyeSA9IHBnc3RhdF9mZXRjaF9zdGF0X3RhYmVudHJ5X2V4dChjbGFzc0Zvcm0t PnJlbGlzc2hhcmVkLAotCQkJCQkJCQkJCQkgIHJlbGlkKTsKLQotCXJlbGF0aW9uX25lZWRzX3Zh Y2FuYWx5emUocmVsaWQsIGF2b3B0cywgY2xhc3NGb3JtLCB0YWJlbnRyeSwKLQkJCQkJCQkgIGVm ZmVjdGl2ZV9tdWx0aXhhY3RfZnJlZXplX21heF9hZ2UsCi0JCQkJCQkJICBERUJVRzMsCi0JCQkJ CQkJICBkb3ZhY3V1bSwgZG9hbmFseXplLCB3cmFwYXJvdW5kLAotCQkJCQkJCSAgJnNjb3Jlcyk7 Ci0KLQkvKiBSZWxlYXNlIHRhYmVudHJ5IHRvIGF2b2lkIGxlYWthZ2UgKi8KLQlpZiAodGFiZW50 cnkpCi0JCXBmcmVlKHRhYmVudHJ5KTsKLX0KLQogLyoKICAqIHJlbGF0aW9uX25lZWRzX3ZhY2Fu YWx5emUKICAqCkBAIC0zMDg5LDcgKzMwNDAsNiBAQCBzdGF0aWMgdm9pZAogcmVsYXRpb25fbmVl ZHNfdmFjYW5hbHl6ZShPaWQgcmVsaWQsCiAJCQkJCQkgIEF1dG9WYWNPcHRzICpyZWxvcHRzLAog CQkJCQkJICBGb3JtX3BnX2NsYXNzIGNsYXNzRm9ybSwKLQkJCQkJCSAgUGdTdGF0X1N0YXRUYWJF bnRyeSAqdGFiZW50cnksCiAJCQkJCQkgIGludCBlZmZlY3RpdmVfbXVsdGl4YWN0X2ZyZWV6ZV9t YXhfYWdlLAogCQkJCQkJICBpbnQgZWxldmVsLAogIC8qIG91dHB1dCBwYXJhbXMgYmVsb3cgKi8K QEAgLTMwOTgsNiArMzA0OCw3IEBAIHJlbGF0aW9uX25lZWRzX3ZhY2FuYWx5emUoT2lkIHJlbGlk LAogCQkJCQkJICBib29sICp3cmFwYXJvdW5kLAogCQkJCQkJICBBdXRvVmFjdXVtU2NvcmVzICpz Y29yZXMpCiB7CisJUGdTdGF0X1N0YXRUYWJFbnRyeSAqdGFiZW50cnk7CiAJYm9vbAkJZm9yY2Vf dmFjdXVtOwogCWJvb2wJCWF2X2VuYWJsZWQ7CiAKQEAgLTMyNjUsNiArMzIxNiw4IEBAIHJlbGF0 aW9uX25lZWRzX3ZhY2FuYWx5emUoT2lkIHJlbGlkLAogCSAqIHZhY3V1bWluZyBvbmx5LCBzbyBk b24ndCB2YWN1dW0gKG9yIGFuYWx5emUpIGFueXRoaW5nIHRoYXQncyBub3QgYmVpbmcKIAkgKiBm b3JjZWQuCiAJICovCisJdGFiZW50cnkgPSBwZ3N0YXRfZmV0Y2hfc3RhdF90YWJlbnRyeV9leHQo Y2xhc3NGb3JtLT5yZWxpc3NoYXJlZCwKKwkJCQkJCQkJCQkJICByZWxpZCk7CiAJaWYgKCF0YWJl bnRyeSkKIAkJcmV0dXJuOwogCkBAIC0zMzUzLDYgKzMzMDYsMTAgQEAgcmVsYXRpb25fbmVlZHNf dmFjYW5hbHl6ZShPaWQgcmVsaWQsCiAJCQkgdmFjdHVwbGVzLCB2YWN0aHJlc2gsIHNjb3Jlcy0+ dmFjLAogCQkJIGFubHR1cGxlcywgYW5sdGhyZXNoLCBzY29yZXMtPmFubCwKIAkJCSBzY29yZXMt PnhpZCwgc2NvcmVzLT5teGlkKTsKKworCS8qIFJlbGVhc2UgdGFiZW50cnkgdG8gYXZvaWQgbGVh a2FnZSAqLworCWlmICh0YWJlbnRyeSkKKwkJcGZyZWUodGFiZW50cnkpOwogfQogCiAvKgotLSAK Mi41MC4xCgo= --000000000000418a02064ea60bf2--