Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lOWN6-000879-TH for pgsql-hackers@arkaria.postgresql.org; Tue, 23 Mar 2021 02:02:17 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.92) (envelope-from ) id 1lOWN5-0002h2-Dr for pgsql-hackers@arkaria.postgresql.org; Tue, 23 Mar 2021 02:02:15 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lOWN4-0002gv-KB for pgsql-hackers@lists.postgresql.org; Tue, 23 Mar 2021 02:02:15 +0000 Received: from esa5.fujitsucc.c3s2.iphmx.com ([68.232.159.76]) by magus.postgresql.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lOWN0-0007Wn-GT for pgsql-hackers@postgresql.org; Tue, 23 Mar 2021 02:02:14 +0000 IronPort-SDR: 0eFHNPX9f4B4dc+p+ze760iVgxGjYkIVTwYMwBe0jl7j6YUgMKP7WViI71fMrucaLq8XNitUWn Qlsu/53nayN7CpEusjNBF6sOVt4HCh3Q6Y9HUfVF7EwBMFQ2RfulxJuG9HcrdbFwgGHDtVhm/+ s6nmrN2gvztmKKEblop++sjPXNzEMPMvc2xisA+yA16mG0H0l46mHkV9Z0030b9lMUx/aXKD1L y2OQAVP5xH/GCePEutW85yq2J11Lty6q0pfRMW3t8SdSh+eEOx/Ln7b3B3/ixBpn5y3/gGnsOg wog= X-IronPort-AV: E=McAfee;i="6000,8403,9931"; a="28354046" X-IronPort-AV: E=Sophos;i="5.81,270,1610377200"; d="scan'208,223";a="28354046" Received: from mail-sg2apc01lp2052.outbound.protection.outlook.com (HELO APC01-SG2-obe.outbound.protection.outlook.com) ([104.47.125.52]) by ob1.fujitsucc.c3s2.iphmx.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 23 Mar 2021 11:01:59 +0900 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jrGvNSMFAb2S1SFNY2pGwzKI5J23eXpVG5C9gp1lrVTL53UX5tvPr89/4pq+BVY4BlAsg2GViKB69M0rnPriTRa0a1T5gUAq0FiFdNV887ziOyjFACD0Sgws8DycDkrllkPi8KK+FZQkdep2odXFKByrOuBr/kc5q4XT0/XJ1aS1BV4bmhrq2V3JO7OuuXtqsoZNHds3JFX08oKsK0MO65eFP+nHYSGRD480G0TVONe5fbpul1uQbO1rhLzD6vZAa6zAkUkUN4uKU9nzndl/jMJI4UNxsOh/uFL8sMG54ubeZYQvhTJEQ1UKvlscXtecWfE/TC++Mu9TWEtGBTy0Bw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=qDHBW4Z42lEIIZ22cY2JD5RiVz64vOnjWJ2HEsdqh8g=; b=kzVa3xzERMaEbbPR3Gb3E6nL78TUTMHHz/Iz8+GBwcZyXBcOMrvPPW1oONIflrfN+WfA3G8D1h4oXPy7L+mSPbMzioZq7BVB9gD+uOHgouHSznaz2UkH0EvuB0bZtaxaMXbBiEKdo+nPMfkrye+lWe11CnycE33Sc9LoTNx4hareZk3BTJ0NjCgdpRyoagLyLUfwHThFQ2jINI4+JSWIbxHqBAQIZZzy+QURl3qgSV1m2BKTmrMx+Jl3eGIJfS3B89BFYlPW9Sk+EyHHlFSkCK12cpfEBrxmMSJVbLat2oqMTax4R5ButupyAOz3kVS3YChgbEAHmMRoPyMR3m9/bA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=fujitsu.com; dmarc=pass action=none header.from=fujitsu.com; dkim=pass header.d=fujitsu.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=fujitsu.onmicrosoft.com; s=selector2-fujitsu-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=qDHBW4Z42lEIIZ22cY2JD5RiVz64vOnjWJ2HEsdqh8g=; b=EZVpqaV9IJA/P6HBz84MYiXq1Yj2ohJfyXA42mQ7hwrlX3hJfGB/yHUja38/VlVbUYybdDVJoaZXIiXScKXxYNwzOPzKxB4EFx45FuWWFpUlK3vf83k3yQDB0OmeccSKdzl/S14505wGfzrcAjeADVSuZ8SX4UxwX3Erjo2iHbM= Received: from TYAPR01MB2990.jpnprd01.prod.outlook.com (2603:1096:404:86::19) by TY2PR01MB2026.jpnprd01.prod.outlook.com (2603:1096:404:10::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3955.18; Tue, 23 Mar 2021 02:01:57 +0000 Received: from TYAPR01MB2990.jpnprd01.prod.outlook.com ([fe80::eca1:8db3:31b2:ca74]) by TYAPR01MB2990.jpnprd01.prod.outlook.com ([fe80::eca1:8db3:31b2:ca74%7]) with mapi id 15.20.3955.027; Tue, 23 Mar 2021 02:01:57 +0000 From: "tsunakawa.takay@fujitsu.com" To: 'Andrey Lepikhov' CC: 'Justin Pryzby' , 'Zhihong Yu' , Amit Langote , "tanghy.fnst@fujitsu.com" , Alexey Kondratov , Michael Paquier , Ashutosh Bapat , Ashutosh Bapat , Etsuro Fujita , "pgsql-hackers@postgresql.org" , Tomas Vondra , "houzj.fnst@fujitsu.com" Subject: RE: [POC] Fast COPY FROM command for the table with foreign partitions Thread-Topic: [POC] Fast COPY FROM command for the table with foreign partitions Thread-Index: AQHWN/crhn4Pc9rF5E+53WpQoGGSR6jEcjEAgABhkACAFGdHAIADNQkAgAg8aICAH8xHAIAFujgAgAlsz4CACu2nAIAACTeAgAgOxYCABiEEgIAWNCoAgARjCQCAACHFAIAV4S2AgAAzfoCAAWEOgIAAH/oAgABLtQCAABpagIABIAkAgAAP2YCAADT+gIABYbCAgAlg0wCAB//jAIAriWIQgAC04wCAAMEwsIA5DkKAgAEOgdCABxWAgIAA2sHAgABipQCAFG9CAIAMcKsAgAGyqgCACZU+gIABTfiAgBOUj4CAAKadgIAZC3EAgAgjE4CAABnKgIAACQYwgAqrC6CACProAIAAgkJAgAA914CAAQsfkIAY4jGAgABe2wCAAAyagIAATcMQgADcroCAAU7WYIAa186AgAB74dA= Date: Tue, 23 Mar 2021 02:01:56 +0000 Message-ID: References: <20210214210338.GN1793@telsasoft.com> <20210303202703.GI29832@telsasoft.com> <20210304203949.GQ29832@telsasoft.com> In-Reply-To: Accept-Language: ja-JP, en-US Content-Language: ja-JP X-MS-Has-Attach: yes X-MS-TNEF-Correlator: authentication-results: postgrespro.ru; dkim=none (message not signed) header.d=none;postgrespro.ru; dmarc=none action=none header.from=fujitsu.com; x-originating-ip: [218.44.52.178] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: a4fd3062-396b-4b9a-cecd-08d8ed9fa374 x-ms-traffictypediagnostic: TY2PR01MB2026: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:6108; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: MmctDNTf2ulCUz8DLyLNeGB0lt8J8PKPfXycjXACK1qzAFzoplpNsWFB0eWVz2cCAP08r8IHkRnGPhUqgxAeB+dKKh7Dq8gDG/DEZfsSY9CA08xSYRfO10C4gA6IONPDvyCxyLb/1uieegtBuoFfbTub7o7WkZ4ZFNwKdVxZ9ECaI8Wh8ke7fLcg+5BH2ITM0Dl2sVuHoSJx9yMAbPPIV7wslp6G2FmW2hVkCxz+wM9vm4ViCfNlqqukOgCg3RgaxIOYrV+4baAPDhHZvJtwu4BxvcLzjBwBjuOdFrFJ5TWbAl8QxiFANn2Pir79K++Twjvp3N7chRt8u6Jexk1i6iWSDHw0qV2xsodXjV/UWLKNCkfy9z6STPIwHPvqcs1BU+SPDvDRd17i/qpkDjkYYat1zihblr7Wi3t+zWidp5jtgIvmc/pGHgPeXAYWNwbMJIfz/tmPnL4AEkNadgPVoi+jrJaCnAHmfpdppRFONBwzOU3QdWByI3ncNiCiQ71QZC9hQseXEFIvnfcKCYhGsN6s1BEUFn8VDbrMQ2B4mEvtmgBLKUjWh0pIzPKEuuMaYY4ImC2z7Vk0ttN6l0kcY1+mLDuf55xH8ZIf+cGQ/eq/hZ2cRORUACcsC9WiCdzC0CsJy2WuVV5kunSigoN29DMBmZKjq6r6Uoo2sLzkmPU= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TYAPR01MB2990.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(366004)(346002)(396003)(376002)(136003)(39860400002)(4744005)(7696005)(7416002)(71200400001)(107886003)(38100700001)(6916009)(66476007)(66446008)(66556008)(76116006)(66616009)(66946007)(186003)(99936003)(64756008)(8676002)(4326008)(52536014)(9686003)(5660300002)(2906002)(6506007)(33656002)(26005)(8936002)(478600001)(54906003)(86362001)(85182001)(55016002)(316002);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata: =?iso-2022-jp?B?OUprZVg1Z2FsNmF1T0VVK2dqV3FPRnl4WmkyYUQ0UFhoaVA2dGVUWk5H?= =?iso-2022-jp?B?d2VPaE9zZnB3Rm41ZzFaTzF3Y0tISGZwYTR0OGgrd3M4YXVZT0c2aHVG?= =?iso-2022-jp?B?d2RYVExEUmNEdXNvMkxFT0pqNWVwRkZwa1dHTzhkRE5qMXRKNEF0ek5T?= =?iso-2022-jp?B?YW00UGQzM2ltRkMvL3VYajd1eGlYMFRrSzlmRHhNN0lzUnJlZURhMjk2?= =?iso-2022-jp?B?TVZmVW5zbjY0a1FTUXNtbTloNXNtZ3c3VmxIYUtrWkxzREZmL2UzYmNl?= =?iso-2022-jp?B?SGhNc2NzZmVrYW1mU3pHZzZESW8xc25obzBGWlhpODZ1bmk3QzdZd1Q5?= =?iso-2022-jp?B?OEcvdlcrMEt3QnpWQVMreDc5d1JNUmNnZ2dEb2xZOHRjbDlpYmdxZEkv?= =?iso-2022-jp?B?dmdrOXdBeXFqdndXZUtRT1lNTmV3Nm1WSUJ0STVHNHlLeGVHbDdVQjI5?= =?iso-2022-jp?B?bWZFelZzQVdCV2d0d09MWWNHcXRTU2ZsKzNydWU5OHJUelF4ajZONkFN?= =?iso-2022-jp?B?OGhtL01xdlZzcUswajR4d1lCMkxSWEw0R3hNclVpUXg5UklzK1FiaVZL?= =?iso-2022-jp?B?NGJranNRaW0yU2luVEx3QlFLaTFtdHlpYmdueGoyZFR3aWc3dnZ2bHh5?= =?iso-2022-jp?B?c0s3QnA0Z1lEc21aZWFjc3lYWmk3RVhlaXBrbnBWUzJ6d0htRUJtVHl2?= =?iso-2022-jp?B?NjJicUZ1ZmJ1NWZNY1lyN2tRcGlkdUdYY1JlSUg0TUFVa0NQZ2V0cnlm?= =?iso-2022-jp?B?RVo4Zmtza004RTMyVFI1bnh0V1B6T0hxWWR3dEdwMGhtUUltRHJaa2Mw?= =?iso-2022-jp?B?MVVVR2ZXTXdhQVdDR0llOGMreFRjZkMyNU1ZNjBKVEhCMlRqZmpDM29o?= =?iso-2022-jp?B?eXpHcWpSc0ZTZTZ0cWxLeXk5MTQzem9oVi80NUZNSVpOUHRXNFlvRGNK?= =?iso-2022-jp?B?Z0pNSkRvaDlVOUUwTU96cTNsUCszcVNkM1dXRWJZM1U1bnVnaks1bFlj?= =?iso-2022-jp?B?LzZjSzdMNzNFVzJRemUrekVubVphbVBqcDlRdkFoYk1Na1g5WnpiOGFG?= =?iso-2022-jp?B?b3ZBY1NkSjB2T0ZiMjNWeGsrak5VUjNUb0NlUkpnMzBSYlVpbkF1cWRo?= =?iso-2022-jp?B?TjJ1NTNmYXg4WXYzbG9BY1FYUUJkRktsTVMxbCtWN0ppb3h2NUFha1pn?= =?iso-2022-jp?B?azBuSUp0T2JTN2dQazR2elk0Z2s0Y2NNcUl2ejBickdVemYxWitPNHdT?= =?iso-2022-jp?B?d0oyb2pOOVlWRWh5UkdhL2U4cEZiWFlFcHI0ZDRqRStKOGIzUkl2bUVT?= =?iso-2022-jp?B?WmV1WHV0M0NhbTc2R3lONDVGQ0oxMWhPM3M0U0YwTXpDbU8ya3M2Skdp?= =?iso-2022-jp?B?QUZLQUhXU3RqLzJZeGx4Q0hqRU9wS2xrcUZwbXRIOFJoaTk1Y2xxczg3?= =?iso-2022-jp?B?RzJxc1R2eXBiMEJ6Ylk5MThkQXkrYlpuTHZiczRJbWxlWkhKbHA1MHJh?= =?iso-2022-jp?B?b0tsSUo4b09iWnloZlg0SVFCS2twS3AzVVdIM0xVNnl2UUwvR2NjQjRP?= =?iso-2022-jp?B?YnJOS2RydURydk8wWHQwY0dHNDlPNGY2QzR2ZnFYZGxLY1dCUkFoY2pH?= =?iso-2022-jp?B?RzJabHFHZlR5SlRkNXM3cEhzSXgxNUNqdTdBQ3JqdEZaeEF3aEFaT2Ur?= =?iso-2022-jp?B?Tm9iSlVPcTNmNGZ4UzJyVlU5UnZXWjE2SnFhbjQvN0x0NGs5SEFySk9Q?= =?iso-2022-jp?B?eGpNQ2NSeTkxL2hjMFhrdVZJYTY5TmczazhqWW9DN0ltQ0c2L1JtbW9E?= =?iso-2022-jp?B?Y01tWkNicEZnVmd2VXN0NGRaamFTeUMvZmRDb2oybHZvOGtjbWVaUjl3?= =?iso-2022-jp?B?ZHFQUnJKN2d4YUhQcDdzUDhEVUZ5M1gyZ0E1Y0VFOGMrd2ZLK0FPT2xO?= Content-Type: multipart/mixed; boundary="_002_TYAPR01MB29909FDCD92F5EEE68E37767FE649TYAPR01MB2990jpnp_" MIME-Version: 1.0 X-OriginatorOrg: fujitsu.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: TYAPR01MB2990.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: a4fd3062-396b-4b9a-cecd-08d8ed9fa374 X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Mar 2021 02:01:56.9387 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: a19f121d-81e1-4858-a9d8-736e267fd4c7 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: 9Pd1gTjAabPxl3zvXQu/TbSFnQJHZvy8/zIWteZuT3TCg8nqJqPfo8OIjeHoTPtuOhQAiNMZc9yN2Ymtf4iDO/sAaLT8xGN6u4xvLubty14= X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY2PR01MB2026 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_002_TYAPR01MB29909FDCD92F5EEE68E37767FE649TYAPR01MB2990jpnp_ Content-Type: text/plain; charset="iso-2022-jp" Content-Transfer-Encoding: quoted-printable From: Andrey Lepikhov > Macros _() at the postgresExecForeignCopy routine: > if (PQputCopyEnd(conn, OK ? NULL : _("canceled by server")) <=3D 0) >=20 > uses gettext. Under linux it is compiled ok, because (as i understood) > uses standard implementation of gettext: > objdump -t contrib/postgres_fdw/postgres_fdw.so | grep 'gettext' > gettext@@GLIBC_2.2.5 >=20 > but in MacOS (and maybe somewhere else) we need to explicitly link > libintl library in the Makefile: > SHLIB_LINK +=3D $(filter -lintl, $(LIBS) >=20 > Also, we may not use gettext at all in this part of the code. I'm afraid so, because no extension in contrib/ has po/ directory. I just = removed _() and rebased the patch on HEAD. Regards Takayuki Tsunakawa =09 --_002_TYAPR01MB29909FDCD92F5EEE68E37767FE649TYAPR01MB2990jpnp_ Content-Type: application/octet-stream; name="v21-0001-Fast-COPY-FROM-into-the-foreign-or-sharded-table.patch" Content-Description: v21-0001-Fast-COPY-FROM-into-the-foreign-or-sharded-table.patch Content-Disposition: attachment; filename="v21-0001-Fast-COPY-FROM-into-the-foreign-or-sharded-table.patch"; size=50205; creation-date="Tue, 23 Mar 2021 01:56:17 GMT"; modification-date="Tue, 23 Mar 2021 01:56:17 GMT" Content-Transfer-Encoding: base64 RnJvbSA4ZTY2MGFjZmFjYjdkOTg2NmQyYmNmMjhiYzBiNGQzNjdhZDNjZTE0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBUYWtheXVraSBUc3VuYWthd2EgPHRzdW5ha2F3YS50YWtheUBm dWppdHN1LmNvbT4KRGF0ZTogVHVlLCA5IEZlYiAyMDIxIDEyOjUwOjAwICswOTAwClN1YmplY3Q6 IFtQQVRDSCB2MjFdIEZhc3QgQ09QWSBGUk9NIGludG8gdGhlIGZvcmVpZ24gb3Igc2hhcmRlZCB0 YWJsZS4KClRoaXMgZmVhdHVyZSBlbmFibGVzIGJ1bGsgQ09QWSBpbnRvIGZvcmVpZ24gdGFibGUg d2hlbiBtdWx0aS1pbnNlcnQKaXMgcG9zc2libGUgYW5kIGZvcmVpZ24gdGFibGUgaGFzIG5vbi16 ZXJvIG51bWJlciBvZiBjb2x1bW5zLgoKVGhlIGZvbGxvd2luZyByb3V0aW5lcyBhcmUgYWRkZWQg dG8gdGhlIEZEVyBpbnRlcmZhY2U6CiogQmVnaW5Gb3JlaWduQ29weQoqIEV4ZWNGb3JlaWduQ29w eQoqIEVuZEZvcmVpZ25Db3B5CgpCZWdpbkZvcmVpZ25Db3B5IGFuZCBFbmRGb3JlaWduQ29weSBp bml0aWFsaXplIGFuZCBmcmVlCnRoZSBDb3B5U3RhdGUgb2YgYnVsayBDT1BZLiBUaGUgRXhlY0Zv cmVpZ25Db3B5IHJvdXRpbmUgcnVucwonQ09QWSAuLi4gRlJPTSBTVERJTicgY29tbWFuZCB0byB0 aGUgZm9yZWlnbiBzZXJ2ZXIsIGluIGFuIGl0ZXJhdGl2ZQptYW5uZXIgdG8gc2VuZCB0dXBsZXMg dXNpbmcgdGhlIENvcHlUbygpIG1hY2hpbmVyeS4KCkNvZGUgdGhhdCBjb25zdHJ1Y3RzIGEgbGlz dCBvZiBjb2x1bW5zIGZvciBhIGdpdmVuIGZvcmVpZ24gcmVsYXRpb24KaW4gdGhlIGRlcGFyc2VB bmFseXplU3FsKCkgcm91dGluZSBpcyBzcGxpdCBpbnRvIGRlcGFyc2VSZWxDb2x1bW5MaXN0KCku Ckl0IGlzIHJldXNlZCBpbiBkZXBhcnNlQ29weUZyb21TcWwoKS4KCkFkZGVkIFRBUC10ZXN0cyBv biB0aGUgc3BlY2lmaWMgY29ybmVyIGNhc2VzIG9mIENPUFkgRlJPTSBTVERJTiBvcGVyYXRpb24u CgpCeSB0aGUgYW5hbG9neSBvZiBDb3B5RnJvbSgpIHRoZSBDb3B5U3RhdGUgc3RydWN0dXJlIHdh cyBleHRlbmRlZAp3aXRoIGRhdGFfZGVzdF9jYiBjYWxsYmFjay4gSXQgaXMgdXNlZCBmb3Igc2Vu ZCB0ZXh0IHJlcHJlc2VudGF0aW9uCm9mIGEgdHVwbGUgdG8gYSBjdXN0b20gZGVzdGluYXRpb24u ClRoZSBQZ0Zkd01vZGlmeVN0YXRlIHN0cnVjdHVyZSBpcyBleHRlbmRlZCB3aXRoIHRoZSBjc3Rh dGUgZmllbGQuCkl0IGlzIG5lZWRlZCBmb3IgYXZvaWQgcmVwZWF0ZWQgaW5pdGlhbGl6YXRpb24g b2YgQ29weVN0YXRlLiBBbHNvIGZvciB0aGlzCnJlYXNvbiBDb3B5VG8oKSByb3V0aW5lIGlzIHNw bGl0IGludG8gdGhlIHNldCBvZiByb3V0aW5lcyBDb3B5VG9TdGFydCgpLwpDb3B5VG8oKS9Db3B5 VG9GaW5pc2goKS4KCldoZW4gMGQ1ZjA1Y2RlIGludHJvZHVjZWQgc3VwcG9ydCBmb3IgdXNpbmcg bXVsdGktaW5zZXJ0IG1vZGUgd2hlbgpjb3B5aW5nIGludG8gcGFydGl0aW9uZWQgdGFibGVzLCBp dCBpbnRyb2R1Y2VkIHNpbmdsZSB2YXJpYWJsZSBvZgplbnVtIHR5cGUgQ29weUluc2VydE1ldGhv ZCBzaGFyZWQgYWNyb3NzIGFsbCBwb3RlbnRpYWwgdGFyZ2V0CnJlbGF0aW9ucyAocGFydGl0aW9u cykgdGhhdCwgYWxvbmcgd2l0aCBzb21lIHRhcmdldCByZWxhdGlvbgpwcm9wZXJ0aWVzLCBkaWN0 YXRlZCB3aGV0aGVyIHRvIGVuZ2FnZSBtdWx0aS1pbnNlcnQgbW9kZSBmb3IgYSBnaXZlbgp0YXJn ZXQgcmVsYXRpb24uCgpDaGFuZ2UgdGhhdCBkZWNpc2lvbiBsb2dpYyB0byB0aGUgY29tYmluYXRp b24gb2YgRXhlY011bHRpSW5zZXJ0QWxsb3dlZCgpCmFuZCBpdHMgY2FsbGVyLiBUaGUgZm9ybWVy IGVuY2Fwc3VsYXRlcyB0aGUgY29tbW9uIGNyaXRlcmlhIHRvIGFsbG93Cm11bHRpLWluc2VydC4g VGhlIGxhdHRlciB1c2VzIGFkZGl0aW9uYWwgY3JpdGVyaWEgYW5kIHNldHMgdGhlIG5ldwpib29s ZWFuIGZpZWxkIHJpX3VzZXNNdWx0aUluc2VydCBvZiBSZXN1bHRSZWxJbmZvLgpUaGF0IHByZXZl bnRzIHJlcGVhdGVkIGNvbXB1dGF0aW9uIG9mIHRoZSBzYW1lIGluZm9ybWF0aW9uIGluIHNvbWUg Y2FzZXMsCmVzcGVjaWFsbHkgZm9yIHBhcnRpdGlvbnMsIGFuZCB0aGUgbmV3IGFycmFuZ2VtZW50 IHJlc3VsdHMgaW4gc2xpZ2h0bHkKbW9yZSByZWFkYWJpbGl0eS4KRW51bSBDb3B5SW5zZXJ0TWV0 aG9kIGlzIHJlbW92ZWQuCgpBdXRob3JzOiBBbmRyZXkgTGVwaWtob3YsIEFzaHV0b3NoIEJhcGF0 LCBBbWl0IExhbmdvdGUsIFRha2F5dWtpIFRzdW5ha2F3YQpSZXZpZXdlZC1ieTogQXNodXRvc2gg QmFwYXQsIEFtaXQgTGFuZ290ZSwgVGFrYXl1a2kgVHN1bmFrYXdhCkRpc2N1c3Npb246Cmh0dHBz Oi8vd3d3LnBvc3RncmVzcWwub3JnL21lc3NhZ2UtaWQvZmxhdC8zZDA5MDlkYy0zNjkxLWE1NzYt MjA4YS05MDk4NmU1NTQ4OWYlNDBwb3N0Z3Jlc3Byby5ydQotLS0KIGNvbnRyaWIvcG9zdGdyZXNf ZmR3L2RlcGFyc2UuYyAgICAgICAgICAgICAgICAgfCAgNjMgKysrKy0tCiBjb250cmliL3Bvc3Rn cmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0IHwgIDQ2ICsrKystCiBjb250cmliL3Bv c3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYyAgICAgICAgICAgIHwgMTQxICsrKysrKysrKysrKysK IGNvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5oICAgICAgICAgICAgfCAgIDEgKwog Y29udHJpYi9wb3N0Z3Jlc19mZHcvc3FsL3Bvc3RncmVzX2Zkdy5zcWwgICAgICB8ICA0NSArKysr CiBkb2Mvc3JjL3NnbWwvZmR3aGFuZGxlci5zZ21sICAgICAgICAgICAgICAgICAgIHwgIDcxICsr KysrKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYyAgICAgICAgICAgICAgICAgICAgfCAg IDIgKy0KIHNyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tLmMgICAgICAgICAgICAgICAgfCAy NzEgKysrKysrKysrKystLS0tLS0tLS0tLS0tLQogc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRv LmMgICAgICAgICAgICAgICAgICB8ICA4OCArKysrKystLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Iv ZXhlY01haW4uYyAgICAgICAgICAgICAgICB8ICA0NCArKysrCiBzcmMvYmFja2VuZC9leGVjdXRv ci9leGVjUGFydGl0aW9uLmMgICAgICAgICAgIHwgIDM3ICsrKy0KIHNyYy9pbmNsdWRlL2NvbW1h bmRzL2NvcHkuaCAgICAgICAgICAgICAgICAgICAgfCAgIDUgKwogc3JjL2luY2x1ZGUvY29tbWFu ZHMvY29weWZyb21faW50ZXJuYWwuaCAgICAgICB8ICAxMCAtCiBzcmMvaW5jbHVkZS9leGVjdXRv ci9leGVjdXRvci5oICAgICAgICAgICAgICAgIHwgICAxICsKIHNyYy9pbmNsdWRlL2ZvcmVpZ24v ZmR3YXBpLmggICAgICAgICAgICAgICAgICAgfCAgMTUgKysKIHNyYy9pbmNsdWRlL25vZGVzL2V4 ZWNub2Rlcy5oICAgICAgICAgICAgICAgICAgfCAgIDggKy0KIDE2IGZpbGVzIGNoYW5nZWQsIDYz NyBpbnNlcnRpb25zKCspLCAyMTEgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvY29udHJpYi9w b3N0Z3Jlc19mZHcvZGVwYXJzZS5jIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvZGVwYXJzZS5jCmlu ZGV4IDZmYWY0OTkuLjdlMTBmOGIgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2Rl cGFyc2UuYworKysgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9kZXBhcnNlLmMKQEAgLTE4NCw2ICsx ODQsOCBAQCBzdGF0aWMgdm9pZCBhcHBlbmRBZ2dPcmRlckJ5KExpc3QgKm9yZGVyTGlzdCwgTGlz dCAqdGFyZ2V0TGlzdCwKIHN0YXRpYyB2b2lkIGFwcGVuZEZ1bmN0aW9uTmFtZShPaWQgZnVuY2lk LCBkZXBhcnNlX2V4cHJfY3h0ICpjb250ZXh0KTsKIHN0YXRpYyBOb2RlICpkZXBhcnNlU29ydEdy b3VwQ2xhdXNlKEluZGV4IHJlZiwgTGlzdCAqdGxpc3QsIGJvb2wgZm9yY2VfY29sbm8sCiAJCQkJ CQkJCQlkZXBhcnNlX2V4cHJfY3h0ICpjb250ZXh0KTsKK3N0YXRpYyBMaXN0ICpkZXBhcnNlUmVs Q29sdW1uTGlzdChTdHJpbmdJbmZvIGJ1ZiwgUmVsYXRpb24gcmVsLAorCQkJCQkJCQkgIGJvb2wg ZW5jbG9zZV9pbl9wYXJlbnMpOwogCiAvKgogICogSGVscGVyIGZ1bmN0aW9ucwpAQCAtMTg1OSw2 ICsxODYxLDIzIEBAIGRlcGFyc2VVcGRhdGVTcWwoU3RyaW5nSW5mbyBidWYsIFJhbmdlVGJsRW50 cnkgKnJ0ZSwKIH0KIAogLyoKKyAqIERlcGFyc2UgcmVtb3RlIENPUFkgRlJPTSBzdGF0ZW1lbnQK KyAqCisgKiBOb3RlIHRoYXQgdGhpcyBleHBsaWNpdGx5IHNwZWNpZmllcyB0aGUgbGlzdCBvZiBD T1BZJ3MgdGFyZ2V0IGNvbHVtbnMKKyAqIHRvIGFjY291bnQgZm9yIHRoZSBmYWN0IHRoYXQgdGhl IHJlbW90ZSB0YWJsZSdzIGNvbHVtbnMgbWF5IG5vdCBtYXRjaAorICogZXhhY3RseSB3aXRoIHRo ZSBjb2x1bW5zIGRlY2xhcmVkIGluIHRoZSBsb2NhbCBkZWZpbml0aW9uLgorICovCit2b2lkCitk ZXBhcnNlQ29weUZyb21TcWwoU3RyaW5nSW5mbyBidWYsIFJlbGF0aW9uIHJlbCkKK3sKKwlhcHBl bmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIkNPUFkgIik7CisJZGVwYXJzZVJlbGF0aW9uKGJ1Ziwg cmVsKTsKKwkodm9pZCkgZGVwYXJzZVJlbENvbHVtbkxpc3QoYnVmLCByZWwsIHRydWUpOworCisJ YXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICIgRlJPTSBTVERJTiAiKTsKK30KKworLyoKICAq IGRlcGFyc2UgcmVtb3RlIFVQREFURSBzdGF0ZW1lbnQKICAqCiAgKiAnYnVmJyBpcyB0aGUgb3V0 cHV0IGJ1ZmZlciB0byBhcHBlbmQgdGhlIHN0YXRlbWVudCB0bwpAQCAtMjExOSw2ICsyMTM4LDMw IEBAIGRlcGFyc2VBbmFseXplU2l6ZVNxbChTdHJpbmdJbmZvIGJ1ZiwgUmVsYXRpb24gcmVsKQog dm9pZAogZGVwYXJzZUFuYWx5emVTcWwoU3RyaW5nSW5mbyBidWYsIFJlbGF0aW9uIHJlbCwgTGlz dCAqKnJldHJpZXZlZF9hdHRycykKIHsKKwlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIlNF TEVDVCAiKTsKKwkqcmV0cmlldmVkX2F0dHJzID0gZGVwYXJzZVJlbENvbHVtbkxpc3QoYnVmLCBy ZWwsIGZhbHNlKTsKKworCS8qIERvbid0IGdlbmVyYXRlIGJhZCBzeW50YXggZm9yIHplcm8tY29s dW1uIHJlbGF0aW9uLiAqLworCWlmIChsaXN0X2xlbmd0aCgqcmV0cmlldmVkX2F0dHJzKSA9PSAw KQorCQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIk5VTEwiKTsKKworCS8qCisJICogQ29u c3RydWN0IEZST00gY2xhdXNlCisJICovCisJYXBwZW5kU3RyaW5nSW5mb1N0cmluZyhidWYsICIg RlJPTSAiKTsKKwlkZXBhcnNlUmVsYXRpb24oYnVmLCByZWwpOworfQorCisvKgorICogQ29uc3Ry dWN0IHRoZSBsaXN0IG9mIGNvbHVtbnMgb2YgZ2l2ZW4gZm9yZWlnbiByZWxhdGlvbiBpbiB0aGUg b3JkZXIgdGhleQorICogYXBwZWFyIGluIHRoZSB0dXBsZSBkZXNjcmlwdG9yIG9mIHRoZSByZWxh dGlvbi4gSWdub3JlIGFueSBkcm9wcGVkIGNvbHVtbnMuCisgKiBVc2UgY29sdW1uIG5hbWVzIG9u IHRoZSBmb3JlaWduIHNlcnZlciBpbnN0ZWFkIG9mIGxvY2FsIG5hbWVzLgorICoKKyAqIE9wdGlv bmFsbHkgZW5jbG9zZSB0aGUgbGlzdCBpbiBwYXJhbnRoZXNlcy4KKyAqLworc3RhdGljIExpc3Qg KgorZGVwYXJzZVJlbENvbHVtbkxpc3QoU3RyaW5nSW5mbyBidWYsIFJlbGF0aW9uIHJlbCwgYm9v bCBlbmNsb3NlX2luX3BhcmVucykKK3sKIAlPaWQJCQlyZWxpZCA9IFJlbGF0aW9uR2V0UmVsaWQo cmVsKTsKIAlUdXBsZURlc2MJdHVwZGVzYyA9IFJlbGF0aW9uR2V0RGVzY3IocmVsKTsKIAlpbnQJ CQlpOwpAQCAtMjEyNiwxMCArMjE2OSw4IEBAIGRlcGFyc2VBbmFseXplU3FsKFN0cmluZ0luZm8g YnVmLCBSZWxhdGlvbiByZWwsIExpc3QgKipyZXRyaWV2ZWRfYXR0cnMpCiAJTGlzdAkgICAqb3B0 aW9uczsKIAlMaXN0Q2VsbCAgICpsYzsKIAlib29sCQlmaXJzdCA9IHRydWU7CisJTGlzdAkgICAq cmV0cmlldmVkX2F0dHJzID0gTklMOwogCi0JKnJldHJpZXZlZF9hdHRycyA9IE5JTDsKLQotCWFw cGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiU0VMRUNUICIpOwogCWZvciAoaSA9IDA7IGkgPCB0 dXBkZXNjLT5uYXR0czsgaSsrKQogCXsKIAkJLyogSWdub3JlIGRyb3BwZWQgY29sdW1ucy4gKi8K QEAgLTIxMzgsNiArMjE3OSw5IEBAIGRlcGFyc2VBbmFseXplU3FsKFN0cmluZ0luZm8gYnVmLCBS ZWxhdGlvbiByZWwsIExpc3QgKipyZXRyaWV2ZWRfYXR0cnMpCiAKIAkJaWYgKCFmaXJzdCkKIAkJ CWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiLCAiKTsKKwkJZWxzZSBpZiAoZW5jbG9zZV9p bl9wYXJlbnMpCisJCQlhcHBlbmRTdHJpbmdJbmZvQ2hhcihidWYsICcoJyk7CisKIAkJZmlyc3Qg PSBmYWxzZTsKIAogCQkvKiBVc2UgYXR0cmlidXRlIG5hbWUgb3IgY29sdW1uX25hbWUgb3B0aW9u LiAqLwpAQCAtMjE1NywxOCArMjIwMSwxMyBAQCBkZXBhcnNlQW5hbHl6ZVNxbChTdHJpbmdJbmZv IGJ1ZiwgUmVsYXRpb24gcmVsLCBMaXN0ICoqcmV0cmlldmVkX2F0dHJzKQogCiAJCWFwcGVuZFN0 cmluZ0luZm9TdHJpbmcoYnVmLCBxdW90ZV9pZGVudGlmaWVyKGNvbG5hbWUpKTsKIAotCQkqcmV0 cmlldmVkX2F0dHJzID0gbGFwcGVuZF9pbnQoKnJldHJpZXZlZF9hdHRycywgaSArIDEpOworCQly ZXRyaWV2ZWRfYXR0cnMgPSBsYXBwZW5kX2ludChyZXRyaWV2ZWRfYXR0cnMsIGkgKyAxKTsKIAl9 CiAKLQkvKiBEb24ndCBnZW5lcmF0ZSBiYWQgc3ludGF4IGZvciB6ZXJvLWNvbHVtbiByZWxhdGlv bi4gKi8KLQlpZiAoZmlyc3QpCi0JCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiTlVMTCIp OworCWlmIChlbmNsb3NlX2luX3BhcmVucyAmJiBsaXN0X2xlbmd0aChyZXRyaWV2ZWRfYXR0cnMp ID4gMCkKKwkJYXBwZW5kU3RyaW5nSW5mb0NoYXIoYnVmLCAnKScpOwogCi0JLyoKLQkgKiBDb25z dHJ1Y3QgRlJPTSBjbGF1c2UKLQkgKi8KLQlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIiBG Uk9NICIpOwotCWRlcGFyc2VSZWxhdGlvbihidWYsIHJlbCk7CisJcmV0dXJuIHJldHJpZXZlZF9h dHRyczsKIH0KIAogLyoKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2V4cGVjdGVk L3Bvc3RncmVzX2Zkdy5vdXQgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jl c19mZHcub3V0CmluZGV4IDA2NDliNmIuLjViMmQwM2EgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcG9z dGdyZXNfZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5vdXQKKysrIGIvY29udHJpYi9wb3N0Z3Jl c19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dApAQCAtODExMSw4ICs4MTExLDkgQEAgY29w eSByZW0yIGZyb20gc3RkaW47CiBjb3B5IHJlbTIgZnJvbSBzdGRpbjsgLS0gRVJST1IKIEVSUk9S OiAgbmV3IHJvdyBmb3IgcmVsYXRpb24gImxvYzIiIHZpb2xhdGVzIGNoZWNrIGNvbnN0cmFpbnQg ImxvYzJfZjFwb3NpdGl2ZSIKIERFVEFJTDogIEZhaWxpbmcgcm93IGNvbnRhaW5zICgtMSwgeHl6 enkpLgotQ09OVEVYVDogIHJlbW90ZSBTUUwgY29tbWFuZDogSU5TRVJUIElOVE8gcHVibGljLmxv YzIoZjEsIGYyKSBWQUxVRVMgKCQxLCAkMikKLUNPUFkgcmVtMiwgbGluZSAxOiAiLTEJeHl6enki CitDT05URVhUOiAgQ09QWSBsb2MyLCBsaW5lIDE6ICItMQl4eXp6eSIKK3JlbW90ZSBTUUwgY29t bWFuZDogQ09QWSBwdWJsaWMubG9jMihmMSwgZjIpIEZST00gU1RESU4gCitDT1BZIHJlbTIsIGxp bmUgMgogc2VsZWN0ICogZnJvbSByZW0yOwogIGYxIHwgZjIgIAogLS0tLSstLS0tLQpAQCAtODEy Myw2ICs4MTI0LDE5IEBAIHNlbGVjdCAqIGZyb20gcmVtMjsKIGFsdGVyIGZvcmVpZ24gdGFibGUg cmVtMiBkcm9wIGNvbnN0cmFpbnQgcmVtMl9mMXBvc2l0aXZlOwogYWx0ZXIgdGFibGUgbG9jMiBk cm9wIGNvbnN0cmFpbnQgbG9jMl9mMXBvc2l0aXZlOwogZGVsZXRlIGZyb20gcmVtMjsKK2NyZWF0 ZSB0YWJsZSBmb28gKGEgaW50KSBwYXJ0aXRpb24gYnkgbGlzdCAoYSk7CitjcmVhdGUgdGFibGUg Zm9vMSAobGlrZSBmb28pOworY3JlYXRlIGZvcmVpZ24gdGFibGUgZmZvbzEgcGFydGl0aW9uIG9m IGZvbyBmb3IgdmFsdWVzIGluICgxKQorCXNlcnZlciBsb29wYmFjayBvcHRpb25zICh0YWJsZV9u YW1lICdmb28xJyk7CitjcmVhdGUgdGFibGUgZm9vMiAobGlrZSBmb28pOworY3JlYXRlIGZvcmVp Z24gdGFibGUgZmZvbzIgcGFydGl0aW9uIG9mIGZvbyBmb3IgdmFsdWVzIGluICgyKQorCXNlcnZl ciBsb29wYmFjayBvcHRpb25zICh0YWJsZV9uYW1lICdmb28yJyk7CitjcmVhdGUgZnVuY3Rpb24g cHJpbnRfbmV3X3JvdygpIHJldHVybnMgdHJpZ2dlciBsYW5ndWFnZSBwbHBnc3FsIGFzICQkCisJ YmVnaW4gcmFpc2Ugbm90aWNlICclJywgbmV3OyByZXR1cm4gbmV3OyBlbmQ7ICQkOworY3JlYXRl IHRyaWdnZXIgZmZvbzFfYnJfdHJpZyBiZWZvcmUgaW5zZXJ0IG9uIGZmb28xCisJZm9yIGVhY2gg cm93IGV4ZWN1dGUgZnVuY3Rpb24gcHJpbnRfbmV3X3JvdygpOworY29weSBmb28gZnJvbSBzdGRp bjsKK05PVElDRTogICgxKQogLS0gVGVzdCBsb2NhbCB0cmlnZ2VycwogY3JlYXRlIHRyaWdnZXIg dHJpZ19zdG10X2JlZm9yZSBiZWZvcmUgaW5zZXJ0IG9uIHJlbTIKIAlmb3IgZWFjaCBzdGF0ZW1l bnQgZXhlY3V0ZSBwcm9jZWR1cmUgdHJpZ2dlcl9mdW5jKCk7CkBAIC04MjMxLDYgKzgyNDUsMzQg QEAgZHJvcCB0cmlnZ2VyIHJlbTJfdHJpZ19yb3dfYmVmb3JlIG9uIHJlbTI7CiBkcm9wIHRyaWdn ZXIgcmVtMl90cmlnX3Jvd19hZnRlciBvbiByZW0yOwogZHJvcCB0cmlnZ2VyIGxvYzJfdHJpZ19y b3dfYmVmb3JlX2luc2VydCBvbiBsb2MyOwogZGVsZXRlIGZyb20gcmVtMjsKK2FsdGVyIHRhYmxl IGxvYzIgZHJvcCBjb2x1bW4gZjE7CithbHRlciB0YWJsZSBsb2MyIGRyb3AgY29sdW1uIGYyOwor Y29weSByZW0yIGZyb20gc3RkaW47CitFUlJPUjogIGNvbHVtbiAiZjEiIG9mIHJlbGF0aW9uICJs b2MyIiBkb2VzIG5vdCBleGlzdAorQ09OVEVYVDogIHJlbW90ZSBTUUwgY29tbWFuZDogQ09QWSBw dWJsaWMubG9jMihmMSwgZjIpIEZST00gU1RESU4gCitDT1BZIHJlbTIsIGxpbmUgMworYWx0ZXIg dGFibGUgbG9jMiBhZGQgY29sdW1uIGYxIGludDsKK2FsdGVyIHRhYmxlIGxvYzIgYWRkIGNvbHVt biBmMiBpbnQ7CitzZWxlY3QgKiBmcm9tIHJlbTI7CisgZjEgfCBmMiAKKy0tLS0rLS0tLQorKDAg cm93cykKKworLS0gZHJvcHBlZCBjb2x1bW5zIGxvY2FsbHkgYW5kIG9uIHRoZSBmb3JlaWduIHNl cnZlcgorYWx0ZXIgdGFibGUgcmVtMiBkcm9wIGNvbHVtbiBmMTsKK2FsdGVyIHRhYmxlIHJlbTIg ZHJvcCBjb2x1bW4gZjI7Citjb3B5IHJlbTIgZnJvbSBzdGRpbjsKK3NlbGVjdCAqIGZyb20gcmVt MjsKKy0tCisoMiByb3dzKQorCithbHRlciB0YWJsZSBsb2MyIGRyb3AgY29sdW1uIGYxOworYWx0 ZXIgdGFibGUgbG9jMiBkcm9wIGNvbHVtbiBmMjsKK2NvcHkgcmVtMiBmcm9tIHN0ZGluOworc2Vs ZWN0ICogZnJvbSByZW0yOworLS0KKyg0IHJvd3MpCisKIC0tIHRlc3QgQ09QWSBGUk9NIHdpdGgg Zm9yZWlnbiB0YWJsZSBjcmVhdGVkIGluIHRoZSBzYW1lIHRyYW5zYWN0aW9uCiBjcmVhdGUgdGFi bGUgbG9jMyAoZjEgaW50LCBmMiB0ZXh0KTsKIGJlZ2luOwpkaWZmIC0tZ2l0IGEvY29udHJpYi9w b3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3LmMgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jl c19mZHcuYwppbmRleCAzNWI0ODU3Li4yMzdiYzVmIDEwMDY0NAotLS0gYS9jb250cmliL3Bvc3Rn cmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYworKysgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jl c19mZHcuYwpAQCAtMTgsNiArMTgsNyBAQAogI2luY2x1ZGUgImFjY2Vzcy9zeXNhdHRyLmgiCiAj aW5jbHVkZSAiYWNjZXNzL3RhYmxlLmgiCiAjaW5jbHVkZSAiY2F0YWxvZy9wZ19jbGFzcy5oIgor I2luY2x1ZGUgImNvbW1hbmRzL2NvcHkuaCIKICNpbmNsdWRlICJjb21tYW5kcy9kZWZyZW0uaCIK ICNpbmNsdWRlICJjb21tYW5kcy9leHBsYWluLmgiCiAjaW5jbHVkZSAiY29tbWFuZHMvdmFjdXVt LmgiCkBAIC0yMDEsNiArMjAyLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgUGdGZHdNb2RpZnlTdGF0ZQog CS8qIGZvciB1cGRhdGUgcm93IG1vdmVtZW50IGlmIHN1YnBsYW4gcmVzdWx0IHJlbCAqLwogCXN0 cnVjdCBQZ0Zkd01vZGlmeVN0YXRlICphdXhfZm1zdGF0ZTsJLyogZm9yZWlnbi1pbnNlcnQgc3Rh dGUsIGlmCiAJCQkJCQkJCQkJCSAqIGNyZWF0ZWQgKi8KKwlDb3B5VG9TdGF0ZSBjc3RhdGU7IC8q IGZvcmVpZ24gQ09QWSBzdGF0ZSwgaWYgdXNlZCAqLwogfSBQZ0Zkd01vZGlmeVN0YXRlOwogCiAv KgpAQCAtMzczLDYgKzM3NSwxMyBAQCBzdGF0aWMgdm9pZCBwb3N0Z3Jlc0JlZ2luRm9yZWlnbklu c2VydChNb2RpZnlUYWJsZVN0YXRlICptdHN0YXRlLAogCQkJCQkJCQkJICAgUmVzdWx0UmVsSW5m byAqcmVzdWx0UmVsSW5mbyk7CiBzdGF0aWMgdm9pZCBwb3N0Z3Jlc0VuZEZvcmVpZ25JbnNlcnQo RVN0YXRlICplc3RhdGUsCiAJCQkJCQkJCQkgUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5mbyk7 CitzdGF0aWMgdm9pZCBwb3N0Z3Jlc0JlZ2luRm9yZWlnbkNvcHkoRVN0YXRlICplc3RhdGUsCisJ CQkJCQkJCQkgICBSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvKTsKK3N0YXRpYyB2b2lkIHBv c3RncmVzRW5kRm9yZWlnbkNvcHkoRVN0YXRlICplc3RhdGUsCisJCQkJCQkJCQkgUmVzdWx0UmVs SW5mbyAqcmVzdWx0UmVsSW5mbyk7CitzdGF0aWMgdm9pZCBwb3N0Z3Jlc0V4ZWNGb3JlaWduQ29w eShSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvLAorCQkJCQkJCQkJICBUdXBsZVRhYmxlU2xv dCAqKnNsb3RzLAorCQkJCQkJCQkJICBpbnQgbnNsb3RzKTsKIHN0YXRpYyBpbnQJcG9zdGdyZXNJ c0ZvcmVpZ25SZWxVcGRhdGFibGUoUmVsYXRpb24gcmVsKTsKIHN0YXRpYyBib29sIHBvc3RncmVz UGxhbkRpcmVjdE1vZGlmeShQbGFubmVySW5mbyAqcm9vdCwKIAkJCQkJCQkJCSBNb2RpZnlUYWJs ZSAqcGxhbiwKQEAgLTU1OCw2ICs1NjcsOSBAQCBwb3N0Z3Jlc19mZHdfaGFuZGxlcihQR19GVU5D VElPTl9BUkdTKQogCXJvdXRpbmUtPkVuZEZvcmVpZ25Nb2RpZnkgPSBwb3N0Z3Jlc0VuZEZvcmVp Z25Nb2RpZnk7CiAJcm91dGluZS0+QmVnaW5Gb3JlaWduSW5zZXJ0ID0gcG9zdGdyZXNCZWdpbkZv cmVpZ25JbnNlcnQ7CiAJcm91dGluZS0+RW5kRm9yZWlnbkluc2VydCA9IHBvc3RncmVzRW5kRm9y ZWlnbkluc2VydDsKKwlyb3V0aW5lLT5CZWdpbkZvcmVpZ25Db3B5ID0gcG9zdGdyZXNCZWdpbkZv cmVpZ25Db3B5OworCXJvdXRpbmUtPkV4ZWNGb3JlaWduQ29weSA9IHBvc3RncmVzRXhlY0ZvcmVp Z25Db3B5OworCXJvdXRpbmUtPkVuZEZvcmVpZ25Db3B5ID0gcG9zdGdyZXNFbmRGb3JlaWduQ29w eTsKIAlyb3V0aW5lLT5Jc0ZvcmVpZ25SZWxVcGRhdGFibGUgPSBwb3N0Z3Jlc0lzRm9yZWlnblJl bFVwZGF0YWJsZTsKIAlyb3V0aW5lLT5QbGFuRGlyZWN0TW9kaWZ5ID0gcG9zdGdyZXNQbGFuRGly ZWN0TW9kaWZ5OwogCXJvdXRpbmUtPkJlZ2luRGlyZWN0TW9kaWZ5ID0gcG9zdGdyZXNCZWdpbkRp cmVjdE1vZGlmeTsKQEAgLTIxNzgsNiArMjE5MCwxMzUgQEAgcG9zdGdyZXNFbmRGb3JlaWduSW5z ZXJ0KEVTdGF0ZSAqZXN0YXRlLAogCWZpbmlzaF9mb3JlaWduX21vZGlmeShmbXN0YXRlKTsKIH0K IAorc3RhdGljIFBnRmR3TW9kaWZ5U3RhdGUgKmNvcHlfZm1zdGF0ZSA9IE5VTEw7CisKK3N0YXRp YyB2b2lkCitwZ2Zkd19jb3B5X2Rlc3RfY2Iodm9pZCAqYnVmLCBpbnQgbGVuKQoreworCVBHY29u biAqY29ubiA9IGNvcHlfZm1zdGF0ZS0+Y29ubjsKKworCWlmIChQUXB1dENvcHlEYXRhKGNvbm4s IChjaGFyICopIGJ1ZiwgbGVuKSA8PSAwKQorCQlwZ2Zkd19yZXBvcnRfZXJyb3IoRVJST1IsIE5V TEwsIGNvbm4sIGZhbHNlLCBjb3B5X2Ztc3RhdGUtPnF1ZXJ5KTsKK30KKworLyoKKyAqIHBvc3Rn cmVzQmVnaW5Gb3JlaWduQ29weQorICoJCUJlZ2luIGEgQ09QWSBvcGVyYXRpb24gb24gYSBmb3Jl aWduIHRhYmxlCisgKi8KK3N0YXRpYyB2b2lkCitwb3N0Z3Jlc0JlZ2luRm9yZWlnbkNvcHkoRVN0 YXRlICplc3RhdGUsCisJCQkJCQkgICBSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvKQorewor CVBnRmR3TW9kaWZ5U3RhdGUgKmZtc3RhdGU7CisJU3RyaW5nSW5mb0RhdGEgc3FsOworCVJhbmdl VGJsRW50cnkgKnJ0ZTsKKwlSZWxhdGlvbiByZWwgPSByZXN1bHRSZWxJbmZvLT5yaV9SZWxhdGlv bkRlc2M7CisKKwlpZiAocmVzdWx0UmVsSW5mby0+cmlfUmFuZ2VUYWJsZUluZGV4ID09IDApCisJ eworCQlSZXN1bHRSZWxJbmZvICpyb290UmVzdWx0UmVsSW5mbyA9IHJlc3VsdFJlbEluZm8tPnJp X1Jvb3RSZXN1bHRSZWxJbmZvOworCisJCUFzc2VydChyb290UmVzdWx0UmVsSW5mbyAhPSBOVUxM KTsKKwkJcnRlID0gZXhlY19ydF9mZXRjaChyb290UmVzdWx0UmVsSW5mby0+cmlfUmFuZ2VUYWJs ZUluZGV4LCBlc3RhdGUpOworCQlydGUgPSBjb3B5T2JqZWN0KHJ0ZSk7CisJCXJ0ZS0+cmVsaWQg PSBSZWxhdGlvbkdldFJlbGlkKHJlbCk7CisJCXJ0ZS0+cmVsa2luZCA9IFJFTEtJTkRfRk9SRUlH Tl9UQUJMRTsKKwl9CisJZWxzZQorCQlydGUgPSBleGVjX3J0X2ZldGNoKHJlc3VsdFJlbEluZm8t PnJpX1JhbmdlVGFibGVJbmRleCwgZXN0YXRlKTsKKworCWluaXRTdHJpbmdJbmZvKCZzcWwpOwor CWRlcGFyc2VDb3B5RnJvbVNxbCgmc3FsLCByZWwpOworCisJZm1zdGF0ZSA9IGNyZWF0ZV9mb3Jl aWduX21vZGlmeShlc3RhdGUsCisJCQkJCQkJCQlydGUsCisJCQkJCQkJCQlyZXN1bHRSZWxJbmZv LAorCQkJCQkJCQkJQ01EX0lOU0VSVCwKKwkJCQkJCQkJCU5VTEwsCisJCQkJCQkJCQlzcWwuZGF0 YSwKKwkJCQkJCQkJCU5JTCwKKwkJCQkJCQkJCS0xLAorCQkJCQkJCQkJZmFsc2UsCisJCQkJCQkJ CQlOSUwpOworCisJZm1zdGF0ZS0+Y3N0YXRlID0gQmVnaW5Db3B5VG8oTlVMTCwgcmVsLCBOVUxM LAorCQkJCQkJCQkgIEludmFsaWRPaWQsIE5VTEwsIGZhbHNlLCBwZ2Zkd19jb3B5X2Rlc3RfY2Is CisJCQkJCQkJCSAgTklMLCBOSUwpOworCUNvcHlUb1N0YXJ0KGZtc3RhdGUtPmNzdGF0ZSk7CisJ cmVzdWx0UmVsSW5mby0+cmlfRmR3U3RhdGUgPSBmbXN0YXRlOworfQorCisvKgorICogcG9zdGdy ZXNFeGVjRm9yZWlnbkNvcHkKKyAqCQlTZW5kIGEgbnVtYmVyIG9mIHR1cGxlcyB0byB0aGUgZm9y ZWlnbiByZWxhdGlvbi4KKyAqLworc3RhdGljIHZvaWQKK3Bvc3RncmVzRXhlY0ZvcmVpZ25Db3B5 KFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCisJCQkJCQkgIFR1cGxlVGFibGVTbG90ICoq c2xvdHMsIGludCBuc2xvdHMpCit7CisJUGdGZHdNb2RpZnlTdGF0ZSAqZm1zdGF0ZSA9IHJlc3Vs dFJlbEluZm8tPnJpX0Zkd1N0YXRlOworCVBHcmVzdWx0ICpyZXM7CisJUEdjb25uICpjb25uID0g Zm1zdGF0ZS0+Y29ubjsKKwlib29sIE9LID0gZmFsc2U7CisJaW50IGk7CisKKwkvKiBDaGVjayBj b3JyZWN0IHVzZSBvZiBDb3B5SW4gRkRXIEFQSS4gKi8KKwlBc3NlcnQoZm1zdGF0ZS0+Y3N0YXRl ICE9IE5VTEwpOworCisJcmVzID0gUFFleGVjKGNvbm4sIGZtc3RhdGUtPnF1ZXJ5KTsKKwlpZiAo UFFyZXN1bHRTdGF0dXMocmVzKSAhPSBQR1JFU19DT1BZX0lOKQorCQlwZ2Zkd19yZXBvcnRfZXJy b3IoRVJST1IsIHJlcywgY29ubiwgdHJ1ZSwgZm1zdGF0ZS0+cXVlcnkpOworCVBRY2xlYXIocmVz KTsKKworCVBHX1RSWSgpOworCXsKKwkJY29weV9mbXN0YXRlID0gZm1zdGF0ZTsKKwkJZm9yIChp ID0gMDsgaSA8IG5zbG90czsgaSsrKQorCQkJQ29weU9uZVJvd1RvKGZtc3RhdGUtPmNzdGF0ZSwg c2xvdHNbaV0pOworCisJCU9LID0gdHJ1ZTsKKwl9CisJUEdfRklOQUxMWSgpOworCXsKKwkJLyoK KwkJICogRmluaXNoIENPUFkgSU4gcHJvdG9jb2wuIEl0IGlzIG5lZWRlZCB0byBkbyBhZnRlciBz dWNjZXNzZnVsIGNvcHkgb3IKKwkJICogYWZ0ZXIgYW4gZXJyb3IuCisJCSAqLworCQlpZiAoUFFw dXRDb3B5RW5kKGNvbm4sIE9LID8gTlVMTCA6ICJjYW5jZWxlZCBieSBzZXJ2ZXIiKSA8PSAwKQor CQkJcGdmZHdfcmVwb3J0X2Vycm9yKEVSUk9SLCBOVUxMLCBmbXN0YXRlLT5jb25uLCBmYWxzZSwg Zm1zdGF0ZS0+cXVlcnkpOworCisJCS8qIEFmdGVyIHN1Y2Nlc3NmdWxseSAgc2VuZGluZyBhbiBF T0Ygc2lnbmFsLCBjaGVjayBjb21tYW5kIE9LLiAqLworCQlyZXMgPSBQUWdldFJlc3VsdChjb25u KTsKKwkJaWYgKFBRcmVzdWx0U3RhdHVzKHJlcykgIT0gUEdSRVNfQ09NTUFORF9PSykKKwkJCXBn ZmR3X3JlcG9ydF9lcnJvcihFUlJPUiwgcmVzLCBmbXN0YXRlLT5jb25uLCB0cnVlLCBmbXN0YXRl LT5xdWVyeSk7CisKKwkJUFFjbGVhcihyZXMpOworCQkvKiBEbyB0aGlzIHRvIGVuc3VyZSB3ZSBo YXZlIG5vdCBnb3R0ZW4gZXh0cmEgcmVzdWx0cyAqLworCQlpZiAoUFFnZXRSZXN1bHQoY29ubikg IT0gTlVMTCkKKwkJCWVyZXBvcnQoRVJST1IsCisJCQkJCShlcnJtc2coInVuZXhwZWN0ZWQgZXh0 cmEgcmVzdWx0cyBkdXJpbmcgQ09QWSBvZiB0YWJsZTogJXMiLAorCQkJCQkJCVBRZXJyb3JNZXNz YWdlKGNvbm4pKSkpOworCX0KKwlQR19FTkRfVFJZKCk7Cit9CisKKy8qCisgKiBwb3N0Z3Jlc0Vu ZEZvcmVpZ25Db3B5CisgKgkJRmluaXNoIGEgQ09QWSBvcGVyYXRpb24gb24gYSBmb3JlaWduIHRh YmxlCisgKi8KK3N0YXRpYyB2b2lkCitwb3N0Z3Jlc0VuZEZvcmVpZ25Db3B5KEVTdGF0ZSAqZXN0 YXRlLCBSZXN1bHRSZWxJbmZvICpyZXN1bHRSZWxJbmZvKQoreworCVBnRmR3TW9kaWZ5U3RhdGUg KmZtc3RhdGUgPSAoUGdGZHdNb2RpZnlTdGF0ZSAqKSByZXN1bHRSZWxJbmZvLT5yaV9GZHdTdGF0 ZTsKKworCS8qIENoZWNrIGNvcnJlY3QgdXNlIG9mIENvcHlJbiBGRFcgQVBJLiAqLworCUFzc2Vy dChmbXN0YXRlLT5jc3RhdGUgIT0gTlVMTCk7CisJQ29weVRvRmluaXNoKGZtc3RhdGUtPmNzdGF0 ZSk7CisJcGZyZWUoZm1zdGF0ZS0+Y3N0YXRlKTsKKwlmbXN0YXRlLT5jc3RhdGUgPSBOVUxMOwor CWZpbmlzaF9mb3JlaWduX21vZGlmeShmbXN0YXRlKTsKK30KKwogLyoKICAqIHBvc3RncmVzSXNG b3JlaWduUmVsVXBkYXRhYmxlCiAgKgkJRGV0ZXJtaW5lIHdoZXRoZXIgYSBmb3JlaWduIHRhYmxl IHN1cHBvcnRzIElOU0VSVCwgVVBEQVRFIGFuZC9vcgpkaWZmIC0tZ2l0IGEvY29udHJpYi9wb3N0 Z3Jlc19mZHcvcG9zdGdyZXNfZmR3LmggYi9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19m ZHcuaAppbmRleCAxZjY3YjRkLi5jYjgwMWM5IDEwMDY0NAotLS0gYS9jb250cmliL3Bvc3RncmVz X2Zkdy9wb3N0Z3Jlc19mZHcuaAorKysgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19m ZHcuaApAQCAtMTY1LDYgKzE2NSw3IEBAIGV4dGVybiB2b2lkIGRlcGFyc2VJbnNlcnRTcWwoU3Ry aW5nSW5mbyBidWYsIFJhbmdlVGJsRW50cnkgKnJ0ZSwKIGV4dGVybiB2b2lkIHJlYnVpbGRJbnNl cnRTcWwoU3RyaW5nSW5mbyBidWYsIGNoYXIgKm9yaWdfcXVlcnksCiAJCQkJCQkJIGludCB2YWx1 ZXNfZW5kX2xlbiwgaW50IG51bV9jb2xzLAogCQkJCQkJCSBpbnQgbnVtX3Jvd3MpOworZXh0ZXJu IHZvaWQgZGVwYXJzZUNvcHlGcm9tU3FsKFN0cmluZ0luZm8gYnVmLCBSZWxhdGlvbiByZWwpOwog ZXh0ZXJuIHZvaWQgZGVwYXJzZVVwZGF0ZVNxbChTdHJpbmdJbmZvIGJ1ZiwgUmFuZ2VUYmxFbnRy eSAqcnRlLAogCQkJCQkJCSBJbmRleCBydGluZGV4LCBSZWxhdGlvbiByZWwsCiAJCQkJCQkJIExp c3QgKnRhcmdldEF0dHJzLApkaWZmIC0tZ2l0IGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvc3FsL3Bv c3RncmVzX2Zkdy5zcWwgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9zcWwvcG9zdGdyZXNfZmR3LnNx bAppbmRleCAyYjUyNWVhLi4wMmVmZTJmIDEwMDY0NAotLS0gYS9jb250cmliL3Bvc3RncmVzX2Zk dy9zcWwvcG9zdGdyZXNfZmR3LnNxbAorKysgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9zcWwvcG9z dGdyZXNfZmR3LnNxbApAQCAtMjIzNSw2ICsyMjM1LDIzIEBAIGFsdGVyIHRhYmxlIGxvYzIgZHJv cCBjb25zdHJhaW50IGxvYzJfZjFwb3NpdGl2ZTsKIAogZGVsZXRlIGZyb20gcmVtMjsKIAorY3Jl YXRlIHRhYmxlIGZvbyAoYSBpbnQpIHBhcnRpdGlvbiBieSBsaXN0IChhKTsKK2NyZWF0ZSB0YWJs ZSBmb28xIChsaWtlIGZvbyk7CitjcmVhdGUgZm9yZWlnbiB0YWJsZSBmZm9vMSBwYXJ0aXRpb24g b2YgZm9vIGZvciB2YWx1ZXMgaW4gKDEpCisJc2VydmVyIGxvb3BiYWNrIG9wdGlvbnMgKHRhYmxl X25hbWUgJ2ZvbzEnKTsKK2NyZWF0ZSB0YWJsZSBmb28yIChsaWtlIGZvbyk7CitjcmVhdGUgZm9y ZWlnbiB0YWJsZSBmZm9vMiBwYXJ0aXRpb24gb2YgZm9vIGZvciB2YWx1ZXMgaW4gKDIpCisJc2Vy dmVyIGxvb3BiYWNrIG9wdGlvbnMgKHRhYmxlX25hbWUgJ2ZvbzInKTsKK2NyZWF0ZSBmdW5jdGlv biBwcmludF9uZXdfcm93KCkgcmV0dXJucyB0cmlnZ2VyIGxhbmd1YWdlIHBscGdzcWwgYXMgJCQK KwliZWdpbiByYWlzZSBub3RpY2UgJyUnLCBuZXc7IHJldHVybiBuZXc7IGVuZDsgJCQ7CitjcmVh dGUgdHJpZ2dlciBmZm9vMV9icl90cmlnIGJlZm9yZSBpbnNlcnQgb24gZmZvbzEKKwlmb3IgZWFj aCByb3cgZXhlY3V0ZSBmdW5jdGlvbiBwcmludF9uZXdfcm93KCk7CisKK2NvcHkgZm9vIGZyb20g c3RkaW47CisxCisyCitcLgorCiAtLSBUZXN0IGxvY2FsIHRyaWdnZXJzCiBjcmVhdGUgdHJpZ2dl ciB0cmlnX3N0bXRfYmVmb3JlIGJlZm9yZSBpbnNlcnQgb24gcmVtMgogCWZvciBlYWNoIHN0YXRl bWVudCBleGVjdXRlIHByb2NlZHVyZSB0cmlnZ2VyX2Z1bmMoKTsKQEAgLTIzMzUsNiArMjM1Miwz NCBAQCBkcm9wIHRyaWdnZXIgbG9jMl90cmlnX3Jvd19iZWZvcmVfaW5zZXJ0IG9uIGxvYzI7CiAK IGRlbGV0ZSBmcm9tIHJlbTI7CiAKK2FsdGVyIHRhYmxlIGxvYzIgZHJvcCBjb2x1bW4gZjE7Cith bHRlciB0YWJsZSBsb2MyIGRyb3AgY29sdW1uIGYyOworY29weSByZW0yIGZyb20gc3RkaW47Cisx CWZvbworMgliYXIKK1wuCisKK2FsdGVyIHRhYmxlIGxvYzIgYWRkIGNvbHVtbiBmMSBpbnQ7Cith bHRlciB0YWJsZSBsb2MyIGFkZCBjb2x1bW4gZjIgaW50Oworc2VsZWN0ICogZnJvbSByZW0yOwor CistLSBkcm9wcGVkIGNvbHVtbnMgbG9jYWxseSBhbmQgb24gdGhlIGZvcmVpZ24gc2VydmVyCith bHRlciB0YWJsZSByZW0yIGRyb3AgY29sdW1uIGYxOworYWx0ZXIgdGFibGUgcmVtMiBkcm9wIGNv bHVtbiBmMjsKK2NvcHkgcmVtMiBmcm9tIHN0ZGluOworCisKK1wuCitzZWxlY3QgKiBmcm9tIHJl bTI7CisKK2FsdGVyIHRhYmxlIGxvYzIgZHJvcCBjb2x1bW4gZjE7CithbHRlciB0YWJsZSBsb2My IGRyb3AgY29sdW1uIGYyOworY29weSByZW0yIGZyb20gc3RkaW47CisKKworXC4KK3NlbGVjdCAq IGZyb20gcmVtMjsKKwogLS0gdGVzdCBDT1BZIEZST00gd2l0aCBmb3JlaWduIHRhYmxlIGNyZWF0 ZWQgaW4gdGhlIHNhbWUgdHJhbnNhY3Rpb24KIGNyZWF0ZSB0YWJsZSBsb2MzIChmMSBpbnQsIGYy IHRleHQpOwogYmVnaW47CmRpZmYgLS1naXQgYS9kb2Mvc3JjL3NnbWwvZmR3aGFuZGxlci5zZ21s IGIvZG9jL3NyYy9zZ21sL2Zkd2hhbmRsZXIuc2dtbAppbmRleCAwNGJjMDUyLi42NjYxNDhhIDEw MDY0NAotLS0gYS9kb2Mvc3JjL3NnbWwvZmR3aGFuZGxlci5zZ21sCisrKyBiL2RvYy9zcmMvc2dt bC9mZHdoYW5kbGVyLnNnbWwKQEAgLTgxMyw4ICs4MTMsOSBAQCBCZWdpbkZvcmVpZ25JbnNlcnQo TW9kaWZ5VGFibGVTdGF0ZSAqbXRzdGF0ZSwKIAogICAgICBCZWdpbiBleGVjdXRpbmcgYW4gaW5z ZXJ0IG9wZXJhdGlvbiBvbiBhIGZvcmVpZ24gdGFibGUuICBUaGlzIHJvdXRpbmUgaXMKICAgICAg Y2FsbGVkIHJpZ2h0IGJlZm9yZSB0aGUgZmlyc3QgdHVwbGUgaXMgaW5zZXJ0ZWQgaW50byB0aGUg Zm9yZWlnbiB0YWJsZQotICAgICBpbiBib3RoIGNhc2VzIHdoZW4gaXQgaXMgdGhlIHBhcnRpdGlv biBjaG9zZW4gZm9yIHR1cGxlIHJvdXRpbmcgYW5kIHRoZQotICAgICB0YXJnZXQgc3BlY2lmaWVk IGluIGEgPGNvbW1hbmQ+Q09QWSBGUk9NPC9jb21tYW5kPiBjb21tYW5kLiAgSXQgc2hvdWxkCisg ICAgIHRhcmdldCBzcGVjaWZpZWQgaW4gYSA8Y29tbWFuZD5DT1BZIEZST008L2NvbW1hbmQ+IGNv bW1hbmQsIG9yIHdoZW4KKyAgICAgdGhlIGZvcmVpZ24gdGFibGUgaXMgdGhlIHBhcnRpdGlvbiBj aG9zZW4gZm9yIHR1cGxlIHJvdXRpbmcgb2YgYQorICAgICBwYXJ0aXRpb25lZCB0YWJsZS4gIEl0 IHNob3VsZAogICAgICBwZXJmb3JtIGFueSBpbml0aWFsaXphdGlvbiBuZWVkZWQgcHJpb3IgdG8g dGhlIGFjdHVhbCBpbnNlcnRpb24uCiAgICAgIFN1YnNlcXVlbnRseSwgPGZ1bmN0aW9uPkV4ZWNG b3JlaWduSW5zZXJ0PC9mdW5jdGlvbj4gb3IKICAgICAgPGZ1bmN0aW9uPkV4ZWNGb3JlaWduQmF0 Y2hJbnNlcnQ8L2Z1bmN0aW9uPiB3aWxsIGJlIGNhbGxlZCBmb3IKQEAgLTEwNjcsNiArMTA2OCw3 MiBAQCBFbmREaXJlY3RNb2RpZnkoRm9yZWlnblNjYW5TdGF0ZSAqbm9kZSk7CiAKICAgICA8cGFy YT4KIDxwcm9ncmFtbGlzdGluZz4KK3ZvaWQKK0JlZ2luRm9yZWlnbkNvcHkoRVN0YXRlICplc3Rh dGUsCisgICAgICAgICAgICAgICAgICAgUmVzdWx0UmVsSW5mbyAqcmluZm8pOworPC9wcm9ncmFt bGlzdGluZz4KKworICAgICBCZWdpbiBleGVjdXRpbmcgYSBjb3B5IG9wZXJhdGlvbiBvbiBhIGZv cmVpZ24gdGFibGUuIFRoaXMgcm91dGluZSBpcworICAgICBjYWxsZWQgcmlnaHQgYmVmb3JlIHRo ZSBmaXJzdCBjYWxsIG9mIDxmdW5jdGlvbj5FeGVjRm9yZWlnbkNvcHk8L2Z1bmN0aW9uPgorICAg ICByb3V0aW5lIGZvciB0aGUgZm9yZWlnbiB0YWJsZS4gSXQgc2hvdWxkIHBlcmZvcm0gYW55IGlu aXRpYWxpemF0aW9uIG5lZWRlZAorICAgICBwcmlvciB0byB0aGUgYWN0dWFsIENPUFkgRlJPTSBv cGVyYXRpb24uCisgICAgIFN1YnNlcXVlbnRseSwgPGZ1bmN0aW9uPkV4ZWNGb3JlaWduQ29weTwv ZnVuY3Rpb24+IHdpbGwgYmUgY2FsbGVkIGZvcgorICAgICBhIGJhdGNoIG9mIHR1cGxlcyB0byBi ZSBjb3BpZWQgaW50byB0aGUgZm9yZWlnbiB0YWJsZS4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFy YT4KKyAgICAgPGxpdGVyYWw+ZXN0YXRlPC9saXRlcmFsPiBpcyBnbG9iYWwgZXhlY3V0aW9uIHN0 YXRlIGZvciB0aGUgcXVlcnkuCisgICAgIDxsaXRlcmFsPnJpbmZvPC9saXRlcmFsPiBpcyB0aGUg PHN0cnVjdG5hbWU+UmVzdWx0UmVsSW5mbzwvc3RydWN0bmFtZT4gc3RydWN0IGRlc2NyaWJpbmcK KyAgICAgdGhlIHRhcmdldCBmb3JlaWduIHRhYmxlLiAgKFRoZSA8c3RydWN0ZmllbGQ+cmlfRmR3 U3RhdGU8L3N0cnVjdGZpZWxkPiBmaWVsZCBvZgorICAgICA8c3RydWN0bmFtZT5SZXN1bHRSZWxJ bmZvPC9zdHJ1Y3RuYW1lPiBpcyBhdmFpbGFibGUgZm9yIHRoZSBGRFcgdG8gc3RvcmUgYW55Cisg ICAgIHByaXZhdGUgc3RhdGUgaXQgbmVlZHMgZm9yIHRoaXMgb3BlcmF0aW9uLikKKyAgICA8L3Bh cmE+CisKKyAgICA8cGFyYT4KKyAgICAgSWYgdGhlIDxmdW5jdGlvbj5CZWdpbkZvcmVpZ25Db3B5 PC9mdW5jdGlvbj4gcG9pbnRlciBpcyBzZXQgdG8KKyAgICAgPGxpdGVyYWw+TlVMTDwvbGl0ZXJh bD4sIG5vIGFjdGlvbiBpcyB0YWtlbiBmb3IgdGhlIGluaXRpYWxpemF0aW9uLgorICAgIDwvcGFy YT4KKworICAgIDxwYXJhPgorPHByb2dyYW1saXN0aW5nPgordm9pZAorRXhlY0ZvcmVpZ25Db3B5 KFJlc3VsdFJlbEluZm8gKnJpbmZvLAorICAgICAgICAgICAgICAgICAgVHVwbGVUYWJsZVNsb3Qg KipzbG90cywKKyAgICAgICAgICAgICAgICAgIGludCBuc2xvdHMpOworPC9wcm9ncmFtbGlzdGlu Zz4KKworICAgICBDb3B5IGEgYmF0Y2ggb2YgdHVwbGVzIGludG8gdGhlIGZvcmVpZ24gdGFibGUu CisgICAgICA8bGl0ZXJhbD5yaW5mbzwvbGl0ZXJhbD4gaXMgdGhlIDxzdHJ1Y3RuYW1lPlJlc3Vs dFJlbEluZm88L3N0cnVjdG5hbWU+IHN0cnVjdCBkZXNjcmliaW5nCisgICAgIHRoZSB0YXJnZXQg Zm9yZWlnbiB0YWJsZS4KKyAgICAgPGxpdGVyYWw+c2xvdHM8L2xpdGVyYWw+IGNvbnRhaW5zIHRo ZSB0dXBsZXMgdG8gYmUgaW5zZXJ0ZWQ7IGl0IHdpbGwgbWF0Y2ggdGhlCisgICAgIHJvdy10eXBl IGRlZmluaXRpb24gb2YgdGhlIGZvcmVpZ24gdGFibGUuCisgICAgIDxsaXRlcmFsPm5zbG90czwv bGl0ZXJhbD4gaXMgdGhlIG51bWJlciBvZiB0dXBsZXMgaW4gdGhlIDxsaXRlcmFsPnNsb3RzPC9s aXRlcmFsPgorICAgIDwvcGFyYT4KKworICAgIDxwYXJhPgorICAgICBJZiB0aGUgPGZ1bmN0aW9u PkV4ZWNGb3JlaWduQ29weTwvZnVuY3Rpb24+IHBvaW50ZXIgaXMgc2V0IHRvCisgICAgIDxsaXRl cmFsPk5VTEw8L2xpdGVyYWw+LCB0aGUgPGZ1bmN0aW9uPkV4ZWNGb3JlaWduSW5zZXJ0PC9mdW5j dGlvbj4gcm91dGluZSB3aWxsIGJlIHVzZWQgdG8gcnVuIENPUFkgb24gdGhlIGZvcmVpZ24gdGFi bGUuCisgICAgPC9wYXJhPgorCisgICAgPHBhcmE+Cis8cHJvZ3JhbWxpc3Rpbmc+Cit2b2lkCitF bmRGb3JlaWduQ29weShFU3RhdGUgKmVzdGF0ZSwKKyAgICAgICAgICAgICAgICAgUmVzdWx0UmVs SW5mbyAqcmluZm8pOworPC9wcm9ncmFtbGlzdGluZz4KKworICAgICBFbmQgdGhlIGNvcHkgb3Bl cmF0aW9uIGFuZCByZWxlYXNlIHJlc291cmNlcy4gIEl0IGlzIG5vcm1hbGx5IG5vdCBpbXBvcnRh bnQKKyAgICAgdG8gcmVsZWFzZSBwYWxsb2MnZCBtZW1vcnksIGJ1dCBmb3IgZXhhbXBsZSBvcGVu IGZpbGVzIGFuZCBjb25uZWN0aW9ucworICAgICB0byByZW1vdGUgc2VydmVycyBzaG91bGQgYmUg Y2xlYW5lZCB1cC4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKyAgICAgSWYgdGhlIDxmdW5j dGlvbj5FbmRGb3JlaWduQ29weTwvZnVuY3Rpb24+IHBvaW50ZXIgaXMgc2V0IHRvCisgICAgIDxs aXRlcmFsPk5VTEw8L2xpdGVyYWw+LCBubyBhY3Rpb24gaXMgdGFrZW4gZm9yIHRoZSB0ZXJtaW5h dGlvbi4KKyAgICA8L3BhcmE+CisKKyAgICA8cGFyYT4KKzxwcm9ncmFtbGlzdGluZz4KIFJvd01h cmtUeXBlCiBHZXRGb3JlaWduUm93TWFya1R5cGUoUmFuZ2VUYmxFbnRyeSAqcnRlLAogICAgICAg ICAgICAgICAgICAgICAgIExvY2tDbGF1c2VTdHJlbmd0aCBzdHJlbmd0aCk7CmRpZmYgLS1naXQg YS9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5LmMgYi9zcmMvYmFja2VuZC9jb21tYW5kcy9jb3B5 LmMKaW5kZXggOGM3MTJjOC4uNDExYzQwOSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFu ZHMvY29weS5jCisrKyBiL3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHkuYwpAQCAtMzA0LDcgKzMw NCw3IEBAIERvQ29weShQYXJzZVN0YXRlICpwc3RhdGUsIGNvbnN0IENvcHlTdG10ICpzdG10LAog CQlDb3B5VG9TdGF0ZSBjc3RhdGU7CiAKIAkJY3N0YXRlID0gQmVnaW5Db3B5VG8ocHN0YXRlLCBy ZWwsIHF1ZXJ5LCByZWxpZCwKLQkJCQkJCQkgc3RtdC0+ZmlsZW5hbWUsIHN0bXQtPmlzX3Byb2dy YW0sCisJCQkJCQkJIHN0bXQtPmZpbGVuYW1lLCBzdG10LT5pc19wcm9ncmFtLCBOVUxMLAogCQkJ CQkJCSBzdG10LT5hdHRsaXN0LCBzdG10LT5vcHRpb25zKTsKIAkJKnByb2Nlc3NlZCA9IERvQ29w eVRvKGNzdGF0ZSk7CS8qIGNvcHkgZnJvbSBkYXRhYmFzZSB0byBmaWxlICovCiAJCUVuZENvcHlU byhjc3RhdGUpOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb20uYyBi L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHlmcm9tLmMKaW5kZXggMmVkNjk2ZC4uN2EzMTYzMyAx MDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weWZyb20uYworKysgYi9zcmMvYmFj a2VuZC9jb21tYW5kcy9jb3B5ZnJvbS5jCkBAIC0zMTYsNTQgKzMxNiw2NCBAQCBDb3B5TXVsdGlJ bnNlcnRCdWZmZXJGbHVzaChDb3B5TXVsdGlJbnNlcnRJbmZvICptaWluZm8sCiAJY3N0YXRlLT5s aW5lX2J1Zl92YWxpZCA9IGZhbHNlOwogCXNhdmVfY3VyX2xpbmVubyA9IGNzdGF0ZS0+Y3VyX2xp bmVubzsKIAotCS8qCi0JICogdGFibGVfbXVsdGlfaW5zZXJ0IG1heSBsZWFrIG1lbW9yeSwgc28g c3dpdGNoIHRvIHNob3J0LWxpdmVkIG1lbW9yeQotCSAqIGNvbnRleHQgYmVmb3JlIGNhbGxpbmcg aXQuCi0JICovCi0Jb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhHZXRQZXJUdXBs ZU1lbW9yeUNvbnRleHQoZXN0YXRlKSk7Ci0JdGFibGVfbXVsdGlfaW5zZXJ0KHJlc3VsdFJlbElu Zm8tPnJpX1JlbGF0aW9uRGVzYywKLQkJCQkJICAgc2xvdHMsCi0JCQkJCSAgIG51c2VkLAotCQkJ CQkgICBteWNpZCwKLQkJCQkJICAgdGlfb3B0aW9ucywKLQkJCQkJICAgYnVmZmVyLT5iaXN0YXRl KTsKLQlNZW1vcnlDb250ZXh0U3dpdGNoVG8ob2xkY29udGV4dCk7Ci0KLQlmb3IgKGkgPSAwOyBp IDwgbnVzZWQ7IGkrKykKKwlpZiAocmVzdWx0UmVsSW5mby0+cmlfUmVsYXRpb25EZXNjLT5yZF9y ZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9GT1JFSUdOX1RBQkxFKQorCXsKKwkJLyogRmx1c2ggaW50 byBmb3JlaWduIHRhYmxlIG9yIHBhcnRpdGlvbiAqLworCQlyZXN1bHRSZWxJbmZvLT5yaV9GZHdS b3V0aW5lLT5FeGVjRm9yZWlnbkNvcHkocmVzdWx0UmVsSW5mbywKKwkJCQkJCQkJCQkJCQkJc2xv dHMsCisJCQkJCQkJCQkJCQkJCW51c2VkKTsKKwl9CisJZWxzZQogCXsKIAkJLyoKLQkJICogSWYg dGhlcmUgYXJlIGFueSBpbmRleGVzLCB1cGRhdGUgdGhlbSBmb3IgYWxsIHRoZSBpbnNlcnRlZCB0 dXBsZXMsCi0JCSAqIGFuZCBydW4gQUZURVIgUk9XIElOU0VSVCB0cmlnZ2Vycy4KKwkJICogdGFi bGVfbXVsdGlfaW5zZXJ0IG1heSBsZWFrIG1lbW9yeSwgc28gc3dpdGNoIHRvIHNob3J0LWxpdmVk IG1lbW9yeQorCQkgKiBjb250ZXh0IGJlZm9yZSBjYWxsaW5nIGl0LgogCQkgKi8KLQkJaWYgKHJl c3VsdFJlbEluZm8tPnJpX051bUluZGljZXMgPiAwKQotCQl7Ci0JCQlMaXN0CSAgICpyZWNoZWNr SW5kZXhlczsKLQotCQkJY3N0YXRlLT5jdXJfbGluZW5vID0gYnVmZmVyLT5saW5lbm9zW2ldOwot CQkJcmVjaGVja0luZGV4ZXMgPQotCQkJCUV4ZWNJbnNlcnRJbmRleFR1cGxlcyhyZXN1bHRSZWxJ bmZvLAotCQkJCQkJCQkJICBidWZmZXItPnNsb3RzW2ldLCBlc3RhdGUsIGZhbHNlLCBmYWxzZSwK LQkJCQkJCQkJCSAgTlVMTCwgTklMKTsKLQkJCUV4ZWNBUkluc2VydFRyaWdnZXJzKGVzdGF0ZSwg cmVzdWx0UmVsSW5mbywKLQkJCQkJCQkJIHNsb3RzW2ldLCByZWNoZWNrSW5kZXhlcywKLQkJCQkJ CQkJIGNzdGF0ZS0+dHJhbnNpdGlvbl9jYXB0dXJlKTsKLQkJCWxpc3RfZnJlZShyZWNoZWNrSW5k ZXhlcyk7Ci0JCX0KKwkJb2xkY29udGV4dCA9IE1lbW9yeUNvbnRleHRTd2l0Y2hUbyhHZXRQZXJU dXBsZU1lbW9yeUNvbnRleHQoZXN0YXRlKSk7CisJCXRhYmxlX211bHRpX2luc2VydChyZXN1bHRS ZWxJbmZvLT5yaV9SZWxhdGlvbkRlc2MsCisJCQkJCQkgICBzbG90cywKKwkJCQkJCSAgIG51c2Vk LAorCQkJCQkJICAgbXljaWQsCisJCQkJCQkgICB0aV9vcHRpb25zLAorCQkJCQkJICAgYnVmZmVy LT5iaXN0YXRlKTsKKwkJTWVtb3J5Q29udGV4dFN3aXRjaFRvKG9sZGNvbnRleHQpOwogCi0JCS8q Ci0JCSAqIFRoZXJlJ3Mgbm8gaW5kZXhlcywgYnV0IHNlZSBpZiB3ZSBuZWVkIHRvIHJ1biBBRlRF UiBST1cgSU5TRVJUCi0JCSAqIHRyaWdnZXJzIGFueXdheS4KLQkJICovCi0JCWVsc2UgaWYgKHJl c3VsdFJlbEluZm8tPnJpX1RyaWdEZXNjICE9IE5VTEwgJiYKLQkJCQkgKHJlc3VsdFJlbEluZm8t PnJpX1RyaWdEZXNjLT50cmlnX2luc2VydF9hZnRlcl9yb3cgfHwKLQkJCQkgIHJlc3VsdFJlbElu Zm8tPnJpX1RyaWdEZXNjLT50cmlnX2luc2VydF9uZXdfdGFibGUpKQorCQlmb3IgKGkgPSAwOyBp IDwgbnVzZWQ7IGkrKykKIAkJewotCQkJY3N0YXRlLT5jdXJfbGluZW5vID0gYnVmZmVyLT5saW5l bm9zW2ldOwotCQkJRXhlY0FSSW5zZXJ0VHJpZ2dlcnMoZXN0YXRlLCByZXN1bHRSZWxJbmZvLAot CQkJCQkJCQkgc2xvdHNbaV0sIE5JTCwgY3N0YXRlLT50cmFuc2l0aW9uX2NhcHR1cmUpOwotCQl9 CisJCQkvKgorCQkJICogSWYgdGhlcmUgYXJlIGFueSBpbmRleGVzLCB1cGRhdGUgdGhlbSBmb3Ig YWxsIHRoZSBpbnNlcnRlZCB0dXBsZXMsCisJCQkgKiBhbmQgcnVuIEFGVEVSIFJPVyBJTlNFUlQg dHJpZ2dlcnMuCisJCQkgKi8KKwkJCWlmIChyZXN1bHRSZWxJbmZvLT5yaV9OdW1JbmRpY2VzID4g MCkKKwkJCXsKKwkJCQlMaXN0CSAgICpyZWNoZWNrSW5kZXhlczsKKworCQkJCWNzdGF0ZS0+Y3Vy X2xpbmVubyA9IGJ1ZmZlci0+bGluZW5vc1tpXTsKKwkJCQlyZWNoZWNrSW5kZXhlcyA9CisJCQkJ CUV4ZWNJbnNlcnRJbmRleFR1cGxlcyhyZXN1bHRSZWxJbmZvLAorCQkJCQkJCQkJCSAgYnVmZmVy LT5zbG90c1tpXSwgZXN0YXRlLCBmYWxzZSwgZmFsc2UsCisJCQkJCQkJCQkJICBOVUxMLCBOSUwp OworCQkJCUV4ZWNBUkluc2VydFRyaWdnZXJzKGVzdGF0ZSwgcmVzdWx0UmVsSW5mbywKKwkJCQkJ CQkJCSBzbG90c1tpXSwgcmVjaGVja0luZGV4ZXMsCisJCQkJCQkJCQkgY3N0YXRlLT50cmFuc2l0 aW9uX2NhcHR1cmUpOworCQkJCWxpc3RfZnJlZShyZWNoZWNrSW5kZXhlcyk7CisJCQl9CisKKwkJ CS8qCisJCQkgKiBUaGVyZSdzIG5vIGluZGV4ZXMsIGJ1dCBzZWUgaWYgd2UgbmVlZCB0byBydW4g QUZURVIgUk9XIElOU0VSVAorCQkJICogdHJpZ2dlcnMgYW55d2F5LgorCQkJICovCisJCQllbHNl IGlmIChyZXN1bHRSZWxJbmZvLT5yaV9UcmlnRGVzYyAhPSBOVUxMICYmCisJCQkJCSAocmVzdWx0 UmVsSW5mby0+cmlfVHJpZ0Rlc2MtPnRyaWdfaW5zZXJ0X2FmdGVyX3JvdyB8fAorCQkJCQkgIHJl c3VsdFJlbEluZm8tPnJpX1RyaWdEZXNjLT50cmlnX2luc2VydF9uZXdfdGFibGUpKQorCQkJewor CQkJCWNzdGF0ZS0+Y3VyX2xpbmVubyA9IGJ1ZmZlci0+bGluZW5vc1tpXTsKKwkJCQlFeGVjQVJJ bnNlcnRUcmlnZ2Vycyhlc3RhdGUsIHJlc3VsdFJlbEluZm8sCisJCQkJCQkJCQkgc2xvdHNbaV0s IE5JTCwgY3N0YXRlLT50cmFuc2l0aW9uX2NhcHR1cmUpOworCQkJfQogCi0JCUV4ZWNDbGVhclR1 cGxlKHNsb3RzW2ldKTsKKwkJCUV4ZWNDbGVhclR1cGxlKHNsb3RzW2ldKTsKKwkJfQogCX0KIAog CS8qIE1hcmsgdGhhdCBhbGwgc2xvdHMgYXJlIGZyZWUgKi8KQEAgLTUzNywxMyArNTQ3LDExIEBA IENvcHlGcm9tKENvcHlGcm9tU3RhdGUgY3N0YXRlKQogCUNvbW1hbmRJZAlteWNpZCA9IEdldEN1 cnJlbnRDb21tYW5kSWQodHJ1ZSk7CiAJaW50CQkJdGlfb3B0aW9ucyA9IDA7IC8qIHN0YXJ0IHdp dGggZGVmYXVsdCBvcHRpb25zIGZvciBpbnNlcnQgKi8KIAlCdWxrSW5zZXJ0U3RhdGUgYmlzdGF0 ZSA9IE5VTEw7Ci0JQ29weUluc2VydE1ldGhvZCBpbnNlcnRNZXRob2Q7CiAJQ29weU11bHRpSW5z ZXJ0SW5mbyBtdWx0aUluc2VydEluZm8gPSB7MH07CS8qIHBhY2lmeSBjb21waWxlciAqLwogCWlu dDY0CQlwcm9jZXNzZWQgPSAwOwogCWludDY0CQlleGNsdWRlZCA9IDA7CiAJYm9vbAkJaGFzX2Jl Zm9yZV9pbnNlcnRfcm93X3RyaWc7CiAJYm9vbAkJaGFzX2luc3RlYWRfaW5zZXJ0X3Jvd190cmln OwotCWJvb2wJCWxlYWZwYXJ0X3VzZV9tdWx0aV9pbnNlcnQgPSBmYWxzZTsKIAogCUFzc2VydChj c3RhdGUtPnJlbCk7CiAJQXNzZXJ0KGxpc3RfbGVuZ3RoKGNzdGF0ZS0+cmFuZ2VfdGFibGUpID09 IDEpOwpAQCAtNjUzLDYgKzY2MSwzMyBAQCBDb3B5RnJvbShDb3B5RnJvbVN0YXRlIGNzdGF0ZSkK IAlyZXN1bHRSZWxJbmZvID0gdGFyZ2V0X3Jlc3VsdFJlbEluZm8gPSBtYWtlTm9kZShSZXN1bHRS ZWxJbmZvKTsKIAlFeGVjSW5pdFJlc3VsdFJlbGF0aW9uKGVzdGF0ZSwgcmVzdWx0UmVsSW5mbywg MSk7CiAKKwlBc3NlcnQoIXRhcmdldF9yZXN1bHRSZWxJbmZvLT5yaV91c2VzTXVsdGlJbnNlcnQp OworCisJLyoKKwkgKiBJdCdzIGdlbmVyYWxseSBtb3JlIGVmZmljaWVudCB0byBwcmVwYXJlIGEg YnVuY2ggb2YgdHVwbGVzIGZvcgorCSAqIGluc2VydGlvbiwgYW5kIGluc2VydCB0aGVtIGluIGJ1 bGssIGZvciBleGFtcGxlLCB3aXRoIG9uZQorCSAqIHRhYmxlX211bHRpX2luc2VydCgpIGNhbGwg dGhhbiBjYWxsIHRhYmxlX3R1cGxlX2luc2VydCgpIHNlcGFyYXRlbHkgZm9yCisJICogZXZlcnkg dHVwbGUuIEhvd2V2ZXIsIHRoZXJlIGFyZSBhIG51bWJlciBvZiByZWFzb25zIHdoeSB3ZSBtaWdo dCBub3QgYmUKKwkgKiBhYmxlIHRvIGRvIHRoaXMuICBGb3IgZXhhbXBsZSwgaWYgdGhlcmUgYW55 IHZvbGF0aWxlIGV4cHJlc3Npb25zIGluIHRoZQorCSAqIHRhYmxlJ3MgZGVmYXVsdCB2YWx1ZXMg b3IgaW4gdGhlIHN0YXRlbWVudCdzIFdIRVJFIGNsYXVzZSwgd2hpY2ggbWF5CisJICogcXVlcnkg dGhlIHRhYmxlIHdlIGFyZSBpbnNlcnRpbmcgaW50bywgYnVmZmVyaW5nIHR1cGxlcyBtaWdodCBw cm9kdWNlCisJICogd3JvbmcgcmVzdWx0cy4gIEFsc28sIHRoZSByZWxhdGlvbiB3ZSBhcmUgdHJ5 aW5nIHRvIGluc2VydCBpbnRvIGl0c2VsZgorCSAqIG1heSBub3QgYmUgYW1lbmFibGUgdG8gYnVm ZmVyZWQgaW5zZXJ0cy4KKwkgKgorCSAqIE5vdGU6IEZvciBwYXJ0aXRpb25zLCB0aGlzIGZsYWcg aXMgc2V0IGNvbnNpZGVyaW5nIHRoZSB0YXJnZXQgdGFibGUncworCSAqIGZsYWcgdGhhdCBpcyBi ZWluZyBzZXQgaGVyZSBhbmQgcGFydGl0aW9uJ3Mgb3duIHByb3BlcnRpZXMgd2hpY2ggYXJlCisJ ICogY2hlY2tlZCBieSBjYWxsaW5nIEV4ZWNNdWx0aUluc2VydEFsbG93ZWQoKS4gIEl0IGRvZXMg bm90IG1hdHRlcgorCSAqIHdoZXRoZXIgcGFydGl0aW9ucyBoYXZlIGFueSB2b2xhdGlsZSBkZWZh dWx0IGV4cHJlc3Npb25zIGFzIHdlIHVzZSB0aGUKKwkgKiBkZWZhdWx0cyBmcm9tIHRoZSB0YXJn ZXQgb2YgdGhlIENPUFkgY29tbWFuZC4KKwkgKiBBbHNvLCB0aGUgQ09QWSBjb21tYW5kIHJlcXVp cmVzIGEgbm9uLXplcm8gaW5wdXQgbGlzdCBvZiBhdHRyaWJ1dGVzLgorCSAqIFRoZXJlZm9yZSwg dGhlIGxlbmd0aCBvZiB0aGUgYXR0cmlidXRlIGxpc3QgaXMgY2hlY2tlZCBoZXJlLgorCSAqLwor CWlmICghY3N0YXRlLT52b2xhdGlsZV9kZWZleHBycyAmJgorCQlsaXN0X2xlbmd0aChjc3RhdGUt PmF0dG51bWxpc3QpID4gMCAmJgorCQkhY29udGFpbl92b2xhdGlsZV9mdW5jdGlvbnMoY3N0YXRl LT53aGVyZUNsYXVzZSkpCisJCXRhcmdldF9yZXN1bHRSZWxJbmZvLT5yaV91c2VzTXVsdGlJbnNl cnQgPQorCQkJCQlFeGVjTXVsdGlJbnNlcnRBbGxvd2VkKHRhcmdldF9yZXN1bHRSZWxJbmZvKTsK KwogCS8qIFZlcmlmeSB0aGUgbmFtZWQgcmVsYXRpb24gaXMgYSB2YWxpZCB0YXJnZXQgZm9yIElO U0VSVCAqLwogCUNoZWNrVmFsaWRSZXN1bHRSZWwocmVzdWx0UmVsSW5mbywgQ01EX0lOU0VSVCk7 CiAKQEAgLTY2OSwxMCArNzA0LDIyIEBAIENvcHlGcm9tKENvcHlGcm9tU3RhdGUgY3N0YXRlKQog CW10c3RhdGUtPnJlc3VsdFJlbEluZm8gPSByZXN1bHRSZWxJbmZvOwogCW10c3RhdGUtPnJvb3RS ZXN1bHRSZWxJbmZvID0gcmVzdWx0UmVsSW5mbzsKIAotCWlmIChyZXN1bHRSZWxJbmZvLT5yaV9G ZHdSb3V0aW5lICE9IE5VTEwgJiYKLQkJcmVzdWx0UmVsSW5mby0+cmlfRmR3Um91dGluZS0+QmVn aW5Gb3JlaWduSW5zZXJ0ICE9IE5VTEwpCi0JCXJlc3VsdFJlbEluZm8tPnJpX0Zkd1JvdXRpbmUt PkJlZ2luRm9yZWlnbkluc2VydChtdHN0YXRlLAotCQkJCQkJCQkJCQkJCQkgcmVzdWx0UmVsSW5m byk7CisJLyoKKwkgKiBJbml0IGNvcHlpbmcgcHJvY2VzcyBpbnRvIGZvcmVpZ24gdGFibGUuIElu aXRpYWxpemF0aW9uIG9mIGNvcHlpbmcgaW50bworCSAqIGZvcmVpZ24gcGFydGl0aW9ucyB3aWxs IGJlIGRvbmUgbGF0ZXIuCisJICovCisJaWYgKHRhcmdldF9yZXN1bHRSZWxJbmZvLT5yaV9GZHdS b3V0aW5lICE9IE5VTEwpCisJeworCQlpZiAodGFyZ2V0X3Jlc3VsdFJlbEluZm8tPnJpX3VzZXNN dWx0aUluc2VydCkKKwkJeworCQkJaWYgKHRhcmdldF9yZXN1bHRSZWxJbmZvLT5yaV9GZHdSb3V0 aW5lLT5CZWdpbkZvcmVpZ25Db3B5ICE9IE5VTEwpCisJCQkJdGFyZ2V0X3Jlc3VsdFJlbEluZm8t PnJpX0Zkd1JvdXRpbmUtPkJlZ2luRm9yZWlnbkNvcHkoZXN0YXRlLAorCQkJCQkJCQkJCQkJCQkJ CQkgIHJlc3VsdFJlbEluZm8pOworCQl9CisJCWVsc2UgaWYgKHRhcmdldF9yZXN1bHRSZWxJbmZv LT5yaV9GZHdSb3V0aW5lLT5CZWdpbkZvcmVpZ25JbnNlcnQgIT0gTlVMTCkKKwkJCXRhcmdldF9y ZXN1bHRSZWxJbmZvLT5yaV9GZHdSb3V0aW5lLT5CZWdpbkZvcmVpZ25JbnNlcnQobXRzdGF0ZSwK KwkJCQkJCQkJCQkJCQkJCQkJcmVzdWx0UmVsSW5mbyk7CisJfQogCiAJLyogUHJlcGFyZSB0byBj YXRjaCBBRlRFUiB0cmlnZ2Vycy4gKi8KIAlBZnRlclRyaWdnZXJCZWdpblF1ZXJ5KCk7CkBAIC03 MDEsODMgKzc0OCw5IEBAIENvcHlGcm9tKENvcHlGcm9tU3RhdGUgY3N0YXRlKQogCQljc3RhdGUt PnF1YWxleHByID0gRXhlY0luaXRRdWFsKGNhc3ROb2RlKExpc3QsIGNzdGF0ZS0+d2hlcmVDbGF1 c2UpLAogCQkJCQkJCQkJCSZtdHN0YXRlLT5wcyk7CiAKLQkvKgotCSAqIEl0J3MgZ2VuZXJhbGx5 IG1vcmUgZWZmaWNpZW50IHRvIHByZXBhcmUgYSBidW5jaCBvZiB0dXBsZXMgZm9yCi0JICogaW5z ZXJ0aW9uLCBhbmQgaW5zZXJ0IHRoZW0gaW4gb25lIHRhYmxlX211bHRpX2luc2VydCgpIGNhbGws IHRoYW4gY2FsbAotCSAqIHRhYmxlX3R1cGxlX2luc2VydCgpIHNlcGFyYXRlbHkgZm9yIGV2ZXJ5 IHR1cGxlLiBIb3dldmVyLCB0aGVyZSBhcmUgYQotCSAqIG51bWJlciBvZiByZWFzb25zIHdoeSB3 ZSBtaWdodCBub3QgYmUgYWJsZSB0byBkbyB0aGlzLiAgVGhlc2UgYXJlCi0JICogZXhwbGFpbmVk IGJlbG93LgotCSAqLwotCWlmIChyZXN1bHRSZWxJbmZvLT5yaV9UcmlnRGVzYyAhPSBOVUxMICYm Ci0JCShyZXN1bHRSZWxJbmZvLT5yaV9UcmlnRGVzYy0+dHJpZ19pbnNlcnRfYmVmb3JlX3JvdyB8 fAotCQkgcmVzdWx0UmVsSW5mby0+cmlfVHJpZ0Rlc2MtPnRyaWdfaW5zZXJ0X2luc3RlYWRfcm93 KSkKLQl7Ci0JCS8qCi0JCSAqIENhbid0IHN1cHBvcnQgbXVsdGktaW5zZXJ0cyB3aGVuIHRoZXJl IGFyZSBhbnkgQkVGT1JFL0lOU1RFQUQgT0YKLQkJICogdHJpZ2dlcnMgb24gdGhlIHRhYmxlLiBT dWNoIHRyaWdnZXJzIG1pZ2h0IHF1ZXJ5IHRoZSB0YWJsZSB3ZSdyZQotCQkgKiBpbnNlcnRpbmcg aW50byBhbmQgYWN0IGRpZmZlcmVudGx5IGlmIHRoZSB0dXBsZXMgdGhhdCBoYXZlIGFscmVhZHkK LQkJICogYmVlbiBwcm9jZXNzZWQgYW5kIHByZXBhcmVkIGZvciBpbnNlcnRpb24gYXJlIG5vdCB0 aGVyZS4KLQkJICovCi0JCWluc2VydE1ldGhvZCA9IENJTV9TSU5HTEU7Ci0JfQotCWVsc2UgaWYg KHByb3V0ZSAhPSBOVUxMICYmIHJlc3VsdFJlbEluZm8tPnJpX1RyaWdEZXNjICE9IE5VTEwgJiYK LQkJCSByZXN1bHRSZWxJbmZvLT5yaV9UcmlnRGVzYy0+dHJpZ19pbnNlcnRfbmV3X3RhYmxlKQot CXsKLQkJLyoKLQkJICogRm9yIHBhcnRpdGlvbmVkIHRhYmxlcyB3ZSBjYW4ndCBzdXBwb3J0IG11 bHRpLWluc2VydHMgd2hlbiB0aGVyZQotCQkgKiBhcmUgYW55IHN0YXRlbWVudCBsZXZlbCBpbnNl cnQgdHJpZ2dlcnMuIEl0IG1pZ2h0IGJlIHBvc3NpYmxlIHRvCi0JCSAqIGFsbG93IHBhcnRpdGlv bmVkIHRhYmxlcyB3aXRoIHN1Y2ggdHJpZ2dlcnMgaW4gdGhlIGZ1dHVyZSwgYnV0IGZvcgotCQkg KiBub3csIENvcHlNdWx0aUluc2VydEluZm9GbHVzaCBleHBlY3RzIHRoYXQgYW55IGJlZm9yZSBy b3cgaW5zZXJ0Ci0JCSAqIGFuZCBzdGF0ZW1lbnQgbGV2ZWwgaW5zZXJ0IHRyaWdnZXJzIGFyZSBv biB0aGUgc2FtZSByZWxhdGlvbi4KLQkJICovCi0JCWluc2VydE1ldGhvZCA9IENJTV9TSU5HTEU7 Ci0JfQotCWVsc2UgaWYgKHJlc3VsdFJlbEluZm8tPnJpX0Zkd1JvdXRpbmUgIT0gTlVMTCB8fAot CQkJIGNzdGF0ZS0+dm9sYXRpbGVfZGVmZXhwcnMpCi0JewotCQkvKgotCQkgKiBDYW4ndCBzdXBw b3J0IG11bHRpLWluc2VydHMgdG8gZm9yZWlnbiB0YWJsZXMgb3IgaWYgdGhlcmUgYXJlIGFueQot CQkgKiB2b2xhdGlsZSBkZWZhdWx0IGV4cHJlc3Npb25zIGluIHRoZSB0YWJsZS4gIFNpbWlsYXJs eSB0byB0aGUKLQkJICogdHJpZ2dlciBjYXNlIGFib3ZlLCBzdWNoIGV4cHJlc3Npb25zIG1heSBx dWVyeSB0aGUgdGFibGUgd2UncmUKLQkJICogaW5zZXJ0aW5nIGludG8uCi0JCSAqCi0JCSAqIE5v dGU6IEl0IGRvZXMgbm90IG1hdHRlciBpZiBhbnkgcGFydGl0aW9ucyBoYXZlIGFueSB2b2xhdGls ZQotCQkgKiBkZWZhdWx0IGV4cHJlc3Npb25zIGFzIHdlIHVzZSB0aGUgZGVmYXVsdHMgZnJvbSB0 aGUgdGFyZ2V0IG9mIHRoZQotCQkgKiBDT1BZIGNvbW1hbmQuCi0JCSAqLwotCQlpbnNlcnRNZXRo b2QgPSBDSU1fU0lOR0xFOwotCX0KLQllbHNlIGlmIChjb250YWluX3ZvbGF0aWxlX2Z1bmN0aW9u cyhjc3RhdGUtPndoZXJlQ2xhdXNlKSkKLQl7Ci0JCS8qCi0JCSAqIENhbid0IHN1cHBvcnQgbXVs dGktaW5zZXJ0cyBpZiB0aGVyZSBhcmUgYW55IHZvbGF0aWxlIGZ1bmN0aW9uCi0JCSAqIGV4cHJl c3Npb25zIGluIFdIRVJFIGNsYXVzZS4gIFNpbWlsYXJseSB0byB0aGUgdHJpZ2dlciBjYXNlIGFi b3ZlLAotCQkgKiBzdWNoIGV4cHJlc3Npb25zIG1heSBxdWVyeSB0aGUgdGFibGUgd2UncmUgaW5z ZXJ0aW5nIGludG8uCi0JCSAqLwotCQlpbnNlcnRNZXRob2QgPSBDSU1fU0lOR0xFOwotCX0KLQll bHNlCi0JewotCQkvKgotCQkgKiBGb3IgcGFydGl0aW9uZWQgdGFibGVzLCB3ZSBtYXkgc3RpbGwg YmUgYWJsZSB0byBwZXJmb3JtIGJ1bGsKLQkJICogaW5zZXJ0cy4gIEhvd2V2ZXIsIHRoZSBwb3Nz aWJpbGl0eSBvZiB0aGlzIGRlcGVuZHMgb24gd2hpY2ggdHlwZXMKLQkJICogb2YgdHJpZ2dlcnMg ZXhpc3Qgb24gdGhlIHBhcnRpdGlvbi4gIFdlIG11c3QgZGlzYWJsZSBidWxrIGluc2VydHMKLQkJ ICogaWYgdGhlIHBhcnRpdGlvbiBpcyBhIGZvcmVpZ24gdGFibGUgb3IgaXQgaGFzIGFueSBiZWZv cmUgcm93IGluc2VydAotCQkgKiBvciBpbnNlcnQgaW5zdGVhZCB0cmlnZ2VycyAoc2FtZSBhcyB3 ZSBjaGVja2VkIGFib3ZlIGZvciB0aGUgcGFyZW50Ci0JCSAqIHRhYmxlKS4gIFNpbmNlIHRoZSBw YXJ0aXRpb24ncyByZXN1bHRSZWxJbmZvcyBhcmUgaW5pdGlhbGl6ZWQgb25seQotCQkgKiB3aGVu IHdlIGFjdHVhbGx5IG5lZWQgdG8gaW5zZXJ0IHRoZSBmaXJzdCB0dXBsZSBpbnRvIHRoZW0sIHdl IG11c3QKLQkJICogaGF2ZSB0aGUgaW50ZXJtZWRpYXRlIGluc2VydCBtZXRob2Qgb2YgQ0lNX01V TFRJX0NPTkRJVElPTkFMIHRvCi0JCSAqIGZsYWcgdGhhdCB3ZSBtdXN0IGxhdGVyIGRldGVybWlu ZSBpZiB3ZSBjYW4gdXNlIGJ1bGstaW5zZXJ0cyBmb3IKLQkJICogdGhlIHBhcnRpdGlvbiBiZWlu ZyBpbnNlcnRlZCBpbnRvLgotCQkgKi8KLQkJaWYgKHByb3V0ZSkKLQkJCWluc2VydE1ldGhvZCA9 IENJTV9NVUxUSV9DT05ESVRJT05BTDsKLQkJZWxzZQotCQkJaW5zZXJ0TWV0aG9kID0gQ0lNX01V TFRJOwotCisJaWYgKHJlc3VsdFJlbEluZm8tPnJpX3VzZXNNdWx0aUluc2VydCkKIAkJQ29weU11 bHRpSW5zZXJ0SW5mb0luaXQoJm11bHRpSW5zZXJ0SW5mbywgcmVzdWx0UmVsSW5mbywgY3N0YXRl LAogCQkJCQkJCQllc3RhdGUsIG15Y2lkLCB0aV9vcHRpb25zKTsKLQl9CiAKIAkvKgogCSAqIElm IG5vdCB1c2luZyBiYXRjaCBtb2RlICh3aGljaCBhbGxvY2F0ZXMgc2xvdHMgYXMgbmVlZGVkKSBz ZXQgdXAgYQpAQCAtNzg1LDcgKzc1OCw3IEBAIENvcHlGcm9tKENvcHlGcm9tU3RhdGUgY3N0YXRl KQogCSAqIG9uZSwgZXZlbiBpZiB3ZSBtaWdodCBiYXRjaCBpbnNlcnQsIHRvIHJlYWQgdGhlIHR1 cGxlIGluIHRoZSByb290CiAJICogcGFydGl0aW9uJ3MgZm9ybS4KIAkgKi8KLQlpZiAoaW5zZXJ0 TWV0aG9kID09IENJTV9TSU5HTEUgfHwgaW5zZXJ0TWV0aG9kID09IENJTV9NVUxUSV9DT05ESVRJ T05BTCkKKwlpZiAoIXJlc3VsdFJlbEluZm8tPnJpX3VzZXNNdWx0aUluc2VydCB8fCBwcm91dGUp CiAJewogCQlzaW5nbGVzbG90ID0gdGFibGVfc2xvdF9jcmVhdGUocmVzdWx0UmVsSW5mby0+cmlf UmVsYXRpb25EZXNjLAogCQkJCQkJCQkJICAgJmVzdGF0ZS0+ZXNfdHVwbGVUYWJsZSk7CkBAIC04 MjgsNyArODAxLDcgQEAgQ29weUZyb20oQ29weUZyb21TdGF0ZSBjc3RhdGUpCiAJCVJlc2V0UGVy VHVwbGVFeHByQ29udGV4dChlc3RhdGUpOwogCiAJCS8qIHNlbGVjdCBzbG90IHRvIChpbml0aWFs bHkpIGxvYWQgcm93IGludG8gKi8KLQkJaWYgKGluc2VydE1ldGhvZCA9PSBDSU1fU0lOR0xFIHx8 IHByb3V0ZSkKKwkJaWYgKCF0YXJnZXRfcmVzdWx0UmVsSW5mby0+cmlfdXNlc011bHRpSW5zZXJ0 IHx8IHByb3V0ZSkKIAkJewogCQkJbXlzbG90ID0gc2luZ2xlc2xvdDsKIAkJCUFzc2VydChteXNs b3QgIT0gTlVMTCk7CkBAIC04MzYsNyArODA5LDYgQEAgQ29weUZyb20oQ29weUZyb21TdGF0ZSBj c3RhdGUpCiAJCWVsc2UKIAkJewogCQkJQXNzZXJ0KHJlc3VsdFJlbEluZm8gPT0gdGFyZ2V0X3Jl c3VsdFJlbEluZm8pOwotCQkJQXNzZXJ0KGluc2VydE1ldGhvZCA9PSBDSU1fTVVMVEkpOwogCiAJ CQlteXNsb3QgPSBDb3B5TXVsdGlJbnNlcnRJbmZvTmV4dEZyZWVTbG90KCZtdWx0aUluc2VydElu Zm8sCiAJCQkJCQkJCQkJCQkJIHJlc3VsdFJlbEluZm8pOwpAQCAtOTAzLDI0ICs4NzUsMTQgQEAg Q29weUZyb20oQ29weUZyb21TdGF0ZSBjc3RhdGUpCiAJCQkJaGFzX2luc3RlYWRfaW5zZXJ0X3Jv d190cmlnID0gKHJlc3VsdFJlbEluZm8tPnJpX1RyaWdEZXNjICYmCiAJCQkJCQkJCQkJCSAgIHJl c3VsdFJlbEluZm8tPnJpX1RyaWdEZXNjLT50cmlnX2luc2VydF9pbnN0ZWFkX3Jvdyk7CiAKLQkJ CQkvKgotCQkJCSAqIERpc2FibGUgbXVsdGktaW5zZXJ0cyB3aGVuIHRoZSBwYXJ0aXRpb24gaGFz IEJFRk9SRS9JTlNURUFECi0JCQkJICogT0YgdHJpZ2dlcnMsIG9yIGlmIHRoZSBwYXJ0aXRpb24g aXMgYSBmb3JlaWduIHBhcnRpdGlvbi4KLQkJCQkgKi8KLQkJCQlsZWFmcGFydF91c2VfbXVsdGlf aW5zZXJ0ID0gaW5zZXJ0TWV0aG9kID09IENJTV9NVUxUSV9DT05ESVRJT05BTCAmJgotCQkJCQkh aGFzX2JlZm9yZV9pbnNlcnRfcm93X3RyaWcgJiYKLQkJCQkJIWhhc19pbnN0ZWFkX2luc2VydF9y b3dfdHJpZyAmJgotCQkJCQlyZXN1bHRSZWxJbmZvLT5yaV9GZHdSb3V0aW5lID09IE5VTEw7Ci0K IAkJCQkvKiBTZXQgdGhlIG11bHRpLWluc2VydCBidWZmZXIgdG8gdXNlIGZvciB0aGlzIHBhcnRp dGlvbi4gKi8KLQkJCQlpZiAobGVhZnBhcnRfdXNlX211bHRpX2luc2VydCkKKwkJCQlpZiAocmVz dWx0UmVsSW5mby0+cmlfdXNlc011bHRpSW5zZXJ0KQogCQkJCXsKIAkJCQkJaWYgKHJlc3VsdFJl bEluZm8tPnJpX0NvcHlNdWx0aUluc2VydEJ1ZmZlciA9PSBOVUxMKQogCQkJCQkJQ29weU11bHRp SW5zZXJ0SW5mb1NldHVwQnVmZmVyKCZtdWx0aUluc2VydEluZm8sCiAJCQkJCQkJCQkJCQkJICAg cmVzdWx0UmVsSW5mbyk7CiAJCQkJfQotCQkJCWVsc2UgaWYgKGluc2VydE1ldGhvZCA9PSBDSU1f TVVMVElfQ09ORElUSU9OQUwgJiYKLQkJCQkJCSAhQ29weU11bHRpSW5zZXJ0SW5mb0lzRW1wdHko Jm11bHRpSW5zZXJ0SW5mbykpCisJCQkJZWxzZSBpZiAoIUNvcHlNdWx0aUluc2VydEluZm9Jc0Vt cHR5KCZtdWx0aUluc2VydEluZm8pKQogCQkJCXsKIAkJCQkJLyoKIAkJCQkJICogRmx1c2ggcGVu ZGluZyBpbnNlcnRzIGlmIHRoaXMgcGFydGl0aW9uIGNhbid0IHVzZQpAQCAtOTUwLDcgKzkxMiw3 IEBAIENvcHlGcm9tKENvcHlGcm9tU3RhdGUgY3N0YXRlKQogCQkJICogcm93dHlwZS4KIAkJCSAq LwogCQkJbWFwID0gcmVzdWx0UmVsSW5mby0+cmlfUm9vdFRvUGFydGl0aW9uTWFwOwotCQkJaWYg KGluc2VydE1ldGhvZCA9PSBDSU1fU0lOR0xFIHx8ICFsZWFmcGFydF91c2VfbXVsdGlfaW5zZXJ0 KQorCQkJaWYgKCFyZXN1bHRSZWxJbmZvLT5yaV91c2VzTXVsdGlJbnNlcnQpCiAJCQl7CiAJCQkJ Lyogbm9uIGJhdGNoIGluc2VydCAqLwogCQkJCWlmIChtYXAgIT0gTlVMTCkKQEAgLTk2OSw5ICs5 MzEsNiBAQCBDb3B5RnJvbShDb3B5RnJvbVN0YXRlIGNzdGF0ZSkKIAkJCQkgKi8KIAkJCQlUdXBs ZVRhYmxlU2xvdCAqYmF0Y2hzbG90OwogCi0JCQkJLyogbm8gb3RoZXIgcGF0aCBhdmFpbGFibGUg Zm9yIHBhcnRpdGlvbmVkIHRhYmxlICovCi0JCQkJQXNzZXJ0KGluc2VydE1ldGhvZCA9PSBDSU1f TVVMVElfQ09ORElUSU9OQUwpOwotCiAJCQkJYmF0Y2hzbG90ID0gQ29weU11bHRpSW5zZXJ0SW5m b05leHRGcmVlU2xvdCgmbXVsdGlJbnNlcnRJbmZvLAogCQkJCQkJCQkJCQkJCQkJcmVzdWx0UmVs SW5mbyk7CiAKQEAgLTEwNDMsNyArMTAwMiw3IEBAIENvcHlGcm9tKENvcHlGcm9tU3RhdGUgY3N0 YXRlKQogCQkJCQlFeGVjUGFydGl0aW9uQ2hlY2socmVzdWx0UmVsSW5mbywgbXlzbG90LCBlc3Rh dGUsIHRydWUpOwogCiAJCQkJLyogU3RvcmUgdGhlIHNsb3QgaW4gdGhlIG11bHRpLWluc2VydCBi dWZmZXIsIHdoZW4gZW5hYmxlZC4gKi8KLQkJCQlpZiAoaW5zZXJ0TWV0aG9kID09IENJTV9NVUxU SSB8fCBsZWFmcGFydF91c2VfbXVsdGlfaW5zZXJ0KQorCQkJCWlmIChyZXN1bHRSZWxJbmZvLT5y aV91c2VzTXVsdGlJbnNlcnQpCiAJCQkJewogCQkJCQkvKgogCQkJCQkgKiBUaGUgc2xvdCBwcmV2 aW91c2x5IG1pZ2h0IHBvaW50IGludG8gdGhlIHBlci10dXBsZQpAQCAtMTEyMiwxMSArMTA4MSw4 IEBAIENvcHlGcm9tKENvcHlGcm9tU3RhdGUgY3N0YXRlKQogCX0KIAogCS8qIEZsdXNoIGFueSBy ZW1haW5pbmcgYnVmZmVyZWQgdHVwbGVzICovCi0JaWYgKGluc2VydE1ldGhvZCAhPSBDSU1fU0lO R0xFKQotCXsKLQkJaWYgKCFDb3B5TXVsdGlJbnNlcnRJbmZvSXNFbXB0eSgmbXVsdGlJbnNlcnRJ bmZvKSkKLQkJCUNvcHlNdWx0aUluc2VydEluZm9GbHVzaCgmbXVsdGlJbnNlcnRJbmZvLCBOVUxM KTsKLQl9CisJaWYgKCFDb3B5TXVsdGlJbnNlcnRJbmZvSXNFbXB0eSgmbXVsdGlJbnNlcnRJbmZv KSkKKwkJQ29weU11bHRpSW5zZXJ0SW5mb0ZsdXNoKCZtdWx0aUluc2VydEluZm8sIE5VTEwpOwog CiAJLyogRG9uZSwgY2xlYW4gdXAgKi8KIAllcnJvcl9jb250ZXh0X3N0YWNrID0gZXJyY2FsbGJh Y2sucHJldmlvdXM7CkBAIC0xMTQ1LDE0ICsxMTAxLDIxIEBAIENvcHlGcm9tKENvcHlGcm9tU3Rh dGUgY3N0YXRlKQogCUV4ZWNSZXNldFR1cGxlVGFibGUoZXN0YXRlLT5lc190dXBsZVRhYmxlLCBm YWxzZSk7CiAKIAkvKiBBbGxvdyB0aGUgRkRXIHRvIHNodXQgZG93biAqLwotCWlmICh0YXJnZXRf cmVzdWx0UmVsSW5mby0+cmlfRmR3Um91dGluZSAhPSBOVUxMICYmCi0JCXRhcmdldF9yZXN1bHRS ZWxJbmZvLT5yaV9GZHdSb3V0aW5lLT5FbmRGb3JlaWduSW5zZXJ0ICE9IE5VTEwpCi0JCXRhcmdl dF9yZXN1bHRSZWxJbmZvLT5yaV9GZHdSb3V0aW5lLT5FbmRGb3JlaWduSW5zZXJ0KGVzdGF0ZSwK LQkJCQkJCQkJCQkJCQkJCSAgdGFyZ2V0X3Jlc3VsdFJlbEluZm8pOworCWlmICh0YXJnZXRfcmVz dWx0UmVsSW5mby0+cmlfRmR3Um91dGluZSAhPSBOVUxMKQorCXsKKwkJaWYgKHRhcmdldF9yZXN1 bHRSZWxJbmZvLT5yaV91c2VzTXVsdGlJbnNlcnQpCisJCXsKKwkJCWlmICh0YXJnZXRfcmVzdWx0 UmVsSW5mby0+cmlfRmR3Um91dGluZS0+RW5kRm9yZWlnbkNvcHkgIT0gTlVMTCkKKwkJCQl0YXJn ZXRfcmVzdWx0UmVsSW5mby0+cmlfRmR3Um91dGluZS0+RW5kRm9yZWlnbkNvcHkoZXN0YXRlLAor CQkJCQkJCQkJCQkJCQkJCQl0YXJnZXRfcmVzdWx0UmVsSW5mbyk7CisJCX0KKwkJZWxzZSBpZiAo dGFyZ2V0X3Jlc3VsdFJlbEluZm8tPnJpX0Zkd1JvdXRpbmUtPkVuZEZvcmVpZ25JbnNlcnQgIT0g TlVMTCkKKwkJCXRhcmdldF9yZXN1bHRSZWxJbmZvLT5yaV9GZHdSb3V0aW5lLT5FbmRGb3JlaWdu SW5zZXJ0KGVzdGF0ZSwKKwkJCQkJCQkJCQkJCQkJdGFyZ2V0X3Jlc3VsdFJlbEluZm8pOworCX0K IAogCS8qIFRlYXIgZG93biB0aGUgbXVsdGktaW5zZXJ0IGJ1ZmZlciBkYXRhICovCi0JaWYgKGlu c2VydE1ldGhvZCAhPSBDSU1fU0lOR0xFKQotCQlDb3B5TXVsdGlJbnNlcnRJbmZvQ2xlYW51cCgm bXVsdGlJbnNlcnRJbmZvKTsKKwlDb3B5TXVsdGlJbnNlcnRJbmZvQ2xlYW51cCgmbXVsdGlJbnNl cnRJbmZvKTsKIAogCS8qIENsb3NlIGFsbCB0aGUgcGFydGl0aW9uZWQgdGFibGVzLCBsZWFmIHBh cnRpdGlvbnMsIGFuZCB0aGVpciBpbmRpY2VzICovCiAJaWYgKHByb3V0ZSkKZGlmZiAtLWdpdCBh L3NyYy9iYWNrZW5kL2NvbW1hbmRzL2NvcHl0by5jIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29w eXRvLmMKaW5kZXggNzI1N2E1NC4uMzc4MjMzNiAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvY29t bWFuZHMvY29weXRvLmMKKysrIGIvc3JjL2JhY2tlbmQvY29tbWFuZHMvY29weXRvLmMKQEAgLTUx LDYgKzUxLDcgQEAgdHlwZWRlZiBlbnVtIENvcHlEZXN0CiB7CiAJQ09QWV9GSUxFLAkJCQkJLyog dG8gZmlsZSAob3IgYSBwaXBlZCBwcm9ncmFtKSAqLwogCUNPUFlfRlJPTlRFTkQsCQkJCS8qIHRv IGZyb250ZW5kICovCisJQ09QWV9DQUxMQkFDSwkJCQkvKiB0byBjYWxsYmFjayBmdW5jdGlvbiAq LwogfSBDb3B5RGVzdDsKIAogLyoKQEAgLTg2LDYgKzg3LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgQ29w eVRvU3RhdGVEYXRhCiAJY2hhcgkgICAqZmlsZW5hbWU7CQkvKiBmaWxlbmFtZSwgb3IgTlVMTCBm b3IgU1RET1VUICovCiAJYm9vbAkJaXNfcHJvZ3JhbTsJCS8qIGlzICdmaWxlbmFtZScgYSBwcm9n cmFtIHRvIHBvcGVuPyAqLwogCisJY29weV9kYXRhX2Rlc3RfY2IgZGF0YV9kZXN0X2NiOwkvKiBm dW5jdGlvbiBmb3Igd3JpdGluZyBkYXRhICovCiAJQ29weUZvcm1hdE9wdGlvbnMgb3B0czsKIAlO b2RlCSAgICp3aGVyZUNsYXVzZTsJLyogV0hFUkUgY29uZGl0aW9uIChvciBOVUxMKSAqLwogCkBA IC0xMTUsNyArMTE3LDYgQEAgc3RhdGljIGNvbnN0IGNoYXIgQmluYXJ5U2lnbmF0dXJlWzExXSA9 ICJQR0NPUFlcblwzNzdcclxuXDAiOwogLyogbm9uLWV4cG9ydCBmdW5jdGlvbiBwcm90b3R5cGVz ICovCiBzdGF0aWMgdm9pZCBFbmRDb3B5KENvcHlUb1N0YXRlIGNzdGF0ZSk7CiBzdGF0aWMgdm9p ZCBDbG9zZVBpcGVUb1Byb2dyYW0oQ29weVRvU3RhdGUgY3N0YXRlKTsKLXN0YXRpYyB2b2lkIENv cHlPbmVSb3dUbyhDb3B5VG9TdGF0ZSBjc3RhdGUsIFR1cGxlVGFibGVTbG90ICpzbG90KTsKIHN0 YXRpYyB2b2lkIENvcHlBdHRyaWJ1dGVPdXRUZXh0KENvcHlUb1N0YXRlIGNzdGF0ZSwgY2hhciAq c3RyaW5nKTsKIHN0YXRpYyB2b2lkIENvcHlBdHRyaWJ1dGVPdXRDU1YoQ29weVRvU3RhdGUgY3N0 YXRlLCBjaGFyICpzdHJpbmcsCiAJCQkJCQkJCWJvb2wgdXNlX3F1b3RlLCBib29sIHNpbmdsZV9h dHRyKTsKQEAgLTI0OCw2ICsyNDksMTUgQEAgQ29weVNlbmRFbmRPZlJvdyhDb3B5VG9TdGF0ZSBj c3RhdGUpCiAJCQkvKiBEdW1wIHRoZSBhY2N1bXVsYXRlZCByb3cgYXMgb25lIENvcHlEYXRhIG1l c3NhZ2UgKi8KIAkJCSh2b2lkKSBwcV9wdXRtZXNzYWdlKCdkJywgZmVfbXNnYnVmLT5kYXRhLCBm ZV9tc2didWYtPmxlbik7CiAJCQlicmVhazsKKwkJY2FzZSBDT1BZX0NBTExCQUNLOgorCQkJQXNz ZXJ0KCFjc3RhdGUtPm9wdHMuYmluYXJ5KTsKKyNpZm5kZWYgV0lOMzIKKwkJCUNvcHlTZW5kQ2hh cihjc3RhdGUsICdcbicpOworI2Vsc2UKKwkJCUNvcHlTZW5kU3RyaW5nKGNzdGF0ZSwgIlxyXG4i KTsKKyNlbmRpZgorCQkJY3N0YXRlLT5kYXRhX2Rlc3RfY2IoZmVfbXNnYnVmLT5kYXRhLCBmZV9t c2didWYtPmxlbik7CisJCQlicmVhazsKIAl9CiAKIAkvKiBVcGRhdGUgdGhlIHByb2dyZXNzICov CkBAIC0zNDUsMTEgKzM1NSwxMiBAQCBCZWdpbkNvcHlUbyhQYXJzZVN0YXRlICpwc3RhdGUsCiAJ CQlPaWQgcXVlcnlSZWxJZCwKIAkJCWNvbnN0IGNoYXIgKmZpbGVuYW1lLAogCQkJYm9vbCBpc19w cm9ncmFtLAorCQkJY29weV9kYXRhX2Rlc3RfY2IgZGF0YV9kZXN0X2NiLAogCQkJTGlzdCAqYXR0 bmFtZWxpc3QsCiAJCQlMaXN0ICpvcHRpb25zKQogewogCUNvcHlUb1N0YXRlCWNzdGF0ZTsKLQli b29sCQlwaXBlID0gKGZpbGVuYW1lID09IE5VTEwpOworCWJvb2wJCXBpcGUgPSAoZmlsZW5hbWUg PT0gTlVMTCkgJiYgKGRhdGFfZGVzdF9jYiA9PSBOVUxMKTsKIAlUdXBsZURlc2MJdHVwRGVzYzsK IAlpbnQJCQludW1fcGh5c19hdHRyczsKIAlNZW1vcnlDb250ZXh0IG9sZGNvbnRleHQ7CkBAIC0z NjIsNyArMzczLDEzIEBAIEJlZ2luQ29weVRvKFBhcnNlU3RhdGUgKnBzdGF0ZSwKIAkJMAogCX07 CiAKLQlpZiAocmVsICE9IE5VTEwgJiYgcmVsLT5yZF9yZWwtPnJlbGtpbmQgIT0gUkVMS0lORF9S RUxBVElPTikKKwkvKgorCSAqIENoZWNrIHdoZXRoZXIgd2Ugc3VwcG9ydCBjb3B5aW5nIGRhdGEg b3V0IG9mIHRoZSBzcGVjaWZpZWQgcmVsYXRpb24sCisJICogdW5sZXNzIHRoZSBjYWxsZXIgYWxz byBwYXNzZWQgYSBub24tTlVMTCBkYXRhX2Rlc3RfY2IsIGluIHdoaWNoIGNhc2UsCisJICogdGhl IGNhbGxiYWNrIHdpbGwgdGFrZSBjYXJlIG9mIGl0CisJICovCisJaWYgKHJlbCAhPSBOVUxMICYm IHJlbC0+cmRfcmVsLT5yZWxraW5kICE9IFJFTEtJTkRfUkVMQVRJT04gJiYKKwkJZGF0YV9kZXN0 X2NiID09IE5VTEwpCiAJewogCQlpZiAocmVsLT5yZF9yZWwtPnJlbGtpbmQgPT0gUkVMS0lORF9W SUVXKQogCQkJZXJlcG9ydChFUlJPUiwKQEAgLTY3Myw2ICs2OTAsMTEgQEAgQmVnaW5Db3B5VG8o UGFyc2VTdGF0ZSAqcHN0YXRlLAogCQlpZiAod2hlcmVUb1NlbmRPdXRwdXQgIT0gRGVzdFJlbW90 ZSkKIAkJCWNzdGF0ZS0+Y29weV9maWxlID0gc3Rkb3V0OwogCX0KKwllbHNlIGlmIChkYXRhX2Rl c3RfY2IpCisJeworCQljc3RhdGUtPmNvcHlfZGVzdCA9IENPUFlfQ0FMTEJBQ0s7CisJCWNzdGF0 ZS0+ZGF0YV9kZXN0X2NiID0gZGF0YV9kZXN0X2NiOworCX0KIAllbHNlCiAJewogCQljc3RhdGUt PmZpbGVuYW1lID0gcHN0cmR1cChmaWxlbmFtZSk7CkBAIC03NzMsMjAgKzc5NSwxNyBAQCBFbmRD b3B5VG8oQ29weVRvU3RhdGUgY3N0YXRlKQogfQogCiAvKgotICogQ29weSBmcm9tIHJlbGF0aW9u IG9yIHF1ZXJ5IFRPIGZpbGUuCisgKiBTdGFydCBDT1BZIFRPIG9wZXJhdGlvbi4KKyAqIFNlcGFy YXRlIGZyb20gdGhlIG1haW4gcm91dGluZSB0byBwcmV2ZW50IGR1cGxpY2F0ZSBvcGVyYXRpb25z IGluCisgKiBtYW51YWwgbW9kZSwgd2hlcmUgdHVwbGVzIGFyZSBjb3BpZWQgdG8gdGhlIGRlc3Rp bmF0aW9uIG9uZSBieSBvbmUsIGJ5IGNhbGxpbmcKKyAqIHRoZSBDb3B5T25lUm93VG8oKSByb3V0 aW5lLgogICovCi11aW50NjQKLURvQ29weVRvKENvcHlUb1N0YXRlIGNzdGF0ZSkKK3ZvaWQKK0Nv cHlUb1N0YXJ0KENvcHlUb1N0YXRlIGNzdGF0ZSkKIHsKLQlib29sCQlwaXBlID0gKGNzdGF0ZS0+ ZmlsZW5hbWUgPT0gTlVMTCk7Ci0JYm9vbAkJZmVfY29weSA9IChwaXBlICYmIHdoZXJlVG9TZW5k T3V0cHV0ID09IERlc3RSZW1vdGUpOwogCVR1cGxlRGVzYwl0dXBEZXNjOwogCWludAkJCW51bV9w aHlzX2F0dHJzOwogCUxpc3RDZWxsICAgKmN1cjsKLQl1aW50NjQJCXByb2Nlc3NlZDsKLQotCWlm IChmZV9jb3B5KQotCQlTZW5kQ29weUJlZ2luKGNzdGF0ZSk7CiAKIAlpZiAoY3N0YXRlLT5yZWwp CiAJCXR1cERlc2MgPSBSZWxhdGlvbkdldERlc2NyKGNzdGF0ZS0+cmVsKTsKQEAgLTg3Niw2ICs4 OTUsMzkgQEAgRG9Db3B5VG8oQ29weVRvU3RhdGUgY3N0YXRlKQogCQkJQ29weVNlbmRFbmRPZlJv dyhjc3RhdGUpOwogCQl9CiAJfQorfQorCisvKgorICogRmluaXNoIENPUFkgVE8gb3BlcmF0aW9u LgorICovCit2b2lkCitDb3B5VG9GaW5pc2goQ29weVRvU3RhdGUgY3N0YXRlKQoreworCWlmIChj c3RhdGUtPm9wdHMuYmluYXJ5KQorCXsKKwkJLyogR2VuZXJhdGUgdHJhaWxlciBmb3IgYSBiaW5h cnkgY29weSAqLworCQlDb3B5U2VuZEludDE2KGNzdGF0ZSwgLTEpOworCQkvKiBOZWVkIHRvIGZs dXNoIG91dCB0aGUgdHJhaWxlciAqLworCQlDb3B5U2VuZEVuZE9mUm93KGNzdGF0ZSk7CisJfQor CisJTWVtb3J5Q29udGV4dERlbGV0ZShjc3RhdGUtPnJvd2NvbnRleHQpOworfQorCisvKgorICog Q29weSBmcm9tIHJlbGF0aW9uIG9yIHF1ZXJ5IFRPIGZpbGUuCisgKi8KK3VpbnQ2NAorRG9Db3B5 VG8oQ29weVRvU3RhdGUgY3N0YXRlKQoreworCWJvb2wJCXBpcGUgPSAoY3N0YXRlLT5maWxlbmFt ZSA9PSBOVUxMKSAmJiAoY3N0YXRlLT5kYXRhX2Rlc3RfY2IgPT0gTlVMTCk7CisJYm9vbAkJZmVf Y29weSA9IChwaXBlICYmIHdoZXJlVG9TZW5kT3V0cHV0ID09IERlc3RSZW1vdGUpOworCXVpbnQ2 NAkJcHJvY2Vzc2VkOworCisJaWYgKGZlX2NvcHkpCisJCVNlbmRDb3B5QmVnaW4oY3N0YXRlKTsK KworCUNvcHlUb1N0YXJ0KGNzdGF0ZSk7CiAKIAlpZiAoY3N0YXRlLT5yZWwpCiAJewpAQCAtOTE0 LDE1ICs5NjYsNyBAQCBEb0NvcHlUbyhDb3B5VG9TdGF0ZSBjc3RhdGUpCiAJCXByb2Nlc3NlZCA9 ICgoRFJfY29weSAqKSBjc3RhdGUtPnF1ZXJ5RGVzYy0+ZGVzdCktPnByb2Nlc3NlZDsKIAl9CiAK LQlpZiAoY3N0YXRlLT5vcHRzLmJpbmFyeSkKLQl7Ci0JCS8qIEdlbmVyYXRlIHRyYWlsZXIgZm9y IGEgYmluYXJ5IGNvcHkgKi8KLQkJQ29weVNlbmRJbnQxNihjc3RhdGUsIC0xKTsKLQkJLyogTmVl ZCB0byBmbHVzaCBvdXQgdGhlIHRyYWlsZXIgKi8KLQkJQ29weVNlbmRFbmRPZlJvdyhjc3RhdGUp OwotCX0KLQotCU1lbW9yeUNvbnRleHREZWxldGUoY3N0YXRlLT5yb3djb250ZXh0KTsKKwlDb3B5 VG9GaW5pc2goY3N0YXRlKTsKIAogCWlmIChmZV9jb3B5KQogCQlTZW5kQ29weUVuZChjc3RhdGUp OwpAQCAtOTMzLDcgKzk3Nyw3IEBAIERvQ29weVRvKENvcHlUb1N0YXRlIGNzdGF0ZSkKIC8qCiAg KiBFbWl0IG9uZSByb3cgZHVyaW5nIERvQ29weVRvKCkuCiAgKi8KLXN0YXRpYyB2b2lkCit2b2lk CiBDb3B5T25lUm93VG8oQ29weVRvU3RhdGUgY3N0YXRlLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCkK IHsKIAlib29sCQluZWVkX2RlbGltID0gZmFsc2U7CmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjTWFpbi5jIGIvc3JjL2JhY2tlbmQvZXhlY3V0b3IvZXhlY01haW4uYwppbmRl eCAwNjQ4ZGQ4Li5jNWVkNjdhIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9leGVjdXRvci9leGVj TWFpbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNNYWluLmMKQEAgLTEyMzMsMTAg KzEyMzMsNTQgQEAgSW5pdFJlc3VsdFJlbEluZm8oUmVzdWx0UmVsSW5mbyAqcmVzdWx0UmVsSW5m bywKIAkJCQkJCQkJCQkJCQkgKiBFeGVjSW5pdFJvdXRpbmdJbmZvICovCiAJcmVzdWx0UmVsSW5m by0+cmlfUGFydGl0aW9uVHVwbGVTbG90ID0gTlVMTDsJLyogZGl0dG8gKi8KIAlyZXN1bHRSZWxJ bmZvLT5yaV9DaGlsZFRvUm9vdE1hcCA9IE5VTEw7CisJcmVzdWx0UmVsSW5mby0+cmlfdXNlc011 bHRpSW5zZXJ0ID0gZmFsc2U7CiAJcmVzdWx0UmVsSW5mby0+cmlfQ29weU11bHRpSW5zZXJ0QnVm ZmVyID0gTlVMTDsKIH0KIAogLyoKKyAqIEV4ZWNNdWx0aUluc2VydEFsbG93ZWQKKyAqCQlEb2Vz IHRoaXMgcmVsYXRpb24gYWxsb3cgY2FsbGVyIHRvIHVzZSBtdWx0aS1pbnNlcnQgbW9kZSB3aGVu CisgKgkJaW5zZXJ0aW5nIHJvd3MgaW50byBpdD8KKyAqLworYm9vbAorRXhlY011bHRpSW5zZXJ0 QWxsb3dlZChjb25zdCBSZXN1bHRSZWxJbmZvICpycmkpCit7CisJLyoKKwkgKiBDYW4ndCBzdXBw b3J0IG11bHRpLWluc2VydHMgd2hlbiB0aGVyZSBhcmUgYW55IEJFRk9SRS9JTlNURUFEIE9GCisJ ICogdHJpZ2dlcnMgb24gdGhlIHRhYmxlLiBTdWNoIHRyaWdnZXJzIG1pZ2h0IHF1ZXJ5IHRoZSB0 YWJsZSB3ZSdyZQorCSAqIGluc2VydGluZyBpbnRvIGFuZCBhY3QgZGlmZmVyZW50bHkgaWYgdGhl IHR1cGxlcyB0aGF0IGhhdmUgYWxyZWFkeQorCSAqIGJlZW4gcHJvY2Vzc2VkIGFuZCBwcmVwYXJl ZCBmb3IgaW5zZXJ0aW9uIGFyZSBub3QgdGhlcmUuCisJICovCisJaWYgKHJyaS0+cmlfVHJpZ0Rl c2MgIT0gTlVMTCAmJgorCQkocnJpLT5yaV9UcmlnRGVzYy0+dHJpZ19pbnNlcnRfYmVmb3JlX3Jv dyB8fAorCQkgcnJpLT5yaV9UcmlnRGVzYy0+dHJpZ19pbnNlcnRfaW5zdGVhZF9yb3cpKQorCQly ZXR1cm4gZmFsc2U7CisKKwkvKgorCSAqIEZvciBwYXJ0aXRpb25lZCB0YWJsZXMgd2UgY2FuJ3Qg c3VwcG9ydCBtdWx0aS1pbnNlcnRzIHdoZW4gdGhlcmUgYXJlCisJICogYW55IHN0YXRlbWVudCBs ZXZlbCBpbnNlcnQgdHJpZ2dlcnMuIEl0IG1pZ2h0IGJlIHBvc3NpYmxlIHRvIGFsbG93CisJICog cGFydGl0aW9uZWQgdGFibGVzIHdpdGggc3VjaCB0cmlnZ2VycyBpbiB0aGUgZnV0dXJlLCBidXQg Zm9yIG5vdywKKwkgKiBDb3B5TXVsdGlJbnNlcnRJbmZvRmx1c2ggZXhwZWN0cyB0aGF0IGFueSBi ZWZvcmUgcm93IGluc2VydCBhbmQKKwkgKiBzdGF0ZW1lbnQgbGV2ZWwgaW5zZXJ0IHRyaWdnZXJz IGFyZSBvbiB0aGUgc2FtZSByZWxhdGlvbi4KKwkgKi8KKwlpZiAocnJpLT5yaV9SZWxhdGlvbkRl c2MtPnJkX3JlbC0+cmVsa2luZCA9PSBSRUxLSU5EX1BBUlRJVElPTkVEX1RBQkxFICYmCisJCXJy aS0+cmlfVHJpZ0Rlc2MgIT0gTlVMTCAmJgorCQlycmktPnJpX1RyaWdEZXNjLT50cmlnX2luc2Vy dF9uZXdfdGFibGUpCisJCXJldHVybiBmYWxzZTsKKworCWlmIChycmktPnJpX0Zkd1JvdXRpbmUg IT0gTlVMTCAmJgorCQlycmktPnJpX0Zkd1JvdXRpbmUtPkV4ZWNGb3JlaWduQ29weSA9PSBOVUxM KQorCQkvKgorCQkgKiBGb3JlaWduIHRhYmxlcyBkb24ndCBzdXBwb3J0IG11bHRpLWluc2VydHMs IHVubGVzcyB0aGVpciBGRFcKKwkJICogcHJvdmlkZXMgdGhlIG5lY2Vzc2FyeSBDT1BZIGludGVy ZmFjZS4KKwkJICovCisJCXJldHVybiBmYWxzZTsKKworCS8qIE9LLCBjYWxsZXIgY2FuIHVzZSBt dWx0aS1pbnNlcnQgb24gdGhpcyByZWxhdGlvbi4gKi8KKwlyZXR1cm4gdHJ1ZTsKK30KKworLyoK ICAqIEV4ZWNHZXRUcmlnZ2VyUmVzdWx0UmVsCiAgKgkJR2V0IGEgUmVzdWx0UmVsSW5mbyBmb3Ig YSB0cmlnZ2VyIHRhcmdldCByZWxhdGlvbi4KICAqCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9l eGVjdXRvci9leGVjUGFydGl0aW9uLmMgYi9zcmMvYmFja2VuZC9leGVjdXRvci9leGVjUGFydGl0 aW9uLmMKaW5kZXggYjhkYTRjNS4uMTNhZWY0MSAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhl Y3V0b3IvZXhlY1BhcnRpdGlvbi5jCisrKyBiL3NyYy9iYWNrZW5kL2V4ZWN1dG9yL2V4ZWNQYXJ0 aXRpb24uYwpAQCAtNTg5LDYgKzU4OSwxNCBAQCBFeGVjSW5pdFBhcnRpdGlvbkluZm8oTW9kaWZ5 VGFibGVTdGF0ZSAqbXRzdGF0ZSwgRVN0YXRlICplc3RhdGUsCiAJCQkJCSAgZXN0YXRlLT5lc19p bnN0cnVtZW50KTsKIAogCS8qCisJICogSWYgYSBwYXJ0aXRpb24ncyByb290IHBhcmVudCBpc24n dCBhbGxvd2VkIHRvIHVzZSBpdCwgbmVpdGhlciBpcyB0aGUKKwkgKiBwYXJ0aXRpb24uCisJICov CisJaWYgKHJvb3RSZXN1bHRSZWxJbmZvLT5yaV91c2VzTXVsdGlJbnNlcnQpCisJCWxlYWZfcGFy dF9ycmktPnJpX3VzZXNNdWx0aUluc2VydCA9CisJCQlFeGVjTXVsdGlJbnNlcnRBbGxvd2VkKGxl YWZfcGFydF9ycmkpOworCisJLyoKIAkgKiBWZXJpZnkgcmVzdWx0IHJlbGF0aW9uIGlzIGEgdmFs aWQgdGFyZ2V0IGZvciBhbiBJTlNFUlQuICBBbiBVUERBVEUgb2YgYQogCSAqIHBhcnRpdGlvbi1r ZXkgYmVjb21lcyBhIERFTEVURStJTlNFUlQgb3BlcmF0aW9uLCBzbyB0aGlzIGNoZWNrIGlzIHN0 aWxsCiAJICogcmVxdWlyZWQgd2hlbiB0aGUgb3BlcmF0aW9uIGlzIENNRF9VUERBVEUuCkBAIC05 ODksOSArOTk3LDE2IEBAIEV4ZWNJbml0Um91dGluZ0luZm8oTW9kaWZ5VGFibGVTdGF0ZSAqbXRz dGF0ZSwKIAkgKiBJZiB0aGUgcGFydGl0aW9uIGlzIGEgZm9yZWlnbiB0YWJsZSwgbGV0IHRoZSBG RFcgaW5pdCBpdHNlbGYgZm9yCiAJICogcm91dGluZyB0dXBsZXMgdG8gdGhlIHBhcnRpdGlvbi4K IAkgKi8KLQlpZiAocGFydFJlbEluZm8tPnJpX0Zkd1JvdXRpbmUgIT0gTlVMTCAmJgotCQlwYXJ0 UmVsSW5mby0+cmlfRmR3Um91dGluZS0+QmVnaW5Gb3JlaWduSW5zZXJ0ICE9IE5VTEwpCi0JCXBh cnRSZWxJbmZvLT5yaV9GZHdSb3V0aW5lLT5CZWdpbkZvcmVpZ25JbnNlcnQobXRzdGF0ZSwgcGFy dFJlbEluZm8pOworCWlmIChwYXJ0UmVsSW5mby0+cmlfRmR3Um91dGluZSAhPSBOVUxMKQorCXsK KwkJaWYgKHBhcnRSZWxJbmZvLT5yaV91c2VzTXVsdGlJbnNlcnQpCisJCXsKKwkJCWlmIChwYXJ0 UmVsSW5mby0+cmlfRmR3Um91dGluZS0+QmVnaW5Gb3JlaWduQ29weSAhPSBOVUxMKQorCQkJCXBh cnRSZWxJbmZvLT5yaV9GZHdSb3V0aW5lLT5CZWdpbkZvcmVpZ25Db3B5KGVzdGF0ZSwgcGFydFJl bEluZm8pOworCQl9CisJCWVsc2UgaWYgKHBhcnRSZWxJbmZvLT5yaV9GZHdSb3V0aW5lLT5CZWdp bkZvcmVpZ25JbnNlcnQgIT0gTlVMTCkKKwkJCXBhcnRSZWxJbmZvLT5yaV9GZHdSb3V0aW5lLT5C ZWdpbkZvcmVpZ25JbnNlcnQobXRzdGF0ZSwgcGFydFJlbEluZm8pOworCX0KIAogCS8qCiAJICog RGV0ZXJtaW5lIGlmIHRoZSBGRFcgc3VwcG9ydHMgYmF0Y2ggaW5zZXJ0IGFuZCBkZXRlcm1pbmUg dGhlIGJhdGNoCkBAIC0xMjExLDEwICsxMjI2LDE4IEBAIEV4ZWNDbGVhbnVwVHVwbGVSb3V0aW5n KE1vZGlmeVRhYmxlU3RhdGUgKm10c3RhdGUsCiAJCVJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbElu Zm8gPSBwcm91dGUtPnBhcnRpdGlvbnNbaV07CiAKIAkJLyogQWxsb3cgYW55IEZEV3MgdG8gc2h1 dCBkb3duICovCi0JCWlmIChyZXN1bHRSZWxJbmZvLT5yaV9GZHdSb3V0aW5lICE9IE5VTEwgJiYK LQkJCXJlc3VsdFJlbEluZm8tPnJpX0Zkd1JvdXRpbmUtPkVuZEZvcmVpZ25JbnNlcnQgIT0gTlVM TCkKLQkJCXJlc3VsdFJlbEluZm8tPnJpX0Zkd1JvdXRpbmUtPkVuZEZvcmVpZ25JbnNlcnQobXRz dGF0ZS0+cHMuc3RhdGUsCi0JCQkJCQkJCQkJCQkJCSAgIHJlc3VsdFJlbEluZm8pOworCQlpZiAo cmVzdWx0UmVsSW5mby0+cmlfRmR3Um91dGluZSAhPSBOVUxMKQorCQl7CisJCQlpZiAocmVzdWx0 UmVsSW5mby0+cmlfdXNlc011bHRpSW5zZXJ0KQorCQkJeworCQkJCWlmIChyZXN1bHRSZWxJbmZv LT5yaV9GZHdSb3V0aW5lLT5FbmRGb3JlaWduQ29weSAhPSBOVUxMKQorCQkJCQlyZXN1bHRSZWxJ bmZvLT5yaV9GZHdSb3V0aW5lLT5FbmRGb3JlaWduQ29weShtdHN0YXRlLT5wcy5zdGF0ZSwKKwkJ CQkJCQkJCQkJCQkJCQkgcmVzdWx0UmVsSW5mbyk7CisJCQl9CisJCQllbHNlIGlmIChyZXN1bHRS ZWxJbmZvLT5yaV9GZHdSb3V0aW5lLT5FbmRGb3JlaWduSW5zZXJ0ICE9IE5VTEwpCisJCQkJcmVz dWx0UmVsSW5mby0+cmlfRmR3Um91dGluZS0+RW5kRm9yZWlnbkluc2VydChtdHN0YXRlLT5wcy5z dGF0ZSwKKwkJCQkJCQkJCQkJCQkJCSAgIHJlc3VsdFJlbEluZm8pOworCQl9CiAKIAkJLyoKIAkJ ICogQ2hlY2sgaWYgdGhpcyByZXN1bHQgcmVsIGlzIG9uZSBiZWxvbmdpbmcgdG8gdGhlIG5vZGUn cyBzdWJwbGFucywKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRzL2NvcHkuaCBiL3Ny Yy9pbmNsdWRlL2NvbW1hbmRzL2NvcHkuaAppbmRleCA4YzQ3NDhlLi4zZDlkMTg3IDEwMDY0NAot LS0gYS9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5LmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFu ZHMvY29weS5oCkBAIC01NSw2ICs1NSw3IEBAIHR5cGVkZWYgc3RydWN0IENvcHlGcm9tU3RhdGVE YXRhICpDb3B5RnJvbVN0YXRlOwogdHlwZWRlZiBzdHJ1Y3QgQ29weVRvU3RhdGVEYXRhICpDb3B5 VG9TdGF0ZTsKIAogdHlwZWRlZiBpbnQgKCpjb3B5X2RhdGFfc291cmNlX2NiKSAodm9pZCAqb3V0 YnVmLCBpbnQgbWlucmVhZCwgaW50IG1heHJlYWQpOwordHlwZWRlZiB2b2lkICgqY29weV9kYXRh X2Rlc3RfY2IpICh2b2lkICpvdXRidWYsIGludCBsZW4pOwogCiBleHRlcm4gdm9pZCBEb0NvcHko UGFyc2VTdGF0ZSAqc3RhdGUsIGNvbnN0IENvcHlTdG10ICpzdG10LAogCQkJCSAgIGludCBzdG10 X2xvY2F0aW9uLCBpbnQgc3RtdF9sZW4sCkBAIC04MCwxMCArODEsMTQgQEAgZXh0ZXJuIERlc3RS ZWNlaXZlciAqQ3JlYXRlQ29weURlc3RSZWNlaXZlcih2b2lkKTsKICAqLwogZXh0ZXJuIENvcHlU b1N0YXRlIEJlZ2luQ29weVRvKFBhcnNlU3RhdGUgKnBzdGF0ZSwgUmVsYXRpb24gcmVsLCBSYXdT dG10ICpxdWVyeSwKIAkJCQkJCQkgICBPaWQgcXVlcnlSZWxJZCwgY29uc3QgY2hhciAqZmlsZW5h bWUsIGJvb2wgaXNfcHJvZ3JhbSwKKwkJCQkJCQkgICBjb3B5X2RhdGFfZGVzdF9jYiBkYXRhX2Rl c3RfY2IsCiAJCQkJCQkJICAgTGlzdCAqYXR0bmFtZWxpc3QsIExpc3QgKm9wdGlvbnMpOwogZXh0 ZXJuIHZvaWQgRW5kQ29weVRvKENvcHlUb1N0YXRlIGNzdGF0ZSk7CiBleHRlcm4gdWludDY0IERv Q29weVRvKENvcHlUb1N0YXRlIGNzdGF0ZSk7CiBleHRlcm4gTGlzdCAqQ29weUdldEF0dG51bXMo VHVwbGVEZXNjIHR1cERlc2MsIFJlbGF0aW9uIHJlbCwKIAkJCQkJCQlMaXN0ICphdHRuYW1lbGlz dCk7CitleHRlcm4gdm9pZCBDb3B5VG9TdGFydChDb3B5VG9TdGF0ZSBjc3RhdGUpOworZXh0ZXJu IHZvaWQgQ29weVRvRmluaXNoKENvcHlUb1N0YXRlIGNzdGF0ZSk7CitleHRlcm4gdm9pZCBDb3B5 T25lUm93VG8oQ29weVRvU3RhdGUgY3N0YXRlLCBUdXBsZVRhYmxlU2xvdCAqc2xvdCk7CiAKICNl bmRpZgkJCQkJCQkvKiBDT1BZX0ggKi8KZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2NvbW1hbmRz L2NvcHlmcm9tX2ludGVybmFsLmggYi9zcmMvaW5jbHVkZS9jb21tYW5kcy9jb3B5ZnJvbV9pbnRl cm5hbC5oCmluZGV4IDcwNWY1YjYuLmMyM2Y2MzEgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2Nv bW1hbmRzL2NvcHlmcm9tX2ludGVybmFsLmgKKysrIGIvc3JjL2luY2x1ZGUvY29tbWFuZHMvY29w eWZyb21faW50ZXJuYWwuaApAQCAtNDAsMTYgKzQwLDYgQEAgdHlwZWRlZiBlbnVtIEVvbFR5cGUK IH0gRW9sVHlwZTsKIAogLyoKLSAqIFJlcHJlc2VudHMgdGhlIGhlYXAgaW5zZXJ0IG1ldGhvZCB0 byBiZSB1c2VkIGR1cmluZyBDT1BZIEZST00uCi0gKi8KLXR5cGVkZWYgZW51bSBDb3B5SW5zZXJ0 TWV0aG9kCi17Ci0JQ0lNX1NJTkdMRSwJCQkJCS8qIHVzZSB0YWJsZV90dXBsZV9pbnNlcnQgb3Ig ZmR3IHJvdXRpbmUgKi8KLQlDSU1fTVVMVEksCQkJCQkvKiBhbHdheXMgdXNlIHRhYmxlX211bHRp X2luc2VydCAqLwotCUNJTV9NVUxUSV9DT05ESVRJT05BTAkJLyogdXNlIHRhYmxlX211bHRpX2lu c2VydCBvbmx5IGlmIHZhbGlkICovCi19IENvcHlJbnNlcnRNZXRob2Q7Ci0KLS8qCiAgKiBUaGlz IHN0cnVjdCBjb250YWlucyBhbGwgdGhlIHN0YXRlIHZhcmlhYmxlcyB1c2VkIHRocm91Z2hvdXQg YSBDT1BZIEZST00KICAqIG9wZXJhdGlvbi4KICAqCmRpZmYgLS1naXQgYS9zcmMvaW5jbHVkZS9l eGVjdXRvci9leGVjdXRvci5oIGIvc3JjL2luY2x1ZGUvZXhlY3V0b3IvZXhlY3V0b3IuaAppbmRl eCAwNzFlMzYzLi43NTRhOWY1IDEwMDY0NAotLS0gYS9zcmMvaW5jbHVkZS9leGVjdXRvci9leGVj dXRvci5oCisrKyBiL3NyYy9pbmNsdWRlL2V4ZWN1dG9yL2V4ZWN1dG9yLmgKQEAgLTE5Myw2ICsx OTMsNyBAQCBleHRlcm4gdm9pZCBJbml0UmVzdWx0UmVsSW5mbyhSZXN1bHRSZWxJbmZvICpyZXN1 bHRSZWxJbmZvLAogCQkJCQkJCSAgSW5kZXggcmVzdWx0UmVsYXRpb25JbmRleCwKIAkJCQkJCQkg IFJlc3VsdFJlbEluZm8gKnBhcnRpdGlvbl9yb290X3JyaSwKIAkJCQkJCQkgIGludCBpbnN0cnVt ZW50X29wdGlvbnMpOworZXh0ZXJuIGJvb2wgRXhlY011bHRpSW5zZXJ0QWxsb3dlZChjb25zdCBS ZXN1bHRSZWxJbmZvICpycmkpOwogZXh0ZXJuIFJlc3VsdFJlbEluZm8gKkV4ZWNHZXRUcmlnZ2Vy UmVzdWx0UmVsKEVTdGF0ZSAqZXN0YXRlLCBPaWQgcmVsaWQpOwogZXh0ZXJuIHZvaWQgRXhlY0Nv bnN0cmFpbnRzKFJlc3VsdFJlbEluZm8gKnJlc3VsdFJlbEluZm8sCiAJCQkJCQkJVHVwbGVUYWJs ZVNsb3QgKnNsb3QsIEVTdGF0ZSAqZXN0YXRlKTsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL2Zv cmVpZ24vZmR3YXBpLmggYi9zcmMvaW5jbHVkZS9mb3JlaWduL2Zkd2FwaS5oCmluZGV4IDI0OGY3 OGQuLmFlYjg0ODQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL2ZvcmVpZ24vZmR3YXBpLmgKKysr IGIvc3JjL2luY2x1ZGUvZm9yZWlnbi9mZHdhcGkuaApAQCAtMTI2LDYgKzEyNiwxNiBAQCB0eXBl ZGVmIFR1cGxlVGFibGVTbG90ICooKkl0ZXJhdGVEaXJlY3RNb2RpZnlfZnVuY3Rpb24pIChGb3Jl aWduU2NhblN0YXRlICpub2RlKQogCiB0eXBlZGVmIHZvaWQgKCpFbmREaXJlY3RNb2RpZnlfZnVu Y3Rpb24pIChGb3JlaWduU2NhblN0YXRlICpub2RlKTsKIAordHlwZWRlZiB2b2lkICgqQmVnaW5G b3JlaWduQ29weV9mdW5jdGlvbikgKEVTdGF0ZSAqZXN0YXRlLAorCQkJCQkJCQkJCSAgIFJlc3Vs dFJlbEluZm8gKnJpbmZvKTsKKwordHlwZWRlZiB2b2lkICgqRXhlY0ZvcmVpZ25Db3B5X2Z1bmN0 aW9uKSAoUmVzdWx0UmVsSW5mbyAqcmluZm8sCisJCQkJCQkJCQkJICBUdXBsZVRhYmxlU2xvdCAq KnNsb3RzLAorCQkJCQkJCQkJCSAgaW50IG5zbG90cyk7CisKK3R5cGVkZWYgdm9pZCAoKkVuZEZv cmVpZ25Db3B5X2Z1bmN0aW9uKSAoRVN0YXRlICplc3RhdGUsCisJCQkJCQkJCQkJIFJlc3VsdFJl bEluZm8gKnJpbmZvKTsKKwogdHlwZWRlZiBSb3dNYXJrVHlwZSAoKkdldEZvcmVpZ25Sb3dNYXJr VHlwZV9mdW5jdGlvbikgKFJhbmdlVGJsRW50cnkgKnJ0ZSwKIAkJCQkJCQkJCQkJCQkgICBMb2Nr Q2xhdXNlU3RyZW5ndGggc3RyZW5ndGgpOwogCkBAIC0yMzAsNiArMjQwLDExIEBAIHR5cGVkZWYg c3RydWN0IEZkd1JvdXRpbmUKIAlJdGVyYXRlRGlyZWN0TW9kaWZ5X2Z1bmN0aW9uIEl0ZXJhdGVE aXJlY3RNb2RpZnk7CiAJRW5kRGlyZWN0TW9kaWZ5X2Z1bmN0aW9uIEVuZERpcmVjdE1vZGlmeTsK IAorCS8qIFN1cHBvcnQgZnVuY3Rpb25zIGZvciBDT1BZIGludG8gZm9yZWlnbiB0YWJsZXMgKi8K KwlCZWdpbkZvcmVpZ25Db3B5X2Z1bmN0aW9uIEJlZ2luRm9yZWlnbkNvcHk7CisJRXhlY0ZvcmVp Z25Db3B5X2Z1bmN0aW9uIEV4ZWNGb3JlaWduQ29weTsKKwlFbmRGb3JlaWduQ29weV9mdW5jdGlv biBFbmRGb3JlaWduQ29weTsKKwogCS8qIEZ1bmN0aW9ucyBmb3IgU0VMRUNUIEZPUiBVUERBVEUv U0hBUkUgcm93IGxvY2tpbmcgKi8KIAlHZXRGb3JlaWduUm93TWFya1R5cGVfZnVuY3Rpb24gR2V0 Rm9yZWlnblJvd01hcmtUeXBlOwogCVJlZmV0Y2hGb3JlaWduUm93X2Z1bmN0aW9uIFJlZmV0Y2hG b3JlaWduUm93OwpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvZXhlY25vZGVzLmggYi9z cmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAppbmRleCBlMzFhZDYyLi5mMzJkY2Y2IDEwMDY0 NAotLS0gYS9zcmMvaW5jbHVkZS9ub2Rlcy9leGVjbm9kZXMuaAorKysgYi9zcmMvaW5jbHVkZS9u b2Rlcy9leGVjbm9kZXMuaApAQCAtNTExLDcgKzUxMSwxMyBAQCB0eXBlZGVmIHN0cnVjdCBSZXN1 bHRSZWxJbmZvCiAJICovCiAJVHVwbGVDb252ZXJzaW9uTWFwICpyaV9DaGlsZFRvUm9vdE1hcDsK IAotCS8qIGZvciB1c2UgYnkgY29weWZyb20uYyB3aGVuIHBlcmZvcm1pbmcgbXVsdGktaW5zZXJ0 cyAqLworCS8qCisJICogVGhlIGZvbGxvd2luZyBmaWVsZHMgYXJlIGN1cnJlbnRseSBvbmx5IHJl bGV2YW50IHRvIGNvcHlmcm9tLmMuCisJICogVHJ1ZSBpZiBva2F5IHRvIHVzZSBtdWx0aS1pbnNl cnQgb24gdGhpcyByZWxhdGlvbgorCSAqLworCWJvb2wgcmlfdXNlc011bHRpSW5zZXJ0OworCisJ LyogQnVmZmVyIGFsbG9jYXRlZCB0byB0aGlzIHJlbGF0aW9uIHdoZW4gdXNpbmcgbXVsdGktaW5z ZXJ0IG1vZGUgKi8KIAlzdHJ1Y3QgQ29weU11bHRpSW5zZXJ0QnVmZmVyICpyaV9Db3B5TXVsdGlJ bnNlcnRCdWZmZXI7CiB9IFJlc3VsdFJlbEluZm87CiAKLS0gCjIuMTAuMQoK --_002_TYAPR01MB29909FDCD92F5EEE68E37767FE649TYAPR01MB2990jpnp_--