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 1wcfkj-003X5Y-1x for pgsql-hackers@arkaria.postgresql.org; Thu, 25 Jun 2026 08:48:06 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wcfki-004WeT-0H for pgsql-hackers@arkaria.postgresql.org; Thu, 25 Jun 2026 08:48:04 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wcfkh-004WeK-25 for pgsql-hackers@lists.postgresql.org; Thu, 25 Jun 2026 08:48:03 +0000 Received: from mail-oo1-xc2a.google.com ([2607:f8b0:4864:20::c2a]) by magus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wcfke-00000000Aiq-1Qco for pgsql-hackers@lists.postgresql.org; Thu, 25 Jun 2026 08:48:03 +0000 Received: by mail-oo1-xc2a.google.com with SMTP id 006d021491bc7-6a11c68ae41so943392eaf.3 for ; Thu, 25 Jun 2026 01:47:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1782377277; cv=none; d=google.com; s=arc-20260327; b=QEKEoofB3DSKsm7qMqNigw2BQ6drKjtxqNkgIAl/0I0Ba6w3mnAg/pvGWxoMwEfSzy EpoHdA9UEuUGPvA+8n+BJS2AB0RYK+K7mIGSr6a7LI3NCYzCyth1mt+5WkfGC47xQ36u dO8pzreOn3gvuvIyEi92UxM5fIjcdCyp1HZUsH9eJc16KnnGFQd6eovpNzJXMetKhYCK blFCzQzJr3IVBJeKP4y9co5WjVp4cmCfNAveg1Lg1H+Gg5v6rlbLAWB5+mMM0MMA/O33 Ew3/XSmuWsRPxRjhpwmzbqQNTnED29cWyELy74p964dTFItl6NOzo/hy74PDHEIuX/Ym 3sow== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20260327; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=h3fMyWvFb5OH0UbJoKezCW03ri+Pc53lAzBoYWo2wEs=; fh=nM8NtOxr6LYGj3s4XlJaLwDPM2Owlsyku+bAND8Tgak=; b=LWgchZNwq3ECEMsO9aR4KQ7bKazNL4ilELqsIUHMP7sqBtsqrPbM4lUnFfWppbmyKE IN3lMyJa+hZiIMhcwClFPv6wty9sMJOtxhhwSJZ6xww45o85Vm72VNgy39RwY4PTFyK1 N+OvXbYFwbaO/+SlQGJyPr1Isy/uw2w+Xvurr+SJy2Yg/BfAtWm1tkvduV0Ea9Jwzn31 8Tn6neEg2h/Y9bUZ9fmgB3yYFA93dKSykHey6aysgNwEMWhJl61e/uBdkNqftQqi4BI4 n8/yvV82E6uOAOOYsTS9ZNuOlKvtC/1PMMVA7hrBk3rL6tYoBRQvvo3DniruN4nXAKJ9 SvCw==; darn=lists.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=1782377277; x=1782982077; darn=lists.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=h3fMyWvFb5OH0UbJoKezCW03ri+Pc53lAzBoYWo2wEs=; b=Xge8G4p6OCpryuqduzdxzOBUKSHg1inKJ0pHy5Eh9h9Eg2re5BLyLEFxJGoeEXXUDK gd4GPBCfd6O77hVBdLWm7I4rRH23GXcvLEvQ4KygWuF/5ntBzE4WS+9qJDCdFbqcwUPd YY9W5geMrLMQKq84BscW0wvltoOtdmY59X/eMgwTtl1DmYQQSQgoOrlDOfVfOF5JQDeq typPEIQbDp2KplSUa2+JSlTWcs4vFI7CevPgY0XSz4lhvjWbcmVMWx/ugPpLuTO28psK CCELYFhSwdGfUIm7Tgy9OsXkgzVcvbjqJEdy2jNmIx0c6X3xV3AaU2Q0LoIIs8QT1lR+ 93mA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1782377277; x=1782982077; 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=h3fMyWvFb5OH0UbJoKezCW03ri+Pc53lAzBoYWo2wEs=; b=e8Bl8Ow0XQwR2C3wjTC5SvvEnGbb4UgYq61quvWI21CPSR8zlFLwdRlu/xIlUBpBxa ZCmJFPJpSie3NDI9eR1F7FLUg1QeV+unwIq0AfG6FL4OxxHi4w79K2ZGzEu6CfOIott2 zCJTdClRhjMfAJWoVLs/96jTVLEwIEPYksSBATUgfwWdE2oQtzexoHTz3Ia8uPdfwkxM DaIBOQunExZi85DkjXPslaxHDan0g14v0Vl/oO96bkmHQEEH0wUwpbvDcsLp2sGJay0I 53J9ZZfWmH7oZqn+TGErWrhIzHtm+tnt2cRt97/Dhyfmbq3kLuedv4RguCq65fc6ItRf E90Q== X-Forwarded-Encrypted: i=1; AFNElJ/cgCsmhqqOats9w30AbVTqeQXI+1pwAEwxn6pvZTZaseej4a7pf+yA9O4sO4cpdnidDrjcWwV5gsmnMW9O@lists.postgresql.org X-Gm-Message-State: AOJu0YwvydS29yiEk4+0A3RU77v+C0zRIksn5jvpNuFdEoFW49BD6flq LCNq9lTepmd/KUyXGDv8C4uADUn3zF8lxPAlKUcQpYVBNYT0tEqWXJ5KYyLiSWlzaPFcI9v6vur Uu4KuBSSBZM4ow4ClR14ib1zEE41FDZI= X-Gm-Gg: AfdE7cleE2kTijRqdoMZfI1wySB6Zq0b36715NiJwbmYhOsVvBVyGhmMa9RWL+DiVWa mPIOlseknOZWB56O41wq4fMj9sThj4wG0iVVyip4oydXxRrSbsX0a35jeGwUYbiX9enwtvkJ8q0 Np+EtbNbheMeqNW9ExqA1AsleBIveaPPMP1IjDkHhdYqdwn2k3vt1fyUQcGCd5ueEJi1DW0DH5S KioIvOW+ZplLzybwE27n60HaJYU4p/8uupj8A3pR9znkc7roWx06S8rAomTXFtrxkHGQ2hk4ZU= X-Received: by 2002:a05:6820:3395:20b0:6a1:3699:4cb1 with SMTP id 006d021491bc7-6a136995360mr614011eaf.43.1782377277061; Thu, 25 Jun 2026 01:47:57 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Shlok Kyal Date: Thu, 25 Jun 2026 14:17:44 +0530 X-Gm-Features: AVVi8CdZ3K-ZAwdbkvMRD9-Tf2L-xTeBoHPxrXbIT-Cay53gzuzRg1PvcCTtClU Message-ID: Subject: Re: Support EXCEPT for ALL SEQUENCES publications To: shveta malik Cc: Peter Smith , vignesh C , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000749b130655100c0d" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000749b130655100c0d Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Wed, 24 Jun 2026 at 15:21, shveta malik wrote: > > On Tue, Jun 23, 2026 at 3:03=E2=80=AFPM Shlok Kyal wrote: > > > > > > I have addressed the comments and attached the updated v12 patch > > > > Thanks Shlok. I have resumed review of this thread. A few comment for 001= : > > > 1) > > Can we make 'opt_sequence' (SEQUENCE | EMPTY) similar to opt_table and > then use it here. It will be similar to pub_except_tbl_list and easier > to understand. > The compiler cannot compile if I use a syntax similar to 'pub_except_tbl_li= st'. I tried making it like: pub_except_seq_list: PublicationExceptSeqSpec { $$ =3D list_make1($1); } | pub_except_seq_list ',' opt_sequence PublicationExceptSeqSpec { $$ =3D lappend($1, $4); } ; Getting error as: gram.y: error: shift/reduce conflicts: 1 found, 0 expected gram.y: warning: shift/reduce conflict on token SEQUENCE [-Wcounterexamples] First example: pub_except_seq_list =E2=80=A2 SEQUENCE PublicationExceptSeqSpec Shift derivation pub_except_seq_list =E2=86=B3 151= 3: pub_except_seq_list opt_sequence PublicationExceptSeqSpec =E2=86=B3 1855: = =E2=80=A2 SEQUENCE Second example: pub_except_seq_list =E2=80=A2 SEQUENCE Reduce derivation pub_except_seq_list =E2=86=B3 1513: pub_except_seq_list opt_sequence SEQUENCE =E2=86=B3 1856: =CE=B5 =E2=80=A2 This syntax is not able to compile because it is getting confused: For example: ".... EXCEPT (SEQUENCE s1, SEQUENCE ... )" For the second 'SEQUENCE', it's unclear whether we should treat 'SEQUENCE' as a sequence_name or a keyword. To avoid the error, I wrote it the way in the patch. 'opt_table' does not face the same issue because 'TABLE' is a reserved keyword, but 'SEQUENCE' is not. > 2) > getPublications: > + if (relkind =3D=3D RELKIND_SEQUENCE) > + simple_ptr_list_append(&pubinfo[i].except_sequences, tbinfo); > + else > + simple_ptr_list_append(&pubinfo[i].except_tables, tbinfo); > > Can we do this: > if (relkind =3D=3D RELKIND_SEQUENCE) > ... > else if (relkind =3D=3D RELKIND_RELATION || > relkind =3D=3D RELKIND_PARTITIONED_TABLE) > ... > else > Assert(false); > > > 3) > describeOneTableDetails: > + * Skip entries where this sequence appears in the publication's > + * EXCEPT list. > + * > + * For a FOR ALL SEQUENCES publication, pg_publication_rel > + * contains entries only for sequences specified in the EXCEPT > + * clause, so there is no need to check pr.prexcept explicitly. > > My personal preference will be to have pr.prexcept check in the query > and get rid of this comment. > > 4) > - char *footers[3] =3D {NULL, NULL, NULL}; > + char *footers[4] =3D {NULL, NULL, NULL, NULL}; > > Is this intentional? We are using only 3 of these though. Yes, this is intentional. The last element of the footers array must always be NULL because printQuery() treats it as a NULL-terminated array: /* set footers */ if (opt->footers) { char **footer; for (footer =3D opt->footers; *footer; footer++) printTableAddFooter(&cont, *footer); } The loop terminates only when it encounters a NULL entry, so the last array element must remain NULL. This is also consistent with the existing code. For example, in describe.c: if (tableinfo.relkind =3D=3D RELKIND_PROPGRAPH) { printQueryOpt popt =3D pset.popt; char *footers[3] =3D {NULL, NULL, NULL}; only footers[0] and footers[1] are populated, while footers[2] serve as the required terminating NULL. I have addressed the remaining comments and attached the updated v13 patche= s I have also addressed Peter's comments in [1]. [1]: https://www.postgresql.org/message-id/CAHut%2BPvMXOR73%2BWdvSWd3B8j6jD= QQXRtO_bKEudi76n30GAApQ%40mail.gmail.com Thanks, Shlok Kyal --000000000000749b130655100c0d Content-Type: application/octet-stream; name="v13-0001-Support-EXCEPT-for-ALL-SEQUENCES-in-CREATE-PUBLI.patch" Content-Disposition: attachment; filename="v13-0001-Support-EXCEPT-for-ALL-SEQUENCES-in-CREATE-PUBLI.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqt971h60 RnJvbSA0NDkyNTczYjZhMDdiNTQ5ZTFlNmY1ZmRlMWYyNzk1MThhN2YwZGJhIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaGxvayBLeWFsIDxzaGxvay5reWFsLm9zc0BnbWFpbC5jb20+ CkRhdGU6IFR1ZSwgMjYgTWF5IDIwMjYgMTA6NTE6MjYgKzA1MzAKU3ViamVjdDogW1BBVENIIHYx MyAxLzJdIFN1cHBvcnQgRVhDRVBUIGZvciBBTEwgU0VRVUVOQ0VTIGluIENSRUFURQogUFVCTElD QVRJT04KCkV4dGVuZCBDUkVBVEUgUFVCTElDQVRJT04gLi4uIEZPUiBBTEwgU0VRVUVOQ0VTIHRv IHN1cHBvcnQgdGhlCkVYQ0VQVCBzeW50YXguIFRoaXMgYWxsb3dzIG9uZSBvciBtb3JlIHNlcXVl bmNlcyB0byBiZSBleGNsdWRlZC4gVGhlCnB1Ymxpc2hlciB3aWxsIG5vdCBzZW5kIHRoZSBkYXRh IG9mIGV4Y2x1ZGVkIHNlcXVlbmNlcyB0byB0aGUgc3Vic2NyaWJlci4KCkV4YW1wbGU6CkNSRUFU RSBQVUJMSUNBVElPTiBwdWIxIEZPUiBBTEwgU0VRVUVOQ0VTIEVYQ0VQVCAoU0VRVUVOQ0UgczEs IHMyKTsKLS0tCiBkb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbCAgICAgICAgICAgICAgICB8ICAg OCArLQogZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbCAgICAgfCAgIDggKy0K IGRvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3B1YmxpY2F0aW9uLnNnbWwgIHwgIDQ2ICsrKysrKy0t LQogc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jICAgICAgfCAgNzAgKysrKysr KystLS0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMgICAgfCAxMTgg KysrKysrKysrKysrKy0tLS0tLS0tLQogc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSAgICAgICAg ICAgICAgICAgfCAxMTcgKysrKysrKysrKysrKy0tLS0tLS0tCiBzcmMvYmluL3BnX2R1bXAvcGdf ZHVtcC5jICAgICAgICAgICAgICAgICB8ICA2MCArKysrKysrKy0tLQogc3JjL2Jpbi9wZ19kdW1w L3BnX2R1bXAuaCAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2Jpbi9wZ19kdW1wL3QvMDAy X3BnX2R1bXAucGwgICAgICAgICAgfCAgMjIgKysrKwogc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMg ICAgICAgICAgICAgICAgICAgfCAgODkgKysrKysrKysrKysrKystLQogc3JjL2Jpbi9wc3FsL3Rh Yi1jb21wbGV0ZS5pbi5jICAgICAgICAgICAgfCAgMTIgKysrCiBzcmMvaW5jbHVkZS9jYXRhbG9n L3BnX3B1YmxpY2F0aW9uLmggICAgICB8ICAgNyArLQogc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vu b2Rlcy5oICAgICAgICAgICAgfCAgMTEgKy0KIHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVi bGljYXRpb24ub3V0IHwgIDcyICsrKysrKysrKysrKy0KIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1 YmxpY2F0aW9uLnNxbCAgICAgIHwgIDMzICsrKysrLQogc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3Qv MDM3X2V4Y2VwdC5wbCAgICAgfCAgNzUgKysrKysrKysrKysrKysKIHNyYy90b29scy9wZ2luZGVu dC90eXBlZGVmcy5saXN0ICAgICAgICAgIHwgICAyICstCiAxNyBmaWxlcyBjaGFuZ2VkLCA1ODgg aW5zZXJ0aW9ucygrKSwgMTYzIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dt bC9jYXRhbG9ncy5zZ21sIGIvZG9jL3NyYy9zZ21sL2NhdGFsb2dzLnNnbWwKaW5kZXggNGI0NzRj MTM5MTcuLjQzYTM1NjZkZGEyIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dt bAorKysgYi9kb2Mvc3JjL3NnbWwvY2F0YWxvZ3Muc2dtbApAQCAtNzA5OSw3ICs3MDk5LDcgQEAg U0NSQU0tU0hBLTI1NiQ8cmVwbGFjZWFibGU+Jmx0O2l0ZXJhdGlvbiBjb3VudCZndDs8L3JlcGxh Y2VhYmxlPjo8cmVwbGFjZWFibGU+JmwKICAgICAgICAocmVmZXJlbmNlcyA8bGluayBsaW5rZW5k PSJjYXRhbG9nLXBnLWNsYXNzIj48c3RydWN0bmFtZT5wZ19jbGFzczwvc3RydWN0bmFtZT48L2xp bms+LjxzdHJ1Y3RmaWVsZD5vaWQ8L3N0cnVjdGZpZWxkPikKICAgICAgIDwvcGFyYT4KICAgICAg IDxwYXJhPgotICAgICAgIFJlZmVyZW5jZSB0byB0YWJsZQorICAgICAgIFJlZmVyZW5jZSB0byB0 YWJsZSBvciBzZXF1ZW5jZQogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93PgogCkBA IC03MTA4LDggKzcxMDgsOCBAQCBTQ1JBTS1TSEEtMjU2JDxyZXBsYWNlYWJsZT4mbHQ7aXRlcmF0 aW9uIGNvdW50Jmd0OzwvcmVwbGFjZWFibGU+OjxyZXBsYWNlYWJsZT4mbAogICAgICAgPHN0cnVj dGZpZWxkPnByZXhjZXB0PC9zdHJ1Y3RmaWVsZD4gPHR5cGU+Ym9vbDwvdHlwZT4KICAgICAgIDwv cGFyYT4KICAgICAgIDxwYXJhPgotICAgICAgIFRydWUgaWYgdGhlIHRhYmxlIGlzIGV4Y2x1ZGVk IGZyb20gdGhlIHB1YmxpY2F0aW9uLiBTZWUKLSAgICAgICA8bGluayBsaW5rZW5kPSJzcWwtY3Jl YXRlcHVibGljYXRpb24tcGFyYW1zLWZvci1leGNlcHQtdGFibGUiPjxsaXRlcmFsPkVYQ0VQVDwv bGl0ZXJhbD48L2xpbms+LgorICAgICAgIFRydWUgaWYgdGhlIHRhYmxlIG9yIHNlcXVlbmNlIGlz IGV4Y2x1ZGVkIGZyb20gdGhlIHB1YmxpY2F0aW9uLiBTZWUKKyAgICAgICA8bGluayBsaW5rZW5k PSJzcWwtY3JlYXRlcHVibGljYXRpb24tcGFyYW1zLWZvci1leGNlcHQiPjxsaXRlcmFsPkVYQ0VQ VDwvbGl0ZXJhbD48L2xpbms+LgogICAgICAgPC9wYXJhPjwvZW50cnk+CiAgICAgIDwvcm93Pgog CkBAIC03MTE4LDcgKzcxMTgsNyBAQCBTQ1JBTS1TSEEtMjU2JDxyZXBsYWNlYWJsZT4mbHQ7aXRl cmF0aW9uIGNvdW50Jmd0OzwvcmVwbGFjZWFibGU+OjxyZXBsYWNlYWJsZT4mbAogICAgICAgPHN0 cnVjdGZpZWxkPnBycXVhbDwvc3RydWN0ZmllbGQ+IDx0eXBlPnBnX25vZGVfdHJlZTwvdHlwZT4K ICAgICAgIDwvcGFyYT4KICAgICAgIDxwYXJhPkV4cHJlc3Npb24gdHJlZSAoaW4gPGZ1bmN0aW9u Pm5vZGVUb1N0cmluZygpPC9mdW5jdGlvbj4KLSAgICAgIHJlcHJlc2VudGF0aW9uKSBmb3IgdGhl IHJlbGF0aW9uJ3MgcHVibGljYXRpb24gcXVhbGlmeWluZyBjb25kaXRpb24uIE51bGwKKyAgICAg IHJlcHJlc2VudGF0aW9uKSBmb3IgdGhlIHRhYmxlJ3MgcHVibGljYXRpb24gcXVhbGlmeWluZyBj b25kaXRpb24uIE51bGwKICAgICAgIGlmIHRoZXJlIGlzIG5vIHB1YmxpY2F0aW9uIHF1YWxpZnlp bmcgY29uZGl0aW9uLjwvcGFyYT48L2VudHJ5PgogICAgICA8L3Jvdz4KIApkaWZmIC0tZ2l0IGEv ZG9jL3NyYy9zZ21sL2xvZ2ljYWwtcmVwbGljYXRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9sb2dp Y2FsLXJlcGxpY2F0aW9uLnNnbWwKaW5kZXggOWU3ODY4NDg3ZGUuLmY1NWNhOWFjNzFhIDEwMDY0 NAotLS0gYS9kb2Mvc3JjL3NnbWwvbG9naWNhbC1yZXBsaWNhdGlvbi5zZ21sCisrKyBiL2RvYy9z cmMvc2dtbC9sb2dpY2FsLXJlcGxpY2F0aW9uLnNnbWwKQEAgLTExOCw4ICsxMTgsMTIgQEAKICAg IHN5bmNocm9uaXplZCBhdCBhbnkgdGltZS4gRm9yIG1vcmUgaW5mb3JtYXRpb24sIHNlZQogICAg PHhyZWYgbGlua2VuZD0ibG9naWNhbC1yZXBsaWNhdGlvbi1zZXF1ZW5jZXMiLz4uIFdoZW4gYSBw dWJsaWNhdGlvbiBpcwogICAgY3JlYXRlZCB3aXRoIDxsaXRlcmFsPkZPUiBBTEwgVEFCTEVTPC9s aXRlcmFsPiwgYSB0YWJsZSBvciBzZXQgb2YgdGFibGVzIGNhbgotICAgYmUgZXhwbGljaXRseSBl eGNsdWRlZCBmcm9tIHB1YmxpY2F0aW9uIHVzaW5nIHRoZQotICAgPGxpbmsgbGlua2VuZD0ic3Fs LWNyZWF0ZXB1YmxpY2F0aW9uLXBhcmFtcy1mb3ItZXhjZXB0LXRhYmxlIj48bGl0ZXJhbD5FWENF UFQ8L2xpdGVyYWw+PC9saW5rPgorICAgYmUgZXhwbGljaXRseSBleGNsdWRlZCBmcm9tIHRoZSBw dWJsaWNhdGlvbiB1c2luZyB0aGUKKyAgIDxsaW5rIGxpbmtlbmQ9InNxbC1jcmVhdGVwdWJsaWNh dGlvbi1wYXJhbXMtZm9yLWV4Y2VwdCI+PGxpdGVyYWw+RVhDRVBUPC9saXRlcmFsPjwvbGluaz4K KyAgIGNsYXVzZS4gU2ltaWxhcmx5LCB3aGVuIGEgcHVibGljYXRpb24gaXMgY3JlYXRlZCB3aXRo CisgICA8bGl0ZXJhbD5GT1IgQUxMIFNFUVVFTkNFUzwvbGl0ZXJhbD4sIGEgc2VxdWVuY2Ugb3Ig c2V0IG9mIHNlcXVlbmNlcyBjYW4gYmUKKyAgIGV4cGxpY2l0bHkgZXhjbHVkZWQgZnJvbSB0aGUg cHVibGljYXRpb24gdXNpbmcgdGhlCisgICA8bGluayBsaW5rZW5kPSJzcWwtY3JlYXRlcHVibGlj YXRpb24tcGFyYW1zLWZvci1leGNlcHQiPjxsaXRlcmFsPkVYQ0VQVDwvbGl0ZXJhbD48L2xpbms+ CiAgICBjbGF1c2UuCiAgIDwvcGFyYT4KIApkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3JlZi9j cmVhdGVfcHVibGljYXRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvY3JlYXRlX3B1YmxpY2F0 aW9uLnNnbWwKaW5kZXggODVjZmNhZGRhZmEuLjM2MGRjN2VkYTZhIDEwMDY0NAotLS0gYS9kb2Mv c3JjL3NnbWwvcmVmL2NyZWF0ZV9wdWJsaWNhdGlvbi5zZ21sCisrKyBiL2RvYy9zcmMvc2dtbC9y ZWYvY3JlYXRlX3B1YmxpY2F0aW9uLnNnbWwKQEAgLTMzLDcgKzMzLDcgQEAgQ1JFQVRFIFBVQkxJ Q0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4K IDxwaHJhc2U+YW5kIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wdWJsaWNhdGlvbl9h bGxfb2JqZWN0PC9yZXBsYWNlYWJsZT4gaXMgb25lIG9mOjwvcGhyYXNlPgogCiAgICAgQUxMIFRB QkxFUyBbIEVYQ0VQVCAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leGNlcHRfdGFi bGVfb2JqZWN0PC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gKSBdCi0gICAgQUxMIFNFUVVFTkNFUwor ICAgIEFMTCBTRVFVRU5DRVMgWyBFWENFUFQgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRl ciI+ZXhjZXB0X3NlcXVlbmNlX29iamVjdDwvcmVwbGFjZWFibGU+IFssIC4uLiBdICkgXQogCiA8 cGhyYXNlPmFuZCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfYW5kX2NvbHVt bnM8L3JlcGxhY2VhYmxlPiBpczo8L3BocmFzZT4KIApAQCAtNDYsNiArNDYsMTAgQEAgQ1JFQVRF IFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNl YWJsZT4KIDxwaHJhc2U+YW5kIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50YWJsZV9v YmplY3Q8L3JlcGxhY2VhYmxlPiBpczo8L3BocmFzZT4KIAogICAgWyBPTkxZIF0gPHJlcGxhY2Vh YmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRhYmxlX25hbWU8L3JlcGxhY2VhYmxlPiBbICogXQorCis8 cGhyYXNlPmFuZCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+ZXhjZXB0X3NlcXVlbmNl X29iamVjdDwvcmVwbGFjZWFibGU+IGlzOjwvcGhyYXNlPgorCisgICAgU0VRVUVOQ0UgPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnNlcXVlbmNlX25hbWU8L3JlcGxhY2VhYmxlPiBbLCAu Li4gXQogPC9zeW5vcHNpcz4KICA8L3JlZnN5bm9wc2lzZGl2PgogCkBAIC0xODksMjIgKzE5Mywy NiBAQCBDUkVBVEUgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5h bWU8L3JlcGxhY2VhYmxlPgogICAgICA8cGFyYT4KICAgICAgIE9ubHkgcGVyc2lzdGVudCBzZXF1 ZW5jZXMgYXJlIGluY2x1ZGVkIGluIHRoZSBwdWJsaWNhdGlvbi4gVGVtcG9yYXJ5CiAgICAgICBz ZXF1ZW5jZXMgYW5kIHVubG9nZ2VkIHNlcXVlbmNlcyBhcmUgZXhjbHVkZWQgZnJvbSB0aGUgcHVi bGljYXRpb24uCisgICAgICBTZXF1ZW5jZXMgbGlzdGVkIGluIHRoZSA8bGl0ZXJhbD5FWENFUFQ8 L2xpdGVyYWw+IGNsYXVzZSBhcmUgZXhjbHVkZWQgZnJvbQorICAgICAgdGhlIHB1YmxpY2F0aW9u LgogICAgICA8L3BhcmE+CiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgogCi0g ICA8dmFybGlzdGVudHJ5IGlkPSJzcWwtY3JlYXRlcHVibGljYXRpb24tcGFyYW1zLWZvci1leGNl cHQtdGFibGUiPgorICAgPHZhcmxpc3RlbnRyeSBpZD0ic3FsLWNyZWF0ZXB1YmxpY2F0aW9uLXBh cmFtcy1mb3ItZXhjZXB0Ij4KICAgICA8dGVybT48bGl0ZXJhbD5FWENFUFQ8L2xpdGVyYWw+PC90 ZXJtPgogICAgIDxsaXN0aXRlbT4KICAgICAgPHBhcmE+Ci0gICAgICBUaGlzIGNsYXVzZSBzcGVj aWZpZXMgYSBsaXN0IG9mIHRhYmxlcyB0byBiZSBleGNsdWRlZCBmcm9tIHRoZQorICAgICAgVGhp cyBjbGF1c2Ugc3BlY2lmaWVzIHRoZSB0YWJsZXMgb3Igc2VxdWVuY2VzIHRvIGJlIGV4Y2x1ZGVk IGZyb20gYW4KKyAgICAgIDxsaXRlcmFsPkFMTCBUQUJMRVM8L2xpdGVyYWw+IG9yIDxsaXRlcmFs PkFMTCBTRVFVRU5DRVM8L2xpdGVyYWw+CiAgICAgICBwdWJsaWNhdGlvbi4KICAgICAgPC9wYXJh PgogICAgICA8cGFyYT4KLSAgICAgIE9uY2UgYSB0YWJsZSBpcyBleGNsdWRlZCwgdGhlIGV4Y2x1 c2lvbiBhcHBsaWVzIHRvIHRoYXQgdGFibGUKLSAgICAgIHJlZ2FyZGxlc3Mgb2YgaXRzIG5hbWUg b3Igc2NoZW1hLiBSZW5hbWluZyB0aGUgdGFibGUgb3IgbW92aW5nIGl0IHRvCi0gICAgICBhbm90 aGVyIHNjaGVtYSB1c2luZyA8Y29tbWFuZD5BTFRFUiBUQUJMRSAuLi4gU0VUIFNDSEVNQTwvY29t bWFuZD4gZG9lcwotICAgICAgbm90IHJlbW92ZSB0aGUgZXhjbHVzaW9uLgorICAgICAgT25jZSBh IHRhYmxlIG9yIHNlcXVlbmNlIGlzIGV4Y2x1ZGVkLCB0aGUgZXhjbHVzaW9uIGFwcGxpZXMgdG8g dGhhdAorICAgICAgb2JqZWN0IHJlZ2FyZGxlc3Mgb2YgaXRzIG5hbWUgb3Igc2NoZW1hLiBSZW5h bWluZyB0aGUgb2JqZWN0IG9yIG1vdmluZworICAgICAgaXQgdG8gYW5vdGhlciBzY2hlbWEgdXNp bmcgPGNvbW1hbmQ+QUxURVIgVEFCTEUgLi4uIFNFVCBTQ0hFTUE8L2NvbW1hbmQ+CisgICAgICBv ciA8Y29tbWFuZD5BTFRFUiBTRVFVRU5DRSAuLi4gU0VUIFNDSEVNQTwvY29tbWFuZD4gZG9lcyBu b3QgcmVtb3ZlIHRoZQorICAgICAgZXhjbHVzaW9uLgogICAgICA8L3BhcmE+CiAgICAgIDxwYXJh PgogICAgICAgRm9yIGluaGVyaXRlZCB0YWJsZXMsIGlmIDxsaXRlcmFsPk9OTFk8L2xpdGVyYWw+ IGlzIHNwZWNpZmllZCBiZWZvcmUgdGhlCkBAIC0yMjMsOSArMjMxLDEwIEBAIENSRUFURSBQVUJM SUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+ CiAgICAgIDwvcGFyYT4KICAgICAgPHBhcmE+CiAgICAgICBUaGVyZSBjYW4gYmUgYSBjYXNlIHdo ZXJlIGEgc3Vic2NyaXB0aW9uIGluY2x1ZGVzIG11bHRpcGxlIHB1YmxpY2F0aW9ucy4KLSAgICAg IEluIHN1Y2ggYSBjYXNlLCBhIHRhYmxlIG9yIHBhcnRpdGlvbiB0aGF0IGlzIGluY2x1ZGVkIGlu IG9uZSBwdWJsaWNhdGlvbgotICAgICAgYnV0IGV4Y2x1ZGVkIChleHBsaWNpdGx5IG9yIGltcGxp Y2l0bHkpIGJ5IHRoZSA8bGl0ZXJhbD5FWENFUFQ8L2xpdGVyYWw+Ci0gICAgICBjbGF1c2Ugb2Yg YW5vdGhlciBpcyBjb25zaWRlcmVkIGluY2x1ZGVkIGZvciByZXBsaWNhdGlvbi4KKyAgICAgIElu IHN1Y2ggYSBjYXNlLCBhIHRhYmxlLCBwYXJ0aXRpb24gb3Igc2VxdWVuY2UgdGhhdCBpcyBpbmNs dWRlZCBpbiBvbmUKKyAgICAgIHB1YmxpY2F0aW9uIGJ1dCBleGNsdWRlZCAoZXhwbGljaXRseSBv ciBpbXBsaWNpdGx5KSBieSB0aGUKKyAgICAgIDxsaXRlcmFsPkVYQ0VQVDwvbGl0ZXJhbD4gY2xh dXNlIG9mIGFub3RoZXIgaXMgY29uc2lkZXJlZCBpbmNsdWRlZCBmb3IKKyAgICAgIHJlcGxpY2F0 aW9uLgogICAgICA8L3BhcmE+CiAgICAgPC9saXN0aXRlbT4KICAgIDwvdmFybGlzdGVudHJ5PgpA QCAtNTUzLDExICs1NjIsMjAgQEAgQ1JFQVRFIFBVQkxJQ0FUSU9OIGFsbF90YWJsZXNfZXhjZXB0 IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCAoVEFCTEUgdXNlcnMsIGRlcGFydG0KICAgPC9wYXJhPgog CiAgIDxwYXJhPgotICAgQ3JlYXRlIGEgcHVibGljYXRpb24gdGhhdCBwdWJsaXNoZXMgYWxsIHNl cXVlbmNlcyBmb3Igc3luY2hyb25pemF0aW9uLCBhbmQKLSAgIGFsbCBjaGFuZ2VzIGluIGFsbCB0 YWJsZXMgZXhjZXB0IDxzdHJ1Y3RuYW1lPnVzZXJzPC9zdHJ1Y3RuYW1lPiBhbmQKLSAgIDxzdHJ1 Y3RuYW1lPmRlcGFydG1lbnRzPC9zdHJ1Y3RuYW1lPjoKKyAgIENyZWF0ZSBhIHB1YmxpY2F0aW9u IHRoYXQgcHVibGlzaGVzIGFsbCBzZXF1ZW5jZXMgZm9yIHN5bmNocm9uaXphdGlvbiBleGNlcHQK KyAgIDxzdHJ1Y3RuYW1lPnNlcTE8L3N0cnVjdG5hbWU+IGFuZCA8c3RydWN0bmFtZT5zZXEyPC9z dHJ1Y3RuYW1lPjoKKzxwcm9ncmFtbGlzdGluZz4KK0NSRUFURSBQVUJMSUNBVElPTiBhbGxfc2Vx dWVuY2VzX2V4Y2VwdCBGT1IgQUxMIFNFUVVFTkNFUyBFWENFUFQgKFNFUVVFTkNFIHNlcTEsIHNl cTIpOworPC9wcm9ncmFtbGlzdGluZz4KKyAgPC9wYXJhPgorCisgIDxwYXJhPgorICAgQ3JlYXRl IGEgcHVibGljYXRpb24gdGhhdCBwdWJsaXNoZXMgYWxsIHNlcXVlbmNlcyBmb3Igc3luY2hyb25p emF0aW9uIGV4Y2VwdAorICAgPHN0cnVjdG5hbWU+c2VxMTwvc3RydWN0bmFtZT4gYW5kIDxzdHJ1 Y3RuYW1lPnNlcTI8L3N0cnVjdG5hbWU+LCBhbmQgYWxsCisgICBjaGFuZ2VzIGluIGFsbCB0YWJs ZXMgZXhjZXB0CisgICA8c3RydWN0bmFtZT51c2Vyczwvc3RydWN0bmFtZT4gYW5kIDxzdHJ1Y3Ru YW1lPmRlcGFydG1lbnRzPC9zdHJ1Y3RuYW1lPjoKIDxwcm9ncmFtbGlzdGluZz4KLUNSRUFURSBQ VUJMSUNBVElPTiBhbGxfc2VxdWVuY2VzX3RhYmxlc19leGNlcHQgRk9SIEFMTCBTRVFVRU5DRVMs IEFMTCBUQUJMRVMgRVhDRVBUIChUQUJMRSB1c2VycywgZGVwYXJ0bWVudHMpOworQ1JFQVRFIFBV QkxJQ0FUSU9OIGFsbF9zZXF1ZW5jZXNfdGFibGVzX2V4Y2VwdCBGT1IgQUxMIFNFUVVFTkNFUyBF WENFUFQgKFNFUVVFTkNFIHNlcTEsIHNlcTIpLCBBTEwgVEFCTEVTIEVYQ0VQVCAoVEFCTEUgdXNl cnMsIGRlcGFydG1lbnRzKTsKIDwvcHJvZ3JhbWxpc3Rpbmc+CiAgIDwvcGFyYT4KICA8L3JlZnNl Y3QxPgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jIGIv c3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jCmluZGV4IDVjNDU3ZDlhY2E4Li5m MDNiODVmYTM0YiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlv bi5jCisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYwpAQCAtNDksMjAg KzQ5LDI4IEBAIHR5cGVkZWYgc3RydWN0CiB9IHB1Ymxpc2hlZF9yZWw7CiAKIC8qCi0gKiBDaGVj ayBpZiByZWxhdGlvbiBjYW4gYmUgaW4gZ2l2ZW4gcHVibGljYXRpb24gYW5kIHRocm93cyBhcHBy b3ByaWF0ZQotICogZXJyb3IgaWYgbm90LgorICogQ2hlY2sgaWYgdGhlIHRhcmdldCByZWxhdGlv biBpcyBhbGxvd2VkIHRvIGJlIHNwZWNpZmllZCBpbiB0aGUgZ2l2ZW4KKyAqIHB1YmxpY2F0aW9u IGFuZCB0aHJvdyBhbiBlcnJvciBpZiBub3QuCisgKgorICogJ3B1YnJlbGtpbmQnIGlzIHRoZSBy ZWxraW5kIGFjY2VwdGVkIGJ5IHRoZSBwdWJsaWNhdGlvbiBjbGF1c2UsCisgKiB3aGlsZSAndGFy Z2V0cmVsa2luZCcgaXMgdGhlIHJlbGtpbmQgb2YgdGhlIHJlbGF0aW9uIGJlaW5nIGFkZGVkLgor ICogRXJyb3IgaWYgdGhleSBhcmUgbm90IGNvbXBhdGlibGUuCiAgKi8KIHN0YXRpYyB2b2lkCi1j aGVja19wdWJsaWNhdGlvbl9hZGRfcmVsYXRpb24oUHVibGljYXRpb25SZWxJbmZvICpwcmkpCitj aGVja19wdWJsaWNhdGlvbl9hZGRfcmVsYXRpb24oUHVibGljYXRpb25SZWxJbmZvICpwcmksIGNo YXIgcHVicmVsa2luZCkKIHsKIAlSZWxhdGlvbgl0YXJnZXRyZWwgPSBwcmktPnJlbGF0aW9uOwor CWNoYXIJCXRhcmdldHJlbGtpbmQgPSBSZWxhdGlvbkdldEZvcm0odGFyZ2V0cmVsKS0+cmVsa2lu ZDsKIAljb25zdCBjaGFyICpyZWxuYW1lOwogCWNvbnN0IGNoYXIgKmVycm9ybXNnOwogCiAJaWYg KHByaS0+ZXhjZXB0KQogCXsKIAkJcmVsbmFtZSA9IFJlbGF0aW9uR2V0UXVhbGlmaWVkUmVsYXRp b25OYW1lKHRhcmdldHJlbCk7Ci0JCWVycm9ybXNnID0gZ2V0dGV4dF9ub29wKCJjYW5ub3Qgc3Bl Y2lmeSByZWxhdGlvbiBcIiVzXCIgaW4gdGhlIHB1YmxpY2F0aW9uIEVYQ0VQVCBjbGF1c2UiKTsK KwkJaWYgKHB1YnJlbGtpbmQgPT0gUkVMS0lORF9TRVFVRU5DRSkKKwkJCWVycm9ybXNnID0gZ2V0 dGV4dF9ub29wKCJjYW5ub3Qgc3BlY2lmeSBcIiVzXCIgaW4gdGhlIHB1YmxpY2F0aW9uIEVYQ0VQ VCAoU0VRVUVOQ0UpIGNsYXVzZSIpOworCQllbHNlCisJCQllcnJvcm1zZyA9IGdldHRleHRfbm9v cCgiY2Fubm90IHNwZWNpZnkgXCIlc1wiIGluIHRoZSBwdWJsaWNhdGlvbiBFWENFUFQgKFRBQkxF KSBjbGF1c2UiKTsKIAl9CiAJZWxzZQogCXsKQEAgLTc3LDEzICs4NSwyMyBAQCBjaGVja19wdWJs aWNhdGlvbl9hZGRfcmVsYXRpb24oUHVibGljYXRpb25SZWxJbmZvICpwcmkpCiAJCQkJIGVycm1z ZyhlcnJvcm1zZywgcmVsbmFtZSksCiAJCQkJIGVycmRldGFpbCgiVGhpcyBvcGVyYXRpb24gaXMg bm90IHN1cHBvcnRlZCBmb3IgaW5kaXZpZHVhbCBwYXJ0aXRpb25zLiIpKSk7CiAKLQkvKiBNdXN0 IGJlIGEgcmVndWxhciBvciBwYXJ0aXRpb25lZCB0YWJsZSAqLwotCWlmIChSZWxhdGlvbkdldEZv cm0odGFyZ2V0cmVsKS0+cmVsa2luZCAhPSBSRUxLSU5EX1JFTEFUSU9OICYmCi0JCVJlbGF0aW9u R2V0Rm9ybSh0YXJnZXRyZWwpLT5yZWxraW5kICE9IFJFTEtJTkRfUEFSVElUSU9ORURfVEFCTEUp CisJLyoKKwkgKiBNdXN0IGJlIGEgcmVndWxhciBvciBwYXJ0aXRpb25lZCB0YWJsZSB3aGVuIHNw ZWNpZmllZCBpbiBGT1IgVEFCTEUgb3IKKwkgKiBFWENFUFQgdGFibGUgbGlzdAorCSAqLworCWlm IChwdWJyZWxraW5kID09IFJFTEtJTkRfUkVMQVRJT04gJiYgdGFyZ2V0cmVsa2luZCAhPSBSRUxL SU5EX1JFTEFUSU9OICYmCisJCXRhcmdldHJlbGtpbmQgIT0gUkVMS0lORF9QQVJUSVRJT05FRF9U QUJMRSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQkoZXJyY29kZShFUlJDT0RFX0lOVkFMSURfUEFS QU1FVEVSX1ZBTFVFKSwKKwkJCQkgZXJybXNnKGVycm9ybXNnLCByZWxuYW1lKSwKKwkJCQkgZXJy ZGV0YWlsX3JlbGtpbmRfbm90X3N1cHBvcnRlZCh0YXJnZXRyZWxraW5kKSkpOworCisJLyogTXVz dCBiZSBhIHNlcXVlbmNlIGlmIHNwZWNpZmllZCBpbiBFWENFUFQgc2VxdWVuY2UgbGlzdCAqLwor CWlmIChwdWJyZWxraW5kID09IFJFTEtJTkRfU0VRVUVOQ0UgJiYgdGFyZ2V0cmVsa2luZCAhPSBS RUxLSU5EX1NFUVVFTkNFKQogCQllcmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVf SU5WQUxJRF9QQVJBTUVURVJfVkFMVUUpLAogCQkJCSBlcnJtc2coZXJyb3Jtc2csIHJlbG5hbWUp LAotCQkJCSBlcnJkZXRhaWxfcmVsa2luZF9ub3Rfc3VwcG9ydGVkKFJlbGF0aW9uR2V0Rm9ybSh0 YXJnZXRyZWwpLT5yZWxraW5kKSkpOworCQkJCSBlcnJkZXRhaWxfcmVsa2luZF9ub3Rfc3VwcG9y dGVkKHRhcmdldHJlbGtpbmQpKSk7CiAKIAkvKiBDYW4ndCBiZSBzeXN0ZW0gdGFibGUgKi8KIAlp ZiAoSXNDYXRhbG9nUmVsYXRpb24odGFyZ2V0cmVsKSkKQEAgLTk3LDExICsxMTUsMTUgQEAgY2hl Y2tfcHVibGljYXRpb25fYWRkX3JlbGF0aW9uKFB1YmxpY2F0aW9uUmVsSW5mbyAqcHJpKQogCQll cmVwb3J0KEVSUk9SLAogCQkJCShlcnJjb2RlKEVSUkNPREVfSU5WQUxJRF9QQVJBTUVURVJfVkFM VUUpLAogCQkJCSBlcnJtc2coZXJyb3Jtc2csIHJlbG5hbWUpLAorCQkJCSB0YXJnZXRyZWxraW5k ID09IFJFTEtJTkRfU0VRVUVOQ0UgPworCQkJCSBlcnJkZXRhaWwoIlRoaXMgb3BlcmF0aW9uIGlz IG5vdCBzdXBwb3J0ZWQgZm9yIHRlbXBvcmFyeSBzZXF1ZW5jZXMuIikgOgogCQkJCSBlcnJkZXRh aWwoIlRoaXMgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHRlbXBvcmFyeSB0YWJsZXMu IikpKTsKIAllbHNlIGlmICh0YXJnZXRyZWwtPnJkX3JlbC0+cmVscGVyc2lzdGVuY2UgPT0gUkVM UEVSU0lTVEVOQ0VfVU5MT0dHRUQpCiAJCWVyZXBvcnQoRVJST1IsCiAJCQkJKGVycmNvZGUoRVJS Q09ERV9JTlZBTElEX1BBUkFNRVRFUl9WQUxVRSksCiAJCQkJIGVycm1zZyhlcnJvcm1zZywgcmVs bmFtZSksCisJCQkJIHRhcmdldHJlbGtpbmQgPT0gUkVMS0lORF9TRVFVRU5DRSA/CisJCQkJIGVy cmRldGFpbCgiVGhpcyBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZCBmb3IgdW5sb2dnZWQgc2Vx dWVuY2VzLiIpIDoKIAkJCQkgZXJyZGV0YWlsKCJUaGlzIG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9y dGVkIGZvciB1bmxvZ2dlZCB0YWJsZXMuIikpKTsKIH0KIApAQCAtNTIxLDcgKzU0Myw4IEBAIGF0 dG51bXN0b2ludDJ2ZWN0b3IoQml0bWFwc2V0ICphdHRycykKICAqLwogT2JqZWN0QWRkcmVzcwog cHVibGljYXRpb25fYWRkX3JlbGF0aW9uKE9pZCBwdWJpZCwgUHVibGljYXRpb25SZWxJbmZvICpw cmksCi0JCQkJCQkgYm9vbCBpZl9ub3RfZXhpc3RzLCBBbHRlclB1YmxpY2F0aW9uU3RtdCAqYWx0 ZXJfc3RtdCkKKwkJCQkJCSBib29sIGlmX25vdF9leGlzdHMsIEFsdGVyUHVibGljYXRpb25TdG10 ICphbHRlcl9zdG10LAorCQkJCQkJIGNoYXIgcHVicmVsa2luZCkKIHsKIAlSZWxhdGlvbglyZWw7 CiAJSGVhcFR1cGxlCXR1cDsKQEAgLTU1OSw3ICs1ODIsNyBAQCBwdWJsaWNhdGlvbl9hZGRfcmVs YXRpb24oT2lkIHB1YmlkLCBQdWJsaWNhdGlvblJlbEluZm8gKnByaSwKIAkJCQkJCVJlbGF0aW9u R2V0UmVsYXRpb25OYW1lKHRhcmdldHJlbCksIHB1Yi0+bmFtZSkpKTsKIAl9CiAKLQljaGVja19w dWJsaWNhdGlvbl9hZGRfcmVsYXRpb24ocHJpKTsKKwljaGVja19wdWJsaWNhdGlvbl9hZGRfcmVs YXRpb24ocHJpLCBwdWJyZWxraW5kKTsKIAogCS8qIFZhbGlkYXRlIGFuZCB0cmFuc2xhdGUgY29s dW1uIG5hbWVzIGludG8gYSBCaXRtYXBzZXQgb2YgYXR0bnVtcy4gKi8KIAlhdHRudW1zID0gcHVi X2NvbGxpc3RfdmFsaWRhdGUocHJpLT5yZWxhdGlvbiwgcHJpLT5jb2x1bW5zKTsKQEAgLTk3OSwx NSArMTAwMiwxNyBAQCBHZXRJbmNsdWRlZFB1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBwdWJpZCwg UHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KQogfQogCiAvKgotICogR2V0cyBsaXN0IG9m IHRhYmxlIG9pZHMgdGhhdCB3ZXJlIHNwZWNpZmllZCBpbiB0aGUgRVhDRVBUIGNsYXVzZSBmb3Ig YQotICogcHVibGljYXRpb24uCi0gKgotICogVGhpcyBzaG91bGQgb25seSBiZSB1c2VkIEZPUiBB TEwgVEFCTEVTIHB1YmxpY2F0aW9ucy4KKyAqIEdldHMgbGlzdCBvZiByZWxhdGlvbiBvaWRzIHRo YXQgd2VyZSBzcGVjaWZpZWQgaW4gdGhlIEVYQ0VQVCBjbGF1c2UgZm9yIGEKKyAqICdGT1IgQUxM IFRBQkxFUycgb3IgYSAnRk9SIEFMTCBTRVFVRU5DRVMnIHB1YmxpY2F0aW9uLgogICovCiBMaXN0 ICoKLUdldEV4Y2x1ZGVkUHVibGljYXRpb25UYWJsZXMoT2lkIHB1YmlkLCBQdWJsaWNhdGlvblBh cnRPcHQgcHViX3BhcnRvcHQpCitHZXRFeGNsdWRlZFB1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBw dWJpZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KQogewotCUFzc2VydChHZXRQdWJs aWNhdGlvbihwdWJpZCktPmFsbHRhYmxlcyk7CisjaWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lORwor CVB1YmxpY2F0aW9uICpwdWIgPSBHZXRQdWJsaWNhdGlvbihwdWJpZCk7CisKKwlBc3NlcnQocHVi LT5hbGx0YWJsZXMgfHwgcHViLT5hbGxzZXF1ZW5jZXMpOworI2VuZGlmCiAKIAlyZXR1cm4gZ2V0 X3B1YmxpY2F0aW9uX3JlbGF0aW9ucyhwdWJpZCwgcHViX3BhcnRvcHQsIHRydWUpOwogfQpAQCAt MTAzOCw4ICsxMDYzLDkgQEAgR2V0QWxsVGFibGVzUHVibGljYXRpb25zKHZvaWQpCiAgKiByb290 IHBhcnRpdGlvbmVkIHRhYmxlcy4gVGhpcyBpcyBub3QgYXBwbGljYWJsZSB0byBGT1IgQUxMIFNF UVVFTkNFUwogICogcHVibGljYXRpb24uCiAgKgotICogRm9yIGEgRk9SIEFMTCBUQUJMRVMgcHVi bGljYXRpb24sIHRoZSByZXR1cm5lZCBsaXN0IGV4Y2x1ZGVzIHRhYmxlcyBtZW50aW9uZWQKLSAq IGluIHRoZSBFWENFUFQgY2xhdXNlLgorICogRm9yIGEgRk9SIEFMTCBUQUJMRVMgcHVibGljYXRp b24sIHRoZSByZXR1cm5lZCBsaXN0IGV4Y2x1ZGVzIHRhYmxlcworICogc3BlY2lmaWVkIGluIHRo ZSBFWENFUFQgY2xhdXNlLiBGb3IgYSBGT1IgQUxMIFNFUVVFTkNFUyBwdWJsaWNhdGlvbiwKKyAq IGl0IGV4Y2x1ZGVzIHNlcXVlbmNlcyBzcGVjaWZpZWQgaW4gdGhlIEVYQ0VQVCBjbGF1c2UuCiAg Ki8KIExpc3QgKgogR2V0QWxsUHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1YmlkLCBjaGFyIHJl bGtpbmQsIGJvb2wgcHVidmlhcm9vdCkKQEAgLTEwNTMsMTEgKzEwNzksOSBAQCBHZXRBbGxQdWJs aWNhdGlvblJlbGF0aW9ucyhPaWQgcHViaWQsIGNoYXIgcmVsa2luZCwgYm9vbCBwdWJ2aWFyb290 KQogCiAJQXNzZXJ0KCEocmVsa2luZCA9PSBSRUxLSU5EX1NFUVVFTkNFICYmIHB1YnZpYXJvb3Qp KTsKIAotCS8qIEVYQ0VQVCBmaWx0ZXJpbmcgYXBwbGllcyBvbmx5IHRvIHJlbGF0aW9ucywgbm90 IHNlcXVlbmNlcyAqLwotCWlmIChyZWxraW5kID09IFJFTEtJTkRfUkVMQVRJT04pCi0JCWV4Y2Vw dGxpc3QgPSBHZXRFeGNsdWRlZFB1YmxpY2F0aW9uVGFibGVzKHB1YmlkLCBwdWJ2aWFyb290ID8K LQkJCQkJCQkJCQkJCSAgUFVCTElDQVRJT05fUEFSVF9ST09UIDoKLQkJCQkJCQkJCQkJCSAgUFVC TElDQVRJT05fUEFSVF9MRUFGKTsKKwlleGNlcHRsaXN0ID0gR2V0RXhjbHVkZWRQdWJsaWNhdGlv blJlbGF0aW9ucyhwdWJpZCwgcHVidmlhcm9vdCA/CisJCQkJCQkJCQkJCQkgUFVCTElDQVRJT05f UEFSVF9ST09UIDoKKwkJCQkJCQkJCQkJCSBQVUJMSUNBVElPTl9QQVJUX0xFQUYpOwogCiAJY2xh c3NSZWwgPSB0YWJsZV9vcGVuKFJlbGF0aW9uUmVsYXRpb25JZCwgQWNjZXNzU2hhcmVMb2NrKTsK IApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMgYi9z cmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYwppbmRleCA0NDBhZGIzNTZhZC4u YmQxNzFmOWU0OGUgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9u Y21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jCkBAIC02 MSwxMSArNjEsMTEgQEAgdHlwZWRlZiBzdHJ1Y3QgcmZfY29udGV4dAogCU9pZAkJCXBhcmVudGlk OwkJLyogcmVsaWQgb2YgdGhlIHBhcmVudCByZWxhdGlvbiAqLwogfSByZl9jb250ZXh0OwogCi1z dGF0aWMgTGlzdCAqT3BlblRhYmxlTGlzdChMaXN0ICp0YWJsZXMpOwotc3RhdGljIHZvaWQgQ2xv c2VUYWJsZUxpc3QoTGlzdCAqcmVscyk7CitzdGF0aWMgTGlzdCAqT3BlblJlbGF0aW9uTGlzdChM aXN0ICp0YWJsZXMpOworc3RhdGljIHZvaWQgQ2xvc2VSZWxhdGlvbkxpc3QoTGlzdCAqcmVscyk7 CiBzdGF0aWMgdm9pZCBMb2NrU2NoZW1hTGlzdChMaXN0ICpzY2hlbWFsaXN0KTsKLXN0YXRpYyB2 b2lkIFB1YmxpY2F0aW9uQWRkVGFibGVzKE9pZCBwdWJpZCwgTGlzdCAqcmVscywgYm9vbCBpZl9u b3RfZXhpc3RzLAotCQkJCQkJCQkgQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQpOworc3RhdGlj IHZvaWQgUHVibGljYXRpb25BZGRSZWxhdGlvbnMoT2lkIHB1YmlkLCBMaXN0ICpyZWxzLCBib29s IGlmX25vdF9leGlzdHMsCisJCQkJCQkJCQlBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwgY2hh ciBwdWJyZWxraW5kKTsKIHN0YXRpYyB2b2lkIFB1YmxpY2F0aW9uRHJvcFRhYmxlcyhPaWQgcHVi aWQsIExpc3QgKnJlbHMsIGJvb2wgbWlzc2luZ19vayk7CiBzdGF0aWMgdm9pZCBQdWJsaWNhdGlv bkFkZFNjaGVtYXMoT2lkIHB1YmlkLCBMaXN0ICpzY2hlbWFzLCBib29sIGlmX25vdF9leGlzdHMs CiAJCQkJCQkJCSAgQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQpOwpAQCAtMTc2LDEyICsxNzYs MTMgQEAgcGFyc2VfcHVibGljYXRpb25fb3B0aW9ucyhQYXJzZVN0YXRlICpwc3RhdGUsCiB9CiAK IC8qCi0gKiBDb252ZXJ0IHRoZSBQdWJsaWNhdGlvbk9ialNwZWNUeXBlIGxpc3QgaW50byBzY2hl bWEgb2lkIGxpc3QgYW5kCi0gKiBQdWJsaWNhdGlvblRhYmxlIGxpc3QuCisgKiBDb252ZXJ0IHRo ZSBQdWJsaWNhdGlvbk9ialNwZWNUeXBlIGxpc3QgaW50byBQdWJsaWNhdGlvblJlbGF0aW9uIGxp c3RzCisgKiAoYHJlbHNgLCBgZXhjZXB0dGJsc2AsIGBleGNlcHRzZXFzYCkgYW5kIGEgc2NoZW1h IG9pZCBsaXN0IChgc2NoZW1hc2ApLgogICovCiBzdGF0aWMgdm9pZAogT2JqZWN0c0luUHVibGlj YXRpb25Ub09pZHMoTGlzdCAqcHVib2Jqc3BlY19saXN0LCBQYXJzZVN0YXRlICpwc3RhdGUsCi0J CQkJCQkgICBMaXN0ICoqcmVscywgTGlzdCAqKmV4Y2VwdHJlbHMsIExpc3QgKipzY2hlbWFzKQor CQkJCQkJICAgTGlzdCAqKnJlbHMsIExpc3QgKipleGNlcHR0YmxzLCBMaXN0ICoqZXhjZXB0c2Vx cywKKwkJCQkJCSAgIExpc3QgKipzY2hlbWFzKQogewogCUxpc3RDZWxsICAgKmNlbGw7CiAJUHVi bGljYXRpb25PYmpTcGVjICpwdWJvYmo7CkBAIC0xOTksMTIgKzIwMCwxNiBAQCBPYmplY3RzSW5Q dWJsaWNhdGlvblRvT2lkcyhMaXN0ICpwdWJvYmpzcGVjX2xpc3QsIFBhcnNlU3RhdGUgKnBzdGF0 ZSwKIAkJc3dpdGNoIChwdWJvYmotPnB1Ym9ianR5cGUpCiAJCXsKIAkJCWNhc2UgUFVCTElDQVRJ T05PQkpfRVhDRVBUX1RBQkxFOgotCQkJCXB1Ym9iai0+cHVidGFibGUtPmV4Y2VwdCA9IHRydWU7 Ci0JCQkJKmV4Y2VwdHJlbHMgPSBsYXBwZW5kKCpleGNlcHRyZWxzLCBwdWJvYmotPnB1YnRhYmxl KTsKKwkJCQlwdWJvYmotPnB1YnJlbGF0aW9uLT5leGNlcHQgPSB0cnVlOworCQkJCSpleGNlcHR0 YmxzID0gbGFwcGVuZCgqZXhjZXB0dGJscywgcHVib2JqLT5wdWJyZWxhdGlvbik7CisJCQkJYnJl YWs7CisJCQljYXNlIFBVQkxJQ0FUSU9OT0JKX0VYQ0VQVF9TRVFVRU5DRToKKwkJCQlwdWJvYmot PnB1YnJlbGF0aW9uLT5leGNlcHQgPSB0cnVlOworCQkJCSpleGNlcHRzZXFzID0gbGFwcGVuZCgq ZXhjZXB0c2VxcywgcHVib2JqLT5wdWJyZWxhdGlvbik7CiAJCQkJYnJlYWs7CiAJCQljYXNlIFBV QkxJQ0FUSU9OT0JKX1RBQkxFOgotCQkJCXB1Ym9iai0+cHVidGFibGUtPmV4Y2VwdCA9IGZhbHNl OwotCQkJCSpyZWxzID0gbGFwcGVuZCgqcmVscywgcHVib2JqLT5wdWJ0YWJsZSk7CisJCQkJcHVi b2JqLT5wdWJyZWxhdGlvbi0+ZXhjZXB0ID0gZmFsc2U7CisJCQkJKnJlbHMgPSBsYXBwZW5kKCpy ZWxzLCBwdWJvYmotPnB1YnJlbGF0aW9uKTsKIAkJCQlicmVhazsKIAkJCWNhc2UgUFVCTElDQVRJ T05PQkpfVEFCTEVTX0lOX1NDSEVNQToKIAkJCQlzY2hlbWFpZCA9IGdldF9uYW1lc3BhY2Vfb2lk KHB1Ym9iai0+bmFtZSwgZmFsc2UpOwpAQCAtODQ5LDcgKzg1NCw4IEBAIENyZWF0ZVB1YmxpY2F0 aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQ3JlYXRlUHVibGljYXRpb25TdG10ICpzdG10KQogCWNo YXIJCXB1Ymxpc2hfZ2VuZXJhdGVkX2NvbHVtbnM7CiAJQWNsUmVzdWx0CWFjbHJlc3VsdDsKIAlM aXN0CSAgICpyZWxhdGlvbnMgPSBOSUw7Ci0JTGlzdAkgICAqZXhjZXB0cmVsYXRpb25zID0gTklM OworCUxpc3QJICAgKmV4Y2VwdHRibHMgPSBOSUw7CisJTGlzdAkgICAqZXhjZXB0c2VxcyA9IE5J TDsKIAlMaXN0CSAgICpzY2hlbWFpZGxpc3QgPSBOSUw7CiAKIAkvKiBtdXN0IGhhdmUgQ1JFQVRF IHByaXZpbGVnZSBvbiBkYXRhYmFzZSAqLwpAQCAtOTM2LDE4ICs5NDIsMjkgQEAgQ3JlYXRlUHVi bGljYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBDcmVhdGVQdWJsaWNhdGlvblN0bXQgKnN0bXQp CiAKIAkvKiBBc3NvY2lhdGUgb2JqZWN0cyB3aXRoIHRoZSBwdWJsaWNhdGlvbi4gKi8KIAlPYmpl Y3RzSW5QdWJsaWNhdGlvblRvT2lkcyhzdG10LT5wdWJvYmplY3RzLCBwc3RhdGUsICZyZWxhdGlv bnMsCi0JCQkJCQkJICAgJmV4Y2VwdHJlbGF0aW9ucywgJnNjaGVtYWlkbGlzdCk7CisJCQkJCQkJ ICAgJmV4Y2VwdHRibHMsICZleGNlcHRzZXFzLCAmc2NoZW1haWRsaXN0KTsKKworCWlmIChzdG10 LT5mb3JfYWxsX3NlcXVlbmNlcykKKwl7CisJCS8qIFByb2Nlc3MgRVhDRVBUIHNlcXVlbmNlIGxp c3QgKi8KKwkJaWYgKGV4Y2VwdHNlcXMgIT0gTklMKQorCQl7CisJCQlMaXN0CSAgICpyZWxzID0g T3BlblJlbGF0aW9uTGlzdChleGNlcHRzZXFzKTsKKworCQkJUHVibGljYXRpb25BZGRSZWxhdGlv bnMocHVib2lkLCByZWxzLCB0cnVlLCBOVUxMLCBSRUxLSU5EX1NFUVVFTkNFKTsKKwkJCUNsb3Nl UmVsYXRpb25MaXN0KHJlbHMpOworCQl9CisJfQogCiAJaWYgKHN0bXQtPmZvcl9hbGxfdGFibGVz KQogCXsKIAkJLyogUHJvY2VzcyBFWENFUFQgdGFibGUgbGlzdCAqLwotCQlpZiAoZXhjZXB0cmVs YXRpb25zICE9IE5JTCkKKwkJaWYgKGV4Y2VwdHRibHMgIT0gTklMKQogCQl7Ci0JCQlMaXN0CSAg ICpyZWxzOworCQkJTGlzdAkgICAqcmVscyA9IE9wZW5SZWxhdGlvbkxpc3QoZXhjZXB0dGJscyk7 CiAKLQkJCXJlbHMgPSBPcGVuVGFibGVMaXN0KGV4Y2VwdHJlbGF0aW9ucyk7Ci0JCQlQdWJsaWNh dGlvbkFkZFRhYmxlcyhwdWJvaWQsIHJlbHMsIHRydWUsIE5VTEwpOwotCQkJQ2xvc2VUYWJsZUxp c3QocmVscyk7CisJCQlQdWJsaWNhdGlvbkFkZFJlbGF0aW9ucyhwdWJvaWQsIHJlbHMsIHRydWUs IE5VTEwsIFJFTEtJTkRfUkVMQVRJT04pOworCQkJQ2xvc2VSZWxhdGlvbkxpc3QocmVscyk7CiAJ CX0KIAogCQkvKgpAQCAtOTY5LDcgKzk4Niw3IEBAIENyZWF0ZVB1YmxpY2F0aW9uKFBhcnNlU3Rh dGUgKnBzdGF0ZSwgQ3JlYXRlUHVibGljYXRpb25TdG10ICpzdG10KQogCQl7CiAJCQlMaXN0CSAg ICpyZWxzOwogCi0JCQlyZWxzID0gT3BlblRhYmxlTGlzdChyZWxhdGlvbnMpOworCQkJcmVscyA9 IE9wZW5SZWxhdGlvbkxpc3QocmVsYXRpb25zKTsKIAkJCVRyYW5zZm9ybVB1YldoZXJlQ2xhdXNl cyhyZWxzLCBwc3RhdGUtPnBfc291cmNldGV4dCwKIAkJCQkJCQkJCSBwdWJsaXNoX3ZpYV9wYXJ0 aXRpb25fcm9vdCk7CiAKQEAgLTk3Nyw4ICs5OTQsOCBAQCBDcmVhdGVQdWJsaWNhdGlvbihQYXJz ZVN0YXRlICpwc3RhdGUsIENyZWF0ZVB1YmxpY2F0aW9uU3RtdCAqc3RtdCkKIAkJCQkJCQkJCSAg IHNjaGVtYWlkbGlzdCAhPSBOSUwsCiAJCQkJCQkJCQkgICBwdWJsaXNoX3ZpYV9wYXJ0aXRpb25f cm9vdCk7CiAKLQkJCVB1YmxpY2F0aW9uQWRkVGFibGVzKHB1Ym9pZCwgcmVscywgdHJ1ZSwgTlVM TCk7Ci0JCQlDbG9zZVRhYmxlTGlzdChyZWxzKTsKKwkJCVB1YmxpY2F0aW9uQWRkUmVsYXRpb25z KHB1Ym9pZCwgcmVscywgdHJ1ZSwgTlVMTCwgUkVMS0lORF9SRUxBVElPTik7CisJCQlDbG9zZVJl bGF0aW9uTGlzdChyZWxzKTsKIAkJfQogCiAJCWlmIChzY2hlbWFpZGxpc3QgIT0gTklMKQpAQCAt MTI1NSw3ICsxMjcyLDcgQEAgQWx0ZXJQdWJsaWNhdGlvblRhYmxlcyhBbHRlclB1YmxpY2F0aW9u U3RtdCAqc3RtdCwgSGVhcFR1cGxlIHR1cCwKIAlpZiAoIXRhYmxlcyAmJiBzdG10LT5hY3Rpb24g IT0gQVBfU2V0T2JqZWN0cykKIAkJcmV0dXJuOwogCi0JcmVscyA9IE9wZW5UYWJsZUxpc3QodGFi bGVzKTsKKwlyZWxzID0gT3BlblJlbGF0aW9uTGlzdCh0YWJsZXMpOwogCiAJaWYgKHN0bXQtPmFj dGlvbiA9PSBBUF9BZGRPYmplY3RzKQogCXsKQEAgLTEyNjYsNyArMTI4Myw3IEBAIEFsdGVyUHVi bGljYXRpb25UYWJsZXMoQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsIEhlYXBUdXBsZSB0dXAs CiAJCUNoZWNrUHViUmVsYXRpb25Db2x1bW5MaXN0KHN0bXQtPnB1Ym5hbWUsIHJlbHMsIHB1Ymxp c2hfc2NoZW1hLAogCQkJCQkJCQkgICBwdWJmb3JtLT5wdWJ2aWFyb290KTsKIAotCQlQdWJsaWNh dGlvbkFkZFRhYmxlcyhwdWJpZCwgcmVscywgZmFsc2UsIHN0bXQpOworCQlQdWJsaWNhdGlvbkFk ZFJlbGF0aW9ucyhwdWJpZCwgcmVscywgZmFsc2UsIHN0bXQsIFJFTEtJTkRfUkVMQVRJT04pOwog CX0KIAllbHNlIGlmIChzdG10LT5hY3Rpb24gPT0gQVBfRHJvcE9iamVjdHMpCiAJCVB1YmxpY2F0 aW9uRHJvcFRhYmxlcyhwdWJpZCwgcmVscywgZmFsc2UpOwpAQCAtMTI4OSw4ICsxMzA2LDggQEAg QWx0ZXJQdWJsaWNhdGlvblRhYmxlcyhBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwgSGVhcFR1 cGxlIHR1cCwKIAkJCSAqLwogCQkJaWYgKHB1YmZvcm0tPnB1YmFsbHRhYmxlcykKIAkJCXsKLQkJ CQlvbGRyZWxpZHMgPSBHZXRFeGNsdWRlZFB1YmxpY2F0aW9uVGFibGVzKHB1YmlkLAotCQkJCQkJ CQkJCQkJCQkgUFVCTElDQVRJT05fUEFSVF9ST09UKTsKKwkJCQlvbGRyZWxpZHMgPSBHZXRFeGNs dWRlZFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1YmlkLAorCQkJCQkJCQkJCQkJCQkJUFVCTElDQVRJ T05fUEFSVF9ST09UKTsKIAkJCX0KIAkJfQogCQllbHNlCkBAIC0xMzYzLDggKzEzODAsOCBAQCBB bHRlclB1YmxpY2F0aW9uVGFibGVzKEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LCBIZWFwVHVw bGUgdHVwLAogCQkJCS8qCiAJCQkJICogVmFsaWRhdGUgdGhlIGNvbHVtbiBsaXN0LiAgSWYgdGhl IGNvbHVtbiBsaXN0IG9yIFdIRVJFCiAJCQkJICogY2xhdXNlIGNoYW5nZXMsIHRoZW4gdGhlIHZh bGlkYXRpb24gZG9uZSBoZXJlIHdpbGwgYmUKLQkJCQkgKiBkdXBsaWNhdGVkIGluc2lkZSBQdWJs aWNhdGlvbkFkZFRhYmxlcygpLiAgVGhlIHZhbGlkYXRpb24KLQkJCQkgKiBpcyBjaGVhcCBlbm91 Z2ggdGhhdCB0aGF0IHNlZW1zIGhhcm1sZXNzLgorCQkJCSAqIGR1cGxpY2F0ZWQgaW5zaWRlIFB1 YmxpY2F0aW9uQWRkUmVsYXRpb25zKCkuICBUaGUKKwkJCQkgKiB2YWxpZGF0aW9uIGlzIGNoZWFw IGVub3VnaCB0aGF0IHRoYXQgc2VlbXMgaGFybWxlc3MuCiAJCQkJICovCiAJCQkJbmV3Y29sdW1u cyA9IHB1Yl9jb2xsaXN0X3ZhbGlkYXRlKG5ld3B1YnJlbC0+cmVsYXRpb24sCiAJCQkJCQkJCQkJ CQkgIG5ld3B1YnJlbC0+Y29sdW1ucyk7CkBAIC0xNDEwLDEyICsxNDI3LDEyIEBAIEFsdGVyUHVi bGljYXRpb25UYWJsZXMoQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQsIEhlYXBUdXBsZSB0dXAs CiAJCSAqIERvbid0IGJvdGhlciBjYWxjdWxhdGluZyB0aGUgZGlmZmVyZW5jZSBmb3IgYWRkaW5n LCB3ZSdsbCBjYXRjaCBhbmQKIAkJICogc2tpcCBleGlzdGluZyBvbmVzIHdoZW4gZG9pbmcgY2F0 YWxvZyB1cGRhdGUuCiAJCSAqLwotCQlQdWJsaWNhdGlvbkFkZFRhYmxlcyhwdWJpZCwgcmVscywg dHJ1ZSwgc3RtdCk7CisJCVB1YmxpY2F0aW9uQWRkUmVsYXRpb25zKHB1YmlkLCByZWxzLCB0cnVl LCBzdG10LCBSRUxLSU5EX1JFTEFUSU9OKTsKIAotCQlDbG9zZVRhYmxlTGlzdChkZWxyZWxzKTsK KwkJQ2xvc2VSZWxhdGlvbkxpc3QoZGVscmVscyk7CiAJfQogCi0JQ2xvc2VUYWJsZUxpc3QocmVs cyk7CisJQ2xvc2VSZWxhdGlvbkxpc3QocmVscyk7CiB9CiAKIC8qCkBAIC0xNjUxLDcgKzE2Njgs NyBAQCBBbHRlclB1YmxpY2F0aW9uQWxsRmxhZ3MoQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQs IFJlbGF0aW9uIHJlbCwKICAqIEFsdGVyIHRoZSBleGlzdGluZyBwdWJsaWNhdGlvbi4KICAqCiAg KiBUaGlzIGlzIGRpc3BhdGNoZXIgZnVuY3Rpb24gZm9yIEFsdGVyUHVibGljYXRpb25PcHRpb25z LAotICogQWx0ZXJQdWJsaWNhdGlvblNjaGVtYXMgYW5kIEFsdGVyUHVibGljYXRpb25UYWJsZXMu CisgKiBBbHRlclB1YmxpY2F0aW9uU2NoZW1hcyBhbmQgQWx0ZXJQdWJsaWNhdGlvblJlbGF0aW9u cy4KICAqLwogdm9pZAogQWx0ZXJQdWJsaWNhdGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVy UHVibGljYXRpb25TdG10ICpzdG10KQpAQCAtMTY4MywxMiArMTcwMCwxOSBAQCBBbHRlclB1Ymxp Y2F0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQpCiAJ ZWxzZQogCXsKIAkJTGlzdAkgICAqcmVsYXRpb25zID0gTklMOwotCQlMaXN0CSAgICpleGNlcHRy ZWxhdGlvbnMgPSBOSUw7CisJCUxpc3QJICAgKmV4Y2VwdHRibHMgPSBOSUw7CisJCUxpc3QJICAg KmV4Y2VwdHNlcXMgPSBOSUw7CiAJCUxpc3QJICAgKnNjaGVtYWlkbGlzdCA9IE5JTDsKIAkJT2lk CQkJcHViaWQgPSBwdWJmb3JtLT5vaWQ7CiAKIAkJT2JqZWN0c0luUHVibGljYXRpb25Ub09pZHMo c3RtdC0+cHVib2JqZWN0cywgcHN0YXRlLCAmcmVsYXRpb25zLAotCQkJCQkJCQkgICAmZXhjZXB0 cmVsYXRpb25zLCAmc2NoZW1haWRsaXN0KTsKKwkJCQkJCQkJICAgJmV4Y2VwdHRibHMsICZleGNl cHRzZXFzLCAmc2NoZW1haWRsaXN0KTsKKworCQkvKgorCQkgKiBUT0RPOiBFWENFUFQgKFNFUVVF TkNFIC4uLikgaXMgbm90IHlldCBzdXBwb3J0ZWQgd2l0aCBBTFRFUgorCQkgKiBQVUJMSUNBVElP Ti4KKwkJICovCisJCUFzc2VydChleGNlcHRzZXFzID09IE5JTCk7CiAKIAkJQ2hlY2tBbHRlclB1 YmxpY2F0aW9uKHN0bXQsIHR1cCwgcmVsYXRpb25zLCBzY2hlbWFpZGxpc3QpOwogCkBAIC0xNzEx LDcgKzE3MzUsNyBAQCBBbHRlclB1YmxpY2F0aW9uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWx0ZXJQ dWJsaWNhdGlvblN0bXQgKnN0bXQpCiAJCQkJCWVycm1zZygicHVibGljYXRpb24gXCIlc1wiIGRv ZXMgbm90IGV4aXN0IiwKIAkJCQkJCSAgIHN0bXQtPnB1Ym5hbWUpKTsKIAotCQlyZWxhdGlvbnMg PSBsaXN0X2NvbmNhdChyZWxhdGlvbnMsIGV4Y2VwdHJlbGF0aW9ucyk7CisJCXJlbGF0aW9ucyA9 IGxpc3RfY29uY2F0KHJlbGF0aW9ucywgZXhjZXB0dGJscyk7CiAJCUFsdGVyUHVibGljYXRpb25U YWJsZXMoc3RtdCwgdHVwLCByZWxhdGlvbnMsIHBzdGF0ZS0+cF9zb3VyY2V0ZXh0LAogCQkJCQkJ CSAgIHNjaGVtYWlkbGlzdCAhPSBOSUwpOwogCQlBbHRlclB1YmxpY2F0aW9uU2NoZW1hcyhzdG10 LCB0dXAsIHNjaGVtYWlkbGlzdCk7CkBAIC0xODMwLDEyICsxODU0LDEyIEBAIFJlbW92ZVB1Ymxp Y2F0aW9uU2NoZW1hQnlJZChPaWQgcHNvaWQpCiB9CiAKIC8qCi0gKiBPcGVuIHJlbGF0aW9ucyBz cGVjaWZpZWQgYnkgYSBQdWJsaWNhdGlvblRhYmxlIGxpc3QuCi0gKiBUaGUgcmV0dXJuZWQgdGFi bGVzIGFyZSBsb2NrZWQgaW4gU2hhcmVVcGRhdGVFeGNsdXNpdmVMb2NrIG1vZGUgaW4gb3JkZXIg dG8KLSAqIGFkZCB0aGVtIHRvIGEgcHVibGljYXRpb24uCisgKiBPcGVuIHJlbGF0aW9ucyBzcGVj aWZpZWQgYnkgYSBQdWJsaWNhdGlvblJlbGF0aW9uIGxpc3QuCisgKiBUaGUgcmV0dXJuZWQgcmVs YXRpb25zIGFyZSBsb2NrZWQgaW4gU2hhcmVVcGRhdGVFeGNsdXNpdmVMb2NrIG1vZGUgaW4gb3Jk ZXIKKyAqIHRvIGFkZCB0aGVtIHRvIGEgcHVibGljYXRpb24uCiAgKi8KIHN0YXRpYyBMaXN0ICoK LU9wZW5UYWJsZUxpc3QoTGlzdCAqdGFibGVzKQorT3BlblJlbGF0aW9uTGlzdChMaXN0ICp0YWJs ZXMpCiB7CiAJTGlzdAkgICAqcmVsaWRzID0gTklMOwogCUxpc3QJICAgKnJlbHMgPSBOSUw7CkBA IC0xODQ4LDcgKzE4NzIsNyBAQCBPcGVuVGFibGVMaXN0KExpc3QgKnRhYmxlcykKIAkgKi8KIAlm b3JlYWNoKGxjLCB0YWJsZXMpCiAJewotCQlQdWJsaWNhdGlvblRhYmxlICp0ID0gbGZpcnN0X25v ZGUoUHVibGljYXRpb25UYWJsZSwgbGMpOworCQlQdWJsaWNhdGlvblJlbGF0aW9uICp0ID0gbGZp cnN0X25vZGUoUHVibGljYXRpb25SZWxhdGlvbiwgbGMpOwogCQlib29sCQlyZWN1cnNlID0gdC0+ cmVsYXRpb24tPmluaDsKIAkJUmVsYXRpb24JcmVsOwogCQlPaWQJCQlteXJlbGlkOwpAQCAtMTk4 Nyw3ICsyMDExLDcgQEAgT3BlblRhYmxlTGlzdChMaXN0ICp0YWJsZXMpCiAgKiBDbG9zZSBhbGwg cmVsYXRpb25zIGluIHRoZSBsaXN0LgogICovCiBzdGF0aWMgdm9pZAotQ2xvc2VUYWJsZUxpc3Qo TGlzdCAqcmVscykKK0Nsb3NlUmVsYXRpb25MaXN0KExpc3QgKnJlbHMpCiB7CiAJTGlzdENlbGwg ICAqbGM7CiAKQEAgLTIwMzIsMTEgKzIwNTYsMTUgQEAgTG9ja1NjaGVtYUxpc3QoTGlzdCAqc2No ZW1hbGlzdCkKIH0KIAogLyoKLSAqIEFkZCBsaXN0ZWQgdGFibGVzIHRvIHRoZSBwdWJsaWNhdGlv bi4KKyAqIEFkZCBsaXN0ZWQgcmVsYXRpb25zIHRvIHRoZSBwdWJsaWNhdGlvbi4KKyAqCisgKiAn cHVicmVsa2luZCcgaXMgdGhlIHJlbGtpbmQgYWNjZXB0ZWQgYnkgdGhlIHB1YmxpY2F0aW9uIGNs YXVzZS4KKyAqIFRoZSByZWxraW5kIG9mIGVhY2ggcmVsYXRpb24gaW4gJ3JlbHMnIGlzIGNoZWNr ZWQgZm9yIGNvbXBhdGliaWxpdHkKKyAqIGFnYWluc3QgaXQuCiAgKi8KIHN0YXRpYyB2b2lkCi1Q dWJsaWNhdGlvbkFkZFRhYmxlcyhPaWQgcHViaWQsIExpc3QgKnJlbHMsIGJvb2wgaWZfbm90X2V4 aXN0cywKLQkJCQkJIEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10KQorUHVibGljYXRpb25BZGRS ZWxhdGlvbnMoT2lkIHB1YmlkLCBMaXN0ICpyZWxzLCBib29sIGlmX25vdF9leGlzdHMsCisJCQkJ CQlBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwgY2hhciBwdWJyZWxraW5kKQogewogCUxpc3RD ZWxsICAgKmxjOwogCkBAIC0yMDQ2LDEyICsyMDc0LDEyIEBAIFB1YmxpY2F0aW9uQWRkVGFibGVz KE9pZCBwdWJpZCwgTGlzdCAqcmVscywgYm9vbCBpZl9ub3RfZXhpc3RzLAogCQlSZWxhdGlvbgly ZWwgPSBwdWJfcmVsLT5yZWxhdGlvbjsKIAkJT2JqZWN0QWRkcmVzcyBvYmo7CiAKLQkJLyogTXVz dCBiZSBvd25lciBvZiB0aGUgdGFibGUgb3Igc3VwZXJ1c2VyLiAqLworCQkvKiBNdXN0IGJlIG93 bmVyIG9mIHRoZSByZWxhdGlvbiBvciBzdXBlcnVzZXIuICovCiAJCWlmICghb2JqZWN0X293bmVy Y2hlY2soUmVsYXRpb25SZWxhdGlvbklkLCBSZWxhdGlvbkdldFJlbGlkKHJlbCksIEdldFVzZXJJ ZCgpKSkKIAkJCWFjbGNoZWNrX2Vycm9yKEFDTENIRUNLX05PVF9PV05FUiwgZ2V0X3JlbGtpbmRf b2JqdHlwZShyZWwtPnJkX3JlbC0+cmVsa2luZCksCiAJCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0 aW9uTmFtZShyZWwpKTsKIAotCQlvYmogPSBwdWJsaWNhdGlvbl9hZGRfcmVsYXRpb24ocHViaWQs IHB1Yl9yZWwsIGlmX25vdF9leGlzdHMsIHN0bXQpOworCQlvYmogPSBwdWJsaWNhdGlvbl9hZGRf cmVsYXRpb24ocHViaWQsIHB1Yl9yZWwsIGlmX25vdF9leGlzdHMsIHN0bXQsIHB1YnJlbGtpbmQp OwogCQlpZiAoc3RtdCkKIAkJewogCQkJRXZlbnRUcmlnZ2VyQ29sbGVjdFNpbXBsZUNvbW1hbmQo b2JqLCBJbnZhbGlkT2JqZWN0QWRkcmVzcywKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3BhcnNl ci9ncmFtLnkgYi9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CmluZGV4IGZmNGUxMzg4YzU1Li4y YjM0ZjAxYTMwMSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQorKysgYi9z cmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55CkBAIC00NTcsNyArNDU3LDggQEAgc3RhdGljIE5vZGUg Km1ha2VSZWN1cnNpdmVWaWV3U2VsZWN0KGNoYXIgKnJlbG5hbWUsIExpc3QgKmFsaWFzZXMsIE5v ZGUgKnF1ZXJ5KTsKIAkJCQlUcmlnZ2VyVHJhbnNpdGlvbnMgVHJpZ2dlclJlZmVyZW5jaW5nCiAJ CQkJdmFjdXVtX3JlbGF0aW9uX2xpc3Qgb3B0X3ZhY3V1bV9yZWxhdGlvbl9saXN0CiAJCQkJZHJv cF9vcHRpb25fbGlzdCBwdWJfb2JqX2xpc3QgcHViX2FsbF9vYmpfdHlwZV9saXN0Ci0JCQkJcHVi X2V4Y2VwdF9vYmpfbGlzdCBvcHRfcHViX2V4Y2VwdF9jbGF1c2UKKwkJCQlwdWJfZXhjZXB0X3Ri bF9saXN0IG9wdF9wdWJfZXhjZXB0X3RibF9jbGF1c2UKKwkJCQlwdWJfZXhjZXB0X3NlcV9saXN0 IG9wdF9wdWJfZXhjZXB0X3NlcV9jbGF1c2UKIAogJXR5cGUgPHJldGNsYXVzZT4gcmV0dXJuaW5n X2NsYXVzZQogJXR5cGUgPG5vZGU+CXJldHVybmluZ19vcHRpb24KQEAgLTU5Nyw3ICs1OTgsOCBA QCBzdGF0aWMgTm9kZSAqbWFrZVJlY3Vyc2l2ZVZpZXdTZWxlY3QoY2hhciAqcmVsbmFtZSwgTGlz dCAqYWxpYXNlcywgTm9kZSAqcXVlcnkpOwogJXR5cGUgPG5vZGU+CXZhcl92YWx1ZSB6b25lX3Zh bHVlCiAldHlwZSA8cm9sZXNwZWM+IGF1dGhfaWRlbnQgUm9sZVNwZWMgb3B0X2dyYW50ZWRfYnkK ICV0eXBlIDxwdWJsaWNhdGlvbm9iamVjdHNwZWM+IFB1YmxpY2F0aW9uT2JqU3BlYwotJXR5cGUg PHB1YmxpY2F0aW9ub2JqZWN0c3BlYz4gUHVibGljYXRpb25FeGNlcHRPYmpTcGVjCisldHlwZSA8 cHVibGljYXRpb25vYmplY3RzcGVjPiBQdWJsaWNhdGlvbkV4Y2VwdFRibFNwZWMKKyV0eXBlIDxw dWJsaWNhdGlvbm9iamVjdHNwZWM+IFB1YmxpY2F0aW9uRXhjZXB0U2VxU3BlYwogJXR5cGUgPHB1 YmxpY2F0aW9uYWxsb2JqZWN0c3BlYz4gUHVibGljYXRpb25BbGxPYmpTcGVjCiAKICV0eXBlIDxr ZXl3b3JkPiB1bnJlc2VydmVkX2tleXdvcmQgdHlwZV9mdW5jX25hbWVfa2V5d29yZApAQCAtMTEz MjcsMTAgKzExMzI5LDEwIEBAIFB1YmxpY2F0aW9uT2JqU3BlYzoKIAkJCQl7CiAJCQkJCSQkID0g bWFrZU5vZGUoUHVibGljYXRpb25PYmpTcGVjKTsKIAkJCQkJJCQtPnB1Ym9ianR5cGUgPSBQVUJM SUNBVElPTk9CSl9UQUJMRTsKLQkJCQkJJCQtPnB1YnRhYmxlID0gbWFrZU5vZGUoUHVibGljYXRp b25UYWJsZSk7Ci0JCQkJCSQkLT5wdWJ0YWJsZS0+cmVsYXRpb24gPSAkMjsKLQkJCQkJJCQtPnB1 YnRhYmxlLT5jb2x1bW5zID0gJDM7Ci0JCQkJCSQkLT5wdWJ0YWJsZS0+d2hlcmVDbGF1c2UgPSAk NDsKKwkJCQkJJCQtPnB1YnJlbGF0aW9uID0gbWFrZU5vZGUoUHVibGljYXRpb25SZWxhdGlvbik7 CisJCQkJCSQkLT5wdWJyZWxhdGlvbi0+cmVsYXRpb24gPSAkMjsKKwkJCQkJJCQtPnB1YnJlbGF0 aW9uLT5jb2x1bW5zID0gJDM7CisJCQkJCSQkLT5wdWJyZWxhdGlvbi0+d2hlcmVDbGF1c2UgPSAk NDsKIAkJCQl9CiAJCQl8IFRBQkxFUyBJTl9QIFNDSEVNQSBDb2xJZAogCQkJCXsKQEAgLTExMzUx LDcgKzExMzUzLDcgQEAgUHVibGljYXRpb25PYmpTcGVjOgogCQkJCQkkJC0+cHVib2JqdHlwZSA9 IFBVQkxJQ0FUSU9OT0JKX0NPTlRJTlVBVElPTjsKIAkJCQkJLyoKIAkJCQkJICogSWYgZWl0aGVy IGEgcm93IGZpbHRlciBvciBjb2x1bW4gbGlzdCBpcyBzcGVjaWZpZWQsIGNyZWF0ZQotCQkJCQkg KiBhIFB1YmxpY2F0aW9uVGFibGUgb2JqZWN0LgorCQkJCQkgKiBhIFB1YmxpY2F0aW9uUmVsYXRp b24gb2JqZWN0LgogCQkJCQkgKi8KIAkJCQkJaWYgKCQyIHx8ICQzKQogCQkJCQl7CkBAIC0xMTM2 MSwxMCArMTEzNjMsMTAgQEAgUHVibGljYXRpb25PYmpTcGVjOgogCQkJCQkJICogZXJyb3Igd2ls bCBiZSB0aHJvd24gbGF0ZXIgdmlhCiAJCQkJCQkgKiBwcmVwcm9jZXNzX3B1Ym9ial9saXN0KCku CiAJCQkJCQkgKi8KLQkJCQkJCSQkLT5wdWJ0YWJsZSA9IG1ha2VOb2RlKFB1YmxpY2F0aW9uVGFi bGUpOwotCQkJCQkJJCQtPnB1YnRhYmxlLT5yZWxhdGlvbiA9IG1ha2VSYW5nZVZhcihOVUxMLCAk MSwgQDEpOwotCQkJCQkJJCQtPnB1YnRhYmxlLT5jb2x1bW5zID0gJDI7Ci0JCQkJCQkkJC0+cHVi dGFibGUtPndoZXJlQ2xhdXNlID0gJDM7CisJCQkJCQkkJC0+cHVicmVsYXRpb24gPSBtYWtlTm9k ZShQdWJsaWNhdGlvblJlbGF0aW9uKTsKKwkJCQkJCSQkLT5wdWJyZWxhdGlvbi0+cmVsYXRpb24g PSBtYWtlUmFuZ2VWYXIoTlVMTCwgJDEsIEAxKTsKKwkJCQkJCSQkLT5wdWJyZWxhdGlvbi0+Y29s dW1ucyA9ICQyOworCQkJCQkJJCQtPnB1YnJlbGF0aW9uLT53aGVyZUNsYXVzZSA9ICQzOwogCQkJ CQl9CiAJCQkJCWVsc2UKIAkJCQkJewpAQCAtMTEzNzYsMTAgKzExMzc4LDEwIEBAIFB1YmxpY2F0 aW9uT2JqU3BlYzoKIAkJCQl7CiAJCQkJCSQkID0gbWFrZU5vZGUoUHVibGljYXRpb25PYmpTcGVj KTsKIAkJCQkJJCQtPnB1Ym9ianR5cGUgPSBQVUJMSUNBVElPTk9CSl9DT05USU5VQVRJT047Ci0J CQkJCSQkLT5wdWJ0YWJsZSA9IG1ha2VOb2RlKFB1YmxpY2F0aW9uVGFibGUpOwotCQkJCQkkJC0+ cHVidGFibGUtPnJlbGF0aW9uID0gbWFrZVJhbmdlVmFyRnJvbVF1YWxpZmllZE5hbWUoJDEsICQy LCBAMSwgeXlzY2FubmVyKTsKLQkJCQkJJCQtPnB1YnRhYmxlLT5jb2x1bW5zID0gJDM7Ci0JCQkJ CSQkLT5wdWJ0YWJsZS0+d2hlcmVDbGF1c2UgPSAkNDsKKwkJCQkJJCQtPnB1YnJlbGF0aW9uID0g bWFrZU5vZGUoUHVibGljYXRpb25SZWxhdGlvbik7CisJCQkJCSQkLT5wdWJyZWxhdGlvbi0+cmVs YXRpb24gPSBtYWtlUmFuZ2VWYXJGcm9tUXVhbGlmaWVkTmFtZSgkMSwgJDIsIEAxLCB5eXNjYW5u ZXIpOworCQkJCQkkJC0+cHVicmVsYXRpb24tPmNvbHVtbnMgPSAkMzsKKwkJCQkJJCQtPnB1YnJl bGF0aW9uLT53aGVyZUNsYXVzZSA9ICQ0OwogCQkJCQkkJC0+bG9jYXRpb24gPSBAMTsKIAkJCQl9 CiAJCQkvKiBncmFtbWFyIGxpa2UgdGFibGVuYW1lICogLCBPTkxZIHRhYmxlbmFtZSwgT05MWSAo IHRhYmxlbmFtZSApICovCkBAIC0xMTM4NywxMCArMTEzODksMTAgQEAgUHVibGljYXRpb25PYmpT cGVjOgogCQkJCXsKIAkJCQkJJCQgPSBtYWtlTm9kZShQdWJsaWNhdGlvbk9ialNwZWMpOwogCQkJ CQkkJC0+cHVib2JqdHlwZSA9IFBVQkxJQ0FUSU9OT0JKX0NPTlRJTlVBVElPTjsKLQkJCQkJJCQt PnB1YnRhYmxlID0gbWFrZU5vZGUoUHVibGljYXRpb25UYWJsZSk7Ci0JCQkJCSQkLT5wdWJ0YWJs ZS0+cmVsYXRpb24gPSAkMTsKLQkJCQkJJCQtPnB1YnRhYmxlLT5jb2x1bW5zID0gJDI7Ci0JCQkJ CSQkLT5wdWJ0YWJsZS0+d2hlcmVDbGF1c2UgPSAkMzsKKwkJCQkJJCQtPnB1YnJlbGF0aW9uID0g bWFrZU5vZGUoUHVibGljYXRpb25SZWxhdGlvbik7CisJCQkJCSQkLT5wdWJyZWxhdGlvbi0+cmVs YXRpb24gPSAkMTsKKwkJCQkJJCQtPnB1YnJlbGF0aW9uLT5jb2x1bW5zID0gJDI7CisJCQkJCSQk LT5wdWJyZWxhdGlvbi0+d2hlcmVDbGF1c2UgPSAkMzsKIAkJCQl9CiAJCQl8IENVUlJFTlRfU0NI RU1BCiAJCQkJewpAQCAtMTE0MDYsMjMgKzExNDA4LDI5IEBAIHB1Yl9vYmpfbGlzdDoJUHVibGlj YXRpb25PYmpTcGVjCiAJCQkJCXsgJCQgPSBsYXBwZW5kKCQxLCAkMyk7IH0KIAk7CiAKLW9wdF9w dWJfZXhjZXB0X2NsYXVzZToKLQkJCUVYQ0VQVCAnKCcgVEFCTEUgcHViX2V4Y2VwdF9vYmpfbGlz dCAnKScJeyAkJCA9ICQ0OyB9CitvcHRfcHViX2V4Y2VwdF90YmxfY2xhdXNlOgorCQkJRVhDRVBU ICcoJyBUQUJMRSBwdWJfZXhjZXB0X3RibF9saXN0ICcpJwl7ICQkID0gJDQ7IH0KKwkJCXwgLypF TVBUWSovCQkJCQkJCQkJeyAkJCA9IE5JTDsgfQorCQk7CisKK29wdF9wdWJfZXhjZXB0X3NlcV9j bGF1c2U6CisJCQlFWENFUFQgJygnIFNFUVVFTkNFIHB1Yl9leGNlcHRfc2VxX2xpc3QgJyknCXsg JCQgPSAkNDsgfQogCQkJfCAvKkVNUFRZKi8JCQkJCQkJCQl7ICQkID0gTklMOyB9CiAJCTsKIAog UHVibGljYXRpb25BbGxPYmpTcGVjOgotCQkJCUFMTCBUQUJMRVMgb3B0X3B1Yl9leGNlcHRfY2xh dXNlCisJCQkJQUxMIFRBQkxFUyBvcHRfcHViX2V4Y2VwdF90YmxfY2xhdXNlCiAJCQkJCXsKIAkJ CQkJCSQkID0gbWFrZU5vZGUoUHVibGljYXRpb25BbGxPYmpTcGVjKTsKIAkJCQkJCSQkLT5wdWJv Ymp0eXBlID0gUFVCTElDQVRJT05fQUxMX1RBQkxFUzsKLQkJCQkJCSQkLT5leGNlcHRfdGFibGVz ID0gJDM7CisJCQkJCQkkJC0+ZXhjZXB0X3JlbGF0aW9ucyA9ICQzOwogCQkJCQkJJCQtPmxvY2F0 aW9uID0gQDE7CiAJCQkJCX0KLQkJCQl8IEFMTCBTRVFVRU5DRVMKKwkJCQl8IEFMTCBTRVFVRU5D RVMgb3B0X3B1Yl9leGNlcHRfc2VxX2NsYXVzZQogCQkJCQl7CiAJCQkJCQkkJCA9IG1ha2VOb2Rl KFB1YmxpY2F0aW9uQWxsT2JqU3BlYyk7CiAJCQkJCQkkJC0+cHVib2JqdHlwZSA9IFBVQkxJQ0FU SU9OX0FMTF9TRVFVRU5DRVM7CisJCQkJCQkkJC0+ZXhjZXB0X3JlbGF0aW9ucyA9ICQzOwogCQkJ CQkJJCQtPmxvY2F0aW9uID0gQDE7CiAJCQkJCX0KIAkJCQkJOwpAQCAtMTE0MzMsMjEgKzExNDQx LDQxIEBAIHB1Yl9hbGxfb2JqX3R5cGVfbGlzdDoJUHVibGljYXRpb25BbGxPYmpTcGVjCiAJCQkJ CXsgJCQgPSBsYXBwZW5kKCQxLCAkMyk7IH0KIAk7CiAKLVB1YmxpY2F0aW9uRXhjZXB0T2JqU3Bl YzoKK1B1YmxpY2F0aW9uRXhjZXB0VGJsU3BlYzoKIAkJCSByZWxhdGlvbl9leHByCiAJCQkJewog CQkJCQkkJCA9IG1ha2VOb2RlKFB1YmxpY2F0aW9uT2JqU3BlYyk7CiAJCQkJCSQkLT5wdWJvYmp0 eXBlID0gUFVCTElDQVRJT05PQkpfRVhDRVBUX1RBQkxFOwotCQkJCQkkJC0+cHVidGFibGUgPSBt YWtlTm9kZShQdWJsaWNhdGlvblRhYmxlKTsKLQkJCQkJJCQtPnB1YnRhYmxlLT5leGNlcHQgPSB0 cnVlOwotCQkJCQkkJC0+cHVidGFibGUtPnJlbGF0aW9uID0gJDE7CisJCQkJCSQkLT5wdWJyZWxh dGlvbiA9IG1ha2VOb2RlKFB1YmxpY2F0aW9uUmVsYXRpb24pOworCQkJCQkkJC0+cHVicmVsYXRp b24tPmV4Y2VwdCA9IHRydWU7CisJCQkJCSQkLT5wdWJyZWxhdGlvbi0+cmVsYXRpb24gPSAkMTsK IAkJCQkJJCQtPmxvY2F0aW9uID0gQDE7CiAJCQkJfQogCTsKIAotcHViX2V4Y2VwdF9vYmpfbGlz dDogUHVibGljYXRpb25FeGNlcHRPYmpTcGVjCitQdWJsaWNhdGlvbkV4Y2VwdFNlcVNwZWM6CisJ CQkgcmVsYXRpb25fZXhwcgorCQkJCXsKKwkJCQkJJCQgPSBtYWtlTm9kZShQdWJsaWNhdGlvbk9i alNwZWMpOworCQkJCQkkJC0+cHVib2JqdHlwZSA9IFBVQkxJQ0FUSU9OT0JKX0VYQ0VQVF9TRVFV RU5DRTsKKwkJCQkJJCQtPnB1YnJlbGF0aW9uID0gbWFrZU5vZGUoUHVibGljYXRpb25SZWxhdGlv bik7CisJCQkJCSQkLT5wdWJyZWxhdGlvbi0+ZXhjZXB0ID0gdHJ1ZTsKKwkJCQkJJCQtPnB1YnJl bGF0aW9uLT5yZWxhdGlvbiA9ICQxOworCQkJCQkkJC0+bG9jYXRpb24gPSBAMTsKKwkJCQl9CisJ OworCitwdWJfZXhjZXB0X3RibF9saXN0OiBQdWJsaWNhdGlvbkV4Y2VwdFRibFNwZWMKIAkJCQkJ eyAkJCA9IGxpc3RfbWFrZTEoJDEpOyB9Ci0JCQl8IHB1Yl9leGNlcHRfb2JqX2xpc3QgJywnIG9w dF90YWJsZSBQdWJsaWNhdGlvbkV4Y2VwdE9ialNwZWMKKwkJCXwgcHViX2V4Y2VwdF90YmxfbGlz dCAnLCcgb3B0X3RhYmxlIFB1YmxpY2F0aW9uRXhjZXB0VGJsU3BlYworCQkJCQl7ICQkID0gbGFw cGVuZCgkMSwgJDQpOyB9CisJOworCitwdWJfZXhjZXB0X3NlcV9saXN0OiBQdWJsaWNhdGlvbkV4 Y2VwdFNlcVNwZWMKKwkJCQkJeyAkJCA9IGxpc3RfbWFrZTEoJDEpOyB9CisJCQl8IHB1Yl9leGNl cHRfc2VxX2xpc3QgJywnIFB1YmxpY2F0aW9uRXhjZXB0U2VxU3BlYworCQkJCQl7ICQkID0gbGFw cGVuZCgkMSwgJDMpOyB9CisJCQl8IHB1Yl9leGNlcHRfc2VxX2xpc3QgJywnIFNFUVVFTkNFIFB1 YmxpY2F0aW9uRXhjZXB0U2VxU3BlYwogCQkJCQl7ICQkID0gbGFwcGVuZCgkMSwgJDQpOyB9CiAJ OwogCkBAIC0yMDc0NywxMiArMjA3NzUsMTIgQEAgcHJlcHJvY2Vzc19wdWJfYWxsX29ianR5cGVf bGlzdChMaXN0ICphbGxfb2JqZWN0c19saXN0LCBMaXN0ICoqcHVib2JqZWN0cywKIAkJCQkJCQkJ Ym9vbCAqYWxsX3RhYmxlcywgYm9vbCAqYWxsX3NlcXVlbmNlcywKIAkJCQkJCQkJY29yZV95eXNj YW5fdCB5eXNjYW5uZXIpCiB7Ci0JaWYgKCFhbGxfb2JqZWN0c19saXN0KQotCQlyZXR1cm47Ci0K IAkqYWxsX3RhYmxlcyA9IGZhbHNlOwogCSphbGxfc2VxdWVuY2VzID0gZmFsc2U7CiAKKwlpZiAo IWFsbF9vYmplY3RzX2xpc3QpCisJCXJldHVybjsKKwogCWZvcmVhY2hfcHRyKFB1YmxpY2F0aW9u QWxsT2JqU3BlYywgb2JqLCBhbGxfb2JqZWN0c19saXN0KQogCXsKIAkJaWYgKG9iai0+cHVib2Jq dHlwZSA9PSBQVUJMSUNBVElPTl9BTExfVEFCTEVTKQpAQCAtMjA3NjUsNyArMjA3OTMsNyBAQCBw cmVwcm9jZXNzX3B1Yl9hbGxfb2JqdHlwZV9saXN0KExpc3QgKmFsbF9vYmplY3RzX2xpc3QsIExp c3QgKipwdWJvYmplY3RzLAogCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKG9iai0+bG9jYXRpb24p KTsKIAogCQkJKmFsbF90YWJsZXMgPSB0cnVlOwotCQkJKnB1Ym9iamVjdHMgPSBsaXN0X2NvbmNh dCgqcHVib2JqZWN0cywgb2JqLT5leGNlcHRfdGFibGVzKTsKKwkJCSpwdWJvYmplY3RzID0gbGlz dF9jb25jYXQoKnB1Ym9iamVjdHMsIG9iai0+ZXhjZXB0X3JlbGF0aW9ucyk7CiAJCX0KIAkJZWxz ZSBpZiAob2JqLT5wdWJvYmp0eXBlID09IFBVQkxJQ0FUSU9OX0FMTF9TRVFVRU5DRVMpCiAJCXsK QEAgLTIwNzc3LDYgKzIwODA1LDcgQEAgcHJlcHJvY2Vzc19wdWJfYWxsX29ianR5cGVfbGlzdChM aXN0ICphbGxfb2JqZWN0c19saXN0LCBMaXN0ICoqcHVib2JqZWN0cywKIAkJCQkJCXBhcnNlcl9l cnJwb3NpdGlvbihvYmotPmxvY2F0aW9uKSk7CiAKIAkJCSphbGxfc2VxdWVuY2VzID0gdHJ1ZTsK KwkJCSpwdWJvYmplY3RzID0gbGlzdF9jb25jYXQoKnB1Ym9iamVjdHMsIG9iai0+ZXhjZXB0X3Jl bGF0aW9ucyk7CiAJCX0KIAl9CiB9CkBAIC0yMDgxMiw4ICsyMDg0MSw4IEBAIHByZXByb2Nlc3Nf cHVib2JqX2xpc3QoTGlzdCAqcHVib2Jqc3BlY19saXN0LCBjb3JlX3l5c2Nhbl90IHl5c2Nhbm5l cikKIAogCQlpZiAocHVib2JqLT5wdWJvYmp0eXBlID09IFBVQkxJQ0FUSU9OT0JKX1RBQkxFKQog CQl7Ci0JCQkvKiByZWxhdGlvbiBuYW1lIG9yIHB1YnRhYmxlIG11c3QgYmUgc2V0IGZvciB0aGlz IHR5cGUgb2Ygb2JqZWN0ICovCi0JCQlpZiAoIXB1Ym9iai0+bmFtZSAmJiAhcHVib2JqLT5wdWJ0 YWJsZSkKKwkJCS8qIFJlbGF0aW9uIG5hbWUgb3IgcHVicmVsYXRpb24gbXVzdCBiZSBzZXQgZm9y IHRoaXMgdHlwZSBvZiBvYmplY3QgKi8KKwkJCWlmICghcHVib2JqLT5uYW1lICYmICFwdWJvYmot PnB1YnJlbGF0aW9uKQogCQkJCWVyZXBvcnQoRVJST1IsCiAJCQkJCQllcnJjb2RlKEVSUkNPREVf U1lOVEFYX0VSUk9SKSwKIAkJCQkJCWVycm1zZygiaW52YWxpZCB0YWJsZSBuYW1lIiksCkBAIC0y MDgyMSwxMiArMjA4NTAsMTIgQEAgcHJlcHJvY2Vzc19wdWJvYmpfbGlzdChMaXN0ICpwdWJvYmpz cGVjX2xpc3QsIGNvcmVfeXlzY2FuX3QgeXlzY2FubmVyKQogCiAJCQlpZiAocHVib2JqLT5uYW1l KQogCQkJewotCQkJCS8qIGNvbnZlcnQgaXQgdG8gUHVibGljYXRpb25UYWJsZSAqLwotCQkJCVB1 YmxpY2F0aW9uVGFibGUgKnB1YnRhYmxlID0gbWFrZU5vZGUoUHVibGljYXRpb25UYWJsZSk7CisJ CQkJLyogQ29udmVydCBpdCB0byBQdWJsaWNhdGlvblJlbGF0aW9uICovCisJCQkJUHVibGljYXRp b25SZWxhdGlvbiAqcHVicmVsYXRpb24gPSBtYWtlTm9kZShQdWJsaWNhdGlvblJlbGF0aW9uKTsK IAotCQkJCXB1YnRhYmxlLT5yZWxhdGlvbiA9CisJCQkJcHVicmVsYXRpb24tPnJlbGF0aW9uID0K IAkJCQkJbWFrZVJhbmdlVmFyKE5VTEwsIHB1Ym9iai0+bmFtZSwgcHVib2JqLT5sb2NhdGlvbik7 Ci0JCQkJcHVib2JqLT5wdWJ0YWJsZSA9IHB1YnRhYmxlOworCQkJCXB1Ym9iai0+cHVicmVsYXRp b24gPSBwdWJyZWxhdGlvbjsKIAkJCQlwdWJvYmotPm5hbWUgPSBOVUxMOwogCQkJfQogCQl9CkBA IC0yMDgzNCwxNCArMjA4NjMsMTQgQEAgcHJlcHJvY2Vzc19wdWJvYmpfbGlzdChMaXN0ICpwdWJv YmpzcGVjX2xpc3QsIGNvcmVfeXlzY2FuX3QgeXlzY2FubmVyKQogCQkJCSBwdWJvYmotPnB1Ym9i anR5cGUgPT0gUFVCTElDQVRJT05PQkpfVEFCTEVTX0lOX0NVUl9TQ0hFTUEpCiAJCXsKIAkJCS8q IFdIRVJFIGNsYXVzZSBpcyBub3QgYWxsb3dlZCBvbiBhIHNjaGVtYSBvYmplY3QgKi8KLQkJCWlm IChwdWJvYmotPnB1YnRhYmxlICYmIHB1Ym9iai0+cHVidGFibGUtPndoZXJlQ2xhdXNlKQorCQkJ aWYgKHB1Ym9iai0+cHVicmVsYXRpb24gJiYgcHVib2JqLT5wdWJyZWxhdGlvbi0+d2hlcmVDbGF1 c2UpCiAJCQkJZXJlcG9ydChFUlJPUiwKIAkJCQkJCWVycmNvZGUoRVJSQ09ERV9TWU5UQVhfRVJS T1IpLAogCQkJCQkJZXJybXNnKCJXSEVSRSBjbGF1c2Ugbm90IGFsbG93ZWQgZm9yIHNjaGVtYSIp LAogCQkJCQkJcGFyc2VyX2VycnBvc2l0aW9uKHB1Ym9iai0+bG9jYXRpb24pKTsKIAogCQkJLyog Q29sdW1uIGxpc3QgaXMgbm90IGFsbG93ZWQgb24gYSBzY2hlbWEgb2JqZWN0ICovCi0JCQlpZiAo cHVib2JqLT5wdWJ0YWJsZSAmJiBwdWJvYmotPnB1YnRhYmxlLT5jb2x1bW5zKQorCQkJaWYgKHB1 Ym9iai0+cHVicmVsYXRpb24gJiYgcHVib2JqLT5wdWJyZWxhdGlvbi0+Y29sdW1ucykKIAkJCQll cmVwb3J0KEVSUk9SLAogCQkJCQkJZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCiAJCQkJ CQllcnJtc2coImNvbHVtbiBzcGVjaWZpY2F0aW9uIG5vdCBhbGxvd2VkIGZvciBzY2hlbWEiKSwK QEAgLTIwODQ5LDExICsyMDg3OCwxMSBAQCBwcmVwcm9jZXNzX3B1Ym9ial9saXN0KExpc3QgKnB1 Ym9ianNwZWNfbGlzdCwgY29yZV95eXNjYW5fdCB5eXNjYW5uZXIpCiAKIAkJCS8qCiAJCQkgKiBX ZSBjYW4gZGlzdGluZ3Vpc2ggYmV0d2VlbiB0aGUgZGlmZmVyZW50IHR5cGUgb2Ygc2NoZW1hIG9i amVjdHMKLQkJCSAqIGJhc2VkIG9uIHdoZXRoZXIgbmFtZSBhbmQgcHVidGFibGUgaXMgc2V0Lgor CQkJICogYmFzZWQgb24gd2hldGhlciBuYW1lIGFuZCBwdWJyZWxhdGlvbiBpcyBzZXQuCiAJCQkg Ki8KIAkJCWlmIChwdWJvYmotPm5hbWUpCiAJCQkJcHVib2JqLT5wdWJvYmp0eXBlID0gUFVCTElD QVRJT05PQkpfVEFCTEVTX0lOX1NDSEVNQTsKLQkJCWVsc2UgaWYgKCFwdWJvYmotPm5hbWUgJiYg IXB1Ym9iai0+cHVidGFibGUpCisJCQllbHNlIGlmICghcHVib2JqLT5uYW1lICYmICFwdWJvYmot PnB1YnJlbGF0aW9uKQogCQkJCXB1Ym9iai0+cHVib2JqdHlwZSA9IFBVQkxJQ0FUSU9OT0JKX1RB QkxFU19JTl9DVVJfU0NIRU1BOwogCQkJZWxzZQogCQkJCWVyZXBvcnQoRVJST1IsCmRpZmYgLS1n aXQgYS9zcmMvYmluL3BnX2R1bXAvcGdfZHVtcC5jIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAu YwppbmRleCBjNTY0MzdkNjA1Ny4uOTY2OTY3MWJlMTQgMTAwNjQ0Ci0tLSBhL3NyYy9iaW4vcGdf ZHVtcC9wZ19kdW1wLmMKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuYwpAQCAtNDYxNywx OCArNDYxNywyMiBAQCBnZXRQdWJsaWNhdGlvbnMoQXJjaGl2ZSAqZm91dCkKIAkJewogCQkJTlVM TCwgTlVMTAogCQl9OworCQlwdWJpbmZvW2ldLmV4Y2VwdF9zZXF1ZW5jZXMgPSAoU2ltcGxlUHRy TGlzdCkKKwkJeworCQkJTlVMTCwgTlVMTAorCQl9OwogCiAJCS8qIERlY2lkZSB3aGV0aGVyIHdl IHdhbnQgdG8gZHVtcCBpdCAqLwogCQlzZWxlY3REdW1wYWJsZU9iamVjdCgmKHB1YmluZm9baV0u ZG9iaiksIGZvdXQpOwogCiAJCS8qCi0JCSAqIEdldCB0aGUgbGlzdCBvZiB0YWJsZXMgZm9yIHB1 YmxpY2F0aW9ucyBzcGVjaWZpZWQgaW4gdGhlIEVYQ0VQVAotCQkgKiBUQUJMRSBjbGF1c2UuCisJ CSAqIEdldCB0aGUgbGlzdCBvZiB0YWJsZXMgYW5kIHNlcXVlbmNlcyBmb3IgcHVibGljYXRpb25z IHNwZWNpZmllZCBpbgorCQkgKiB0aGUgRVhDRVBUIGNsYXVzZS4KIAkJICoKLQkJICogQWx0aG91 Z2ggaW5kaXZpZHVhbCB0YWJsZSBlbnRyaWVzIGluIEVYQ0VQVCBsaXN0IGNvdWxkIGJlIHN0b3Jl ZCBpbgotCQkgKiBQdWJsaWNhdGlvblJlbEluZm8sIGR1bXBQdWJsaWNhdGlvblRhYmxlIGNhbm5v dCBiZSB1c2VkIHRvIGVtaXQKLQkJICogdGhlbSwgYmVjYXVzZSB0aGVyZSBpcyBubyBBTFRFUiBQ VUJMSUNBVElPTiAuLi4gQUREIGNvbW1hbmQgdG8gYWRkCi0JCSAqIGluZGl2aWR1YWwgdGFibGUg ZW50cmllcyB0byB0aGUgRVhDRVBUIGxpc3QuCisJCSAqIEFsdGhvdWdoIGluZGl2aWR1YWwgdGFi bGUvc2VxdWVuY2UgZW50cmllcyBpbiBFWENFUFQgbGlzdCBjb3VsZCBiZQorCQkgKiBzdG9yZWQg aW4gUHVibGljYXRpb25SZWxJbmZvLCBkdW1wUHVibGljYXRpb25UYWJsZSBjYW5ub3QgYmUgdXNl ZAorCQkgKiB0byBlbWl0IHRoZW0sIGJlY2F1c2UgdGhlcmUgaXMgbm8gQUxURVIgUFVCTElDQVRJ T04gLi4uIEFERCBjb21tYW5kCisJCSAqIHRvIGFkZCBpbmRpdmlkdWFsIHRhYmxlIGVudHJpZXMg dG8gdGhlIEVYQ0VQVCBsaXN0LgogCQkgKgogCQkgKiBUaGVyZWZvcmUsIHRoZSBhcHByb2FjaCBp cyB0byBkdW1wIHRoZSBjb21wbGV0ZSBFWENFUFQgbGlzdCBpbiBhCiAJCSAqIHNpbmdsZSBDUkVB VEUgUFVCTElDQVRJT04gc3RhdGVtZW50LiBQdWJsaWNhdGlvbkluZm8gaXMgdXNlZCB0bwpAQCAt NDY0Miw5ICs0NjQ2LDEwIEBAIGdldFB1YmxpY2F0aW9ucyhBcmNoaXZlICpmb3V0KQogCiAJCQly ZXNldFBRRXhwQnVmZmVyKHF1ZXJ5KTsKIAkJCWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LAotCQkJ CQkJCSAgIlNFTEVDVCBwcnJlbGlkXG4iCi0JCQkJCQkJICAiRlJPTSBwZ19jYXRhbG9nLnBnX3B1 YmxpY2F0aW9uX3JlbFxuIgotCQkJCQkJCSAgIldIRVJFIHBycHViaWQgPSAldSBBTkQgcHJleGNl cHQiLAorCQkJCQkJCSAgIlNFTEVDVCBwci5wcnJlbGlkLCBwYy5yZWxraW5kXG4iCisJCQkJCQkJ ICAiRlJPTSBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uX3JlbCBwclxuIgorCQkJCQkJCSAgIkpP SU4gcGdfY2F0YWxvZy5wZ19jbGFzcyBwYyBPTiBwci5wcnJlbGlkID0gcGMub2lkXG4iCisJCQkJ CQkJICAiV0hFUkUgcHIucHJwdWJpZCA9ICV1IEFORCBwci5wcmV4Y2VwdCIsCiAJCQkJCQkJICBw dWJpbmZvW2ldLmRvYmouY2F0SWQub2lkKTsKIAogCQkJcmVzX3RibHMgPSBFeGVjdXRlU3FsUXVl cnkoZm91dCwgcXVlcnktPmRhdGEsIFBHUkVTX1RVUExFU19PSyk7CkBAIC00NjU0LDE0ICs0NjU5 LDI1IEBAIGdldFB1YmxpY2F0aW9ucyhBcmNoaXZlICpmb3V0KQogCQkJZm9yIChpbnQgaiA9IDA7 IGogPCBudGJsczsgaisrKQogCQkJewogCQkJCU9pZAkJCXBycmVsaWQ7CisJCQkJY2hhcgkJcmVs a2luZDsKIAkJCQlUYWJsZUluZm8gICp0YmluZm87CiAKIAkJCQlwcnJlbGlkID0gYXRvb2lkKFBR Z2V0dmFsdWUocmVzX3RibHMsIGosIDApKTsKKwkJCQlyZWxraW5kID0gKlBRZ2V0dmFsdWUocmVz X3RibHMsIGosIDEpOwogCiAJCQkJdGJpbmZvID0gZmluZFRhYmxlQnlPaWQocHJyZWxpZCk7CiAK IAkJCQlpZiAodGJpbmZvICE9IE5VTEwpCi0JCQkJCXNpbXBsZV9wdHJfbGlzdF9hcHBlbmQoJnB1 YmluZm9baV0uZXhjZXB0X3RhYmxlcywgdGJpbmZvKTsKKwkJCQl7CisJCQkJCS8qIFRPRE8gOiBB ZGQgYSB2ZXJzaW9uIGNoZWNrIGZvciBQRyAyMCAqLworCQkJCQlpZiAocmVsa2luZCA9PSBSRUxL SU5EX1NFUVVFTkNFKQorCQkJCQkJc2ltcGxlX3B0cl9saXN0X2FwcGVuZCgmcHViaW5mb1tpXS5l eGNlcHRfc2VxdWVuY2VzLCB0YmluZm8pOworCQkJCQllbHNlIGlmIChyZWxraW5kID09IFJFTEtJ TkRfUkVMQVRJT04gfHwKKwkJCQkJCQkgcmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RB QkxFKQorCQkJCQkJc2ltcGxlX3B0cl9saXN0X2FwcGVuZCgmcHViaW5mb1tpXS5leGNlcHRfdGFi bGVzLCB0YmluZm8pOworCQkJCQllbHNlCisJCQkJCQlBc3NlcnQoZmFsc2UpOworCQkJCX0KIAkJ CX0KIAogCQkJUFFjbGVhcihyZXNfdGJscyk7CkBAIC00NzIxLDEyICs0NzM3LDMwIEBAIGR1bXBQ dWJsaWNhdGlvbihBcmNoaXZlICpmb3V0LCBjb25zdCBQdWJsaWNhdGlvbkluZm8gKnB1YmluZm8p CiAJCX0KIAkJaWYgKG5fZXhjZXB0ID4gMCkKIAkJCWFwcGVuZFBRRXhwQnVmZmVyQ2hhcihxdWVy eSwgJyknKTsKKwl9CisJaWYgKHB1YmluZm8tPnB1YmFsbHNlcXVlbmNlcykKKwl7CisJCWludAkJ CW5fZXhjZXB0ID0gMDsKIAotCQlpZiAocHViaW5mby0+cHViYWxsc2VxdWVuY2VzKQorCQlpZiAo cHViaW5mby0+cHViYWxsdGFibGVzKQogCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnksICIs IEFMTCBTRVFVRU5DRVMiKTsKKwkJZWxzZQorCQkJYXBwZW5kUFFFeHBCdWZmZXJTdHIocXVlcnks ICIgRk9SIEFMTCBTRVFVRU5DRVMiKTsKKworCQkvKiBJbmNsdWRlIEVYQ0VQVCAoU0VRVUVOQ0Up IGNsYXVzZSBpZiB0aGVyZSBhcmUgZXhjZXB0X3NlcXVlbmNlcy4gKi8KKwkJZm9yIChTaW1wbGVQ dHJMaXN0Q2VsbCAqY2VsbCA9IHB1YmluZm8tPmV4Y2VwdF9zZXF1ZW5jZXMuaGVhZDsgY2VsbDsg Y2VsbCA9IGNlbGwtPm5leHQpCisJCXsKKwkJCVRhYmxlSW5mbyAgKnRiaW5mbyA9IChUYWJsZUlu Zm8gKikgY2VsbC0+cHRyOworCQkJY29uc3QgY2hhciAqc2VxbmFtZSA9IGZtdFF1YWxpZmllZER1 bXBhYmxlKHRiaW5mbyk7CisKKwkJCWlmICgrK25fZXhjZXB0ID09IDEpCisJCQkJYXBwZW5kUFFF eHBCdWZmZXIocXVlcnksICIgRVhDRVBUIChTRVFVRU5DRSAlcyIsIHNlcW5hbWUpOworCQkJZWxz ZQorCQkJCWFwcGVuZFBRRXhwQnVmZmVyKHF1ZXJ5LCAiLCAlcyIsIHNlcW5hbWUpOworCQl9CisJ CWlmIChuX2V4Y2VwdCA+IDApCisJCQlhcHBlbmRQUUV4cEJ1ZmZlckNoYXIocXVlcnksICcpJyk7 CiAJfQotCWVsc2UgaWYgKHB1YmluZm8tPnB1YmFsbHNlcXVlbmNlcykKLQkJYXBwZW5kUFFFeHBC dWZmZXJTdHIocXVlcnksICIgRk9SIEFMTCBTRVFVRU5DRVMiKTsKIAogCWFwcGVuZFBRRXhwQnVm ZmVyU3RyKHF1ZXJ5LCAiIFdJVEggKHB1Ymxpc2ggPSAnIik7CiAJaWYgKHB1YmluZm8tPnB1Ymlu c2VydCkKZGlmZiAtLWdpdCBhL3NyYy9iaW4vcGdfZHVtcC9wZ19kdW1wLmggYi9zcmMvYmluL3Bn X2R1bXAvcGdfZHVtcC5oCmluZGV4IDVhNjcyNmQ4YjEyLi44ZTg2OWZlNzkxYSAxMDA2NDQKLS0t IGEvc3JjL2Jpbi9wZ19kdW1wL3BnX2R1bXAuaAorKysgYi9zcmMvYmluL3BnX2R1bXAvcGdfZHVt cC5oCkBAIC02NzksNiArNjc5LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX1B1YmxpY2F0aW9uSW5mbwog CWJvb2wJCXB1YnZpYXJvb3Q7CiAJUHVibGlzaEdlbmNvbHNUeXBlIHB1YmdlbmNvbHNfdHlwZTsK IAlTaW1wbGVQdHJMaXN0IGV4Y2VwdF90YWJsZXM7CisJU2ltcGxlUHRyTGlzdCBleGNlcHRfc2Vx dWVuY2VzOwogfSBQdWJsaWNhdGlvbkluZm87CiAKIC8qCmRpZmYgLS1naXQgYS9zcmMvYmluL3Bn X2R1bXAvdC8wMDJfcGdfZHVtcC5wbCBiL3NyYy9iaW4vcGdfZHVtcC90LzAwMl9wZ19kdW1wLnBs CmluZGV4IDkyNTg5NDhiNTgzLi5jMmMxZDUxNTY3NCAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wZ19k dW1wL3QvMDAyX3BnX2R1bXAucGwKKysrIGIvc3JjL2Jpbi9wZ19kdW1wL3QvMDAyX3BnX2R1bXAu cGwKQEAgLTMyODMsNiArMzI4MywyNiBAQCBteSAldGVzdHMgPSAoCiAJCWxpa2UgPT4geyAlZnVs bF9ydW5zLCBzZWN0aW9uX3Bvc3RfZGF0YSA9PiAxLCB9LAogCX0sCiAKKwknQ1JFQVRFIFBVQkxJ Q0FUSU9OIHB1YjExJyA9PiB7CisJCWNyZWF0ZV9vcmRlciA9PiA5MiwKKwkJY3JlYXRlX3NxbCA9 PgorCQkgICdDUkVBVEUgUFVCTElDQVRJT04gcHViMTEgRk9SIEFMTCBTRVFVRU5DRVMgRVhDRVBU IChTRVFVRU5DRSBwdWJsaWMudGVzdF90YWJsZV9jb2wxX3NlcSk7JywKKwkJcmVnZXhwID0+IHFy L14KKwkJCVxRQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjExIEZPUiBBTEwgU0VRVUVOQ0VTIEVYQ0VQ VCAoU0VRVUVOQ0UgcHVibGljLnRlc3RfdGFibGVfY29sMV9zZXEpIFdJVEggKHB1Ymxpc2ggPSAn aW5zZXJ0LCB1cGRhdGUsIGRlbGV0ZSwgdHJ1bmNhdGUnKTtcRQorCQkJL3htLAorCQlsaWtlID0+ IHsgJWZ1bGxfcnVucywgc2VjdGlvbl9wb3N0X2RhdGEgPT4gMSwgfSwKKwl9LAorCisJJ0NSRUFU RSBQVUJMSUNBVElPTiBwdWIxMicgPT4geworCQljcmVhdGVfb3JkZXIgPT4gOTIsCisJCWNyZWF0 ZV9zcWwgPT4KKwkJICAnQ1JFQVRFIFBVQkxJQ0FUSU9OIHB1YjEyIEZPUiBBTEwgVEFCTEVTIEVY Q0VQVCAoVEFCTEUgZHVtcF90ZXN0LnRlc3RfdGFibGUpLCBBTEwgU0VRVUVOQ0VTIEVYQ0VQVCAo U0VRVUVOQ0UgcHVibGljLnRlc3RfdGFibGVfY29sMV9zZXEpOycsCisJCXJlZ2V4cCA9PiBxci9e CisJCQlcUUNSRUFURSBQVUJMSUNBVElPTiBwdWIxMiBGT1IgQUxMIFRBQkxFUyBFWENFUFQgKFRB QkxFIE9OTFkgZHVtcF90ZXN0LnRlc3RfdGFibGUpLCBBTEwgU0VRVUVOQ0VTIEVYQ0VQVCAoU0VR VUVOQ0UgcHVibGljLnRlc3RfdGFibGVfY29sMV9zZXEpIFdJVEggKHB1Ymxpc2ggPSAnaW5zZXJ0 LCB1cGRhdGUsIGRlbGV0ZSwgdHJ1bmNhdGUnKTtcRQorCQkJL3htLAorCQlsaWtlID0+IHsgJWZ1 bGxfcnVucywgc2VjdGlvbl9wb3N0X2RhdGEgPT4gMSwgfSwKKwl9LAorCiAJJ0NSRUFURSBTVUJT Q1JJUFRJT04gc3ViMScgPT4gewogCQljcmVhdGVfb3JkZXIgPT4gNTAsCiAJCWNyZWF0ZV9zcWwg PT4gJ0NSRUFURSBTVUJTQ1JJUFRJT04gc3ViMQpAQCAtNDA4Miw2ICs0MTAyLDggQEAgbXkgJXRl c3RzID0gKAogCX0sCiAKIAknQ1JFQVRFIFNFUVVFTkNFIHRlc3RfdGFibGVfY29sMV9zZXEnID0+ IHsKKwkJY3JlYXRlX29yZGVyID0+IDkwLAorCQljcmVhdGVfc3FsID0+ICdDUkVBVEUgU0VRVUVO Q0UgdGVzdF90YWJsZV9jb2wxX3NlcScsCiAJCXJlZ2V4cCA9PiBxci9eCiAJCQlcUUNSRUFURSBT RVFVRU5DRSBkdW1wX3Rlc3QudGVzdF90YWJsZV9jb2wxX3NlcVxFCiAJCQlcblxzK1xRQVMgaW50 ZWdlclxFCmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvZGVzY3JpYmUuYyBiL3NyYy9iaW4vcHNx bC9kZXNjcmliZS5jCmluZGV4IGFmMzkzNWIwMDc4Li4wYTA2NDk2YWY4ZSAxMDA2NDQKLS0tIGEv c3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKKysrIGIvc3JjL2Jpbi9wc3FsL2Rlc2NyaWJlLmMKQEAg LTE3NzgsNyArMTc3OCw3IEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNj aGVtYW5hbWUsCiAJewogCQlQR3Jlc3VsdCAgICpyZXN1bHQgPSBOVUxMOwogCQlwcmludFF1ZXJ5 T3B0IG15b3B0ID0gcHNldC5wb3B0OwotCQljaGFyCSAgICpmb290ZXJzWzNdID0ge05VTEwsIE5V TEwsIE5VTEx9OworCQljaGFyCSAgICpmb290ZXJzWzRdID0ge05VTEwsIE5VTEwsIE5VTEwsIE5V TEx9OwogCiAJCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsICIvKiAlcyAqL1xuIiwgXygiR2V0IHNl cXVlbmNlIGluZm9ybWF0aW9uIikpOwogCQlpZiAocHNldC5zdmVyc2lvbiA+PSAxMDAwMDApCkBA IC0xODgyLDEyICsxODgyLDI4IEBAIGRlc2NyaWJlT25lVGFibGVEZXRhaWxzKGNvbnN0IGNoYXIg KnNjaGVtYW5hbWUsCiAJCXsKIAkJCXByaW50ZlBRRXhwQnVmZmVyKCZidWYsICIvKiAlcyAqL1xu IiwKIAkJCQkJCQkgIF8oIkdldCBwdWJsaWNhdGlvbnMgY29udGFpbmluZyB0aGlzIHNlcXVlbmNl IikpOwotCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwgIlNFTEVDVCBwdWJuYW1lIEZST00gcGdf Y2F0YWxvZy5wZ19wdWJsaWNhdGlvbiBwIgorCQkJYXBwZW5kUFFFeHBCdWZmZXIoJmJ1ZiwgIlNF TEVDVCBwLnB1Ym5hbWUgRlJPTSBwZ19jYXRhbG9nLnBnX3B1YmxpY2F0aW9uIHAiCiAJCQkJCQkJ ICAiXG5XSEVSRSBwLnB1YmFsbHNlcXVlbmNlcyIKLQkJCQkJCQkgICJcbiBBTkQgcGdfY2F0YWxv Zy5wZ19yZWxhdGlvbl9pc19wdWJsaXNoYWJsZSgnJXMnKSIKLQkJCQkJCQkgICJcbk9SREVSIEJZ IDEiLAorCQkJCQkJCSAgIlxuIEFORCBwZ19jYXRhbG9nLnBnX3JlbGF0aW9uX2lzX3B1Ymxpc2hh YmxlKCclcycpIiwKIAkJCQkJCQkgIG9pZCk7CiAKKwkJCS8qCisJCQkgKiBTa2lwIGVudHJpZXMg d2hlcmUgdGhpcyBzZXF1ZW5jZSBhcHBlYXJzIGluIHRoZSBwdWJsaWNhdGlvbidzCisJCQkgKiBF WENFUFQgbGlzdC4KKwkJCSAqLworCQkJaWYgKHBzZXQuc3ZlcnNpb24gPj0gMTkwMDAwKQorCQkJ eworCQkJCWFwcGVuZFBRRXhwQnVmZmVyKCZidWYsCisJCQkJCQkJCSAgIlxuIEFORCBOT1QgRVhJ U1RTICgiCisJCQkJCQkJCSAgIlxuIAlTRUxFQ1QgMSIKKwkJCQkJCQkJICAiXG4gCUZST00gcGdf Y2F0YWxvZy5wZ19wdWJsaWNhdGlvbl9yZWwgcHIiCisJCQkJCQkJCSAgIlxuIAlXSEVSRSBwci5w cnB1YmlkID0gcC5vaWQgQU5EIgorCQkJCQkJCQkgICJcbiAJcHIucHJyZWxpZCA9ICclcycgQU5E IHByLnByZXhjZXB0KSIsCisJCQkJCQkJCSAgb2lkKTsKKwkJCX0KKworCQkJYXBwZW5kUFFFeHBC dWZmZXIoJmJ1ZiwgIlxuT1JERVIgQlkgMSIpOworCiAJCQlyZXN1bHQgPSBQU1FMZXhlYyhidWYu ZGF0YSk7CiAJCQlpZiAocmVzdWx0KQogCQkJewpAQCAtMTkxMiw2ICsxOTI4LDQzIEBAIGRlc2Ny aWJlT25lVGFibGVEZXRhaWxzKGNvbnN0IGNoYXIgKnNjaGVtYW5hbWUsCiAJCQl9CiAJCX0KIAor CQkvKiBUT0RPIDogQWRkIGEgdmVyc2lvbiBjaGVjayBmb3IgUEcgMjAgKi8KKwkJLyogUHJpbnQg cHVibGljYXRpb25zIHdoZXJlIHRoZSBzZXF1ZW5jZSBpcyBpbiB0aGUgRVhDRVBUIGNsYXVzZSAq LworCQlpZiAocHNldC5zdmVyc2lvbiA+PSAxOTAwMDApCisJCXsKKwkJCXByaW50ZlBRRXhwQnVm ZmVyKCZidWYsCisJCQkJCQkJICAiU0VMRUNUIHAucHVibmFtZVxuIgorCQkJCQkJCSAgIkZST00g cGdfY2F0YWxvZy5wZ19wdWJsaWNhdGlvbiBwXG4iCisJCQkJCQkJICAiSk9JTiBwZ19jYXRhbG9n LnBnX3B1YmxpY2F0aW9uX3JlbCBwciBPTiBwLm9pZCA9IHByLnBycHViaWRcbiIKKwkJCQkJCQkg ICJXSEVSRSBwci5wcnJlbGlkID0gJyVzJyBBTkQgcHIucHJleGNlcHRcbiIKKwkJCQkJCQkgICJP UkRFUiBCWSAxOyIsIG9pZCk7CisKKwkJCXJlc3VsdCA9IFBTUUxleGVjKGJ1Zi5kYXRhKTsKKwkJ CWlmIChyZXN1bHQpCisJCQl7CisJCQkJaW50CQkJdHVwbGVzID0gUFFudHVwbGVzKHJlc3VsdCk7 CisKKwkJCQlpZiAodHVwbGVzID4gMCkKKwkJCQl7CisJCQkJCXByaW50ZlBRRXhwQnVmZmVyKCZ0 bXBidWYsIF8oIkV4Y2x1ZGVkIGZyb20gcHVibGljYXRpb25zOiIpKTsKKworCQkJCQkvKiBNaWdo dCBiZSBhbiBlbXB0eSBzZXQgLSB0aGF0J3Mgb2sgKi8KKwkJCQkJZm9yIChpID0gMDsgaSA8IHR1 cGxlczsgaSsrKQorCQkJCQkJYXBwZW5kUFFFeHBCdWZmZXIoJnRtcGJ1ZiwgIlxuICAgIFwiJXNc IiIsIFBRZ2V0dmFsdWUocmVzdWx0LCBpLCAwKSk7CisKKwkJCQkJaWYgKGZvb3RlcnNbMF0gPT0g TlVMTCkKKwkJCQkJCWZvb3RlcnNbMF0gPSBwZ19zdHJkdXAodG1wYnVmLmRhdGEpOworCQkJCQll bHNlIGlmIChmb290ZXJzWzFdID09IE5VTEwpCisJCQkJCQlmb290ZXJzWzFdID0gcGdfc3RyZHVw KHRtcGJ1Zi5kYXRhKTsKKwkJCQkJZWxzZQorCQkJCQkJZm9vdGVyc1syXSA9IHBnX3N0cmR1cCh0 bXBidWYuZGF0YSk7CisJCQkJCXJlc2V0UFFFeHBCdWZmZXIoJnRtcGJ1Zik7CisJCQkJfQorCisJ CQkJUFFjbGVhcihyZXN1bHQpOworCQkJfQorCQl9CisKIAkJaWYgKHRhYmxlaW5mby5yZWxwZXJz aXN0ZW5jZSA9PSBSRUxQRVJTSVNURU5DRV9VTkxPR0dFRCkKIAkJCXByaW50ZlBRRXhwQnVmZmVy KCZ0aXRsZSwgXygiVW5sb2dnZWQgc2VxdWVuY2UgXCIlcy4lc1wiIiksCiAJCQkJCQkJICBzY2hl bWFuYW1lLCByZWxhdGlvbm5hbWUpOwpAQCAtMTkyOCw2ICsxOTgxLDcgQEAgZGVzY3JpYmVPbmVU YWJsZURldGFpbHMoY29uc3QgY2hhciAqc2NoZW1hbmFtZSwKIAogCQlmcmVlKGZvb3RlcnNbMF0p OwogCQlmcmVlKGZvb3RlcnNbMV0pOworCQlmcmVlKGZvb3RlcnNbMl0pOwogCiAJCXJldHZhbCA9 IHRydWU7CiAJCWdvdG8gZXJyb3JfcmV0dXJuOwkJLyogbm90IGFuIGVycm9yLCBqdXN0IHJldHVy biBlYXJseSAqLwpAQCAtNjk1MCw2ICs3MDA0LDcgQEAgZGVzY3JpYmVQdWJsaWNhdGlvbnMoY29u c3QgY2hhciAqcGF0dGVybikKIAkJY2hhcgkgICAqcHViaWQgPSBQUWdldHZhbHVlKHJlcywgaSwg MCk7CiAJCWNoYXIJICAgKnB1Ym5hbWUgPSBQUWdldHZhbHVlKHJlcywgaSwgMSk7CiAJCWJvb2wJ CXB1YmFsbHRhYmxlcyA9IHN0cmNtcChQUWdldHZhbHVlKHJlcywgaSwgMyksICJ0IikgPT0gMDsK KwkJYm9vbAkJcHViYWxsc2VxdWVuY2VzID0gc3RyY21wKFBRZ2V0dmFsdWUocmVzLCBpLCA0KSwg InQiKSA9PSAwOwogCQlwcmludFRhYmxlT3B0IG15b3B0ID0gcHNldC5wb3B0LnRvcHQ7CiAKIAkJ aW5pdFBRRXhwQnVmZmVyKCZ0aXRsZSk7CkBAIC02OTg2LDcgKzcwNDEsNyBAQCBkZXNjcmliZVB1 YmxpY2F0aW9ucyhjb25zdCBjaGFyICpwYXR0ZXJuKQogCQkJcHJpbnRUYWJsZUFkZENlbGwoJmNv bnQsIFBRZ2V0dmFsdWUocmVzLCBpLCAxMCksIGZhbHNlLCBmYWxzZSk7CiAJCXByaW50VGFibGVB ZGRDZWxsKCZjb250LCBQUWdldHZhbHVlKHJlcywgaSwgMTEpLCBmYWxzZSwgZmFsc2UpOwogCi0J CWlmICghcHViYWxsdGFibGVzKQorCQlpZiAoIXB1YmFsbHRhYmxlcyAmJiAhcHViYWxsc2VxdWVu Y2VzKQogCQl7CiAJCQkvKiBHZXQgdGhlIHRhYmxlcyBmb3IgdGhlIHNwZWNpZmllZCBwdWJsaWNh dGlvbiAqLwogCQkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwgIi8qICVzICovXG4iLApAQCAtNzA0 MCw3ICs3MDk1LDcgQEAgZGVzY3JpYmVQdWJsaWNhdGlvbnMoY29uc3QgY2hhciAqcGF0dGVybikK IAkJCQkJZ290byBlcnJvcl9yZXR1cm47CiAJCQl9CiAJCX0KLQkJZWxzZQorCQlpZiAocHViYWxs dGFibGVzKQogCQl7CiAJCQlpZiAocHNldC5zdmVyc2lvbiA+PSAxOTAwMDApCiAJCQl7CkBAIC03 MDUyLDEzICs3MTA3LDMzIEBAIGRlc2NyaWJlUHVibGljYXRpb25zKGNvbnN0IGNoYXIgKnBhdHRl cm4pCiAJCQkJCQkJCSAgIkZST00gcGdfY2F0YWxvZy5wZ19jbGFzcyBjXG4iCiAJCQkJCQkJCSAg IiAgICAgSk9JTiBwZ19jYXRhbG9nLnBnX25hbWVzcGFjZSBuIE9OIG4ub2lkID0gYy5yZWxuYW1l c3BhY2VcbiIKIAkJCQkJCQkJICAiICAgICBKT0lOIHBnX2NhdGFsb2cucGdfcHVibGljYXRpb25f cmVsIHByIE9OIGMub2lkID0gcHIucHJyZWxpZFxuIgotCQkJCQkJCQkgICJXSEVSRSBwci5wcnB1 YmlkID0gJyVzJyBBTkQgcHIucHJleGNlcHRcbiIKKwkJCQkJCQkJICAiV0hFUkUgcHIucHJwdWJp ZCA9ICclcycgQU5EIHByLnByZXhjZXB0IEFORCBjLnJlbGtpbmQgSU4gKCdyJywncCcpXG4iCiAJ CQkJCQkJCSAgIk9SREVSIEJZIDEiLCBwdWJpZCk7CiAJCQkJaWYgKCFhZGRGb290ZXJUb1B1Ymxp Y2F0aW9uRGVzYygmYnVmLCBfKCJFeGNlcHQgdGFibGVzOiIpLAogCQkJCQkJCQkJCQkJdHJ1ZSwg JmNvbnQpKQogCQkJCQlnb3RvIGVycm9yX3JldHVybjsKIAkJCX0KIAkJfQorCQlpZiAocHViYWxs c2VxdWVuY2VzKQorCQl7CisJCQkvKiBUT0RPIDogQWRkIGEgdmVyc2lvbiBjaGVjayBmb3IgUEcg MjAgKi8KKwkJCWlmIChwc2V0LnN2ZXJzaW9uID49IDE5MDAwMCkKKwkJCXsKKwkJCQkvKiBHZXQg c2VxdWVuY2VzIGluIHRoZSBFWENFUFQgY2xhdXNlIGZvciB0aGlzIHB1YmxpY2F0aW9uICovCisJ CQkJcHJpbnRmUFFFeHBCdWZmZXIoJmJ1ZiwgIi8qICVzICovXG4iLAorCQkJCQkJCQkgIF8oIkdl dCBzZXF1ZW5jZXMgZXhjbHVkZWQgYnkgdGhpcyBwdWJsaWNhdGlvbiIpKTsKKwkJCQlwcmludGZQ UUV4cEJ1ZmZlcigmYnVmLAorCQkJCQkJCQkgICJTRUxFQ1Qgbi5uc3BuYW1lIHx8ICcuJyB8fCBj LnJlbG5hbWVcbiIKKwkJCQkJCQkJICAiRlJPTSBwZ19jYXRhbG9nLnBnX2NsYXNzIGNcbiIKKwkJ CQkJCQkJICAiICAgICBKT0lOIHBnX2NhdGFsb2cucGdfbmFtZXNwYWNlIG4gT04gbi5vaWQgPSBj LnJlbG5hbWVzcGFjZVxuIgorCQkJCQkJCQkgICIgICAgIEpPSU4gcGdfY2F0YWxvZy5wZ19wdWJs aWNhdGlvbl9yZWwgcHIgT04gYy5vaWQgPSBwci5wcnJlbGlkXG4iCisJCQkJCQkJCSAgIldIRVJF IHByLnBycHViaWQgPSAnJXMnIEFORCBwci5wcmV4Y2VwdCBBTkQgYy5yZWxraW5kID0gJ1MnXG4i CisJCQkJCQkJCSAgIk9SREVSIEJZIDEiLCBwdWJpZCk7CisJCQkJaWYgKCFhZGRGb290ZXJUb1B1 YmxpY2F0aW9uRGVzYygmYnVmLCBfKCJFeGNlcHQgc2VxdWVuY2VzOiIpLAorCQkJCQkJCQkJCQkJ dHJ1ZSwgJmNvbnQpKQorCQkJCQlnb3RvIGVycm9yX3JldHVybjsKKwkJCX0KKwkJfQogCiAJCXBy aW50VGFibGUoJmNvbnQsIHBzZXQucXVlcnlGb3V0LCBmYWxzZSwgcHNldC5sb2dmaWxlKTsKIAkJ cHJpbnRUYWJsZUNsZWFudXAoJmNvbnQpOwpkaWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL3RhYi1j b21wbGV0ZS5pbi5jIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCmluZGV4IDQ2Yjlh ZGQwNjA0Li42MjBiZTgzMThiZiAxMDA2NDQKLS0tIGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0 ZS5pbi5jCisrKyBiL3NyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYwpAQCAtMzc2Miw2ICsz NzYyLDE4IEBAIG1hdGNoX3ByZXZpb3VzX3dvcmRzKGludCBwYXR0ZXJuX2lkLAogCQlDT01QTEVU RV9XSVRIX1NDSEVNQV9RVUVSWShRdWVyeV9mb3JfbGlzdF9vZl90YWJsZXMpOwogCWVsc2UgaWYg KE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIkFMTCIs ICJUQUJMRVMiLCAiRVhDRVBUIiwgIigiLCAiVEFCTEUiLCBNYXRjaEFueU4pICYmICFlbmRzX3dp dGgocHJldl93ZCwgJywnKSkKIAkJQ09NUExFVEVfV0lUSCgiKSIpOworCWVsc2UgaWYgKE1hdGNo ZXMoIkNSRUFURSIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIkFMTCIsICJTRVFV RU5DRVMiKSkKKwkJQ09NUExFVEVfV0lUSCgiRVhDRVBUICggU0VRVUVOQ0UiLCAiV0lUSCAoIik7 CisJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJG T1IiLCAiQUxMIiwgIlNFUVVFTkNFUyIsICJFWENFUFQiKSkKKwkJQ09NUExFVEVfV0lUSCgiKCBT RVFVRU5DRSIpOworCWVsc2UgaWYgKE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNBVElPTiIsIE1h dGNoQW55LCAiRk9SIiwgIkFMTCIsICJTRVFVRU5DRVMiLCAiRVhDRVBUIiwgIigiKSkKKwkJQ09N UExFVEVfV0lUSCgiU0VRVUVOQ0UiKTsKKwllbHNlIGlmIChNYXRjaGVzKCJDUkVBVEUiLCAiUFVC TElDQVRJT04iLCBNYXRjaEFueSwgIkZPUiIsICJBTEwiLCAiU0VRVUVOQ0VTIiwgIkVYQ0VQVCIs ICIoIiwgIlNFUVVFTkNFIikpCisJCUNPTVBMRVRFX1dJVEhfU0NIRU1BX1FVRVJZKFF1ZXJ5X2Zv cl9saXN0X29mX3NlcXVlbmNlcyk7CisJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJ Q0FUSU9OIiwgTWF0Y2hBbnksICJGT1IiLCAiQUxMIiwgIlNFUVVFTkNFUyIsICJFWENFUFQiLCAi KCIsICJTRVFVRU5DRSIsIE1hdGNoQW55TikgJiYgZW5kc193aXRoKHByZXZfd2QsICcsJykpCisJ CUNPTVBMRVRFX1dJVEhfU0NIRU1BX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29mX3NlcXVlbmNlcyk7 CisJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJG T1IiLCAiQUxMIiwgIlNFUVVFTkNFUyIsICJFWENFUFQiLCAiKCIsICJTRVFVRU5DRSIsIE1hdGNo QW55TikgJiYgIWVuZHNfd2l0aChwcmV2X3dkLCAnLCcpKQorCQlDT01QTEVURV9XSVRIKCIpIik7 CiAJZWxzZSBpZiAoTWF0Y2hlcygiQ1JFQVRFIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJG T1IiLCAiVEFCTEVTIikpCiAJCUNPTVBMRVRFX1dJVEgoIklOIFNDSEVNQSIpOwogCWVsc2UgaWYg KE1hdGNoZXMoIkNSRUFURSIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiRk9SIiwgIlRBQkxF IiwgTWF0Y2hBbnkpICYmICFlbmRzX3dpdGgocHJldl93ZCwgJywnKSkKZGlmZiAtLWdpdCBhL3Ny Yy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaCBiL3NyYy9pbmNsdWRlL2NhdGFsb2cv cGdfcHVibGljYXRpb24uaAppbmRleCA4OWI0YmIxNGY2Mi4uNDljMjlhODc2MzAgMTAwNjQ0Ci0t LSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaAorKysgYi9zcmMvaW5jbHVk ZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmgKQEAgLTE3Nyw4ICsxNzcsOCBAQCB0eXBlZGVmIGVu dW0gUHVibGljYXRpb25QYXJ0T3B0CiAKIGV4dGVybiBMaXN0ICpHZXRJbmNsdWRlZFB1YmxpY2F0 aW9uUmVsYXRpb25zKE9pZCBwdWJpZCwKIAkJCQkJCQkJCQkJIFB1YmxpY2F0aW9uUGFydE9wdCBw dWJfcGFydG9wdCk7Ci1leHRlcm4gTGlzdCAqR2V0RXhjbHVkZWRQdWJsaWNhdGlvblRhYmxlcyhP aWQgcHViaWQsCi0JCQkJCQkJCQkJICBQdWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQpOwor ZXh0ZXJuIExpc3QgKkdldEV4Y2x1ZGVkUHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1YmlkLAor CQkJCQkJCQkJCQkgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KTsKIGV4dGVybiBMaXN0 ICpHZXRBbGxUYWJsZXNQdWJsaWNhdGlvbnModm9pZCk7CiBleHRlcm4gTGlzdCAqR2V0QWxsUHVi bGljYXRpb25SZWxhdGlvbnMoT2lkIHB1YmlkLCBjaGFyIHJlbGtpbmQsIGJvb2wgcHVidmlhcm9v dCk7CiBleHRlcm4gTGlzdCAqR2V0UHVibGljYXRpb25TY2hlbWFzKE9pZCBwdWJpZCk7CkBAIC0y MDAsNyArMjAwLDggQEAgZXh0ZXJuIGJvb2wgY2hlY2tfYW5kX2ZldGNoX2NvbHVtbl9saXN0KFB1 YmxpY2F0aW9uICpwdWIsIE9pZCByZWxpZCwKIAkJCQkJCQkJCQlNZW1vcnlDb250ZXh0IG1jeHQs IEJpdG1hcHNldCAqKmNvbHMpOwogZXh0ZXJuIE9iamVjdEFkZHJlc3MgcHVibGljYXRpb25fYWRk X3JlbGF0aW9uKE9pZCBwdWJpZCwgUHVibGljYXRpb25SZWxJbmZvICpwcmksCiAJCQkJCQkJCQkJ CSAgYm9vbCBpZl9ub3RfZXhpc3RzLAotCQkJCQkJCQkJCQkgIEFsdGVyUHVibGljYXRpb25TdG10 ICphbHRlcl9zdG10KTsKKwkJCQkJCQkJCQkJICBBbHRlclB1YmxpY2F0aW9uU3RtdCAqYWx0ZXJf c3RtdCwKKwkJCQkJCQkJCQkJICBjaGFyIHB1YnJlbGtpbmQpOwogZXh0ZXJuIEJpdG1hcHNldCAq cHViX2NvbGxpc3RfdmFsaWRhdGUoUmVsYXRpb24gdGFyZ2V0cmVsLCBMaXN0ICpjb2x1bW5zKTsK IGV4dGVybiBPYmplY3RBZGRyZXNzIHB1YmxpY2F0aW9uX2FkZF9zY2hlbWEoT2lkIHB1YmlkLCBP aWQgc2NoZW1haWQsCiAJCQkJCQkJCQkJCWJvb2wgaWZfbm90X2V4aXN0cyk7CmRpZmYgLS1naXQg YS9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJz ZW5vZGVzLmgKaW5kZXggNDEzM2M0MDRhNmIuLjY4NzBkYWFiNWZlIDEwMDY0NAotLS0gYS9zcmMv aW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKKysrIGIvc3JjL2luY2x1ZGUvbm9kZXMvcGFyc2Vu b2Rlcy5oCkBAIC00NDYwLDE0ICs0NDYwLDE0IEBAIHR5cGVkZWYgc3RydWN0IEFsdGVyVFNDb25m aWd1cmF0aW9uU3RtdAogCWJvb2wJCW1pc3Npbmdfb2s7CQkvKiBmb3IgRFJPUCAtIHNraXAgZXJy b3IgaWYgbWlzc2luZz8gKi8KIH0gQWx0ZXJUU0NvbmZpZ3VyYXRpb25TdG10OwogCi10eXBlZGVm IHN0cnVjdCBQdWJsaWNhdGlvblRhYmxlCit0eXBlZGVmIHN0cnVjdCBQdWJsaWNhdGlvblJlbGF0 aW9uCiB7CiAJTm9kZVRhZwkJdHlwZTsKIAlSYW5nZVZhciAgICpyZWxhdGlvbjsJCS8qIHB1Ymxp Y2F0aW9uIHJlbGF0aW9uICovCiAJTm9kZQkgICAqd2hlcmVDbGF1c2U7CS8qIHF1YWxpZmljYXRp b25zICovCiAJTGlzdAkgICAqY29sdW1uczsJCS8qIExpc3Qgb2YgY29sdW1ucyBpbiBhIHB1Ymxp Y2F0aW9uIHRhYmxlICovCiAJYm9vbAkJZXhjZXB0OwkJCS8qIFRydWUgaWYgbGlzdGVkIGluIHRo ZSBFWENFUFQgY2xhdXNlICovCi19IFB1YmxpY2F0aW9uVGFibGU7Cit9IFB1YmxpY2F0aW9uUmVs YXRpb247CiAKIC8qCiAgKiBQdWJsaWNhdGlvbiBvYmplY3QgdHlwZQpAQCAtNDQ3Niw2ICs0NDc2 LDcgQEAgdHlwZWRlZiBlbnVtIFB1YmxpY2F0aW9uT2JqU3BlY1R5cGUKIHsKIAlQVUJMSUNBVElP Tk9CSl9UQUJMRSwJCS8qIEEgdGFibGUgKi8KIAlQVUJMSUNBVElPTk9CSl9FWENFUFRfVEFCTEUs CS8qIEEgdGFibGUgaW4gdGhlIEVYQ0VQVCBjbGF1c2UgKi8KKwlQVUJMSUNBVElPTk9CSl9FWENF UFRfU0VRVUVOQ0UsIC8qIEEgc2VxdWVuY2UgaW4gdGhlIEVYQ0VQVCBjbGF1c2UgKi8KIAlQVUJM SUNBVElPTk9CSl9UQUJMRVNfSU5fU0NIRU1BLAkvKiBBbGwgdGFibGVzIGluIHNjaGVtYSAqLwog CVBVQkxJQ0FUSU9OT0JKX1RBQkxFU19JTl9DVVJfU0NIRU1BLAkvKiBBbGwgdGFibGVzIGluIGZp cnN0IGVsZW1lbnQgb2YKIAkJCQkJCQkJCQkJICogc2VhcmNoX3BhdGggKi8KQEAgLTQ0ODcsNyAr NDQ4OCw3IEBAIHR5cGVkZWYgc3RydWN0IFB1YmxpY2F0aW9uT2JqU3BlYwogCU5vZGVUYWcJCXR5 cGU7CiAJUHVibGljYXRpb25PYmpTcGVjVHlwZSBwdWJvYmp0eXBlOwkvKiB0eXBlIG9mIHRoaXMg cHVibGljYXRpb24gb2JqZWN0ICovCiAJY2hhcgkgICAqbmFtZTsKLQlQdWJsaWNhdGlvblRhYmxl ICpwdWJ0YWJsZTsKKwlQdWJsaWNhdGlvblJlbGF0aW9uICpwdWJyZWxhdGlvbjsKIAlQYXJzZUxv Ywlsb2NhdGlvbjsJCS8qIHRva2VuIGxvY2F0aW9uLCBvciAtMSBpZiB1bmtub3duICovCiB9IFB1 YmxpY2F0aW9uT2JqU3BlYzsKIApAQCAtNDUwNCw3ICs0NTA1LDkgQEAgdHlwZWRlZiBzdHJ1Y3Qg UHVibGljYXRpb25BbGxPYmpTcGVjCiB7CiAJTm9kZVRhZwkJdHlwZTsKIAlQdWJsaWNhdGlvbkFs bE9ialR5cGUgcHVib2JqdHlwZTsJLyogdHlwZSBvZiB0aGlzIHB1YmxpY2F0aW9uIG9iamVjdCAq LwotCUxpc3QJICAgKmV4Y2VwdF90YWJsZXM7CS8qIHRhYmxlcyBzcGVjaWZpZWQgaW4gdGhlIEVY Q0VQVCBjbGF1c2UgKi8KKwlMaXN0CSAgICpleGNlcHRfcmVsYXRpb25zOwkvKiBkZXBlbmRpbmcg b24gdGhlICdwdWJvYmp0eXBlJywgdGhpcyBpcworCQkJCQkJCQkJICogYSBsaXN0IG9mIGVpdGhl ciB0YWJsZXMgb3Igc2VxdWVuY2VzCisJCQkJCQkJCQkgKiBzcGVjaWZpZWQgaW4gdGhlIEVYQ0VQ VCBjbGF1c2UgKi8KIAlQYXJzZUxvYwlsb2NhdGlvbjsJCS8qIHRva2VuIGxvY2F0aW9uLCBvciAt MSBpZiB1bmtub3duICovCiB9IFB1YmxpY2F0aW9uQWxsT2JqU3BlYzsKIApkaWZmIC0tZ2l0IGEv c3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQgYi9zcmMvdGVzdC9yZWdy ZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dAppbmRleCAyOWU1NGIyMTRhMC4uYzFhNWZlYTJh OTYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0 CisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0CkBAIC00NTgs NyArNDU4LDcgQEAgRXhjbHVkZWQgZnJvbSBwdWJsaWNhdGlvbnM6CiBOdW1iZXIgb2YgcGFydGl0 aW9uczogMSAoVXNlIFxkKyB0byBsaXN0IHRoZW0uKQogCiBDUkVBVEUgUFVCTElDQVRJT04gdGVz dHB1YjkgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIChUQUJMRSB0ZXN0cHViX3BhcnQxKTsKLUVSUk9S OiAgY2Fubm90IHNwZWNpZnkgcmVsYXRpb24gInB1YmxpYy50ZXN0cHViX3BhcnQxIiBpbiB0aGUg cHVibGljYXRpb24gRVhDRVBUIGNsYXVzZQorRVJST1I6ICBjYW5ub3Qgc3BlY2lmeSAicHVibGlj LnRlc3RwdWJfcGFydDEiIGluIHRoZSBwdWJsaWNhdGlvbiBFWENFUFQgKFRBQkxFKSBjbGF1c2UK IERFVEFJTDogIFRoaXMgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIGluZGl2aWR1YWwg cGFydGl0aW9ucy4KIENSRUFURSBUQUJMRSB0YWJfbWFpbiAoYSBpbnQpIFBBUlRJVElPTiBCWSBS QU5HRShhKTsKIC0tIEF0dGFjaGluZyBhIHBhcnRpdGlvbiBpcyBub3QgYWxsb3dlZCBpZiB0aGUg cGFydGl0aW9uZWQgdGFibGUgYXBwZWFycyBpbiBhCkBAIC00NzMsNiArNDczLDcgQEAgRFJPUCBQ VUJMSUNBVElPTiB0ZXN0cHViODsKIC0tLSBUZXN0cyBmb3IgcHVibGljYXRpb25zIHdpdGggU0VR VUVOQ0VTCiBDUkVBVEUgU0VRVUVOQ0UgcmVncmVzc19wdWJfc2VxMDsKIENSRUFURSBTRVFVRU5D RSBwdWJfdGVzdC5yZWdyZXNzX3B1Yl9zZXExOworQ1JFQVRFIFNFUVVFTkNFIHJlZ3Jlc3NfcHVi X3NlcTI7CiAtLSBGT1IgQUxMIFNFUVVFTkNFUwogU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAn RVJST1InOwogQ1JFQVRFIFBVQkxJQ0FUSU9OIHJlZ3Jlc3NfcHViX2ZvcmFsbHNlcXVlbmNlczEg Rk9SIEFMTCBTRVFVRU5DRVM7CkBAIC01MzQsMTAgKzUzNSw3NyBAQCBTRUxFQ1QgcHVibmFtZSwg cHViYWxsdGFibGVzLCBwdWJhbGxzZXF1ZW5jZXMgRlJPTSBwZ19wdWJsaWNhdGlvbiBXSEVSRSBw dWJuYW1lCiAgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgdCAgICAgICAgICB8IHQgICAgICAg ICAgICAgfCB0ICAgICAgIHwgZiAgICAgICB8IGYgICAgICAgfCBmICAgICAgICAgfCBzdG9yZWQg ICAgICAgICAgICB8IGYgICAgICAgIHwgCiAoMSByb3cpCiAKLURST1AgU0VRVUVOQ0UgcmVncmVz c19wdWJfc2VxMCwgcHViX3Rlc3QucmVncmVzc19wdWJfc2VxMTsKKy0tIFRlc3QgQUxMIFNFUVVF TkNFUyB3aXRoIEVYQ0VQVCBjbGF1c2UKK1NFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9S JzsKK0NSRUFURSBQVUJMSUNBVElPTiByZWdyZXNzX3B1Yl9mb3JhbGxzZXF1ZW5jZXMzIEZPUiBB TEwgU0VRVUVOQ0VTIEVYQ0VQVCAoU0VRVUVOQ0UgcmVncmVzc19wdWJfc2VxMCwgcHViX3Rlc3Qu cmVncmVzc19wdWJfc2VxMSwgU0VRVUVOQ0UgcmVncmVzc19wdWJfc2VxMik7CitcZFJwKyByZWdy ZXNzX3B1Yl9mb3JhbGxzZXF1ZW5jZXMzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiByZWdyZXNzX3B1Yl9mb3JhbGxzZXF1ZW5j ZXMzCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5j ZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBHZW5lcmF0ZWQg Y29sdW1ucyB8IFZpYSByb290IHwgRGVzY3JpcHRpb24gCistLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0t LS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAg ICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBub25lICAg ICAgICAgICAgICB8IGYgICAgICAgIHwgCitFeGNlcHQgc2VxdWVuY2VzOgorICAgICJwdWJfdGVz dC5yZWdyZXNzX3B1Yl9zZXExIgorICAgICJwdWJsaWMucmVncmVzc19wdWJfc2VxMCIKKyAgICAi cHVibGljLnJlZ3Jlc3NfcHViX3NlcTIiCisKKy0tIENoZWNrIHRoYXQgdGhlIHNlcXVlbmNlIGRl c2NyaXB0aW9uIHNob3dzIHRoZSBwdWJsaWNhdGlvbnMgd2hlcmUgaXQgaXMgbGlzdGVkCistLSBp biB0aGUgRVhDRVBUIGNsYXVzZQorXGQrIHJlZ3Jlc3NfcHViX3NlcTAKKyAgICAgICAgICAgICAg ICAgICAgICBTZXF1ZW5jZSAicHVibGljLnJlZ3Jlc3NfcHViX3NlcTAiCisgIFR5cGUgIHwgU3Rh cnQgfCBNaW5pbXVtIHwgICAgICAgTWF4aW11bSAgICAgICB8IEluY3JlbWVudCB8IEN5Y2xlcz8g fCBDYWNoZSAKKy0tLS0tLS0tKy0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLQorIGJpZ2ludCB8ICAgICAxIHwgICAgICAg MSB8IDkyMjMzNzIwMzY4NTQ3NzU4MDcgfCAgICAgICAgIDEgfCBubyAgICAgIHwgICAgIDEKK0lu Y2x1ZGVkIGluIHB1YmxpY2F0aW9uczoKKyAgICAicmVncmVzc19wdWJfZm9yX2FsbHNlcXVlbmNl c19hbGx0YWJsZXMiCisgICAgInJlZ3Jlc3NfcHViX2ZvcmFsbHNlcXVlbmNlczEiCisgICAgInJl Z3Jlc3NfcHViX2ZvcmFsbHNlcXVlbmNlczIiCitFeGNsdWRlZCBmcm9tIHB1YmxpY2F0aW9uczoK KyAgICAicmVncmVzc19wdWJfZm9yYWxsc2VxdWVuY2VzMyIKKworLS0gVmVyaWZ5IHRoYXQgYW4g ZXhjbHVkZWQgc2VxdWVuY2UgcmVtYWlucyBleGNsdWRlZCBhZnRlciBiZWluZyBtb3ZlZCB0bwor LS0gYW5vdGhlciBzY2hlbWEuCitBTFRFUiBTRVFVRU5DRSByZWdyZXNzX3B1Yl9zZXEyIFNFVCBT Q0hFTUEgcHViX3Rlc3Q7CitcZFJwKyByZWdyZXNzX3B1Yl9mb3JhbGxzZXF1ZW5jZXMzCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlv biByZWdyZXNzX3B1Yl9mb3JhbGxzZXF1ZW5jZXMzCisgICAgICAgICAgT3duZXIgICAgICAgICAg IHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0 ZXMgfCBUcnVuY2F0ZXMgfCBHZW5lcmF0ZWQgY29sdW1ucyB8IFZpYSByb290IHwgRGVzY3JpcHRp b24gCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0t LS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91 c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQg ICAgICAgfCB0ICAgICAgICAgfCBub25lICAgICAgICAgICAgICB8IGYgICAgICAgIHwgCitFeGNl cHQgc2VxdWVuY2VzOgorICAgICJwdWJfdGVzdC5yZWdyZXNzX3B1Yl9zZXExIgorICAgICJwdWJf dGVzdC5yZWdyZXNzX3B1Yl9zZXEyIgorICAgICJwdWJsaWMucmVncmVzc19wdWJfc2VxMCIKKwor UkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKKy0tIGZhaWwgLSBzZXF1ZW5jZSBvYmplY3QgaXMg c3BlY2lmaWVkIGluIEVYQ0VQVCB0YWJsZSBsaXN0CitDUkVBVEUgUFVCTElDQVRJT04gcmVncmVz c19wdWJfZm9yYWxsc2VxdWVuY2VzNCBGT1IgQUxMIFRBQkxFUyBFWENFUFQgKFRBQkxFIHJlZ3Jl c3NfcHViX3NlcTApOworRVJST1I6ICBjYW5ub3Qgc3BlY2lmeSAicHVibGljLnJlZ3Jlc3NfcHVi X3NlcTAiIGluIHRoZSBwdWJsaWNhdGlvbiBFWENFUFQgKFRBQkxFKSBjbGF1c2UKK0RFVEFJTDog IFRoaXMgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHNlcXVlbmNlcy4KKy0tIGZhaWwg LSB0YWJsZSBvYmplY3QgaXMgc3BlY2lmaWVkIGluIEVYQ0VQVCBzZXF1ZW5jZSBsaXN0CitDUkVB VEUgVEFCTEUgdGFiX3NlcShhIGludCk7CitDUkVBVEUgUFVCTElDQVRJT04gcmVncmVzc19wdWJf Zm9yYWxsc2VxdWVuY2VzNCBGT1IgQUxMIFNFUVVFTkNFUyBFWENFUFQgKFNFUVVFTkNFIHRhYl9z ZXEpOworRVJST1I6ICBjYW5ub3Qgc3BlY2lmeSAicHVibGljLnRhYl9zZXEiIGluIHRoZSBwdWJs aWNhdGlvbiBFWENFUFQgKFNFUVVFTkNFKSBjbGF1c2UKK0RFVEFJTDogIFRoaXMgb3BlcmF0aW9u IGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHRhYmxlcy4KKy0tIFRlc3QgY29tYmluYXRpb24gb2YgQUxM IFNFUVVFTkNFUyBhbmQgQUxMIFRBQkxFUyB3aXRoIEVYQ0VQVCBjbGF1c2UKK1NFVCBjbGllbnRf bWluX21lc3NhZ2VzID0gJ0VSUk9SJzsKK0NSRUFURSBQVUJMSUNBVElPTiByZWdyZXNzX3B1Yl9m b3JfYWxsc2VxdWVuY2VzX2FsbHRhYmxlczEgRk9SIEFMTCBUQUJMRVMgRVhDRVBUIChUQUJMRSB0 ZXN0cHViX3RibDEpLCBBTEwgU0VRVUVOQ0VTIEVYQ0VQVCAoU0VRVUVOQ0UgcmVncmVzc19wdWJf c2VxMCk7CitcZFJwKyByZWdyZXNzX3B1Yl9mb3JfYWxsc2VxdWVuY2VzX2FsbHRhYmxlczEKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1YmxpY2F0aW9uIHJl Z3Jlc3NfcHViX2Zvcl9hbGxzZXF1ZW5jZXNfYWxsdGFibGVzMQorICAgICAgICAgIE93bmVyICAg ICAgICAgICB8IEFsbCB0YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMg fCBEZWxldGVzIHwgVHJ1bmNhdGVzIHwgR2VuZXJhdGVkIGNvbHVtbnMgfCBWaWEgcm9vdCB8IERl c2NyaXB0aW9uIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0t LS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0t LS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGlj YXRpb25fdXNlciB8IHQgICAgICAgICAgfCB0ICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAg ICAgfCB0ICAgICAgIHwgdCAgICAgICAgIHwgbm9uZSAgICAgICAgICAgICAgfCBmICAgICAgICB8 IAorRXhjZXB0IHRhYmxlczoKKyAgICAicHVibGljLnRlc3RwdWJfdGJsMSIKK0V4Y2VwdCBzZXF1 ZW5jZXM6CisgICAgInB1YmxpYy5yZWdyZXNzX3B1Yl9zZXEwIgorCitSRVNFVCBjbGllbnRfbWlu X21lc3NhZ2VzOworRFJPUCBTRVFVRU5DRSByZWdyZXNzX3B1Yl9zZXEwLCBwdWJfdGVzdC5yZWdy ZXNzX3B1Yl9zZXExLCBwdWJfdGVzdC5yZWdyZXNzX3B1Yl9zZXEyOwogRFJPUCBQVUJMSUNBVElP TiByZWdyZXNzX3B1Yl9mb3JhbGxzZXF1ZW5jZXMxOwogRFJPUCBQVUJMSUNBVElPTiByZWdyZXNz X3B1Yl9mb3JhbGxzZXF1ZW5jZXMyOworRFJPUCBQVUJMSUNBVElPTiByZWdyZXNzX3B1Yl9mb3Jh bGxzZXF1ZW5jZXMzOwogRFJPUCBQVUJMSUNBVElPTiByZWdyZXNzX3B1Yl9mb3JfYWxsc2VxdWVu Y2VzX2FsbHRhYmxlczsKK0RST1AgUFVCTElDQVRJT04gcmVncmVzc19wdWJfZm9yX2FsbHNlcXVl bmNlc19hbGx0YWJsZXMxOworRFJPUCBUQUJMRSB0YWJfc2VxOwogLS0gZmFpbCAtIFNwZWNpZnlp bmcgQUxMIFRBQkxFUyBtb3JlIHRoYW4gb25jZQogQ1JFQVRFIFBVQkxJQ0FUSU9OIHJlZ3Jlc3Nf cHViX2Zvcl9hbGxzZXF1ZW5jZXNfYWxsdGFibGVzIEZPUiBBTEwgU0VRVUVOQ0VTLCBBTEwgVEFC TEVTLCBBTEwgVEFCTEVTOwogRVJST1I6ICBpbnZhbGlkIHB1YmxpY2F0aW9uIG9iamVjdCBsaXN0 CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwgYi9zcmMv dGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwKaW5kZXggMDQxZTE0YTRkZTYuLjA0MjNh NzdkNWRlIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwK KysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsCkBAIC0yMjMsNiArMjIz LDcgQEAgRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViODsKIC0tLSBUZXN0cyBmb3IgcHVibGljYXRp b25zIHdpdGggU0VRVUVOQ0VTCiBDUkVBVEUgU0VRVUVOQ0UgcmVncmVzc19wdWJfc2VxMDsKIENS RUFURSBTRVFVRU5DRSBwdWJfdGVzdC5yZWdyZXNzX3B1Yl9zZXExOworQ1JFQVRFIFNFUVVFTkNF IHJlZ3Jlc3NfcHViX3NlcTI7CiAKIC0tIEZPUiBBTEwgU0VRVUVOQ0VTCiBTRVQgY2xpZW50X21p bl9tZXNzYWdlcyA9ICdFUlJPUic7CkBAIC0yNTMsMTAgKzI1NCw0MCBAQCBSRVNFVCBjbGllbnRf bWluX21lc3NhZ2VzOwogU0VMRUNUIHB1Ym5hbWUsIHB1YmFsbHRhYmxlcywgcHViYWxsc2VxdWVu Y2VzIEZST00gcGdfcHVibGljYXRpb24gV0hFUkUgcHVibmFtZSA9ICdyZWdyZXNzX3B1Yl9mb3Jf YWxsc2VxdWVuY2VzX2FsbHRhYmxlcyc7CiBcZFJwKyByZWdyZXNzX3B1Yl9mb3JfYWxsc2VxdWVu Y2VzX2FsbHRhYmxlcwogCi1EUk9QIFNFUVVFTkNFIHJlZ3Jlc3NfcHViX3NlcTAsIHB1Yl90ZXN0 LnJlZ3Jlc3NfcHViX3NlcTE7CistLSBUZXN0IEFMTCBTRVFVRU5DRVMgd2l0aCBFWENFUFQgY2xh dXNlCitTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CitDUkVBVEUgUFVCTElDQVRJ T04gcmVncmVzc19wdWJfZm9yYWxsc2VxdWVuY2VzMyBGT1IgQUxMIFNFUVVFTkNFUyBFWENFUFQg KFNFUVVFTkNFIHJlZ3Jlc3NfcHViX3NlcTAsIHB1Yl90ZXN0LnJlZ3Jlc3NfcHViX3NlcTEsIFNF UVVFTkNFIHJlZ3Jlc3NfcHViX3NlcTIpOworXGRScCsgcmVncmVzc19wdWJfZm9yYWxsc2VxdWVu Y2VzMworLS0gQ2hlY2sgdGhhdCB0aGUgc2VxdWVuY2UgZGVzY3JpcHRpb24gc2hvd3MgdGhlIHB1 YmxpY2F0aW9ucyB3aGVyZSBpdCBpcyBsaXN0ZWQKKy0tIGluIHRoZSBFWENFUFQgY2xhdXNlCitc ZCsgcmVncmVzc19wdWJfc2VxMAorCistLSBWZXJpZnkgdGhhdCBhbiBleGNsdWRlZCBzZXF1ZW5j ZSByZW1haW5zIGV4Y2x1ZGVkIGFmdGVyIGJlaW5nIG1vdmVkIHRvCistLSBhbm90aGVyIHNjaGVt YS4KK0FMVEVSIFNFUVVFTkNFIHJlZ3Jlc3NfcHViX3NlcTIgU0VUIFNDSEVNQSBwdWJfdGVzdDsK K1xkUnArIHJlZ3Jlc3NfcHViX2ZvcmFsbHNlcXVlbmNlczMKK1JFU0VUIGNsaWVudF9taW5fbWVz c2FnZXM7CisKKy0tIGZhaWwgLSBzZXF1ZW5jZSBvYmplY3QgaXMgc3BlY2lmaWVkIGluIEVYQ0VQ VCB0YWJsZSBsaXN0CitDUkVBVEUgUFVCTElDQVRJT04gcmVncmVzc19wdWJfZm9yYWxsc2VxdWVu Y2VzNCBGT1IgQUxMIFRBQkxFUyBFWENFUFQgKFRBQkxFIHJlZ3Jlc3NfcHViX3NlcTApOworCist LSBmYWlsIC0gdGFibGUgb2JqZWN0IGlzIHNwZWNpZmllZCBpbiBFWENFUFQgc2VxdWVuY2UgbGlz dAorQ1JFQVRFIFRBQkxFIHRhYl9zZXEoYSBpbnQpOworQ1JFQVRFIFBVQkxJQ0FUSU9OIHJlZ3Jl c3NfcHViX2ZvcmFsbHNlcXVlbmNlczQgRk9SIEFMTCBTRVFVRU5DRVMgRVhDRVBUIChTRVFVRU5D RSB0YWJfc2VxKTsKKworLS0gVGVzdCBjb21iaW5hdGlvbiBvZiBBTEwgU0VRVUVOQ0VTIGFuZCBB TEwgVEFCTEVTIHdpdGggRVhDRVBUIGNsYXVzZQorU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAn RVJST1InOworQ1JFQVRFIFBVQkxJQ0FUSU9OIHJlZ3Jlc3NfcHViX2Zvcl9hbGxzZXF1ZW5jZXNf YWxsdGFibGVzMSBGT1IgQUxMIFRBQkxFUyBFWENFUFQgKFRBQkxFIHRlc3RwdWJfdGJsMSksIEFM TCBTRVFVRU5DRVMgRVhDRVBUIChTRVFVRU5DRSByZWdyZXNzX3B1Yl9zZXEwKTsKK1xkUnArIHJl Z3Jlc3NfcHViX2Zvcl9hbGxzZXF1ZW5jZXNfYWxsdGFibGVzMQorUkVTRVQgY2xpZW50X21pbl9t ZXNzYWdlczsKKworRFJPUCBTRVFVRU5DRSByZWdyZXNzX3B1Yl9zZXEwLCBwdWJfdGVzdC5yZWdy ZXNzX3B1Yl9zZXExLCBwdWJfdGVzdC5yZWdyZXNzX3B1Yl9zZXEyOwogRFJPUCBQVUJMSUNBVElP TiByZWdyZXNzX3B1Yl9mb3JhbGxzZXF1ZW5jZXMxOwogRFJPUCBQVUJMSUNBVElPTiByZWdyZXNz X3B1Yl9mb3JhbGxzZXF1ZW5jZXMyOworRFJPUCBQVUJMSUNBVElPTiByZWdyZXNzX3B1Yl9mb3Jh bGxzZXF1ZW5jZXMzOwogRFJPUCBQVUJMSUNBVElPTiByZWdyZXNzX3B1Yl9mb3JfYWxsc2VxdWVu Y2VzX2FsbHRhYmxlczsKK0RST1AgUFVCTElDQVRJT04gcmVncmVzc19wdWJfZm9yX2FsbHNlcXVl bmNlc19hbGx0YWJsZXMxOworRFJPUCBUQUJMRSB0YWJfc2VxOwogCiAtLSBmYWlsIC0gU3BlY2lm eWluZyBBTEwgVEFCTEVTIG1vcmUgdGhhbiBvbmNlCiBDUkVBVEUgUFVCTElDQVRJT04gcmVncmVz c19wdWJfZm9yX2FsbHNlcXVlbmNlc19hbGx0YWJsZXMgRk9SIEFMTCBTRVFVRU5DRVMsIEFMTCBU QUJMRVMsIEFMTCBUQUJMRVM7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8w MzdfZXhjZXB0LnBsIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM3X2V4Y2VwdC5wbAppbmRl eCA4YzU4ZDI4MmVlZS4uYjU1OTA3NmE0ZDEgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlw dGlvbi90LzAzN19leGNlcHQucGwKKysrIGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM3X2V4 Y2VwdC5wbApAQCAtMjgyLDYgKzI4Miw4MSBAQCAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywgJ0RST1AgU1VCU0NSSVBUSU9OIHRhcF9zdWInKTsKICRub2RlX3B1Ymxpc2hl ci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdEUk9QIFBVQkxJQ0FUSU9OIHRhcF9wdWIxJyk7CiAk bm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLCAnRFJPUCBQVUJMSUNBVElPTiB0 YXBfcHViMicpOwogCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09CisjIEVYQ0VQVCBjbGF1c2UgdGVzdCBjYXNlcyBmb3Igc2VxdWVuY2VzCisjID09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ciskbm9kZV9wdWJsaXNoZXItPnNh ZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcSAoCisJQ1JFQVRFIFRBQkxFIHNlcV90ZXN0ICh2IEJJ R0lOVCk7CisJQ1JFQVRFIFNFUVVFTkNFIHNlcTE7CisJQ1JFQVRFIFNFUVVFTkNFIHNlcTI7CisJ SU5TRVJUIElOVE8gc2VxX3Rlc3QgU0VMRUNUIG5leHR2YWwoJ3NlcTEnKSBGUk9NIGdlbmVyYXRl X3NlcmllcygxLDEwMCk7CisJSU5TRVJUIElOVE8gc2VxX3Rlc3QgU0VMRUNUIG5leHR2YWwoJ3Nl cTInKSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwMCk7CisJQ1JFQVRFIFBVQkxJQ0FUSU9OIHRh cF9wdWIxIEZPUiBBTEwgU0VRVUVOQ0VTIEVYQ0VQVCAoU0VRVUVOQ0Ugc2VxMSk7CispKTsKKyRu b2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgKKwkncG9zdGdyZXMnLCBxcSgKKwlDUkVBVEUgU0VR VUVOQ0Ugc2VxMTsKKwlDUkVBVEUgU0VRVUVOQ0Ugc2VxMjsKKwlDUkVBVEUgU1VCU0NSSVBUSU9O IHRhcF9zdWIgQ09OTkVDVElPTiAnJHB1Ymxpc2hlcl9jb25uc3RyJyBQVUJMSUNBVElPTiB0YXBf cHViMTsKKykpOworCisjIFdhaXQgZm9yIGluaXRpYWwgc3luYyB0byBmaW5pc2gKK215ICRzeW5j ZWRfcXVlcnkgPQorICAiU0VMRUNUIGNvdW50KDEpID0gMCBGUk9NIHBnX3N1YnNjcmlwdGlvbl9y ZWwgV0hFUkUgc3JzdWJzdGF0ZSBOT1QgSU4gKCdyJyk7IjsKKyRub2RlX3N1YnNjcmliZXItPnBv bGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywgJHN5bmNlZF9xdWVyeSkKKyAgb3IgZGllICJUaW1l ZCBvdXQgd2hpbGUgd2FpdGluZyBmb3Igc3Vic2NyaWJlciB0byBzeW5jaHJvbml6ZSBkYXRhIjsK KworIyBDaGVjayB0aGUgaW5pdGlhbCBkYXRhIG9uIHN1YnNjcmliZXIKKyRyZXN1bHQgPSAkbm9k ZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIGxhc3RfdmFsdWUs IGlzX2NhbGxlZCBGUk9NIHNlcTEiKTsKK2lzKCRyZXN1bHQsICcxfGYnLCAnc2VxdWVuY2VzIGlu IEVYQ0VQVCBsaXN0IGlzIGV4Y2x1ZGVkJyk7CisKKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIGxhc3RfdmFsdWUsIGlzX2NhbGxlZCBG Uk9NIHNlcTIiKTsKK2lzKCRyZXN1bHQsICcxMDB8dCcsICdpbml0aWFsIHRlc3QgZGF0YSByZXBs aWNhdGVkIGZvciBzZXEyJyk7CisKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT0KKyMgVGVzdCB3aGVuIGEgc3Vic2NyaXB0aW9uIGlzIHN1YnNjcmliaW5nIHRv IG11bHRpcGxlIHB1YmxpY2F0aW9ucworIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PQorJG5vZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoCisJJ3Bvc3RncmVzJywg cXEoCisJSU5TRVJUIElOVE8gc2VxX3Rlc3QgU0VMRUNUIG5leHR2YWwoJ3NlcTEnKSBGUk9NIGdl bmVyYXRlX3NlcmllcygxLDEwMCk7CisJSU5TRVJUIElOVE8gc2VxX3Rlc3QgU0VMRUNUIG5leHR2 YWwoJ3NlcTInKSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwMCk7CisJQ1JFQVRFIFBVQkxJQ0FU SU9OIHRhcF9wdWIyIEZPUiBBTEwgU0VRVUVOQ0VTIEVYQ0VQVCAoU0VRVUVOQ0Ugc2VxMik7Cisp KTsKKworIyBTdWJzY3JpYmUgdG8gbXVsdGlwbGUgcHVibGljYXRpb25zIHdpdGggZGlmZmVyZW50 IEVYQ0VQVCBzZXF1ZW5jZSBsaXN0cworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKAorCSdw b3N0Z3JlcycsIHFxKAorCUFMVEVSIFNVQlNDUklQVElPTiB0YXBfc3ViIFNFVCBQVUJMSUNBVElP TiB0YXBfcHViMSwgdGFwX3B1YjI7CisJQUxURVIgU1VCU0NSSVBUSU9OIHRhcF9zdWIgUkVGUkVT SCBTRVFVRU5DRVM7CispKTsKKyRzeW5jZWRfcXVlcnkgPQorICAiU0VMRUNUIGNvdW50KDEpID0g MCBGUk9NIHBnX3N1YnNjcmlwdGlvbl9yZWwgV0hFUkUgc3JzdWJzdGF0ZSBOT1QgSU4gKCdyJyk7 IjsKKyRub2RlX3N1YnNjcmliZXItPnBvbGxfcXVlcnlfdW50aWwoJ3Bvc3RncmVzJywgJHN5bmNl ZF9xdWVyeSkKKyAgb3IgZGllICJUaW1lZCBvdXQgd2hpbGUgd2FpdGluZyBmb3Igc3Vic2NyaWJl ciB0byBzeW5jaHJvbml6ZSBkYXRhIjsKKworIyBzZXExIGlzIGV4Y2x1ZGVkIGluIHRhcF9wdWIx IGJ1dCBpbmNsdWRlZCBpbiB0YXBfcHViMiwgc28gb3ZlcmFsbCB0aGUKKyMgc3Vic2NyaXB0aW9u IHRyZWF0cyBpdCBhcyBpbmNsdWRlZC4KKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZl X3BzcWwoJ3Bvc3RncmVzJywKKwkiU0VMRUNUIGxhc3RfdmFsdWUsIGlzX2NhbGxlZCBGUk9NIHNl cTEiKTsKK2lzKCRyZXN1bHQsICcyMDB8dCcsCisJJ2NoZWNrIHJlcGxpY2F0aW9uIG9mIGEgc2Vx dWVuY2UgaW4gdGhlIEVYQ0VQVCBjbGF1c2Ugb2Ygb25lIHB1YmxpY2F0aW9uIGJ1dCBpbmNsdWRl ZCBieSBhbm90aGVyJworKTsKKworIyBzZXEyIGlzIGV4Y2x1ZGVkIGluIHRhcF9wdWIyIGJ1dCBp bmNsdWRlZCBpbiB0YXBfcHViMSwgc28gb3ZlcmFsbCB0aGUKKyMgc3Vic2NyaXB0aW9uIHRyZWF0 cyBpdCBhcyBpbmNsdWRlZC4KKyRyZXN1bHQgPSAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwo J3Bvc3RncmVzJywKKwkiU0VMRUNUIGxhc3RfdmFsdWUsIGlzX2NhbGxlZCBGUk9NIHNlcTIiKTsK K2lzKCRyZXN1bHQsICcyMDB8dCcsCisJJ2NoZWNrIHJlcGxpY2F0aW9uIG9mIGEgc2VxdWVuY2Ug aW4gdGhlIEVYQ0VQVCBjbGF1c2Ugb2Ygb25lIHB1YmxpY2F0aW9uIGJ1dCBpbmNsdWRlZCBieSBh bm90aGVyJworKTsKKworJG5vZGVfc3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICdE Uk9QIFNVQlNDUklQVElPTiB0YXBfc3ViJyk7Ciskbm9kZV9wdWJsaXNoZXItPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCAnRFJPUCBQVUJMSUNBVElPTiB0YXBfcHViMScpOworJG5vZGVfcHVibGlzaGVy LT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgJ0RST1AgUFVCTElDQVRJT04gdGFwX3B1YjInKTsKKwog JG5vZGVfcHVibGlzaGVyLT5zdG9wKCdmYXN0Jyk7CiAKIGRvbmVfdGVzdGluZygpOwpkaWZmIC0t Z2l0IGEvc3JjL3Rvb2xzL3BnaW5kZW50L3R5cGVkZWZzLmxpc3QgYi9zcmMvdG9vbHMvcGdpbmRl bnQvdHlwZWRlZnMubGlzdAppbmRleCBjNWRiNmNhNjcwNS4uYjA5ZjcxZTc5MGEgMTAwNjQ0Ci0t LSBhL3NyYy90b29scy9wZ2luZGVudC90eXBlZGVmcy5saXN0CisrKyBiL3NyYy90b29scy9wZ2lu ZGVudC90eXBlZGVmcy5saXN0CkBAIC0yNDcyLDggKzI0NzIsOCBAQCBQdWJsaWNhdGlvbk9ialNw ZWNUeXBlCiBQdWJsaWNhdGlvblBhcnRPcHQKIFB1YmxpY2F0aW9uUmVsSW5mbwogUHVibGljYXRp b25SZWxLaW5kCitQdWJsaWNhdGlvblJlbGF0aW9uCiBQdWJsaWNhdGlvblNjaGVtYUluZm8KLVB1 YmxpY2F0aW9uVGFibGUKIFB1Ymxpc2hHZW5jb2xzVHlwZQogUHVsbEZpbHRlcgogUHVsbEZpbHRl ck9wcwotLSAKMi4zNC4xCgo= --000000000000749b130655100c0d Content-Type: application/octet-stream; name="v13-0002-Support-EXCEPT-for-ALL-SEQUENCES-in-ALTER-PUBLIC.patch" Content-Disposition: attachment; filename="v13-0002-Support-EXCEPT-for-ALL-SEQUENCES-in-ALTER-PUBLIC.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mqt971hl1 RnJvbSA0OWMzM2I4OTYxYWFmNWNkYTRiOTkzYjczMGU1NjgwYzc2M2VmYTU4IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBTaGxvayBLeWFsIDxzaGxvay5reWFsLm9zc0BnbWFpbC5jb20+ CkRhdGU6IFRodSwgMjUgSnVuIDIwMjYgMTM6Mzc6MDIgKzA1MzAKU3ViamVjdDogW1BBVENIIHYx MyAyLzJdIFN1cHBvcnQgRVhDRVBUIGZvciBBTEwgU0VRVUVOQ0VTIGluIEFMVEVSIFBVQkxJQ0FU SU9OCgpFeHRlbmQgQUxURVIgUFVCTElDQVRJT04gdG8gc3VwcG9ydCBhbiBFWENFUFQgY2xhdXNl IHdoZW4gdXNpbmcKQUxMIFNFUVVFTkNFUywgYWxsb3dpbmcgc3BlY2lmaWMgc2VxdWVuY2VzIHRv IGJlIGV4Y2x1ZGVkIGZyb20gdGhlCnB1YmxpY2F0aW9uLgoKSWYgdGhlIEVYQ0VQVCBjbGF1c2Ug aXMgc3BlY2lmaWVkLCB0aGUgZXhpc3RpbmcgZXhjbHVzaW9uIGxpc3QgZm9yIHRoZQpwdWJsaWNh dGlvbiBpcyByZXBsYWNlZCB3aXRoIHRoZSBwcm92aWRlZCBzZXF1ZW5jZXMuIElmIHRoZSBFWENF UFQKY2xhdXNlIGlzIG9taXR0ZWQsIGFueSBleGlzdGluZyBleGNsdXNpb25zIGZvciBzZXF1ZW5j ZXMgYXJlIGNsZWFyZWQuCgpFeGFtcGxlOgoKICBBTFRFUiBQVUJMSUNBVElPTiBwdWIxIFNFVCBB TEwgU0VRVUVOQ0VTOwoKVGhpcyBjbGVhcnMgYW55IGV4aXN0aW5nIHNlcXVlbmNlIGV4Y2x1c2lv bnMgZm9yIHRoZSBwdWJsaWNhdGlvbi4KCiAgQUxURVIgUFVCTElDQVRJT04gcHViMSBTRVQgQUxM IFNFUVVFTkNFUyBFWENFUFQgKFNFUVVFTkNFIHMxLCBzMik7CgpUaGlzIHNldHMgdGhlIGV4Y2x1 c2lvbiBsaXN0IHRvIHRoZSBzcGVjaWZpZWQgc2VxdWVuY2VzLgotLS0KIGRvYy9zcmMvc2dtbC9y ZWYvYWx0ZXJfcHVibGljYXRpb24uc2dtbCAgIHwgIDUxICsrKy0KIHNyYy9iYWNrZW5kL2NhdGFs b2cvcGdfcHVibGljYXRpb24uYyAgICAgIHwgIDM2ICsrLQogc3JjL2JhY2tlbmQvY29tbWFuZHMv cHVibGljYXRpb25jbWRzLmMgICAgfCAyNjggKysrKysrKysrKysrLS0tLS0tLS0tLQogc3JjL2Jp bi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jICAgICAgICAgICAgfCAgMTQgKysKIHNyYy9pbmNsdWRl L2NhdGFsb2cvcGdfcHVibGljYXRpb24uaCAgICAgIHwgICA2ICstCiBzcmMvdGVzdC9yZWdyZXNz L2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dCB8ICAxNiArKwogc3JjL3Rlc3QvcmVncmVzcy9zcWwv cHVibGljYXRpb24uc3FsICAgICAgfCAgIDYgKwogNyBmaWxlcyBjaGFuZ2VkLCAyNDUgaW5zZXJ0 aW9ucygrKSwgMTUyIGRlbGV0aW9ucygtKQoKZGlmZiAtLWdpdCBhL2RvYy9zcmMvc2dtbC9yZWYv YWx0ZXJfcHVibGljYXRpb24uc2dtbCBiL2RvYy9zcmMvc2dtbC9yZWYvYWx0ZXJfcHVibGljYXRp b24uc2dtbAppbmRleCA1MjExNGExNmEzOS4uZDgyZmYzMDc5ZGIgMTAwNjQ0Ci0tLSBhL2RvYy9z cmMvc2dtbC9yZWYvYWx0ZXJfcHVibGljYXRpb24uc2dtbAorKysgYi9kb2Mvc3JjL3NnbWwvcmVm L2FsdGVyX3B1YmxpY2F0aW9uLnNnbWwKQEAgLTM2LDcgKzM2LDcgQEAgQUxURVIgUFVCTElDQVRJ T04gPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBSRU5B TUUgVE8gPHIKIDxwaHJhc2U+YW5kIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wdWJs aWNhdGlvbl9hbGxfb2JqZWN0PC9yZXBsYWNlYWJsZT4gaXMgb25lIG9mOjwvcGhyYXNlPgogCiAg ICAgQUxMIFRBQkxFUyBbIEVYQ0VQVCAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5l eGNlcHRfdGFibGVfb2JqZWN0PC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gKSBdCi0gICAgQUxMIFNF UVVFTkNFUworICAgIEFMTCBTRVFVRU5DRVMgWyBFWENFUFQgKCA8cmVwbGFjZWFibGUgY2xhc3M9 InBhcmFtZXRlciI+ZXhjZXB0X3NlcXVlbmNlX29iamVjdDwvcmVwbGFjZWFibGU+IFssIC4uLiBd ICkgXQogCiA8cGhyYXNlPmFuZCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cHVibGlj YXRpb25fZHJvcF9vYmplY3Q8L3JlcGxhY2VhYmxlPiBpcyBvbmUgb2Y6PC9waHJhc2U+CiAKQEAg LTU0LDYgKzU0LDEwIEBAIEFMVEVSIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gUkVOQU1FIFRPIDxyCiA8cGhyYXNlPmFuZCA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfb2JqZWN0PC9yZXBsYWNlYWJsZT4gaXM6 PC9waHJhc2U+CiAKICAgIFsgT05MWSBdIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj50 YWJsZV9uYW1lPC9yZXBsYWNlYWJsZT4gWyAqIF0KKworPHBocmFzZT5hbmQgPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPmV4Y2VwdF9zZXF1ZW5jZV9vYmplY3Q8L3JlcGxhY2VhYmxlPiBp czo8L3BocmFzZT4KKworICAgIFNFUVVFTkNFIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVy Ij5zZXF1ZW5jZV9uYW1lPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0KIDwvc3lub3BzaXM+CiAgPC9y ZWZzeW5vcHNpc2Rpdj4KIApAQCAtNzMsOSArNzcsOSBAQCBBTFRFUiBQVUJMSUNBVElPTiA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IFJFTkFNRSBUTyA8 cgogCiAgIDxwYXJhPgogICAgVGhlIHRoaXJkIHZhcmlhbnQgZWl0aGVyIG1vZGlmaWVzIHRoZSBp bmNsdWRlZCB0YWJsZXMvc2NoZW1hcwotICAgb3IgbWFya3MgdGhlIHB1YmxpY2F0aW9uIGFzIDxs aXRlcmFsPkZPUiBBTEwgU0VRVUVOQ0VTPC9saXRlcmFsPiBvcgotICAgPGxpdGVyYWw+Rk9SIEFM TCBUQUJMRVM8L2xpdGVyYWw+LCBvcHRpb25hbGx5IHVzaW5nCi0gICA8bGl0ZXJhbD5FWENFUFQ8 L2xpdGVyYWw+IHRvIGV4Y2x1ZGUgc3BlY2lmaWMgdGFibGVzLiBUaGUKKyAgIG9yIG1hcmtzIHRo ZSBwdWJsaWNhdGlvbiBhcyA8bGl0ZXJhbD5GT1IgQUxMIFRBQkxFUzwvbGl0ZXJhbD4gb3IKKyAg IDxsaXRlcmFsPkZPUiBBTEwgU0VRVUVOQ0VTPC9saXRlcmFsPiwgb3B0aW9uYWxseSB1c2luZwor ICAgPGxpdGVyYWw+RVhDRVBUPC9saXRlcmFsPiB0byBleGNsdWRlIHNwZWNpZmljIHRhYmxlcyBv ciBzZXF1ZW5jZXMuIFRoZQogICAgPGxpdGVyYWw+U0VUIEFMTCBUQUJMRVM8L2xpdGVyYWw+IGNs YXVzZSBjYW4gdHJhbnNmb3JtIGFuIGVtcHR5IHB1YmxpY2F0aW9uLAogICAgb3Igb25lIGRlZmlu ZWQgZm9yIDxsaXRlcmFsPkFMTCBTRVFVRU5DRVM8L2xpdGVyYWw+IChvciBib3RoCiAgICA8bGl0 ZXJhbD5BTEwgVEFCTEVTPC9saXRlcmFsPiBhbmQgPGxpdGVyYWw+QUxMIFNFUVVFTkNFUzwvbGl0 ZXJhbD4pLCBpbnRvCkBAIC04NiwxMSArOTAsMTUgQEAgQUxURVIgUFVCTElDQVRJT04gPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBSRU5BTUUgVE8gPHIK ICAgIHB1YmxpY2F0aW9uIGRlZmluZWQgZm9yIDxsaXRlcmFsPkFMTCBTRVFVRU5DRVM8L2xpdGVy YWw+LiBJbiBhZGRpdGlvbiwKICAgIDxsaXRlcmFsPlNFVCBBTEwgVEFCTEVTPC9saXRlcmFsPiBj YW4gYmUgdXNlZCB0byB1cGRhdGUgdGhlIHRhYmxlcyBzcGVjaWZpZWQKICAgIGluIHRoZSA8bGl0 ZXJhbD5FWENFUFQ8L2xpdGVyYWw+IGNsYXVzZSBvZiBhCi0gICA8bGl0ZXJhbD5GT1IgQUxMIFRB QkxFUzwvbGl0ZXJhbD4gcHVibGljYXRpb24uIElmIDxsaXRlcmFsPkVYQ0VQVDwvbGl0ZXJhbD4K LSAgIGlzIHNwZWNpZmllZCB3aXRoIGEgbGlzdCBvZiB0YWJsZXMsIHRoZSBleGlzdGluZyBleGNs dXNpb24gbGlzdCBpcyByZXBsYWNlZAotICAgd2l0aCB0aGUgc3BlY2lmaWVkIHRhYmxlcy4gSWYg PGxpdGVyYWw+RVhDRVBUPC9saXRlcmFsPiBpcyBvbWl0dGVkLCB0aGUKLSAgIGV4aXN0aW5nIGV4 Y2x1c2lvbiBsaXN0IGlzIGNsZWFyZWQuIFRoZSA8bGl0ZXJhbD5TRVQ8L2xpdGVyYWw+IGNsYXVz ZSwgd2hlbgotICAgdXNlZCB3aXRoIGEgcHVibGljYXRpb24gZGVmaW5lZCB3aXRoIDxsaXRlcmFs PkZPUiBUQUJMRTwvbGl0ZXJhbD4gb3IKKyAgIDxsaXRlcmFsPkZPUiBBTEwgVEFCTEVTPC9saXRl cmFsPiBwdWJsaWNhdGlvbiBhbmQKKyAgIDxsaXRlcmFsPlNFVCBBTEwgU0VRVUVOQ0VTPC9saXRl cmFsPiBjYW4gYmUgdXNlZCB0byB1cGRhdGUgdGhlIHNlcXVlbmNlcworICAgc3BlY2lmaWVkIGlu IHRoZSA8bGl0ZXJhbD5FWENFUFQ8L2xpdGVyYWw+IGNsYXVzZSBvZiBhCisgICA8bGl0ZXJhbD5G T1IgQUxMIFNFUVVFTkNFUzwvbGl0ZXJhbD4gcHVibGljYXRpb24uIElmCisgICA8bGl0ZXJhbD5F WENFUFQ8L2xpdGVyYWw+IGlzIHNwZWNpZmllZCB3aXRoIGEgbGlzdCBvZiB0YWJsZXMgb3Igc2Vx dWVuY2VzLAorICAgdGhlIGV4aXN0aW5nIGV4Y2x1c2lvbiBsaXN0IGlzIHJlcGxhY2VkIHdpdGgg dGhlIHNwZWNpZmllZCB0YWJsZXMgb3IKKyAgIHNlcXVlbmNlcy4gSWYgPGxpdGVyYWw+RVhDRVBU PC9saXRlcmFsPiBpcyBvbWl0dGVkLCB0aGUgZXhpc3RpbmcgZXhjbHVzaW9uCisgICBsaXN0IGlz IGNsZWFyZWQuIFRoZSA8bGl0ZXJhbD5TRVQ8L2xpdGVyYWw+IGNsYXVzZSwgd2hlbiB1c2VkIHdp dGggYQorICAgcHVibGljYXRpb24gZGVmaW5lZCB3aXRoIDxsaXRlcmFsPkZPUiBUQUJMRTwvbGl0 ZXJhbD4gb3IKICAgIDxsaXRlcmFsPkZPUiBUQUJMRVMgSU4gU0NIRU1BPC9saXRlcmFsPiwgcmVw bGFjZXMgdGhlIGxpc3Qgb2YgdGFibGVzL3NjaGVtYXMKICAgIGluIHRoZSBwdWJsaWNhdGlvbiB3 aXRoIHRoZSBzcGVjaWZpZWQgbGlzdDsgdGhlIGV4aXN0aW5nIHRhYmxlcyBvciBzY2hlbWFzCiAg ICB0aGF0IHdlcmUgcHJlc2VudCBpbiB0aGUgcHVibGljYXRpb24gd2lsbCBiZSByZW1vdmVkLgpA QCAtMjczLDEwICsyODEsMzEgQEAgQUxURVIgUFVCTElDQVRJT04gbXlwdWJsaWNhdGlvbiBTRVQg QUxMIFRBQkxFUyBFWENFUFQgKFRBQkxFIHVzZXJzLCBkZXBhcnRtZW50cykKIDwvcHJvZ3JhbWxp c3Rpbmc+PC9wYXJhPgogCiAgIDxwYXJhPgotICAgUmVzZXQgdGhlIHB1YmxpY2F0aW9uIHRvIGJl IGEgPGxpdGVyYWw+Rk9SIEFMTCBUQUJMRVM8L2xpdGVyYWw+IHB1YmxpY2F0aW9uCi0gICB3aXRo IG5vIGV4Y2x1ZGVkIHRhYmxlczoKKyAgIFJlc2V0IHRoZSBwdWJsaWNhdGlvbiB0byBiZSA8bGl0 ZXJhbD5GT1IgQUxMIFRBQkxFUzwvbGl0ZXJhbD4gd2l0aCBubworICAgZXhjbHVzaW9uczoKIDxw cm9ncmFtbGlzdGluZz4KIEFMVEVSIFBVQkxJQ0FUSU9OIG15cHVibGljYXRpb24gU0VUIEFMTCBU QUJMRVM7Cis8L3Byb2dyYW1saXN0aW5nPjwvcGFyYT4KKworICA8cGFyYT4KKyAgIFJlc2V0IHRo ZSBwdWJsaWNhdGlvbiB0byBiZSA8bGl0ZXJhbD5BTEwgU0VRVUVOQ0VTPC9saXRlcmFsPiB3aXRo IG5vCisgICBleGNsdXNpb25zOgorPHByb2dyYW1saXN0aW5nPgorQUxURVIgUFVCTElDQVRJT04g bXlwdWJsaWNhdGlvbiBTRVQgQUxMIFNFUVVFTkNFUzsKKzwvcHJvZ3JhbWxpc3Rpbmc+PC9wYXJh PgorCisgIDxwYXJhPgorICAgUmVwbGFjZSB0aGUgc2VxdWVuY2UgbGlzdCBpbiB0aGUgcHVibGlj YXRpb24ncyA8bGl0ZXJhbD5FWENFUFQ8L2xpdGVyYWw+CisgICBjbGF1c2U6Cis8cHJvZ3JhbWxp c3Rpbmc+CitBTFRFUiBQVUJMSUNBVElPTiBteXB1YmxpY2F0aW9uIFNFVCBBTEwgU0VRVUVOQ0VT IEVYQ0VQVCAoU0VRVUVOQ0Ugc2VxMSwgc2VxMik7Cis8L3Byb2dyYW1saXN0aW5nPjwvcGFyYT4K KworICA8cGFyYT4KKyAgIFJlcGxhY2UgdGhlIHRhYmxlIGFuZCBzZXF1ZW5jZSBsaXN0IGluIHRo ZSBwdWJsaWNhdGlvbidzCisgICA8bGl0ZXJhbD5FWENFUFQ8L2xpdGVyYWw+IGNsYXVzZXM6Cis8 cHJvZ3JhbWxpc3Rpbmc+CitBTFRFUiBQVUJMSUNBVElPTiBteXB1YmxpY2F0aW9uIFNFVCBBTEwg VEFCTEVTIEVYQ0VQVCAoVEFCTEUgdXNlcnMsIGRlcGFydG1lbnRzKSwgQUxMIFNFUVVFTkNFUyBF WENFUFQgKFNFUVVFTkNFIHNlcTEsIHNlcTIpOwogPC9wcm9ncmFtbGlzdGluZz48L3BhcmE+CiAK ICAgPHBhcmE+CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9u LmMgYi9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmMKaW5kZXggZjAzYjg1ZmEz NGIuLjM0YThjZTRkNzI4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9jYXRhbG9nL3BnX3B1Ymxp Y2F0aW9uLmMKKysrIGIvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jCkBAIC05 NDYsNyArOTQ2LDcgQEAgR2V0UmVsYXRpb25FeGNsdWRlZFB1YmxpY2F0aW9ucyhPaWQgcmVsaWQp CiAgKi8KIHN0YXRpYyBMaXN0ICoKIGdldF9wdWJsaWNhdGlvbl9yZWxhdGlvbnMoT2lkIHB1Ymlk LCBQdWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQsCi0JCQkJCQkgIGJvb2wgZXhjZXB0X2Zs YWcpCisJCQkJCQkgIGJvb2wgZXhjZXB0X2ZsYWcsIGNoYXIgcHVicmVsa2luZCkKIHsKIAlMaXN0 CSAgICpyZXN1bHQ7CiAJUmVsYXRpb24JcHVicmVsc3JlbDsKQEAgLTk1NCw2ICs5NTQsOCBAQCBn ZXRfcHVibGljYXRpb25fcmVsYXRpb25zKE9pZCBwdWJpZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1 Yl9wYXJ0b3B0LAogCVN5c1NjYW5EZXNjIHNjYW47CiAJSGVhcFR1cGxlCXR1cDsKIAorCUFzc2Vy dChwdWJyZWxraW5kID09IFJFTEtJTkRfUkVMQVRJT04gfHwgcHVicmVsa2luZCA9PSBSRUxLSU5E X1NFUVVFTkNFKTsKKwogCS8qIEZpbmQgYWxsIHJlbGF0aW9ucyBhc3NvY2lhdGVkIHdpdGggdGhl IHB1YmxpY2F0aW9uLiAqLwogCXB1YnJlbHNyZWwgPSB0YWJsZV9vcGVuKFB1YmxpY2F0aW9uUmVs UmVsYXRpb25JZCwgQWNjZXNzU2hhcmVMb2NrKTsKIApAQCAtOTczLDggKzk3NSwxNSBAQCBnZXRf cHVibGljYXRpb25fcmVsYXRpb25zKE9pZCBwdWJpZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9w YXJ0b3B0LAogCQlwdWJyZWwgPSAoRm9ybV9wZ19wdWJsaWNhdGlvbl9yZWwpIEdFVFNUUlVDVCh0 dXApOwogCiAJCWlmIChleGNlcHRfZmxhZyA9PSBwdWJyZWwtPnByZXhjZXB0KQotCQkJcmVzdWx0 ID0gR2V0UHViUGFydGl0aW9uT3B0aW9uUmVsYXRpb25zKHJlc3VsdCwgcHViX3BhcnRvcHQsCi0J CQkJCQkJCQkJCQkJcHVicmVsLT5wcnJlbGlkKTsKKwkJeworCQkJY2hhcgkJcmVsa2luZCA9IGdl dF9yZWxfcmVsa2luZChwdWJyZWwtPnBycmVsaWQpOworCisJCQlpZiAoKHB1YnJlbGtpbmQgPT0g UkVMS0lORF9SRUxBVElPTiAmJiByZWxraW5kID09IFJFTEtJTkRfUkVMQVRJT04pIHx8CisJCQkJ KHB1YnJlbGtpbmQgPT0gUkVMS0lORF9SRUxBVElPTiAmJiByZWxraW5kID09IFJFTEtJTkRfUEFS VElUSU9ORURfVEFCTEUpIHx8CisJCQkJKHB1YnJlbGtpbmQgPT0gUkVMS0lORF9TRVFVRU5DRSAm JiByZWxraW5kID09IFJFTEtJTkRfU0VRVUVOQ0UpKQorCQkJCXJlc3VsdCA9IEdldFB1YlBhcnRp dGlvbk9wdGlvblJlbGF0aW9ucyhyZXN1bHQsIHB1Yl9wYXJ0b3B0LAorCQkJCQkJCQkJCQkJCQlw dWJyZWwtPnBycmVsaWQpOworCQl9CiAJfQogCiAJc3lzdGFibGVfZW5kc2NhbihzY2FuKTsKQEAg LTk5MCwxNSArOTk5LDE2IEBAIGdldF9wdWJsaWNhdGlvbl9yZWxhdGlvbnMoT2lkIHB1YmlkLCBQ dWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQsCiAvKgogICogR2V0cyBsaXN0IG9mIHJlbGF0 aW9uIG9pZHMgdGhhdCBhcmUgYXNzb2NpYXRlZCB3aXRoIGEgcHVibGljYXRpb24uCiAgKgotICog VGhpcyBzaG91bGQgb25seSBiZSB1c2VkIEZPUiBUQUJMRSBwdWJsaWNhdGlvbnMsIHRoZSBGT1Ig QUxMIFRBQkxFUy9TRVFVRU5DRVMKLSAqIHNob3VsZCB1c2UgR2V0QWxsUHVibGljYXRpb25SZWxh dGlvbnMoKS4KKyAqIFRoaXMgaXMgbWFpbmx5IHVzZWQgZm9yIEZPUiBUQUJMRSBwdWJsaWNhdGlv bnMgYW5kIG11c3Qgbm90IGJlIGNhbGxlZCBmb3IKKyAqIEFMTCBUQUJMRVMgcHVibGljYXRpb25z LiBGb3IgQUxMIFNFUVVFTkNFUyBwdWJsaWNhdGlvbnMsIHRoZSByZXN1bHQgaXMgYW4KKyAqIGVt cHR5IGxpc3QuCiAgKi8KIExpc3QgKgogR2V0SW5jbHVkZWRQdWJsaWNhdGlvblJlbGF0aW9ucyhP aWQgcHViaWQsIFB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCkKIHsKIAlBc3NlcnQoIUdl dFB1YmxpY2F0aW9uKHB1YmlkKS0+YWxsdGFibGVzKTsKIAotCXJldHVybiBnZXRfcHVibGljYXRp b25fcmVsYXRpb25zKHB1YmlkLCBwdWJfcGFydG9wdCwgZmFsc2UpOworCXJldHVybiBnZXRfcHVi bGljYXRpb25fcmVsYXRpb25zKHB1YmlkLCBwdWJfcGFydG9wdCwgZmFsc2UsIFJFTEtJTkRfUkVM QVRJT04pOwogfQogCiAvKgpAQCAtMTAwNiw3ICsxMDE2LDggQEAgR2V0SW5jbHVkZWRQdWJsaWNh dGlvblJlbGF0aW9ucyhPaWQgcHViaWQsIFB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCkK ICAqICdGT1IgQUxMIFRBQkxFUycgb3IgYSAnRk9SIEFMTCBTRVFVRU5DRVMnIHB1YmxpY2F0aW9u LgogICovCiBMaXN0ICoKLUdldEV4Y2x1ZGVkUHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1Ymlk LCBQdWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQpCitHZXRFeGNsdWRlZFB1YmxpY2F0aW9u UmVsYXRpb25zKE9pZCBwdWJpZCwgUHVibGljYXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0LAorCQkJ CQkJCQljaGFyIHB1YnJlbGtpbmQpCiB7CiAjaWZkZWYgVVNFX0FTU0VSVF9DSEVDS0lORwogCVB1 YmxpY2F0aW9uICpwdWIgPSBHZXRQdWJsaWNhdGlvbihwdWJpZCk7CkBAIC0xMDE0LDcgKzEwMjUs NyBAQCBHZXRFeGNsdWRlZFB1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBwdWJpZCwgUHVibGljYXRp b25QYXJ0T3B0IHB1Yl9wYXJ0b3B0KQogCUFzc2VydChwdWItPmFsbHRhYmxlcyB8fCBwdWItPmFs bHNlcXVlbmNlcyk7CiAjZW5kaWYKIAotCXJldHVybiBnZXRfcHVibGljYXRpb25fcmVsYXRpb25z KHB1YmlkLCBwdWJfcGFydG9wdCwgdHJ1ZSk7CisJcmV0dXJuIGdldF9wdWJsaWNhdGlvbl9yZWxh dGlvbnMocHViaWQsIHB1Yl9wYXJ0b3B0LCB0cnVlLCBwdWJyZWxraW5kKTsKIH0KIAogLyoKQEAg LTEwNjgsNyArMTA3OSw3IEBAIEdldEFsbFRhYmxlc1B1YmxpY2F0aW9ucyh2b2lkKQogICogaXQg ZXhjbHVkZXMgc2VxdWVuY2VzIHNwZWNpZmllZCBpbiB0aGUgRVhDRVBUIGNsYXVzZS4KICAqLwog TGlzdCAqCi1HZXRBbGxQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgcHViaWQsIGNoYXIgcmVsa2lu ZCwgYm9vbCBwdWJ2aWFyb290KQorR2V0QWxsUHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1Ymlk LCBjaGFyIHB1YnJlbGtpbmQsIGJvb2wgcHVidmlhcm9vdCkKIHsKIAlSZWxhdGlvbgljbGFzc1Jl bDsKIAlTY2FuS2V5RGF0YSBrZXlbMV07CkBAIC0xMDc3LDE4ICsxMDg4LDE5IEBAIEdldEFsbFB1 YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBwdWJpZCwgY2hhciByZWxraW5kLCBib29sIHB1YnZpYXJv b3QpCiAJTGlzdAkgICAqcmVzdWx0ID0gTklMOwogCUxpc3QJICAgKmV4Y2VwdGxpc3QgPSBOSUw7 CiAKLQlBc3NlcnQoIShyZWxraW5kID09IFJFTEtJTkRfU0VRVUVOQ0UgJiYgcHVidmlhcm9vdCkp OworCUFzc2VydCghKHB1YnJlbGtpbmQgPT0gUkVMS0lORF9TRVFVRU5DRSAmJiBwdWJ2aWFyb290 KSk7CiAKIAlleGNlcHRsaXN0ID0gR2V0RXhjbHVkZWRQdWJsaWNhdGlvblJlbGF0aW9ucyhwdWJp ZCwgcHVidmlhcm9vdCA/CiAJCQkJCQkJCQkJCQkgUFVCTElDQVRJT05fUEFSVF9ST09UIDoKLQkJ CQkJCQkJCQkJCSBQVUJMSUNBVElPTl9QQVJUX0xFQUYpOworCQkJCQkJCQkJCQkJIFBVQkxJQ0FU SU9OX1BBUlRfTEVBRiwKKwkJCQkJCQkJCQkJCSBwdWJyZWxraW5kKTsKIAogCWNsYXNzUmVsID0g dGFibGVfb3BlbihSZWxhdGlvblJlbGF0aW9uSWQsIEFjY2Vzc1NoYXJlTG9jayk7CiAKIAlTY2Fu S2V5SW5pdCgma2V5WzBdLAogCQkJCUFudW1fcGdfY2xhc3NfcmVsa2luZCwKIAkJCQlCVEVxdWFs U3RyYXRlZ3lOdW1iZXIsIEZfQ0hBUkVRLAotCQkJCUNoYXJHZXREYXR1bShyZWxraW5kKSk7CisJ CQkJQ2hhckdldERhdHVtKHB1YnJlbGtpbmQpKTsKIAogCXNjYW4gPSB0YWJsZV9iZWdpbnNjYW5f Y2F0YWxvZyhjbGFzc1JlbCwgMSwga2V5KTsKIApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvcHVibGljYXRpb25jbWRzLmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlv bmNtZHMuYwppbmRleCBiZDE3MWY5ZTQ4ZS4uOTUxNjBjOGQ4NDYgMTAwNjQ0Ci0tLSBhL3NyYy9i YWNrZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1h bmRzL3B1YmxpY2F0aW9uY21kcy5jCkBAIC02Niw3ICs2Niw3IEBAIHN0YXRpYyB2b2lkIENsb3Nl UmVsYXRpb25MaXN0KExpc3QgKnJlbHMpOwogc3RhdGljIHZvaWQgTG9ja1NjaGVtYUxpc3QoTGlz dCAqc2NoZW1hbGlzdCk7CiBzdGF0aWMgdm9pZCBQdWJsaWNhdGlvbkFkZFJlbGF0aW9ucyhPaWQg cHViaWQsIExpc3QgKnJlbHMsIGJvb2wgaWZfbm90X2V4aXN0cywKIAkJCQkJCQkJCUFsdGVyUHVi bGljYXRpb25TdG10ICpzdG10LCBjaGFyIHB1YnJlbGtpbmQpOwotc3RhdGljIHZvaWQgUHVibGlj YXRpb25Ecm9wVGFibGVzKE9pZCBwdWJpZCwgTGlzdCAqcmVscywgYm9vbCBtaXNzaW5nX29rKTsK K3N0YXRpYyB2b2lkIFB1YmxpY2F0aW9uRHJvcFJlbGF0aW9ucyhPaWQgcHViaWQsIExpc3QgKnJl bHMsIGJvb2wgbWlzc2luZ19vayk7CiBzdGF0aWMgdm9pZCBQdWJsaWNhdGlvbkFkZFNjaGVtYXMo T2lkIHB1YmlkLCBMaXN0ICpzY2hlbWFzLCBib29sIGlmX25vdF9leGlzdHMsCiAJCQkJCQkJCSAg QWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQpOwogc3RhdGljIHZvaWQgUHVibGljYXRpb25Ecm9w U2NoZW1hcyhPaWQgcHViaWQsIExpc3QgKnNjaGVtYXMsIGJvb2wgbWlzc2luZ19vayk7CkBAIC0x MjUzLDI2ICsxMjUzLDEzMSBAQCBJbnZhbGlkYXRlUHVibGljYXRpb25SZWxzKExpc3QgKnJlbGlk cykKIH0KIAogLyoKLSAqIEFkZCBvciByZW1vdmUgdGFibGUgdG8vZnJvbSBwdWJsaWNhdGlvbi4K KyAqIFJldHVybiB0aGUgbGlzdCBvZiB0YWJsZXMvc2VxdWVuY2VzIHRvIGJlIHJlbW92ZWQgZnJv bSBhIHB1YmxpY2F0aW9uIGR1cmluZworICogQUxURVIgUFVCTElDQVRJT04gLi4uIFNFVC4KKyAq CisgKiAncmVscycgY29udGFpbnMgdGhlIHJlbGF0aW9ucyBzcGVjaWZpZWQgYnkgdGhlIFNFVCBj b21tYW5kLCBhbmQgJ29sZHJlbGlkcycKKyAqIGNvbnRhaW5zIHRoZSBleGlzdGluZyByZWxhdGlv bnMgaW4gdGhlIHB1YmxpY2F0aW9uLiBUaGUgZnVuY3Rpb24gcmV0dXJucyB0aGUKKyAqIGV4aXN0 aW5nIHJlbGF0aW9ucyB0aGF0IGFyZSBub3QgcHJlc2VudCBpbiAncmVscycgYW5kIHRoZXJlZm9y ZSBuZWVkIHRvIGJlCisgKiByZW1vdmVkLgorICovCitzdGF0aWMgTGlzdCAqCitnZXRfZGVsZXRl X3JlbHMoT2lkIHB1YmlkLCBMaXN0ICpyZWxzLCBMaXN0ICpvbGRyZWxpZHMpCit7CisJTGlzdAkg ICAqZGVscmVscyA9IE5JTDsKKworCWZvcmVhY2hfb2lkKG9sZHJlbGlkLCBvbGRyZWxpZHMpCisJ eworCQlMaXN0Q2VsbCAgICpuZXdsYzsKKwkJUHVibGljYXRpb25SZWxJbmZvICpvbGRyZWw7CisJ CWJvb2wJCWZvdW5kID0gZmFsc2U7CisJCUhlYXBUdXBsZQlyZnR1cGxlOworCQlOb2RlCSAgICpv bGRyZWx3aGVyZWNsYXVzZSA9IE5VTEw7CisJCUJpdG1hcHNldCAgKm9sZGNvbHVtbnMgPSBOVUxM OworCisJCS8qIExvb2sgdXAgdGhlIGNhY2hlIGZvciB0aGUgb2xkIHJlbG1hcCAqLworCQlyZnR1 cGxlID0gU2VhcmNoU3lzQ2FjaGUyKFBVQkxJQ0FUSU9OUkVMTUFQLAorCQkJCQkJCQkgIE9iamVj dElkR2V0RGF0dW0ob2xkcmVsaWQpLAorCQkJCQkJCQkgIE9iamVjdElkR2V0RGF0dW0ocHViaWQp KTsKKworCQkvKgorCQkgKiBTZWUgaWYgdGhlIGV4aXN0aW5nIHJlbGF0aW9uIGN1cnJlbnRseSBo YXMgYSBXSEVSRSBjbGF1c2Ugb3IgYQorCQkgKiBjb2x1bW4gbGlzdC4gV2UgbmVlZCB0byBjb21w YXJlIHRob3NlIHRvby4KKwkJICovCisJCWlmIChIZWFwVHVwbGVJc1ZhbGlkKHJmdHVwbGUpKQor CQl7CisJCQlib29sCQlpc251bGwgPSB0cnVlOworCQkJRGF0dW0JCXdoZXJlQ2xhdXNlRGF0dW07 CisJCQlEYXR1bQkJY29sdW1uTGlzdERhdHVtOworCisJCQkvKiBMb2FkIHRoZSBXSEVSRSBjbGF1 c2UgZm9yIHRoaXMgdGFibGUuICovCisJCQl3aGVyZUNsYXVzZURhdHVtID0gU3lzQ2FjaGVHZXRB dHRyKFBVQkxJQ0FUSU9OUkVMTUFQLCByZnR1cGxlLAorCQkJCQkJCQkJCQkgICBBbnVtX3BnX3B1 YmxpY2F0aW9uX3JlbF9wcnF1YWwsCisJCQkJCQkJCQkJCSAgICZpc251bGwpOworCQkJaWYgKCFp c251bGwpCisJCQkJb2xkcmVsd2hlcmVjbGF1c2UgPSBzdHJpbmdUb05vZGUoVGV4dERhdHVtR2V0 Q1N0cmluZyh3aGVyZUNsYXVzZURhdHVtKSk7CisKKwkJCS8qIFRyYW5zZm9ybSB0aGUgaW50MnZl Y3RvciBjb2x1bW4gbGlzdCB0byBhIGJpdG1hcC4gKi8KKwkJCWNvbHVtbkxpc3REYXR1bSA9IFN5 c0NhY2hlR2V0QXR0cihQVUJMSUNBVElPTlJFTE1BUCwgcmZ0dXBsZSwKKwkJCQkJCQkJCQkJICBB bnVtX3BnX3B1YmxpY2F0aW9uX3JlbF9wcmF0dHJzLAorCQkJCQkJCQkJCQkgICZpc251bGwpOwor CisJCQlpZiAoIWlzbnVsbCkKKwkJCQlvbGRjb2x1bW5zID0gcHViX2NvbGxpc3RfdG9fYml0bWFw c2V0KE5VTEwsIGNvbHVtbkxpc3REYXR1bSwgTlVMTCk7CisKKwkJCVJlbGVhc2VTeXNDYWNoZShy ZnR1cGxlKTsKKwkJfQorCisJCS8qCisJCSAqIENoZWNrIGlmIGFueSBvZiB0aGUgbmV3IHNldCBv ZiByZWxhdGlvbnMgbWF0Y2hlcyB3aXRoIHRoZSBleGlzdGluZworCQkgKiByZWxhdGlvbnMgaW4g dGhlIHB1YmxpY2F0aW9uLiBBZGRpdGlvbmFsbHksIGlmIHRoZSByZWxhdGlvbiBoYXMgYW4KKwkJ ICogYXNzb2NpYXRlZCBXSEVSRSBjbGF1c2UsIGNoZWNrIHRoZSBXSEVSRSBleHByZXNzaW9ucyBh bHNvIG1hdGNoLgorCQkgKiBTYW1lIGZvciB0aGUgY29sdW1uIGxpc3QuIERyb3AgdGhlIHJlc3Qu CisJCSAqLworCQlmb3JlYWNoKG5ld2xjLCByZWxzKQorCQl7CisJCQlQdWJsaWNhdGlvblJlbElu Zm8gKm5ld3B1YnJlbDsKKwkJCU9pZAkJCW5ld3JlbGlkOworCQkJQml0bWFwc2V0ICAqbmV3Y29s dW1ucyA9IE5VTEw7CisKKwkJCW5ld3B1YnJlbCA9IChQdWJsaWNhdGlvblJlbEluZm8gKikgbGZp cnN0KG5ld2xjKTsKKwkJCW5ld3JlbGlkID0gUmVsYXRpb25HZXRSZWxpZChuZXdwdWJyZWwtPnJl bGF0aW9uKTsKKworCQkJLyoKKwkJCSAqIFZhbGlkYXRlIHRoZSBjb2x1bW4gbGlzdC4gIElmIHRo ZSBjb2x1bW4gbGlzdCBvciBXSEVSRSBjbGF1c2UKKwkJCSAqIGNoYW5nZXMsIHRoZW4gdGhlIHZh bGlkYXRpb24gZG9uZSBoZXJlIHdpbGwgYmUgZHVwbGljYXRlZAorCQkJICogaW5zaWRlIFB1Ymxp Y2F0aW9uQWRkUmVsYXRpb25zKCkuICBUaGUgdmFsaWRhdGlvbiBpcyBjaGVhcAorCQkJICogZW5v dWdoIHRoYXQgdGhhdCBzZWVtcyBoYXJtbGVzcy4KKwkJCSAqLworCQkJbmV3Y29sdW1ucyA9IHB1 Yl9jb2xsaXN0X3ZhbGlkYXRlKG5ld3B1YnJlbC0+cmVsYXRpb24sCisJCQkJCQkJCQkJCSAgbmV3 cHVicmVsLT5jb2x1bW5zKTsKKworCQkJZm91bmQgPSAobmV3cmVsaWQgPT0gb2xkcmVsaWQpICYm CisJCQkJZXF1YWwob2xkcmVsd2hlcmVjbGF1c2UsIG5ld3B1YnJlbC0+d2hlcmVDbGF1c2UpICYm CisJCQkJYm1zX2VxdWFsKG9sZGNvbHVtbnMsIG5ld2NvbHVtbnMpOworCisJCQlpZiAoZm91bmQp CisJCQkJYnJlYWs7CisJCX0KKworCQkvKgorCQkgKiBBZGQgbm9uLW1hdGNoaW5nIHJlbGF0aW9u cyB0byB0aGUgZHJvcCBsaXN0LiBUaGUgcmVsYXRpb24gd2lsbCBiZQorCQkgKiBkcm9wcGVkIGly cmVzcGVjdGl2ZSBvZiB0aGUgY29sdW1uIGxpc3QgYW5kIFdIRVJFIGNsYXVzZS4KKwkJICovCisJ CWlmICghZm91bmQpCisJCXsKKwkJCW9sZHJlbCA9IHBhbGxvYzBfb2JqZWN0KFB1YmxpY2F0aW9u UmVsSW5mbyk7CisJCQlvbGRyZWwtPnJlbGF0aW9uID0gdGFibGVfb3BlbihvbGRyZWxpZCwKKwkJ CQkJCQkJCQkgIFNoYXJlVXBkYXRlRXhjbHVzaXZlTG9jayk7CisJCQlkZWxyZWxzID0gbGFwcGVu ZChkZWxyZWxzLCBvbGRyZWwpOworCQl9CisJfQorCisJcmV0dXJuIGRlbHJlbHM7Cit9CisKKy8q CisgKiBBZGQgb3IgcmVtb3ZlIHRhYmxlIG9yIHNlcXVlbmNlIHRvL2Zyb20gcHVibGljYXRpb24u CiAgKi8KIHN0YXRpYyB2b2lkCi1BbHRlclB1YmxpY2F0aW9uVGFibGVzKEFsdGVyUHVibGljYXRp b25TdG10ICpzdG10LCBIZWFwVHVwbGUgdHVwLAotCQkJCQkgICBMaXN0ICp0YWJsZXMsIGNvbnN0 IGNoYXIgKnF1ZXJ5U3RyaW5nLAotCQkJCQkgICBib29sIHB1Ymxpc2hfc2NoZW1hKQorQWx0ZXJQ dWJsaWNhdGlvblJlbGF0aW9ucyhBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwgSGVhcFR1cGxl IHR1cCwKKwkJCQkJCSAgTGlzdCAqdGFibGVzLCBMaXN0ICpzZXF1ZW5jZXMsIGNvbnN0IGNoYXIg KnF1ZXJ5U3RyaW5nLAorCQkJCQkJICBib29sIHB1Ymxpc2hfc2NoZW1hKQogewogCUxpc3QJICAg KnJlbHMgPSBOSUw7CisJTGlzdAkgICAqc2VxcyA9IE5JTDsKIAlGb3JtX3BnX3B1YmxpY2F0aW9u IHB1YmZvcm0gPSAoRm9ybV9wZ19wdWJsaWNhdGlvbikgR0VUU1RSVUNUKHR1cCk7CiAJT2lkCQkJ cHViaWQgPSBwdWJmb3JtLT5vaWQ7CiAKIAkvKgotCSAqIE5vdGhpbmcgdG8gZG8gaWYgbm8gb2Jq ZWN0cywgZXhjZXB0IGluIFNFVDogZm9yIHRoYXQgaXQgaXMgcXVpdGUKLQkgKiBwb3NzaWJsZSB0 aGF0IHVzZXIgaGFzIG5vdCBzcGVjaWZpZWQgYW55IHRhYmxlcyBpbiB3aGljaCBjYXNlIHdlIG5l ZWQKLQkgKiB0byByZW1vdmUgYWxsIHRoZSBleGlzdGluZyB0YWJsZXMuCisJICogTm90aGluZyB0 byBkbyBpZiBubyBvYmplY3RzIHdlcmUgc3BlY2lmaWVkLCB1bmxlc3MgdGhpcyBpcyBhIFNFVAor CSAqIGNvbW1hbmQsIHdoaWNoIG1heSBuZWVkIHRvIHJlbW92ZSBhbGwgZXhpc3RpbmcgdGFibGVz IGFuZCBzZXF1ZW5jZXMuCiAJICovCi0JaWYgKCF0YWJsZXMgJiYgc3RtdC0+YWN0aW9uICE9IEFQ X1NldE9iamVjdHMpCisJaWYgKCF0YWJsZXMgJiYgIXNlcXVlbmNlcyAmJiBzdG10LT5hY3Rpb24g IT0gQVBfU2V0T2JqZWN0cykKIAkJcmV0dXJuOwogCiAJcmVscyA9IE9wZW5SZWxhdGlvbkxpc3Qo dGFibGVzKTsKKwlzZXFzID0gT3BlblJlbGF0aW9uTGlzdChzZXF1ZW5jZXMpOwogCiAJaWYgKHN0 bXQtPmFjdGlvbiA9PSBBUF9BZGRPYmplY3RzKQogCXsKQEAgLTEyODYsMjkgKzEzOTEsMzMgQEAg QWx0ZXJQdWJsaWNhdGlvblRhYmxlcyhBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCwgSGVhcFR1 cGxlIHR1cCwKIAkJUHVibGljYXRpb25BZGRSZWxhdGlvbnMocHViaWQsIHJlbHMsIGZhbHNlLCBz dG10LCBSRUxLSU5EX1JFTEFUSU9OKTsKIAl9CiAJZWxzZSBpZiAoc3RtdC0+YWN0aW9uID09IEFQ X0Ryb3BPYmplY3RzKQotCQlQdWJsaWNhdGlvbkRyb3BUYWJsZXMocHViaWQsIHJlbHMsIGZhbHNl KTsKKwkJUHVibGljYXRpb25Ecm9wUmVsYXRpb25zKHB1YmlkLCByZWxzLCBmYWxzZSk7CiAJZWxz ZQkJCQkJCS8qIEFQX1NldE9iamVjdHMgKi8KIAl7CiAJCUxpc3QJICAgKm9sZHJlbGlkcyA9IE5J TDsKKwkJTGlzdAkgICAqb2xkc2VxaWRzID0gTklMOwogCQlMaXN0CSAgICpkZWxyZWxzID0gTklM OwotCQlMaXN0Q2VsbCAgICpvbGRsYzsKIAogCQlpZiAoc3RtdC0+Zm9yX2FsbF90YWJsZXMgfHwg c3RtdC0+Zm9yX2FsbF9zZXF1ZW5jZXMpCiAJCXsKIAkJCS8qCi0JCQkgKiBJbiBGT1IgQUxMIFRB QkxFUyBtb2RlLCByZWxhdGlvbnMgYXJlIHRyYWNrZWQgYXMgZXhjbHVzaW9ucwotCQkJICogKEVY Q0VQVCBjbGF1c2UpLiBGZXRjaCB0aGUgY3VycmVudCBleGNsdWRlZCByZWxhdGlvbnMgc28gdGhl eQotCQkJICogY2FuIGJlIHJlY29uY2lsZWQgd2l0aCB0aGUgc3BlY2lmaWVkIEVYQ0VQVCBsaXN0 LgorCQkJICogSW4gRk9SIEFMTCBUQUJMRVMvIEZPUiBBTEwgU0VRVUVOQ0VTIG1vZGUsIHJlbGF0 aW9ucyBhcmUKKwkJCSAqIHRyYWNrZWQgYXMgZXhjbHVzaW9ucyAoRVhDRVBUIGNsYXVzZSkuIEZl dGNoIHRoZSBjdXJyZW50CisJCQkgKiBleGNsdWRlZCByZWxhdGlvbnMgc28gdGhleSBjYW4gYmUg cmVjb25jaWxlZCB3aXRoIHRoZSBzcGVjaWZpZWQKKwkJCSAqIEVYQ0VQVCBsaXN0LgogCQkJICoK IAkJCSAqIFRoaXMgYXBwbGllcyBvbmx5IGlmIHRoZSBleGlzdGluZyBwdWJsaWNhdGlvbiBpcyBh bHJlYWR5Ci0JCQkgKiBkZWZpbmVkIGFzIEZPUiBBTEwgVEFCTEVTOyBvdGhlcndpc2UsIHRoZXJl IGFyZSBubyBleGNsdXNpb24KLQkJCSAqIGVudHJpZXMgdG8gcHJvY2Vzcy4KKwkJCSAqIGRlZmlu ZWQgYXMgRk9SIEFMTCBUQUJMRVMvIEZPUiBBTEwgU0VRVUVOQ0VTOyBvdGhlcndpc2UsIHRoZXJl CisJCQkgKiBhcmUgbm8gZXhjbHVzaW9uIGVudHJpZXMgdG8gcHJvY2Vzcy4KIAkJCSAqLwogCQkJ aWYgKHB1YmZvcm0tPnB1YmFsbHRhYmxlcykKLQkJCXsKIAkJCQlvbGRyZWxpZHMgPSBHZXRFeGNs dWRlZFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1YmlkLAotCQkJCQkJCQkJCQkJCQkJUFVCTElDQVRJ T05fUEFSVF9ST09UKTsKLQkJCX0KKwkJCQkJCQkJCQkJCQkJCVBVQkxJQ0FUSU9OX1BBUlRfUk9P VCwKKwkJCQkJCQkJCQkJCQkJCVJFTEtJTkRfUkVMQVRJT04pOworCQkJaWYgKHB1YmZvcm0tPnB1 YmFsbHNlcXVlbmNlcykKKwkJCQlvbGRzZXFpZHMgPSBHZXRFeGNsdWRlZFB1YmxpY2F0aW9uUmVs YXRpb25zKHB1YmlkLAorCQkJCQkJCQkJCQkJCQkJUFVCTElDQVRJT05fUEFSVF9ST09ULAorCQkJ CQkJCQkJCQkJCQkJUkVMS0lORF9TRVFVRU5DRSk7CiAJCX0KIAkJZWxzZQogCQl7CkBAIC0xMzIx LDExOCArMTQzMCwyNSBAQCBBbHRlclB1YmxpY2F0aW9uVGFibGVzKEFsdGVyUHVibGljYXRpb25T dG10ICpzdG10LCBIZWFwVHVwbGUgdHVwLAogCQkJCQkJCQkJICAgcHViZm9ybS0+cHVidmlhcm9v dCk7CiAJCX0KIAotCQkvKgotCQkgKiBUbyByZWNyZWF0ZSB0aGUgcmVsYXRpb24gbGlzdCBmb3Ig dGhlIHB1YmxpY2F0aW9uLCBsb29rIGZvcgotCQkgKiBleGlzdGluZyByZWxhdGlvbnMgdGhhdCBk byBub3QgbmVlZCB0byBiZSBkcm9wcGVkLgotCQkgKi8KLQkJZm9yZWFjaChvbGRsYywgb2xkcmVs aWRzKQotCQl7Ci0JCQlPaWQJCQlvbGRyZWxpZCA9IGxmaXJzdF9vaWQob2xkbGMpOwotCQkJTGlz dENlbGwgICAqbmV3bGM7Ci0JCQlQdWJsaWNhdGlvblJlbEluZm8gKm9sZHJlbDsKLQkJCWJvb2wJ CWZvdW5kID0gZmFsc2U7Ci0JCQlIZWFwVHVwbGUJcmZ0dXBsZTsKLQkJCU5vZGUJICAgKm9sZHJl bHdoZXJlY2xhdXNlID0gTlVMTDsKLQkJCUJpdG1hcHNldCAgKm9sZGNvbHVtbnMgPSBOVUxMOwot Ci0JCQkvKiBsb29rIHVwIHRoZSBjYWNoZSBmb3IgdGhlIG9sZCByZWxtYXAgKi8KLQkJCXJmdHVw bGUgPSBTZWFyY2hTeXNDYWNoZTIoUFVCTElDQVRJT05SRUxNQVAsCi0JCQkJCQkJCQkgIE9iamVj dElkR2V0RGF0dW0ob2xkcmVsaWQpLAotCQkJCQkJCQkJICBPYmplY3RJZEdldERhdHVtKHB1Ymlk KSk7Ci0KLQkJCS8qCi0JCQkgKiBTZWUgaWYgdGhlIGV4aXN0aW5nIHJlbGF0aW9uIGN1cnJlbnRs eSBoYXMgYSBXSEVSRSBjbGF1c2Ugb3IgYQotCQkJICogY29sdW1uIGxpc3QuIFdlIG5lZWQgdG8g Y29tcGFyZSB0aG9zZSB0b28uCi0JCQkgKi8KLQkJCWlmIChIZWFwVHVwbGVJc1ZhbGlkKHJmdHVw bGUpKQotCQkJewotCQkJCWJvb2wJCWlzbnVsbCA9IHRydWU7Ci0JCQkJRGF0dW0JCXdoZXJlQ2xh dXNlRGF0dW07Ci0JCQkJRGF0dW0JCWNvbHVtbkxpc3REYXR1bTsKLQotCQkJCS8qIExvYWQgdGhl IFdIRVJFIGNsYXVzZSBmb3IgdGhpcyB0YWJsZS4gKi8KLQkJCQl3aGVyZUNsYXVzZURhdHVtID0g U3lzQ2FjaGVHZXRBdHRyKFBVQkxJQ0FUSU9OUkVMTUFQLCByZnR1cGxlLAotCQkJCQkJCQkJCQkJ ICAgQW51bV9wZ19wdWJsaWNhdGlvbl9yZWxfcHJxdWFsLAotCQkJCQkJCQkJCQkJICAgJmlzbnVs bCk7Ci0JCQkJaWYgKCFpc251bGwpCi0JCQkJCW9sZHJlbHdoZXJlY2xhdXNlID0gc3RyaW5nVG9O b2RlKFRleHREYXR1bUdldENTdHJpbmcod2hlcmVDbGF1c2VEYXR1bSkpOwotCi0JCQkJLyogVHJh bnNmb3JtIHRoZSBpbnQydmVjdG9yIGNvbHVtbiBsaXN0IHRvIGEgYml0bWFwLiAqLwotCQkJCWNv bHVtbkxpc3REYXR1bSA9IFN5c0NhY2hlR2V0QXR0cihQVUJMSUNBVElPTlJFTE1BUCwgcmZ0dXBs ZSwKLQkJCQkJCQkJCQkJCSAgQW51bV9wZ19wdWJsaWNhdGlvbl9yZWxfcHJhdHRycywKLQkJCQkJ CQkJCQkJCSAgJmlzbnVsbCk7Ci0KLQkJCQlpZiAoIWlzbnVsbCkKLQkJCQkJb2xkY29sdW1ucyA9 IHB1Yl9jb2xsaXN0X3RvX2JpdG1hcHNldChOVUxMLCBjb2x1bW5MaXN0RGF0dW0sIE5VTEwpOwot Ci0JCQkJUmVsZWFzZVN5c0NhY2hlKHJmdHVwbGUpOwotCQkJfQotCi0JCQlmb3JlYWNoKG5ld2xj LCByZWxzKQotCQkJewotCQkJCVB1YmxpY2F0aW9uUmVsSW5mbyAqbmV3cHVicmVsOwotCQkJCU9p ZAkJCW5ld3JlbGlkOwotCQkJCUJpdG1hcHNldCAgKm5ld2NvbHVtbnMgPSBOVUxMOwotCi0JCQkJ bmV3cHVicmVsID0gKFB1YmxpY2F0aW9uUmVsSW5mbyAqKSBsZmlyc3QobmV3bGMpOwotCQkJCW5l d3JlbGlkID0gUmVsYXRpb25HZXRSZWxpZChuZXdwdWJyZWwtPnJlbGF0aW9uKTsKLQotCQkJCS8q Ci0JCQkJICogVmFsaWRhdGUgdGhlIGNvbHVtbiBsaXN0LiAgSWYgdGhlIGNvbHVtbiBsaXN0IG9y IFdIRVJFCi0JCQkJICogY2xhdXNlIGNoYW5nZXMsIHRoZW4gdGhlIHZhbGlkYXRpb24gZG9uZSBo ZXJlIHdpbGwgYmUKLQkJCQkgKiBkdXBsaWNhdGVkIGluc2lkZSBQdWJsaWNhdGlvbkFkZFJlbGF0 aW9ucygpLiAgVGhlCi0JCQkJICogdmFsaWRhdGlvbiBpcyBjaGVhcCBlbm91Z2ggdGhhdCB0aGF0 IHNlZW1zIGhhcm1sZXNzLgotCQkJCSAqLwotCQkJCW5ld2NvbHVtbnMgPSBwdWJfY29sbGlzdF92 YWxpZGF0ZShuZXdwdWJyZWwtPnJlbGF0aW9uLAotCQkJCQkJCQkJCQkJICBuZXdwdWJyZWwtPmNv bHVtbnMpOwotCi0JCQkJLyoKLQkJCQkgKiBDaGVjayBpZiBhbnkgb2YgdGhlIG5ldyBzZXQgb2Yg cmVsYXRpb25zIG1hdGNoZXMgd2l0aCB0aGUKLQkJCQkgKiBleGlzdGluZyByZWxhdGlvbnMgaW4g dGhlIHB1YmxpY2F0aW9uLiBBZGRpdGlvbmFsbHksIGlmIHRoZQotCQkJCSAqIHJlbGF0aW9uIGhh cyBhbiBhc3NvY2lhdGVkIFdIRVJFIGNsYXVzZSwgY2hlY2sgdGhlIFdIRVJFCi0JCQkJICogZXhw cmVzc2lvbnMgYWxzbyBtYXRjaC4gU2FtZSBmb3IgdGhlIGNvbHVtbiBsaXN0LiBEcm9wIHRoZQot CQkJCSAqIHJlc3QuCi0JCQkJICovCi0JCQkJaWYgKG5ld3JlbGlkID09IG9sZHJlbGlkKQotCQkJ CXsKLQkJCQkJaWYgKGVxdWFsKG9sZHJlbHdoZXJlY2xhdXNlLCBuZXdwdWJyZWwtPndoZXJlQ2xh dXNlKSAmJgotCQkJCQkJYm1zX2VxdWFsKG9sZGNvbHVtbnMsIG5ld2NvbHVtbnMpKQotCQkJCQl7 Ci0JCQkJCQlmb3VuZCA9IHRydWU7Ci0JCQkJCQlicmVhazsKLQkJCQkJfQotCQkJCX0KLQkJCX0K LQotCQkJLyoKLQkJCSAqIEFkZCB0aGUgbm9uLW1hdGNoZWQgcmVsYXRpb25zIHRvIGEgbGlzdCBz byB0aGF0IHRoZXkgY2FuIGJlCi0JCQkgKiBkcm9wcGVkLgotCQkJICovCi0JCQlpZiAoIWZvdW5k KQotCQkJewotCQkJCW9sZHJlbCA9IHBhbGxvY19vYmplY3QoUHVibGljYXRpb25SZWxJbmZvKTsK LQkJCQlvbGRyZWwtPndoZXJlQ2xhdXNlID0gTlVMTDsKLQkJCQlvbGRyZWwtPmNvbHVtbnMgPSBO SUw7Ci0JCQkJb2xkcmVsLT5leGNlcHQgPSBmYWxzZTsKLQkJCQlvbGRyZWwtPnJlbGF0aW9uID0g dGFibGVfb3BlbihvbGRyZWxpZCwKLQkJCQkJCQkJCQkJICBTaGFyZVVwZGF0ZUV4Y2x1c2l2ZUxv Y2spOwotCQkJCWRlbHJlbHMgPSBsYXBwZW5kKGRlbHJlbHMsIG9sZHJlbCk7Ci0JCQl9Ci0JCX0K KwkJLyogR2V0IHRhYmxlcyBhbmQgc2VxdWVuY2VzIHRvIGJlIGRyb3BwZWQgKi8KKwkJZGVscmVs cyA9IGdldF9kZWxldGVfcmVscyhwdWJpZCwgcmVscywgb2xkcmVsaWRzKTsKKwkJZGVscmVscyA9 IGxpc3RfY29uY2F0KGRlbHJlbHMsIGdldF9kZWxldGVfcmVscyhwdWJpZCwgc2Vxcywgb2xkc2Vx aWRzKSk7CiAKIAkJLyogQW5kIGRyb3AgdGhlbS4gKi8KLQkJUHVibGljYXRpb25Ecm9wVGFibGVz KHB1YmlkLCBkZWxyZWxzLCB0cnVlKTsKKwkJUHVibGljYXRpb25Ecm9wUmVsYXRpb25zKHB1Ymlk LCBkZWxyZWxzLCB0cnVlKTsKIAogCQkvKgogCQkgKiBEb24ndCBib3RoZXIgY2FsY3VsYXRpbmcg dGhlIGRpZmZlcmVuY2UgZm9yIGFkZGluZywgd2UnbGwgY2F0Y2ggYW5kCiAJCSAqIHNraXAgZXhp c3Rpbmcgb25lcyB3aGVuIGRvaW5nIGNhdGFsb2cgdXBkYXRlLgogCQkgKi8KIAkJUHVibGljYXRp b25BZGRSZWxhdGlvbnMocHViaWQsIHJlbHMsIHRydWUsIHN0bXQsIFJFTEtJTkRfUkVMQVRJT04p OworCQlQdWJsaWNhdGlvbkFkZFJlbGF0aW9ucyhwdWJpZCwgc2VxcywgdHJ1ZSwgc3RtdCwgUkVM S0lORF9TRVFVRU5DRSk7CiAKIAkJQ2xvc2VSZWxhdGlvbkxpc3QoZGVscmVscyk7CiAJfQogCiAJ Q2xvc2VSZWxhdGlvbkxpc3QocmVscyk7CisJQ2xvc2VSZWxhdGlvbkxpc3Qoc2Vxcyk7CiB9CiAK IC8qCkBAIC0xNzA4LDExICsxNzI0LDkgQEAgQWx0ZXJQdWJsaWNhdGlvbihQYXJzZVN0YXRlICpw c3RhdGUsIEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10KQogCQlPYmplY3RzSW5QdWJsaWNhdGlv blRvT2lkcyhzdG10LT5wdWJvYmplY3RzLCBwc3RhdGUsICZyZWxhdGlvbnMsCiAJCQkJCQkJCSAg ICZleGNlcHR0YmxzLCAmZXhjZXB0c2VxcywgJnNjaGVtYWlkbGlzdCk7CiAKLQkJLyoKLQkJICog VE9ETzogRVhDRVBUIChTRVFVRU5DRSAuLi4pIGlzIG5vdCB5ZXQgc3VwcG9ydGVkIHdpdGggQUxU RVIKLQkJICogUFVCTElDQVRJT04uCi0JCSAqLwotCQlBc3NlcnQoZXhjZXB0c2VxcyA9PSBOSUwp OworCQkvKiBFWENFUFQgY2xhdXNlIGlzIG9ubHkgc3VwcG9ydGVkIGZvciBBTFRFUiBQVUJMSUNB VElPTiAuLi4gU0VUICovCisJCUFzc2VydCgoZXhjZXB0dGJscyA9PSBOSUwgJiYgZXhjZXB0c2Vx cyA9PSBOSUwpIHx8CisJCQkgICBzdG10LT5hY3Rpb24gPT0gQVBfU2V0T2JqZWN0cyk7CiAKIAkJ Q2hlY2tBbHRlclB1YmxpY2F0aW9uKHN0bXQsIHR1cCwgcmVsYXRpb25zLCBzY2hlbWFpZGxpc3Qp OwogCkBAIC0xNzM2LDggKzE3NTAsOCBAQCBBbHRlclB1YmxpY2F0aW9uKFBhcnNlU3RhdGUgKnBz dGF0ZSwgQWx0ZXJQdWJsaWNhdGlvblN0bXQgKnN0bXQpCiAJCQkJCQkgICBzdG10LT5wdWJuYW1l KSk7CiAKIAkJcmVsYXRpb25zID0gbGlzdF9jb25jYXQocmVsYXRpb25zLCBleGNlcHR0YmxzKTsK LQkJQWx0ZXJQdWJsaWNhdGlvblRhYmxlcyhzdG10LCB0dXAsIHJlbGF0aW9ucywgcHN0YXRlLT5w X3NvdXJjZXRleHQsCi0JCQkJCQkJICAgc2NoZW1haWRsaXN0ICE9IE5JTCk7CisJCUFsdGVyUHVi bGljYXRpb25SZWxhdGlvbnMoc3RtdCwgdHVwLCByZWxhdGlvbnMsIGV4Y2VwdHNlcXMsCisJCQkJ CQkJCSAgcHN0YXRlLT5wX3NvdXJjZXRleHQsIHNjaGVtYWlkbGlzdCAhPSBOSUwpOwogCQlBbHRl clB1YmxpY2F0aW9uU2NoZW1hcyhzdG10LCB0dXAsIHNjaGVtYWlkbGlzdCk7CiAJCUFsdGVyUHVi bGljYXRpb25BbGxGbGFncyhzdG10LCByZWwsIHR1cCk7CiAJfQpAQCAtMjA5MiwxMCArMjEwNiwx MCBAQCBQdWJsaWNhdGlvbkFkZFJlbGF0aW9ucyhPaWQgcHViaWQsIExpc3QgKnJlbHMsIGJvb2wg aWZfbm90X2V4aXN0cywKIH0KIAogLyoKLSAqIFJlbW92ZSBsaXN0ZWQgdGFibGVzIGZyb20gdGhl IHB1YmxpY2F0aW9uLgorICogUmVtb3ZlIGxpc3RlZCByZWxhdGlvbnMgZnJvbSB0aGUgcHVibGlj YXRpb24uCiAgKi8KIHN0YXRpYyB2b2lkCi1QdWJsaWNhdGlvbkRyb3BUYWJsZXMoT2lkIHB1Ymlk LCBMaXN0ICpyZWxzLCBib29sIG1pc3Npbmdfb2spCitQdWJsaWNhdGlvbkRyb3BSZWxhdGlvbnMo T2lkIHB1YmlkLCBMaXN0ICpyZWxzLCBib29sIG1pc3Npbmdfb2spCiB7CiAJT2JqZWN0QWRkcmVz cyBvYmo7CiAJTGlzdENlbGwgICAqbGM7CmRpZmYgLS1naXQgYS9zcmMvYmluL3BzcWwvdGFiLWNv bXBsZXRlLmluLmMgYi9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRlLmluLmMKaW5kZXggNjIwYmU4 MzE4YmYuLmI5ZDg5Nzc4YTQ1IDEwMDY0NAotLS0gYS9zcmMvYmluL3BzcWwvdGFiLWNvbXBsZXRl LmluLmMKKysrIGIvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCkBAIC0yMzUxLDYgKzIz NTEsMjAgQEAgbWF0Y2hfcHJldmlvdXNfd29yZHMoaW50IHBhdHRlcm5faWQsCiAJCUNPTVBMRVRF X1dJVEhfU0NIRU1BX1FVRVJZKFF1ZXJ5X2Zvcl9saXN0X29mX3RhYmxlcyk7CiAJZWxzZSBpZiAo TWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIlNFVCIsICJBTEwiLCAi VEFCTEVTIiwgIkVYQ0VQVCIsICIoIiwgIlRBQkxFIiwgTWF0Y2hBbnlOKSAmJiAhZW5kc193aXRo KHByZXZfd2QsICcsJykpCiAJCUNPTVBMRVRFX1dJVEgoIikiKTsKKwllbHNlIGlmIChNYXRjaGVz KCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiU0VUIiwgIkFMTCIsICJTRVFVRU5D RVMiLCAiRVhDRVBUIiwgIigiKSkKKwkJQ09NUExFVEVfV0lUSCgiU0VRVUVOQ0UiKTsKKwllbHNl IGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiU0VUIiwgIkFM TCIsICJTRVFVRU5DRVMiKSkKKwkJQ09NUExFVEVfV0lUSCgiRVhDRVBUICggU0VRVUVOQ0UiKTsK KwllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiU0VU IiwgIkFMTCIsICJTRVFVRU5DRVMiLCAiRVhDRVBUIikpCisJCUNPTVBMRVRFX1dJVEgoIiggU0VR VUVOQ0UiKTsKKwllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNo QW55LCAiU0VUIiwgIkFMTCIsICJTRVFVRU5DRVMiLCAiRVhDRVBUIiwgIigiKSkKKwkJQ09NUExF VEVfV0lUSCgiU0VRVUVOQ0UiKTsKKwllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNB VElPTiIsIE1hdGNoQW55LCAiU0VUIiwgIkFMTCIsICJTRVFVRU5DRVMiLCAiRVhDRVBUIiwgIigi LCAiU0VRVUVOQ0UiKSkKKwkJQ09NUExFVEVfV0lUSF9TQ0hFTUFfUVVFUlkoUXVlcnlfZm9yX2xp c3Rfb2Zfc2VxdWVuY2VzKTsKKwllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElP TiIsIE1hdGNoQW55LCAiU0VUIiwgIkFMTCIsICJTRVFVRU5DRVMiLCAiRVhDRVBUIiwgIigiLCAi U0VRVUVOQ0UiLCBNYXRjaEFueU4pICYmIGVuZHNfd2l0aChwcmV2X3dkLCAnLCcpKQorCQlDT01Q TEVURV9XSVRIX1NDSEVNQV9RVUVSWShRdWVyeV9mb3JfbGlzdF9vZl9zZXF1ZW5jZXMpOworCWVs c2UgaWYgKE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJTRVQiLCAi QUxMIiwgIlNFUVVFTkNFUyIsICJFWENFUFQiLCAiKCIsICJTRVFVRU5DRSIsIE1hdGNoQW55Tikg JiYgIWVuZHNfd2l0aChwcmV2X3dkLCAnLCcpKQorCQlDT01QTEVURV9XSVRIKCIpIik7CiAJZWxz ZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04iLCBNYXRjaEFueSwgIkFERHxEUk9Q fFNFVCIsICJUQUJMRVMiLCAiSU4iLCAiU0NIRU1BIikpCiAJCUNPTVBMRVRFX1dJVEhfUVVFUllf UExVUyhRdWVyeV9mb3JfbGlzdF9vZl9zY2hlbWFzCiAJCQkJCQkJCSAiIEFORCBuc3BuYW1lIE5P VCBMSUtFIEUncGdcXFxcXyUlJyIsCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9jYXRhbG9nL3Bn X3B1YmxpY2F0aW9uLmggYi9zcmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmgKaW5k ZXggNDljMjlhODc2MzAuLjIxYTE1MjdiY2M3IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9jYXRh bG9nL3BnX3B1YmxpY2F0aW9uLmgKKysrIGIvc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNh dGlvbi5oCkBAIC0xNzgsOSArMTc4LDExIEBAIHR5cGVkZWYgZW51bSBQdWJsaWNhdGlvblBhcnRP cHQKIGV4dGVybiBMaXN0ICpHZXRJbmNsdWRlZFB1YmxpY2F0aW9uUmVsYXRpb25zKE9pZCBwdWJp ZCwKIAkJCQkJCQkJCQkJIFB1YmxpY2F0aW9uUGFydE9wdCBwdWJfcGFydG9wdCk7CiBleHRlcm4g TGlzdCAqR2V0RXhjbHVkZWRQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgcHViaWQsCi0JCQkJCQkJ CQkJCSBQdWJsaWNhdGlvblBhcnRPcHQgcHViX3BhcnRvcHQpOworCQkJCQkJCQkJCQkgUHVibGlj YXRpb25QYXJ0T3B0IHB1Yl9wYXJ0b3B0LAorCQkJCQkJCQkJCQkgY2hhciBwdWJyZWxraW5kKTsK IGV4dGVybiBMaXN0ICpHZXRBbGxUYWJsZXNQdWJsaWNhdGlvbnModm9pZCk7Ci1leHRlcm4gTGlz dCAqR2V0QWxsUHVibGljYXRpb25SZWxhdGlvbnMoT2lkIHB1YmlkLCBjaGFyIHJlbGtpbmQsIGJv b2wgcHVidmlhcm9vdCk7CitleHRlcm4gTGlzdCAqR2V0QWxsUHVibGljYXRpb25SZWxhdGlvbnMo T2lkIHB1YmlkLCBjaGFyIHB1YnJlbGtpbmQsCisJCQkJCQkJCQkJYm9vbCBwdWJ2aWFyb290KTsK IGV4dGVybiBMaXN0ICpHZXRQdWJsaWNhdGlvblNjaGVtYXMoT2lkIHB1YmlkKTsKIGV4dGVybiBM aXN0ICpHZXRTY2hlbWFQdWJsaWNhdGlvbnMoT2lkIHNjaGVtYWlkKTsKIGV4dGVybiBMaXN0ICpH ZXRTY2hlbWFQdWJsaWNhdGlvblJlbGF0aW9ucyhPaWQgc2NoZW1haWQsCmRpZmYgLS1naXQgYS9z cmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL3B1YmxpY2F0aW9uLm91dCBiL3NyYy90ZXN0L3JlZ3Jl c3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0CmluZGV4IGMxYTVmZWEyYTk2Li4yMDZhZWIxODFj NiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQK KysrIGIvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQKQEAgLTU3NSwx NiArNTc1LDMyIEBAIEV4Y2VwdCBzZXF1ZW5jZXM6CiAgICAgInB1Yl90ZXN0LnJlZ3Jlc3NfcHVi X3NlcTIiCiAgICAgInB1YmxpYy5yZWdyZXNzX3B1Yl9zZXEwIgogCistLSBNb2RpZnkgdGhlIHNl cXVlbmNlIGxpc3QgaW4gdGhlIEVYQ0VQVCBjbGF1c2UKK0FMVEVSIFBVQkxJQ0FUSU9OIHJlZ3Jl c3NfcHViX2ZvcmFsbHNlcXVlbmNlczMgU0VUIEFMTCBTRVFVRU5DRVMgRVhDRVBUIChTRVFVRU5D RSByZWdyZXNzX3B1Yl9zZXEwKTsKK1xkUnArIHJlZ3Jlc3NfcHViX2ZvcmFsbHNlcXVlbmNlczMK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB1Ymxp Y2F0aW9uIHJlZ3Jlc3NfcHViX2ZvcmFsbHNlcXVlbmNlczMKKyAgICAgICAgICBPd25lciAgICAg ICAgICAgfCBBbGwgdGFibGVzIHwgQWxsIHNlcXVlbmNlcyB8IEluc2VydHMgfCBVcGRhdGVzIHwg RGVsZXRlcyB8IFRydW5jYXRlcyB8IEdlbmVyYXRlZCBjb2x1bW5zIHwgVmlhIHJvb3QgfCBEZXNj cmlwdGlvbiAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0t LS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0KKyByZWdyZXNzX3B1YmxpY2F0 aW9uX3VzZXIgfCBmICAgICAgICAgIHwgdCAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAg IHwgdCAgICAgICB8IHQgICAgICAgICB8IG5vbmUgICAgICAgICAgICAgIHwgZiAgICAgICAgfCAK K0V4Y2VwdCBzZXF1ZW5jZXM6CisgICAgInB1YmxpYy5yZWdyZXNzX3B1Yl9zZXEwIgorCiBSRVNF VCBjbGllbnRfbWluX21lc3NhZ2VzOwogLS0gZmFpbCAtIHNlcXVlbmNlIG9iamVjdCBpcyBzcGVj aWZpZWQgaW4gRVhDRVBUIHRhYmxlIGxpc3QKIENSRUFURSBQVUJMSUNBVElPTiByZWdyZXNzX3B1 Yl9mb3JhbGxzZXF1ZW5jZXM0IEZPUiBBTEwgVEFCTEVTIEVYQ0VQVCAoVEFCTEUgcmVncmVzc19w dWJfc2VxMCk7CiBFUlJPUjogIGNhbm5vdCBzcGVjaWZ5ICJwdWJsaWMucmVncmVzc19wdWJfc2Vx MCIgaW4gdGhlIHB1YmxpY2F0aW9uIEVYQ0VQVCAoVEFCTEUpIGNsYXVzZQogREVUQUlMOiAgVGhp cyBvcGVyYXRpb24gaXMgbm90IHN1cHBvcnRlZCBmb3Igc2VxdWVuY2VzLgorQUxURVIgUFVCTElD QVRJT04gcmVncmVzc19wdWJfZm9yYWxsc2VxdWVuY2VzMyBTRVQgQUxMIFRBQkxFUyBFWENFUFQg KFRBQkxFIHJlZ3Jlc3NfcHViX3NlcTApOworRVJST1I6ICBjYW5ub3Qgc3BlY2lmeSAicHVibGlj LnJlZ3Jlc3NfcHViX3NlcTAiIGluIHRoZSBwdWJsaWNhdGlvbiBFWENFUFQgKFRBQkxFKSBjbGF1 c2UKK0RFVEFJTDogIFRoaXMgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHNlcXVlbmNl cy4KIC0tIGZhaWwgLSB0YWJsZSBvYmplY3QgaXMgc3BlY2lmaWVkIGluIEVYQ0VQVCBzZXF1ZW5j ZSBsaXN0CiBDUkVBVEUgVEFCTEUgdGFiX3NlcShhIGludCk7CiBDUkVBVEUgUFVCTElDQVRJT04g cmVncmVzc19wdWJfZm9yYWxsc2VxdWVuY2VzNCBGT1IgQUxMIFNFUVVFTkNFUyBFWENFUFQgKFNF UVVFTkNFIHRhYl9zZXEpOwogRVJST1I6ICBjYW5ub3Qgc3BlY2lmeSAicHVibGljLnRhYl9zZXEi IGluIHRoZSBwdWJsaWNhdGlvbiBFWENFUFQgKFNFUVVFTkNFKSBjbGF1c2UKIERFVEFJTDogIFRo aXMgb3BlcmF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHRhYmxlcy4KK0FMVEVSIFBVQkxJQ0FU SU9OIHJlZ3Jlc3NfcHViX2ZvcmFsbHNlcXVlbmNlczMgU0VUIEFMTCBTRVFVRU5DRVMgRVhDRVBU IChTRVFVRU5DRSB0YWJfc2VxKTsKK0VSUk9SOiAgY2Fubm90IHNwZWNpZnkgInB1YmxpYy50YWJf c2VxIiBpbiB0aGUgcHVibGljYXRpb24gRVhDRVBUIChTRVFVRU5DRSkgY2xhdXNlCitERVRBSUw6 ICBUaGlzIG9wZXJhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIGZvciB0YWJsZXMuCiAtLSBUZXN0IGNv bWJpbmF0aW9uIG9mIEFMTCBTRVFVRU5DRVMgYW5kIEFMTCBUQUJMRVMgd2l0aCBFWENFUFQgY2xh dXNlCiBTRVQgY2xpZW50X21pbl9tZXNzYWdlcyA9ICdFUlJPUic7CiBDUkVBVEUgUFVCTElDQVRJ T04gcmVncmVzc19wdWJfZm9yX2FsbHNlcXVlbmNlc19hbGx0YWJsZXMxIEZPUiBBTEwgVEFCTEVT IEVYQ0VQVCAoVEFCTEUgdGVzdHB1Yl90YmwxKSwgQUxMIFNFUVVFTkNFUyBFWENFUFQgKFNFUVVF TkNFIHJlZ3Jlc3NfcHViX3NlcTApOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9zcWwv cHVibGljYXRpb24uc3FsIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsCmlu ZGV4IDA0MjNhNzdkNWRlLi5kNzJmYzQwZDQwNCAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVz cy9zcWwvcHVibGljYXRpb24uc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL3B1YmxpY2F0 aW9uLnNxbApAQCAtMjY2LDE0ICsyNjYsMjAgQEAgQ1JFQVRFIFBVQkxJQ0FUSU9OIHJlZ3Jlc3Nf cHViX2ZvcmFsbHNlcXVlbmNlczMgRk9SIEFMTCBTRVFVRU5DRVMgRVhDRVBUIChTRVFVRU4KIC0t IGFub3RoZXIgc2NoZW1hLgogQUxURVIgU0VRVUVOQ0UgcmVncmVzc19wdWJfc2VxMiBTRVQgU0NI RU1BIHB1Yl90ZXN0OwogXGRScCsgcmVncmVzc19wdWJfZm9yYWxsc2VxdWVuY2VzMworCistLSBN b2RpZnkgdGhlIHNlcXVlbmNlIGxpc3QgaW4gdGhlIEVYQ0VQVCBjbGF1c2UKK0FMVEVSIFBVQkxJ Q0FUSU9OIHJlZ3Jlc3NfcHViX2ZvcmFsbHNlcXVlbmNlczMgU0VUIEFMTCBTRVFVRU5DRVMgRVhD RVBUIChTRVFVRU5DRSByZWdyZXNzX3B1Yl9zZXEwKTsKK1xkUnArIHJlZ3Jlc3NfcHViX2ZvcmFs bHNlcXVlbmNlczMKIFJFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CiAKIC0tIGZhaWwgLSBzZXF1 ZW5jZSBvYmplY3QgaXMgc3BlY2lmaWVkIGluIEVYQ0VQVCB0YWJsZSBsaXN0CiBDUkVBVEUgUFVC TElDQVRJT04gcmVncmVzc19wdWJfZm9yYWxsc2VxdWVuY2VzNCBGT1IgQUxMIFRBQkxFUyBFWENF UFQgKFRBQkxFIHJlZ3Jlc3NfcHViX3NlcTApOworQUxURVIgUFVCTElDQVRJT04gcmVncmVzc19w dWJfZm9yYWxsc2VxdWVuY2VzMyBTRVQgQUxMIFRBQkxFUyBFWENFUFQgKFRBQkxFIHJlZ3Jlc3Nf cHViX3NlcTApOwogCiAtLSBmYWlsIC0gdGFibGUgb2JqZWN0IGlzIHNwZWNpZmllZCBpbiBFWENF UFQgc2VxdWVuY2UgbGlzdAogQ1JFQVRFIFRBQkxFIHRhYl9zZXEoYSBpbnQpOwogQ1JFQVRFIFBV QkxJQ0FUSU9OIHJlZ3Jlc3NfcHViX2ZvcmFsbHNlcXVlbmNlczQgRk9SIEFMTCBTRVFVRU5DRVMg RVhDRVBUIChTRVFVRU5DRSB0YWJfc2VxKTsKK0FMVEVSIFBVQkxJQ0FUSU9OIHJlZ3Jlc3NfcHVi X2ZvcmFsbHNlcXVlbmNlczMgU0VUIEFMTCBTRVFVRU5DRVMgRVhDRVBUIChTRVFVRU5DRSB0YWJf c2VxKTsKIAogLS0gVGVzdCBjb21iaW5hdGlvbiBvZiBBTEwgU0VRVUVOQ0VTIGFuZCBBTEwgVEFC TEVTIHdpdGggRVhDRVBUIGNsYXVzZQogU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1In OwotLSAKMi4zNC4xCgo= --000000000000749b130655100c0d--