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 1w6GNt-0047XK-03 for pgsql-hackers@arkaria.postgresql.org; Fri, 27 Mar 2026 23:14:33 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w6GNr-00CpY5-1e for pgsql-hackers@arkaria.postgresql.org; Fri, 27 Mar 2026 23:14:31 +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 1w6GNq-00CpXx-2j for pgsql-hackers@lists.postgresql.org; Fri, 27 Mar 2026 23:14:31 +0000 Received: from mail-ed1-x535.google.com ([2a00:1450:4864:20::535]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w6GNp-00000001PGr-0rgK for pgsql-hackers@postgresql.org; Fri, 27 Mar 2026 23:14:30 +0000 Received: by mail-ed1-x535.google.com with SMTP id 4fb4d7f45d1cf-66aed966c7eso4244938a12.3 for ; Fri, 27 Mar 2026 16:14:29 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1774653266; cv=none; d=google.com; s=arc-20240605; b=RKYLguf/csq57GEMcLAaQw/YElMn+ZCoPqBF8hM9KEIrP7T8WxphhhhFG66NcsR8gW UIqh2gC9QvH+2L03+Bm+EP7zYYrHTdWd0gdDp44oMc50j8DoQ/BOJOIYhcGjsHyW6j4W tMAb3IzNjVSRa1hg9arbu6UrziFAHWbjqRAzmV79o7GLHcf9RNpLZkRWpCY8Ocs6DmNx 7YpoVLWyikGFAmKIG5THYB+tDD+10DcU6kTOug052bYtSPe++FbRNOYebFlWja5ztO2T q3DeK/uJgkeNNDDJYPszXpPRVNM2sqrRZbi7Q6cNFv5H9r15Br/l4p+vQ7oA3qD1b5dA navg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=to:subject:message-id:date:from:mime-version:dkim-signature; bh=jA0K4+PBLjqSHISb26IOO10X5BJY7q4wUvfa2bOz8mU=; fh=RfrkJab44jNT7RraF/sJO97r9/nkUL0AAgzmC7PBS2w=; b=KU459AslHqI/065R5Kfib89Q3BQkio+aoz3nW7byVyDvnZBiL0OE0VP9cYkhDXORHm itqW/CsC4K3ajkQ/8w7GQj1Y77ASm/yhan+mx4Cl8USMIMicTSTI7XIWZKn5vD7sJMss 1W6AyWkIDBMqaBNbGtqW7Pyhar6cqNcvMWwGfyoZt2vt4o6FvLuxAwDTawPvuj8BuLGt 5smeXw6cbrVQh7E1u6j42Mce4l0FeSl5jmbBci5QcOYG59uBRhc9WiTk94+11XrFI6Qc lQGYyFhS1kvxa7Yc0mr90RYTWB6OB3/1H77z2/0ZUiVlbtumdOP4NK+r2cMhA0cF0aNt R4Qg==; 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=1774653266; x=1775258066; darn=postgresql.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=jA0K4+PBLjqSHISb26IOO10X5BJY7q4wUvfa2bOz8mU=; b=n+4e5sUgcVeYxI85QvxPfmDtztdid97abEIhRiFYe9lyWl3Uh+CGdX5q8o2c+3EElm VPH60C7or0Q0OoMMBNnnWYeYF+8N21NhVeGzzy5beCIraEyrWmL/aq1eW29j/Lcz1J5k ndQo6IYEKrlf8kmE1gKgjjUDmxktPtnSLJZt7XHAjng4sFqdcZ99Z4foBdqqkKWhkR2b vl6n2NFC8j/4Ipsfcbn4LcAEAwv8cVqgiStjIPSUCpvUyhyAcDkM8iglmMxSdVBiX/ZN BnN1bsGWyPEImBlTuXvQlAHlgXG//ywxxWjmfA3YjS5pzEqUGJ6rCgf/jlTJ252M7OD3 3VLg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1774653266; x=1775258066; h=to:subject:message-id:date:from:mime-version:x-gm-gg :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=jA0K4+PBLjqSHISb26IOO10X5BJY7q4wUvfa2bOz8mU=; b=lfoUYXNkwE/4Stwax/M4LWUkV8jgrnYyDNqNp3PFjk/dIrKHLevLQHSL2rF2wPIen5 8BPwJ/TqvthArN2HM7IGKAX1OVyMH0GcrwCwl6BA19N/YWg5gbkiC8MED9NqP6S7POyT mRiAAMCjwgBV06OLaOfxyK+D2Sk6pQjeU5NzgullAlH5QPV8n7TyeTJTQviq4TA5p1z1 zV0Z4wopKkZ8sIMZbilChLVZsHlxlHrWhoHyR0/qxyWxpPw3uZqNfDx5tNx+qUJpd9jC G23vYDW5nbb1D/63UlDI8Lo5Wtmmi41X5zW/6J5DvHmdnH3Wxnnf9EHHxxim1qSo5Xl2 TQNA== X-Gm-Message-State: AOJu0YyYPZADhIIqirU215YDGM+MTMvvpzFx9kN2njg0PUgh0tw/hxOQ 5OAu6C3mEPqn7AO9Y0+iqPi3Fp5N4wrwPfYapl/a3e8L5zVAO7ZFreg/qpiBmK9S7U45Yox8qo5 7+b1id9WeMTznjKcIrr9+kOdGFqsb4QHqM2MSYWk= X-Gm-Gg: ATEYQzyMom+FrQi/cNl0OcKmUf/zFD1BiUs3dP9bgYeZSYOyaAoMQokkWndaYxGu8Jd bnYIPYmNRfpOHBI/LcuxA/DDFoumqiHF0Z1JWb5hhdf6iFG5mnFE+Zequ0iW6STd9qdV8ty3Kty j55RebtNufzffVcuBtfs5gwOBFTkwQxFXYwOvibAfTPMcpN6spayweC9uvjKSL6fIZYApd3TLCK +ZKjupuAfBNt2C+oV/P99eElUZIoTZIkeX+iY0MBO5d/DwmP9Nu3d4GkiIxP263gm444iGsQ6E7 swELbw== X-Received: by 2002:a05:6402:1d4e:b0:667:f3dd:6051 with SMTP id 4fb4d7f45d1cf-66b28b58c76mr2818061a12.23.1774653265888; Fri, 27 Mar 2026 16:14:25 -0700 (PDT) MIME-Version: 1.0 From: Sami Imseih Date: Fri, 27 Mar 2026 18:14:14 -0500 X-Gm-Features: AQROBzB9bmDGIxn10UTUQKQGwz89hR_mQb-Ju8Mdr7hc852_WLpKjrxupk2_sCY Message-ID: Subject: Add pg_stat_autovacuum_priority To: pgsql-hackers Content-Type: multipart/mixed; boundary="000000000000838311064e09a9cb" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000838311064e09a9cb Content-Type: text/plain; charset="UTF-8" Hi, This is a quick follow-up to the commit d7965d65f which introduced autovacuum prioritization based on a score that is the Max of several components, such as vacuum thresholds, xid age, etc. It was also discussed in that thread [1] that we will need a view to expose the priority scores, per table in a view. This will allow a user to introspect what the autovacuum launcher will prioritize next as well as verify tuning efforts for autovacuum prioritization; the latter case likely being rare. So after spending time on this today, I am proposing a view that returns a line for each relation with information about if the table needs autovacuum/autoanalyze, as well as scores of each component and the Max score. It looks like the below: ``` postgres=# select * FROM pg_stat_autovacuum_priority; -[ RECORD 1 ]-----+---------------------------- relid | 16410 schemaname | public relname | av_priority_test needs_vacuum | f needs_analyze | f wraparound | f score | 0 xid_score | 0 mxid_score | 0 vacuum_dead_score | 0 vacuum_ins_score | 0 analyze_score | 0 ``` The function essentially calls relation_needs_vacanalyze() with some setup work, such as scanning the catalog with an AccessShareLock, etc. and emits the result of this call. To make this work 0001 introduces a small change to relation_needs_vacanalyze() to take in a boolean to force the calculation of the score (even if autovacuum is disabled for the relation). 0002 introduces the view with documentation and testing in vacuum.c (xid age and mxid age scores are not tested as they require xid_wraparound to consume enough XIDs to trigger a score, which will cost too much time for a regression test). Find the attached taking the first attempt at this view. [1] [https://www.postgresql.org/message-id/CAApHDvqQN-B2sQov8nsfZOmx-VeJMauSf4kLa3A8LsK1tUyBNw%40mail.gmail.com] -- Sami Imseih Amazon Web Services (AWS) --000000000000838311064e09a9cb Content-Type: application/octet-stream; name="v1-0002-Add-pg_stat_autovacuum_priority-view.patch" Content-Disposition: attachment; filename="v1-0002-Add-pg_stat_autovacuum_priority-view.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn9inprt0 RnJvbSBhNWJjNWFhZjliNDY4ZDA4YTg3OTk4MzQ4MTE5OWQ0ZWE4MmY0OWQzIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTYW1pIEltc2VpaCA8c2FtaW1zZWloQGdtYWlsLmNvbT4KRGF0 ZTogTW9uLCAyMyBNYXIgMjAyNiAxNzowMzo1OSArMDAwMApTdWJqZWN0OiBbUEFUQ0ggdjEgMi8y XSBBZGQgcGdfc3RhdF9hdXRvdmFjdXVtX3ByaW9yaXR5IHZpZXcKCmQ3OTY1ZDY1ZiBpbnRyb2R1 Y2VkIHZhY3V1bSBwcmlvcml0aXphdGlvbiBiYXNlZCBvbiBhIHNjb3JlIHRoYXQKY2FsY3VsYXRl cyB0aGUgdXJnZW5jeSBiYXNlZCBvbiBhIE1heCBvZiBzZXZlcmFsIGNvbXBvbmVudHMsIHN1Y2gg YXMKdmFjdXVtIHRocmVzaG9sZHMsIHhpZCBhZ2UsIGV0Yy4gVGhlc2Ugc2NvcmVzIGFyZSB1c2Vk IGJ5IGF1dG92YWN1dW0KdG8gcHJpb3JpdGl6ZSB3aGljaCB0YWJsZXMgdG8gdmFjdXVtIG5leHQu CgpUaGUgYWZvcmVtZW50aW9uZWQgY29tbWl0IGluY2x1ZGVzIGRvY3VtZW50YXRpb24gaW50byBo b3cKcHJpb3JpdGl6YXRpb24gd29ya3MgYW5kIHNldmVyYWwgR1VDcyB0byB0dW5lIHByaW9yaXR5 LgoKVGhpcyBjaGFuZ2UgaW50cm9kdWNlcyBhIHZpZXcgdG8gc2hvdyBhIGxpbmUgcGVyIHJlbGF0 aW9uIHdpdGggdmFjdXVtCm9yIGFuYWx5emUgZWxpZ2liaWxpdHksIHRoZSBzY29yZSBvZiBlYWNo IGNvbXBvbmVudCBhbmQgdGhlIE1heCBzY29yZQphY3Jvc3MgYWxsIGNvbXBvbmVudHMuIEhhdmlu ZyB0aGlzIGluZm9ybWF0aW9uIGV4cG9zZWQgcHJvdmlkZXMgdGhlCnVzZXIgd2l0aCBhIHdheSB0 byBpbnRyb3NwZWN0IHdoaWNoIHRhYmxlcyBhcmUgZWxpZ2libGUgZm9yIGF1dG92YWN1dW0Kb3Ig YXV0b2FuYWx5emUgYXMgd2VsbCBhcyBwcm92aWRlIGZlZWRiYWNrIG9uIHR1bmluZyBvZiB0aGUg R1VDcy4KClRoZSB2aWV3IHNpbXBseSBjYWxscyByZWxhdGlvbl9uZWVkc192YWNhbmFseXplKCkg d2hpY2ggcHJvdmlkZXMgdGhlCnNjb3JlcyBhbmQgZWxpZ2liaWxpdHkgZGV0YWlscy4gQW4gZWFy bGllciBjb21taXQgYWxzbyBpbnRyb2R1Y2VkIHRoZQpmb3JjZV9zY29yZXMgZmllbGQgdG8gcmVs YXRpb25fbmVlZHNfdmFjYW5hbHl6ZSgpIHNvIGl0IGNhbiBjb21wdXRlCnNjb3JlcyByZWdhcmRs ZXNzIG9mIHRoZSB0YWJsZSdzIGVsaWdpYmlsaXR5IGZvciBhdXRvdmFjdXVtIG9yCmF1dG9hbmFs eXplLgoKVGhlIHZpZXcgYWxzbyBlbWl0cyB0aGUgcmVsaWQsIG5hbWVzcGFjZSBhbmQgcmVsbmFt ZSwgdGhlcmVmb3JlIGl0IGNhbgpiZSBqb2luZWQgd2l0aCBvdGhlciB2aWV3cyBsaWtlIHBnX3N0 YXRfYWxsX3RhYmxlcyBhbmQKcGdfc3RhdF9wcm9ncmVzc192YWN1dW0gZm9yIGNvbXBsZW1lbnRh cnkgdmFjdXVtIGRldGFpbHMuCgpUZXN0cyBhZGRlZCB0byB2YWN1dW0uc3FsCi0tLQogZG9jL3Ny Yy9zZ21sL21haW50ZW5hbmNlLnNnbWwgICAgICAgIHwgICA2ICsKIGRvYy9zcmMvc2dtbC9tb25p dG9yaW5nLnNnbWwgICAgICAgICB8IDE1OCArKysrKysrKysrKysrKysrKysrKysrKysrKysKIHNy Yy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbCB8ICAxOCArKysKIHNyYy9iYWNrZW5k L3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jICB8IDExMyArKysrKysrKysrKysrKysrKysrCiBzcmMv aW5jbHVkZS9jYXRhbG9nL2NhdHZlcnNpb24uaCAgICAgfCAgIDIgKy0KIHNyYy9pbmNsdWRlL2Nh dGFsb2cvcGdfcHJvYy5kYXQgICAgICB8ICAgOSArKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3Rl ZC9ydWxlcy5vdXQgIHwgIDE1ICsrKwogc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC92YWN1dW0u b3V0IHwgIDMwICsrKysrCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC92YWN1dW0uc3FsICAgICAgfCAg MjEgKysrKwogOSBmaWxlcyBjaGFuZ2VkLCAzNzEgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigt KQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9tYWludGVuYW5jZS5zZ21sIGIvZG9jL3NyYy9z Z21sL21haW50ZW5hbmNlLnNnbWwKaW5kZXggMGQyYTI4MjA3ZWQuLjIxMjU3NzRhZmYzIDEwMDY0 NAotLS0gYS9kb2Mvc3JjL3NnbWwvbWFpbnRlbmFuY2Uuc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwv bWFpbnRlbmFuY2Uuc2dtbApAQCAtMTE2NCw2ICsxMTY0LDEyIEBAIGFuYWx5emUgdGhyZXNob2xk ID0gYW5hbHl6ZSBiYXNlIHRocmVzaG9sZCArIGFuYWx5emUgc2NhbGUgZmFjdG9yICogbnVtYmVy IG9mIHR1CiAgICAgIDxsaXRlcmFsPjIuMDwvbGl0ZXJhbD4gZWZmZWN0aXZlbHkgZG91YmxlcyB0 aGUKICAgICAgPGVtcGhhc2lzPmFuYWx5emU8L2VtcGhhc2lzPiBjb21wb25lbnQgc2NvcmUuCiAg ICAgPC9wYXJhPgorCisgICAgPHBhcmE+CisgICAgIFRoZSA8bGluayBsaW5rZW5kPSJtb25pdG9y aW5nLXBnLXN0YXQtYXV0b3ZhY3V1bS1wcmlvcml0eS12aWV3Ij4KKyAgICAgPHN0cnVjdG5hbWU+ cGdfc3RhdF9hdXRvdmFjdXVtX3ByaW9yaXR5PC9zdHJ1Y3RuYW1lPjwvbGluaz4gdmlldyBjYW4g YmUKKyAgICAgdXNlZCB0byBpbnNwZWN0IGVhY2ggdGFibGUncyBhdXRvdmFjdXVtIG5lZWQgYW5k IHByaW9yaXR5IHNjb3JlLgorICAgIDwvcGFyYT4KICAgIDwvc2VjdDM+CiAgIDwvc2VjdDI+CiAg PC9zZWN0MT4KZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9tb25pdG9yaW5nLnNnbWwgYi9kb2Mv c3JjL3NnbWwvbW9uaXRvcmluZy5zZ21sCmluZGV4IGJiNzVlZDEwNjliLi4zOTUwOGM2ZTk3OSAx MDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL21vbml0b3Jpbmcuc2dtbAorKysgYi9kb2Mvc3JjL3Nn bWwvbW9uaXRvcmluZy5zZ21sCkBAIC00NjMsNiArNDYzLDE1IEBAIHBvc3RncmVzICAgMjcwOTMg IDAuMCAgMC4wICAzMDA5NiAgMjc1MiA/ICAgICAgICBTcyAgIDExOjM0ICAgMDowMCBwb3N0Z3Jl czogc2VyCiAgICAgICA8L2VudHJ5PgogICAgICA8L3Jvdz4KIAorICAgICA8cm93PgorICAgICAg PGVudHJ5PjxzdHJ1Y3RuYW1lPnBnX3N0YXRfYXV0b3ZhY3V1bV9wcmlvcml0eTwvc3RydWN0bmFt ZT48aW5kZXh0ZXJtPjxwcmltYXJ5PnBnX3N0YXRfYXV0b3ZhY3V1bV9wcmlvcml0eTwvcHJpbWFy eT48L2luZGV4dGVybT48L2VudHJ5PgorICAgICAgPGVudHJ5Pk9uZSByb3cgcGVyIHJlbGF0aW9u IGluIHRoZSBjdXJyZW50IGRhdGFiYXNlLCBzaG93aW5nCisgICAgICAgYSB0YWJsZSdzIGF1dG92 YWN1dW0gbmVlZCBhbmQgcHJpb3JpdHkuIFNlZQorICAgICAgIDxsaW5rIGxpbmtlbmQ9Im1vbml0 b3JpbmctcGctc3RhdC1hdXRvdmFjdXVtLXByaW9yaXR5LXZpZXciPgorICAgICAgIDxzdHJ1Y3Ru YW1lPnBnX3N0YXRfYXV0b3ZhY3V1bV9wcmlvcml0eTwvc3RydWN0bmFtZT48L2xpbms+IGZvciBk ZXRhaWxzLgorICAgICAgPC9lbnRyeT4KKyAgICAgPC9yb3c+CisKICAgICAgPHJvdz4KICAgICAg IDxlbnRyeT48c3RydWN0bmFtZT5wZ19zdGF0X2Jnd3JpdGVyPC9zdHJ1Y3RuYW1lPjxpbmRleHRl cm0+PHByaW1hcnk+cGdfc3RhdF9iZ3dyaXRlcjwvcHJpbWFyeT48L2luZGV4dGVybT48L2VudHJ5 PgogICAgICAgPGVudHJ5Pk9uZSByb3cgb25seSwgc2hvd2luZyBzdGF0aXN0aWNzIGFib3V0IHRo ZQpAQCAtMjg1Niw2ICsyODY1LDE1NSBAQCBkZXNjcmlwdGlvbiB8IFdhaXRpbmcgZm9yIGEgbmV3 bHkgaW5pdGlhbGl6ZWQgV0FMIGZpbGUgdG8gcmVhY2ggZHVyYWJsZSBzdG9yYWdlCiAgIDwvcGFy YT4KICA8L3NlY3QyPgogCisgPHNlY3QyIGlkPSJtb25pdG9yaW5nLXBnLXN0YXQtYXV0b3ZhY3V1 bS1wcmlvcml0eS12aWV3Ij4KKyAgPHRpdGxlPjxzdHJ1Y3RuYW1lPnBnX3N0YXRfYXV0b3ZhY3V1 bV9wcmlvcml0eTwvc3RydWN0bmFtZT48L3RpdGxlPgorCisgIDxpbmRleHRlcm0+CisgICA8cHJp bWFyeT5wZ19zdGF0X2F1dG92YWN1dW1fcHJpb3JpdHk8L3ByaW1hcnk+CisgIDwvaW5kZXh0ZXJt PgorCisgIDxwYXJhPgorICAgVGhlIDxzdHJ1Y3RuYW1lPnBnX3N0YXRfYXV0b3ZhY3V1bV9wcmlv cml0eTwvc3RydWN0bmFtZT4gdmlldyBjb250YWlucworICAgb25lIHJvdyBwZXIgcmVsYXRpb24g aW4gdGhlIGN1cnJlbnQgZGF0YWJhc2UsIHNob3dpbmcgd2hldGhlciBhIHRhYmxlCisgICBuZWVk cyBhdXRvdmFjdXVtIG9yIGF1dG9hbmFseXplIGFuZCBpdHMgcHJpb3JpdHkuCisgIDwvcGFyYT4K KworICA8dGFibGUgaWQ9InBnLXN0YXQtYXV0b3ZhY3V1bS1wcmlvcml0eS12aWV3IiB4cmVmbGFi ZWw9InBnX3N0YXRfYXV0b3ZhY3V1bV9wcmlvcml0eSI+CisgICA8dGl0bGU+PHN0cnVjdG5hbWU+ cGdfc3RhdF9hdXRvdmFjdXVtX3ByaW9yaXR5PC9zdHJ1Y3RuYW1lPiBWaWV3PC90aXRsZT4KKyAg IDx0Z3JvdXAgY29scz0iMSI+CisgICAgPHRoZWFkPgorICAgICA8cm93PgorICAgICAgPGVudHJ5 IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9u Ij4KKyAgICAgICBDb2x1bW4gVHlwZQorICAgICAgPC9wYXJhPgorICAgICAgPHBhcmE+CisgICAg ICAgRGVzY3JpcHRpb24KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKyAgICA8 L3RoZWFkPgorCisgICAgPHRib2R5PgorICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNh dGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAg ICA8c3RydWN0ZmllbGQ+cmVsaWQ8L3N0cnVjdGZpZWxkPiA8dHlwZT5vaWQ8L3R5cGU+CisgICAg ICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBPSUQgb2YgYSB0YWJsZQorICAgICAgPC9w YXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9s ZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgor ICAgICAgIDxzdHJ1Y3RmaWVsZD5zY2hlbWFuYW1lPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+bmFtZTwv dHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIE5hbWUgb2YgdGhlIHNj aGVtYSB0aGF0IHRoaXMgdGFibGUgaXMgaW4KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8 L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50 cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+ cmVsbmFtZTwvc3RydWN0ZmllbGQ+IDx0eXBlPm5hbWU8L3R5cGU+CisgICAgICA8L3BhcmE+Cisg ICAgICA8cGFyYT4KKyAgICAgICBOYW1lIG9mIHRoaXMgdGFibGUKKyAgICAgIDwvcGFyYT48L2Vu dHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFs b2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8 c3RydWN0ZmllbGQ+bmVlZHNfdmFjdXVtPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+Ym9vbGVhbjwvdHlw ZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRydWUgaWYgYXV0b3ZhY3V1 bSBjb25zaWRlcnMgdGhpcyB0YWJsZSBpbiBuZWVkIG9mIHZhY3V1bWluZworICAgICAgPC9wYXJh PjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0i Y2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAg ICAgIDxzdHJ1Y3RmaWVsZD5uZWVkc19hbmFseXplPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+Ym9vbGVh bjwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRydWUgaWYgYXV0 b3ZhY3V1bSBjb25zaWRlcnMgdGhpcyB0YWJsZSBpbiBuZWVkIG9mIGFuYWx5emluZworICAgICAg PC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorCisgICAgIDxyb3c+CisgICAgICA8ZW50cnkg cm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBhcmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24i PgorICAgICAgIDxzdHJ1Y3RmaWVsZD53cmFwYXJvdW5kPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+Ym9v bGVhbjwvdHlwZT4KKyAgICAgIDwvcGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFRydWUgaWYg dmFjdXVtaW5nIGlzIG5lZWRlZCB0byBwcmV2ZW50IHRyYW5zYWN0aW9uIElEIG9yCisgICAgICAg bXVsdGl4YWN0IElEIHdyYXBhcm91bmQKKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jv dz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnki PjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+c2Nv cmU8L3N0cnVjdGZpZWxkPiA8dHlwZT5kb3VibGUgcHJlY2lzaW9uPC90eXBlPgorICAgICAgPC9w YXJhPgorICAgICAgPHBhcmE+CisgICAgICAgUHJpb3JpdHkgc2NvcmUgdXNlZCBieSBhdXRvdmFj dXVtIHRvIG9yZGVyIHdoaWNoIHRhYmxlcyB0bworICAgICAgIHByb2Nlc3MgZmlyc3QuIEhpZ2hl ciB2YWx1ZXMgaW5kaWNhdGUgZ3JlYXRlciB1cmdlbmN5LiBUaGlzIGlzCisgICAgICAgdGhlIG1h eGltdW0gb2YgYWxsIGNvbXBvbmVudCBzY29yZXMgYmVsb3cuCisgICAgICA8L3BhcmE+PC9lbnRy eT4KKyAgICAgPC9yb3c+CisKKyAgICAgPHJvdz4KKyAgICAgIDxlbnRyeSByb2xlPSJjYXRhbG9n X3RhYmxlX2VudHJ5Ij48cGFyYSByb2xlPSJjb2x1bW5fZGVmaW5pdGlvbiI+CisgICAgICAgPHN0 cnVjdGZpZWxkPnhpZF9zY29yZTwvc3RydWN0ZmllbGQ+IDx0eXBlPmRvdWJsZSBwcmVjaXNpb248 L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBTY29yZSBjb21wb25l bnQgYmFzZWQgb24gdHJhbnNhY3Rpb24gSUQgYWdlIHRvIHByZXZlbnQKKyAgICAgICB0cmFuc2Fj dGlvbiBJRCB3cmFwYXJvdW5kLgorICAgICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93Pgor CisgICAgIDxyb3c+CisgICAgICA8ZW50cnkgcm9sZT0iY2F0YWxvZ190YWJsZV9lbnRyeSI+PHBh cmEgcm9sZT0iY29sdW1uX2RlZmluaXRpb24iPgorICAgICAgIDxzdHJ1Y3RmaWVsZD5teGlkX3Nj b3JlPC9zdHJ1Y3RmaWVsZD4gPHR5cGU+ZG91YmxlIHByZWNpc2lvbjwvdHlwZT4KKyAgICAgIDwv cGFyYT4KKyAgICAgIDxwYXJhPgorICAgICAgIFNjb3JlIGNvbXBvbmVudCBiYXNlZCBvbiBtdWx0 aXhhY3QgSUQgYWdlIHRvIHByZXZlbnQKKyAgICAgICBtdWx0aXhhY3QgSUQgd3JhcGFyb3VuZC4K KyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAg PGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZp bml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+dmFjdXVtX2RlYWRfc2NvcmU8L3N0cnVjdGZp ZWxkPiA8dHlwZT5kb3VibGUgcHJlY2lzaW9uPC90eXBlPgorICAgICAgPC9wYXJhPgorICAgICAg PHBhcmE+CisgICAgICAgU2NvcmUgY29tcG9uZW50IGJhc2VkIG9uIHRoZSBlc3RpbWF0ZWQgbnVt YmVyIG9mIGRlYWQgdHVwbGVzCisgICAgICAgbmVlZGluZyByZW1vdmFsIGJ5IHZhY3V1bS4KKyAg ICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVu dHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0 aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+dmFjdXVtX2luc19zY29yZTwvc3RydWN0ZmllbGQ+ IDx0eXBlPmRvdWJsZSBwcmVjaXNpb248L3R5cGU+CisgICAgICA8L3BhcmE+CisgICAgICA8cGFy YT4KKyAgICAgICBTY29yZSBjb21wb25lbnQgYmFzZWQgb24gdGhlIG51bWJlciBvZiBpbnNlcnRz IHNpbmNlIHRoZSBsYXN0CisgICAgICAgdmFjdXVtLCByZWZsZWN0aW5nIHRoZSBuZWVkIGZvciBh biBpbnNlcnQtdHJpZ2dlcmVkIHZhY3V1bS4KKyAgICAgIDwvcGFyYT48L2VudHJ5PgorICAgICA8 L3Jvdz4KKworICAgICA8cm93PgorICAgICAgPGVudHJ5IHJvbGU9ImNhdGFsb2dfdGFibGVfZW50 cnkiPjxwYXJhIHJvbGU9ImNvbHVtbl9kZWZpbml0aW9uIj4KKyAgICAgICA8c3RydWN0ZmllbGQ+ YW5hbHl6ZV9zY29yZTwvc3RydWN0ZmllbGQ+IDx0eXBlPmRvdWJsZSBwcmVjaXNpb248L3R5cGU+ CisgICAgICA8L3BhcmE+CisgICAgICA8cGFyYT4KKyAgICAgICBTY29yZSBjb21wb25lbnQgYmFz ZWQgb24gdGhlIG51bWJlciBvZiBtb2RpZmljYXRpb25zIHNpbmNlIHRoZQorICAgICAgIGxhc3Qg YW5hbHl6ZSwgcmVmbGVjdGluZyB0aGUgbmVlZCBmb3IgdXBkYXRlZCBzdGF0aXN0aWNzLgorICAg ICAgPC9wYXJhPjwvZW50cnk+CisgICAgIDwvcm93PgorICAgIDwvdGJvZHk+CisgICA8L3Rncm91 cD4KKyAgPC90YWJsZT4KKworIDwvc2VjdDI+CisKICA8c2VjdDIgaWQ9Im1vbml0b3JpbmctcGct c3RhdC1pby12aWV3Ij4KICAgPHRpdGxlPjxzdHJ1Y3RuYW1lPnBnX3N0YXRfaW88L3N0cnVjdG5h bWU+PC90aXRsZT4KIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmll d3Muc3FsIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0ZW1fdmlld3Muc3FsCmluZGV4IGU1NDAx ODAwNGRiLi40MWNkYTk5MDEzNSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9zeXN0 ZW1fdmlld3Muc3FsCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvc3lzdGVtX3ZpZXdzLnNxbApA QCAtNzk1LDYgKzc5NSwyNCBAQCBDUkVBVEUgVklFVyBwZ19zdGF0X3hhY3RfdXNlcl90YWJsZXMg QVMKICAgICBXSEVSRSBzY2hlbWFuYW1lIE5PVCBJTiAoJ3BnX2NhdGFsb2cnLCAnaW5mb3JtYXRp b25fc2NoZW1hJykgQU5ECiAgICAgICAgICAgc2NoZW1hbmFtZSAhfiAnXnBnX3RvYXN0JzsKIAor Q1JFQVRFIFZJRVcgcGdfc3RhdF9hdXRvdmFjdXVtX3ByaW9yaXR5IEFTCisgICAgU0VMRUNUCisg ICAgICAgICAgICBTLnJlbGlkLAorICAgICAgICAgICAgTi5uc3BuYW1lIEFTIHNjaGVtYW5hbWUs CisgICAgICAgICAgICBDLnJlbG5hbWUgQVMgcmVsbmFtZSwKKyAgICAgICAgICAgIFMubmVlZHNf dmFjdXVtLAorICAgICAgICAgICAgUy5uZWVkc19hbmFseXplLAorICAgICAgICAgICAgUy53cmFw YXJvdW5kLAorICAgICAgICAgICAgUy5zY29yZSwKKyAgICAgICAgICAgIFMueGlkX3Njb3JlLAor ICAgICAgICAgICAgUy5teGlkX3Njb3JlLAorICAgICAgICAgICAgUy52YWN1dW1fZGVhZF9zY29y ZSwKKyAgICAgICAgICAgIFMudmFjdXVtX2luc19zY29yZSwKKyAgICAgICAgICAgIFMuYW5hbHl6 ZV9zY29yZQorICAgIEZST00gcGdfc3RhdF9nZXRfYXV0b3ZhY3V1bV9wcmlvcml0eSgpIFMKKyAg ICAgICAgIEpPSU4gcGdfY2xhc3MgQyBPTiBDLm9pZCA9IFMucmVsaWQKKyAgICAgICAgIExFRlQg Sk9JTiBwZ19uYW1lc3BhY2UgTiBPTiBOLm9pZCA9IEMucmVsbmFtZXNwYWNlOworCiBDUkVBVEUg VklFVyBwZ19zdGF0aW9fYWxsX3RhYmxlcyBBUwogICAgIFNFTEVDVAogICAgICAgICAgICAgQy5v aWQgQVMgcmVsaWQsCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1dG92YWN1 dW0uYyBiL3NyYy9iYWNrZW5kL3Bvc3RtYXN0ZXIvYXV0b3ZhY3V1bS5jCmluZGV4IGY2YjIxMzg1 MmUzLi5jY2I0MTE4ZGY1MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRv dmFjdXVtLmMKKysrIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMKQEAgLTgw LDYgKzgwLDcgQEAKICNpbmNsdWRlICJjYXRhbG9nL3BnX25hbWVzcGFjZS5oIgogI2luY2x1ZGUg ImNvbW1hbmRzL3ZhY3V1bS5oIgogI2luY2x1ZGUgImNvbW1vbi9pbnQuaCIKKyNpbmNsdWRlICJm dW5jYXBpLmgiCiAjaW5jbHVkZSAibGliL2lsaXN0LmgiCiAjaW5jbHVkZSAibGlicHEvcHFzaWdu YWwuaCIKICNpbmNsdWRlICJtaXNjYWRtaW4uaCIKQEAgLTExMSw2ICsxMTIsNyBAQAogI2luY2x1 ZGUgInV0aWxzL3N5c2NhY2hlLmgiCiAjaW5jbHVkZSAidXRpbHMvdGltZW91dC5oIgogI2luY2x1 ZGUgInV0aWxzL3RpbWVzdGFtcC5oIgorI2luY2x1ZGUgInV0aWxzL3R1cGxlc3RvcmUuaCIKICNp bmNsdWRlICJ1dGlscy93YWl0X2V2ZW50LmgiCiAKIApAQCAtMzkwLDYgKzM5MiwxMCBAQCBzdGF0 aWMgdm9pZCBwZXJmb3JtX3dvcmtfaXRlbShBdXRvVmFjdXVtV29ya0l0ZW0gKndvcmtpdGVtKTsK IHN0YXRpYyB2b2lkIGF1dG92YWNfcmVwb3J0X2FjdGl2aXR5KGF1dG92YWNfdGFibGUgKnRhYik7 CiBzdGF0aWMgdm9pZCBhdXRvdmFjX3JlcG9ydF93b3JraXRlbShBdXRvVmFjdXVtV29ya0l0ZW0g KndvcmtpdGVtLAogCQkJCQkJCQkJY29uc3QgY2hhciAqbnNwbmFtZSwgY29uc3QgY2hhciAqcmVs bmFtZSk7CitzdGF0aWMgdm9pZCBjb21wdXRlX2F1dG92YWNfc2NvcmUoSGVhcFR1cGxlIHR1cGxl LCBUdXBsZURlc2MgcGdfY2xhc3NfZGVzYywKKwkJCQkJCQkJICBpbnQgZWZmZWN0aXZlX211bHRp eGFjdF9mcmVlemVfbWF4X2FnZSwKKwkJCQkJCQkJICBib29sICpkb3ZhY3V1bSwgYm9vbCAqZG9h bmFseXplLAorCQkJCQkJCQkgIGJvb2wgKndyYXBhcm91bmQsIEF1dG9WYWN1dW1TY29yZXMgKnNj b3Jlcyk7CiBzdGF0aWMgdm9pZCBhdmxfc2lndXNyMl9oYW5kbGVyKFNJR05BTF9BUkdTKTsKIHN0 YXRpYyBib29sIGF2X3dvcmtlcl9hdmFpbGFibGUodm9pZCk7CiBzdGF0aWMgdm9pZCBjaGVja19h dl93b3JrZXJfZ3Vjcyh2b2lkKTsKQEAgLTM2NzksMyArMzY4NSwxMTAgQEAgY2hlY2tfYXZfd29y a2VyX2d1Y3Modm9pZCkKIAkJCQkgZXJyZGV0YWlsKCJUaGUgc2VydmVyIHdpbGwgb25seSBzdGFy dCB1cCB0byBcImF1dG92YWN1dW1fd29ya2VyX3Nsb3RzXCIgKCVkKSBhdXRvdmFjdXVtIHdvcmtl cnMgYXQgYSBnaXZlbiB0aW1lLiIsCiAJCQkJCQkgICBhdXRvdmFjdXVtX3dvcmtlcl9zbG90cykp KTsKIH0KKworLyoKKyAqIGNvbXB1dGVfYXV0b3ZhY19zY29yZQorICoJCVdyYXBwZXIgYXJvdW5k IHJlbGF0aW9uX25lZWRzX3ZhY2FuYWx5emUoKSB0aGF0IGhhbmRsZXMgdGhlCisgKgkJcGVyLXJl bGF0aW9uIHNldHVwIHNpbWlsYXIgdG8gZG9fYXV0b3ZhY3V1bSgpIGJlZm9yZSBjYWxsaW5nCisg KgkJcmVsYXRpb25fbmVlZHNfdmFjYW5hbHl6ZSgpLgorICovCitzdGF0aWMgdm9pZAorY29tcHV0 ZV9hdXRvdmFjX3Njb3JlKEhlYXBUdXBsZSB0dXBsZSwgVHVwbGVEZXNjIHBnX2NsYXNzX2Rlc2Ms CisJCQkJCSAgaW50IGVmZmVjdGl2ZV9tdWx0aXhhY3RfZnJlZXplX21heF9hZ2UsCisJCQkJCSAg Ym9vbCAqZG92YWN1dW0sIGJvb2wgKmRvYW5hbHl6ZSwKKwkJCQkJICBib29sICp3cmFwYXJvdW5k LCBBdXRvVmFjdXVtU2NvcmVzICpzY29yZXMpCit7CisJRm9ybV9wZ19jbGFzcyBjbGFzc0Zvcm0g PSAoRm9ybV9wZ19jbGFzcykgR0VUU1RSVUNUKHR1cGxlKTsKKwlBdXRvVmFjT3B0cyAqcmVsb3B0 czsKKwlQZ1N0YXRfU3RhdFRhYkVudHJ5ICp0YWJlbnRyeTsKKworCXJlbG9wdHMgPSBleHRyYWN0 X2F1dG92YWNfb3B0cyh0dXBsZSwgcGdfY2xhc3NfZGVzYyk7CisKKwl0YWJlbnRyeSA9IHBnc3Rh dF9mZXRjaF9zdGF0X3RhYmVudHJ5X2V4dChjbGFzc0Zvcm0tPnJlbGlzc2hhcmVkLAorCQkJCQkJ CQkJCQkgIGNsYXNzRm9ybS0+b2lkKTsKKworCXJlbGF0aW9uX25lZWRzX3ZhY2FuYWx5emUoY2xh c3NGb3JtLT5vaWQsIHJlbG9wdHMsIGNsYXNzRm9ybSwgdGFiZW50cnksCisJCQkJCQkJICBlZmZl Y3RpdmVfbXVsdGl4YWN0X2ZyZWV6ZV9tYXhfYWdlLCB0cnVlLAorCQkJCQkJCSAgZG92YWN1dW0s IGRvYW5hbHl6ZSwgd3JhcGFyb3VuZCwgc2NvcmVzKTsKKworCWlmIChyZWxvcHRzKQorCQlwZnJl ZShyZWxvcHRzKTsKKwlpZiAodGFiZW50cnkpCisJCXBmcmVlKHRhYmVudHJ5KTsKK30KKworLyoK KyAqIHBnX3N0YXRfZ2V0X2F1dG92YWN1dW1fcHJpb3JpdHkKKyAqCQlSZXR1cm5zIHRoZSBhdXRv dmFjdXVtIHByaW9yaXR5IHNjb3JlIGZvciBlYWNoIHJlbGF0aW9uIGluIHRoZQorICoJCWN1cnJl bnQgZGF0YWJhc2UuCisgKgorICoJCVRoaXMgZm9sbG93cyB0aGUgc2FtZSBzZXR1cCBhcyBkb19h dXRvdmFjdXVtKCkuIEdsb2JhbCBzdGF0ZSBzdWNoCisgKgkJYXMgcmVjZW50WGlkL3JlY2VudE11 bHRpIGFuZCBlZmZlY3RpdmVfbXVsdGl4YWN0X2ZyZWV6ZV9tYXhfYWdlIGlzCisgKgkJY29tcHV0 ZWQgaGVyZSwgd2hpbGUgY29tcHV0ZV9hdXRvdmFjX3Njb3JlKCkgaGFuZGxlcyB0aGUgcGVyLXJl bGF0aW9uCisgKgkJc2NvcmUgY29tcHV0YXRpb24uCisgKi8KKyNkZWZpbmUgTlVNX0FWX1NDT1JF X0NPTFMgMTAKKworRGF0dW0KK3BnX3N0YXRfZ2V0X2F1dG92YWN1dW1fcHJpb3JpdHkoUEdfRlVO Q1RJT05fQVJHUykKK3sKKwlSZXR1cm5TZXRJbmZvICpyc2luZm8gPSAoUmV0dXJuU2V0SW5mbyAq KSBmY2luZm8tPnJlc3VsdGluZm87CisJUmVsYXRpb24JY2xhc3NSZWw7CisJVGFibGVTY2FuRGVz YyByZWxTY2FuOworCUhlYXBUdXBsZQl0dXBsZTsKKwlUdXBsZURlc2MJcGdfY2xhc3NfZGVzYzsK KwlpbnQJCQllZmZlY3RpdmVfbXVsdGl4YWN0X2ZyZWV6ZV9tYXhfYWdlOworCisJSW5pdE1hdGVy aWFsaXplZFNSRihmY2luZm8sIDApOworCisJZWZmZWN0aXZlX211bHRpeGFjdF9mcmVlemVfbWF4 X2FnZSA9IE11bHRpWGFjdE1lbWJlckZyZWV6ZVRocmVzaG9sZCgpOworCisJcmVjZW50WGlkID0g UmVhZE5leHRUcmFuc2FjdGlvbklkKCk7CisJcmVjZW50TXVsdGkgPSBSZWFkTmV4dE11bHRpWGFj dElkKCk7CisKKwljbGFzc1JlbCA9IHRhYmxlX29wZW4oUmVsYXRpb25SZWxhdGlvbklkLCBBY2Nl c3NTaGFyZUxvY2spOworCXBnX2NsYXNzX2Rlc2MgPSBDcmVhdGVUdXBsZURlc2NDb3B5KFJlbGF0 aW9uR2V0RGVzY3IoY2xhc3NSZWwpKTsKKworCXJlbFNjYW4gPSB0YWJsZV9iZWdpbnNjYW5fY2F0 YWxvZyhjbGFzc1JlbCwgMCwgTlVMTCk7CisJd2hpbGUgKCh0dXBsZSA9IGhlYXBfZ2V0bmV4dChy ZWxTY2FuLCBGb3J3YXJkU2NhbkRpcmVjdGlvbikpICE9IE5VTEwpCisJeworCQlGb3JtX3BnX2Ns YXNzIGNsYXNzRm9ybSA9IChGb3JtX3BnX2NsYXNzKSBHRVRTVFJVQ1QodHVwbGUpOworCQlib29s CQlkb3ZhY3V1bTsKKwkJYm9vbAkJZG9hbmFseXplOworCQlib29sCQl3cmFwYXJvdW5kOworCQlB dXRvVmFjdXVtU2NvcmVzIHNjb3JlczsKKwkJRGF0dW0JCXZhbHVlc1tOVU1fQVZfU0NPUkVfQ09M U107CisJCWJvb2wJCW51bGxzW05VTV9BVl9TQ09SRV9DT0xTXSA9IHtmYWxzZX07CisKKwkJaWYg KGNsYXNzRm9ybS0+cmVsa2luZCAhPSBSRUxLSU5EX1JFTEFUSU9OICYmCisJCQljbGFzc0Zvcm0t PnJlbGtpbmQgIT0gUkVMS0lORF9NQVRWSUVXICYmCisJCQljbGFzc0Zvcm0tPnJlbGtpbmQgIT0g UkVMS0lORF9UT0FTVFZBTFVFKQorCQkJY29udGludWU7CisKKwkJaWYgKGNsYXNzRm9ybS0+cmVs cGVyc2lzdGVuY2UgPT0gUkVMUEVSU0lTVEVOQ0VfVEVNUCkKKwkJCWNvbnRpbnVlOworCisJCWNv bXB1dGVfYXV0b3ZhY19zY29yZSh0dXBsZSwgcGdfY2xhc3NfZGVzYywKKwkJCQkJCQkgIGVmZmVj dGl2ZV9tdWx0aXhhY3RfZnJlZXplX21heF9hZ2UsCisJCQkJCQkJICAmZG92YWN1dW0sICZkb2Fu YWx5emUsICZ3cmFwYXJvdW5kLCAmc2NvcmVzKTsKKworCQl2YWx1ZXNbMF0gPSBPYmplY3RJZEdl dERhdHVtKGNsYXNzRm9ybS0+b2lkKTsKKwkJdmFsdWVzWzFdID0gQm9vbEdldERhdHVtKGRvdmFj dXVtKTsKKwkJdmFsdWVzWzJdID0gQm9vbEdldERhdHVtKGRvYW5hbHl6ZSk7CisJCXZhbHVlc1sz XSA9IEJvb2xHZXREYXR1bSh3cmFwYXJvdW5kKTsKKwkJdmFsdWVzWzRdID0gRmxvYXQ4R2V0RGF0 dW0oc2NvcmVzLm1heCk7CisJCXZhbHVlc1s1XSA9IEZsb2F0OEdldERhdHVtKHNjb3Jlcy54aWQp OworCQl2YWx1ZXNbNl0gPSBGbG9hdDhHZXREYXR1bShzY29yZXMubXhpZCk7CisJCXZhbHVlc1s3 XSA9IEZsb2F0OEdldERhdHVtKHNjb3Jlcy52YWMpOworCQl2YWx1ZXNbOF0gPSBGbG9hdDhHZXRE YXR1bShzY29yZXMudmFjX2lucyk7CisJCXZhbHVlc1s5XSA9IEZsb2F0OEdldERhdHVtKHNjb3Jl cy5hbmwpOworCisJCXR1cGxlc3RvcmVfcHV0dmFsdWVzKHJzaW5mby0+c2V0UmVzdWx0LCByc2lu Zm8tPnNldERlc2MsCisJCQkJCQkJIHZhbHVlcywgbnVsbHMpOworCX0KKwl0YWJsZV9lbmRzY2Fu KHJlbFNjYW4pOworCisJdGFibGVfY2xvc2UoY2xhc3NSZWwsIEFjY2Vzc1NoYXJlTG9jayk7CisK KwlyZXR1cm4gKERhdHVtKSAwOworfQpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9j YXR2ZXJzaW9uLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL2NhdHZlcnNpb24uaAppbmRleCA0ZDlj Y2M1Nzg5Yy4uYmNlNjQ3NTg4MjMgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvY2F0 dmVyc2lvbi5oCisrKyBiL3NyYy9pbmNsdWRlL2NhdGFsb2cvY2F0dmVyc2lvbi5oCkBAIC01Nyw2 ICs1Nyw2IEBACiAgKi8KIAogLyoJCQkJCQkJeXl5eW1tZGROICovCi0jZGVmaW5lIENBVEFMT0df VkVSU0lPTl9OTwkyMDI2MDMyNDEKKyNkZWZpbmUgQ0FUQUxPR19WRVJTSU9OX05PCTIwMjYwMzIz MQogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHJvYy5kYXQg Yi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CmluZGV4IDAxMThlOTcwZGRhLi45MWQ0 NzYxN2IwYiAxMDA2NDQKLS0tIGEvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wcm9jLmRhdAorKysg Yi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3Byb2MuZGF0CkBAIC01NjY3LDYgKzU2NjcsMTUgQEAK ICAgcHJvbmFtZSA9PiAncGdfc3RhdF9nZXRfdG90YWxfYXV0b2FuYWx5emVfdGltZScsIHByb3Zv bGF0aWxlID0+ICdzJywKICAgcHJvcGFyYWxsZWwgPT4gJ3InLCBwcm9yZXR0eXBlID0+ICdmbG9h dDgnLCBwcm9hcmd0eXBlcyA9PiAnb2lkJywKICAgcHJvc3JjID0+ICdwZ19zdGF0X2dldF90b3Rh bF9hdXRvYW5hbHl6ZV90aW1lJyB9LAoreyBvaWQgPT4gJzg0MDknLAorICBkZXNjciA9PiAnc3Rh dGlzdGljczogYXV0b3ZhY3V1bSBwcmlvcml0eSBzY29yZXMgZm9yIGFsbCByZWxhdGlvbnMnLAor ICBwcm9uYW1lID0+ICdwZ19zdGF0X2dldF9hdXRvdmFjdXVtX3ByaW9yaXR5JywgcHJvcm93cyA9 PiAnMTAwJywKKyAgcHJvcmV0c2V0ID0+ICd0JywgcHJvdm9sYXRpbGUgPT4gJ3YnLCBwcm9wYXJh bGxlbCA9PiAncicsCisgIHByb3JldHR5cGUgPT4gJ3JlY29yZCcsIHByb2FyZ3R5cGVzID0+ICcn LAorICBwcm9hbGxhcmd0eXBlcyA9PiAne29pZCxib29sLGJvb2wsYm9vbCxmbG9hdDgsZmxvYXQ4 LGZsb2F0OCxmbG9hdDgsZmxvYXQ4LGZsb2F0OH0nLAorICBwcm9hcmdtb2RlcyA9PiAne28sbyxv LG8sbyxvLG8sbyxvLG99JywKKyAgcHJvYXJnbmFtZXMgPT4gJ3tyZWxpZCxuZWVkc192YWN1dW0s bmVlZHNfYW5hbHl6ZSx3cmFwYXJvdW5kLHNjb3JlLHhpZF9zY29yZSxteGlkX3Njb3JlLHZhY3V1 bV9kZWFkX3Njb3JlLHZhY3V1bV9pbnNfc2NvcmUsYW5hbHl6ZV9zY29yZX0nLAorICBwcm9zcmMg PT4gJ3BnX3N0YXRfZ2V0X2F1dG92YWN1dW1fcHJpb3JpdHknIH0sCiB7IG9pZCA9PiAnMTkzNics IGRlc2NyID0+ICdzdGF0aXN0aWNzOiBjdXJyZW50bHkgYWN0aXZlIGJhY2tlbmQgSURzJywKICAg cHJvbmFtZSA9PiAncGdfc3RhdF9nZXRfYmFja2VuZF9pZHNldCcsIHByb3Jvd3MgPT4gJzEwMCcs IHByb3JldHNldCA9PiAndCcsCiAgIHByb3ZvbGF0aWxlID0+ICdzJywgcHJvcGFyYWxsZWwgPT4g J3InLCBwcm9yZXR0eXBlID0+ICdpbnQ0JywKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3Mv ZXhwZWN0ZWQvcnVsZXMub3V0IGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9ydWxlcy5vdXQK aW5kZXggMmIzY2Y2ZDg1NjkuLmQyZDNjM2RkMDQ4IDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL3J1bGVzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3J1 bGVzLm91dApAQCAtMTg2MCw2ICsxODYwLDIxIEBAIHBnX3N0YXRfYXJjaGl2ZXJ8IFNFTEVDVCBh cmNoaXZlZF9jb3VudCwKICAgICBsYXN0X2ZhaWxlZF90aW1lLAogICAgIHN0YXRzX3Jlc2V0CiAg ICBGUk9NIHBnX3N0YXRfZ2V0X2FyY2hpdmVyKCkgcyhhcmNoaXZlZF9jb3VudCwgbGFzdF9hcmNo aXZlZF93YWwsIGxhc3RfYXJjaGl2ZWRfdGltZSwgZmFpbGVkX2NvdW50LCBsYXN0X2ZhaWxlZF93 YWwsIGxhc3RfZmFpbGVkX3RpbWUsIHN0YXRzX3Jlc2V0KTsKK3BnX3N0YXRfYXV0b3ZhY3V1bV9w cmlvcml0eXwgU0VMRUNUIHMucmVsaWQsCisgICAgbi5uc3BuYW1lIEFTIHNjaGVtYW5hbWUsCisg ICAgYy5yZWxuYW1lLAorICAgIHMubmVlZHNfdmFjdXVtLAorICAgIHMubmVlZHNfYW5hbHl6ZSwK KyAgICBzLndyYXBhcm91bmQsCisgICAgcy5zY29yZSwKKyAgICBzLnhpZF9zY29yZSwKKyAgICBz Lm14aWRfc2NvcmUsCisgICAgcy52YWN1dW1fZGVhZF9zY29yZSwKKyAgICBzLnZhY3V1bV9pbnNf c2NvcmUsCisgICAgcy5hbmFseXplX3Njb3JlCisgICBGUk9NICgocGdfc3RhdF9nZXRfYXV0b3Zh Y3V1bV9wcmlvcml0eSgpIHMocmVsaWQsIG5lZWRzX3ZhY3V1bSwgbmVlZHNfYW5hbHl6ZSwgd3Jh cGFyb3VuZCwgc2NvcmUsIHhpZF9zY29yZSwgbXhpZF9zY29yZSwgdmFjdXVtX2RlYWRfc2NvcmUs IHZhY3V1bV9pbnNfc2NvcmUsIGFuYWx5emVfc2NvcmUpCisgICAgIEpPSU4gcGdfY2xhc3MgYyBP TiAoKGMub2lkID0gcy5yZWxpZCkpKQorICAgICBMRUZUIEpPSU4gcGdfbmFtZXNwYWNlIG4gT04g KChuLm9pZCA9IGMucmVsbmFtZXNwYWNlKSkpOwogcGdfc3RhdF9iZ3dyaXRlcnwgU0VMRUNUIHBn X3N0YXRfZ2V0X2Jnd3JpdGVyX2J1Zl93cml0dGVuX2NsZWFuKCkgQVMgYnVmZmVyc19jbGVhbiwK ICAgICBwZ19zdGF0X2dldF9iZ3dyaXRlcl9tYXh3cml0dGVuX2NsZWFuKCkgQVMgbWF4d3JpdHRl bl9jbGVhbiwKICAgICBwZ19zdGF0X2dldF9idWZfYWxsb2MoKSBBUyBidWZmZXJzX2FsbG9jLApk aWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC92YWN1dW0ub3V0IGIvc3JjL3Rl c3QvcmVncmVzcy9leHBlY3RlZC92YWN1dW0ub3V0CmluZGV4IGQ0Njk2YmMzMzI1Li4wZDdkMWQ4 N2MwYiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC92YWN1dW0ub3V0Cisr KyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvdmFjdXVtLm91dApAQCAtNzMwLDMgKzczMCwz MyBAQCBTRUxFQ1QgcGdfY29sdW1uX3RvYXN0X2NodW5rX2lkKGYxKSA9IDonaWRfMl9jaHVuaycg QVMgc2FtZV9jaHVuawogKDEgcm93KQogCiBEUk9QIFRBQkxFIHZhY19yZXdyaXRlX3RvYXN0Owor LS0gVGVzdCBwZ19zdGF0X2F1dG92YWN1dW1fcHJpb3JpdHkgdmlldy4gT25seSB4aWRfc2NvcmUg YW5kIG14aWRfc2NvcmUKKy0tIGFyZSBub3QgdGVzdGVkLCBhcyB0aGV5IG5lZWQgdG8gY29uc3Vt ZSBlbm91Z2ggWElEJ3MuCitDUkVBVEUgVEFCTEUgdmFjdXVtX3ByaW9yaXR5X3Rlc3QgKGlkIGlu dCkKKyAgV0lUSCAoYXV0b3ZhY3V1bV9hbmFseXplX3RocmVzaG9sZCA9IDEsCisgICAgICAgIGF1 dG92YWN1dW1fdmFjdXVtX3RocmVzaG9sZCA9IDEsCisgICAgICAgIGF1dG92YWN1dW1fdmFjdXVt X2luc2VydF90aHJlc2hvbGQgPSAxKTsKK0lOU0VSVCBJTlRPIHZhY3V1bV9wcmlvcml0eV90ZXN0 IFNFTEVDVCAxOworSU5TRVJUIElOVE8gdmFjdXVtX3ByaW9yaXR5X3Rlc3QgU0VMRUNUIDI7CitE RUxFVEUgRlJPTSB2YWN1dW1fcHJpb3JpdHlfdGVzdCBXSEVSRSBpZCA9IDE7CitERUxFVEUgRlJP TSB2YWN1dW1fcHJpb3JpdHlfdGVzdCBXSEVSRSBpZCA9IDI7CistLSBmb3JjZSB2YWN1dW0gc3Rh dHMgdG8gYmUgZmx1c2hlZAorU0VMRUNUIHBnX3N0YXRfZm9yY2VfbmV4dF9mbHVzaCgpOworIHBn X3N0YXRfZm9yY2VfbmV4dF9mbHVzaCAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgCiso MSByb3cpCisKK1NFTEVDVCBuZWVkc192YWN1dW0sIG5lZWRzX2FuYWx5emUsCisgIHNjb3JlID4g MCBBUyBzY29yZSwKKyAgdmFjdXVtX2RlYWRfc2NvcmUgPiAwIEFTIHZhY3V1bV9kZWFkX3Njb3Jl LAorICB2YWN1dW1faW5zX3Njb3JlID4gMCBBUyB2YWN1dW1faW5zX3Njb3JlLAorICBhbmFseXpl X3Njb3JlID4gMCBBUyBhbmFseXplX3Njb3JlCisgIEZST00gcGdfc3RhdF9hdXRvdmFjdXVtX3By aW9yaXR5CisgIFdIRVJFIHJlbG5hbWUgPSAndmFjdXVtX3ByaW9yaXR5X3Rlc3QnOworIG5lZWRz X3ZhY3V1bSB8IG5lZWRzX2FuYWx5emUgfCBzY29yZSB8IHZhY3V1bV9kZWFkX3Njb3JlIHwgdmFj dXVtX2luc19zY29yZSB8IGFuYWx5emVfc2NvcmUgCistLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0t LS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0KKyB0ICAgICAgICAgICAgfCB0ICAgICAgICAgICAgIHwgdCAgICAgfCB0ICAg ICAgICAgICAgICAgICB8IHQgICAgICAgICAgICAgICAgfCB0CisoMSByb3cpCisKK0RST1AgVEFC TEUgdmFjdXVtX3ByaW9yaXR5X3Rlc3Q7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3Nx bC92YWN1dW0uc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdmFjdXVtLnNxbAppbmRleCAyNDdi OGUyM2IyMy4uN2E1MDg1OGVlZWEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3Zh Y3V1bS5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvdmFjdXVtLnNxbApAQCAtNTI1LDMg KzUyNSwyNCBAQCBTRUxFQ1QgaWQsIHBnX2NvbHVtbl90b2FzdF9jaHVua19pZChmMSkgSVMgTlVM TCBBUyBmMV9jaHVua19udWxsLAogU0VMRUNUIHBnX2NvbHVtbl90b2FzdF9jaHVua19pZChmMSkg PSA6J2lkXzJfY2h1bmsnIEFTIHNhbWVfY2h1bmsKICAgRlJPTSB2YWNfcmV3cml0ZV90b2FzdCBX SEVSRSBpZCA9IDI7CiBEUk9QIFRBQkxFIHZhY19yZXdyaXRlX3RvYXN0OworCistLSBUZXN0IHBn X3N0YXRfYXV0b3ZhY3V1bV9wcmlvcml0eSB2aWV3LiBPbmx5IHhpZF9zY29yZSBhbmQgbXhpZF9z Y29yZQorLS0gYXJlIG5vdCB0ZXN0ZWQsIGFzIHRoZXkgbmVlZCB0byBjb25zdW1lIGVub3VnaCBY SUQncy4KK0NSRUFURSBUQUJMRSB2YWN1dW1fcHJpb3JpdHlfdGVzdCAoaWQgaW50KQorICBXSVRI IChhdXRvdmFjdXVtX2FuYWx5emVfdGhyZXNob2xkID0gMSwKKyAgICAgICAgYXV0b3ZhY3V1bV92 YWN1dW1fdGhyZXNob2xkID0gMSwKKyAgICAgICAgYXV0b3ZhY3V1bV92YWN1dW1faW5zZXJ0X3Ro cmVzaG9sZCA9IDEpOworSU5TRVJUIElOVE8gdmFjdXVtX3ByaW9yaXR5X3Rlc3QgU0VMRUNUIDE7 CitJTlNFUlQgSU5UTyB2YWN1dW1fcHJpb3JpdHlfdGVzdCBTRUxFQ1QgMjsKK0RFTEVURSBGUk9N IHZhY3V1bV9wcmlvcml0eV90ZXN0IFdIRVJFIGlkID0gMTsKK0RFTEVURSBGUk9NIHZhY3V1bV9w cmlvcml0eV90ZXN0IFdIRVJFIGlkID0gMjsKKy0tIGZvcmNlIHZhY3V1bSBzdGF0cyB0byBiZSBm bHVzaGVkCitTRUxFQ1QgcGdfc3RhdF9mb3JjZV9uZXh0X2ZsdXNoKCk7CitTRUxFQ1QgbmVlZHNf dmFjdXVtLCBuZWVkc19hbmFseXplLAorICBzY29yZSA+IDAgQVMgc2NvcmUsCisgIHZhY3V1bV9k ZWFkX3Njb3JlID4gMCBBUyB2YWN1dW1fZGVhZF9zY29yZSwKKyAgdmFjdXVtX2luc19zY29yZSA+ IDAgQVMgdmFjdXVtX2luc19zY29yZSwKKyAgYW5hbHl6ZV9zY29yZSA+IDAgQVMgYW5hbHl6ZV9z Y29yZQorICBGUk9NIHBnX3N0YXRfYXV0b3ZhY3V1bV9wcmlvcml0eQorICBXSEVSRSByZWxuYW1l ID0gJ3ZhY3V1bV9wcmlvcml0eV90ZXN0JzsKK0RST1AgVEFCTEUgdmFjdXVtX3ByaW9yaXR5X3Rl c3Q7ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQotLSAKMi40Ny4zCgo= --000000000000838311064e09a9cb Content-Type: application/octet-stream; name="v1-0001-Add-force_scores-option-to-relation_needs_vacanal.patch" Content-Disposition: attachment; filename="v1-0001-Add-force_scores-option-to-relation_needs_vacanal.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mn9inpsb1 RnJvbSA4NWU5OTY4MWNjNzIwN2I4ZTYyYTBiYThlNjA0ZmRlMzZiZDVmNmU0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTYW1pIEltc2VpaCA8c2FtaW1zZWloQGdtYWlsLmNvbT4KRGF0 ZTogRnJpLCAyNyBNYXIgMjAyNiAyMDozODoyNiArMDAwMApTdWJqZWN0OiBbUEFUQ0ggdjEgMS8y XSBBZGQgZm9yY2Vfc2NvcmVzIG9wdGlvbiB0byByZWxhdGlvbl9uZWVkc192YWNhbmFseXplCgpB IGZ1dHVyZSBjb21taXQgd2lsbCBuZWVkIHRoZSBhYmlsaXR5IGZvciByZWxhdGlvbl9uZWVkc192 YWNhbmFseXplKCkKdG8gZm9yY2VmdWxseSBjYWxjdWxhdGUgYW4gYXV0b3ZhY3V1bSBwcmlvcml0 eSBzY29yZSBldmVuIGlmIGF1dG92YWN1dW0Kd291bGQgb3RoZXJ3aXNlIGFiYW5kb24gdGhlIGNv bXB1dGF0aW9uIG9mIHRoZSBzY29yZS4gVGhpcyBpcyBuZWVkZWQgZm9yCnRvb2xzIHRoYXQgd2lz aCB0byBpbnRyb3NwZWN0IHRoZSBzY29yZSBvdXRzaWRlIG9mIHRoZSBub3JtYWwgcGF0aCBvZgpk b19hdXRvdmFjdXVtKCkuCi0tLQogc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVtLmMg fCA4MSArKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQogMSBmaWxlIGNoYW5nZWQsIDQ4IGlu c2VydGlvbnMoKyksIDMzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bv c3RtYXN0ZXIvYXV0b3ZhY3V1bS5jIGIvc3JjL2JhY2tlbmQvcG9zdG1hc3Rlci9hdXRvdmFjdXVt LmMKaW5kZXggZDY5NWYxZGU0YmQuLmY2YjIxMzg1MmUzIDEwMDY0NAotLS0gYS9zcmMvYmFja2Vu ZC9wb3N0bWFzdGVyL2F1dG92YWN1dW0uYworKysgYi9zcmMvYmFja2VuZC9wb3N0bWFzdGVyL2F1 dG92YWN1dW0uYwpAQCAtMzc4LDYgKzM3OCw3IEBAIHN0YXRpYyB2b2lkIHJlbGF0aW9uX25lZWRz X3ZhY2FuYWx5emUoT2lkIHJlbGlkLCBBdXRvVmFjT3B0cyAqcmVsb3B0cywKIAkJCQkJCQkJCSAg Rm9ybV9wZ19jbGFzcyBjbGFzc0Zvcm0sCiAJCQkJCQkJCQkgIFBnU3RhdF9TdGF0VGFiRW50cnkg KnRhYmVudHJ5LAogCQkJCQkJCQkJICBpbnQgZWZmZWN0aXZlX211bHRpeGFjdF9mcmVlemVfbWF4 X2FnZSwKKwkJCQkJCQkJCSAgYm9vbCBmb3JjZV9zY29yZXMsCiAJCQkJCQkJCQkgIGJvb2wgKmRv dmFjdXVtLCBib29sICpkb2FuYWx5emUsIGJvb2wgKndyYXBhcm91bmQsCiAJCQkJCQkJCQkgIEF1 dG9WYWN1dW1TY29yZXMgKnNjb3Jlcyk7CiAKQEAgLTIwNzUsNiArMjA3Niw3IEBAIGRvX2F1dG92 YWN1dW0odm9pZCkKIAkJLyogQ2hlY2sgaWYgaXQgbmVlZHMgdmFjdXVtIG9yIGFuYWx5emUgKi8K IAkJcmVsYXRpb25fbmVlZHNfdmFjYW5hbHl6ZShyZWxpZCwgcmVsb3B0cywgY2xhc3NGb3JtLCB0 YWJlbnRyeSwKIAkJCQkJCQkJICBlZmZlY3RpdmVfbXVsdGl4YWN0X2ZyZWV6ZV9tYXhfYWdlLAor CQkJCQkJCQkgIGZhbHNlLAogCQkJCQkJCQkgICZkb3ZhY3V1bSwgJmRvYW5hbHl6ZSwgJndyYXBh cm91bmQsCiAJCQkJCQkJCSAgJnNjb3Jlcyk7CiAKQEAgLTIxNzUsNiArMjE3Nyw3IEBAIGRvX2F1 dG92YWN1dW0odm9pZCkKIAogCQlyZWxhdGlvbl9uZWVkc192YWNhbmFseXplKHJlbGlkLCByZWxv cHRzLCBjbGFzc0Zvcm0sIHRhYmVudHJ5LAogCQkJCQkJCQkgIGVmZmVjdGl2ZV9tdWx0aXhhY3Rf ZnJlZXplX21heF9hZ2UsCisJCQkJCQkJCSAgZmFsc2UsCiAJCQkJCQkJCSAgJmRvdmFjdXVtLCAm ZG9hbmFseXplLCAmd3JhcGFyb3VuZCwKIAkJCQkJCQkJICAmc2NvcmVzKTsKIApAQCAtMjk5Myw2 ICsyOTk2LDcgQEAgcmVjaGVja19yZWxhdGlvbl9uZWVkc192YWNhbmFseXplKE9pZCByZWxpZCwK IAogCXJlbGF0aW9uX25lZWRzX3ZhY2FuYWx5emUocmVsaWQsIGF2b3B0cywgY2xhc3NGb3JtLCB0 YWJlbnRyeSwKIAkJCQkJCQkgIGVmZmVjdGl2ZV9tdWx0aXhhY3RfZnJlZXplX21heF9hZ2UsCisJ CQkJCQkJICBmYWxzZSwKIAkJCQkJCQkgIGRvdmFjdXVtLCBkb2FuYWx5emUsIHdyYXBhcm91bmQs CiAJCQkJCQkJICAmc2NvcmVzKTsKIApAQCAtMzA4MCw2ICszMDg0LDkgQEAgcmVjaGVja19yZWxh dGlvbl9uZWVkc192YWNhbmFseXplKE9pZCByZWxpZCwKICAqIFRoZSBhdXRvdmFjdXVtIHRhYmxl IHNjb3JlIGlzIHJldHVybmVkIGluIHNjb3Jlcy0+bWF4LiAgVGhlIGNvbXBvbmVudCBzY29yZXMK ICAqIGFyZSBhbHNvIHJldHVybmVkIGluIHRoZSAic2NvcmVzIiBhcmd1bWVudCB2aWEgdGhlIG90 aGVyIG1lbWJlcnMgb2YgdGhlCiAgKiBBdXRvVmFjdXVtU2NvcmVzIHN0cnVjdC4KKyAqCisgKiBm b3JjZV9zY29yZXMgc2V0IHRvIHRydWUgZm9yY2VzIHRoZSBjb21wdXRhdGlvbiBvZiBhIHNjb3Jl LiBUaGlzIGlzIHVzZWZ1bCBmb3IKKyAqIHRvb2xzIHRoYXQgd2lzaCB0byBpbnNwZWN0IHNjb3Jl cyBvdXRzaWRlIG9mIHRoZSBkb192YWN1dW0oKSBwYXRoLgogICovCiBzdGF0aWMgdm9pZAogcmVs YXRpb25fbmVlZHNfdmFjYW5hbHl6ZShPaWQgcmVsaWQsCkBAIC0zMDg3LDYgKzMwOTQsNyBAQCBy ZWxhdGlvbl9uZWVkc192YWNhbmFseXplKE9pZCByZWxpZCwKIAkJCQkJCSAgRm9ybV9wZ19jbGFz cyBjbGFzc0Zvcm0sCiAJCQkJCQkgIFBnU3RhdF9TdGF0VGFiRW50cnkgKnRhYmVudHJ5LAogCQkJ CQkJICBpbnQgZWZmZWN0aXZlX211bHRpeGFjdF9mcmVlemVfbWF4X2FnZSwKKwkJCQkJCSAgYm9v bCBmb3JjZV9zY29yZXMsCiAgLyogb3V0cHV0IHBhcmFtcyBiZWxvdyAqLwogCQkJCQkJICBib29s ICpkb3ZhY3V1bSwKIAkJCQkJCSAgYm9vbCAqZG9hbmFseXplLApAQCAtMzI1MiwxOCArMzI2MCwy MSBAQCByZWxhdGlvbl9uZWVkc192YWNhbmFseXplKE9pZCByZWxpZCwKIAkJKmRvdmFjdXVtID0g dHJ1ZTsKIAl9CiAKLQkvKiBVc2VyIGRpc2FibGVkIGl0IGluIHBnX2NsYXNzLnJlbG9wdGlvbnM/ ICAoQnV0IGlnbm9yZSBpZiBhdCByaXNrKSAqLwotCWlmICghYXZfZW5hYmxlZCAmJiAhZm9yY2Vf dmFjdXVtKQorCS8qCisJICogVXNlciBkaXNhYmxlZCBpdCBpbiBwZ19jbGFzcy5yZWxvcHRpb25z PyAgKEJ1dCBpZ25vcmUgaWYgYXQgcmlzayBvcgorCSAqIGZvcmNlZCkKKwkgKi8KKwlpZiAoIWZv cmNlX3Njb3JlcyAmJiAhYXZfZW5hYmxlZCAmJiAhZm9yY2VfdmFjdXVtKQogCQlyZXR1cm47CiAK IAkvKgotCSAqIElmIHdlIGZvdW5kIHN0YXRzIGZvciB0aGUgdGFibGUsIGFuZCBhdXRvdmFjdXVt IGlzIGN1cnJlbnRseSBlbmFibGVkLAotCSAqIG1ha2UgYSB0aHJlc2hvbGQtYmFzZWQgZGVjaXNp b24gd2hldGhlciB0byB2YWN1dW0gYW5kL29yIGFuYWx5emUuICBJZgotCSAqIGF1dG92YWN1dW0g aXMgY3VycmVudGx5IGRpc2FibGVkLCB3ZSBtdXN0IGJlIGhlcmUgZm9yIGFudGktd3JhcGFyb3Vu ZAotCSAqIHZhY3V1bWluZyBvbmx5LCBzbyBkb24ndCB2YWN1dW0gKG9yIGFuYWx5emUpIGFueXRo aW5nIHRoYXQncyBub3QgYmVpbmcKLQkgKiBmb3JjZWQuCisJICogSWYgd2UgZm91bmQgc3RhdHMg Zm9yIHRoZSB0YWJsZSwgYW5kIGF1dG92YWN1dW0gaXMgY3VycmVudGx5IGVuYWJsZWQKKwkgKiAo b3Igc2NvcmVzIGFyZSBmb3JjZWQpLCBtYWtlIGEgdGhyZXNob2xkLWJhc2VkIGRlY2lzaW9uIHdo ZXRoZXIgdG8KKwkgKiB2YWN1dW0gYW5kL29yIGFuYWx5emUuICBJZiBhdXRvdmFjdXVtIGlzIGN1 cnJlbnRseSBkaXNhYmxlZCwgd2UgbXVzdCBiZQorCSAqIGhlcmUgZm9yIGFudGktd3JhcGFyb3Vu ZCB2YWN1dW1pbmcgb25seSwgc28gZG9uJ3QgdmFjdXVtIChvciBhbmFseXplKQorCSAqIGFueXRo aW5nIHRoYXQncyBub3QgYmVpbmcgZm9yY2VkLgogCSAqLwotCWlmICh0YWJlbnRyeSAmJiBBdXRv VmFjdXVtaW5nQWN0aXZlKCkpCisJaWYgKHRhYmVudHJ5ICYmIChBdXRvVmFjdXVtaW5nQWN0aXZl KCkgfHwgZm9yY2Vfc2NvcmVzKSkKIAl7CiAJCWZsb2F0NAkJcGNudF91bmZyb3plbiA9IDE7CiAJ CWZsb2F0NAkJcmVsdHVwbGVzID0gY2xhc3NGb3JtLT5yZWx0dXBsZXM7CkBAIC0zMzA0LDMyICsz MzE1LDMzIEBAIHJlbGF0aW9uX25lZWRzX3ZhY2FuYWx5emUoT2lkIHJlbGlkLAogCQlhbmx0aHJl c2ggPSAoZmxvYXQ0KSBhbmxfYmFzZV90aHJlc2ggKyBhbmxfc2NhbGVfZmFjdG9yICogcmVsdHVw bGVzOwogCiAJCS8qCi0JCSAqIERldGVybWluZSBpZiB0aGlzIHRhYmxlIG5lZWRzIHZhY3V1bSwg YW5kIHVwZGF0ZSB0aGUgc2NvcmUgaWYgaXQKLQkJICogZG9lcy4KKwkJICogVXBkYXRlIHRoZSB2 YWN1dW0gc2NvcmUgYW5kIGRldGVybWluZSBpZiB0aGlzIHRhYmxlIG5lZWRzIHZhY3V1bQogCQkg Ki8KKwkJc2NvcmVzLT52YWMgPSAoZG91YmxlKSB2YWN0dXBsZXMgLyBNYXgodmFjdGhyZXNoLCAx KTsKKwkJc2NvcmVzLT52YWMgKj0gYXV0b3ZhY3V1bV92YWN1dW1fc2NvcmVfd2VpZ2h0OworCQlz Y29yZXMtPm1heCA9IE1heChzY29yZXMtPm1heCwgc2NvcmVzLT52YWMpOwogCQlpZiAodmFjdHVw bGVzID4gdmFjdGhyZXNoKQotCQl7Ci0JCQlzY29yZXMtPnZhYyA9IChkb3VibGUpIHZhY3R1cGxl cyAvIE1heCh2YWN0aHJlc2gsIDEpOwotCQkJc2NvcmVzLT52YWMgKj0gYXV0b3ZhY3V1bV92YWN1 dW1fc2NvcmVfd2VpZ2h0OwotCQkJc2NvcmVzLT5tYXggPSBNYXgoc2NvcmVzLT5tYXgsIHNjb3Jl cy0+dmFjKTsKIAkJCSpkb3ZhY3V1bSA9IHRydWU7Ci0JCX0KIAotCQlpZiAodmFjX2luc19iYXNl X3RocmVzaCA+PSAwICYmIGluc3R1cGxlcyA+IHZhY2luc3RocmVzaCkKKwkJLyoKKwkJICogRGl0 dG8gZm9yIGluc2VydCB2YWN1dW0KKwkJICovCisJCWlmICh2YWNfaW5zX2Jhc2VfdGhyZXNoID49 IDApCiAJCXsKIAkJCXNjb3Jlcy0+dmFjX2lucyA9IChkb3VibGUpIGluc3R1cGxlcyAvIE1heCh2 YWNpbnN0aHJlc2gsIDEpOwogCQkJc2NvcmVzLT52YWNfaW5zICo9IGF1dG92YWN1dW1fdmFjdXVt X2luc2VydF9zY29yZV93ZWlnaHQ7CiAJCQlzY29yZXMtPm1heCA9IE1heChzY29yZXMtPm1heCwg c2NvcmVzLT52YWNfaW5zKTsKLQkJCSpkb3ZhY3V1bSA9IHRydWU7CiAJCX0KKwkJaWYgKHZhY19p bnNfYmFzZV90aHJlc2ggPj0gMCAmJiBpbnN0dXBsZXMgPiB2YWNpbnN0aHJlc2gpCisJCQkqZG92 YWN1dW0gPSB0cnVlOwogCiAJCS8qCiAJCSAqIERldGVybWluZSBpZiB0aGlzIHRhYmxlIG5lZWRz IGFuYWx5emUsIGFuZCB1cGRhdGUgdGhlIHNjb3JlIGlmIGl0CiAJCSAqIGRvZXMuICBOb3RlIHRo YXQgd2UgZG9uJ3QgYW5hbHl6ZSBUT0FTVCB0YWJsZXMgYW5kIHBnX3N0YXRpc3RpYy4KIAkJICov Ci0JCWlmIChhbmx0dXBsZXMgPiBhbmx0aHJlc2ggJiYKLQkJCXJlbGlkICE9IFN0YXRpc3RpY1Jl bGF0aW9uSWQgJiYKLQkJCWNsYXNzRm9ybS0+cmVsa2luZCAhPSBSRUxLSU5EX1RPQVNUVkFMVUUp CisJCWlmICgoYW5sdHVwbGVzID4gYW5sdGhyZXNoICYmCisJCQkgcmVsaWQgIT0gU3RhdGlzdGlj UmVsYXRpb25JZCAmJgorCQkJIGNsYXNzRm9ybS0+cmVsa2luZCAhPSBSRUxLSU5EX1RPQVNUVkFM VUUpKQogCQl7CiAJCQlzY29yZXMtPmFubCA9IChkb3VibGUpIGFubHR1cGxlcyAvIE1heChhbmx0 aHJlc2gsIDEpOwogCQkJc2NvcmVzLT5hbmwgKj0gYXV0b3ZhY3V1bV9hbmFseXplX3Njb3JlX3dl aWdodDsKQEAgLTMzMzcsMTkgKzMzNDksMjIgQEAgcmVsYXRpb25fbmVlZHNfdmFjYW5hbHl6ZShP aWQgcmVsaWQsCiAJCQkqZG9hbmFseXplID0gdHJ1ZTsKIAkJfQogCi0JCWlmICh2YWNfaW5zX2Jh c2VfdGhyZXNoID49IDApCi0JCQllbG9nKERFQlVHMywgIiVzOiB2YWM6ICUuMGYgKHRocmVzaCAl LjBmLCBzY29yZSAlLjJmKSwgaW5zOiAlLjBmICh0aHJlc2ggJS4wZiwgc2NvcmUgJS4yZiksIGFu bDogJS4wZiAodGhyZXNoICUuMGYsIHNjb3JlICUuMmYpLCB4aWQgc2NvcmU6ICUuMmYsIG14aWQg c2NvcmU6ICUuMmYiLAotCQkJCSBOYW1lU3RyKGNsYXNzRm9ybS0+cmVsbmFtZSksCi0JCQkJIHZh Y3R1cGxlcywgdmFjdGhyZXNoLCBzY29yZXMtPnZhYywKLQkJCQkgaW5zdHVwbGVzLCB2YWNpbnN0 aHJlc2gsIHNjb3Jlcy0+dmFjX2lucywKLQkJCQkgYW5sdHVwbGVzLCBhbmx0aHJlc2gsIHNjb3Jl cy0+YW5sLAotCQkJCSBzY29yZXMtPnhpZCwgc2NvcmVzLT5teGlkKTsKLQkJZWxzZQotCQkJZWxv ZyhERUJVRzMsICIlczogdmFjOiAlLjBmICh0aHJlc2ggJS4wZiwgc2NvcmUgJS4yZiksIGluczog KGRpc2FibGVkKSwgYW5sOiAlLjBmICh0aHJlc2ggJS4wZiwgc2NvcmUgJS4yZiksIHhpZCBzY29y ZTogJS4yZiwgbXhpZCBzY29yZTogJS4yZiIsCi0JCQkJIE5hbWVTdHIoY2xhc3NGb3JtLT5yZWxu YW1lKSwKLQkJCQkgdmFjdHVwbGVzLCB2YWN0aHJlc2gsIHNjb3Jlcy0+dmFjLAotCQkJCSBhbmx0 dXBsZXMsIGFubHRocmVzaCwgc2NvcmVzLT5hbmwsCi0JCQkJIHNjb3Jlcy0+eGlkLCBzY29yZXMt Pm14aWQpOworCQlpZiAoIWZvcmNlX3Njb3JlcykKKwkJeworCQkJaWYgKHZhY19pbnNfYmFzZV90 aHJlc2ggPj0gMCkKKwkJCQllbG9nKERFQlVHMywgIiVzOiB2YWM6ICUuMGYgKHRocmVzaCAlLjBm LCBzY29yZSAlLjJmKSwgaW5zOiAlLjBmICh0aHJlc2ggJS4wZiwgc2NvcmUgJS4yZiksIGFubDog JS4wZiAodGhyZXNoICUuMGYsIHNjb3JlICUuMmYpLCB4aWQgc2NvcmU6ICUuMmYsIG14aWQgc2Nv cmU6ICUuMmYiLAorCQkJCQkgTmFtZVN0cihjbGFzc0Zvcm0tPnJlbG5hbWUpLAorCQkJCQkgdmFj dHVwbGVzLCB2YWN0aHJlc2gsIHNjb3Jlcy0+dmFjLAorCQkJCQkgaW5zdHVwbGVzLCB2YWNpbnN0 aHJlc2gsIHNjb3Jlcy0+dmFjX2lucywKKwkJCQkJIGFubHR1cGxlcywgYW5sdGhyZXNoLCBzY29y ZXMtPmFubCwKKwkJCQkJIHNjb3Jlcy0+eGlkLCBzY29yZXMtPm14aWQpOworCQkJZWxzZQorCQkJ CWVsb2coREVCVUczLCAiJXM6IHZhYzogJS4wZiAodGhyZXNoICUuMGYsIHNjb3JlICUuMmYpLCBp bnM6IChkaXNhYmxlZCksIGFubDogJS4wZiAodGhyZXNoICUuMGYsIHNjb3JlICUuMmYpLCB4aWQg c2NvcmU6ICUuMmYsIG14aWQgc2NvcmU6ICUuMmYiLAorCQkJCQkgTmFtZVN0cihjbGFzc0Zvcm0t PnJlbG5hbWUpLAorCQkJCQkgdmFjdHVwbGVzLCB2YWN0aHJlc2gsIHNjb3Jlcy0+dmFjLAorCQkJ CQkgYW5sdHVwbGVzLCBhbmx0aHJlc2gsIHNjb3Jlcy0+YW5sLAorCQkJCQkgc2NvcmVzLT54aWQs IHNjb3Jlcy0+bXhpZCk7CisJCX0KIAl9CiB9CiAKLS0gCjIuNDcuMwoK --000000000000838311064e09a9cb--