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 1wFVhG-005EG2-0y for pgsql-hackers@arkaria.postgresql.org; Wed, 22 Apr 2026 11:24:47 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wFVhF-00DIoN-1r for pgsql-hackers@arkaria.postgresql.org; Wed, 22 Apr 2026 11:24:45 +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 1wFVhE-00DIoD-2s for pgsql-hackers@lists.postgresql.org; Wed, 22 Apr 2026 11:24:45 +0000 Received: from mail-oo1-xc2b.google.com ([2607:f8b0:4864:20::c2b]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wFVhC-00000002F6d-315t for pgsql-hackers@postgresql.org; Wed, 22 Apr 2026 11:24:44 +0000 Received: by mail-oo1-xc2b.google.com with SMTP id 006d021491bc7-694932346a1so935785eaf.3 for ; Wed, 22 Apr 2026 04:24:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1776857082; cv=none; d=google.com; s=arc-20240605; b=hcwLXxmU86vIeuQ7+VpjEonCn5AlRS1vT83FN1rkmPqlNKsetTAxtiqmimIUo3T42V owpRnXUCwHWTnhrG1Y+ORptRKLPIxgZmmUwc4a921IFHoAJHMs9Hup7cwaDl7wCnnhEs kOteOSE1ao1pEIW8MNP+kHUWYN5RSnl0n135Ja/N98ZaWpnQCseflbvu7K3ZqSaskXDo glwR+JzO35dlJUFQMULP/CDqEsqZab9bhUFz41oAvG0lBR5ET31CgGWoSd+vB24dlqrz QQ3aR1nVJKsUetuWms9wIMG6nX2CjWA0klyBQJGOt25l/bs5PSnI94osJ1oSLB/3vn1p rPkg== 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=H2Yn5uxG9wSo95lXR1O9v95u9/tTJcI0HyjKDJOSkUQ=; fh=j6PtD0P6K/5bt4t4dhW6X2t+VuoW9d0GXkPWTtqRBIY=; b=kFAr5JH5A4TZHPLBl0j2hUZLCPNXl2PMvMMCuAF3L/7cc+QojY9gUmhnAfsbjLZLfm n5wotyo0l/HdCRxBFGWeh/0SIrNGYwJ8OSIbZ9adPxhdgpCb/2qxleI88EP/6gAEZjFM ArkpAjPQL1W4r/LX49WtQoqlNvnWsKZLvoMYaHaR1moznJ3afvZSQI0Q9uuVRtUzVpGb XBXiLU2kTWxAaoK8tIdIe1WHDy7V04x5j6rvx6s2hj/XeR7zIHQYAc72OE8gEoZVCB1x D8MZgOPRGjlEC4zY6VBj9bhhk7SyZ9U8XKo2hH6MLcNritQ1u6IWNOnsa6SrkpMj/d1k UqIg==; 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=1776857082; x=1777461882; 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=H2Yn5uxG9wSo95lXR1O9v95u9/tTJcI0HyjKDJOSkUQ=; b=JmcUcK2n41ZNJMOuKuP1rIR/B0zPhphbrvQUmCKdyZ0w9q4FcdC6s9FCurslw0qVkR 27g8MKudE/4WPvXgBxVMJ/sGHQ9rAx8GhdvSUxHrJiIDs8aScOxV5h2nKdUqugtg3taS wQjrVA4sbxa4z/HnouzrsbD+u/I3YJ6vGZwwd6SyJriB04g0d451uR1aT4D1zSMnlzgI du0WEBXEo1EREfHyDHhe7VvMB9W8Njc5y8ELsGa/CPJg0fp16sT3mjW5iOzDrQK+H4Tj kKNKiKi20eUnlbjdmUcDY7nFVK22fXaITVGmMfEIP3/9tDWkPPTsAtso+i/sRCua7cM7 RRfw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1776857082; x=1777461882; 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=H2Yn5uxG9wSo95lXR1O9v95u9/tTJcI0HyjKDJOSkUQ=; b=kwUvzuHnfNI3cnpUi/TT67+EXpQ+0MQIMOvDtQBqdaS0hU95dpyROR4I+s4WSUvDmg WraS0oucU8FL2K9Tpw2/2YGKMjzvqT64ux5TYOp1L8cnZJuL1HnzeOwMBGVTblFE1sfF SkO60HkBc0EaPR7oDRYE+iTSE9qq8NKKEr4onD1x/aGZ0BNfCT4dxfKsElkSLstJhoUM +Rf4zuyAzzp5uB5odqCbYY3LEJSb/lGQEv+cH3CjwLjI5WRDJfJPcnolYC13vU6j4wcs dzv37K99WFmKMBhIbUmUm0g5OBPUEMrpM4bcUVE9XfbEBQHGfLb1gpjYU/Uax6alE3WT 54/Q== X-Forwarded-Encrypted: i=1; AFNElJ+xNXyofEXIGiE9Xg6Nlpy3fQvCntClW4zEfBVORZgJWKwl5wnW+yh23BicfpOT4ApJFK3dlo7M8V2gkaVT@postgresql.org X-Gm-Message-State: AOJu0YzBLiqDgB471AU/Ce9BUjQeaNpc6ryOEt5QhyfIBxY1G/GfNUEW nyOyT2UmWtGsusxd1qwhbru0Qxhpwusj6uvifMZyd2J1hmkN1zcgrKdr9oGZ7r8G8dnL6Yy5V6R J1ER05jBP9ticjL0ltRzb6y1T8kqXIXY= X-Gm-Gg: AeBDies+NFYntGVzBv5NmBcfbyT3csi8H20uogstHHNj/bEefL0fveYNQnoSYbUuqrO mSq565n5swq5zMypTA+iYmVQd3rqTXlZNmclG+MnaA6xowqtMjL358bgxoKQc2eqQVyajuutFqk MW6Du+dUasGz86+VQ8Al5t1T1DDlPw98hlOeefCvW8btlKJ8ziQXS1A6icuftRXw6y9szDvD6l8 URPZp97fjvqvdsOKw6HB/GIdpca8OTXVYsuWK/Mn4KYEEpEpKQbdbG2785tvgmlWff8valEIRO0 CSsugGi3fkeU/tTOT+7Bj6FhzAPyFtelpti4k3YFtrbbMNDDw6OvamG3mgF89/BTP0uLqu/zDgI MJL9zvuDMuUvEQBzs X-Received: by 2002:a05:6820:3108:b0:694:21fa:4f0c with SMTP id 006d021491bc7-69462f179d6mr12523109eaf.44.1776857082375; Wed, 22 Apr 2026 04:24: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: From: Alexander Korotkov Date: Wed, 22 Apr 2026 14:24:29 +0300 X-Gm-Features: AQROBzBq7BCeJygLXH1iAaAwlhHdX76fpjPxC81tqBviaAKPVqTEI30nnv08PBs Message-ID: Subject: Re: MERGE PARTITIONS and DEPENDS ON EXTENSION. To: Kirill Reshke Cc: Matheus Alcantara , Dmitry Koval , pgsql-hackers Content-Type: multipart/mixed; boundary="00000000000037276b06500ac7e3" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --00000000000037276b06500ac7e3 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, Apr 22, 2026 at 1:48=E2=80=AFPM Kirill Reshke wrote: > Some minor comments: > > > +-- Sanity check: the extension can't be dropped while dependencies exi= st. > >+DROP EXTENSION test_ext3; > > This exercises something that already works on HEAD (note this is DROP > before first MERGE partition call ). Do we really need this? I've removed this. > > +-- An index created directly on a partition has no parent in the parti= tioned > > +-- index tree; merge must ignore such indexes (they disappear with the= old > > +-- partition). > > +CREATE INDEX part_extdep_3_extra_idx ON part_extdep_3(x); > > +ALTER TABLE part_extdep MERGE PARTITIONS (part_extdep_merged, part_ext= dep_3) > > + INTO part_extdep_merged2; > > +SELECT relname FROM pg_class > > +WHERE relname LIKE 'part_extdep_merged2%idx' ORDER BY relname; > > Looks like this test is also redundant? This does not test new DEPENDS ON= logic. I've added the dependency on this index to check index disappears with its dependency. I think this would make this test more relevant. Kirill, Matheus, are you ok with these change? ------ Regards, Alexander Korotkov Supabase --00000000000037276b06500ac7e3 Content-Type: application/octet-stream; name="v7-0001-Preserve-extension-dependencies-on-indexes-during.patch" Content-Disposition: attachment; filename="v7-0001-Preserve-extension-dependencies-on-indexes-during.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mo9yt65r0 RnJvbSAzNzc3ODcwOGE0ODA4N2Y3MDQ5NmZjZDY0OWM0YTU5ZDg3M2UwNjQ0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXRoZXVzIEFsY2FudGFyYSA8bXRocy5kZXZAcG0ubWU+CkRh dGU6IFdlZCwgMTEgTWFyIDIwMjYgMTE6Mzk6NTYgLTAzMDAKU3ViamVjdDogW1BBVENIIHY3XSBQ 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 ZC90ZXN0X2V4dGRlcGVuZC5vdXQgICAgICAgICAgICAgICB8IDEyMCArKysrKysrKwogLi4uL3Rl c3RfZXh0ZW5zaW9ucy9zcWwvdGVzdF9leHRkZXBlbmQuc3FsICAgIHwgMTA0ICsrKysrKysKIHNy Yy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0ICAgICAgICAgICAgICB8ICAgMSArCiA1IGZp bGVzIGNoYW5nZWQsIDUyNSBpbnNlcnRpb25zKCspCgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21s 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 eCAwYjYyMDE1ZDE4Yy4uZWRlNWRjNjRjMDQgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L21vZHVsZXMv dGVzdF9leHRlbnNpb25zL2V4cGVjdGVkL3Rlc3RfZXh0ZGVwZW5kLm91dAorKysgYi9zcmMvdGVz dC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy9leHBlY3RlZC90ZXN0X2V4dGRlcGVuZC5vdXQKQEAg LTE4NiwzICsxODYsMTIzIEBAIERST1AgTUFURVJJQUxJWkVEIFZJRVcgZDsKIERST1AgSU5ERVgg 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 cyBubyBkZXBlbmRlbmN5IGF0IGFsbC4KKy0tIE1lcmdlIG1hdGNoaW5nIHBhcnRpdGlvbnM6IHNo b3VsZCBzdWNjZWVkIGFuZCBwcmVzZXJ2ZSBkZXBlbmRlbmNpZXMgb24gdGhlCistLSBuZXcgcGFy dGl0aW9uJ3MgaW5kZXhlcyAoRFJPUCBFWFRFTlNJT04gbXVzdCBmYWlsLCBuYW1pbmcgdGhlIG5l dyBpbmRleCkuCitBTFRFUiBUQUJMRSBwYXJ0X2V4dGRlcCBNRVJHRSBQQVJUSVRJT05TIChwYXJ0 X2V4dGRlcF8xLCBwYXJ0X2V4dGRlcF8yKQorICAgIElOVE8gcGFydF9leHRkZXBfbWVyZ2VkOwor RFJPUCBFWFRFTlNJT04gdGVzdF9leHQzOworRVJST1I6ICBjYW5ub3QgZHJvcCBpbmRleCBwYXJ0 X2V4dGRlcF9tZXJnZWRfaV9pZHggYmVjYXVzZSBpbmRleCBwYXJ0X2V4dGRlcF9pX2lkeCByZXF1 aXJlcyBpdAorSElOVDogIFlvdSBjYW4gZHJvcCBpbmRleCBwYXJ0X2V4dGRlcF9pX2lkeCBpbnN0 ZWFkLgorU0VMRUNUIGMucmVsbmFtZSwgZS5leHRuYW1lCitGUk9NIHBnX2RlcGVuZCBkCitKT0lO IHBnX2NsYXNzIGMgT04gZC5vYmppZCA9IGMub2lkCitKT0lOIHBnX2V4dGVuc2lvbiBlIE9OIGQu cmVmb2JqaWQgPSBlLm9pZAorV0hFUkUgYy5yZWxuYW1lIElOICgncGFydF9leHRkZXBfbWVyZ2Vk X2lfaWR4JywgJ3BhcnRfZXh0ZGVwX21lcmdlZF94X2lkeCcpCisgIEFORCBlLmV4dG5hbWUgSU4g KCd0ZXN0X2V4dDMnLCAndGVzdF9leHQ1JykKKyAgQU5EIGQuZGVwdHlwZSA9ICd4JworT1JERVIg QlkgYy5yZWxuYW1lLCBlLmV4dG5hbWU7CisgICAgICAgICByZWxuYW1lICAgICAgICAgIHwgIGV4 dG5hbWUgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBwYXJ0X2V4 dGRlcF9tZXJnZWRfaV9pZHggfCB0ZXN0X2V4dDMKKyBwYXJ0X2V4dGRlcF9tZXJnZWRfeF9pZHgg fCB0ZXN0X2V4dDUKKygyIHJvd3MpCisKKy0tIEFuIGluZGV4IGNyZWF0ZWQgZGlyZWN0bHkgb24g YSBwYXJ0aXRpb24gaGFzIG5vIHBhcmVudCBpbiB0aGUgcGFydGl0aW9uZWQKKy0tIGluZGV4IHRy ZWUuICBTdWNoIGFuIGluZGV4IGlzIGRyb3BwZWQgd2l0aCBpdHMgb2xkIHBhcnRpdGlvbiBkdXJp bmcgbWVyZ2UsCistLSBhbmQgYW55IGV4dGVuc2lvbiBkZXBlbmRlbmN5IGl0IGNhcnJpZXMgZ29l cyBhd2F5IHdpdGggaXQ6IHRoZSBkZXAgaXMgbm90CistLSBwcm9tb3RlZCB0byB0aGUgbWVyZ2Vk IHBhcnRpdGlvbi4gIFZlcmlmeSBieSBhdHRhY2hpbmcgdGVzdF9leHQ5IHRvIHN1Y2gKKy0tIGFu IG9ycGhhbiBpbmRleCwgbWVyZ2luZywgYW5kIG9ic2VydmluZyB0aGF0IHRlc3RfZXh0OSBiZWNv bWVzIGRyb3BwYWJsZS4KK0NSRUFURSBFWFRFTlNJT04gdGVzdF9leHQ5OworQ1JFQVRFIElOREVY IHBhcnRfZXh0ZGVwXzNfZXh0cmFfaWR4IE9OIHBhcnRfZXh0ZGVwXzMoeCk7CitBTFRFUiBJTkRF WCBwYXJ0X2V4dGRlcF8zX2V4dHJhX2lkeCBERVBFTkRTIE9OIEVYVEVOU0lPTiB0ZXN0X2V4dDk7 CitBTFRFUiBUQUJMRSBwYXJ0X2V4dGRlcCBNRVJHRSBQQVJUSVRJT05TIChwYXJ0X2V4dGRlcF9t ZXJnZWQsIHBhcnRfZXh0ZGVwXzMpCisgICAgSU5UTyBwYXJ0X2V4dGRlcF9tZXJnZWQyOworRFJP UCBFWFRFTlNJT04gdGVzdF9leHQ5OworLS0gTWlzbWF0Y2hlZCBkZXBlbmRlbmNpZXM6IHBhcnRp dGlvbiA0J3MgaW5kZXggZGVwZW5kcyBvbiBhIGRpZmZlcmVudAorLS0gZXh0ZW5zaW9uIHRoYW4g cGFydGl0aW9uX21lcmdlZDIncy4gQm90aCBvcmRlcmluZ3MgbXVzdCBmYWlsLCBhbmQgdGhlCist LSBlcnJvciBtdXN0IGNpdGUgYm90aCBwYXJ0aXRpb24gaW5kZXhlcy4KK0FMVEVSIFRBQkxFIHBh cnRfZXh0ZGVwIE1FUkdFIFBBUlRJVElPTlMgKHBhcnRfZXh0ZGVwX21lcmdlZDIsIHBhcnRfZXh0 ZGVwXzQpCisgICAgSU5UTyBwYXJ0X2V4dGRlcF9iYWQ7CitFUlJPUjogIGNhbm5vdCBtZXJnZSBw YXJ0aXRpb25zIHdpdGggY29uZmxpY3RpbmcgZXh0ZW5zaW9uIGRlcGVuZGVuY2llcworREVUQUlM OiAgUGFydGl0aW9uIGluZGV4ZXMgInBhcnRfZXh0ZGVwXzRfaV9pZHgiIGFuZCAicGFydF9leHRk ZXBfbWVyZ2VkMl9pX2lkeCIgZGVwZW5kIG9uIGRpZmZlcmVudCBleHRlbnNpb25zLgorQUxURVIg VEFCTEUgcGFydF9leHRkZXAgTUVSR0UgUEFSVElUSU9OUyAocGFydF9leHRkZXBfNCwgcGFydF9l eHRkZXBfbWVyZ2VkMikKKyAgICBJTlRPIHBhcnRfZXh0ZGVwX2JhZDsKK0VSUk9SOiAgY2Fubm90 IG1lcmdlIHBhcnRpdGlvbnMgd2l0aCBjb25mbGljdGluZyBleHRlbnNpb24gZGVwZW5kZW5jaWVz CitERVRBSUw6ICBQYXJ0aXRpb24gaW5kZXhlcyAicGFydF9leHRkZXBfNF9pX2lkeCIgYW5kICJw YXJ0X2V4dGRlcF9tZXJnZWQyX2lfaWR4IiBkZXBlbmQgb24gZGlmZmVyZW50IGV4dGVuc2lvbnMu CistLSBFbXB0eSB2cyBub24tZW1wdHkgZGVwZW5kZW5jeSBzZXQgKHRoZSBzdWJzZXQgY2FzZSB0 aGUgZWFybGllciBsaW5lYXIKKy0tIGNoZWNrIG1pc3NlZCBpbiBvbmUgZGlyZWN0aW9uKS4KK0FM VEVSIFRBQkxFIHBhcnRfZXh0ZGVwIE1FUkdFIFBBUlRJVElPTlMgKHBhcnRfZXh0ZGVwXzQsIHBh cnRfZXh0ZGVwXzUpCisgICAgSU5UTyBwYXJ0X2V4dGRlcF9iYWQ7CitFUlJPUjogIGNhbm5vdCBt ZXJnZSBwYXJ0aXRpb25zIHdpdGggY29uZmxpY3RpbmcgZXh0ZW5zaW9uIGRlcGVuZGVuY2llcwor REVUQUlMOiAgUGFydGl0aW9uIGluZGV4ZXMgInBhcnRfZXh0ZGVwXzRfaV9pZHgiIGFuZCAicGFy dF9leHRkZXBfNV9pX2lkeCIgZGVwZW5kIG9uIGRpZmZlcmVudCBleHRlbnNpb25zLgorQUxURVIg VEFCTEUgcGFydF9leHRkZXAgTUVSR0UgUEFSVElUSU9OUyAocGFydF9leHRkZXBfNSwgcGFydF9l eHRkZXBfNCkKKyAgICBJTlRPIHBhcnRfZXh0ZGVwX2JhZDsKK0VSUk9SOiAgY2Fubm90IG1lcmdl IHBhcnRpdGlvbnMgd2l0aCBjb25mbGljdGluZyBleHRlbnNpb24gZGVwZW5kZW5jaWVzCitERVRB SUw6ICBQYXJ0aXRpb24gaW5kZXhlcyAicGFydF9leHRkZXBfNF9pX2lkeCIgYW5kICJwYXJ0X2V4 dGRlcF81X2lfaWR4IiBkZXBlbmQgb24gZGlmZmVyZW50IGV4dGVuc2lvbnMuCistLSBTdWJzZXQ6 IHBhcnRpdGlvbiA1J3MgaV9pZHggZGVwZW5kcyBvbiBhIHN0cmljdCBzdXBlcnNldCBvZiBwYXJ0 aXRpb24gNCdzCistLSBpX2lkeCBkZXBlbmRlbmNpZXMuIFBhcnRpdGlvbiA0ID0ge3Rlc3RfZXh0 NX0sIHBhcnRpdGlvbiA1IHdpbGwgYmUKKy0tIHt0ZXN0X2V4dDMsIHRlc3RfZXh0NX0uIEJvdGgg b3JkZXJpbmdzIG11c3QgZmFpbDsgaW4gcGFydGljdWxhciB0aGUgY2FzZQorLS0gd2hlcmUgdGhl IGZpcnN0IHBhcnRpdGlvbiB3ZSB3YWxrIGhhcyBmZXdlciBleHRlbnNpb25zIHRoYW4gdGhlIHNl Y29uZAorLS0gbXVzdCBzdGlsbCBiZSByZWplY3RlZC4KK0FMVEVSIElOREVYIHBhcnRfZXh0ZGVw XzVfaV9pZHggREVQRU5EUyBPTiBFWFRFTlNJT04gdGVzdF9leHQzOworQUxURVIgSU5ERVggcGFy dF9leHRkZXBfNV9pX2lkeCBERVBFTkRTIE9OIEVYVEVOU0lPTiB0ZXN0X2V4dDU7CitBTFRFUiBU QUJMRSBwYXJ0X2V4dGRlcCBNRVJHRSBQQVJUSVRJT05TIChwYXJ0X2V4dGRlcF80LCBwYXJ0X2V4 dGRlcF81KQorICAgIElOVE8gcGFydF9leHRkZXBfYmFkOworRVJST1I6ICBjYW5ub3QgbWVyZ2Ug cGFydGl0aW9ucyB3aXRoIGNvbmZsaWN0aW5nIGV4dGVuc2lvbiBkZXBlbmRlbmNpZXMKK0RFVEFJ TDogIFBhcnRpdGlvbiBpbmRleGVzICJwYXJ0X2V4dGRlcF80X2lfaWR4IiBhbmQgInBhcnRfZXh0 ZGVwXzVfaV9pZHgiIGRlcGVuZCBvbiBkaWZmZXJlbnQgZXh0ZW5zaW9ucy4KK0FMVEVSIFRBQkxF IHBhcnRfZXh0ZGVwIE1FUkdFIFBBUlRJVElPTlMgKHBhcnRfZXh0ZGVwXzUsIHBhcnRfZXh0ZGVw XzQpCisgICAgSU5UTyBwYXJ0X2V4dGRlcF9iYWQ7CitFUlJPUjogIGNhbm5vdCBtZXJnZSBwYXJ0 aXRpb25zIHdpdGggY29uZmxpY3RpbmcgZXh0ZW5zaW9uIGRlcGVuZGVuY2llcworREVUQUlMOiAg UGFydGl0aW9uIGluZGV4ZXMgInBhcnRfZXh0ZGVwXzRfaV9pZHgiIGFuZCAicGFydF9leHRkZXBf NV9pX2lkeCIgZGVwZW5kIG9uIGRpZmZlcmVudCBleHRlbnNpb25zLgorLS0gUmVzZXQgcGFydGl0 aW9uIDUgc28gaXQgZG9lc24ndCBpbnRlcmZlcmUgd2l0aCB0aGUgU1BMSVQgdGVzdCBiZWxvdy4K K0FMVEVSIElOREVYIHBhcnRfZXh0ZGVwXzVfaV9pZHggTk8gREVQRU5EUyBPTiBFWFRFTlNJT04g dGVzdF9leHQzOworQUxURVIgSU5ERVggcGFydF9leHRkZXBfNV9pX2lkeCBOTyBERVBFTkRTIE9O IEVYVEVOU0lPTiB0ZXN0X2V4dDU7CistLSBTcGxpdDogdGhlIHNpbmdsZSBzb3VyY2UgcGFydGl0 aW9uJ3MgZGVwZW5kZW5jaWVzIG11c3QgYXBwZWFyIG9uIGV2ZXJ5CistLSBuZXcgcGFydGl0aW9u J3MgbWF0Y2hpbmcgaW5kZXgsIGlkZW50aWZpZWQgYnkgZXh0ZW5zaW9uIG5hbWUuCitBTFRFUiBU QUJMRSBwYXJ0X2V4dGRlcCBTUExJVCBQQVJUSVRJT04gcGFydF9leHRkZXBfbWVyZ2VkMiBJTlRP CisgICAgKFBBUlRJVElPTiBwYXJ0X2V4dGRlcF9zMSBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgz KSwKKyAgICAgUEFSVElUSU9OIHBhcnRfZXh0ZGVwX3MyIEZPUiBWQUxVRVMgRlJPTSAoMykgVE8g KDQpKTsKK1NFTEVDVCBjLnJlbG5hbWUsIGUuZXh0bmFtZQorRlJPTSBwZ19kZXBlbmQgZAorSk9J TiBwZ19jbGFzcyBjIE9OIGQub2JqaWQgPSBjLm9pZAorSk9JTiBwZ19leHRlbnNpb24gZSBPTiBk LnJlZm9iamlkID0gZS5vaWQKK1dIRVJFIGMucmVsbmFtZSBJTiAoJ3BhcnRfZXh0ZGVwX3MxX2lf aWR4JywgJ3BhcnRfZXh0ZGVwX3MxX3hfaWR4JywKKyAgICAgICAgICAgICAgICAgICAgJ3BhcnRf ZXh0ZGVwX3MyX2lfaWR4JywgJ3BhcnRfZXh0ZGVwX3MyX3hfaWR4JykKKyAgQU5EIGUuZXh0bmFt ZSBJTiAoJ3Rlc3RfZXh0MycsICd0ZXN0X2V4dDUnKQorICBBTkQgZC5kZXB0eXBlID0gJ3gnCitP UkRFUiBCWSBjLnJlbG5hbWUsIGUuZXh0bmFtZTsKKyAgICAgICByZWxuYW1lICAgICAgICB8ICBl eHRuYW1lICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0KKyBwYXJ0X2V4dGRl cF9zMV9pX2lkeCB8IHRlc3RfZXh0MworIHBhcnRfZXh0ZGVwX3MxX3hfaWR4IHwgdGVzdF9leHQ1 CisgcGFydF9leHRkZXBfczJfaV9pZHggfCB0ZXN0X2V4dDMKKyBwYXJ0X2V4dGRlcF9zMl94X2lk eCB8IHRlc3RfZXh0NQorKDQgcm93cykKKworRFJPUCBUQUJMRSBwYXJ0X2V4dGRlcDsKK0RST1Ag RVhURU5TSU9OIHRlc3RfZXh0MzsKK0RST1AgRVhURU5TSU9OIHRlc3RfZXh0NTsKZGlmZiAtLWdp dCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25zL3NxbC90ZXN0X2V4dGRlcGVuZC5z cWwgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy9zcWwvdGVzdF9leHRkZXBlbmQu c3FsCmluZGV4IDYzMjQwYTFhZjVkLi5hZDczNGFmMWU3MSAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv bW9kdWxlcy90ZXN0X2V4dGVuc2lvbnMvc3FsL3Rlc3RfZXh0ZGVwZW5kLnNxbAorKysgYi9zcmMv dGVzdC9tb2R1bGVzL3Rlc3RfZXh0ZW5zaW9ucy9zcWwvdGVzdF9leHRkZXBlbmQuc3FsCkBAIC04 OCwzICs4OCwxMDcgQEAgRFJPUCBGVU5DVElPTiBiKCk7CiBEUk9QIE1BVEVSSUFMSVpFRCBWSUVX IGQ7CiBEUk9QIElOREVYIGU7CiBEUk9QIFNDSEVNQSB0ZXN0X2V4dCBDQVNDQURFOworCistLSBG aWZ0aCB0ZXN0OiBleHRlbnNpb24gZGVwZW5kZW5jaWVzIG9uIHBhcnRpdGlvbiBpbmRleGVzIHN1 cnZpdmUgTUVSR0UgYW5kCistLSBTUExJVCBQQVJUSVRJT04gb3BlcmF0aW9ucywgYW5kIG1pc21h dGNoZXMgYmV0d2VlbiBzb3VyY2UgcGFydGl0aW9ucyBhcmUKKy0tIHJlcG9ydGVkLgorUkVTRVQg c2VhcmNoX3BhdGg7CitDUkVBVEUgRVhURU5TSU9OIHRlc3RfZXh0MzsKK0NSRUFURSBFWFRFTlNJ T04gdGVzdF9leHQ1OworCitDUkVBVEUgVEFCTEUgcGFydF9leHRkZXAgKGkgaW50LCB4IGludCkg UEFSVElUSU9OIEJZIFJBTkdFIChpKTsKK0NSRUFURSBUQUJMRSBwYXJ0X2V4dGRlcF8xIFBBUlRJ VElPTiBPRiBwYXJ0X2V4dGRlcCBGT1IgVkFMVUVTIEZST00gKDEpIFRPICgyKTsKK0NSRUFURSBU QUJMRSBwYXJ0X2V4dGRlcF8yIFBBUlRJVElPTiBPRiBwYXJ0X2V4dGRlcCBGT1IgVkFMVUVTIEZS T00gKDIpIFRPICgzKTsKK0NSRUFURSBUQUJMRSBwYXJ0X2V4dGRlcF8zIFBBUlRJVElPTiBPRiBw YXJ0X2V4dGRlcCBGT1IgVkFMVUVTIEZST00gKDMpIFRPICg0KTsKK0NSRUFURSBUQUJMRSBwYXJ0 X2V4dGRlcF80IFBBUlRJVElPTiBPRiBwYXJ0X2V4dGRlcCBGT1IgVkFMVUVTIEZST00gKDQpIFRP ICg1KTsKK0NSRUFURSBUQUJMRSBwYXJ0X2V4dGRlcF81IFBBUlRJVElPTiBPRiBwYXJ0X2V4dGRl cCBGT1IgVkFMVUVTIEZST00gKDUpIFRPICg2KTsKK0NSRUFURSBJTkRFWCBwYXJ0X2V4dGRlcF9p X2lkeCBPTiBwYXJ0X2V4dGRlcChpKTsKK0NSRUFURSBJTkRFWCBwYXJ0X2V4dGRlcF94X2lkeCBP TiBwYXJ0X2V4dGRlcCh4KTsKKworLS0gUGFydGl0aW9ucyAxLCAyLCAzIGRlcGVuZCBvbiB0aGUg c2FtZSB0d28gZXh0ZW5zaW9ucy4KK0FMVEVSIElOREVYIHBhcnRfZXh0ZGVwXzFfaV9pZHggREVQ RU5EUyBPTiBFWFRFTlNJT04gdGVzdF9leHQzOworQUxURVIgSU5ERVggcGFydF9leHRkZXBfMV94 X2lkeCBERVBFTkRTIE9OIEVYVEVOU0lPTiB0ZXN0X2V4dDU7CitBTFRFUiBJTkRFWCBwYXJ0X2V4 dGRlcF8yX2lfaWR4IERFUEVORFMgT04gRVhURU5TSU9OIHRlc3RfZXh0MzsKK0FMVEVSIElOREVY IHBhcnRfZXh0ZGVwXzJfeF9pZHggREVQRU5EUyBPTiBFWFRFTlNJT04gdGVzdF9leHQ1OworQUxU RVIgSU5ERVggcGFydF9leHRkZXBfM19pX2lkeCBERVBFTkRTIE9OIEVYVEVOU0lPTiB0ZXN0X2V4 dDM7CitBTFRFUiBJTkRFWCBwYXJ0X2V4dGRlcF8zX3hfaWR4IERFUEVORFMgT04gRVhURU5TSU9O IHRlc3RfZXh0NTsKKworLS0gUGFydGl0aW9uIDQgZGVwZW5kcyBvbiBhIGRpZmZlcmVudCBleHRl bnNpb24gb24gb25lIGluZGV4LgorQUxURVIgSU5ERVggcGFydF9leHRkZXBfNF9pX2lkeCBERVBF TkRTIE9OIEVYVEVOU0lPTiB0ZXN0X2V4dDU7CisKKy0tIFBhcnRpdGlvbiA1IGhhcyBubyBkZXBl bmRlbmN5IGF0IGFsbC4KKworLS0gTWVyZ2UgbWF0Y2hpbmcgcGFydGl0aW9uczogc2hvdWxkIHN1 Y2NlZWQgYW5kIHByZXNlcnZlIGRlcGVuZGVuY2llcyBvbiB0aGUKKy0tIG5ldyBwYXJ0aXRpb24n cyBpbmRleGVzIChEUk9QIEVYVEVOU0lPTiBtdXN0IGZhaWwsIG5hbWluZyB0aGUgbmV3IGluZGV4 KS4KK0FMVEVSIFRBQkxFIHBhcnRfZXh0ZGVwIE1FUkdFIFBBUlRJVElPTlMgKHBhcnRfZXh0ZGVw XzEsIHBhcnRfZXh0ZGVwXzIpCisgICAgSU5UTyBwYXJ0X2V4dGRlcF9tZXJnZWQ7CitEUk9QIEVY VEVOU0lPTiB0ZXN0X2V4dDM7CitTRUxFQ1QgYy5yZWxuYW1lLCBlLmV4dG5hbWUKK0ZST00gcGdf ZGVwZW5kIGQKK0pPSU4gcGdfY2xhc3MgYyBPTiBkLm9iamlkID0gYy5vaWQKK0pPSU4gcGdfZXh0 ZW5zaW9uIGUgT04gZC5yZWZvYmppZCA9IGUub2lkCitXSEVSRSBjLnJlbG5hbWUgSU4gKCdwYXJ0 X2V4dGRlcF9tZXJnZWRfaV9pZHgnLCAncGFydF9leHRkZXBfbWVyZ2VkX3hfaWR4JykKKyAgQU5E IGUuZXh0bmFtZSBJTiAoJ3Rlc3RfZXh0MycsICd0ZXN0X2V4dDUnKQorICBBTkQgZC5kZXB0eXBl ID0gJ3gnCitPUkRFUiBCWSBjLnJlbG5hbWUsIGUuZXh0bmFtZTsKKworLS0gQW4gaW5kZXggY3Jl YXRlZCBkaXJlY3RseSBvbiBhIHBhcnRpdGlvbiBoYXMgbm8gcGFyZW50IGluIHRoZSBwYXJ0aXRp b25lZAorLS0gaW5kZXggdHJlZS4gIFN1Y2ggYW4gaW5kZXggaXMgZHJvcHBlZCB3aXRoIGl0cyBv bGQgcGFydGl0aW9uIGR1cmluZyBtZXJnZSwKKy0tIGFuZCBhbnkgZXh0ZW5zaW9uIGRlcGVuZGVu Y3kgaXQgY2FycmllcyBnb2VzIGF3YXkgd2l0aCBpdDogdGhlIGRlcCBpcyBub3QKKy0tIHByb21v dGVkIHRvIHRoZSBtZXJnZWQgcGFydGl0aW9uLiAgVmVyaWZ5IGJ5IGF0dGFjaGluZyB0ZXN0X2V4 dDkgdG8gc3VjaAorLS0gYW4gb3JwaGFuIGluZGV4LCBtZXJnaW5nLCBhbmQgb2JzZXJ2aW5nIHRo YXQgdGVzdF9leHQ5IGJlY29tZXMgZHJvcHBhYmxlLgorQ1JFQVRFIEVYVEVOU0lPTiB0ZXN0X2V4 dDk7CitDUkVBVEUgSU5ERVggcGFydF9leHRkZXBfM19leHRyYV9pZHggT04gcGFydF9leHRkZXBf Myh4KTsKK0FMVEVSIElOREVYIHBhcnRfZXh0ZGVwXzNfZXh0cmFfaWR4IERFUEVORFMgT04gRVhU RU5TSU9OIHRlc3RfZXh0OTsKK0FMVEVSIFRBQkxFIHBhcnRfZXh0ZGVwIE1FUkdFIFBBUlRJVElP TlMgKHBhcnRfZXh0ZGVwX21lcmdlZCwgcGFydF9leHRkZXBfMykKKyAgICBJTlRPIHBhcnRfZXh0 ZGVwX21lcmdlZDI7CitEUk9QIEVYVEVOU0lPTiB0ZXN0X2V4dDk7CisKKy0tIE1pc21hdGNoZWQg ZGVwZW5kZW5jaWVzOiBwYXJ0aXRpb24gNCdzIGluZGV4IGRlcGVuZHMgb24gYSBkaWZmZXJlbnQK Ky0tIGV4dGVuc2lvbiB0aGFuIHBhcnRpdGlvbl9tZXJnZWQyJ3MuIEJvdGggb3JkZXJpbmdzIG11 c3QgZmFpbCwgYW5kIHRoZQorLS0gZXJyb3IgbXVzdCBjaXRlIGJvdGggcGFydGl0aW9uIGluZGV4 ZXMuCitBTFRFUiBUQUJMRSBwYXJ0X2V4dGRlcCBNRVJHRSBQQVJUSVRJT05TIChwYXJ0X2V4dGRl cF9tZXJnZWQyLCBwYXJ0X2V4dGRlcF80KQorICAgIElOVE8gcGFydF9leHRkZXBfYmFkOworQUxU RVIgVEFCTEUgcGFydF9leHRkZXAgTUVSR0UgUEFSVElUSU9OUyAocGFydF9leHRkZXBfNCwgcGFy dF9leHRkZXBfbWVyZ2VkMikKKyAgICBJTlRPIHBhcnRfZXh0ZGVwX2JhZDsKKworLS0gRW1wdHkg dnMgbm9uLWVtcHR5IGRlcGVuZGVuY3kgc2V0ICh0aGUgc3Vic2V0IGNhc2UgdGhlIGVhcmxpZXIg bGluZWFyCistLSBjaGVjayBtaXNzZWQgaW4gb25lIGRpcmVjdGlvbikuCitBTFRFUiBUQUJMRSBw YXJ0X2V4dGRlcCBNRVJHRSBQQVJUSVRJT05TIChwYXJ0X2V4dGRlcF80LCBwYXJ0X2V4dGRlcF81 KQorICAgIElOVE8gcGFydF9leHRkZXBfYmFkOworQUxURVIgVEFCTEUgcGFydF9leHRkZXAgTUVS R0UgUEFSVElUSU9OUyAocGFydF9leHRkZXBfNSwgcGFydF9leHRkZXBfNCkKKyAgICBJTlRPIHBh cnRfZXh0ZGVwX2JhZDsKKworLS0gU3Vic2V0OiBwYXJ0aXRpb24gNSdzIGlfaWR4IGRlcGVuZHMg b24gYSBzdHJpY3Qgc3VwZXJzZXQgb2YgcGFydGl0aW9uIDQncworLS0gaV9pZHggZGVwZW5kZW5j aWVzLiBQYXJ0aXRpb24gNCA9IHt0ZXN0X2V4dDV9LCBwYXJ0aXRpb24gNSB3aWxsIGJlCistLSB7 dGVzdF9leHQzLCB0ZXN0X2V4dDV9LiBCb3RoIG9yZGVyaW5ncyBtdXN0IGZhaWw7IGluIHBhcnRp Y3VsYXIgdGhlIGNhc2UKKy0tIHdoZXJlIHRoZSBmaXJzdCBwYXJ0aXRpb24gd2Ugd2FsayBoYXMg ZmV3ZXIgZXh0ZW5zaW9ucyB0aGFuIHRoZSBzZWNvbmQKKy0tIG11c3Qgc3RpbGwgYmUgcmVqZWN0 ZWQuCitBTFRFUiBJTkRFWCBwYXJ0X2V4dGRlcF81X2lfaWR4IERFUEVORFMgT04gRVhURU5TSU9O IHRlc3RfZXh0MzsKK0FMVEVSIElOREVYIHBhcnRfZXh0ZGVwXzVfaV9pZHggREVQRU5EUyBPTiBF WFRFTlNJT04gdGVzdF9leHQ1OworQUxURVIgVEFCTEUgcGFydF9leHRkZXAgTUVSR0UgUEFSVElU SU9OUyAocGFydF9leHRkZXBfNCwgcGFydF9leHRkZXBfNSkKKyAgICBJTlRPIHBhcnRfZXh0ZGVw X2JhZDsKK0FMVEVSIFRBQkxFIHBhcnRfZXh0ZGVwIE1FUkdFIFBBUlRJVElPTlMgKHBhcnRfZXh0 ZGVwXzUsIHBhcnRfZXh0ZGVwXzQpCisgICAgSU5UTyBwYXJ0X2V4dGRlcF9iYWQ7CistLSBSZXNl dCBwYXJ0aXRpb24gNSBzbyBpdCBkb2Vzbid0IGludGVyZmVyZSB3aXRoIHRoZSBTUExJVCB0ZXN0 IGJlbG93LgorQUxURVIgSU5ERVggcGFydF9leHRkZXBfNV9pX2lkeCBOTyBERVBFTkRTIE9OIEVY VEVOU0lPTiB0ZXN0X2V4dDM7CitBTFRFUiBJTkRFWCBwYXJ0X2V4dGRlcF81X2lfaWR4IE5PIERF UEVORFMgT04gRVhURU5TSU9OIHRlc3RfZXh0NTsKKworLS0gU3BsaXQ6IHRoZSBzaW5nbGUgc291 cmNlIHBhcnRpdGlvbidzIGRlcGVuZGVuY2llcyBtdXN0IGFwcGVhciBvbiBldmVyeQorLS0gbmV3 IHBhcnRpdGlvbidzIG1hdGNoaW5nIGluZGV4LCBpZGVudGlmaWVkIGJ5IGV4dGVuc2lvbiBuYW1l LgorQUxURVIgVEFCTEUgcGFydF9leHRkZXAgU1BMSVQgUEFSVElUSU9OIHBhcnRfZXh0ZGVwX21l cmdlZDIgSU5UTworICAgIChQQVJUSVRJT04gcGFydF9leHRkZXBfczEgRk9SIFZBTFVFUyBGUk9N ICgxKSBUTyAoMyksCisgICAgIFBBUlRJVElPTiBwYXJ0X2V4dGRlcF9zMiBGT1IgVkFMVUVTIEZS T00gKDMpIFRPICg0KSk7CitTRUxFQ1QgYy5yZWxuYW1lLCBlLmV4dG5hbWUKK0ZST00gcGdfZGVw ZW5kIGQKK0pPSU4gcGdfY2xhc3MgYyBPTiBkLm9iamlkID0gYy5vaWQKK0pPSU4gcGdfZXh0ZW5z aW9uIGUgT04gZC5yZWZvYmppZCA9IGUub2lkCitXSEVSRSBjLnJlbG5hbWUgSU4gKCdwYXJ0X2V4 dGRlcF9zMV9pX2lkeCcsICdwYXJ0X2V4dGRlcF9zMV94X2lkeCcsCisgICAgICAgICAgICAgICAg ICAgICdwYXJ0X2V4dGRlcF9zMl9pX2lkeCcsICdwYXJ0X2V4dGRlcF9zMl94X2lkeCcpCisgIEFO RCBlLmV4dG5hbWUgSU4gKCd0ZXN0X2V4dDMnLCAndGVzdF9leHQ1JykKKyAgQU5EIGQuZGVwdHlw ZSA9ICd4JworT1JERVIgQlkgYy5yZWxuYW1lLCBlLmV4dG5hbWU7CisKK0RST1AgVEFCTEUgcGFy dF9leHRkZXA7CitEUk9QIEVYVEVOU0lPTiB0ZXN0X2V4dDM7CitEUk9QIEVYVEVOU0lPTiB0ZXN0 X2V4dDU7CmRpZmYgLS1naXQgYS9zcmMvdG9vbHMvcGdpbmRlbnQvdHlwZWRlZnMubGlzdCBiL3Ny Yy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CmluZGV4IDQ5ZGZiNjYyYWJjLi45ZjFkZDU1 MjEzZCAxMDA2NDQKLS0tIGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKKysrIGIv c3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QKQEAgLTIyMDAsNiArMjIwMCw3IEBAIFBh cnRpdGlvbkRpcmVjdG9yeUVudHJ5CiBQYXJ0aXRpb25EaXNwYXRjaAogUGFydGl0aW9uRWxlbQog UGFydGl0aW9uSGFzaEJvdW5kCitQYXJ0aXRpb25JbmRleEV4dERlcEVudHJ5CiBQYXJ0aXRpb25L ZXkKIFBhcnRpdGlvbkxpc3RWYWx1ZQogUGFydGl0aW9uTWFwCi0tIAoyLjM5LjUgKEFwcGxlIEdp dC0xNTQpCgo= --00000000000037276b06500ac7e3--