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 1w2Whg-000Mx9-2p for pgsql-hackers@arkaria.postgresql.org; Tue, 17 Mar 2026 15:51:33 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1w2Whf-002qGN-1Z for pgsql-hackers@arkaria.postgresql.org; Tue, 17 Mar 2026 15:51:31 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1w2Whe-002qGF-2c for pgsql-hackers@lists.postgresql.org; Tue, 17 Mar 2026 15:51:31 +0000 Received: from mail-yx1-xb130.google.com ([2607:f8b0:4864:20::b130]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1w2Whb-00000000Cz4-16O2 for pgsql-hackers@lists.postgresql.org; Tue, 17 Mar 2026 15:51:29 +0000 Received: by mail-yx1-xb130.google.com with SMTP id 956f58d0204a3-649278a69c5so5244260d50.3 for ; Tue, 17 Mar 2026 08:51:28 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1773762688; cv=none; d=google.com; s=arc-20240605; b=E0vtXdDg2a62FCWOiaB0YPFvhM9YGaer6RdvRCCVjbenCdVKC3Ajo8vlGo5EbdsDhH ytGXhhp7fX0WmmHexz9XsFI0E7b7zJ56Klq2RPbRLx156EFT7VWIkdHeI4feudwjGRY6 /pBwVdmihJcj4p3fwN+AJY5L5UwZ9n4frH9WCVqYPiiyYYai2QYnM1tLOXWZ8BfqyqCA /+8RhZ7+oapZjWRk0G+J8+aFj/+/oQiJ0OkjAB0P/BD/FhK4SelNth5bn5sFaLw1p1l7 9kNo7MemCjtECWvj9KWHw51dD9UwoQpoHKefWKF/a4+RUe8Ns2H4qMvfrDvMhnOU8p9F suow== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:dkim-signature; bh=N9mcM9FKjGpKONd1ZK+bUdsvneWZwEtwhZRMRi3Yiqk=; fh=japdfeOupeGPU+Aspp6tm+kJqpZ9PnIgRpXArAQycvI=; b=Hf6SuKE4FP82/Ba8sAq8CZkkIOEnQ72pWSwtZjoLWGTBGmxJua6VcOVfNndnUUSRMc qWyq4fCMJUSquQOHUqMITrgzxHrQkZqiSA+rb+gTuMC2eCdT2233VeCgbdPDBC1r2LSg NAVOulLgg99CczZwtN9s/tSpyeU55pGmtkN98Dzy6IlgnMuR5sVnpG/USvk2hvnQrUJ+ 6/7HtTk1SyyPtK+StbfZKjnVrli+yVWPWy6hBB8RkF/txGhZ4cignTF6jPwRRmsFb+Ry zW8tP4j/1KV/kpIigGVwhs2kdK0w1KKLK72UUrpobMUXvyTYi4EWY5I+0AyS6YSJeI51 yA3g==; 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=20230601; t=1773762688; x=1774367488; 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=N9mcM9FKjGpKONd1ZK+bUdsvneWZwEtwhZRMRi3Yiqk=; b=Ma6DtHXNByktd7k9izyDUjnRg3W1ksQyOebDUcjtMOzTaYPYrXrWhGL+FGgnNb9Ukw ROBoFTYilANCB5NbrPys6aYkrtUUI9XjZ9XSsxYgPCKc/jpVEmOxSG79EVnj05/wSc/a VAsjDLdsce4T9cT7TuaMNdSCzZiSiWILgmH+Bzce2yVvGcEwWPXo0Ecipn3+i1X/l6mD mnUpFpepzBsH1dGvMHjeSGd0YMQIagljkd77swrb8oIL8brf7OKoL00FSydWGvk7ecMf ejguv5et6v9sS6cG2jFElCr6gjFcAbzgM9FHVfEtP772DS7tR3WVvU1EyKo+un7TbME4 BwcQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1773762688; x=1774367488; 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=N9mcM9FKjGpKONd1ZK+bUdsvneWZwEtwhZRMRi3Yiqk=; b=ZjvIH+lHtmcynfNHDzhZGOXnmmp4FkNb/a4ECuJ1OJmZX9ktb5pwHdZX+fxA/jncWc vmb9ENmBZ59XzDDYRyNxnx1u+Bo/3LUF87ER/aRqTqucqUZHbT6JePS1HCcRwo4FagSx 9hXPdm7fh3exw2Ns4NLHikIY9fua4C3ZmlTOpcNUjohrcMavz8JX1uM1iOmd5wr4qJfU 8yNpp3BCUi5sHaD2/ut2qCrjsVtBPyF8H68d+m7bfFKl7ymoEXJ6hT6+VhkW26Eyvv3+ bUpO/CQclFwnUEAa7LYHIrV8euLpzyFK/DjjxvNPyyjCd/4nLa2ooBheDOFUNDk6Gxeq dmQA== X-Forwarded-Encrypted: i=1; AJvYcCWcR8Wsp+MhU92535SB/VhIydQXlhMXg8LXYQFh/SrpoHkr286LJlxyaI2kTldXUJIh9sEqLYAYFTrxcORO@lists.postgresql.org X-Gm-Message-State: AOJu0Yzuso1h4VwNYW3tYjN2qbluWpBPRZYKcyq5aqlstH0b6pc7Crp5 dBr8MY8hopGl7Km3PDogOE/L+5xlq36krzE1GJhuxVKAmlYVPZp9rsGawZHS8mW7PauMIgf+q/Q yeunyyhkBOSGZ65FSMOvqTJw9oJfJVXE= X-Gm-Gg: ATEYQzw6MxegZuDz5sEPqrklb9elth+Ae3FP3yw/y3yrzkeKsBA/2EZP0209ySBOPDz wreLAG7Cp7WaW8XoSxrZy2FGFWMEIV75mK+CRg+LkqycJ9AcIjeP9AGPjvKIArcQPkrcZHIpPmH 6pMHnJBtgF9Re0L3+2UjSHT5Y4R0ttZ2RQunacIXFqCMGTTEK+Y8SjPVxZ4/DyJ5aFHYAz128Ao 6KlqB/6RJc5iE7nJBf41Oj2e00CTV/OP9LKGOX1CU4bfVxkhKD4SfZZ429wENPb/oJhwYgWhOhL 4VzhjbMn+AdqnlqrAsBxYnRl5TtmSCeEA5b+VisRww== X-Received: by 2002:a53:ca04:0:b0:64d:2951:5fe6 with SMTP id 956f58d0204a3-64e915a31a9mr96808d50.46.1773762687660; Tue, 17 Mar 2026 08:51:27 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: vignesh C Date: Tue, 17 Mar 2026 21:21:15 +0530 X-Gm-Features: AaiRm51fH99DJcJT9TtJ_qqqhtglJHUNvUbIdF1NgNLdc73nodE3fF_qbxo7hL4 Message-ID: Subject: Re: Skipping schema changes in publication To: shveta malik Cc: Peter Smith , Amit Kapila , Masahiko Sawada , "Hayato Kuroda (Fujitsu)" , Shlok Kyal , Nisha Moond , Ashutosh Sharma , "David G. Johnston" , Dilip Kumar , "Zhijie Hou (Fujitsu)" , YeXiu <1518981153@qq.com>, Ian Lawrence Barwick , Bharath Rupireddy , PostgreSQL Hackers Content-Type: multipart/mixed; boundary="000000000000eac47e064d3a4e1c" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --000000000000eac47e064d3a4e1c Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Tue, 17 Mar 2026 at 16:31, shveta malik wrote: > > On Tue, Mar 17, 2026 at 12:23=E2=80=AFPM vignesh C = wrote: > > > > Thanks for the comments, the agreed comments have been addressed in > > the v64 version patch attached. > > > > Please find a few comments: > > > 1) > + The > + SET ALL TABLES clause is used to update the > + EXCEPT TABLE list of a FOR ALL TABLES > + publication. If EXCEPT TABLE is specified with a = list of > + tables, the existing except table list is replaced with the > specified tables. > + If EXCEPT TABLE is omitted, the existing except ta= ble > + list is cleared. > > How about changing it to (or anything better to reflect new changes): > > The SET ALL TABLES clause can transform an empty publication, or one > defined for ALL SEQUENCES (or both ALL TABLES and ALL SEQUENCES), into > a publication defined for ALL TABLES. Likewise, SET ALL SEQUENCES can > convert an empty publication, or one defined for ALL TABLES (or both > ALL TABLES and ALL SEQUENCES), into a publication defined for ALL > SEQUENCES. > In addition, SET ALL TABLES may be used to update the EXCEPT TABLE > list of a FOR ALL TABLES publication. If EXCEPT TABLE is specified > with a list of tables, the existing exclusion list is replaced with > the specified tables. If EXCEPT TABLE is omitted, the existing > exclusion list is cleared. > > 2) > +bool > +is_include_relation_publication(Oid pubid) > > The name 'is_include_relation_publication' looks slightly odd to me. > Few options are: is_explicit_table_publication, > is_table_list_publication, is_table_publication. Or anything better if > you can think of? > > 3) > is_include_relation_publication: > > + /* If we find even one included relation, we are done */ > + if (!pubrel->prexcept) > + { > + result =3D true; > + break; > + } > > we can break the loop irrespective of the 'prexcept' flag as we can > never have a combination of mixed prexcept entries for the same pub. > Whether all will be with prexcept=3Dtrue or all will be false. Even a > loop is not needed. We can fetch the first entry alone (similar to > is_schema_publication) and if that is valid, we can check the flag and > return accordingly. Something like: > > if (HeapTupleIsValid()) > { > pubrel =3D (Form_pg_publication_rel) GETSTRUCT(tup); > result =3D !pubrel->prexcept > } > > > 4) > publication_add_relation: > + /* > + * True if EXCEPT tables require explicit relcache invalidation. If > + * 'puballtables' changes, global invalidation covers them. > + */ > + inval_except_table =3D (stmt !=3D NULL) && > + (stmt->for_all_tables =3D=3D pub->alltables); > > > It took me some time to figure out why we don't need invalidation for > the case where we are converting ALL SEQ to ALL TABLEs EXCEPT(..). I > think it is worth adding more comments here. Suggestion: > > /* > * Determine whether EXCEPT tables require explicit relcache invalidation= . > * > * For CREATE PUBLICATION with EXCEPT tables, invalidation is not needed, > * since it is handled when marking the publication as ALL TABLES. > * > * For ALTER PUBLICATION, invalidation is needed only when adding an EXCE= PT > * table to a publication already marked as ALL TABLES. For publications > * that were originally empty or defined as ALL SEQUENCES and are being > * converted to ALL TABLES, invalidation is skipped here, as it is handle= d > * when marking the publication as ALL TABLES. > */ These comments are addressed in the v65 version patch attached. Also the comments from [1] have been addressed in this. [1] - https://www.postgresql.org/message-id/CAA4eK1%2BmSpCzj%2BB2PW_68DJpXH= A0KMgT9Nrz9P83_c1vdKya8g%40mail.gmail.com Regards, Vignesh --000000000000eac47e064d3a4e1c Content-Type: application/octet-stream; name="v65-0001-Add-support-for-EXCEPT-TABLE-in-ALTER-PUBLICATIO.patch" Content-Disposition: attachment; filename="v65-0001-Add-support-for-EXCEPT-TABLE-in-ALTER-PUBLICATIO.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_mmushwwx0 RnJvbSA2Y2E2NTQ5MDU2ZDhkOTA1OGZmMmQ1ODI3NzkyODc2OWRhMGUyZTQwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBWaWduZXNoIEMgPHZpZ25lc2gyMUBnbWFpbC5jb20+CkRhdGU6 IFdlZCwgNCBNYXIgMjAyNiAxNjoyODozMiArMDUzMApTdWJqZWN0OiBbUEFUQ0ggdjY1XSBBZGQg c3VwcG9ydCBmb3IgRVhDRVBUIFRBQkxFIGluIEFMVEVSIFBVQkxJQ0FUSU9OLgoKRm9sbG93aW5n IGNvbW1pdCBmZDM2NjA2NWUwLCB3aGljaCBhZGRlZCBFWENFUFQgVEFCTEUgc3VwcG9ydCB0bwpD UkVBVEUgUFVCTElDQVRJT04sIHRoaXMgY29tbWl0IGV4dGVuZHMgQUxURVIgUFVCTElDQVRJT04g dG8gYWxsb3cKbW9kaWZ5aW5nIHRoZSBleGNsdXNpb24gbGlzdC4KCk5ldyBTeW50YXg6CkFMVEVS IFBVQkxJQ0FUSU9OIG5hbWUgU0VUICBwdWJsaWNhdGlvbl9hbGxfb2JqZWN0IFssIC4uLiBdCgp3 aGVyZSBwdWJsaWNhdGlvbl9hbGxfb2JqZWN0IGlzIG9uZSBvZjoKQUxMIFRBQkxFUyBbIEVYQ0VQ VCBUQUJMRSAoIGV4Y2VwdF90YWJsZV9vYmplY3QgWywgLi4uIF0gKSBdCkFMTCBTRVFVRU5DRVMK ClRoZSBTRVQgQUxMIFRBQkxFUyBjbGF1c2UgdXBkYXRlcyBwZ19wdWJsaWNhdGlvbi5wdWJhbGx0 YWJsZXMgdG8gdHJ1ZS4KSWYgdGhlIEVYQ0VQVCBjbGF1c2UgaXMgcHJvdmlkZWQsIHRoZSBleGlz dGluZyBleGNsdXNpb24gbGlzdCBpbgpwZ19wdWJsaWNhdGlvbl9yZWwgaXMgcmVwbGFjZWQgd2l0 aCB0aGUgc3BlY2lmaWVkIHJlbGF0aW9ucy4gSWYgdGhlCkVYQ0VQVCBjbGF1c2UgaXMgb21pdHRl ZCwgYW55IGV4aXN0aW5nIGV4Y2x1c2lvbnMgZm9yIHRoZSBwdWJsaWNhdGlvbgphcmUgY2xlYXJl ZC4gU2ltaWxhcmx5LCBTRVQgQUxMIFNFUVVFTkNFUyB1cGRhdGVzCnBnX3B1YmxpY2F0aW9uLnB1 YmFsbHNlcXVlbmNlcyB0byB0cnVlLgoKTm90ZSB0aGF0IGJlY2F1c2UgdGhpcyBpcyBhIFNFVCBj b21tYW5kLCBzcGVjaWZ5aW5nIG9ubHkgb25lIG9iamVjdAp0eXBlIChlLmcuLCBTRVQgQUxMIFNF UVVFTkNFUykgd2lsbCByZXNldCB0aGUgb3RoZXIgdW5zcGVjaWZpZWQgZmxhZ3MKKGUuZy4sIHNl dHRpbmcgcHViYWxsdGFibGVzIHRvIGZhbHNlKS4KCkNvbnNpc3RlbnQgd2l0aCBDUkVBVEUgUFVC TElDQVRJT04sIG9ubHkgcm9vdCBwYXJ0aXRpb25lZCB0YWJsZXMgb3IKc3RhbmRhcmQgdGFibGVz IGNhbiBiZSBzcGVjaWZpZWQgaW4gdGhlIEVYQ0VQVCBsaXN0LiBTcGVjaWZ5aW5nIGEKcGFydGl0 aW9uIGNoaWxkIHdpbGwgcmVzdWx0IGluIGFuIGVycm9yLgoKQXV0aG9yOiB2aWduZXNoIEMgPHZp Z25lc2gyMUBnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBzaHZldGEgbWFsaWsgPHNodmV0YS5tYWxp a0BnbWFpbC5jb20+ClJldmlld2VkLWJ5OiBBbWl0IEthcGlsYSA8YW1pdC5rYXBpbGExNkBnbWFp bC5jb20+ClJldmlld2VkLWJ5OiBOaXNoYSBNb29uZCA8bmlzaGEubW9vbmQ0MTJAZ21haWwuY29t PgpEaXNjdXNzaW9uOiBodHRwczovL3Bvc3Rnci5lcy9tL0NBTERhTm0zPUpydWNqaGlpd3NZUXc1 LVBHdEJIRk9OYTZGN2hoV0NYTXNHdmg9dGFtQUBtYWlsLmdtYWlsLmNvbQotLS0KIGRvYy9zcmMv c2dtbC9yZWYvYWx0ZXJfcHVibGljYXRpb24uc2dtbCAgIHwgIDc5ICsrKysrKysrKysrKystLS0K IHNyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYyAgICAgIHwgIDY4ICsrKysrKysr KysrKystCiBzcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYyAgICB8IDEwNyAr KysrKysrKysrKysrKysrKysrKy0tCiBzcmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYyAg ICAgICAgICB8ICAgMyArLQogc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSAgICAgICAgICAgICAg ICAgfCAgMjMgKysrKysKIHNyYy9iaW4vcHNxbC90YWItY29tcGxldGUuaW4uYyAgICAgICAgICAg IHwgIDEzICsrLQogc3JjL2luY2x1ZGUvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5oICAgICAgfCAg IDQgKy0KIHNyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaCAgICAgICAgICAgIHwgICAyICsK IHNyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24ub3V0IHwgIDgzICsrKysrKysr KysrKysrKystCiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwgICAgICB8ICA1 MSArKysrKysrKysrLQogc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM3X2V4Y2VwdC5wbCAgICAg fCAgMzYgKysrKysrKy0KIDExIGZpbGVzIGNoYW5nZWQsIDQzNSBpbnNlcnRpb25zKCspLCAzNCBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3B1YmxpY2F0 aW9uLnNnbWwgYi9kb2Mvc3JjL3NnbWwvcmVmL2FsdGVyX3B1YmxpY2F0aW9uLnNnbWwKaW5kZXgg MDI4NzcwZjIxNDkuLmVhMWU4ZjZhNTUwIDEwMDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvcmVmL2Fs dGVyX3B1YmxpY2F0aW9uLnNnbWwKKysrIGIvZG9jL3NyYy9zZ21sL3JlZi9hbHRlcl9wdWJsaWNh dGlvbi5zZ21sCkBAIC0yMiw3ICsyMiw3IEBAIFBvc3RncmVTUUwgZG9jdW1lbnRhdGlvbgogIDxy ZWZzeW5vcHNpc2Rpdj4KIDxzeW5vcHNpcz4KIEFMVEVSIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJs ZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gQUREIDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj5wdWJsaWNhdGlvbl9vYmplY3Q8L3JlcGxhY2VhYmxlPiBbLCAuLi5d Ci1BTFRFUiBQVUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwv cmVwbGFjZWFibGU+IFNFVCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cHVibGljYXRp b25fb2JqZWN0PC9yZXBsYWNlYWJsZT4gWywgLi4uXQorQUxURVIgUFVCTElDQVRJT04gPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBTRVQgeyA8cmVwbGFj ZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cHVibGljYXRpb25fb2JqZWN0PC9yZXBsYWNlYWJsZT4g WywgLi4uXSB8IDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wdWJsaWNhdGlvbl9hbGxf b2JqZWN0PC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gfQogQUxURVIgUFVCTElDQVRJT04gPHJlcGxh Y2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBEUk9QIDxyZXBsYWNl YWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wdWJsaWNhdGlvbl9kcm9wX29iamVjdDwvcmVwbGFjZWFi bGU+IFssIC4uLl0KIEFMVEVSIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1l dGVyIj5uYW1lPC9yZXBsYWNlYWJsZT4gU0VUICggPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0 ZXIiPnB1YmxpY2F0aW9uX3BhcmFtZXRlcjwvcmVwbGFjZWFibGU+IFs9IDxyZXBsYWNlYWJsZSBj bGFzcz0icGFyYW1ldGVyIj52YWx1ZTwvcmVwbGFjZWFibGU+XSBbLCAuLi4gXSApCiBBTFRFUiBQ VUJMSUNBVElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFi bGU+IE9XTkVSIFRPIHsgPHJlcGxhY2VhYmxlPm5ld19vd25lcjwvcmVwbGFjZWFibGU+IHwgQ1VS UkVOVF9ST0xFIHwgQ1VSUkVOVF9VU0VSIHwgU0VTU0lPTl9VU0VSIH0KQEAgLTMzLDYgKzMzLDEx IEBAIEFMVEVSIFBVQkxJQ0FUSU9OIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5uYW1l PC9yZXBsYWNlYWJsZT4gUkVOQU1FIFRPIDxyCiAgICAgVEFCTEUgPHJlcGxhY2VhYmxlIGNsYXNz PSJwYXJhbWV0ZXIiPnRhYmxlX2FuZF9jb2x1bW5zPC9yZXBsYWNlYWJsZT4gWywgLi4uIF0KICAg ICBUQUJMRVMgSU4gU0NIRU1BIHsgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnNjaGVt YV9uYW1lPC9yZXBsYWNlYWJsZT4gfCBDVVJSRU5UX1NDSEVNQSB9IFssIC4uLiBdCiAKKzxwaHJh c2U+YW5kIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5wdWJsaWNhdGlvbl9hbGxfb2Jq ZWN0PC9yZXBsYWNlYWJsZT4gaXMgb25lIG9mOjwvcGhyYXNlPgorCisgICAgQUxMIFRBQkxFUyBb IEVYQ0VQVCBUQUJMRSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leGNlcHRfdGFi bGVfb2JqZWN0PC9yZXBsYWNlYWJsZT4gWywgLi4uIF0gKSBdCisgICAgQUxMIFNFUVVFTkNFUwor CiA8cGhyYXNlPmFuZCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+cHVibGljYXRpb25f ZHJvcF9vYmplY3Q8L3JlcGxhY2VhYmxlPiBpcyBvbmUgb2Y6PC9waHJhc2U+CiAKICAgICBUQUJM RSBbIE9OTFkgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVw bGFjZWFibGU+IFsgKiBdIFssIC4uLiBdCkBAIC00MSw2ICs0NiwxMCBAQCBBTFRFUiBQVUJMSUNB VElPTiA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IFJF TkFNRSBUTyA8cgogPHBocmFzZT5hbmQgPHJlcGxhY2VhYmxlIGNsYXNzPSJwYXJhbWV0ZXIiPnRh YmxlX2FuZF9jb2x1bW5zPC9yZXBsYWNlYWJsZT4gaXM6PC9waHJhc2U+CiAKICAgICBbIE9OTFkg XSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+ IFsgKiBdIFsgKCA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+Y29sdW1uX25hbWU8L3Jl cGxhY2VhYmxlPiBbLCAuLi4gXSApIF0gWyBXSEVSRSAoIDxyZXBsYWNlYWJsZSBjbGFzcz0icGFy YW1ldGVyIj5leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gKSBdCisKKzxwaHJhc2U+YW5kIDxyZXBs YWNlYWJsZSBjbGFzcz0icGFyYW1ldGVyIj5leGNlcHRfdGFibGVfb2JqZWN0PC9yZXBsYWNlYWJs ZT4gaXM6PC9waHJhc2U+CisKKyAgICBbIE9OTFkgXSA8cmVwbGFjZWFibGUgY2xhc3M9InBhcmFt ZXRlciI+dGFibGVfbmFtZTwvcmVwbGFjZWFibGU+IFsgKiBdCiA8L3N5bm9wc2lzPgogIDwvcmVm c3lub3BzaXNkaXY+CiAKQEAgLTUzLDE4ICs2Miw0NiBAQCBBTFRFUiBQVUJMSUNBVElPTiA8cmVw bGFjZWFibGUgY2xhc3M9InBhcmFtZXRlciI+bmFtZTwvcmVwbGFjZWFibGU+IFJFTkFNRSBUTyA8 cgogICA8L3BhcmE+CiAKICAgPHBhcmE+Ci0gICBUaGUgZmlyc3QgdGhyZWUgdmFyaWFudHMgY2hh bmdlIHdoaWNoIHRhYmxlcy9zY2hlbWFzIGFyZSBwYXJ0IG9mIHRoZQotICAgcHVibGljYXRpb24u ICBUaGUgPGxpdGVyYWw+U0VUPC9saXRlcmFsPiBjbGF1c2Ugd2lsbCByZXBsYWNlIHRoZSBsaXN0 IG9mCi0gICB0YWJsZXMvc2NoZW1hcyBpbiB0aGUgcHVibGljYXRpb24gd2l0aCB0aGUgc3BlY2lm aWVkIGxpc3Q7IHRoZSBleGlzdGluZwotICAgdGFibGVzL3NjaGVtYXMgdGhhdCB3ZXJlIHByZXNl bnQgaW4gdGhlIHB1YmxpY2F0aW9uIHdpbGwgYmUgcmVtb3ZlZC4gIFRoZQotICAgPGxpdGVyYWw+ QUREPC9saXRlcmFsPiBhbmQgPGxpdGVyYWw+RFJPUDwvbGl0ZXJhbD4gY2xhdXNlcyB3aWxsIGFk ZCBhbmQKLSAgIHJlbW92ZSBvbmUgb3IgbW9yZSB0YWJsZXMvc2NoZW1hcyBmcm9tIHRoZSBwdWJs aWNhdGlvbi4gIE5vdGUgdGhhdCBhZGRpbmcKLSAgIHRhYmxlcy9zY2hlbWFzIHRvIGEgcHVibGlj YXRpb24gdGhhdCBpcyBhbHJlYWR5IHN1YnNjcmliZWQgdG8gd2lsbCByZXF1aXJlIGFuCisgICBU aGUgZmlyc3QgdHdvIHZhcmlhbnRzIG1vZGlmeSB3aGljaCB0YWJsZXMvc2NoZW1hcyBhcmUgcGFy dCBvZiB0aGUKKyAgIHB1YmxpY2F0aW9uLiBUaGUgPGxpdGVyYWw+QUREPC9saXRlcmFsPiBhbmQg PGxpdGVyYWw+RFJPUDwvbGl0ZXJhbD4gY2xhdXNlcworICAgd2lsbCBhZGQgYW5kIHJlbW92ZSBv bmUgb3IgbW9yZSB0YWJsZXMvc2NoZW1hcyBmcm9tIHRoZSBwdWJsaWNhdGlvbi4KKyAgPC9wYXJh PgorCisgIDxwYXJhPgorICAgVGhlIHRoaXJkIHZhcmlhbnQgZWl0aGVyIG1vZGlmaWVzIHRoZSBp bmNsdWRlZCB0YWJsZXMvc2NoZW1hcworICAgb3IgbWFya3MgdGhlIHB1YmxpY2F0aW9uIGFzIDxs aXRlcmFsPkZPUiBBTEwgU0VRVUVOQ0VTPC9saXRlcmFsPiBvcgorICAgPGxpdGVyYWw+Rk9SIEFM TCBUQUJMRVM8L2xpdGVyYWw+LCBvcHRpb25hbGx5IHVzaW5nCisgICA8bGl0ZXJhbD5FWENFUFQg VEFCTEU8L2xpdGVyYWw+IHRvIGV4Y2x1ZGUgc3BlY2lmaWMgdGFibGVzLiBUaGUKKyAgIDxsaXRl cmFsPlNFVCBBTEwgVEFCTEVTPC9saXRlcmFsPiBjbGF1c2UgY2FuIHRyYW5zZm9ybSBhbiBlbXB0 eSBwdWJsaWNhdGlvbiwKKyAgIG9yIG9uZSBkZWZpbmVkIGZvciA8bGl0ZXJhbD5BTEwgU0VRVUVO Q0VTPC9saXRlcmFsPiAob3IgYm90aAorICAgPGxpdGVyYWw+QUxMIFRBQkxFUzwvbGl0ZXJhbD4g YW5kIDxsaXRlcmFsPkFMTCBTRVFVRU5DRVM8L2xpdGVyYWw+KSwgaW50bworICAgYSBwdWJsaWNh dGlvbiBkZWZpbmVkIGZvciBBTEwgVEFCTEVTLiBMaWtld2lzZSwKKyAgIDxsaXRlcmFsPlNFVCBB TEwgU0VRVUVOQ0VTPC9saXRlcmFsPiBjYW4gY29udmVydCBhbiBlbXB0eSBwdWJsaWNhdGlvbiwg b3IKKyAgIG9uZSBkZWZpbmVkIGZvciA8bGl0ZXJhbD5BTEwgVEFCTEVTPC9saXRlcmFsPiAob3Ig Ym90aAorICAgPGxpdGVyYWw+QUxMIFRBQkxFUzwvbGl0ZXJhbD4gYW5kIDxsaXRlcmFsPkFMTCBT RVFVRU5DRVM8L2xpdGVyYWw+KSwgaW50byBhCisgICBwdWJsaWNhdGlvbiBkZWZpbmVkIGZvciA8 bGl0ZXJhbD5BTEwgU0VRVUVOQ0VTPC9saXRlcmFsPi4gSW4gYWRkaXRpb24sCisgICA8bGl0ZXJh bD5TRVQgQUxMIFRBQkxFUzwvbGl0ZXJhbD4gbWF5IGJlIHVzZWQgdG8gdXBkYXRlIHRoZQorICAg PGxpdGVyYWw+RVhDRVBUIFRBQkxFPC9saXRlcmFsPiBsaXN0IG9mIGEgPGxpdGVyYWw+Rk9SIEFM TCBUQUJMRVM8L2xpdGVyYWw+CisgICBwdWJsaWNhdGlvbi4gSWYgPGxpdGVyYWw+RVhDRVBUIFRB QkxFPC9saXRlcmFsPiBpcyBzcGVjaWZpZWQgd2l0aCBhIGxpc3Qgb2YKKyAgIHRhYmxlcywgdGhl IGV4aXN0aW5nIGV4Y2x1c2lvbiBsaXN0IGlzIHJlcGxhY2VkIHdpdGggdGhlIHNwZWNpZmllZCB0 YWJsZXMuCisgICBJZiA8bGl0ZXJhbD5FWENFUFQgVEFCTEU8L2xpdGVyYWw+IGlzIG9taXR0ZWQs IHRoZSBleGlzdGluZyBleGNsdXNpb24gbGlzdAorICAgaXMgY2xlYXJlZC4gVGhlIDxsaXRlcmFs PlNFVDwvbGl0ZXJhbD4gY2xhdXNlLCB3aGVuIHVzZWQgd2l0aCBhIHB1YmxpY2F0aW9uCisgICBk ZWZpbmVkIHdpdGggPGxpdGVyYWw+Rk9SIFRBQkxFPC9saXRlcmFsPiBvcgorICAgPGxpdGVyYWw+ Rk9SIFRBQkxFUyBJTiBTQ0hFTUE8L2xpdGVyYWw+LCByZXBsYWNlcyB0aGUgbGlzdCBvZiB0YWJs ZXMvc2NoZW1hcworICAgaW4gdGhlIHB1YmxpY2F0aW9uIHdpdGggdGhlIHNwZWNpZmllZCBsaXN0 OyB0aGUgZXhpc3RpbmcgdGFibGVzIG9yIHNjaGVtYXMKKyAgIHRoYXQgd2VyZSBwcmVzZW50IGlu IHRoZSBwdWJsaWNhdGlvbiB3aWxsIGJlIHJlbW92ZWQuCisgIDwvcGFyYT4KKworICA8cGFyYT4K KyAgIE5vdGUgdGhhdCBhZGRpbmcgdGFibGVzL2V4Y2VwdCB0YWJsZXMvc2NoZW1hcyB0byBhIHB1 YmxpY2F0aW9uIHRoYXQgaXMKKyAgIGFscmVhZHkgc3Vic2NyaWJlZCB0byB3aWxsIHJlcXVpcmUg YW4KICAgIDxsaW5rIGxpbmtlbmQ9InNxbC1hbHRlcnN1YnNjcmlwdGlvbi1wYXJhbXMtcmVmcmVz aC1wdWJsaWNhdGlvbiI+Ci0gICA8bGl0ZXJhbD5BTFRFUiBTVUJTQ1JJUFRJT04gLi4uIFJFRlJF U0ggUFVCTElDQVRJT048L2xpdGVyYWw+PC9saW5rPiBhY3Rpb24gb24gdGhlCi0gICBzdWJzY3Jp YmluZyBzaWRlIGluIG9yZGVyIHRvIGJlY29tZSBlZmZlY3RpdmUuIE5vdGUgYWxzbyB0aGF0Ci0g ICA8bGl0ZXJhbD5EUk9QIFRBQkxFUyBJTiBTQ0hFTUE8L2xpdGVyYWw+IHdpbGwgbm90IGRyb3Ag YW55IHNjaGVtYSB0YWJsZXMKLSAgIHRoYXQgd2VyZSBzcGVjaWZpZWQgdXNpbmcKKyAgIDxsaXRl cmFsPkFMVEVSIFNVQlNDUklQVElPTiAuLi4gUkVGUkVTSCBQVUJMSUNBVElPTjwvbGl0ZXJhbD48 L2xpbms+IGFjdGlvbgorICAgb24gdGhlIHN1YnNjcmliaW5nIHNpZGUgaW4gb3JkZXIgdG8gYmVj b21lIGVmZmVjdGl2ZS4gTGlrZXdpc2UgYWx0ZXJpbmcgYQorICAgcHVibGljYXRpb24gdG8gc2V0 IDxsaXRlcmFsPkFMTCBUQUJMRVM8L2xpdGVyYWw+IG9yIHRvIHNldCBvciB1bnNldAorICAgPGxp dGVyYWw+QUxMIFNFUVVFTkNFUzwvbGl0ZXJhbD4gYWxzbyByZXF1aXJlcyB0aGUgc3Vic2NyaWJl ciB0byByZWZyZXNoIHRoZQorICAgcHVibGljYXRpb24uIE5vdGUgYWxzbyB0aGF0IDxsaXRlcmFs PkRST1AgVEFCTEVTIElOIFNDSEVNQTwvbGl0ZXJhbD4gd2lsbAorICAgbm90IGRyb3AgYW55IHNj aGVtYSB0YWJsZXMgdGhhdCB3ZXJlIHNwZWNpZmllZCB1c2luZwogICAgPGxpbmsgbGlua2VuZD0i c3FsLWNyZWF0ZXB1YmxpY2F0aW9uLXBhcmFtcy1mb3ItdGFibGUiPjxsaXRlcmFsPkZPUiBUQUJM RTwvbGl0ZXJhbD48L2xpbms+LwogICAgPGxpdGVyYWw+QUREIFRBQkxFPC9saXRlcmFsPi4KICAg PC9wYXJhPgpAQCAtODMsOCArMTIwLDkgQEAgQUxURVIgUFVCTElDQVRJT04gPHJlcGxhY2VhYmxl IGNsYXNzPSJwYXJhbWV0ZXIiPm5hbWU8L3JlcGxhY2VhYmxlPiBSRU5BTUUgVE8gPHIKICAgPHBh cmE+CiAgICBZb3UgbXVzdCBvd24gdGhlIHB1YmxpY2F0aW9uIHRvIHVzZSA8Y29tbWFuZD5BTFRF UiBQVUJMSUNBVElPTjwvY29tbWFuZD4uCiAgICBBZGRpbmcgYSB0YWJsZSB0byBhIHB1YmxpY2F0 aW9uIGFkZGl0aW9uYWxseSByZXF1aXJlcyBvd25pbmcgdGhhdCB0YWJsZS4KLSAgIFRoZSA8bGl0 ZXJhbD5BREQgVEFCTEVTIElOIFNDSEVNQTwvbGl0ZXJhbD4gYW5kCi0gICA8bGl0ZXJhbD5TRVQg VEFCTEVTIElOIFNDSEVNQTwvbGl0ZXJhbD4gdG8gYSBwdWJsaWNhdGlvbiByZXF1aXJlcyB0aGUK KyAgIFRoZSA8bGl0ZXJhbD5BREQgVEFCTEVTIElOIFNDSEVNQTwvbGl0ZXJhbD4sCisgICA8bGl0 ZXJhbD5TRVQgVEFCTEVTIElOIFNDSEVNQTwvbGl0ZXJhbD4sIDxsaXRlcmFsPlNFVCBBTEwgVEFC TEVTPC9saXRlcmFsPiwKKyAgIGFuZCA8bGl0ZXJhbD5TRVQgQUxMIFNFUVVFTkNFUzwvbGl0ZXJh bD4gdG8gYSBwdWJsaWNhdGlvbiByZXF1aXJlcyB0aGUKICAgIGludm9raW5nIHVzZXIgdG8gYmUg YSBzdXBlcnVzZXIuCiAgICBUbyBhbHRlciB0aGUgb3duZXIsIHlvdSBtdXN0IGJlIGFibGUgdG8g PGxpdGVyYWw+U0VUIFJPTEU8L2xpdGVyYWw+IHRvIHRoZQogICAgbmV3IG93bmluZyByb2xlLCBh bmQgdGhhdCByb2xlIG11c3QgaGF2ZSA8bGl0ZXJhbD5DUkVBVEU8L2xpdGVyYWw+CkBAIC0yMjIs NiArMjYwLDE5IEBAIEFMVEVSIFBVQkxJQ0FUSU9OIG15cHVibGljYXRpb24gQUREIFRBQkxFIHVz ZXJzICh1c2VyX2lkLCBmaXJzdG5hbWUpLCBkZXBhcnRtZW50CiAgICBDaGFuZ2UgdGhlIHNldCBv ZiBjb2x1bW5zIHB1Ymxpc2hlZCBmb3IgYSB0YWJsZToKIDxwcm9ncmFtbGlzdGluZz4KIEFMVEVS IFBVQkxJQ0FUSU9OIG15cHVibGljYXRpb24gU0VUIFRBQkxFIHVzZXJzICh1c2VyX2lkLCBmaXJz dG5hbWUsIGxhc3RuYW1lKSwgVEFCTEUgZGVwYXJ0bWVudHM7Cis8L3Byb2dyYW1saXN0aW5nPjwv cGFyYT4KKworICA8cGFyYT4KKyAgIFJlcGxhY2UgdGhlIHB1YmxpY2F0aW9uJ3MgRVhDRVBUIFRB QkxFIGxpc3Q6Cis8cHJvZ3JhbWxpc3Rpbmc+CitBTFRFUiBQVUJMSUNBVElPTiBteXB1YmxpY2F0 aW9uIFNFVCBBTEwgVEFCTEVTIEVYQ0VQVCBUQUJMRSAodXNlcnMsIGRlcGFydG1lbnRzKTsKKzwv cHJvZ3JhbWxpc3Rpbmc+PC9wYXJhPgorCisgIDxwYXJhPgorICAgUmVzZXQgdGhlIHB1YmxpY2F0 aW9uIHRvIGJlIGEgRk9SIEFMTCBUQUJMRVMgcHVibGljYXRpb24gd2l0aCBubyBleGNsdWRlZAor ICAgdGFibGVzOgorPHByb2dyYW1saXN0aW5nPgorQUxURVIgUFVCTElDQVRJT04gbXlwdWJsaWNh dGlvbiBTRVQgQUxMIFRBQkxFUzsKIDwvcHJvZ3JhbWxpc3Rpbmc+PC9wYXJhPgogCiAgIDxwYXJh PgpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jIGIvc3Jj L2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5jCmluZGV4IGE3OTE1N2M0M2JmLi45ZjA3 YzE3OGMzYiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY2F0YWxvZy9wZ19wdWJsaWNhdGlvbi5j CisrKyBiL3NyYy9iYWNrZW5kL2NhdGFsb2cvcGdfcHVibGljYXRpb24uYwpAQCAtMjcwLDYgKzI3 MCw0OCBAQCBpc19zY2hlbWFfcHVibGljYXRpb24oT2lkIHB1YmlkKQogCXJldHVybiByZXN1bHQ7 CiB9CiAKKy8qCisgKiBSZXR1cm5zIHRydWUgaWYgdGhlIHB1YmxpY2F0aW9uIGhhcyBleHBsaWNp dGx5IGluY2x1ZGVkIHJlbGF0aW9uIChpLmUuLAorICogbm90IG1hcmtlZCBhcyBFWENFUFQpLgor ICovCitib29sCitpc190YWJsZV9wdWJsaWNhdGlvbihPaWQgcHViaWQpCit7CisJUmVsYXRpb24J cHVicmVsc3JlbDsKKwlTY2FuS2V5RGF0YSBzY2Fua2V5OworCVN5c1NjYW5EZXNjIHNjYW47CisJ SGVhcFR1cGxlCXR1cDsKKwlib29sCQlyZXN1bHQgPSBmYWxzZTsKKworCXB1YnJlbHNyZWwgPSB0 YWJsZV9vcGVuKFB1YmxpY2F0aW9uUmVsUmVsYXRpb25JZCwgQWNjZXNzU2hhcmVMb2NrKTsKKwlT Y2FuS2V5SW5pdCgmc2NhbmtleSwKKwkJCQlBbnVtX3BnX3B1YmxpY2F0aW9uX3JlbF9wcnB1Ymlk LAorCQkJCUJURXF1YWxTdHJhdGVneU51bWJlciwgRl9PSURFUSwKKwkJCQlPYmplY3RJZEdldERh dHVtKHB1YmlkKSk7CisKKwlzY2FuID0gc3lzdGFibGVfYmVnaW5zY2FuKHB1YnJlbHNyZWwsCisJ CQkJCQkJICBQdWJsaWNhdGlvblJlbFBycHViaWRJbmRleElkLAorCQkJCQkJCSAgdHJ1ZSwgTlVM TCwgMSwgJnNjYW5rZXkpOworCXR1cCA9IHN5c3RhYmxlX2dldG5leHQoc2Nhbik7CisJaWYgKEhl YXBUdXBsZUlzVmFsaWQodHVwKSkKKwl7CisJCUZvcm1fcGdfcHVibGljYXRpb25fcmVsIHB1YnJl bDsKKworCQlwdWJyZWwgPSAoRm9ybV9wZ19wdWJsaWNhdGlvbl9yZWwpIEdFVFNUUlVDVCh0dXAp OworCisJCS8qCisJCSAqIFB1YmxpY2F0aW9ucyBjb250YWluIGVpdGhlciBvbmx5IEVYQ0VQVCBl bnRyaWVzIG9yIG9ubHkgaW5jbHVkZWQKKwkJICogdGFibGVzLiBTbyBjaGVja2luZyBhIHNpbmds ZSB0dXBsZSBpcyBzdWZmaWNpZW50LgorCQkgKi8KKwkJcmVzdWx0ID0gIXB1YnJlbC0+cHJleGNl cHQ7CisJfQorCisJc3lzdGFibGVfZW5kc2NhbihzY2FuKTsKKwl0YWJsZV9jbG9zZShwdWJyZWxz cmVsLCBBY2Nlc3NTaGFyZUxvY2spOworCisJcmV0dXJuIHJlc3VsdDsKK30KKwogLyoKICAqIFJl dHVybnMgdHJ1ZSBpZiB0aGUgcmVsYXRpb24gaGFzIGNvbHVtbiBsaXN0IGFzc29jaWF0ZWQgd2l0 aCB0aGUKICAqIHB1YmxpY2F0aW9uLCBmYWxzZSBvdGhlcndpc2UuCkBAIC00NDAsNyArNDgyLDcg QEAgYXR0bnVtc3RvaW50MnZlY3RvcihCaXRtYXBzZXQgKmF0dHJzKQogICovCiBPYmplY3RBZGRy ZXNzCiBwdWJsaWNhdGlvbl9hZGRfcmVsYXRpb24oT2lkIHB1YmlkLCBQdWJsaWNhdGlvblJlbElu Zm8gKnByaSwKLQkJCQkJCSBib29sIGlmX25vdF9leGlzdHMpCisJCQkJCQkgYm9vbCBpZl9ub3Rf ZXhpc3RzLCBBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3RtdCkKIHsKIAlSZWxhdGlvbglyZWw7CiAJ SGVhcFR1cGxlCXR1cDsKQEAgLTQ1NSw2ICs0OTcsMjIgQEAgcHVibGljYXRpb25fYWRkX3JlbGF0 aW9uKE9pZCBwdWJpZCwgUHVibGljYXRpb25SZWxJbmZvICpwcmksCiAJCQkJcmVmZXJlbmNlZDsK IAlMaXN0CSAgICpyZWxpZHMgPSBOSUw7CiAJaW50CQkJaTsKKwlib29sCQlpbnZhbF9leGNlcHRf dGFibGU7CisKKwkvKgorCSAqIERldGVybWluZSB3aGV0aGVyIEVYQ0VQVCB0YWJsZXMgcmVxdWly ZSBleHBsaWNpdCByZWxjYWNoZSBpbnZhbGlkYXRpb24uCisJICoKKwkgKiBGb3IgQ1JFQVRFIFBV QkxJQ0FUSU9OIHdpdGggRVhDRVBUIHRhYmxlcywgaW52YWxpZGF0aW9uIGlzIG5vdCBuZWVkZWQs CisJICogc2luY2UgaXQgaXMgaGFuZGxlZCB3aGVuIG1hcmtpbmcgdGhlIHB1YmxpY2F0aW9uIGFz IEFMTCBUQUJMRVMuCisJICoKKwkgKiBGb3IgQUxURVIgUFVCTElDQVRJT04sIGludmFsaWRhdGlv biBpcyBuZWVkZWQgb25seSB3aGVuIGFkZGluZyBhbiBFWENFUFQKKwkgKiB0YWJsZSB0byBhIHB1 YmxpY2F0aW9uIGFscmVhZHkgbWFya2VkIGFzIEFMTCBUQUJMRVMuIEZvciBwdWJsaWNhdGlvbnMK KwkgKiB0aGF0IHdlcmUgb3JpZ2luYWxseSBlbXB0eSBvciBkZWZpbmVkIGFzIEFMTCBTRVFVRU5D RVMgYW5kIGFyZSBiZWluZworCSAqIGNvbnZlcnRlZCB0byBBTEwgVEFCTEVTLCBpbnZhbGlkYXRp b24gaXMgc2tpcHBlZCBoZXJlLCBhcyBpdCBpcyBoYW5kbGVkCisJICogd2hlbiBtYXJraW5nIHRo ZSBwdWJsaWNhdGlvbiBhcyBBTEwgVEFCTEVTLgorCSAqLworCWludmFsX2V4Y2VwdF90YWJsZSA9 IChzdG10ICE9IE5VTEwpICYmCisJCShzdG10LT5mb3JfYWxsX3RhYmxlcyA9PSBwdWItPmFsbHRh Ymxlcyk7CiAKIAlyZWwgPSB0YWJsZV9vcGVuKFB1YmxpY2F0aW9uUmVsUmVsYXRpb25JZCwgUm93 RXhjbHVzaXZlTG9jayk7CiAKQEAgLTU0NCwxMCArNjAyLDEyIEBAIHB1YmxpY2F0aW9uX2FkZF9y ZWxhdGlvbihPaWQgcHViaWQsIFB1YmxpY2F0aW9uUmVsSW5mbyAqcHJpLAogCiAJLyoKIAkgKiBS ZWxhdGlvbnMgZXhjbHVkZWQgdmlhIHRoZSBFWENFUFQgY2xhdXNlIGRvIG5vdCBuZWVkIGV4cGxp Y2l0Ci0JICogaW52YWxpZGF0aW9uIGFzIENyZWF0ZVB1YmxpY2F0aW9uKCkgZnVuY3Rpb24gaW52 YWxpZGF0ZXMgYWxsIHJlbGF0aW9ucwotCSAqIGFzIHBhcnQgb2YgZGVmaW5pbmcgYSBGT1IgQUxM IFRBQkxFUyBwdWJsaWNhdGlvbi4KKwkgKiBpbnZhbGlkYXRpb24gZHVyaW5nIENSRUFURSBQVUJM SUNBVElPTiwgYXMgQ3JlYXRlUHVibGljYXRpb24oKSBmdW5jdGlvbgorCSAqIGludmFsaWRhdGVz IGFsbCByZWxhdGlvbnMgYXMgcGFydCBvZiBkZWZpbmluZyBhIEZPUiBBTEwgVEFCTEVTCisJICog cHVibGljYXRpb24uIEZvciBBTFRFUiBQVUJMSUNBVElPTiwgZXhwbGljaXQgaW52YWxpZGF0aW9u IGlzIHN0aWxsCisJICogcmVxdWlyZWQuCiAJICovCi0JaWYgKCFwcmktPmV4Y2VwdCkKKwlpZiAo IXByaS0+ZXhjZXB0IHx8IGludmFsX2V4Y2VwdF90YWJsZSkKIAl7CiAJCS8qCiAJCSAqIEludmFs aWRhdGUgcmVsY2FjaGUgc28gdGhhdCBwdWJsaWNhdGlvbiBpbmZvIGlzIHJlYnVpbHQuCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9wdWJsaWNhdGlvbmNtZHMuYyBiL3NyYy9iYWNr ZW5kL2NvbW1hbmRzL3B1YmxpY2F0aW9uY21kcy5jCmluZGV4IDZhM2NhNDc1MWZhLi44MDlhMzEy YmEzMyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMK KysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvcHVibGljYXRpb25jbWRzLmMKQEAgLTEyNzIsMTUg KzEyNzIsMjQgQEAgQWx0ZXJQdWJsaWNhdGlvblRhYmxlcyhBbHRlclB1YmxpY2F0aW9uU3RtdCAq c3RtdCwgSGVhcFR1cGxlIHR1cCwKIAkJUHVibGljYXRpb25Ecm9wVGFibGVzKHB1YmlkLCByZWxz LCBmYWxzZSk7CiAJZWxzZQkJCQkJCS8qIEFQX1NldE9iamVjdHMgKi8KIAl7Ci0JCUxpc3QJICAg Km9sZHJlbGlkcyA9IEdldEluY2x1ZGVkUHVibGljYXRpb25SZWxhdGlvbnMocHViaWQsCi0JCQkJ CQkJCQkJCQkJCQkJUFVCTElDQVRJT05fUEFSVF9ST09UKTsKKwkJYm9vbAkJaXNleGNlcHQgPSBw dWJmb3JtLT5wdWJhbGx0YWJsZXM7CisJCUxpc3QJICAgKm9sZHJlbGlkczsKIAkJTGlzdAkgICAq ZGVscmVscyA9IE5JTDsKIAkJTGlzdENlbGwgICAqb2xkbGM7CiAKLQkJVHJhbnNmb3JtUHViV2hl cmVDbGF1c2VzKHJlbHMsIHF1ZXJ5U3RyaW5nLCBwdWJmb3JtLT5wdWJ2aWFyb290KTsKKwkJaWYg KGlzZXhjZXB0KQorCQkJb2xkcmVsaWRzID0gR2V0RXhjbHVkZWRQdWJsaWNhdGlvblRhYmxlcyhw dWJpZCwKKwkJCQkJCQkJCQkJCQkgUFVCTElDQVRJT05fUEFSVF9ST09UKTsKKwkJZWxzZQorCQl7 CisJCQlvbGRyZWxpZHMgPSBHZXRJbmNsdWRlZFB1YmxpY2F0aW9uUmVsYXRpb25zKHB1YmlkLAor CQkJCQkJCQkJCQkJCQlQVUJMSUNBVElPTl9QQVJUX1JPT1QpOwogCi0JCUNoZWNrUHViUmVsYXRp b25Db2x1bW5MaXN0KHN0bXQtPnB1Ym5hbWUsIHJlbHMsIHB1Ymxpc2hfc2NoZW1hLAotCQkJCQkJ CQkgICBwdWJmb3JtLT5wdWJ2aWFyb290KTsKKwkJCVRyYW5zZm9ybVB1YldoZXJlQ2xhdXNlcyhy ZWxzLCBxdWVyeVN0cmluZywgcHViZm9ybS0+cHVidmlhcm9vdCk7CisKKwkJCUNoZWNrUHViUmVs YXRpb25Db2x1bW5MaXN0KHN0bXQtPnB1Ym5hbWUsIHJlbHMsIHB1Ymxpc2hfc2NoZW1hLAorCQkJ CQkJCQkJICAgcHViZm9ybS0+cHVidmlhcm9vdCk7CisJCX0KIAogCQkvKgogCQkgKiBUbyByZWNy ZWF0ZSB0aGUgcmVsYXRpb24gbGlzdCBmb3IgdGhlIHB1YmxpY2F0aW9uLCBsb29rIGZvcgpAQCAt MTQ5OCw2ICsxNTA3LDE2IEBAIENoZWNrQWx0ZXJQdWJsaWNhdGlvbihBbHRlclB1YmxpY2F0aW9u U3RtdCAqc3RtdCwgSGVhcFR1cGxlIHR1cCwKIAkJCQkoZXJyY29kZShFUlJDT0RFX0lOU1VGRklD SUVOVF9QUklWSUxFR0UpLAogCQkJCSBlcnJtc2coIm11c3QgYmUgc3VwZXJ1c2VyIHRvIGFkZCBv ciBzZXQgc2NoZW1hcyIpKSk7CiAKKwlpZiAoc3RtdC0+Zm9yX2FsbF90YWJsZXMgJiYgIXN1cGVy dXNlcigpKQorCQllcmVwb3J0KEVSUk9SLAorCQkJCWVycmNvZGUoRVJSQ09ERV9JTlNVRkZJQ0lF TlRfUFJJVklMRUdFKSwKKwkJCQllcnJtc2coIm11c3QgYmUgc3VwZXJ1c2VyIHRvIGFsdGVyIEZP UiBBTEwgVEFCTEVTIHB1YmxpY2F0aW9uIikpOworCisJaWYgKHN0bXQtPmZvcl9hbGxfc2VxdWVu Y2VzICYmICFzdXBlcnVzZXIoKSkKKwkJZXJlcG9ydChFUlJPUiwKKwkJCQllcnJjb2RlKEVSUkNP REVfSU5TVUZGSUNJRU5UX1BSSVZJTEVHRSksCisJCQkJZXJybXNnKCJtdXN0IGJlIHN1cGVydXNl ciB0byBhbHRlciBGT1IgQUxMIFNFUVVFTkNFUyBwdWJsaWNhdGlvbiIpKTsKKwogCS8qCiAJICog Q2hlY2sgdGhhdCB1c2VyIGlzIGFsbG93ZWQgdG8gbWFuaXB1bGF0ZSB0aGUgcHVibGljYXRpb24g dGFibGVzIGluCiAJICogc2NoZW1hCkBAIC0xNTQ2LDYgKzE1NjUsNzcgQEAgQ2hlY2tBbHRlclB1 YmxpY2F0aW9uKEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10LCBIZWFwVHVwbGUgdHVwLAogCQkJ CQkJICAgTmFtZVN0cihwdWJmb3JtLT5wdWJuYW1lKSksCiAJCQkJCWVycmRldGFpbCgiVGFibGVz IG9yIHNlcXVlbmNlcyBjYW5ub3QgYmUgYWRkZWQgdG8gb3IgZHJvcHBlZCBmcm9tIEZPUiBBTEwg U0VRVUVOQ0VTIHB1YmxpY2F0aW9ucy4iKSk7CiAJfQorCisJaWYgKHN0bXQtPmZvcl9hbGxfdGFi bGVzIHx8IHN0bXQtPmZvcl9hbGxfc2VxdWVuY2VzKQorCXsKKwkJLyoKKwkJICogSWYgdGhlIHB1 YmxpY2F0aW9uIGFscmVhZHkgY29udGFpbnMgc3BlY2lmaWMgdGFibGVzIG9yIHNjaGVtYXMsIHdl CisJCSAqIHByZXZlbnQgc3dpdGNoaW5nIHRvIGEgQUxMIHN0YXRlIHVubGVzcyB0aGUgcHVibGlj YXRpb24gaXMgZW1wdHkuCisJCSAqLworCQlpZiAoaXNfdGFibGVfcHVibGljYXRpb24ocHViZm9y bS0+b2lkKSB8fAorCQkJaXNfc2NoZW1hX3B1YmxpY2F0aW9uKHB1YmZvcm0tPm9pZCkpCisJCXsK KwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCWVycmNvZGUoRVJSQ09ERV9PQkpFQ1RfTk9UX0lOX1BS RVJFUVVJU0lURV9TVEFURSksCisJCQkJCXN0bXQtPmZvcl9hbGxfdGFibGVzID8KKwkJCQkJZXJy bXNnKCJwdWJsaWNhdGlvbiBcIiVzXCIgZG9lcyBub3Qgc3VwcG9ydCBBTEwgVEFCTEVTIG9wZXJh dGlvbnMiLCBOYW1lU3RyKHB1YmZvcm0tPnB1Ym5hbWUpKSA6CisJCQkJCWVycm1zZygicHVibGlj YXRpb24gXCIlc1wiIGRvZXMgbm90IHN1cHBvcnQgQUxMIFNFUVVFTkNFUyBvcGVyYXRpb25zIiwg TmFtZVN0cihwdWJmb3JtLT5wdWJuYW1lKSksCisJCQkJCWVycmRldGFpbCgiVGhpcyBvcGVyYXRp b24gcmVxdWlyZXMgdGhlIHB1YmxpY2F0aW9uIHRvIGJlIGRlZmluZWQgYXMgRk9SIEFMTCBUQUJM RVMvU0VRVUVOQ0VTIG9yIHRvIGJlIGVtcHR5LiIpKTsKKwkJfQorCX0KK30KKworLyoKKyAqIFVw ZGF0ZSBGT1IgQUxMIFRBQkxFUyAvIEZPUiBBTEwgU0VRVUVOQ0VTIGZsYWdzIG9mIGEgcHVibGlj YXRpb24uCisgKi8KK3N0YXRpYyB2b2lkCitBbHRlclB1YmxpY2F0aW9uQWxsRmxhZ3MoQWx0ZXJQ dWJsaWNhdGlvblN0bXQgKnN0bXQsIFJlbGF0aW9uIHJlbCwKKwkJCQkJCSBIZWFwVHVwbGUgdHVw KQoreworCUZvcm1fcGdfcHVibGljYXRpb24gcHViZm9ybTsKKwlib29sCQludWxsc1tOYXR0c19w Z19wdWJsaWNhdGlvbl07CisJYm9vbAkJcmVwbGFjZXNbTmF0dHNfcGdfcHVibGljYXRpb25dOwor CURhdHVtCQl2YWx1ZXNbTmF0dHNfcGdfcHVibGljYXRpb25dOworCWJvb2wJCWRpcnR5ID0gZmFs c2U7CisKKwlpZiAoIXN0bXQtPmZvcl9hbGxfdGFibGVzICYmICFzdG10LT5mb3JfYWxsX3NlcXVl bmNlcykKKwkJcmV0dXJuOworCisJcHViZm9ybSA9IChGb3JtX3BnX3B1YmxpY2F0aW9uKSBHRVRT VFJVQ1QodHVwKTsKKworCW1lbXNldCh2YWx1ZXMsIDAsIHNpemVvZih2YWx1ZXMpKTsKKwltZW1z ZXQobnVsbHMsIGZhbHNlLCBzaXplb2YobnVsbHMpKTsKKwltZW1zZXQocmVwbGFjZXMsIGZhbHNl LCBzaXplb2YocmVwbGFjZXMpKTsKKworCS8qIFVwZGF0ZSBGT1IgQUxMIFRBQkxFUyBmbGFnIGlm IGNoYW5nZWQgKi8KKwlpZiAoc3RtdC0+Zm9yX2FsbF90YWJsZXMgIT0gcHViZm9ybS0+cHViYWxs dGFibGVzKQorCXsKKwkJdmFsdWVzW0FudW1fcGdfcHVibGljYXRpb25fcHViYWxsdGFibGVzIC0g MV0gPQorCQkJQm9vbEdldERhdHVtKHN0bXQtPmZvcl9hbGxfdGFibGVzKTsKKwkJcmVwbGFjZXNb QW51bV9wZ19wdWJsaWNhdGlvbl9wdWJhbGx0YWJsZXMgLSAxXSA9IHRydWU7CisJCWRpcnR5ID0g dHJ1ZTsKKwl9CisKKwkvKiBVcGRhdGUgRk9SIEFMTCBTRVFVRU5DRVMgZmxhZyBpZiBjaGFuZ2Vk ICovCisJaWYgKHN0bXQtPmZvcl9hbGxfc2VxdWVuY2VzICE9IHB1YmZvcm0tPnB1YmFsbHNlcXVl bmNlcykKKwl7CisJCXZhbHVlc1tBbnVtX3BnX3B1YmxpY2F0aW9uX3B1YmFsbHNlcXVlbmNlcyAt IDFdID0KKwkJCUJvb2xHZXREYXR1bShzdG10LT5mb3JfYWxsX3NlcXVlbmNlcyk7CisJCXJlcGxh Y2VzW0FudW1fcGdfcHVibGljYXRpb25fcHViYWxsc2VxdWVuY2VzIC0gMV0gPSB0cnVlOworCQlk aXJ0eSA9IHRydWU7CisJfQorCisJaWYgKGRpcnR5KQorCXsKKwkJdHVwID0gaGVhcF9tb2RpZnlf dHVwbGUodHVwLCBSZWxhdGlvbkdldERlc2NyKHJlbCksIHZhbHVlcywKKwkJCQkJCQkJbnVsbHMs IHJlcGxhY2VzKTsKKwkJQ2F0YWxvZ1R1cGxlVXBkYXRlKHJlbCwgJnR1cC0+dF9zZWxmLCB0dXAp OworCQlDb21tYW5kQ291bnRlckluY3JlbWVudCgpOworCisJCS8qIEZvciBBTEwgVEFCTEVTLCB3 ZSBtdXN0IGludmFsaWRhdGUgYWxsIHJlbGNhY2hlIGVudHJpZXMgKi8KKwkJaWYgKHJlcGxhY2Vz W0FudW1fcGdfcHVibGljYXRpb25fcHViYWxsdGFibGVzIC0gMV0pCisJCQlDYWNoZUludmFsaWRh dGVSZWxjYWNoZUFsbCgpOworCX0KIH0KIAogLyoKQEAgLTE1OTEsOSArMTY4MSw2IEBAIEFsdGVy UHVibGljYXRpb24oUGFyc2VTdGF0ZSAqcHN0YXRlLCBBbHRlclB1YmxpY2F0aW9uU3RtdCAqc3Rt dCkKIAkJT2JqZWN0c0luUHVibGljYXRpb25Ub09pZHMoc3RtdC0+cHVib2JqZWN0cywgcHN0YXRl LCAmcmVsYXRpb25zLAogCQkJCQkJCQkgICAmZXhjZXB0cmVsYXRpb25zLCAmc2NoZW1haWRsaXN0 KTsKIAotCQkvKiBFWENFUFQgY2xhdXNlIGlzIG5vdCBzdXBwb3J0ZWQgd2l0aCBBTFRFUiBQVUJM SUNBVElPTiAqLwotCQlBc3NlcnQoZXhjZXB0cmVsYXRpb25zID09IE5JTCk7Ci0KIAkJQ2hlY2tB bHRlclB1YmxpY2F0aW9uKHN0bXQsIHR1cCwgcmVsYXRpb25zLCBzY2hlbWFpZGxpc3QpOwogCiAJ CWhlYXBfZnJlZXR1cGxlKHR1cCk7CkBAIC0xNjE1LDkgKzE3MDIsMTEgQEAgQWx0ZXJQdWJsaWNh dGlvbihQYXJzZVN0YXRlICpwc3RhdGUsIEFsdGVyUHVibGljYXRpb25TdG10ICpzdG10KQogCQkJ CQllcnJtc2coInB1YmxpY2F0aW9uIFwiJXNcIiBkb2VzIG5vdCBleGlzdCIsCiAJCQkJCQkgICBz dG10LT5wdWJuYW1lKSk7CiAKKwkJcmVsYXRpb25zID0gbGlzdF9jb25jYXQocmVsYXRpb25zLCBl eGNlcHRyZWxhdGlvbnMpOwogCQlBbHRlclB1YmxpY2F0aW9uVGFibGVzKHN0bXQsIHR1cCwgcmVs YXRpb25zLCBwc3RhdGUtPnBfc291cmNldGV4dCwKIAkJCQkJCQkgICBzY2hlbWFpZGxpc3QgIT0g TklMKTsKIAkJQWx0ZXJQdWJsaWNhdGlvblNjaGVtYXMoc3RtdCwgdHVwLCBzY2hlbWFpZGxpc3Qp OworCQlBbHRlclB1YmxpY2F0aW9uQWxsRmxhZ3Moc3RtdCwgcmVsLCB0dXApOwogCX0KIAogCS8q IENsZWFudXAuICovCkBAIC0xOTUzLDcgKzIwNDIsNyBAQCBQdWJsaWNhdGlvbkFkZFRhYmxlcyhP aWQgcHViaWQsIExpc3QgKnJlbHMsIGJvb2wgaWZfbm90X2V4aXN0cywKIAkJCWFjbGNoZWNrX2Vy cm9yKEFDTENIRUNLX05PVF9PV05FUiwgZ2V0X3JlbGtpbmRfb2JqdHlwZShyZWwtPnJkX3JlbC0+ cmVsa2luZCksCiAJCQkJCQkgICBSZWxhdGlvbkdldFJlbGF0aW9uTmFtZShyZWwpKTsKIAotCQlv YmogPSBwdWJsaWNhdGlvbl9hZGRfcmVsYXRpb24ocHViaWQsIHB1Yl9yZWwsIGlmX25vdF9leGlz dHMpOworCQlvYmogPSBwdWJsaWNhdGlvbl9hZGRfcmVsYXRpb24ocHViaWQsIHB1Yl9yZWwsIGlm X25vdF9leGlzdHMsIHN0bXQpOwogCQlpZiAoc3RtdCkKIAkJewogCQkJRXZlbnRUcmlnZ2VyQ29s bGVjdFNpbXBsZUNvbW1hbmQob2JqLCBJbnZhbGlkT2JqZWN0QWRkcmVzcywKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL3RhYmxlY21kcy5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMv dGFibGVjbWRzLmMKaW5kZXggODExOGY3YWExZWYuLmRjYWY5YjFjYjg5IDEwMDY0NAotLS0gYS9z cmMvYmFja2VuZC9jb21tYW5kcy90YWJsZWNtZHMuYworKysgYi9zcmMvYmFja2VuZC9jb21tYW5k cy90YWJsZWNtZHMuYwpAQCAtMjA2MjAsNyArMjA2MjAsOCBAQCBBVEV4ZWNBdHRhY2hQYXJ0aXRp b24oTGlzdCAqKndxdWV1ZSwgUmVsYXRpb24gcmVsLCBQYXJ0aXRpb25DbWQgKmNtZCwKIAkJCQkJ CQkgIGxpc3RfbGVuZ3RoKGV4Y2VwdHB1Ym9pZHMpLAogCQkJCQkJCSAgUmVsYXRpb25HZXRSZWxh dGlvbk5hbWUoYXR0YWNocmVsKSwKIAkJCQkJCQkgIHB1Ym5hbWVzLmRhdGEpLAotCQkJCWVycmRl dGFpbCgiVGhlIHB1YmxpY2F0aW9uIEVYQ0VQVCBjbGF1c2UgY2Fubm90IGNvbnRhaW4gdGFibGVz IHRoYXQgYXJlIHBhcnRpdGlvbnMuIikpOworCQkJCWVycmRldGFpbCgiVGhlIHB1YmxpY2F0aW9u IEVYQ0VQVCBjbGF1c2UgY2Fubm90IGNvbnRhaW4gdGFibGVzIHRoYXQgYXJlIHBhcnRpdGlvbnMu IiksCisJCQkJZXJyaGludCgiTW9kaWZ5IHRoZSBwdWJsaWNhdGlvbidzIEVYQ0VQVCBjbGF1c2Ug dXNpbmcgQUxURVIgUFVCTElDQVRJT04gLi4uIFNFVCBBTEwgVEFCTEVTLiIpKTsKIAl9CiAKIAls aXN0X2ZyZWUoZXhjZXB0cHVib2lkcyk7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIv Z3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQppbmRleCBjMjU4NDI0OTYwMy4uZjM2 MTUxN2U1ODcgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3Jj L2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAtMTE0NDUsMTEgKzExNDQ1LDE4IEBAIHB1Yl9leGNl cHRfb2JqX2xpc3Q6IFB1YmxpY2F0aW9uRXhjZXB0T2JqU3BlYwogICoKICAqIEFMVEVSIFBVQkxJ Q0FUSU9OIG5hbWUgU0VUIHB1Yl9vYmogWywgLi4uXQogICoKKyAqIEFMVEVSIFBVQkxJQ0FUSU9O IG5hbWUgU0VUIHB1Yl9hbGxfb2JqX3R5cGUgWywgLi4uXQorICoKICAqIHB1Yl9vYmogaXMgb25l IG9mOgogICoKICAqCQlUQUJMRSB0YWJsZV9uYW1lIFssIC4uLl0KICAqCQlUQUJMRVMgSU4gU0NI RU1BIHNjaGVtYV9uYW1lIFssIC4uLl0KICAqCisgKiBwdWJfYWxsX29ial90eXBlIGlzIG9uZSBv ZjoKKyAqCisgKgkJQUxMIFRBQkxFUyBbIEVYQ0VQVCBUQUJMRSAoIHRhYmxlX25hbWUgWywgLi4u XSApIF0KKyAqCQlBTEwgU0VRVUVOQ0VTCisgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiBB bHRlclB1YmxpY2F0aW9uU3RtdDoKQEAgLTExNDU5LDYgKzExNDY2LDcgQEAgQWx0ZXJQdWJsaWNh dGlvblN0bXQ6CiAKIAkJCQkJbi0+cHVibmFtZSA9ICQzOwogCQkJCQluLT5vcHRpb25zID0gJDU7 CisJCQkJCW4tPmZvcl9hbGxfdGFibGVzID0gZmFsc2U7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsK IAkJCQl9CiAJCQl8IEFMVEVSIFBVQkxJQ0FUSU9OIG5hbWUgQUREX1AgcHViX29ial9saXN0CkBA IC0xMTQ2OSw2ICsxMTQ3Nyw3IEBAIEFsdGVyUHVibGljYXRpb25TdG10OgogCQkJCQluLT5wdWJv YmplY3RzID0gJDU7CiAJCQkJCXByZXByb2Nlc3NfcHVib2JqX2xpc3Qobi0+cHVib2JqZWN0cywg eXlzY2FubmVyKTsKIAkJCQkJbi0+YWN0aW9uID0gQVBfQWRkT2JqZWN0czsKKwkJCQkJbi0+Zm9y X2FsbF90YWJsZXMgPSBmYWxzZTsKIAkJCQkJJCQgPSAoTm9kZSAqKSBuOwogCQkJCX0KIAkJCXwg QUxURVIgUFVCTElDQVRJT04gbmFtZSBTRVQgcHViX29ial9saXN0CkBAIC0xMTQ3OSw2ICsxMTQ4 OCwxOSBAQCBBbHRlclB1YmxpY2F0aW9uU3RtdDoKIAkJCQkJbi0+cHVib2JqZWN0cyA9ICQ1Owog CQkJCQlwcmVwcm9jZXNzX3B1Ym9ial9saXN0KG4tPnB1Ym9iamVjdHMsIHl5c2Nhbm5lcik7CiAJ CQkJCW4tPmFjdGlvbiA9IEFQX1NldE9iamVjdHM7CisJCQkJCW4tPmZvcl9hbGxfdGFibGVzID0g ZmFsc2U7CisJCQkJCSQkID0gKE5vZGUgKikgbjsKKwkJCQl9CisJCQl8IEFMVEVSIFBVQkxJQ0FU SU9OIG5hbWUgU0VUIHB1Yl9hbGxfb2JqX3R5cGVfbGlzdAorCQkJCXsKKwkJCQkJQWx0ZXJQdWJs aWNhdGlvblN0bXQgKm4gPSBtYWtlTm9kZShBbHRlclB1YmxpY2F0aW9uU3RtdCk7CisKKwkJCQkJ bi0+cHVibmFtZSA9ICQzOworCQkJCQluLT5hY3Rpb24gPSBBUF9TZXRPYmplY3RzOworCQkJCQlw cmVwcm9jZXNzX3B1Yl9hbGxfb2JqdHlwZV9saXN0KCQ1LCAmbi0+cHVib2JqZWN0cywKKwkJCQkJ CQkJCQkJCQkmbi0+Zm9yX2FsbF90YWJsZXMsCisJCQkJCQkJCQkJCQkJJm4tPmZvcl9hbGxfc2Vx dWVuY2VzLAorCQkJCQkJCQkJCQkJCXl5c2Nhbm5lcik7CiAJCQkJCSQkID0gKE5vZGUgKikgbjsK IAkJCQl9CiAJCQl8IEFMVEVSIFBVQkxJQ0FUSU9OIG5hbWUgRFJPUCBwdWJfb2JqX2xpc3QKQEAg LTExNDg5LDYgKzExNTExLDcgQEAgQWx0ZXJQdWJsaWNhdGlvblN0bXQ6CiAJCQkJCW4tPnB1Ym9i amVjdHMgPSAkNTsKIAkJCQkJcHJlcHJvY2Vzc19wdWJvYmpfbGlzdChuLT5wdWJvYmplY3RzLCB5 eXNjYW5uZXIpOwogCQkJCQluLT5hY3Rpb24gPSBBUF9Ecm9wT2JqZWN0czsKKwkJCQkJbi0+Zm9y X2FsbF90YWJsZXMgPSBmYWxzZTsKIAkJCQkJJCQgPSAoTm9kZSAqKSBuOwogCQkJCX0KIAkJOwpk aWZmIC0tZ2l0IGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jIGIvc3JjL2Jpbi9wc3Fs L3RhYi1jb21wbGV0ZS5pbi5jCmluZGV4IDViZGJmMTUzMGEyLi4yZjY3NDc2NGNhZCAxMDA2NDQK LS0tIGEvc3JjL2Jpbi9wc3FsL3RhYi1jb21wbGV0ZS5pbi5jCisrKyBiL3NyYy9iaW4vcHNxbC90 YWItY29tcGxldGUuaW4uYwpAQCAtMjMyOSw3ICsyMzI5LDE4IEBAIG1hdGNoX3ByZXZpb3VzX3dv cmRzKGludCBwYXR0ZXJuX2lkLAogCQlDT01QTEVURV9XSVRIKCJUQUJMRVMgSU4gU0NIRU1BIiwg IlRBQkxFIik7CiAJLyogQUxURVIgUFVCTElDQVRJT04gPG5hbWU+IFNFVCAqLwogCWVsc2UgaWYg KE1hdGNoZXMoIkFMVEVSIiwgIlBVQkxJQ0FUSU9OIiwgTWF0Y2hBbnksICJTRVQiKSkKLQkJQ09N UExFVEVfV0lUSCgiKCIsICJUQUJMRVMgSU4gU0NIRU1BIiwgIlRBQkxFIik7CisJCUNPTVBMRVRF X1dJVEgoIigiLCAiQUxMIFNFUVVFTkNFUyIsICJBTEwgVEFCTEVTIiwgIlRBQkxFUyBJTiBTQ0hF TUEiLCAiVEFCTEUiKTsKKwllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJMSUNBVElPTiIs IE1hdGNoQW55LCAiU0VUIiwgIkFMTCIpKQorCQlDT01QTEVURV9XSVRIKCJTRVFVRU5DRVMiLCAi VEFCTEVTIik7CisJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04iLCBNYXRj aEFueSwgIlNFVCIsICJBTEwiLCAiVEFCTEVTIikpCisJCUNPTVBMRVRFX1dJVEgoIkVYQ0VQVCBU QUJMRSAoIik7CisJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04iLCBNYXRj aEFueSwgIlNFVCIsICJBTEwiLCAiVEFCTEVTIiwgIkVYQ0VQVCIpKQorCQlDT01QTEVURV9XSVRI KCJUQUJMRSAoIik7CisJZWxzZSBpZiAoTWF0Y2hlcygiQUxURVIiLCAiUFVCTElDQVRJT04iLCBN YXRjaEFueSwgIlNFVCIsICJBTEwiLCAiVEFCTEVTIiwgIkVYQ0VQVCIsICJUQUJMRSIpKQorCQlD T01QTEVURV9XSVRIKCIoIik7CisJLyogQ29tcGxldGUgIkFMVEVSIFBVQkxJQ0FUSU9OIDxuYW1l PiBGT1IgVEFCTEUiIHdpdGggIjx0YWJsZT4sIC4uLiIgKi8KKwllbHNlIGlmIChNYXRjaGVzKCJB TFRFUiIsICJQVUJMSUNBVElPTiIsIE1hdGNoQW55LCAiU0VUIiwgIkFMTCIsICJUQUJMRVMiLCAi RVhDRVBUIiwgIlRBQkxFIiwgIigiKSkKKwkJQ09NUExFVEVfV0lUSF9TQ0hFTUFfUVVFUlkoUXVl cnlfZm9yX2xpc3Rfb2ZfdGFibGVzKTsKIAllbHNlIGlmIChNYXRjaGVzKCJBTFRFUiIsICJQVUJM SUNBVElPTiIsIE1hdGNoQW55LCAiQUREfERST1B8U0VUIiwgIlRBQkxFUyIsICJJTiIsICJTQ0hF TUEiKSkKIAkJQ09NUExFVEVfV0lUSF9RVUVSWV9QTFVTKFF1ZXJ5X2Zvcl9saXN0X29mX3NjaGVt YXMKIAkJCQkJCQkJICIgQU5EIG5zcG5hbWUgTk9UIExJS0UgRSdwZ1xcXFxfJSUnIiwKZGlmZiAt LWdpdCBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaCBiL3NyYy9pbmNsdWRl L2NhdGFsb2cvcGdfcHVibGljYXRpb24uaAppbmRleCBlMjUyMjg3MTNlNy4uZTAyMjkwZmZmMjcg MTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2NhdGFsb2cvcGdfcHVibGljYXRpb24uaAorKysgYi9z cmMvaW5jbHVkZS9jYXRhbG9nL3BnX3B1YmxpY2F0aW9uLmgKQEAgLTE5NSwxMCArMTk1LDEyIEBA IGV4dGVybiBPaWQJR2V0VG9wTW9zdEFuY2VzdG9ySW5QdWJsaWNhdGlvbihPaWQgcHVib2lkLCBM aXN0ICphbmNlc3RvcnMsCiAKIGV4dGVybiBib29sIGlzX3B1Ymxpc2hhYmxlX3JlbGF0aW9uKFJl bGF0aW9uIHJlbCk7CiBleHRlcm4gYm9vbCBpc19zY2hlbWFfcHVibGljYXRpb24oT2lkIHB1Ymlk KTsKK2V4dGVybiBib29sIGlzX3RhYmxlX3B1YmxpY2F0aW9uKE9pZCBwdWJpZCk7CiBleHRlcm4g Ym9vbCBjaGVja19hbmRfZmV0Y2hfY29sdW1uX2xpc3QoUHVibGljYXRpb24gKnB1YiwgT2lkIHJl bGlkLAogCQkJCQkJCQkJCU1lbW9yeUNvbnRleHQgbWN4dCwgQml0bWFwc2V0ICoqY29scyk7CiBl eHRlcm4gT2JqZWN0QWRkcmVzcyBwdWJsaWNhdGlvbl9hZGRfcmVsYXRpb24oT2lkIHB1YmlkLCBQ dWJsaWNhdGlvblJlbEluZm8gKnByaSwKLQkJCQkJCQkJCQkJICBib29sIGlmX25vdF9leGlzdHMp OworCQkJCQkJCQkJCQkgIGJvb2wgaWZfbm90X2V4aXN0cywKKwkJCQkJCQkJCQkJICBBbHRlclB1 YmxpY2F0aW9uU3RtdCAqc3RtdCk7CiBleHRlcm4gQml0bWFwc2V0ICpwdWJfY29sbGlzdF92YWxp ZGF0ZShSZWxhdGlvbiB0YXJnZXRyZWwsIExpc3QgKmNvbHVtbnMpOwogZXh0ZXJuIE9iamVjdEFk ZHJlc3MgcHVibGljYXRpb25fYWRkX3NjaGVtYShPaWQgcHViaWQsIE9pZCBzY2hlbWFpZCwKIAkJ CQkJCQkJCQkJYm9vbCBpZl9ub3RfZXhpc3RzKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25v ZGVzL3BhcnNlbm9kZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCBm ZmFkZDY2NzE2Ny4uYmQzYmY4MWNmYmYgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3Bh cnNlbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKQEAgLTQ1MjUs NiArNDUyNSw4IEBAIHR5cGVkZWYgc3RydWN0IEFsdGVyUHVibGljYXRpb25TdG10CiAJTGlzdAkg ICAqcHVib2JqZWN0czsJCS8qIE9wdGlvbmFsIGxpc3Qgb2YgcHVibGljYXRpb24gb2JqZWN0cyAq LwogCUFsdGVyUHVibGljYXRpb25BY3Rpb24gYWN0aW9uOwkvKiBXaGF0IGFjdGlvbiB0byBwZXJm b3JtIHdpdGggdGhlIGdpdmVuCiAJCQkJCQkJCQkgKiBvYmplY3RzICovCisJYm9vbAkJZm9yX2Fs bF90YWJsZXM7IC8qIFRydWUgaWYgU0VUIEFMTCBUQUJMRVMgaXMgc3BlY2lmaWVkICovCisJYm9v bAkJZm9yX2FsbF9zZXF1ZW5jZXM7CS8qIFRydWUgaWYgU0VUIEFMTCBTRVFVRU5DRVMgaXMgc3Bl Y2lmaWVkICovCiB9IEFsdGVyUHVibGljYXRpb25TdG10OwogCiB0eXBlZGVmIHN0cnVjdCBDcmVh dGVTdWJzY3JpcHRpb25TdG10CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVk L3B1YmxpY2F0aW9uLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcHVibGljYXRpb24u b3V0CmluZGV4IDY4MWQyNTY0ZWQ1Li5lNDdhYzQyZDYzNiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3Qv cmVncmVzcy9leHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9l eHBlY3RlZC9wdWJsaWNhdGlvbi5vdXQKQEAgLTEyNiw2ICsxMjYsMTMgQEAgQUxURVIgUFVCTElD QVRJT04gdGVzdHB1Yl9mb3J0YWJsZSBTRVQgVEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDsKIFRh YmxlcyBmcm9tIHNjaGVtYXM6CiAgICAgInB1Yl90ZXN0IgogCistLSBmYWlsIC0gU0VUIEFMTCBU QUJMRVMgaXMgbm90IGFsbG93ZWQgZm9yIGEgJ0ZPUiBUQUJMRScgcHVibGljYXRpb24KK0FMVEVS IFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9ydGFibGUgU0VUIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxF ICh0ZXN0cHViX3RibDEpOworRVJST1I6ICBwdWJsaWNhdGlvbiAidGVzdHB1Yl9mb3J0YWJsZSIg ZG9lcyBub3Qgc3VwcG9ydCBBTEwgVEFCTEVTIG9wZXJhdGlvbnMKK0RFVEFJTDogIFRoaXMgb3Bl cmF0aW9uIHJlcXVpcmVzIHRoZSBwdWJsaWNhdGlvbiB0byBiZSBkZWZpbmVkIGFzIEZPUiBBTEwg VEFCTEVTL1NFUVVFTkNFUyBvciB0byBiZSBlbXB0eS4KK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3Rw dWJfZm9ydGFibGUgU0VUIEFMTCBUQUJMRVM7CitFUlJPUjogIHB1YmxpY2F0aW9uICJ0ZXN0cHVi X2ZvcnRhYmxlIiBkb2VzIG5vdCBzdXBwb3J0IEFMTCBUQUJMRVMgb3BlcmF0aW9ucworREVUQUlM OiAgVGhpcyBvcGVyYXRpb24gcmVxdWlyZXMgdGhlIHB1YmxpY2F0aW9uIHRvIGJlIGRlZmluZWQg YXMgRk9SIEFMTCBUQUJMRVMvU0VRVUVOQ0VTIG9yIHRvIGJlIGVtcHR5LgogU0VUIGNsaWVudF9t aW5fbWVzc2FnZXMgPSAnRVJST1InOwogQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yc2No ZW1hIEZPUiBUQUJMRVMgSU4gU0NIRU1BIHB1Yl90ZXN0OwogLS0gc2hvdWxkIGJlIGFibGUgdG8g Y3JlYXRlIHB1YmxpY2F0aW9uIHdpdGggc2NoZW1hIGFuZCB0YWJsZSBvZiB0aGUgc2FtZQpAQCAt MjEzLDYgKzIyMCw0OSBAQCBOb3QtbnVsbCBjb25zdHJhaW50czoKICByZWdyZXNzX3B1YmxpY2F0 aW9uX3VzZXIgfCB0ICAgICAgICAgIHwgZiAgICAgICAgICAgICB8IHQgICAgICAgfCB0ICAgICAg IHwgZiAgICAgICB8IGYgICAgICAgICB8IG5vbmUgICAgICAgICAgICAgIHwgZiAgICAgICAgfCAK ICgxIHJvdykKIAorLS0gZmFpbCAtIFNFVCBBTEwgVEFCTEVTIGlzIG5vdCBhbGxvd2VkIGZvciBh IHNjaGVtYSBwdWJsaWNhdGlvbgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JzY2hlbWEg U0VUIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFIChwdWJfdGVzdC50ZXN0cHViX25vcGspOworRVJS T1I6ICBwdWJsaWNhdGlvbiAidGVzdHB1Yl9mb3JzY2hlbWEiIGRvZXMgbm90IHN1cHBvcnQgQUxM IFRBQkxFUyBvcGVyYXRpb25zCitERVRBSUw6ICBUaGlzIG9wZXJhdGlvbiByZXF1aXJlcyB0aGUg cHVibGljYXRpb24gdG8gYmUgZGVmaW5lZCBhcyBGT1IgQUxMIFRBQkxFUy9TRVFVRU5DRVMgb3Ig dG8gYmUgZW1wdHkuCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnNjaGVtYSBTRVQgQUxM IFRBQkxFUzsKK0VSUk9SOiAgcHVibGljYXRpb24gInRlc3RwdWJfZm9yc2NoZW1hIiBkb2VzIG5v dCBzdXBwb3J0IEFMTCBUQUJMRVMgb3BlcmF0aW9ucworREVUQUlMOiAgVGhpcyBvcGVyYXRpb24g cmVxdWlyZXMgdGhlIHB1YmxpY2F0aW9uIHRvIGJlIGRlZmluZWQgYXMgRk9SIEFMTCBUQUJMRVMv U0VRVUVOQ0VTIG9yIHRvIGJlIGVtcHR5LgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tCistLSBTRVQgQUxMIFRBQkxFUy9TRVFVRU5DRVMKKy0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorU0VUIGNsaWVudF9taW5fbWVzc2Fn ZXMgPSAnRVJST1InOworQ1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsX3RibHNfc2Vx czsKKy0tIEVuYWJsZSBib3RoIHB1YmFsbHRhYmxlcyBhbmQgcHViYWxsc2VxdWVuY2VzCitBTFRF UiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbF90YmxzX3NlcXMgU0VUIEFMTCBUQUJMRVMsIEFM TCBTRVFVRU5DRVM7CitcZFJwKyB0ZXN0cHViX2ZvcmFsbF90YmxzX3NlcXMKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVibGljYXRpb24gdGVz dHB1Yl9mb3JhbGxfdGJsc19zZXFzCisgICAgICAgICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRh YmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVu Y2F0ZXMgfCBHZW5lcmF0ZWQgY29sdW1ucyB8IFZpYSByb290IHwgRGVzY3JpcHRpb24gCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0t LS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0r LS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyIHwgdCAg ICAgICAgICB8IHQgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0 ICAgICAgICAgfCBub25lICAgICAgICAgICAgICB8IGYgICAgICAgIHwgCisoMSByb3cpCisKKy0t IEV4cGxpY2l0bHkgdGVzdCB0aGF0IFNFVCBBTEwgVEFCTEVTIHJlc2V0cyBwdWJhbGxzZXF1ZW5j ZXMgdG8gZmFsc2UKKy0tIFJlc3VsdCBzaG91bGQgYmU6IHB1YmFsbHRhYmxlcyA9IHRydWUsIHB1 YmFsbHNlcXVlbmNlcyA9IGZhbHNlCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbF90 YmxzX3NlcXMgU0VUIEFMTCBUQUJMRVM7CitcZFJwKyB0ZXN0cHViX2ZvcmFsbF90YmxzX3NlcXMK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHVi bGljYXRpb24gdGVzdHB1Yl9mb3JhbGxfdGJsc19zZXFzCisgICAgICAgICAgT3duZXIgICAgICAg ICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRzIHwgVXBkYXRlcyB8IERl bGV0ZXMgfCBUcnVuY2F0ZXMgfCBHZW5lcmF0ZWQgY29sdW1ucyB8IFZpYSByb290IHwgRGVzY3Jp cHRpb24gCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgcmVncmVzc19wdWJsaWNhdGlv bl91c2VyIHwgdCAgICAgICAgICB8IGYgICAgICAgICAgICAgfCB0ICAgICAgIHwgdCAgICAgICB8 IHQgICAgICAgfCB0ICAgICAgICAgfCBub25lICAgICAgICAgICAgICB8IGYgICAgICAgIHwgCiso MSByb3cpCisKKy0tIEV4cGxpY2l0bHkgdGVzdCB0aGF0IFNFVCBBTEwgU0VRVUVOQ0VTIHJlc2V0 cyBwdWJhbGx0YWJsZXMgdG8gZmFsc2UKKy0tIFJlc3VsdCBzaG91bGQgYmU6IHB1YmFsbHRhYmxl cyA9IGZhbHNlLCBwdWJhbGxzZXF1ZW5jZXMgPSB0cnVlCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0 cHViX2ZvcmFsbF90YmxzX3NlcXMgU0VUIEFMTCBTRVFVRU5DRVM7CitcZFJwKyB0ZXN0cHViX2Zv cmFsbF90YmxzX3NlcXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUHVibGljYXRpb24gdGVzdHB1Yl9mb3JhbGxfdGJsc19zZXFzCisgICAgICAg ICAgT3duZXIgICAgICAgICAgIHwgQWxsIHRhYmxlcyB8IEFsbCBzZXF1ZW5jZXMgfCBJbnNlcnRz IHwgVXBkYXRlcyB8IERlbGV0ZXMgfCBUcnVuY2F0ZXMgfCBHZW5lcmF0ZWQgY29sdW1ucyB8IFZp YSByb290IHwgRGVzY3JpcHRpb24gCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0tLS0rLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0t LS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tCisgcmVn cmVzc19wdWJsaWNhdGlvbl91c2VyIHwgZiAgICAgICAgICB8IHQgICAgICAgICAgICAgfCB0ICAg ICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgICAgfCBub25lICAgICAgICAgICAgICB8 IGYgICAgICAgIHwgCisoMSByb3cpCisKK1JFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CitEUk9Q IFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsX3RibHNfc2VxczsKIC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogLS0gRVhDRVBUIFRBQkxFIHRlc3RzIGZvciBu b3JtYWwgdGFibGVzCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0KQEAgLTI1NCw2ICszMDQsMjUgQEAgRXhjZXB0IFB1YmxpY2F0aW9uczoKICAgICAidGVzdHB1 Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUiCiAgICAgInRlc3RwdWJfZm9yYWxsdGFibGVzX2V4 Y2VwdHRhYmxlMSIKIAorLS0gUmVtb3ZlIGFsbCB0aGUgRVhDRVBUIHRhYmxlcy4KK0FMVEVSIFBV QkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxlIFNFVCBBTEwgVEFCTEVT OworXGRScCsgdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2Zv cmFsbHRhYmxlc19leGNlcHR0YWJsZQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0 YWJsZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1 bmNhdGVzIHwgR2VuZXJhdGVkIGNvbHVtbnMgfCBWaWEgcm9vdCB8IERlc2NyaXB0aW9uIAorLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IHQg ICAgICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwg dCAgICAgICAgIHwgbm9uZSAgICAgICAgICAgICAgfCBmICAgICAgICB8IAorKDEgcm93KQorCist LSBSZXBsYWNlIHRoZSBwdWJsaWNhdGlvbiBFWENFUFQgdGFibGUgbGlzdCB3aXRoIGEgc3BlY2lm aWMgRVhDRVBUIHRhYmxlLgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGx0YWJsZXNf ZXhjZXB0dGFibGUgU0VUIEFMTCBUQUJMRVMgRVhDRVBUIFRBQkxFICh0ZXN0cHViX3RibDEpOwor XGRScCsgdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQdWJsaWNhdGlvbiB0ZXN0cHViX2ZvcmFs bHRhYmxlc19leGNlcHR0YWJsZQorICAgICAgICAgIE93bmVyICAgICAgICAgICB8IEFsbCB0YWJs ZXMgfCBBbGwgc2VxdWVuY2VzIHwgSW5zZXJ0cyB8IFVwZGF0ZXMgfCBEZWxldGVzIHwgVHJ1bmNh dGVzIHwgR2VuZXJhdGVkIGNvbHVtbnMgfCBWaWEgcm9vdCB8IERlc2NyaXB0aW9uIAorLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0t LS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tKy0t LS0tLS0tLS0rLS0tLS0tLS0tLS0tLQorIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlciB8IHQgICAg ICAgICAgfCBmICAgICAgICAgICAgIHwgdCAgICAgICB8IHQgICAgICAgfCB0ICAgICAgIHwgdCAg ICAgICAgIHwgbm9uZSAgICAgICAgICAgICAgfCBmICAgICAgICB8IAorRXhjZXB0IHRhYmxlczoK KyAgICAicHVibGljLnRlc3RwdWJfdGJsMSIKKwogUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsK IERST1AgVEFCTEUgdGVzdHB1Yl90YmwyOwogRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFs bHRhYmxlcywgdGVzdHB1Yl9mb3J0YWJsZSwgdGVzdHB1Yl9mb3JzY2hlbWEsIHRlc3RwdWJfZm9y X3RibF9zY2hlbWEsIHRlc3RwdWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxlLCB0ZXN0cHViX2Zv cmFsbHRhYmxlc19leGNlcHR0YWJsZTE7CkBAIC0zNjEsNiArNDMwLDcgQEAgQ1JFQVRFIFRBQkxF IHRhYl9tYWluIChhIGludCkgUEFSVElUSU9OIEJZIFJBTkdFKGEpOwogQUxURVIgVEFCTEUgdGFi X21haW4gQVRUQUNIIFBBUlRJVElPTiB0ZXN0cHViX3Jvb3QgRk9SIFZBTFVFUyBGUk9NICgwKSBU TyAoMjAwKTsKIEVSUk9SOiAgY2Fubm90IGF0dGFjaCB0YWJsZSAidGVzdHB1Yl9yb290IiBhcyBw YXJ0aXRpb24gYmVjYXVzZSBpdCBpcyByZWZlcmVuY2VkIGluIHB1YmxpY2F0aW9uICJ0ZXN0cHVi OCIgRVhDRVBUIGNsYXVzZQogREVUQUlMOiAgVGhlIHB1YmxpY2F0aW9uIEVYQ0VQVCBjbGF1c2Ug Y2Fubm90IGNvbnRhaW4gdGFibGVzIHRoYXQgYXJlIHBhcnRpdGlvbnMuCitISU5UOiAgTW9kaWZ5 IHRoZSBwdWJsaWNhdGlvbidzIEVYQ0VQVCBjbGF1c2UgdXNpbmcgQUxURVIgUFVCTElDQVRJT04g Li4uIFNFVCBBTEwgVEFCTEVTLgogUkVTRVQgY2xpZW50X21pbl9tZXNzYWdlczsKIERST1AgVEFC TEUgdGVzdHB1Yl9yb290LCB0ZXN0cHViX3BhcnQxLCB0YWJfbWFpbjsKIERST1AgUFVCTElDQVRJ T04gdGVzdHB1Yjg7CkBAIC0xNTQxLDcgKzE2MTEsMTggQEAgRVJST1I6ICBwZXJtaXNzaW9uIGRl bmllZCB0byBjaGFuZ2Ugb3duZXIgb2YgcHVibGljYXRpb24gInRlc3RwdWI0IgogSElOVDogIFRo ZSBvd25lciBvZiBhIEZPUiBBTEwgVEFCTEVTIG9yIEFMTCBTRVFVRU5DRVMgb3IgVEFCTEVTIElO IFNDSEVNQSBwdWJsaWNhdGlvbiBtdXN0IGJlIGEgc3VwZXJ1c2VyLgogQUxURVIgUFVCTElDQVRJ T04gdGVzdHB1YjQgb3duZXIgdG8gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyOyAtLSBvawogU0VU IFJPTEUgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyOwotRFJPUCBQVUJMSUNBVElPTiB0ZXN0cHVi NDsKK1NFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsKK0NSRUFURSBQVUJMSUNBVElP TiB0ZXN0cHViNSBGT1IgQUxMIFRBQkxFUzsKK1JFU0VUIGNsaWVudF9taW5fbWVzc2FnZXM7CitB TFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViNSBPV05FUiBUTyByZWdyZXNzX3B1YmxpY2F0aW9uX3Vz ZXIzOworU0VUIFJPTEUgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyMzsKKy0tIGZhaWwgLSBTRVQg QUxMIFRBQkxFUyBvbiBhIHB1YmxpY2F0aW9uIHJlcXVpcmVzIHN1cGVydXNlciBwcml2aWxlZ2Vz CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViNSBTRVQgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUg KHRlc3RwdWJfdGJsMSk7IC0tIGZhaWwKK0VSUk9SOiAgbXVzdCBiZSBzdXBlcnVzZXIgdG8gYWx0 ZXIgRk9SIEFMTCBUQUJMRVMgcHVibGljYXRpb24KK0FMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWI1 IFNFVCBBTEwgVEFCTEVTOyAtLSBmYWlsCitFUlJPUjogIG11c3QgYmUgc3VwZXJ1c2VyIHRvIGFs dGVyIEZPUiBBTEwgVEFCTEVTIHB1YmxpY2F0aW9uCitTRVQgUk9MRSByZWdyZXNzX3B1YmxpY2F0 aW9uX3VzZXI7CitEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWI0LCB0ZXN0cHViNTsKIERST1AgUk9M RSByZWdyZXNzX3B1YmxpY2F0aW9uX3VzZXIzOwogUkVWT0tFIENSRUFURSBPTiBEQVRBQkFTRSBy ZWdyZXNzaW9uIEZST00gcmVncmVzc19wdWJsaWNhdGlvbl91c2VyMjsKIERST1AgVEFCTEUgdGVz dHB1Yl9wYXJ0ZWQ7CmRpZmYgLS1naXQgYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlv bi5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJsaWNhdGlvbi5zcWwKaW5kZXggNDA1NTc5 ZGFkNTIuLjg0NGI5YzdjYjVjIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wdWJs aWNhdGlvbi5zcWwKKysrIGIvc3JjL3Rlc3QvcmVncmVzcy9zcWwvcHVibGljYXRpb24uc3FsCkBA IC03NCw2ICs3NCwxMCBAQCBBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnRhYmxlIERST1Ag VEFCTEVTIElOIFNDSEVNQSBwdWJfdGVzdDsKIEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9y dGFibGUgU0VUIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3Q7CiBcZFJwKyB0ZXN0cHViX2ZvcnRh YmxlCiAKKy0tIGZhaWwgLSBTRVQgQUxMIFRBQkxFUyBpcyBub3QgYWxsb3dlZCBmb3IgYSAnRk9S IFRBQkxFJyBwdWJsaWNhdGlvbgorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3J0YWJsZSBT RVQgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKHRlc3RwdWJfdGJsMSk7CitBTFRFUiBQVUJMSUNB VElPTiB0ZXN0cHViX2ZvcnRhYmxlIFNFVCBBTEwgVEFCTEVTOworCiBTRVQgY2xpZW50X21pbl9t ZXNzYWdlcyA9ICdFUlJPUic7CiBDUkVBVEUgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JzY2hlbWEg Rk9SIFRBQkxFUyBJTiBTQ0hFTUEgcHViX3Rlc3Q7CiAtLSBzaG91bGQgYmUgYWJsZSB0byBjcmVh dGUgcHVibGljYXRpb24gd2l0aCBzY2hlbWEgYW5kIHRhYmxlIG9mIHRoZSBzYW1lCkBAIC0xMDUs NiArMTA5LDMzIEBAIFNFTEVDVCBwdWJuYW1lLCBwdWJhbGx0YWJsZXMgRlJPTSBwZ19wdWJsaWNh dGlvbiBXSEVSRSBwdWJuYW1lID0gJ3Rlc3RwdWJfZm9yYWxsCiBcZCsgdGVzdHB1Yl90YmwyCiBc ZFJwKyB0ZXN0cHViX2ZvcmFsbHRhYmxlcwogCistLSBmYWlsIC0gU0VUIEFMTCBUQUJMRVMgaXMg bm90IGFsbG93ZWQgZm9yIGEgc2NoZW1hIHB1YmxpY2F0aW9uCitBTFRFUiBQVUJMSUNBVElPTiB0 ZXN0cHViX2ZvcnNjaGVtYSBTRVQgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKHB1Yl90ZXN0LnRl c3RwdWJfbm9wayk7CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcnNjaGVtYSBTRVQgQUxM IFRBQkxFUzsKKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CistLSBTRVQgQUxMIFRBQkxFUy9TRVFVRU5DRVMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLQorU0VUIGNsaWVudF9taW5fbWVzc2FnZXMgPSAnRVJST1InOwor Q1JFQVRFIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsX3RibHNfc2VxczsKKworLS0gRW5hYmxl IGJvdGggcHViYWxsdGFibGVzIGFuZCBwdWJhbGxzZXF1ZW5jZXMKK0FMVEVSIFBVQkxJQ0FUSU9O IHRlc3RwdWJfZm9yYWxsX3RibHNfc2VxcyBTRVQgQUxMIFRBQkxFUywgQUxMIFNFUVVFTkNFUzsK K1xkUnArIHRlc3RwdWJfZm9yYWxsX3RibHNfc2VxcworCistLSBFeHBsaWNpdGx5IHRlc3QgdGhh dCBTRVQgQUxMIFRBQkxFUyByZXNldHMgcHViYWxsc2VxdWVuY2VzIHRvIGZhbHNlCistLSBSZXN1 bHQgc2hvdWxkIGJlOiBwdWJhbGx0YWJsZXMgPSB0cnVlLCBwdWJhbGxzZXF1ZW5jZXMgPSBmYWxz ZQorQUxURVIgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGxfdGJsc19zZXFzIFNFVCBBTEwgVEFC TEVTOworXGRScCsgdGVzdHB1Yl9mb3JhbGxfdGJsc19zZXFzCisKKy0tIEV4cGxpY2l0bHkgdGVz dCB0aGF0IFNFVCBBTEwgU0VRVUVOQ0VTIHJlc2V0cyBwdWJhbGx0YWJsZXMgdG8gZmFsc2UKKy0t IFJlc3VsdCBzaG91bGQgYmU6IHB1YmFsbHRhYmxlcyA9IGZhbHNlLCBwdWJhbGxzZXF1ZW5jZXMg PSB0cnVlCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbF90YmxzX3NlcXMgU0VUIEFM TCBTRVFVRU5DRVM7CitcZFJwKyB0ZXN0cHViX2ZvcmFsbF90YmxzX3NlcXMKKworUkVTRVQgY2xp ZW50X21pbl9tZXNzYWdlczsKK0RST1AgUFVCTElDQVRJT04gdGVzdHB1Yl9mb3JhbGxfdGJsc19z ZXFzOworCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIC0t IEVYQ0VQVCBUQUJMRSB0ZXN0cyBmb3Igbm9ybWFsIHRhYmxlcwogLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC0xMTksNiArMTUwLDE0IEBAIENSRUFURSBQ VUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZTEgRk9SIEFMTCBUQUJM RVMgRVhDRVBUIFRBQkxFCiAtLSBpbiB0aGUgRVhDRVBUIFRBQkxFIGNsYXVzZQogXGQgdGVzdHB1 Yl90YmwxCiAKKy0tIFJlbW92ZSBhbGwgdGhlIEVYQ0VQVCB0YWJsZXMuCitBTFRFUiBQVUJMSUNB VElPTiB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZSBTRVQgQUxMIFRBQkxFUzsKK1xk UnArIHRlc3RwdWJfZm9yYWxsdGFibGVzX2V4Y2VwdHRhYmxlCisKKy0tIFJlcGxhY2UgdGhlIHB1 YmxpY2F0aW9uIEVYQ0VQVCB0YWJsZSBsaXN0IHdpdGggYSBzcGVjaWZpYyBFWENFUFQgdGFibGUu CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViX2ZvcmFsbHRhYmxlc19leGNlcHR0YWJsZSBTRVQg QUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKHRlc3RwdWJfdGJsMSk7CitcZFJwKyB0ZXN0cHViX2Zv cmFsbHRhYmxlc19leGNlcHR0YWJsZQorCiBSRVNFVCBjbGllbnRfbWluX21lc3NhZ2VzOwogRFJP UCBUQUJMRSB0ZXN0cHViX3RibDI7CiBEUk9QIFBVQkxJQ0FUSU9OIHRlc3RwdWJfZm9yYWxsdGFi bGVzLCB0ZXN0cHViX2ZvcnRhYmxlLCB0ZXN0cHViX2ZvcnNjaGVtYSwgdGVzdHB1Yl9mb3JfdGJs X3NjaGVtYSwgdGVzdHB1Yl9mb3JhbGx0YWJsZXNfZXhjZXB0dGFibGUsIHRlc3RwdWJfZm9yYWxs dGFibGVzX2V4Y2VwdHRhYmxlMTsKQEAgLTk5MSw3ICsxMDMwLDE3IEBAIEFMVEVSIFBVQkxJQ0FU SU9OIHRlc3RwdWI0IG93bmVyIHRvIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlcjI7IC0tIGZhaWwK IEFMVEVSIFBVQkxJQ0FUSU9OIHRlc3RwdWI0IG93bmVyIHRvIHJlZ3Jlc3NfcHVibGljYXRpb25f dXNlcjsgLS0gb2sKIAogU0VUIFJPTEUgcmVncmVzc19wdWJsaWNhdGlvbl91c2VyOwotRFJPUCBQ VUJMSUNBVElPTiB0ZXN0cHViNDsKK1NFVCBjbGllbnRfbWluX21lc3NhZ2VzID0gJ0VSUk9SJzsK K0NSRUFURSBQVUJMSUNBVElPTiB0ZXN0cHViNSBGT1IgQUxMIFRBQkxFUzsKK1JFU0VUIGNsaWVu dF9taW5fbWVzc2FnZXM7CitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViNSBPV05FUiBUTyByZWdy ZXNzX3B1YmxpY2F0aW9uX3VzZXIzOworU0VUIFJPTEUgcmVncmVzc19wdWJsaWNhdGlvbl91c2Vy MzsKKy0tIGZhaWwgLSBTRVQgQUxMIFRBQkxFUyBvbiBhIHB1YmxpY2F0aW9uIHJlcXVpcmVzIHN1 cGVydXNlciBwcml2aWxlZ2VzCitBTFRFUiBQVUJMSUNBVElPTiB0ZXN0cHViNSBTRVQgQUxMIFRB QkxFUyBFWENFUFQgVEFCTEUgKHRlc3RwdWJfdGJsMSk7IC0tIGZhaWwKK0FMVEVSIFBVQkxJQ0FU SU9OIHRlc3RwdWI1IFNFVCBBTEwgVEFCTEVTOyAtLSBmYWlsCisKK1NFVCBST0xFIHJlZ3Jlc3Nf cHVibGljYXRpb25fdXNlcjsKK0RST1AgUFVCTElDQVRJT04gdGVzdHB1YjQsIHRlc3RwdWI1Owog RFJPUCBST0xFIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlcjM7CiAKIFJFVk9LRSBDUkVBVEUgT04g REFUQUJBU0UgcmVncmVzc2lvbiBGUk9NIHJlZ3Jlc3NfcHVibGljYXRpb25fdXNlcjI7CmRpZmYg LS1naXQgYS9zcmMvdGVzdC9zdWJzY3JpcHRpb24vdC8wMzdfZXhjZXB0LnBsIGIvc3JjL3Rlc3Qv c3Vic2NyaXB0aW9uL3QvMDM3X2V4Y2VwdC5wbAppbmRleCAyNzI5ZGY0ZDVjMC4uY2JmZTQyMDEx ZWYgMTAwNjQ0Ci0tLSBhL3NyYy90ZXN0L3N1YnNjcmlwdGlvbi90LzAzN19leGNlcHQucGwKKysr IGIvc3JjL3Rlc3Qvc3Vic2NyaXB0aW9uL3QvMDM3X2V4Y2VwdC5wbApAQCAtMTUyLDE4ICsxNTIs NTAgQEAgJHJlc3VsdCA9CiAgICRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNxbCgncG9zdGdyZXMn LCAiU0VMRUNUIGNvdW50KCopIEZST00gY2hpbGQxIik7CiBpcygkcmVzdWx0LCBxcSgxMCksICdj aGVjayByZXBsaWNhdGVkIGluc2VydHMgb24gc3Vic2NyaWJlcicpOwogCiskbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgncG9zdGdyZXMnLAorCSJDUkVBVEUgVEFCTEUgdGFiMiBBUyBTRUxFQ1Qg Z2VuZXJhdGVfc2VyaWVzKDEsMTApIEFTIGEiKTsKKyRub2RlX3N1YnNjcmliZXItPnNhZmVfcHNx bCgncG9zdGdyZXMnLCAiQ1JFQVRFIFRBQkxFIHRhYjIgKGEgaW50KSIpOworCisjIFJlcGxhY2Ug dGhlIEVYQ0VQVCBUQUJMRSBsaXN0IHNvIHRoYXQgb25seSB0YWIyIGlzIGV4Y2x1ZGVkLgorJG5v ZGVfcHVibGlzaGVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIgUFVCTElDQVRJT04g dGFiX3B1YiBTRVQgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUgKHRhYjIpIik7CisKKyMgUmVmcmVz aCB0aGUgc3Vic2NyaXB0aW9uIHNvIHRoZSBzdWJzY3JpYmVyIHBpY2tzIHVwIHRoZSB1cGRhdGVk CisjIHB1YmxpY2F0aW9uIGRlZmluaXRpb24gYW5kIGluaXRpYXRlcyB0YWJsZSBzeW5jaHJvbml6 YXRpb24uCiskbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkiQUxURVIg U1VCU0NSSVBUSU9OIHRhYl9zdWIgUkVGUkVTSCBQVUJMSUNBVElPTiIpOworCisjIFdhaXQgZm9y IGluaXRpYWwgdGFibGUgc3luYyB0byBmaW5pc2gKKyRub2RlX3N1YnNjcmliZXItPndhaXRfZm9y X3N1YnNjcmlwdGlvbl9zeW5jKCRub2RlX3B1Ymxpc2hlciwgJ3RhYl9zdWInKTsKKworIyBWZXJp ZnkgdGhhdCBpbml0aWFsIHRhYmxlIHN5bmNocm9uaXphdGlvbiBkb2VzIG5vdCBvY2N1ciBmb3Ig dGFibGVzCisjIGxpc3RlZCBpbiB0aGUgRVhDRVBUIFRBQkxFIGNsYXVzZS4KKyRyZXN1bHQgPQor ICAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywgIlNFTEVDVCBjb3VudCgq KSBGUk9NIHRhYjIiKTsKK2lzKCRyZXN1bHQsIHFxKDApLAorCSdjaGVjayB0aGVyZSBpcyBubyBp bml0aWFsIGRhdGEgY29waWVkIGZvciB0aGUgdGFibGVzIHNwZWNpZmllZCBpbiB0aGUgRVhDRVBU IFRBQkxFIGNsYXVzZScKKyk7CisKKyMgVmVyaWZ5IHRoYXQgdGFibGUgc3luY2hyb25pemF0aW9u IG9jY3VycyBvbmNlIHRhYjEgaXMgcmVtb3ZlZCBmcm9tIHRoZQorIyBFWENFUFQgVEFCTEUgY2xh dXNlIHZpYSBTRVQgQUxMIFRBQkxFUyBFWENFUFQgVEFCTEUuCiskcmVzdWx0ID0KKyAgJG5vZGVf c3Vic2NyaWJlci0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsICJTRUxFQ1QgY291bnQoKikgRlJPTSB0 YWIxIik7CitpcygkcmVzdWx0LCBxcSgyMCksCisJJ2NoZWNrIHRoYXQgdGhlIGRhdGEgaXMgY29w aWVkIGFzIHRoZSB0YWIxIGlzIHJlbW92ZWQgZnJvbSBFWENFUFQgVEFCTEUgY2xhdXNlJworKTsK KwogIyBjbGVhbnVwCiAkbm9kZV9zdWJzY3JpYmVyLT5zYWZlX3BzcWwoCiAJJ3Bvc3RncmVzJywg cXEoCiAJRFJPUCBTVUJTQ1JJUFRJT04gdGFiX3N1YjsKIAlUUlVOQ0FURSBUQUJMRSB0YWIxOwot CURST1AgVEFCTEUgcGFyZW50LCBwYXJlbnQxLCBjaGlsZCwgY2hpbGQxOworCURST1AgVEFCTEUg cGFyZW50LCBwYXJlbnQxLCBjaGlsZCwgY2hpbGQxLCB0YWIyOwogKSk7CiAkbm9kZV9wdWJsaXNo ZXItPnNhZmVfcHNxbCgKIAkncG9zdGdyZXMnLCBxcSgKIAlEUk9QIFBVQkxJQ0FUSU9OIHRhYl9w dWI7CiAJVFJVTkNBVEUgVEFCTEUgdGFiMTsKLSAgICBEUk9QIFRBQkxFIHBhcmVudCwgcGFyZW50 MSwgY2hpbGQsIGNoaWxkMTsKKyAgICBEUk9QIFRBQkxFIHBhcmVudCwgcGFyZW50MSwgY2hpbGQs IGNoaWxkMSwgdGFiMjsKICkpOwogCiAjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tIAoyLjQzLjAKCg== --000000000000eac47e064d3a4e1c--