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 1wFGsu-004upF-0Z for pgsql-hackers@arkaria.postgresql.org; Tue, 21 Apr 2026 19:35:48 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wFGss-00AFfR-0M for pgsql-hackers@arkaria.postgresql.org; Tue, 21 Apr 2026 19:35: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 1wFGsr-00AFfJ-1B for pgsql-hackers@lists.postgresql.org; Tue, 21 Apr 2026 19:35:45 +0000 Received: from mail-oa1-x31.google.com ([2001:4860:4864:20::31]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wFGsp-000000028dQ-0WL9 for pgsql-hackers@postgresql.org; Tue, 21 Apr 2026 19:35:44 +0000 Received: by mail-oa1-x31.google.com with SMTP id 586e51a60fabf-4233e152457so3264448fac.1 for ; Tue, 21 Apr 2026 12:35:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1776800143; cv=none; d=google.com; s=arc-20240605; b=jVjSc6S4nA4c8izrEwBpZBVV7gB9uVujjVmmfcDQoFzegYtJUZoOt69Ja44SQyec4w Heh5wHLsNvEpGmokSXLdUCvmJI9BqWazfdsQm1tprQYE6iofO2sEwt84zrVqCzbLREhc EZAv9MlGmffVC/YgakkFUZhlRL0VKBTalkV0W0PE5/FWA3DSZTPuIaD/Wt/ca51voWGY AnSxTxb8n7e1a/e5bQmeptzArDUQOXx5OUBVoD4+1p7VhbWcvu3f+zU9aAaYf/3Ku6W5 0dKhNxFBi+c3Pb9WARWrXKu9Icl6wZcWg5qWmkU/1dYeCNBv7p/qBE5FNObs6BGUeaCq ab7A== 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=SJ3M17WKxrwQspLMceDNy7V09aorPoQnQk9xylQEksk=; fh=gB59x4LJnhUR4Xb4wrVJPodUQKoI9+AkBFtlJnDiEck=; b=hKwYjhMEk+Pu+Ax4NKakVJwCozW8wi0a4qVLgpLR9awnqAKhqesO9vEIm/QoJZHEl7 AjTYWjJdYFZIPEZeKH82v6WhNug2rN2ryvgZ26166Yva9ZeAN/XtZHibo7NC5dSTD44o UMOKqedQL+kEgYOcQ9Du8udcj2pb6fWMtsktQ4UScjbLX6BAXYKc/M9l5RRf5LUaHKYx v73e5REScJ1VfHHxJC4tIuUQFbJW9IAny1h3TtZaZXf0fcw3PPrHuuUTx8vtGJz3q26L eeKMGEmcpPNtFUpRr2kXGXoBq0j7+veF87yjbfHBCQJH9dtIIHzv+S9ORevTwaQ2KUFX gERQ==; 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=1776800143; x=1777404943; 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=SJ3M17WKxrwQspLMceDNy7V09aorPoQnQk9xylQEksk=; b=lPVc3OwZGnsHoZl+W8CUw4rnk5PoKxbVY0E0vYxoOARHN2T+vLS3gaprQgbNehqJ7G OFct3s6YxsBusgJubdvS8pxNoqp9EhW0yMb3znQaOsZFGZdvPZhatEvyY5YuVvPclOIK 0MgLQf8y8B6apbXLocVyyWfNgWg8jTGaNT5XXDakHV8bRRqU+e7yI0cSjNjJAsqgspom gNOFE+QheT9PcvxUdCOkI090QkXqhWhD92HmE3vQ82pedruXN4TyFVAgbBUTIx0cgglC JsQ1ZuX31j9cGHeLnGnqw3tTIjKTlH4OuT99X493S1aut8yyOM7xLnfcNUW1OWB/sUOQ 3uHA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776800143; x=1777404943; 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=SJ3M17WKxrwQspLMceDNy7V09aorPoQnQk9xylQEksk=; b=Vq/ey59z0JOiwfMpPEWx6iFL8TPJYyLr5q3cj2vWGBYmJ2tuTTl/2xkWEw6ljDn+p9 /FjDSkPkyKv10FV2XJbo1QixbhwM0q0X37TWZG7DHMzZJtavvXbpaKXdJIG5eUTu03tz CpmAw7Cbzn6/qbIfnv4HCS0YFVCUKMQQUOpsibDpkqMt/H3NapTETea1mVaGaVLVltgz QBuMNSiHuxvfw6PC2KT0tsDOg7ZwZ9a1a7K9AuURIuubWyS2UCVDG+s8zaBTJYgD/eGt denrMkvs8FgEdmTF3/UlqZsbxBDS+I4QBwSEriQuV6+6xNedeniHKvP7NMNFedTAS8wq AQgA== X-Forwarded-Encrypted: i=1; AFNElJ9JWcBdJOVL4/2OB453nwTh8FUFEN8GDU0iWe44Yt+6LLvWKcJPES9vzE89FpQPlwie7SuswZk4CUvhZUtk@postgresql.org X-Gm-Message-State: AOJu0YzqOOt+tmdJyk6iGNAlLmzei/9a/ECYeHCmUEbm1Lm830qpZDnG ucBaO05jdr624YuRjb+csmbm89SFlmKF0mA9W+3VFM0fsQhZPHeuD+HZc/Nqz4Ty30vixP+rIeY ln/Fv7eFDzEMzs6pb8YnchmRxafl7A+4= X-Gm-Gg: AeBDietYdntUWwEAwsxgW+mpfANL5cASxzUEepT1/Z++dY9bGlKehFujk02UrATxdSv S5kptw+sj7HONypvLp0Hx9qkfu5KopCUjhP3e2ItOFhGEManuNyLFv/IaKtldRdmA6ifTERgjv4 DmZskTBX4mpJARKMAAb19huKumacR4pAV82rogpDgTNtLkm7agGHHWYT9gPHrsj5s4VDii1dA/A gTjgUEfZ1vsOeU7my3oQsCsdXADpsoype3Zq7NssU5jhuxu9oEWgZFLStKrNyMlWAoFt2a+gCc4 FcN2ubE4RTfbxomkgYvHKQGthNTf4Fd+QXv2gHi/QDZxE4915/IbayUHLALwZByTO2EK+WBQDV3 sSe8ggrHsryA/PDIU X-Received: by 2002:a05:6820:308c:b0:694:8de8:2200 with SMTP id 006d021491bc7-6948de82352mr4375384eaf.20.1776800142632; Tue, 21 Apr 2026 12:35:42 -0700 (PDT) MIME-Version: 1.0 References: <31d04a1b-c0cb-4e6f-a344-0db048a3b673@gmail.com> <414c3430-77a9-438e-9dc0-c66033f6be63@postgrespro.ru> <271ebb35-8d8f-41c3-9d95-5c1e5b416216@gmail.com> In-Reply-To: <271ebb35-8d8f-41c3-9d95-5c1e5b416216@gmail.com> From: Alexander Korotkov Date: Tue, 21 Apr 2026 22:35:28 +0300 X-Gm-Features: AQROBzC_lr2rsJsl0vk-wG8kibCAgm6its4ZO-RNEHbh0GAKBnB6VzcGTDgZxAQ Message-ID: Subject: Re: MERGE PARTITIONS and DEPENDS ON EXTENSION. To: Matheus Alcantara Cc: Dmitry Koval , pgsql-hackers Content-Type: multipart/mixed; boundary="0000000000005711c3064ffd8553" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000005711c3064ffd8553 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, Apr 21, 2026 at 10:23=E2=80=AFPM Matheus Alcantara wrote: > On 21/04/26 12:57, Alexander Korotkov wrote: > > I've spotted the following things in this patch. > > 1) The equality of dependencies is not fully checked. We only check > > that for each new dependency, we have the same for previous partition, > > but not vise versa. > > 2) The complexity of dependency checking is O(n^2). > > 3) Usage of citext and other extensions in src/test/regress where they > > might be not available. > > > > Oops, I forgot to replace the citext extension on split partition tests. > > > I've revised the patch. > > 1) collectPartitionIndexExtDeps() is rewritten(). Now it works in > > three phases: collect, sort, compare. The comparison phase requires > > strict equivalence of dependencies and doesn't depend on the order. > > The complexity is now O(n * log(n)), which I think is acceptable. > > 2) PartitionIndexExtDepEntry struct now have indexOid. So, on > > conflict error contains both partition index names. > > 3) Tests moved to > > src/test/modules/test_extensions/sql/test_extdepend.sql where > > test_ext3/test_ext5 extensions are available. > > 4) More tests for different scenarios. > > > > Could you, please, review this changes? > > > > I think that you miss to include the patch? Yep, here it is. ------ Regards, Alexander Korotkov Supabase --0000000000005711c3064ffd8553 Content-Type: application/octet-stream; name="v6-0001-Preserve-extension-dependencies-on-indexes-during.patch" Content-Disposition: attachment; filename="v6-0001-Preserve-extension-dependencies-on-indexes-during.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mo90x3ym0 RnJvbSBmNTA2NzFmNzI3YTAzOWIxMmE1YzIxOWEwOTg5YjNiOTEzZTlkYWRhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXRoZXVzIEFsY2FudGFyYSA8bXRocy5kZXZAcG0ubWU+CkRh dGU6IFdlZCwgMTEgTWFyIDIwMjYgMTE6Mzk6NTYgLTAzMDAKU3ViamVjdDogW1BBVENIIHY2XSBQ cmVzZXJ2ZSBleHRlbnNpb24gZGVwZW5kZW5jaWVzIG9uIGluZGV4ZXMgZHVyaW5nCiBwYXJ0aXRp b24gbWVyZ2Uvc3BsaXQKCldoZW4gdXNpbmcgQUxURVIgVEFCTEUgLi4uIE1FUkdFIFBBUlRJVElP TlMgb3IgQUxURVIgVEFCTEUgLi4uIFNQTElUClBBUlRJVElPTiwgZXh0ZW5zaW9uIGRlcGVuZGVu Y2llcyBvbiBwYXJ0aXRpb24gaW5kZXhlcyB3ZXJlIGJlaW5nIGxvc3QuClRoaXMgaGFwcGVuZWQg YmVjYXVzZSB0aGUgbmV3IHBhcnRpdGlvbiBpbmRleGVzIGFyZSBjcmVhdGVkIGZyZXNoIGZyb20K dGhlIHBhcmVudCBwYXJ0aXRpb25lZCB0YWJsZSdzIGluZGV4ZXMsIHdoaWxlIHRoZSBvbGQgcGFy dGl0aW9uIGluZGV4ZXMKKHdpdGggdGhlaXIgZXh0ZW5zaW9uIGRlcGVuZGVuY2llcykgYXJlIGRy b3BwZWQuCgpGaXggdGhpcyBieSBjb2xsZWN0aW5nIGV4dGVuc2lvbiBkZXBlbmRlbmNpZXMgZnJv bSBzb3VyY2UgcGFydGl0aW9uCmluZGV4ZXMgYmVmb3JlIGRldGFjaGluZyB0aGVtLCB0aGVuIGFw cGx5aW5nIHRob3NlIGRlcGVuZGVuY2llcyB0byB0aGUKY29ycmVzcG9uZGluZyBuZXcgcGFydGl0 aW9uIGluZGV4ZXMgYWZ0ZXIgdGhleSdyZSBjcmVhdGVkLiAgVGhlIG1hcHBpbmcKYmV0d2VlbiBv bGQgYW5kIG5ldyBpbmRleGVzIGlzIGRvbmUgdmlhIHRoZWlyIGNvbW1vbiBwYXJlbnQgcGFydGl0 aW9uZWQKaW5kZXguCgpGb3IgTUVSR0Ugb3BlcmF0aW9ucywgYWxsIHNvdXJjZSBwYXJ0aXRpb24g aW5kZXhlcyBzaGFyaW5nIGEgcGFyZW50CnBhcnRpdGlvbmVkIGluZGV4IG11c3QgaGF2ZSB0aGUg c2FtZSBleHRlbnNpb24gZGVwZW5kZW5jaWVzOyBpZiB0aGV5CmRpZmZlciwgYW4gZXJyb3IgbmFt aW5nIGJvdGggY29uZmxpY3RpbmcgcGFydGl0aW9uIGluZGV4ZXMgaXMgcmFpc2VkLgpUaGUgY2hl Y2sgaXMgaW1wbGVtZW50ZWQgYnkgY29sbGVjdGluZyBvbmUgZW50cnkgcGVyIHBhcnRpdGlvbiBp bmRleCwKc29ydGluZyBieSBwYXJlbnQgaW5kZXggT0lELCBhbmQgY29tcGFyaW5nIGFkamFjZW50 IGVudHJpZXMgaW4gYSBzaW5nbGUKcGFzcy4gIFRoaXMgaXMgb3JkZXItaW5kZXBlbmRlbnQ6IHRo ZSBzYW1lIHNldCBvZiBwYXJ0aXRpb25zIHByb2R1Y2VzCnRoZSBzYW1lIGRlY2lzaW9uIHJlZ2Fy ZGxlc3Mgb2YgdGhlIG9yZGVyIHRoZXkgYXJlIGxpc3RlZCBpbiB0aGUgTUVSR0UKY29tbWFuZCwg YW5kIHN1YnNldCBtaXNtYXRjaGVzIGFyZSBjYXVnaHQgaW4gYm90aCBkaXJlY3Rpb25zLgoKRm9y IFNQTElUIG9wZXJhdGlvbnMsIHRoZSBuZXcgcGFydGl0aW9uIGluZGV4ZXMgc2ltcGx5IGluaGVy aXQgYWxsCmV4dGVuc2lvbiBkZXBlbmRlbmNpZXMgZnJvbSB0aGUgc291cmNlIHBhcnRpdGlvbidz IGluZGV4LgoKVGhlIHJlZ3Jlc3Npb24gdGVzdHMgZXhlcmNpc2luZyB0aGlzIGZlYXR1cmUgbGl2 ZSB1bmRlcgpzcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucywgd2hlcmUgdGhlIHRlc3Rf ZXh0MyBhbmQgdGVzdF9leHQ1CmV4dGVuc2lvbnMgYXJlIGF2YWlsYWJsZTsgY29yZSByZWdyZXNz aW9uIHRlc3RzIGNhbm5vdCBhc3N1bWUgYW55CnBhcnRpY3VsYXIgZXh0ZW5zaW9uIGlzIGluc3Rh bGxlZC4KCkF1dGhvcjogTWF0aGV1cyBBbGNhbnRhcmEgPG1hdGhldXNzc2lsdjk3QGdtYWlsLmNv bT4KUmVwb3J0ZWQtYnk6IEtpcmlsbCBSZXNoa2UKUmV2aWV3ZWQtYnk6IERtaXRyeSBLb3ZhbCA8 ZC5rb3ZhbEBwb3N0Z3Jlc3Byby5ydT4KUmV2aWV3ZWQtYnk6IEFsZXhhbmRlciBLb3JvdGtvdiA8 YWVrb3JvdGtvdkBnbWFpbC5jb20+CkRpc2N1c3Npb246IGh0dHBzOi8vd3d3LnBvc3RncmVzcWwu b3JnL21lc3NhZ2UtaWQvQ0FMZFNTUGpYdHpHTTdVazRmV1J3Uk1YY0NjemdlNXVOaXJQUWNZQ0hL UEFXUGtwOWlRJTQwbWFpbC5nbWFpbC5jb20KLS0tCiBkb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3Rh YmxlLnNnbWwgICAgICAgICAgICAgfCAgMTcgKysKIHNyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxl Y21kcy5jICAgICAgICAgICAgICB8IDI4MyArKysrKysrKysrKysrKysrKysKIC4uLi9leHBlY3Rl ZC90ZXN0X2V4dGRlcGVuZC5vdXQgICAgICAgICAgICAgICB8IDEyNyArKysrKysrKwogLi4uL3Rl c3RfZXh0ZW5zaW9ucy9zcWwvdGVzdF9leHRkZXBlbmQuc3FsICAgIHwgMTA1ICsrKysrKysKIHNy Yy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICAgICAgICAgICB8ICAgMSArCiA1IGZp bGVzIGNoYW5nZWQsIDUzMyBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21s L3JlZi9hbHRlcl90YWJsZS5zZ21sIGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl90YWJsZS5zZ21s CmluZGV4IDU0ZjM4Y2I5NjRhLi4xZjlhNDU2ZmQzMyAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21s L3JlZi9hbHRlcl90YWJsZS5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfdGFibGUu c2dtbApAQCAtMTI1NSw2ICsxMjU1LDE1IEBAIFdJVEggKCBNT0RVTFVTIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5udW1lcmljX2xpdGVyYWw8L3JlcGxhY2VhYmxlPiwgUkVNCiAgICAg ICAoc2VlIDx4cmVmIGxpbmtlbmQ9ImRkbC1kZXBlbmQiLz4pLgogICAgICA8L3BhcmE+CiAKKyAg ICAgPHBhcmE+CisgICAgICBFeHRlbnNpb24gZGVwZW5kZW5jaWVzIG9uIHBhcnRpdGlvbiBpbmRl eGVzIChjcmVhdGVkIHZpYQorICAgICAgPGxpbmsgbGlua2VuZD0ic3FsLWFsdGVyaW5kZXgiPjxj b21tYW5kPkFMVEVSIElOREVYIC4uLiBERVBFTkRTIE9OCisgICAgICBFWFRFTlNJT048L2NvbW1h bmQ+PC9saW5rPikgYXJlIHByZXNlcnZlZCBkdXJpbmcgbWVyZ2Ugb3BlcmF0aW9ucy4KKyAgICAg IEFsbCBzb3VyY2UgcGFydGl0aW9uIGluZGV4ZXMgbXVzdCBoYXZlIHRoZSBzYW1lIGV4dGVuc2lv biBkZXBlbmRlbmNpZXM7CisgICAgICBpZiB0aGV5IGRpZmZlciwgYW4gZXJyb3IgaXMgcmFpc2Vk LiBUaGlzIGVuc3VyZXMgdGhhdCBleHRlbnNpb24KKyAgICAgIGRlcGVuZGVuY2llcyBhcmUgbm90 IHNpbGVudGx5IGxvc3QgZHVyaW5nIG1lcmdlLgorICAgICA8L3BhcmE+CisKICAgICAgPG5vdGU+ CiAgICAgICA8cGFyYT4KICAgICAgICBNZXJnaW5nIHBhcnRpdGlvbnMgYWNxdWlyZXMgYW4gPGxp dGVyYWw+QUNDRVNTIEVYQ0xVU0lWRTwvbGl0ZXJhbD4gbG9jayBvbgpAQCAtMTM0Miw2ICsxMzUx LDE0IEBAIFdJVEggKCBNT0RVTFVTIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5udW1l cmljX2xpdGVyYWw8L3JlcGxhY2VhYmxlPiwgUkVNCiAgICAgICB3b3VsZCBmYWlsIChzZWUgPHhy ZWYgbGlua2VuZD0iZGRsLWRlcGVuZCIvPikuCiAgICAgIDwvcGFyYT4KIAorICAgICA8cGFyYT4K KyAgICAgIEV4dGVuc2lvbiBkZXBlbmRlbmNpZXMgb24gcGFydGl0aW9uIGluZGV4ZXMgKGNyZWF0 ZWQgdmlhCisgICAgICA8bGluayBsaW5rZW5kPSJzcWwtYWx0ZXJpbmRleCI+PGNvbW1hbmQ+QUxU RVIgSU5ERVggLi4uIERFUEVORFMgT04KKyAgICAgIEVYVEVOU0lPTjwvY29tbWFuZD48L2xpbms+ KSBhcmUgcHJlc2VydmVkIGR1cmluZyBzcGxpdCBvcGVyYXRpb25zLgorICAgICAgVGhlIG5ldyBw YXJ0aXRpb25zJyBpbmRleGVzIHdpbGwgaW5oZXJpdCB0aGUgZXh0ZW5zaW9uIGRlcGVuZGVuY2ll cworICAgICAgZnJvbSB0aGUgc291cmNlIHBhcnRpdGlvbidzIGluZGV4ZXMuCisgICAgIDwvcGFy YT4KKwogICAgICA8bm90ZT4KICAgICAgIDxwYXJhPgogICAgICAgIFNwbGl0IHBhcnRpdGlvbiBh Y3F1aXJlcyBhbiA8bGl0ZXJhbD5BQ0NFU1MgRVhDTFVTSVZFPC9saXRlcmFsPiBsb2NrIG9uCmRp ZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyBiL3NyYy9iYWNrZW5k L2NvbW1hbmRzL3RhYmxlY21kcy5jCmluZGV4IGVlYzA5YmExZGVkLi4zODUzMjM0MWE5MiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvdGFibGVjbWRzLmMKKysrIGIvc3JjL2JhY2tl bmQvY29tbWFuZHMvdGFibGVjbWRzLmMKQEAgLTQwLDYgKzQwLDcgQEAKICNpbmNsdWRlICJjYXRh bG9nL3BnX2NvbGxhdGlvbi5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfY29uc3RyYWludC5oIgog I2luY2x1ZGUgImNhdGFsb2cvcGdfZGVwZW5kLmgiCisjaW5jbHVkZSAiY2F0YWxvZy9wZ19leHRl bnNpb25fZC5oIgogI2luY2x1ZGUgImNhdGFsb2cvcGdfZm9yZWlnbl90YWJsZS5oIgogI2luY2x1 ZGUgImNhdGFsb2cvcGdfaW5oZXJpdHMuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX2xhcmdlb2Jq ZWN0LmgiCkBAIC02MCw2ICs2MSw3IEBACiAjaW5jbHVkZSAiY29tbWFuZHMvY29tbWVudC5oIgog I2luY2x1ZGUgImNvbW1hbmRzL2RlZnJlbS5oIgogI2luY2x1ZGUgImNvbW1hbmRzL2V2ZW50X3Ry aWdnZXIuaCIKKyNpbmNsdWRlICJjb21tYW5kcy9leHRlbnNpb24uaCIKICNpbmNsdWRlICJjb21t YW5kcy9yZXBhY2suaCIKICNpbmNsdWRlICJjb21tYW5kcy9zZXF1ZW5jZS5oIgogI2luY2x1ZGUg ImNvbW1hbmRzL3RhYmxlY21kcy5oIgpAQCAtMzY1LDYgKzM2NywyNyBAQCB0eXBlZGVmIGVudW0g YWRkRmtDb25zdHJhaW50U2lkZXMKIAlhZGRGa0JvdGhTaWRlcywKIH0gYWRkRmtDb25zdHJhaW50 U2lkZXM7CiAKKy8qCisgKiBIb2xkIGV4dGVuc2lvbiBkZXBlbmRlbmNpZXMgb2Ygb25lIHBhcnRp dGlvbiBpbmRleCwgZHVyaW5nCisgKiBNRVJHRS9TUExJVCBQQVJUSVRJT04gcHJvY2Vzc2luZy4K KyAqCisgKiBjb2xsZWN0UGFydGl0aW9uSW5kZXhFeHREZXBzKCkgYnVpbGRzIGEgbGlzdCBvZiB0 aGVzZSBlbnRyaWVzIHNvcnRlZCBieQorICogcGFyZW50SW5kZXhPaWQgd2l0aCBleGFjdGx5IG9u ZSBlbnRyeSBwZXIgcGFyZW50IHBhcnRpdGlvbmVkIGluZGV4OyB0aGUKKyAqIGxpc3QgaXMgdGhl biBjb25zdW1lZCBieSBhcHBseVBhcnRpdGlvbkluZGV4RXh0RGVwcygpIHRvIHJlLXJlY29yZCB0 aGUKKyAqIHNhbWUgZGVwZW5kZW5jaWVzIG9uIHRoZSBuZXdseSBjcmVhdGVkIHBhcnRpdGlvbidz IGluZGV4ZXMuCisgKgorICogZXh0ZW5zaW9uT2lkcyBpcyBrZXB0IHNvcnRlZCBhc2NlbmRpbmcg c28gdGhhdCBlcXVhbGl0eSBjaGVja3MgYmV0d2VlbgorICogZW50cmllcyBmcm9tIGRpZmZlcmVu dCBwYXJ0aXRpb25zIGNhbiBiZSBkb25lIGluIGEgc2luZ2xlIHBhc3MuCisgKiBpbmRleE9pZCBp cyBjYXJyaWVkIG9ubHkgc28gdGhhdCBjb25mbGljdCBlcnJvcnMgY2FuIGNpdGUgc3BlY2lmaWMK KyAqIHBhcnRpdGlvbiBpbmRleCBuYW1lcy4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgUGFydGl0aW9u SW5kZXhFeHREZXBFbnRyeQoreworCU9pZAkJCXBhcmVudEluZGV4T2lkOyAvKiBPSUQgb2YgdGhl IHBhcmVudCBwYXJ0aXRpb25lZCBpbmRleCAqLworCU9pZAkJCWluZGV4T2lkOwkJLyogT0lEIG9m IGEgcmVwcmVzZW50YXRpdmUgcGFydGl0aW9uIGluZGV4ICovCisJTGlzdAkgICAqZXh0ZW5zaW9u T2lkczsJLyogT0lEcyBvZiBkZXBlbmRlbnQgZXh0ZW5zaW9ucywgc29ydGVkIGFzYyAqLworfSBQ YXJ0aXRpb25JbmRleEV4dERlcEVudHJ5OworCiAvKgogICogUGFydGl0aW9uIHRhYmxlcyBhcmUg ZXhwZWN0ZWQgdG8gYmUgZHJvcHBlZCB3aGVuIHRoZSBwYXJlbnQgcGFydGl0aW9uZWQKICAqIHRh YmxlIGdldHMgZHJvcHBlZC4gSGVuY2UgZm9yIHBhcnRpdGlvbmluZyB3ZSB1c2UgQVVUTyBkZXBl bmRlbmN5LgpAQCAtNzYwLDYgKzc4Myw5IEBAIHN0YXRpYyB2b2lkIEFURXhlY01lcmdlUGFydGl0 aW9ucyhMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uCiBzdGF0 aWMgdm9pZCBBVEV4ZWNTcGxpdFBhcnRpdGlvbihMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJ bmZvICp0YWIsCiAJCQkJCQkJCSBSZWxhdGlvbiByZWwsIFBhcnRpdGlvbkNtZCAqY21kLAogCQkJ CQkJCQkgQWx0ZXJUYWJsZVV0aWxpdHlDb250ZXh0ICpjb250ZXh0KTsKK3N0YXRpYyBMaXN0ICpj b2xsZWN0UGFydGl0aW9uSW5kZXhFeHREZXBzKExpc3QgKnBhcnRpdGlvbk9pZHMpOworc3RhdGlj IHZvaWQgYXBwbHlQYXJ0aXRpb25JbmRleEV4dERlcHMoT2lkIG5ld1BhcnRPaWQsIExpc3QgKmV4 dERlcFN0YXRlKTsKK3N0YXRpYyB2b2lkIGZyZWVQYXJ0aXRpb25JbmRleEV4dERlcHMoTGlzdCAq ZXh0RGVwU3RhdGUpOwogCiAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgkJRGVmaW5lUmVsYXRpb24KQEAgLTIzMDAw LDYgKzIzMDI2LDIyNCBAQCBkZXRhY2hQYXJ0aXRpb25UYWJsZShSZWxhdGlvbiBwYXJlbnRfcmVs LCBSZWxhdGlvbiBjaGlsZF9yZWwsIE9pZCBkZWZhdWx0UGFydE9pZAogCVBvcEFjdGl2ZVNuYXBz aG90KCk7CiB9CiAKKy8qCisgKiBlcXVhbF9vaWRfbGlzdHM6IHJldHVybiB0cnVlIGlmIHR3byBP SUQgbGlzdHMsIGVhY2ggc29ydGVkIGluIGFzY2VuZGluZworICogb3JkZXIsIGNvbnRhaW4gdGhl IHNhbWUgT0lEcyBpbiB0aGUgc2FtZSBvcmRlci4KKyAqLworc3RhdGljIGJvb2wKK2VxdWFsX29p ZF9saXN0cyhjb25zdCBMaXN0ICphLCBjb25zdCBMaXN0ICpiKQoreworCUxpc3RDZWxsICAgKmxh LAorCQkJICAgKmxiOworCisJaWYgKGxpc3RfbGVuZ3RoKGEpICE9IGxpc3RfbGVuZ3RoKGIpKQor CQlyZXR1cm4gZmFsc2U7CisKKwlmb3Jib3RoKGxhLCBhLCBsYiwgYikKKwl7CisJCWlmIChsZmly c3Rfb2lkKGxhKSAhPSBsZmlyc3Rfb2lkKGxiKSkKKwkJCXJldHVybiBmYWxzZTsKKwl9CisJcmV0 dXJuIHRydWU7Cit9CisKKy8qCisgKiBDb21wYXJhdG9yIGZvciBsaXN0X3NvcnQoKSBvbiBhIGxp c3Qgb2YgUGFydGl0aW9uSW5kZXhFeHREZXBFbnRyeSAqLgorICogT3JkZXJzIGJ5IHBhcmVudElu ZGV4T2lkLCB0aGVuIGJ5IGluZGV4T2lkIGFzIGEgdGllYnJlYWtlciBzbyBjb25mbGljdAorICog cmVwb3J0cyBmb3IgZGlmZmVyZW50IHBhcmVudCBpbmRleGVzIGFyZSBkZXRlcm1pbmlzdGljLgor ICovCitzdGF0aWMgaW50CitjbXBfcGFydGl0aW9uX2luZGV4X2V4dF9kZXAoY29uc3QgTGlzdENl bGwgKmEsIGNvbnN0IExpc3RDZWxsICpiKQoreworCWNvbnN0IFBhcnRpdGlvbkluZGV4RXh0RGVw RW50cnkgKmVhID0gbGZpcnN0KGEpOworCWNvbnN0IFBhcnRpdGlvbkluZGV4RXh0RGVwRW50cnkg KmViID0gbGZpcnN0KGIpOworCisJaWYgKGVhLT5wYXJlbnRJbmRleE9pZCAhPSBlYi0+cGFyZW50 SW5kZXhPaWQpCisJCXJldHVybiBwZ19jbXBfdTMyKGVhLT5wYXJlbnRJbmRleE9pZCwgZWItPnBh cmVudEluZGV4T2lkKTsKKwlyZXR1cm4gcGdfY21wX3UzMihlYS0+aW5kZXhPaWQsIGViLT5pbmRl eE9pZCk7Cit9CisKKy8qCisgKiBjb2xsZWN0UGFydGl0aW9uSW5kZXhFeHREZXBzOiBjb2xsZWN0 IGV4dGVuc2lvbiBkZXBlbmRlbmNpZXMgZnJvbSBpbmRleGVzCisgKiBvbiB0aGUgZ2l2ZW4gcGFy dGl0aW9ucy4KKyAqCisgKiBGb3IgZWFjaCBwYXJ0aXRpb24gaW5kZXggdGhhdCBoYXMgYSBwYXJl bnQgcGFydGl0aW9uZWQgaW5kZXgsIHdlIGNvbGxlY3QKKyAqIGV4dGVuc2lvbiBkZXBlbmRlbmNp ZXMuIEFsbCBzb3VyY2UgcGFydGl0aW9uIGluZGV4ZXMgc2hhcmluZyB0aGUgc2FtZQorICogcGFy ZW50IHBhcnRpdGlvbmVkIGluZGV4IG11c3QgZGVwZW5kIG9uIGV4YWN0bHkgdGhlIHNhbWUgc2V0 IG9mCisgKiBleHRlbnNpb25zOyBvdGhlcndpc2UgYW4gZXJyb3IgaXMgcmFpc2VkIHNvIHRoYXQg d2UgbmVpdGhlciBzaWxlbnRseSBkcm9wCisgKiBub3Igc2lsZW50bHkgYWRkIGRlcGVuZGVuY2ll cyBvbiB0aGUgbWVyZ2VkIHBhcnRpdGlvbidzIGluZGV4LgorICoKKyAqIEluZGV4ZXMgdGhhdCBk b24ndCBoYXZlIGEgcGFyZW50IHBhcnRpdGlvbmVkIGluZGV4IChpLmUuLCBpbmRleGVzIGNyZWF0 ZWQKKyAqIGRpcmVjdGx5IG9uIGEgcGFydGl0aW9uIHdpdGhvdXQgYSBjb3JyZXNwb25kaW5nIHBh cmVudCBpbmRleCkgYXJlIHNraXBwZWQuCisgKgorICogVGhlIHJldHVybmVkIGxpc3QgaXMgc29y dGVkIGJ5IHBhcmVudEluZGV4T2lkIHdpdGggZXhhY3RseSBvbmUgZW50cnkgcGVyCisgKiBwYXJl bnQgcGFydGl0aW9uZWQgaW5kZXgsIHNvIGFwcGx5UGFydGl0aW9uSW5kZXhFeHREZXBzKCkgY2Fu IHNjYW4gaXQKKyAqIGxpbmVhcmx5LgorICovCitzdGF0aWMgTGlzdCAqCitjb2xsZWN0UGFydGl0 aW9uSW5kZXhFeHREZXBzKExpc3QgKnBhcnRpdGlvbk9pZHMpCit7CisJTGlzdAkgICAqY29sbGVj dGVkID0gTklMOworCUxpc3QJICAgKnJlc3VsdCA9IE5JTDsKKwlQYXJ0aXRpb25JbmRleEV4dERl cEVudHJ5ICpwcmV2ID0gTlVMTDsKKworCS8qCisJICogUGhhc2UgMTogY29sbGVjdCBvbmUgZW50 cnkgcGVyIChwYXJ0aXRpb24gaW5kZXggLT4gcGFyZW50IGluZGV4KSBwYWlyLAorCSAqIHdpdGgg aXRzIGV4dGVuc2lvbiBkZXBlbmRlbmN5IE9JRHMgc29ydGVkIGFzY2VuZGluZy4KKwkgKi8KKwlm b3JlYWNoX29pZChwYXJ0T2lkLCBwYXJ0aXRpb25PaWRzKQorCXsKKwkJUmVsYXRpb24JcGFydFJl bDsKKwkJTGlzdAkgICAqaW5kZXhMaXN0OworCisJCS8qCisJCSAqIFVzZSBOb0xvY2sgc2luY2Ug dGhlIGNhbGxlciBhbHJlYWR5IGhvbGRzIEFjY2Vzc0V4Y2x1c2l2ZUxvY2sgb24KKwkJICogdGhl c2UgcGFydGl0aW9ucy4KKwkJICovCisJCXBhcnRSZWwgPSB0YWJsZV9vcGVuKHBhcnRPaWQsIE5v TG9jayk7CisJCWluZGV4TGlzdCA9IFJlbGF0aW9uR2V0SW5kZXhMaXN0KHBhcnRSZWwpOworCisJ CWZvcmVhY2hfb2lkKGluZGV4T2lkLCBpbmRleExpc3QpCisJCXsKKwkJCU9pZAkJCXBhcmVudElu ZGV4T2lkOworCQkJUGFydGl0aW9uSW5kZXhFeHREZXBFbnRyeSAqZW50cnk7CisKKwkJCWlmICgh Z2V0X3JlbF9yZWxpc3BhcnRpdGlvbihpbmRleE9pZCkpCisJCQkJY29udGludWU7CisKKwkJCXBh cmVudEluZGV4T2lkID0gZ2V0X3BhcnRpdGlvbl9wYXJlbnQoaW5kZXhPaWQsIHRydWUpOworCQkJ aWYgKCFPaWRJc1ZhbGlkKHBhcmVudEluZGV4T2lkKSkKKwkJCQljb250aW51ZTsKKworCQkJZW50 cnkgPSBwYWxsb2Moc2l6ZW9mKFBhcnRpdGlvbkluZGV4RXh0RGVwRW50cnkpKTsKKwkJCWVudHJ5 LT5wYXJlbnRJbmRleE9pZCA9IHBhcmVudEluZGV4T2lkOworCQkJZW50cnktPmluZGV4T2lkID0g aW5kZXhPaWQ7CisJCQllbnRyeS0+ZXh0ZW5zaW9uT2lkcyA9IGdldEF1dG9FeHRlbnNpb25zT2ZP YmplY3QoUmVsYXRpb25SZWxhdGlvbklkLAorCQkJCQkJCQkJCQkJCQkJIGluZGV4T2lkKTsKKwkJ CWxpc3Rfc29ydChlbnRyeS0+ZXh0ZW5zaW9uT2lkcywgbGlzdF9vaWRfY21wKTsKKworCQkJY29s bGVjdGVkID0gbGFwcGVuZChjb2xsZWN0ZWQsIGVudHJ5KTsKKwkJfQorCisJCWxpc3RfZnJlZShp bmRleExpc3QpOworCQl0YWJsZV9jbG9zZShwYXJ0UmVsLCBOb0xvY2spOworCX0KKworCS8qCisJ ICogUGhhc2UgMjogc29ydCBieSBwYXJlbnRJbmRleE9pZCBzbyBlbnRyaWVzIHNoYXJpbmcgYSBw YXJlbnQgaW5kZXggc2l0CisJICogYWRqYWNlbnQuCisJICovCisJbGlzdF9zb3J0KGNvbGxlY3Rl ZCwgY21wX3BhcnRpdGlvbl9pbmRleF9leHRfZGVwKTsKKworCS8qCisJICogUGhhc2UgMzogc2lu Z2xlIGxpbmVhciBwYXNzIHZlcmlmeWluZyB0aGF0IGFkamFjZW50IGVudHJpZXMgc2hhcmluZyBh CisJICogcGFyZW50IGluZGV4IGhhdmUgaWRlbnRpY2FsIGV4dGVuc2lvbiBkZXBlbmRlbmNpZXMs IGFuZCBrZWVwaW5nIG9uZQorCSAqIHJlcHJlc2VudGF0aXZlIGVudHJ5IHBlciBwYXJlbnQgaW5k ZXguCisJICovCisJZm9yZWFjaF9wdHIoUGFydGl0aW9uSW5kZXhFeHREZXBFbnRyeSwgZW50cnks IGNvbGxlY3RlZCkKKwl7CisJCWlmIChwcmV2ICE9IE5VTEwgJiYgcHJldi0+cGFyZW50SW5kZXhP aWQgPT0gZW50cnktPnBhcmVudEluZGV4T2lkKQorCQl7CisJCQlpZiAoIWVxdWFsX29pZF9saXN0 cyhwcmV2LT5leHRlbnNpb25PaWRzLCBlbnRyeS0+ZXh0ZW5zaW9uT2lkcykpCisJCQkJZXJlcG9y dChFUlJPUiwKKwkJCQkJCShlcnJjb2RlKEVSUkNPREVfRkVBVFVSRV9OT1RfU1VQUE9SVEVEKSwK KwkJCQkJCSBlcnJtc2coImNhbm5vdCBtZXJnZSBwYXJ0aXRpb25zIHdpdGggY29uZmxpY3Rpbmcg ZXh0ZW5zaW9uIGRlcGVuZGVuY2llcyIpLAorCQkJCQkJIGVycmRldGFpbCgiUGFydGl0aW9uIGlu ZGV4ZXMgXCIlc1wiIGFuZCBcIiVzXCIgZGVwZW5kIG9uIGRpZmZlcmVudCBleHRlbnNpb25zLiIs CisJCQkJCQkJCSAgIGdldF9yZWxfbmFtZShwcmV2LT5pbmRleE9pZCksCisJCQkJCQkJCSAgIGdl dF9yZWxfbmFtZShlbnRyeS0+aW5kZXhPaWQpKSkpOworCisJCQkvKiBEdXBsaWNhdGUgZW50cnkg Zm9yIHRoZSBzYW1lIHBhcmVudCBpbmRleDsgZGlzY2FyZC4gKi8KKwkJCWxpc3RfZnJlZShlbnRy eS0+ZXh0ZW5zaW9uT2lkcyk7CisJCQlwZnJlZShlbnRyeSk7CisJCQljb250aW51ZTsKKwkJfQor CisJCXJlc3VsdCA9IGxhcHBlbmQocmVzdWx0LCBlbnRyeSk7CisJCXByZXYgPSBlbnRyeTsKKwl9 CisKKwlsaXN0X2ZyZWUoY29sbGVjdGVkKTsKKworCXJldHVybiByZXN1bHQ7Cit9CisKKy8qCisg KiBhcHBseVBhcnRpdGlvbkluZGV4RXh0RGVwczogYXBwbHkgY29sbGVjdGVkIGV4dGVuc2lvbiBk ZXBlbmRlbmNpZXMgdG8KKyAqIGluZGV4ZXMgb24gYSBuZXcgcGFydGl0aW9uLgorICoKKyAqIEZv ciBlYWNoIGluZGV4IG9uIHRoZSBuZXcgcGFydGl0aW9uLCBsb29rIHVwIGl0cyBwYXJlbnQgaW5k ZXggaW4gdGhlCisgKiBleHREZXBTdGF0ZSBsaXN0LiBJZiBmb3VuZCwgcmVjb3JkIGV4dGVuc2lv biBkZXBlbmRlbmNpZXMgb24gdGhlIG5ldyBpbmRleC4KKyAqIGV4dERlcFN0YXRlIGlzIHNvcnRl ZCBieSBwYXJlbnRJbmRleE9pZCwgc28gdGhlIGlubmVyIHNjYW4gY2FuIGJhaWwgb3V0CisgKiBh cyBzb29uIGFzIGl0IHBhc3NlcyB0aGUgdGFyZ2V0IE9JRC4KKyAqLworc3RhdGljIHZvaWQKK2Fw cGx5UGFydGl0aW9uSW5kZXhFeHREZXBzKE9pZCBuZXdQYXJ0T2lkLCBMaXN0ICpleHREZXBTdGF0 ZSkKK3sKKwlSZWxhdGlvbglwYXJ0UmVsOworCUxpc3QJICAgKmluZGV4TGlzdDsKKworCWlmIChl eHREZXBTdGF0ZSA9PSBOSUwpCisJCXJldHVybjsKKworCS8qCisJICogVXNlIE5vTG9jayBzaW5j ZSB0aGUgY2FsbGVyIGFscmVhZHkgaG9sZHMgQWNjZXNzRXhjbHVzaXZlTG9jayBvbiB0aGUKKwkg KiBuZXcgcGFydGl0aW9uLgorCSAqLworCXBhcnRSZWwgPSB0YWJsZV9vcGVuKG5ld1BhcnRPaWQs IE5vTG9jayk7CisJaW5kZXhMaXN0ID0gUmVsYXRpb25HZXRJbmRleExpc3QocGFydFJlbCk7CisK Kwlmb3JlYWNoX29pZChpbmRleE9pZCwgaW5kZXhMaXN0KQorCXsKKwkJT2lkCQkJcGFyZW50SWR4 T2lkOworCisJCWlmICghZ2V0X3JlbF9yZWxpc3BhcnRpdGlvbihpbmRleE9pZCkpCisJCQljb250 aW51ZTsKKworCQlwYXJlbnRJZHhPaWQgPSBnZXRfcGFydGl0aW9uX3BhcmVudChpbmRleE9pZCwg dHJ1ZSk7CisJCWlmICghT2lkSXNWYWxpZChwYXJlbnRJZHhPaWQpKQorCQkJY29udGludWU7CisK KwkJZm9yZWFjaF9wdHIoUGFydGl0aW9uSW5kZXhFeHREZXBFbnRyeSwgZW50cnksIGV4dERlcFN0 YXRlKQorCQl7CisJCQlPYmplY3RBZGRyZXNzIGluZGV4QWRkcjsKKworCQkJaWYgKGVudHJ5LT5w YXJlbnRJbmRleE9pZCA+IHBhcmVudElkeE9pZCkKKwkJCQlicmVhazsKKwkJCWlmIChlbnRyeS0+ cGFyZW50SW5kZXhPaWQgPCBwYXJlbnRJZHhPaWQpCisJCQkJY29udGludWU7CisKKwkJCU9iamVj dEFkZHJlc3NTZXQoaW5kZXhBZGRyLCBSZWxhdGlvblJlbGF0aW9uSWQsIGluZGV4T2lkKTsKKwor CQkJZm9yZWFjaF9vaWQoZXh0T2lkLCBlbnRyeS0+ZXh0ZW5zaW9uT2lkcykKKwkJCXsKKwkJCQlP YmplY3RBZGRyZXNzIGV4dEFkZHI7CisKKwkJCQlPYmplY3RBZGRyZXNzU2V0KGV4dEFkZHIsIEV4 dGVuc2lvblJlbGF0aW9uSWQsIGV4dE9pZCk7CisJCQkJcmVjb3JkRGVwZW5kZW5jeU9uKCZpbmRl eEFkZHIsICZleHRBZGRyLAorCQkJCQkJCQkgICBERVBFTkRFTkNZX0FVVE9fRVhURU5TSU9OKTsK KwkJCX0KKwkJCWJyZWFrOworCQl9CisJfQorCisJbGlzdF9mcmVlKGluZGV4TGlzdCk7CisJdGFi bGVfY2xvc2UocGFydFJlbCwgTm9Mb2NrKTsKK30KKworLyoKKyAqIGZyZWVQYXJ0aXRpb25JbmRl eEV4dERlcHM6IGZyZWUgbWVtb3J5IGFsbG9jYXRlZCBieSBjb2xsZWN0UGFydGl0aW9uSW5kZXhF eHREZXBzLgorICovCitzdGF0aWMgdm9pZAorZnJlZVBhcnRpdGlvbkluZGV4RXh0RGVwcyhMaXN0 ICpleHREZXBTdGF0ZSkKK3sKKwlmb3JlYWNoX3B0cihQYXJ0aXRpb25JbmRleEV4dERlcEVudHJ5 LCBlbnRyeSwgZXh0RGVwU3RhdGUpCisJeworCQlsaXN0X2ZyZWUoZW50cnktPmV4dGVuc2lvbk9p ZHMpOworCQlwZnJlZShlbnRyeSk7CisJfQorCWxpc3RfZnJlZShleHREZXBTdGF0ZSk7Cit9CisK IC8qCiAgKiBBTFRFUiBUQUJMRSA8bmFtZT4gTUVSR0UgUEFSVElUSU9OUyA8cGFydGl0aW9uLWxp c3Q+IElOVE8gPHBhcnRpdGlvbi1uYW1lPgogICovCkBAIC0yMzAwOSw2ICsyMzI1Myw3IEBAIEFU RXhlY01lcmdlUGFydGl0aW9ucyhMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIs IFJlbGF0aW9uIHJlbCwKIHsKIAlSZWxhdGlvbgluZXdQYXJ0UmVsOwogCUxpc3QJICAgKm1lcmdp bmdQYXJ0aXRpb25zID0gTklMOworCUxpc3QJICAgKmV4dERlcFN0YXRlID0gTklMOwogCU9pZAkJ CWRlZmF1bHRQYXJ0T2lkOwogCU9pZAkJCWV4aXN0aW5nUmVsaWQ7CiAJT2lkCQkJb3duZXJJZCA9 IEludmFsaWRPaWQ7CkBAIC0yMzA5OCw2ICsyMzM0MywxMyBAQCBBVEV4ZWNNZXJnZVBhcnRpdGlv bnMoTGlzdCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCiAJ ZGVmYXVsdFBhcnRPaWQgPQogCQlnZXRfZGVmYXVsdF9vaWRfZnJvbV9wYXJ0ZGVzYyhSZWxhdGlv bkdldFBhcnRpdGlvbkRlc2MocmVsLCB0cnVlKSk7CiAKKwkvKgorCSAqIENvbGxlY3QgZXh0ZW5z aW9uIGRlcGVuZGVuY2llcyBmcm9tIGluZGV4ZXMgb24gdGhlIG1lcmdpbmcgcGFydGl0aW9ucy4K KwkgKiBXZSBtdXN0IGRvIHRoaXMgYmVmb3JlIGRldGFjaGluZyB0aGVtLCBzbyB3ZSBjYW4gcmVz dG9yZSB0aGUKKwkgKiBkZXBlbmRlbmNpZXMgb24gdGhlIG5ldyBwYXJ0aXRpb24ncyBpbmRleGVz IGxhdGVyLgorCSAqLworCWV4dERlcFN0YXRlID0gY29sbGVjdFBhcnRpdGlvbkluZGV4RXh0RGVw cyhtZXJnaW5nUGFydGl0aW9ucyk7CisKIAkvKiBEZXRhY2ggYWxsIG1lcmdpbmcgcGFydGl0aW9u cy4gKi8KIAlmb3JlYWNoX29pZChtZXJnaW5nUGFydGl0aW9uT2lkLCBtZXJnaW5nUGFydGl0aW9u cykKIAl7CkBAIC0yMzE3NSw2ICsyMzQyNywxNSBAQCBBVEV4ZWNNZXJnZVBhcnRpdGlvbnMoTGlz dCAqKndxdWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCiAJICovCiAJ YXR0YWNoUGFydGl0aW9uVGFibGUoTlVMTCwgcmVsLCBuZXdQYXJ0UmVsLCBjbWQtPmJvdW5kKTsK IAorCS8qCisJICogQXBwbHkgZXh0ZW5zaW9uIGRlcGVuZGVuY2llcyB0byB0aGUgbmV3IHBhcnRp dGlvbidzIGluZGV4ZXMuIFRoaXMKKwkgKiBwcmVzZXJ2ZXMgYW55ICJERVBFTkRTIE9OIEVYVEVO U0lPTiIgc2V0dGluZ3MgZnJvbSB0aGUgbWVyZ2VkCisJICogcGFydGl0aW9ucy4KKwkgKi8KKwlh cHBseVBhcnRpdGlvbkluZGV4RXh0RGVwcyhSZWxhdGlvbkdldFJlbGlkKG5ld1BhcnRSZWwpLCBl eHREZXBTdGF0ZSk7CisKKwlmcmVlUGFydGl0aW9uSW5kZXhFeHREZXBzKGV4dERlcFN0YXRlKTsK KwogCS8qIEtlZXAgdGhlIGxvY2sgdW50aWwgY29tbWl0LiAqLwogCXRhYmxlX2Nsb3NlKG5ld1Bh cnRSZWwsIE5vTG9jayk7CiAKQEAgLTIzNDY5LDExICsyMzczMCwxMyBAQCBBVEV4ZWNTcGxpdFBh cnRpdGlvbihMaXN0ICoqd3F1ZXVlLCBBbHRlcmVkVGFibGVJbmZvICp0YWIsIFJlbGF0aW9uIHJl bCwKIAlib29sCQlpc1NhbWVOYW1lID0gZmFsc2U7CiAJY2hhcgkJdG1wUmVsTmFtZVtOQU1FREFU QUxFTl07CiAJTGlzdAkgICAqbmV3UGFydFJlbHMgPSBOSUw7CisJTGlzdAkgICAqZXh0RGVwU3Rh dGUgPSBOSUw7CiAJT2JqZWN0QWRkcmVzcyBvYmplY3Q7CiAJT2lkCQkJZGVmYXVsdFBhcnRPaWQ7 CiAJT2lkCQkJc2F2ZV91c2VyaWQ7CiAJaW50CQkJc2F2ZV9zZWNfY29udGV4dDsKIAlpbnQJCQlz YXZlX25lc3RsZXZlbDsKKwlMaXN0CSAgICpzcGxpdFBhcnRMaXN0OwogCiAJZGVmYXVsdFBhcnRP aWQgPSBnZXRfZGVmYXVsdF9vaWRfZnJvbV9wYXJ0ZGVzYyhSZWxhdGlvbkdldFBhcnRpdGlvbkRl c2MocmVsLCB0cnVlKSk7CiAKQEAgLTIzNTA2LDYgKzIzNzY5LDE2IEBAIEFURXhlY1NwbGl0UGFy dGl0aW9uKExpc3QgKip3cXVldWUsIEFsdGVyZWRUYWJsZUluZm8gKnRhYiwgUmVsYXRpb24gcmVs LAogCQkJCQllcnJtc2coInJlbGF0aW9uIFwiJXNcIiBhbHJlYWR5IGV4aXN0cyIsIHNwcy0+bmFt ZS0+cmVsbmFtZSkpOwogCX0KIAorCS8qCisJICogQ29sbGVjdCBleHRlbnNpb24gZGVwZW5kZW5j aWVzIGZyb20gaW5kZXhlcyBvbiB0aGUgc3BsaXQgcGFydGl0aW9uLiBXZQorCSAqIG11c3QgZG8g dGhpcyBiZWZvcmUgZGV0YWNoaW5nIGl0LCBzbyB3ZSBjYW4gcmVzdG9yZSB0aGUgZGVwZW5kZW5j aWVzIG9uCisJICogdGhlIG5ldyBwYXJ0aXRpb25zJyBpbmRleGVzIGxhdGVyLgorCSAqLworCXNw bGl0UGFydExpc3QgPSBsaXN0X21ha2UxX29pZChzcGxpdFJlbE9pZCk7CisKKwlleHREZXBTdGF0 ZSA9IGNvbGxlY3RQYXJ0aXRpb25JbmRleEV4dERlcHMoc3BsaXRQYXJ0TGlzdCk7CisJbGlzdF9m cmVlKHNwbGl0UGFydExpc3QpOworCiAJLyogRGV0YWNoIHRoZSBzcGxpdCBwYXJ0aXRpb24uICov CiAJZGV0YWNoUGFydGl0aW9uVGFibGUocmVsLCBzcGxpdFJlbCwgZGVmYXVsdFBhcnRPaWQpOwog CkBAIC0yMzU4NSwxMCArMjM4NTgsMjAgQEAgQVRFeGVjU3BsaXRQYXJ0aXRpb24oTGlzdCAqKndx dWV1ZSwgQWx0ZXJlZFRhYmxlSW5mbyAqdGFiLCBSZWxhdGlvbiByZWwsCiAJCSAqIG5lZWRlZC4K IAkJICovCiAJCWF0dGFjaFBhcnRpdGlvblRhYmxlKE5VTEwsIHJlbCwgbmV3UGFydFJlbCwgc3Bz LT5ib3VuZCk7CisKKwkJLyoKKwkJICogQXBwbHkgZXh0ZW5zaW9uIGRlcGVuZGVuY2llcyB0byB0 aGUgbmV3IHBhcnRpdGlvbidzIGluZGV4ZXMuIFRoaXMKKwkJICogcHJlc2VydmVzIGFueSAiREVQ RU5EUyBPTiBFWFRFTlNJT04iIHNldHRpbmdzIGZyb20gdGhlIHNwbGl0CisJCSAqIHBhcnRpdGlv bi4KKwkJICovCisJCWFwcGx5UGFydGl0aW9uSW5kZXhFeHREZXBzKFJlbGF0aW9uR2V0UmVsaWQo bmV3UGFydFJlbCksIGV4dERlcFN0YXRlKTsKKwogCQkvKiBLZWVwIHRoZSBsb2NrIHVudGlsIGNv bW1pdC4gKi8KIAkJdGFibGVfY2xvc2UobmV3UGFydFJlbCwgTm9Mb2NrKTsKIAl9CiAKKwlmcmVl UGFydGl0aW9uSW5kZXhFeHREZXBzKGV4dERlcFN0YXRlKTsKKwogCS8qIERyb3AgdGhlIHNwbGl0 IHBhcnRpdGlvbi4gKi8KIAlvYmplY3QuY2xhc3NJZCA9IFJlbGF0aW9uUmVsYXRpb25JZDsKIAlv YmplY3Qub2JqZWN0SWQgPSBzcGxpdFJlbE9pZDsKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVs ZXMvdGVzdF9leHRlbnNpb25zL2V4cGVjdGVkL3Rlc3RfZXh0ZGVwZW5kLm91dCBiL3NyYy90ZXN0 L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL2V4cGVjdGVkL3Rlc3RfZXh0ZGVwZW5kLm91dAppbmRl eCAwYjYyMDE1ZDE4Yy4uMTg2OTU0OWVlYWIgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMv dGVzdF9leHRlbnNpb25zL2V4cGVjdGVkL3Rlc3RfZXh0ZGVwZW5kLm91dAorKysgYi9zcmMvdGVz dC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy9leHBlY3RlZC90ZXN0X2V4dGRlcGVuZC5vdXQKQEAg LTE4NiwzICsxODYsMTMwIEBAIERST1AgTUFURVJJQUxJWkVEIFZJRVcgZDsKIERST1AgSU5ERVgg ZTsKIERST1AgU0NIRU1BIHRlc3RfZXh0IENBU0NBREU7CiBOT1RJQ0U6ICBkcm9wIGNhc2NhZGVz IHRvIHRhYmxlIGEKKy0tIEZpZnRoIHRlc3Q6IGV4dGVuc2lvbiBkZXBlbmRlbmNpZXMgb24gcGFy dGl0aW9uIGluZGV4ZXMgc3Vydml2ZSBNRVJHRSBhbmQKKy0tIFNQTElUIFBBUlRJVElPTiBvcGVy YXRpb25zLCBhbmQgbWlzbWF0Y2hlcyBiZXR3ZWVuIHNvdXJjZSBwYXJ0aXRpb25zIGFyZQorLS0g cmVwb3J0ZWQuCitSRVNFVCBzZWFyY2hfcGF0aDsKK0NSRUFURSBFWFRFTlNJT04gdGVzdF9leHQz OworQ1JFQVRFIEVYVEVOU0lPTiB0ZXN0X2V4dDU7CitDUkVBVEUgVEFCTEUgcGFydF9leHRkZXAg KGkgaW50LCB4IGludCkgUEFSVElUSU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBUQUJMRSBwYXJ0 X2V4dGRlcF8xIFBBUlRJVElPTiBPRiBwYXJ0X2V4dGRlcCBGT1IgVkFMVUVTIEZST00gKDEpIFRP ICgyKTsKK0NSRUFURSBUQUJMRSBwYXJ0X2V4dGRlcF8yIFBBUlRJVElPTiBPRiBwYXJ0X2V4dGRl cCBGT1IgVkFMVUVTIEZST00gKDIpIFRPICgzKTsKK0NSRUFURSBUQUJMRSBwYXJ0X2V4dGRlcF8z IFBBUlRJVElPTiBPRiBwYXJ0X2V4dGRlcCBGT1IgVkFMVUVTIEZST00gKDMpIFRPICg0KTsKK0NS RUFURSBUQUJMRSBwYXJ0X2V4dGRlcF80IFBBUlRJVElPTiBPRiBwYXJ0X2V4dGRlcCBGT1IgVkFM VUVTIEZST00gKDQpIFRPICg1KTsKK0NSRUFURSBUQUJMRSBwYXJ0X2V4dGRlcF81IFBBUlRJVElP TiBPRiBwYXJ0X2V4dGRlcCBGT1IgVkFMVUVTIEZST00gKDUpIFRPICg2KTsKK0NSRUFURSBJTkRF WCBwYXJ0X2V4dGRlcF9pX2lkeCBPTiBwYXJ0X2V4dGRlcChpKTsKK0NSRUFURSBJTkRFWCBwYXJ0 X2V4dGRlcF94X2lkeCBPTiBwYXJ0X2V4dGRlcCh4KTsKKy0tIFBhcnRpdGlvbnMgMSwgMiwgMyBk ZXBlbmQgb24gdGhlIHNhbWUgdHdvIGV4dGVuc2lvbnMuCitBTFRFUiBJTkRFWCBwYXJ0X2V4dGRl cF8xX2lfaWR4IERFUEVORFMgT04gRVhURU5TSU9OIHRlc3RfZXh0MzsKK0FMVEVSIElOREVYIHBh cnRfZXh0ZGVwXzFfeF9pZHggREVQRU5EUyBPTiBFWFRFTlNJT04gdGVzdF9leHQ1OworQUxURVIg SU5ERVggcGFydF9leHRkZXBfMl9pX2lkeCBERVBFTkRTIE9OIEVYVEVOU0lPTiB0ZXN0X2V4dDM7 CitBTFRFUiBJTkRFWCBwYXJ0X2V4dGRlcF8yX3hfaWR4IERFUEVORFMgT04gRVhURU5TSU9OIHRl c3RfZXh0NTsKK0FMVEVSIElOREVYIHBhcnRfZXh0ZGVwXzNfaV9pZHggREVQRU5EUyBPTiBFWFRF TlNJT04gdGVzdF9leHQzOworQUxURVIgSU5ERVggcGFydF9leHRkZXBfM194X2lkeCBERVBFTkRT IE9OIEVYVEVOU0lPTiB0ZXN0X2V4dDU7CistLSBQYXJ0aXRpb24gNCBkZXBlbmRzIG9uIGEgZGlm ZmVyZW50IGV4dGVuc2lvbiBvbiBvbmUgaW5kZXguCitBTFRFUiBJTkRFWCBwYXJ0X2V4dGRlcF80 X2lfaWR4IERFUEVORFMgT04gRVhURU5TSU9OIHRlc3RfZXh0NTsKKy0tIFBhcnRpdGlvbiA1IGhh cyBubyBkZXBlbmRlbmN5IGF0IGFsbC4KKy0tIFNhbml0eSBjaGVjazogdGhlIGV4dGVuc2lvbiBj YW4ndCBiZSBkcm9wcGVkIHdoaWxlIGRlcGVuZGVuY2llcyBleGlzdC4KK0RST1AgRVhURU5TSU9O IHRlc3RfZXh0MzsKK0VSUk9SOiAgY2Fubm90IGRyb3AgaW5kZXggcGFydF9leHRkZXBfM19pX2lk eCBiZWNhdXNlIGluZGV4IHBhcnRfZXh0ZGVwX2lfaWR4IHJlcXVpcmVzIGl0CitISU5UOiAgWW91 IGNhbiBkcm9wIGluZGV4IHBhcnRfZXh0ZGVwX2lfaWR4IGluc3RlYWQuCistLSBNZXJnZSBtYXRj aGluZyBwYXJ0aXRpb25zOiBzaG91bGQgc3VjY2VlZCBhbmQgcHJlc2VydmUgZGVwZW5kZW5jaWVz LgorQUxURVIgVEFCTEUgcGFydF9leHRkZXAgTUVSR0UgUEFSVElUSU9OUyAocGFydF9leHRkZXBf MSwgcGFydF9leHRkZXBfMikKKyAgICBJTlRPIHBhcnRfZXh0ZGVwX21lcmdlZDsKKy0tIERlcGVu ZGVuY2llcyBtdXN0IG5vdyBzaXQgb24gdGhlIG5ldyBwYXJ0aXRpb24ncyBpbmRleGVzLgorRFJP UCBFWFRFTlNJT04gdGVzdF9leHQzOworRVJST1I6ICBjYW5ub3QgZHJvcCBpbmRleCBwYXJ0X2V4 dGRlcF9tZXJnZWRfaV9pZHggYmVjYXVzZSBpbmRleCBwYXJ0X2V4dGRlcF9pX2lkeCByZXF1aXJl cyBpdAorSElOVDogIFlvdSBjYW4gZHJvcCBpbmRleCBwYXJ0X2V4dGRlcF9pX2lkeCBpbnN0ZWFk LgorU0VMRUNUIGMucmVsbmFtZSwgZS5leHRuYW1lCitGUk9NIHBnX2RlcGVuZCBkCitKT0lOIHBn X2NsYXNzIGMgT04gZC5vYmppZCA9IGMub2lkCitKT0lOIHBnX2V4dGVuc2lvbiBlIE9OIGQucmVm b2JqaWQgPSBlLm9pZAorV0hFUkUgYy5yZWxuYW1lIElOICgncGFydF9leHRkZXBfbWVyZ2VkX2lf aWR4JywgJ3BhcnRfZXh0ZGVwX21lcmdlZF94X2lkeCcpCisgIEFORCBlLmV4dG5hbWUgSU4gKCd0 ZXN0X2V4dDMnLCAndGVzdF9leHQ1JykKKyAgQU5EIGQuZGVwdHlwZSA9ICd4JworT1JERVIgQlkg Yy5yZWxuYW1lLCBlLmV4dG5hbWU7CisgICAgICAgICByZWxuYW1lICAgICAgICAgIHwgIGV4dG5h bWUgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBwYXJ0X2V4dGRl cF9tZXJnZWRfaV9pZHggfCB0ZXN0X2V4dDMKKyBwYXJ0X2V4dGRlcF9tZXJnZWRfeF9pZHggfCB0 ZXN0X2V4dDUKKygyIHJvd3MpCisKKy0tIEFuIGluZGV4IGNyZWF0ZWQgZGlyZWN0bHkgb24gYSBw YXJ0aXRpb24gaGFzIG5vIHBhcmVudCBpbiB0aGUgcGFydGl0aW9uZWQKKy0tIGluZGV4IHRyZWU7 IG1lcmdlIG11c3QgaWdub3JlIHN1Y2ggaW5kZXhlcyAodGhleSBkaXNhcHBlYXIgd2l0aCB0aGUg b2xkCistLSBwYXJ0aXRpb24pLgorQ1JFQVRFIElOREVYIHBhcnRfZXh0ZGVwXzNfZXh0cmFfaWR4 IE9OIHBhcnRfZXh0ZGVwXzMoeCk7CitBTFRFUiBUQUJMRSBwYXJ0X2V4dGRlcCBNRVJHRSBQQVJU SVRJT05TIChwYXJ0X2V4dGRlcF9tZXJnZWQsIHBhcnRfZXh0ZGVwXzMpCisgICAgSU5UTyBwYXJ0 X2V4dGRlcF9tZXJnZWQyOworU0VMRUNUIHJlbG5hbWUgRlJPTSBwZ19jbGFzcworV0hFUkUgcmVs bmFtZSBMSUtFICdwYXJ0X2V4dGRlcF9tZXJnZWQyJWlkeCcgT1JERVIgQlkgcmVsbmFtZTsKKyAg ICAgICAgICByZWxuYW1lICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisg cGFydF9leHRkZXBfbWVyZ2VkMl9pX2lkeAorIHBhcnRfZXh0ZGVwX21lcmdlZDJfeF9pZHgKKygy IHJvd3MpCisKKy0tIE1pc21hdGNoZWQgZGVwZW5kZW5jaWVzOiBwYXJ0aXRpb24gNCdzIGluZGV4 IGRlcGVuZHMgb24gYSBkaWZmZXJlbnQKKy0tIGV4dGVuc2lvbiB0aGFuIHBhcnRpdGlvbl9tZXJn ZWQyJ3MuIEJvdGggb3JkZXJpbmdzIG11c3QgZmFpbCwgYW5kIHRoZQorLS0gZXJyb3IgbXVzdCBj aXRlIGJvdGggcGFydGl0aW9uIGluZGV4ZXMuCitBTFRFUiBUQUJMRSBwYXJ0X2V4dGRlcCBNRVJH RSBQQVJUSVRJT05TIChwYXJ0X2V4dGRlcF9tZXJnZWQyLCBwYXJ0X2V4dGRlcF80KQorICAgIElO VE8gcGFydF9leHRkZXBfYmFkOworRVJST1I6ICBjYW5ub3QgbWVyZ2UgcGFydGl0aW9ucyB3aXRo IGNvbmZsaWN0aW5nIGV4dGVuc2lvbiBkZXBlbmRlbmNpZXMKK0RFVEFJTDogIFBhcnRpdGlvbiBp bmRleGVzICJwYXJ0X2V4dGRlcF80X2lfaWR4IiBhbmQgInBhcnRfZXh0ZGVwX21lcmdlZDJfaV9p ZHgiIGRlcGVuZCBvbiBkaWZmZXJlbnQgZXh0ZW5zaW9ucy4KK0FMVEVSIFRBQkxFIHBhcnRfZXh0 ZGVwIE1FUkdFIFBBUlRJVElPTlMgKHBhcnRfZXh0ZGVwXzQsIHBhcnRfZXh0ZGVwX21lcmdlZDIp CisgICAgSU5UTyBwYXJ0X2V4dGRlcF9iYWQ7CitFUlJPUjogIGNhbm5vdCBtZXJnZSBwYXJ0aXRp b25zIHdpdGggY29uZmxpY3RpbmcgZXh0ZW5zaW9uIGRlcGVuZGVuY2llcworREVUQUlMOiAgUGFy dGl0aW9uIGluZGV4ZXMgInBhcnRfZXh0ZGVwXzRfaV9pZHgiIGFuZCAicGFydF9leHRkZXBfbWVy Z2VkMl9pX2lkeCIgZGVwZW5kIG9uIGRpZmZlcmVudCBleHRlbnNpb25zLgorLS0gRW1wdHkgdnMg bm9uLWVtcHR5IGRlcGVuZGVuY3kgc2V0ICh0aGUgc3Vic2V0IGNhc2UgdGhlIGVhcmxpZXIgbGlu ZWFyCistLSBjaGVjayBtaXNzZWQgaW4gb25lIGRpcmVjdGlvbikuCitBTFRFUiBUQUJMRSBwYXJ0 X2V4dGRlcCBNRVJHRSBQQVJUSVRJT05TIChwYXJ0X2V4dGRlcF80LCBwYXJ0X2V4dGRlcF81KQor ICAgIElOVE8gcGFydF9leHRkZXBfYmFkOworRVJST1I6ICBjYW5ub3QgbWVyZ2UgcGFydGl0aW9u cyB3aXRoIGNvbmZsaWN0aW5nIGV4dGVuc2lvbiBkZXBlbmRlbmNpZXMKK0RFVEFJTDogIFBhcnRp dGlvbiBpbmRleGVzICJwYXJ0X2V4dGRlcF80X2lfaWR4IiBhbmQgInBhcnRfZXh0ZGVwXzVfaV9p ZHgiIGRlcGVuZCBvbiBkaWZmZXJlbnQgZXh0ZW5zaW9ucy4KK0FMVEVSIFRBQkxFIHBhcnRfZXh0 ZGVwIE1FUkdFIFBBUlRJVElPTlMgKHBhcnRfZXh0ZGVwXzUsIHBhcnRfZXh0ZGVwXzQpCisgICAg SU5UTyBwYXJ0X2V4dGRlcF9iYWQ7CitFUlJPUjogIGNhbm5vdCBtZXJnZSBwYXJ0aXRpb25zIHdp dGggY29uZmxpY3RpbmcgZXh0ZW5zaW9uIGRlcGVuZGVuY2llcworREVUQUlMOiAgUGFydGl0aW9u IGluZGV4ZXMgInBhcnRfZXh0ZGVwXzRfaV9pZHgiIGFuZCAicGFydF9leHRkZXBfNV9pX2lkeCIg ZGVwZW5kIG9uIGRpZmZlcmVudCBleHRlbnNpb25zLgorLS0gU3Vic2V0OiBwYXJ0aXRpb24gNSdz IGlfaWR4IGRlcGVuZHMgb24gYSBzdHJpY3Qgc3VwZXJzZXQgb2YgcGFydGl0aW9uIDQncworLS0g aV9pZHggZGVwZW5kZW5jaWVzLiBQYXJ0aXRpb24gNCA9IHt0ZXN0X2V4dDV9LCBwYXJ0aXRpb24g NSB3aWxsIGJlCistLSB7dGVzdF9leHQzLCB0ZXN0X2V4dDV9LiBCb3RoIG9yZGVyaW5ncyBtdXN0 IGZhaWw7IGluIHBhcnRpY3VsYXIgdGhlIGNhc2UKKy0tIHdoZXJlIHRoZSBmaXJzdCBwYXJ0aXRp b24gd2Ugd2FsayBoYXMgZmV3ZXIgZXh0ZW5zaW9ucyB0aGFuIHRoZSBzZWNvbmQKKy0tIG11c3Qg c3RpbGwgYmUgcmVqZWN0ZWQuCitBTFRFUiBJTkRFWCBwYXJ0X2V4dGRlcF81X2lfaWR4IERFUEVO RFMgT04gRVhURU5TSU9OIHRlc3RfZXh0MzsKK0FMVEVSIElOREVYIHBhcnRfZXh0ZGVwXzVfaV9p ZHggREVQRU5EUyBPTiBFWFRFTlNJT04gdGVzdF9leHQ1OworQUxURVIgVEFCTEUgcGFydF9leHRk ZXAgTUVSR0UgUEFSVElUSU9OUyAocGFydF9leHRkZXBfNCwgcGFydF9leHRkZXBfNSkKKyAgICBJ TlRPIHBhcnRfZXh0ZGVwX2JhZDsKK0VSUk9SOiAgY2Fubm90IG1lcmdlIHBhcnRpdGlvbnMgd2l0 aCBjb25mbGljdGluZyBleHRlbnNpb24gZGVwZW5kZW5jaWVzCitERVRBSUw6ICBQYXJ0aXRpb24g aW5kZXhlcyAicGFydF9leHRkZXBfNF9pX2lkeCIgYW5kICJwYXJ0X2V4dGRlcF81X2lfaWR4IiBk ZXBlbmQgb24gZGlmZmVyZW50IGV4dGVuc2lvbnMuCitBTFRFUiBUQUJMRSBwYXJ0X2V4dGRlcCBN RVJHRSBQQVJUSVRJT05TIChwYXJ0X2V4dGRlcF81LCBwYXJ0X2V4dGRlcF80KQorICAgIElOVE8g cGFydF9leHRkZXBfYmFkOworRVJST1I6ICBjYW5ub3QgbWVyZ2UgcGFydGl0aW9ucyB3aXRoIGNv bmZsaWN0aW5nIGV4dGVuc2lvbiBkZXBlbmRlbmNpZXMKK0RFVEFJTDogIFBhcnRpdGlvbiBpbmRl eGVzICJwYXJ0X2V4dGRlcF80X2lfaWR4IiBhbmQgInBhcnRfZXh0ZGVwXzVfaV9pZHgiIGRlcGVu ZCBvbiBkaWZmZXJlbnQgZXh0ZW5zaW9ucy4KKy0tIFJlc2V0IHBhcnRpdGlvbiA1IHNvIGl0IGRv ZXNuJ3QgaW50ZXJmZXJlIHdpdGggdGhlIFNQTElUIHRlc3QgYmVsb3cuCitBTFRFUiBJTkRFWCBw YXJ0X2V4dGRlcF81X2lfaWR4IE5PIERFUEVORFMgT04gRVhURU5TSU9OIHRlc3RfZXh0MzsKK0FM VEVSIElOREVYIHBhcnRfZXh0ZGVwXzVfaV9pZHggTk8gREVQRU5EUyBPTiBFWFRFTlNJT04gdGVz dF9leHQ1OworLS0gU3BsaXQ6IHRoZSBzaW5nbGUgc291cmNlIHBhcnRpdGlvbidzIGRlcGVuZGVu Y2llcyBtdXN0IGFwcGVhciBvbiBldmVyeQorLS0gbmV3IHBhcnRpdGlvbidzIG1hdGNoaW5nIGlu ZGV4LCBpZGVudGlmaWVkIGJ5IGV4dGVuc2lvbiBuYW1lLgorQUxURVIgVEFCTEUgcGFydF9leHRk ZXAgU1BMSVQgUEFSVElUSU9OIHBhcnRfZXh0ZGVwX21lcmdlZDIgSU5UTworICAgIChQQVJUSVRJ T04gcGFydF9leHRkZXBfczEgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMyksCisgICAgIFBBUlRJ VElPTiBwYXJ0X2V4dGRlcF9zMiBGT1IgVkFMVUVTIEZST00gKDMpIFRPICg0KSk7CitTRUxFQ1Qg Yy5yZWxuYW1lLCBlLmV4dG5hbWUKK0ZST00gcGdfZGVwZW5kIGQKK0pPSU4gcGdfY2xhc3MgYyBP TiBkLm9iamlkID0gYy5vaWQKK0pPSU4gcGdfZXh0ZW5zaW9uIGUgT04gZC5yZWZvYmppZCA9IGUu b2lkCitXSEVSRSBjLnJlbG5hbWUgSU4gKCdwYXJ0X2V4dGRlcF9zMV9pX2lkeCcsICdwYXJ0X2V4 dGRlcF9zMV94X2lkeCcsCisgICAgICAgICAgICAgICAgICAgICdwYXJ0X2V4dGRlcF9zMl9pX2lk eCcsICdwYXJ0X2V4dGRlcF9zMl94X2lkeCcpCisgIEFORCBlLmV4dG5hbWUgSU4gKCd0ZXN0X2V4 dDMnLCAndGVzdF9leHQ1JykKKyAgQU5EIGQuZGVwdHlwZSA9ICd4JworT1JERVIgQlkgYy5yZWxu YW1lLCBlLmV4dG5hbWU7CisgICAgICAgcmVsbmFtZSAgICAgICAgfCAgZXh0bmFtZSAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tCisgcGFydF9leHRkZXBfczFfaV9pZHggfCB0 ZXN0X2V4dDMKKyBwYXJ0X2V4dGRlcF9zMV94X2lkeCB8IHRlc3RfZXh0NQorIHBhcnRfZXh0ZGVw X3MyX2lfaWR4IHwgdGVzdF9leHQzCisgcGFydF9leHRkZXBfczJfeF9pZHggfCB0ZXN0X2V4dDUK Kyg0IHJvd3MpCisKK0RST1AgVEFCTEUgcGFydF9leHRkZXA7CitEUk9QIEVYVEVOU0lPTiB0ZXN0 X2V4dDM7CitEUk9QIEVYVEVOU0lPTiB0ZXN0X2V4dDU7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9t b2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy9zcWwvdGVzdF9leHRkZXBlbmQuc3FsIGIvc3JjL3Rlc3Qv bW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvc3FsL3Rlc3RfZXh0ZGVwZW5kLnNxbAppbmRleCA2MzI0 MGExYWY1ZC4uMDA5ZDUzNTRhZDggMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9l eHRlbnNpb25zL3NxbC90ZXN0X2V4dGRlcGVuZC5zcWwKKysrIGIvc3JjL3Rlc3QvbW9kdWxlcy90 ZXN0X2V4dGVuc2lvbnMvc3FsL3Rlc3RfZXh0ZGVwZW5kLnNxbApAQCAtODgsMyArODgsMTA4IEBA IERST1AgRlVOQ1RJT04gYigpOwogRFJPUCBNQVRFUklBTElaRUQgVklFVyBkOwogRFJPUCBJTkRF WCBlOwogRFJPUCBTQ0hFTUEgdGVzdF9leHQgQ0FTQ0FERTsKKworLS0gRmlmdGggdGVzdDogZXh0 ZW5zaW9uIGRlcGVuZGVuY2llcyBvbiBwYXJ0aXRpb24gaW5kZXhlcyBzdXJ2aXZlIE1FUkdFIGFu ZAorLS0gU1BMSVQgUEFSVElUSU9OIG9wZXJhdGlvbnMsIGFuZCBtaXNtYXRjaGVzIGJldHdlZW4g c291cmNlIHBhcnRpdGlvbnMgYXJlCistLSByZXBvcnRlZC4KK1JFU0VUIHNlYXJjaF9wYXRoOwor Q1JFQVRFIEVYVEVOU0lPTiB0ZXN0X2V4dDM7CitDUkVBVEUgRVhURU5TSU9OIHRlc3RfZXh0NTsK KworQ1JFQVRFIFRBQkxFIHBhcnRfZXh0ZGVwIChpIGludCwgeCBpbnQpIFBBUlRJVElPTiBCWSBS QU5HRSAoaSk7CitDUkVBVEUgVEFCTEUgcGFydF9leHRkZXBfMSBQQVJUSVRJT04gT0YgcGFydF9l eHRkZXAgRk9SIFZBTFVFUyBGUk9NICgxKSBUTyAoMik7CitDUkVBVEUgVEFCTEUgcGFydF9leHRk ZXBfMiBQQVJUSVRJT04gT0YgcGFydF9leHRkZXAgRk9SIFZBTFVFUyBGUk9NICgyKSBUTyAoMyk7 CitDUkVBVEUgVEFCTEUgcGFydF9leHRkZXBfMyBQQVJUSVRJT04gT0YgcGFydF9leHRkZXAgRk9S IFZBTFVFUyBGUk9NICgzKSBUTyAoNCk7CitDUkVBVEUgVEFCTEUgcGFydF9leHRkZXBfNCBQQVJU SVRJT04gT0YgcGFydF9leHRkZXAgRk9SIFZBTFVFUyBGUk9NICg0KSBUTyAoNSk7CitDUkVBVEUg VEFCTEUgcGFydF9leHRkZXBfNSBQQVJUSVRJT04gT0YgcGFydF9leHRkZXAgRk9SIFZBTFVFUyBG Uk9NICg1KSBUTyAoNik7CitDUkVBVEUgSU5ERVggcGFydF9leHRkZXBfaV9pZHggT04gcGFydF9l eHRkZXAoaSk7CitDUkVBVEUgSU5ERVggcGFydF9leHRkZXBfeF9pZHggT04gcGFydF9leHRkZXAo eCk7CisKKy0tIFBhcnRpdGlvbnMgMSwgMiwgMyBkZXBlbmQgb24gdGhlIHNhbWUgdHdvIGV4dGVu c2lvbnMuCitBTFRFUiBJTkRFWCBwYXJ0X2V4dGRlcF8xX2lfaWR4IERFUEVORFMgT04gRVhURU5T SU9OIHRlc3RfZXh0MzsKK0FMVEVSIElOREVYIHBhcnRfZXh0ZGVwXzFfeF9pZHggREVQRU5EUyBP TiBFWFRFTlNJT04gdGVzdF9leHQ1OworQUxURVIgSU5ERVggcGFydF9leHRkZXBfMl9pX2lkeCBE RVBFTkRTIE9OIEVYVEVOU0lPTiB0ZXN0X2V4dDM7CitBTFRFUiBJTkRFWCBwYXJ0X2V4dGRlcF8y X3hfaWR4IERFUEVORFMgT04gRVhURU5TSU9OIHRlc3RfZXh0NTsKK0FMVEVSIElOREVYIHBhcnRf ZXh0ZGVwXzNfaV9pZHggREVQRU5EUyBPTiBFWFRFTlNJT04gdGVzdF9leHQzOworQUxURVIgSU5E RVggcGFydF9leHRkZXBfM194X2lkeCBERVBFTkRTIE9OIEVYVEVOU0lPTiB0ZXN0X2V4dDU7CisK Ky0tIFBhcnRpdGlvbiA0IGRlcGVuZHMgb24gYSBkaWZmZXJlbnQgZXh0ZW5zaW9uIG9uIG9uZSBp bmRleC4KK0FMVEVSIElOREVYIHBhcnRfZXh0ZGVwXzRfaV9pZHggREVQRU5EUyBPTiBFWFRFTlNJ T04gdGVzdF9leHQ1OworCistLSBQYXJ0aXRpb24gNSBoYXMgbm8gZGVwZW5kZW5jeSBhdCBhbGwu CisKKy0tIFNhbml0eSBjaGVjazogdGhlIGV4dGVuc2lvbiBjYW4ndCBiZSBkcm9wcGVkIHdoaWxl IGRlcGVuZGVuY2llcyBleGlzdC4KK0RST1AgRVhURU5TSU9OIHRlc3RfZXh0MzsKKworLS0gTWVy Z2UgbWF0Y2hpbmcgcGFydGl0aW9uczogc2hvdWxkIHN1Y2NlZWQgYW5kIHByZXNlcnZlIGRlcGVu ZGVuY2llcy4KK0FMVEVSIFRBQkxFIHBhcnRfZXh0ZGVwIE1FUkdFIFBBUlRJVElPTlMgKHBhcnRf ZXh0ZGVwXzEsIHBhcnRfZXh0ZGVwXzIpCisgICAgSU5UTyBwYXJ0X2V4dGRlcF9tZXJnZWQ7CisK Ky0tIERlcGVuZGVuY2llcyBtdXN0IG5vdyBzaXQgb24gdGhlIG5ldyBwYXJ0aXRpb24ncyBpbmRl eGVzLgorRFJPUCBFWFRFTlNJT04gdGVzdF9leHQzOworU0VMRUNUIGMucmVsbmFtZSwgZS5leHRu YW1lCitGUk9NIHBnX2RlcGVuZCBkCitKT0lOIHBnX2NsYXNzIGMgT04gZC5vYmppZCA9IGMub2lk CitKT0lOIHBnX2V4dGVuc2lvbiBlIE9OIGQucmVmb2JqaWQgPSBlLm9pZAorV0hFUkUgYy5yZWxu YW1lIElOICgncGFydF9leHRkZXBfbWVyZ2VkX2lfaWR4JywgJ3BhcnRfZXh0ZGVwX21lcmdlZF94 X2lkeCcpCisgIEFORCBlLmV4dG5hbWUgSU4gKCd0ZXN0X2V4dDMnLCAndGVzdF9leHQ1JykKKyAg QU5EIGQuZGVwdHlwZSA9ICd4JworT1JERVIgQlkgYy5yZWxuYW1lLCBlLmV4dG5hbWU7CisKKy0t IEFuIGluZGV4IGNyZWF0ZWQgZGlyZWN0bHkgb24gYSBwYXJ0aXRpb24gaGFzIG5vIHBhcmVudCBp biB0aGUgcGFydGl0aW9uZWQKKy0tIGluZGV4IHRyZWU7IG1lcmdlIG11c3QgaWdub3JlIHN1Y2gg aW5kZXhlcyAodGhleSBkaXNhcHBlYXIgd2l0aCB0aGUgb2xkCistLSBwYXJ0aXRpb24pLgorQ1JF QVRFIElOREVYIHBhcnRfZXh0ZGVwXzNfZXh0cmFfaWR4IE9OIHBhcnRfZXh0ZGVwXzMoeCk7CitB TFRFUiBUQUJMRSBwYXJ0X2V4dGRlcCBNRVJHRSBQQVJUSVRJT05TIChwYXJ0X2V4dGRlcF9tZXJn ZWQsIHBhcnRfZXh0ZGVwXzMpCisgICAgSU5UTyBwYXJ0X2V4dGRlcF9tZXJnZWQyOworU0VMRUNU IHJlbG5hbWUgRlJPTSBwZ19jbGFzcworV0hFUkUgcmVsbmFtZSBMSUtFICdwYXJ0X2V4dGRlcF9t ZXJnZWQyJWlkeCcgT1JERVIgQlkgcmVsbmFtZTsKKworLS0gTWlzbWF0Y2hlZCBkZXBlbmRlbmNp ZXM6IHBhcnRpdGlvbiA0J3MgaW5kZXggZGVwZW5kcyBvbiBhIGRpZmZlcmVudAorLS0gZXh0ZW5z aW9uIHRoYW4gcGFydGl0aW9uX21lcmdlZDIncy4gQm90aCBvcmRlcmluZ3MgbXVzdCBmYWlsLCBh bmQgdGhlCistLSBlcnJvciBtdXN0IGNpdGUgYm90aCBwYXJ0aXRpb24gaW5kZXhlcy4KK0FMVEVS IFRBQkxFIHBhcnRfZXh0ZGVwIE1FUkdFIFBBUlRJVElPTlMgKHBhcnRfZXh0ZGVwX21lcmdlZDIs IHBhcnRfZXh0ZGVwXzQpCisgICAgSU5UTyBwYXJ0X2V4dGRlcF9iYWQ7CitBTFRFUiBUQUJMRSBw YXJ0X2V4dGRlcCBNRVJHRSBQQVJUSVRJT05TIChwYXJ0X2V4dGRlcF80LCBwYXJ0X2V4dGRlcF9t ZXJnZWQyKQorICAgIElOVE8gcGFydF9leHRkZXBfYmFkOworCistLSBFbXB0eSB2cyBub24tZW1w dHkgZGVwZW5kZW5jeSBzZXQgKHRoZSBzdWJzZXQgY2FzZSB0aGUgZWFybGllciBsaW5lYXIKKy0t IGNoZWNrIG1pc3NlZCBpbiBvbmUgZGlyZWN0aW9uKS4KK0FMVEVSIFRBQkxFIHBhcnRfZXh0ZGVw IE1FUkdFIFBBUlRJVElPTlMgKHBhcnRfZXh0ZGVwXzQsIHBhcnRfZXh0ZGVwXzUpCisgICAgSU5U TyBwYXJ0X2V4dGRlcF9iYWQ7CitBTFRFUiBUQUJMRSBwYXJ0X2V4dGRlcCBNRVJHRSBQQVJUSVRJ T05TIChwYXJ0X2V4dGRlcF81LCBwYXJ0X2V4dGRlcF80KQorICAgIElOVE8gcGFydF9leHRkZXBf YmFkOworCistLSBTdWJzZXQ6IHBhcnRpdGlvbiA1J3MgaV9pZHggZGVwZW5kcyBvbiBhIHN0cmlj dCBzdXBlcnNldCBvZiBwYXJ0aXRpb24gNCdzCistLSBpX2lkeCBkZXBlbmRlbmNpZXMuIFBhcnRp dGlvbiA0ID0ge3Rlc3RfZXh0NX0sIHBhcnRpdGlvbiA1IHdpbGwgYmUKKy0tIHt0ZXN0X2V4dDMs IHRlc3RfZXh0NX0uIEJvdGggb3JkZXJpbmdzIG11c3QgZmFpbDsgaW4gcGFydGljdWxhciB0aGUg Y2FzZQorLS0gd2hlcmUgdGhlIGZpcnN0IHBhcnRpdGlvbiB3ZSB3YWxrIGhhcyBmZXdlciBleHRl bnNpb25zIHRoYW4gdGhlIHNlY29uZAorLS0gbXVzdCBzdGlsbCBiZSByZWplY3RlZC4KK0FMVEVS IElOREVYIHBhcnRfZXh0ZGVwXzVfaV9pZHggREVQRU5EUyBPTiBFWFRFTlNJT04gdGVzdF9leHQz OworQUxURVIgSU5ERVggcGFydF9leHRkZXBfNV9pX2lkeCBERVBFTkRTIE9OIEVYVEVOU0lPTiB0 ZXN0X2V4dDU7CitBTFRFUiBUQUJMRSBwYXJ0X2V4dGRlcCBNRVJHRSBQQVJUSVRJT05TIChwYXJ0 X2V4dGRlcF80LCBwYXJ0X2V4dGRlcF81KQorICAgIElOVE8gcGFydF9leHRkZXBfYmFkOworQUxU RVIgVEFCTEUgcGFydF9leHRkZXAgTUVSR0UgUEFSVElUSU9OUyAocGFydF9leHRkZXBfNSwgcGFy dF9leHRkZXBfNCkKKyAgICBJTlRPIHBhcnRfZXh0ZGVwX2JhZDsKKy0tIFJlc2V0IHBhcnRpdGlv biA1IHNvIGl0IGRvZXNuJ3QgaW50ZXJmZXJlIHdpdGggdGhlIFNQTElUIHRlc3QgYmVsb3cuCitB TFRFUiBJTkRFWCBwYXJ0X2V4dGRlcF81X2lfaWR4IE5PIERFUEVORFMgT04gRVhURU5TSU9OIHRl c3RfZXh0MzsKK0FMVEVSIElOREVYIHBhcnRfZXh0ZGVwXzVfaV9pZHggTk8gREVQRU5EUyBPTiBF WFRFTlNJT04gdGVzdF9leHQ1OworCistLSBTcGxpdDogdGhlIHNpbmdsZSBzb3VyY2UgcGFydGl0 aW9uJ3MgZGVwZW5kZW5jaWVzIG11c3QgYXBwZWFyIG9uIGV2ZXJ5CistLSBuZXcgcGFydGl0aW9u J3MgbWF0Y2hpbmcgaW5kZXgsIGlkZW50aWZpZWQgYnkgZXh0ZW5zaW9uIG5hbWUuCitBTFRFUiBU QUJMRSBwYXJ0X2V4dGRlcCBTUExJVCBQQVJUSVRJT04gcGFydF9leHRkZXBfbWVyZ2VkMiBJTlRP CisgICAgKFBBUlRJVElPTiBwYXJ0X2V4dGRlcF9zMSBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgz KSwKKyAgICAgUEFSVElUSU9OIHBhcnRfZXh0ZGVwX3MyIEZPUiBWQUxVRVMgRlJPTSAoMykgVE8g KDQpKTsKK1NFTEVDVCBjLnJlbG5hbWUsIGUuZXh0bmFtZQorRlJPTSBwZ19kZXBlbmQgZAorSk9J TiBwZ19jbGFzcyBjIE9OIGQub2JqaWQgPSBjLm9pZAorSk9JTiBwZ19leHRlbnNpb24gZSBPTiBk LnJlZm9iamlkID0gZS5vaWQKK1dIRVJFIGMucmVsbmFtZSBJTiAoJ3BhcnRfZXh0ZGVwX3MxX2lf aWR4JywgJ3BhcnRfZXh0ZGVwX3MxX3hfaWR4JywKKyAgICAgICAgICAgICAgICAgICAgJ3BhcnRf ZXh0ZGVwX3MyX2lfaWR4JywgJ3BhcnRfZXh0ZGVwX3MyX3hfaWR4JykKKyAgQU5EIGUuZXh0bmFt ZSBJTiAoJ3Rlc3RfZXh0MycsICd0ZXN0X2V4dDUnKQorICBBTkQgZC5kZXB0eXBlID0gJ3gnCitP UkRFUiBCWSBjLnJlbG5hbWUsIGUuZXh0bmFtZTsKKworRFJPUCBUQUJMRSBwYXJ0X2V4dGRlcDsK K0RST1AgRVhURU5TSU9OIHRlc3RfZXh0MzsKK0RST1AgRVhURU5TSU9OIHRlc3RfZXh0NTsKZGlm ZiAtLWdpdCBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0IGIvc3JjL3Rvb2xzL3Bn aW5kZW50L3R5cGVkZWZzLmxpc3QKaW5kZXggNDlkZmI2NjJhYmMuLjlmMWRkNTUyMTNkIDEwMDY0 NAotLS0gYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdAorKysgYi9zcmMvdG9vbHMv cGdpbmRlbnQvdHlwZWRlZnMubGlzdApAQCAtMjIwMCw2ICsyMjAwLDcgQEAgUGFydGl0aW9uRGly ZWN0b3J5RW50cnkKIFBhcnRpdGlvbkRpc3BhdGNoCiBQYXJ0aXRpb25FbGVtCiBQYXJ0aXRpb25I YXNoQm91bmQKK1BhcnRpdGlvbkluZGV4RXh0RGVwRW50cnkKIFBhcnRpdGlvbktleQogUGFydGl0 aW9uTGlzdFZhbHVlCiBQYXJ0aXRpb25NYXAKLS0gCjIuMzkuNSAoQXBwbGUgR2l0LTE1NCkKCg== --0000000000005711c3064ffd8553--