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.94.2) (envelope-from ) id 1txz1k-000ize-TR for pgsql-hackers@arkaria.postgresql.org; Fri, 28 Mar 2025 02:00:57 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1txz1j-000OUU-J6 for pgsql-hackers@arkaria.postgresql.org; Fri, 28 Mar 2025 02:00:55 +0000 Received: from magus.postgresql.org ([2a02:c0:301:0:ffff::29]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1txz1i-000OQl-UV for pgsql-hackers@lists.postgresql.org; Fri, 28 Mar 2025 02:00:55 +0000 Received: from mx04.melco.co.jp ([192.218.140.144]) by magus.postgresql.org with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1txz1e-001cOT-2D for pgsql-hackers@postgresql.org; Fri, 28 Mar 2025 02:00:54 +0000 Received: from mr06.melco.co.jp (mr06 [133.141.98.164]) by mx04.melco.co.jp (Postfix) with ESMTP id 4ZP3dp73gSzMt46G; Fri, 28 Mar 2025 11:00:46 +0900 (JST) Received: from mf04.melco.co.jp (unknown [192.168.20.184]) by mr06.melco.co.jp (Postfix) with ESMTP id 4ZP3dp6zdvzMt5kQ; Fri, 28 Mar 2025 11:00:46 +0900 (JST) Received: from OS0P286CU011.outbound.protection.outlook.com (unknown [40.93.130.7]) by mf04.melco.co.jp (Postfix) with ESMTP id 4ZP3dp6PPjzMqkG0; Fri, 28 Mar 2025 11:00:46 +0900 (JST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=yWuG5ll7YJwtqGTJNJUEAZkxNmscNFFQZFBegQMVwOSXRG6Ux4AYhp0H06whx5IC6+m1XVfB340y5S830JQfNAONRjkHUfVydEvIcmQjWMqrltlI6Uxkpy95GXwFmflK+h+0j3bo0dhSn0aZssBKhv3Iht4xjHPa4fkYYBmpZrYFLol8s0hRn7jK/kxNftdfYxP0VBKM6MU4j9gpg5Sa0A2U/D6Nsl2bjiqFlow1ObzKt+CT5NJI3M/AVeMywx4ySnwoKEovyk1xGz6DrdDmdC4cIRSVpoH5z5mzsoAWvWI2lglH+x2xO2CntQ8chQfJqTn77ozJh3iJJby44eU0lw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=kJTLPW49K+KsyhzcK9bJl32R7FeN1Vod+/gZqfqM0gw=; b=NB23CRYO1e5Lc+YlawWBxiVeZY8PY2zbmNVAk2RQI3D22+eLBCGK1hgox7+cI7bIw9i01PmVIu59vIqyKYcd27zcx6UfUUlKxp8fvXogiXWuq2JKgALkfkY1PB/rePvQeVJlYNxMeUkZXL6K7sPBqhv8OTMxSejqS0lGX8kpiOq3GF9KemOEhICIgjcHUfiaFXpdf32ZVBqSAkuqmxjNQG/RxLJDryau4geDbXJ0fYeGYGvEFARRxoYMY1LwzITwSjxURbXcFHW6AXR5mjJ/vCMUraKA2plDFJHUDh6a6nfhuUi//tc2DgqK2ajd6vp7H1OJisfWbW6LgX9o1wD9JQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=df.mitsubishielectric.co.jp; dmarc=pass action=none header.from=df.mitsubishielectric.co.jp; dkim=pass header.d=df.mitsubishielectric.co.jp; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mitsubishielectricgroup.onmicrosoft.com; s=selector2-mitsubishielectricgroup-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=kJTLPW49K+KsyhzcK9bJl32R7FeN1Vod+/gZqfqM0gw=; b=oXO8QYodnHaztKiOMfBABfCedMBAFCIP/VImVq1AoU1ib5fH7h4kSwX0b9KPtZ0My/fFnP6GY4wX6srfng3hBKO+UuGHXAgAFqfSQ+CjteMZXfTPlHb95B1B1xp9SruFNVGNeaz4Hlp57Ry/Tv78lO/Y9bJ3fkJHH3Qoosd+q70= Received: from TYRPR01MB13941.jpnprd01.prod.outlook.com (2603:1096:405:21c::10) by TY4PR01MB14417.jpnprd01.prod.outlook.com (2603:1096:405:23d::9) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8511.27; Fri, 28 Mar 2025 02:00:45 +0000 Received: from TYRPR01MB13941.jpnprd01.prod.outlook.com ([fe80::1512:cd0c:8675:4688]) by TYRPR01MB13941.jpnprd01.prod.outlook.com ([fe80::1512:cd0c:8675:4688%4]) with mapi id 15.20.8534.045; Fri, 28 Mar 2025 02:00:45 +0000 From: "Fujii.Yuki@df.MitsubishiElectric.co.jp" To: Bruce Momjian , Tomas Vondra CC: Jelte Fennema-Nio , PostgreSQL-development , Robert Haas , Tom Lane , Stephen Frost , Andres Freund , Tomas Vondra , Julien Rouhaud , Daniel Gustafsson , vignesh C , Alexander Pyhalov Subject: RE: Partial aggregates pushdown Thread-Topic: Partial aggregates pushdown Thread-Index: AQHaZV+FhOOC+4jqD0O6QaSNENpP/LEfzV+AgBnxJJCADnsVgIAB3niAgATs94CAXSjd0IAMTAEAgADLHwCAAJLNgIAJQrjwgAAp5wCAAQFMEIAALTSAgBFC0CCAAavCAIAAGn1QgACpMoCAAEuzIIAAiFGAgAh0U0CAB8s+gIAC0Z0wgAFVKICAACwCgIAADtsAgDCstoCAC53nAIAHAD8AgACSJoCAAAO5AIAAGzQAgAFURwCAAbo/AIAAE1CAgAAQroCBVWL1cA== Date: Fri, 28 Mar 2025 02:00:44 +0000 Deferred-Delivery: Fri, 28 Mar 2025 02:00:00 +0000 Message-ID: References: <91f71f11-3431-49ab-95d0-1c5c90be9fb0@vondra.me> In-Reply-To: Accept-Language: ja-JP, en-US Content-Language: ja-JP X-MS-Has-Attach: yes X-MS-TNEF-Correlator: x-melpop: 1 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=df.MitsubishiElectric.co.jp; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: TYRPR01MB13941:EE_|TY4PR01MB14417:EE_ x-ms-office365-filtering-correlation-id: 59779c55-76c9-4b4f-6745-08dd6d9c5a2c x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0;ARA:13230040|1800799024|376014|366016|7416014|4053099003|38070700018|95630200002; x-microsoft-antispam-message-info: =?iso-2022-jp?B?VEJCRUgwQlBqb1YyaEh5Z282ZzlBR3FVQjRMZm5ab2RieHRrL2dwSktq?= =?iso-2022-jp?B?ekZtMkpNTjd6YS85Vk94L2lScTBZR0hNRTNwZ1pSNUJsYk1zUlAySjQ1?= =?iso-2022-jp?B?MnhNMTRTdmZHS1pjeWpnY2N2eU1Ga3pPVSt6ZTdFMlN2VDJTTUY1OE13?= =?iso-2022-jp?B?a1lVYVdoZGVyVXNBUzJXRURaVW1hVmNuNXVOOHhiL0wwdFk5ZTBlRStU?= =?iso-2022-jp?B?RVV1WGoxdTZvaFV1Nzl6dFV3RC9LOHlJT0RsUU4zY3B6RjhoZm5nVE9x?= =?iso-2022-jp?B?ODFtdGFiTWRYYVc5ZVBMaGVjVnlJSnFBYTc0MEx2YmdCVGxLYWxzbkVn?= =?iso-2022-jp?B?ZzlxbWFwUlA5cGxrVjVMWWtJUXdPWlQ2MjY3T01RZ3NZT0hQSGxSb3Vk?= =?iso-2022-jp?B?THI0ZVRkWFludmFwZUNpNUxxRmwvcVc1TzZDSWFpR2h1eHhqOGlaOUp0?= =?iso-2022-jp?B?MGhmOXBRMkNIUEdCa2s3Y0RoUlUvU2hLUnFvaHRpS1BVWVJqc3NiYWpK?= =?iso-2022-jp?B?dzZNVFF3NDhiT3JjZnNLSEE5cVU3L1BkbWlTNkhpamVhUzZSUGVDVkpq?= =?iso-2022-jp?B?dmxpcldrL1BXZlRubWdjcVFUREFsRkswZ3o0emltQnhLaWNHUHhaa2Na?= =?iso-2022-jp?B?QUx3Y3E0RXp0TWxPZG5IWmtVOURqTHRmVWViZng3ZUJpU1poYnNLcjR5?= =?iso-2022-jp?B?RkIvcjBaSmtDNWk0dUxHa2Y0Z0Q1M1VQbitDbXdlVEh0WWRQQ2RXWW05?= =?iso-2022-jp?B?UHFjOTQ1bTUwdXFLNW9CYUJFazNHcjRZVGtHcnVZcE5iSFhvNlZEaTQz?= =?iso-2022-jp?B?OVFleUYrUmY0WUdHUTBzMDdsWFZ3cUx3SHUwSWQwRDdTT3RudWtTejVE?= =?iso-2022-jp?B?Zlk3elJUVGg5Mkw3N1E1VVRPcVhMN1ppWkt6di9UMlAxNGNVWEprRk5V?= =?iso-2022-jp?B?OEJYV1hGaVNMVGE0SldoT04xS1VUVDk3QmloUTJJUEZ3dGJNR2F1MFhM?= =?iso-2022-jp?B?ZkxoZE9nd0xiOEE4Sm9MaGRwemd0cXA1OG9WbXFES0lSSXJKQmM5QXZq?= =?iso-2022-jp?B?aloxRzMzNHgwamZGUzlsZ3dxdjR0Z0VrMjROS3Y3NTJBNEdxejhNSUZW?= =?iso-2022-jp?B?bjFuOTNBaHNwOVpNbEVtZzVYQ2ExTjBmZE1BWUt0U0FzbHhkeFBxZnRK?= =?iso-2022-jp?B?MzNjUml4N1RIdHo3M3FEQTdtYmNMem01VkJvWmhmaTNHNjUybG5haElG?= =?iso-2022-jp?B?YVh1UjdVUUZjazg1aEMrWWRVUklSVjdCc2YzNHY2bVhRMzZHMDFNZjRr?= =?iso-2022-jp?B?RDBtdHJ1Yk1mVXFSbVBMalJ0RVd1UmIveEtjTm9nNmZ3WHFHUE4rYlI4?= =?iso-2022-jp?B?a0w1SVZkTkY2eXVDVGh2K2czczhBUG9tU0RidmZlOEtlTDcrUXIrZ1ls?= =?iso-2022-jp?B?UytIdlRJcEZZMy82bW1qeFdBVmlRdWRwQ00vRFdBRDZ1ajdqU3IwYUNs?= =?iso-2022-jp?B?d0h3RzNKQmZnYjdoWHB1V0wvZ3NmelVlbUphYjRqbXFKYW1rRU5OaWI5?= =?iso-2022-jp?B?NkRvK0ZCL0RRRi9sWHRlZkhhTW9lU1FmQXJ3MzBvSDMwMmE1UjgwNGoy?= =?iso-2022-jp?B?K1UyM2lQMFBzd1d2RkFOUWtOZjJvRGYzOWFEeHFZZ2xTQTVUNkJmaFZG?= =?iso-2022-jp?B?WHRJY2VoSm0rb3BoOFdZVmg3S0Z6bXZ2N0dpTm93WEtvRU8vY3pUSUxL?= =?iso-2022-jp?B?bEwvQld4MllMSHl1b3FZdmZSVFc5NWVwemR1VXRRa2NSbDJET3k1U1lZ?= =?iso-2022-jp?B?VndYRnpHalRxNWo4TWlXbHlJekpseS8vM2dneThLaUZBWlI5YU96M3Vk?= =?iso-2022-jp?B?MFhDaDVFRFJFeTN3Y29oMXRmT2JGVEJuTUZFOHE2Vkt2RHcvV2lWNkZz?= =?iso-2022-jp?B?b1dNcG1qNmsyUzJQUTdoaFlEdWxjQ1ZHbVBlaVFjTjdQNmdXNGxrRFN1?= =?iso-2022-jp?B?SFl6QXV6STdMZDY1eXZjR1JocnVMWUd4VzVJNjFHcnAyNUI3UDk0dzI2?= =?iso-2022-jp?B?UWR6MGpneEhzQ1kxY2E1b2FFbk1keWs9?= x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:ja;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TYRPR01MB13941.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(376014)(366016)(7416014)(4053099003)(38070700018)(95630200002);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?iso-2022-jp?B?RStOalhuaUJUMElkaUJJdkc3dWVjZWgzOC9QUW1QeldjSDhLc2REUjFt?= =?iso-2022-jp?B?MnZneVpYMlZtMXJZMlZtL0t2YnB2cXZCZVlSVkJiOURub0xTVUs2aXI4?= =?iso-2022-jp?B?UHloTGJyOTZ6RlFHSllUZm1zSWpkSUt0WExxeWcyMmRMYmVDNUpubG11?= =?iso-2022-jp?B?NFBnMHBYZDZBNFREYis1T2dVMEw0MkxzVER4RzVsZHMxc0c2Y0swVjE1?= =?iso-2022-jp?B?NFZxbUFVeDRINGs4ZEs3TlF0ZUFnbW5FOXBHbm5NZDZlcXMvZ1NuZVpV?= =?iso-2022-jp?B?aGFaSU9qSjFHQzRsM0pJY2pKWlVqdEVnMjdwRzNTcjFmY3QxVS92SEM0?= =?iso-2022-jp?B?QVdmYUFLL0tEeG1KNUJWUGVJdllmVVZMdWRyaTRXZXFIamlTRW82ODhp?= =?iso-2022-jp?B?VEJpM0xsMWtDcDZhYWJiWEpaeVFSclJpaEZxMlZQQXhNNmJWbldMaCs1?= =?iso-2022-jp?B?QlZYUXY3R3FuekJqNzBTelZ2aHVHM0JsK0d3R3ZvOXQ4bWkwV254R1RF?= =?iso-2022-jp?B?SlNXbWZTS3BNRGwrV3FSb29oQzVSYXA0T2Q5SExqNURtckM2SEplVHpH?= =?iso-2022-jp?B?MlNrOU91cmFUUmgrQmFHMStNTG16Uk15ckw2YVNaS3Y2R1NvT1drN09H?= =?iso-2022-jp?B?YWFvcVBWTkp3Y1MzVTFyNk9rZDluZXFNSEkvQktZdGEyMWhkZGJ5dWdw?= =?iso-2022-jp?B?TlluSnc0ZEd4dVFvYmhIS21WLzNDRHNpQzBkQnRJMm1UMHhDWSt4TzB5?= =?iso-2022-jp?B?a09qUWhiQWpJZVk1NzVRZUJkUTBZVm1aQVpBd2IzMlhhK09ETmNNekNF?= =?iso-2022-jp?B?eE5ZcXY4bkpmOHhLWVljcFhQenlXZ1lFUlZicHRyWE1IS1llUGJEdGZ4?= =?iso-2022-jp?B?NkJTRUNoNnNoczh5WkRhRmFlTG1ac2FYY1p5MkJOV2xBSlU1M3hObENx?= =?iso-2022-jp?B?RDBhQnNiN2tRZU82bjJ1STlrUWhJUXZzQTJ1Q3cyUHVnWTB4VHdPTzMz?= =?iso-2022-jp?B?M3FibkZ5THdKMHE1OEJCb1l4NCt6enQxbTA0cXZ6Mk1Ec1kva3F6OW1q?= =?iso-2022-jp?B?d0VoeSsxZHZOdUFjQ0pCelNmbnhQOC9tNlNnam5CTG55ejROeHozSlVj?= =?iso-2022-jp?B?bXkyY2VMTGY2WDM2d3VZeVc0TnpOVi9SR1FEak56ZDZuTGd0cTFRQXNp?= =?iso-2022-jp?B?VzNIVU0zU3dlZWx5b0J5NEt1ak92Wmo4NVYrNFFha056SzlrYjVDV0R5?= =?iso-2022-jp?B?cmZMOTE0dUNla2Rmaks4clVLREZsL1dRS0xQUHBaUXM0TXA3NUFEVEJw?= =?iso-2022-jp?B?Tm8wVzhPc0hoRnYydlVnOU1GcHZLVUo0eUNIckxxa2x4RVEzYUp4Ukhp?= =?iso-2022-jp?B?SU9EcUFIZEJiVUVXVGQvV2ZMTDBSQnNMKzlOWEdZMmJZaUtWVExEd0JG?= =?iso-2022-jp?B?Nldvc1BYYWlWUlIxdUtreVp6VkwxOGo4RlI2Q3J1UkxIN3phanI3bW1X?= =?iso-2022-jp?B?LzArU2s3SXhSYXRlcldDaVZCbVFWazhoZVkvLzR6a0VzNTlPZTRjazJX?= =?iso-2022-jp?B?dzZlMW9pNXNQZ25ZaHF3Q0YvT3NYb0NyaDJRb1BpWi9aY0I2clA5c3RH?= =?iso-2022-jp?B?VDBSaUZ1V2lDV29wOUFDY0h3QmtWdnZBRjRmQ3FlUmthU3AyRUljd25r?= =?iso-2022-jp?B?OG91NFVBSkh4YmpjU3Q0U0hySjZlbTQvbUNaT3cwR2JtbjN1RzRvVXc3?= =?iso-2022-jp?B?L0V4UkVhSmFMNzJjWGFBaUM1ZWw4dkQyTjZJaDlwczJnZjN3VjZDcGYz?= =?iso-2022-jp?B?SnFEblVrN25wakh0UldCYUJpaGc4akswbGF5eHExbkt5aXBNUys0QjBW?= =?iso-2022-jp?B?N1dxa21sNGlib1ZlK0pWRDJTUGFld2VWV0UzVTF1ZU1yQjVWclRzcjd3?= =?iso-2022-jp?B?OERUem1jT1UvWVJoNlJyMEs3elQ1VTBlMktCN0pFSkVTU0VuZXlYWjEx?= =?iso-2022-jp?B?QVQ4NFF0MmlkZEZkK0lhOEJwOG9GVVNzMTBFbWdwb0VzUXVkSkRwM085?= =?iso-2022-jp?B?SXpNZXkrNy81KzdMWXJheTUxZFhxU3lrT0JVeGR6eWZxME5FMGMza3c0?= =?iso-2022-jp?B?T0FZUllJU1pPckpiRndIazE4S3BkRG5MV2M0akMwTjRmdW83TnVYVG1O?= =?iso-2022-jp?B?aTQ1a2d5UWw2WUI4YTJtaDdJVG01cng4YWpwQ3dKK2ZnbDBwc1QybFJH?= =?iso-2022-jp?B?TkRHaDZkM3k0Z0ZyMEhQRE9BamM5UFVWWDViN0lPM1RMSDBsUkpzYklB?= =?iso-2022-jp?B?YnMvcw==?= Content-Type: multipart/mixed; boundary="_002_TYRPR01MB13941CEA16574771B1BFD130595A02TYRPR01MB13941jp_" MIME-Version: 1.0 X-OriginatorOrg: df.MitsubishiElectric.co.jp X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: TYRPR01MB13941.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 59779c55-76c9-4b4f-6745-08dd6d9c5a2c X-MS-Exchange-CrossTenant-originalarrivaltime: 28 Mar 2025 02:00:45.1032 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: c5a75b62-4bff-4c96-a720-6621ce9978e5 X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: QkSv1zzv2621A67KawLaZIqusUNsQBKwWGHvm3tdmoJ38NB/FLGBO3Spip0jmTA3qWAOEQ/7+ncfGRvH/AwNrA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY4PR01MB14417 List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --_002_TYRPR01MB13941CEA16574771B1BFD130595A02TYRPR01MB13941jp_ Content-Type: text/plain; charset="iso-2022-jp" Content-Transfer-Encoding: quoted-printable Hi Bruce, Jelte, hackers. I apologize for my late response. > From: Jelte Fennema-Nio > Sent: Thursday, August 8, 2024 8:49 PM > SUMMARY OF THREAD >=20 > The design of patch 0001 is agreed upon by everyone on the thread (so far= ). This adds the PARTIAL_AGGREGATE label for > aggregates, which will cause the finalfunc not to run. It also starts usi= ng PARTIAL_AGGREGATE for pushdown of > aggregates in postgres_fdw. In 0001 PARTIAL_AGGREGATE is only supported f= or aggregates with a non-internal/pseudo > type as the stype. >=20 > The design for patch 0002 is still under debate. This would expand on the= functionality added by adding support for > PARTIAL_AGGREGATE for aggregates with an internal stype. This is done by = returning a byte array containing the bytes > that the serialfunc of the aggregate returns. >=20 > A competing proposal for 0002 is to instead change aggregates to not use = an internal stype anymore, and create dedicated > types. The main downside here is that infunc and outfunc would need to be= added for text serialization, in addition to the > binary serialization. An open question is: Can we change the requirements= for CREATE TYPE, so that types can be created > without infunc and outfunc. I rebased the patch 0001 and add the documentation to it. Best regards, Yuki Fujii -- Yuki Fujii Information Technology R&D Center, Mitsubishi Electric Corporation > -----Original Message----- > From: Bruce Momjian > Sent: Friday, August 23, 2024 4:31 AM > To: Tomas Vondra > Cc: Jelte Fennema-Nio ; Fujii Yuki/=1B$BF#0f=1B(B =1B= $BM:5,=1B(B(MELCO/=1B$B>pJsAm8&=1B(B =1B$B#D#M:GE,#G=1B(B) > ; PostgreSQL-development ; Robert Haas > ; Tom Lane ; Stephen Frost ; Andres Freund > ; Tomas Vondra ; Julie= n Rouhaud ; > Daniel Gustafsson ; vignesh C ; Ale= xander Pyhalov > > Subject: Re: Partial aggregates pushdown >=20 > On Thu, Aug 22, 2024 at 08:31:11PM +0200, Tomas Vondra wrote: > > > My question is related to #3 and #4. For #3, if we are going to be > > > building infrastructure to handle passing int128 for AVG, wouldn't > > > it be wiser to create an int128 type and an int128 array type, and > > > then use method #2 to handle those, rather than creating custom code > > > just to read/write int128 values for FDWs aggregate passing alone. > > > > > > > Yep, adding int128 as a data type would extend this to aggregates that > > store state as int128 (or array of int128). >=20 > Great, I am not too far off then. >=20 > > > For #4, can we use or improve the RECORD data type to handle #4 --- > > > that seems preferable to creating custom FDWs aggregate passing code. > > > > > > I know the open question was whether we should create custom FDWs > > > aggregate passing functions or custom data types for FDWs aggregate > > > passing, but I am asking if we can improve existing facilities, like > > > int128 or record passing, to reduce the need for some of these. > > > > > > > But which code would produce the record? AFAIK it can't happen in some > > generic executor code, because that only sees "internal" for each > > aggregate. The exact structure of the aggstate is private within the > > code of each aggregate - the record would have to be built there, no? > > > > I imagine we'd add this for each aggregate as a new pair of functions > > to build/parse the record, but that's kinda the serial/deserial way we > > discussed earlier. > > > > Or are you suggesting we'd actually say: > > > > CREATE AGGREGATE xyz(...) ( > > STYPE =3D record, > > ... > > ) >=20 > So my idea from the email I just sent is to create a pg_proc.proargtypes-= like column (data type oidvector) for pg_aggregate > which stores the oids of the values we want to return, so AVG(interval) w= ould have an array of the oids for interval and int8, > e.g.: >=20 > SELECT oid FROM pg_type WHERE typname =3D 'interval'; > oid > ------ > 1186 >=20 > SELECT oid FROM pg_type WHERE typname =3D 'int8'; > oid > ----- > 20 >=20 > SELECT '1186 20'::oidvector; > oidvector > ----------- > 1186 20 >=20 > It seems all four methods could use this, again assuming we create > int128/int16 and whatever other types we need. >=20 > -- > Bruce Momjian https://momjian.us > EDB https://enterprisedb.com >=20 > Only you can decide what is important to you. --_002_TYRPR01MB13941CEA16574771B1BFD130595A02TYRPR01MB13941jp_ Content-Type: application/octet-stream; name="0001-Partial-Aggregate-Pushdown-Add-PARTIAL_AGGREGATE-key.patch" Content-Description: 0001-Partial-Aggregate-Pushdown-Add-PARTIAL_AGGREGATE-key.patch Content-Disposition: attachment; filename="0001-Partial-Aggregate-Pushdown-Add-PARTIAL_AGGREGATE-key.patch"; size=116485; creation-date="Fri, 28 Mar 2025 02:00:43 GMT"; modification-date="Fri, 28 Mar 2025 02:00:43 GMT" Content-Transfer-Encoding: base64 RnJvbSBhYzg3MWFhNjAyYTgzMzBhZjg3YzdjOWNlZjNlOTE4YjY1ZTYwMDMwIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBZdWtpIEZ1amlpIDxGdWppaS5ZdWtpQGRmLk1pdHN1YmlzaGlF bGVjdHJpYy5jby5qcD4KRGF0ZTogTW9uLCAxNyBNYXIgMjAyNSAwOToyMDo1OCAtMDQwMApTdWJq ZWN0OiBbUEFUQ0hdIFBhcnRpYWwgQWdncmVnYXRlIFB1c2hkb3duOyBBZGQgUEFSVElBTF9BR0dS RUdBVEUga2V5d29yZAoKLS0tCiBjb250cmliL3Bvc3RncmVzX2Zkdy9kZXBhcnNlLmMgICAgICAg ICAgICAgICAgfCAgNzUgKy0KIC4uLi9wb3N0Z3Jlc19mZHcvZXhwZWN0ZWQvcG9zdGdyZXNfZmR3 Lm91dCAgICB8IDYzOCArKysrKysrKysrKysrKysrLS0KIGNvbnRyaWIvcG9zdGdyZXNfZmR3L29w dGlvbi5jICAgICAgICAgICAgICAgICB8ICAgNCArLQogY29udHJpYi9wb3N0Z3Jlc19mZHcvcG9z dGdyZXNfZmR3LmMgICAgICAgICAgIHwgIDQzICstCiBjb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0 Z3Jlc19mZHcuaCAgICAgICAgICAgfCAgMTIgKy0KIGNvbnRyaWIvcG9zdGdyZXNfZmR3L3NxbC9w b3N0Z3Jlc19mZHcuc3FsICAgICB8IDExMiArKy0KIGRvYy9zcmMvc2dtbC9wb3N0Z3Jlcy1mZHcu c2dtbCAgICAgICAgICAgICAgICB8IDEwMyArKy0KIGRvYy9zcmMvc2dtbC9zeW50YXguc2dtbCAg ICAgICAgICAgICAgICAgICAgICB8ICAyNyArLQogc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFn Zy5jICAgICAgICAgICAgICAgIHwgICA2ICstCiBzcmMvYmFja2VuZC9ub2Rlcy9tYWtlZnVuY3Mu YyAgICAgICAgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxh bm5lci5jICAgICAgICAgIHwgMTMzICsrKy0KIHNyYy9iYWNrZW5kL29wdGltaXplci9wbGFuL3Nl dHJlZnMuYyAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9vcHRpbWl6ZXIvcHJlcC9wcmVw YWdnLmMgICAgICAgICAgfCAgIDEgKwogc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueSAgICAgICAg ICAgICAgICAgICAgIHwgIDE4ICstCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfYWdnLmMgICAg ICAgICAgICAgICAgfCAgMjEgKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jbGF1c2UuYyAg ICAgICAgICAgICB8ICAgMSArCiBzcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jICAgICAg ICAgICAgICAgfCAgIDMgKy0KIHNyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9mdW5jLmMgICAgICAg ICAgICAgICB8ICAyNCArLQogc3JjL2JhY2tlbmQvdXRpbHMvYWR0L3J1bGV1dGlscy5jICAgICAg ICAgICAgIHwgICAzICstCiBzcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmggICAgICAgICAg ICAgICAgfCAgIDEgKwogc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmggICAgICAgICAgICAg ICAgIHwgICA1ICsKIHNyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oICAgICAgICAgICAgICAg ICB8ICAgMyArCiBzcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmggICAgICAgICAgICAgICAgICAg fCAgIDEgKwogc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX2FnZy5oICAgICAgICAgICAgICAgIHwg ICAyICstCiBzcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2FnZ3JlZ2F0ZXMub3V0ICAgICAgfCAg IDggKwogLi4uL3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX2FnZ3JlZ2F0ZS5vdXQgIHwgIDI5 ICsKIHNyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2FnZ3JlZ2F0ZXMuc3FsICAgICAgICAgICB8ICAgNCAr CiBzcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fYWdncmVnYXRlLnNxbCAgfCAgIDUgKwog MjggZmlsZXMgY2hhbmdlZCwgMTE0OSBpbnNlcnRpb25zKCspLCAxMzUgZGVsZXRpb25zKC0pCgpk aWZmIC0tZ2l0IGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvZGVwYXJzZS5jIGIvY29udHJpYi9wb3N0 Z3Jlc19mZHcvZGVwYXJzZS5jCmluZGV4IDZlN2RjM2QyZGY5Li5lMzBiZjhjNDMyOSAxMDA2NDQK LS0tIGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvZGVwYXJzZS5jCisrKyBiL2NvbnRyaWIvcG9zdGdy ZXNfZmR3L2RlcGFyc2UuYwpAQCAtMjA0LDcgKzIwNCw3IEBAIHN0YXRpYyBib29sIGlzX3N1YnF1 ZXJ5X3ZhcihWYXIgKm5vZGUsIFJlbE9wdEluZm8gKmZvcmVpZ25yZWwsCiAJCQkJCQkJaW50ICpy ZWxubywgaW50ICpjb2xubyk7CiBzdGF0aWMgdm9pZCBnZXRfcmVsYXRpb25fY29sdW1uX2FsaWFz X2lkcyhWYXIgKm5vZGUsIFJlbE9wdEluZm8gKmZvcmVpZ25yZWwsCiAJCQkJCQkJCQkJICBpbnQg KnJlbG5vLCBpbnQgKmNvbG5vKTsKLQorc3RhdGljIGJvb2wgcGFydGlhbF9hZ2dfb2soQWdncmVm ICphZ2csIFBnRmR3UmVsYXRpb25JbmZvICpmcGluZm8pOwogCiAvKgogICogRXhhbWluZSBlYWNo IHF1YWwgY2xhdXNlIGluIGlucHV0X2NvbmRzLCBhbmQgY2xhc3NpZnkgdGhlbSBpbnRvIHR3byBn cm91cHMsCkBAIC05MDksOCArOTA5LDkgQEAgZm9yZWlnbl9leHByX3dhbGtlcihOb2RlICpub2Rl LAogCQkJCWlmICghSVNfVVBQRVJfUkVMKGdsb2JfY3h0LT5mb3JlaWducmVsKSkKIAkJCQkJcmV0 dXJuIGZhbHNlOwogCi0JCQkJLyogT25seSBub24tc3BsaXQgYWdncmVnYXRlcyBhcmUgcHVzaGFi bGUuICovCi0JCQkJaWYgKGFnZy0+YWdnc3BsaXQgIT0gQUdHU1BMSVRfU0lNUExFKQorCQkJCWlm IChhZ2ctPmFnZ3NwbGl0ICE9IEFHR1NQTElUX1NJTVBMRSAmJiBhZ2ctPmFnZ3NwbGl0ICE9IEFH R1NQTElUX0lOSVRJQUxfU0VSSUFMKQorCQkJCQlyZXR1cm4gZmFsc2U7CisJCQkJaWYgKGFnZy0+ YWdnc3BsaXQgPT0gQUdHU1BMSVRfSU5JVElBTF9TRVJJQUwgJiYgIXBhcnRpYWxfYWdnX29rKGFn ZywgZnBpbmZvKSkKIAkJCQkJcmV0dXJuIGZhbHNlOwogCiAJCQkJLyogQXMgdXN1YWwsIGl0IG11 c3QgYmUgc2hpcHBhYmxlLiAqLwpAQCAtMzY1NywxOCArMzY1OCwyMSBAQCBkZXBhcnNlQWdncmVm KEFnZ3JlZiAqbm9kZSwgZGVwYXJzZV9leHByX2N4dCAqY29udGV4dCkKIAlTdHJpbmdJbmZvCWJ1 ZiA9IGNvbnRleHQtPmJ1ZjsKIAlib29sCQl1c2VfdmFyaWFkaWM7CiAKLQkvKiBPbmx5IGJhc2lj LCBub24tc3BsaXQgYWdncmVnYXRpb24gYWNjZXB0ZWQuICovCi0JQXNzZXJ0KG5vZGUtPmFnZ3Nw bGl0ID09IEFHR1NQTElUX1NJTVBMRSk7CisKKwlBc3NlcnQoKG5vZGUtPmFnZ3NwbGl0ID09IEFH R1NQTElUX1NJTVBMRSkgfHwKKwkJICAgKG5vZGUtPmFnZ3NwbGl0ID09IEFHR1NQTElUX0lOSVRJ QUxfU0VSSUFMKSk7CiAKIAkvKiBDaGVjayBpZiBuZWVkIHRvIHByaW50IFZBUklBRElDIChjZi4g cnVsZXV0aWxzLmMpICovCiAJdXNlX3ZhcmlhZGljID0gbm9kZS0+YWdndmFyaWFkaWM7CiAKIAkv KiBGaW5kIGFnZ3JlZ2F0ZSBuYW1lIGZyb20gYWdnZm5vaWQgd2hpY2ggaXMgYSBwZ19wcm9jIGVu dHJ5ICovCiAJYXBwZW5kRnVuY3Rpb25OYW1lKG5vZGUtPmFnZ2Zub2lkLCBjb250ZXh0KTsKKwog CWFwcGVuZFN0cmluZ0luZm9DaGFyKGJ1ZiwgJygnKTsKIAotCS8qIEFkZCBESVNUSU5DVCAqLwot CWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAobm9kZS0+YWdnZGlzdGluY3QgIT0gTklMKSA/ ICJESVNUSU5DVCAiIDogIiIpOworCS8qIEFkZCBESVNUSU5DVCBvciBQQVJUSUFMX0FHR1JFR0FU RSAqLworCWlmIChub2RlLT5hZ2dkaXN0aW5jdCAhPSBOSUwpCisJCWFwcGVuZFN0cmluZ0luZm9T dHJpbmcoYnVmLCAiRElTVElOQ1QgIik7CiAKIAlpZiAoQUdHS0lORF9JU19PUkRFUkVEX1NFVChu b2RlLT5hZ2draW5kKSkKIAl7CkBAIC0zNzM4LDYgKzM3NDIsOSBAQCBkZXBhcnNlQWdncmVmKEFn Z3JlZiAqbm9kZSwgZGVwYXJzZV9leHByX2N4dCAqY29udGV4dCkKIAl9CiAKIAlhcHBlbmRTdHJp bmdJbmZvQ2hhcihidWYsICcpJyk7CisKKwlpZiAobm9kZS0+YWdnc3BsaXQgPT0gQUdHU1BMSVRf SU5JVElBTF9TRVJJQUwpCisJCWFwcGVuZFN0cmluZ0luZm9TdHJpbmcoYnVmLCAiIFBBUlRJQUxf QUdHUkVHQVRFICIpOwogfQogCiAvKgpAQCAtMzg2Myw5ICszODcwLDEwIEBAIGFwcGVuZEdyb3Vw QnlDbGF1c2UoTGlzdCAqdGxpc3QsIGRlcGFyc2VfZXhwcl9jeHQgKmNvbnRleHQpCiAJUXVlcnkJ ICAgKnF1ZXJ5ID0gY29udGV4dC0+cm9vdC0+cGFyc2U7CiAJTGlzdENlbGwgICAqbGM7CiAJYm9v bAkJZmlyc3QgPSB0cnVlOworCVBnRmR3UmVsYXRpb25JbmZvICpmcGluZm8gPSAoUGdGZHdSZWxh dGlvbkluZm8gKikgY29udGV4dC0+Zm9yZWlnbnJlbC0+ZmR3X3ByaXZhdGU7CiAKIAkvKiBOb3Ro aW5nIHRvIGJlIGRvbmUsIGlmIHRoZXJlJ3Mgbm8gR1JPVVAgQlkgY2xhdXNlIGluIHRoZSBxdWVy eS4gKi8KLQlpZiAoIXF1ZXJ5LT5ncm91cENsYXVzZSkKKwlpZiAoIWZwaW5mby0+Z3JvdXBfY2xh dXNlKQogCQlyZXR1cm47CiAKIAlhcHBlbmRTdHJpbmdJbmZvU3RyaW5nKGJ1ZiwgIiBHUk9VUCBC WSAiKTsKQEAgLTM4ODMsNyArMzg5MSw3IEBAIGFwcGVuZEdyb3VwQnlDbGF1c2UoTGlzdCAqdGxp c3QsIGRlcGFyc2VfZXhwcl9jeHQgKmNvbnRleHQpCiAJICogdG8gZW1wdHksIGFuZCBpbiBhbnkg Y2FzZSB0aGUgcmVkdW5kYW5jeSBzaXR1YXRpb24gb24gdGhlIHJlbW90ZSBtaWdodAogCSAqIGJl IGRpZmZlcmVudCB0aGFuIHdoYXQgd2UgdGhpbmsgaGVyZS4KIAkgKi8KLQlmb3JlYWNoKGxjLCBx dWVyeS0+Z3JvdXBDbGF1c2UpCisJZm9yZWFjaChsYywgZnBpbmZvLT5ncm91cF9jbGF1c2UpCiAJ ewogCQlTb3J0R3JvdXBDbGF1c2UgKmdycCA9IChTb3J0R3JvdXBDbGF1c2UgKikgbGZpcnN0KGxj KTsKIApAQCAtNDIwNCwzICs0MjEyLDUyIEBAIGdldF9yZWxhdGlvbl9jb2x1bW5fYWxpYXNfaWRz KFZhciAqbm9kZSwgUmVsT3B0SW5mbyAqZm9yZWlnbnJlbCwKIAkvKiBTaG91bGRuJ3QgZ2V0IGhl cmUgKi8KIAllbG9nKEVSUk9SLCAidW5leHBlY3RlZCBleHByZXNzaW9uIGluIHN1YnF1ZXJ5IG91 dHB1dCIpOwogfQorCisvKgorICogLS0tLS0tLS0tLQorICogQ2hlY2sgdGhhdCBwYXJ0aWFsIGFn Z3JlZ2F0ZSAiYWdnIiBpcyBzYWZlIHRvIHB1c2ggZG93bi4KKyAqCisgKiBJdCBpcyBwdXNoZG93 bi1zYWZlIHdoZW4gYWxsIG9mIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgdHJ1ZToKKyAq CisgKiAgICAqIGFnZyBpcyBhbiBBR0dLSU5EX05PUk1BTCBhZ2dyZWdhdGUgd2hpY2ggY29udGFp bnMgbm8gRElTVElOQ1Qgb3IKKyAqICAgIE9SREVSIEJZIGNsYXVzZXMKKyAqICAgICogcmVtb3Rl IHNlcnZlciBjYW4gcmV0dXJuIHBhcnRpYWwgYWdncmVnYXRlIHJlc3VsdHMKKyAqIC0tLS0tLS0t LS0KKyAqLworc3RhdGljIGJvb2wKK3BhcnRpYWxfYWdnX29rKEFnZ3JlZiAqYWdnLCBQZ0Zkd1Jl bGF0aW9uSW5mbyAqZnBpbmZvKQoreworCUhlYXBUdXBsZQlhZ2d0dXA7CisJRm9ybV9wZ19hZ2dy ZWdhdGUgYWdnZm9ybTsKKwlib29sCQlwYXJ0aWFsX2FnZ19vayA9IHRydWU7CisKKwlBc3NlcnQo YWdnLT5hZ2dzcGxpdCA9PSBBR0dTUExJVF9JTklUSUFMX1NFUklBTCk7CisKKwkvKiBXZSBkb24n dCBzdXBwb3J0IGNvbXBsZXggcGFydGlhbCBhZ2dyZWdhdGVzICovCisJaWYgKGFnZy0+YWdnZGlz dGluY3QgfHwgYWdnLT5hZ2draW5kICE9IEFHR0tJTkRfTk9STUFMIHx8IGFnZy0+YWdnb3JkZXIg IT0gTklMKQorCQlyZXR1cm4gZmFsc2U7CisKKwlhZ2d0dXAgPSBTZWFyY2hTeXNDYWNoZTEoQUdH Rk5PSUQsIE9iamVjdElkR2V0RGF0dW0oYWdnLT5hZ2dmbm9pZCkpOworCWlmICghSGVhcFR1cGxl SXNWYWxpZChhZ2d0dXApKQorCQllbG9nKEVSUk9SLCAiY2FjaGUgbG9va3VwIGZhaWxlZCBmb3Ig YWdncmVnYXRlICV1IiwgYWdnLT5hZ2dmbm9pZCk7CisJYWdnZm9ybSA9IChGb3JtX3BnX2FnZ3Jl Z2F0ZSkgR0VUU1RSVUNUKGFnZ3R1cCk7CisKKwlwYXJ0aWFsX2FnZ19vayA9IGZwaW5mby0+cGFy dGlhbF9hZ2dyZWdhdGVfc3VwcG9ydDsKKwlpZihhZ2dmb3JtLT5hZ2d0cmFuc3R5cGUgPT0gSU5U RVJOQUxPSUQgfHwKKwkJZ2V0X3R5cHR5cGUoYWdnZm9ybS0+YWdndHJhbnN0eXBlKSA9PSBUWVBU WVBFX1BTRVVETykKKwkJcGFydGlhbF9hZ2dfb2sgPSBmYWxzZTsKKwlpZihwYXJ0aWFsX2FnZ19v ayl7CisJCWlmIChmcGluZm8tPnJlbW90ZXZlcnNpb24gPT0gMCkKKwkJeworCQkJUEdjb25uCSAg ICpjb25uID0gR2V0Q29ubmVjdGlvbihmcGluZm8tPnVzZXIsIGZhbHNlLCBOVUxMKTsKKworCQkJ ZnBpbmZvLT5yZW1vdGV2ZXJzaW9uID0gUFFzZXJ2ZXJWZXJzaW9uKGNvbm4pOworCQl9CisKKwkJ aWYgKGZwaW5mby0+cmVtb3RldmVyc2lvbiAhPSBQR19WRVJTSU9OX05VTSkKKwkJCXBhcnRpYWxf YWdnX29rID0gZmFsc2U7CisJfQorCisJUmVsZWFzZVN5c0NhY2hlKGFnZ3R1cCk7CisJcmV0dXJu IHBhcnRpYWxfYWdnX29rOworfQpkaWZmIC0tZ2l0IGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvZXhw ZWN0ZWQvcG9zdGdyZXNfZmR3Lm91dCBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L2V4cGVjdGVkL3Bv c3RncmVzX2Zkdy5vdXQKaW5kZXggYmI0ZWQzMDU5YzQuLmY5OWQ5M2MxODA1IDEwMDY0NAotLS0g YS9jb250cmliL3Bvc3RncmVzX2Zkdy9leHBlY3RlZC9wb3N0Z3Jlc19mZHcub3V0CisrKyBiL2Nv bnRyaWIvcG9zdGdyZXNfZmR3L2V4cGVjdGVkL3Bvc3RncmVzX2Zkdy5vdXQKQEAgLTEwMjYwLDM2 ICsxMDI2MCw1NyBAQCBSRVNFVCBlbmFibGVfcGFydGl0aW9ud2lzZV9qb2luOwogLS0gPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQogLS0gdGVzdCBwYXJ0aXRpb253aXNlIGFnZ3JlZ2F0ZXMKIC0tID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLUNS RUFURSBUQUJMRSBwYWdnX3RhYiAoYSBpbnQsIGIgaW50LCBjIHRleHQpIFBBUlRJVElPTiBCWSBS QU5HRShhKTsKK0FMVEVSIFNFUlZFUiBsb29wYmFjayBPUFRJT05TIChBREQgZmR3X3R1cGxlX2Nv c3QgJzAuMScpOworQ1JFQVRFIFRZUEUgbW9vZCBBUyBlbnVtICgnc2FkJywgJ29rJywgJ2hhcHB5 Jyk7CitBTFRFUiBFWFRFTlNJT04gcG9zdGdyZXNfZmR3IEFERCBUWVBFIG1vb2Q7CitDUkVBVEUg VEFCTEUgcGFnZ190YWIgKGEgaW50LCBiIGludCwgYyB0ZXh0LCBjX3NlcmlhbCBpbnQ0LAorCQkJ CQljX2ludDRhcnJheSBfaW50NCwgY19pbnRlcnZhbCBpbnRlcnZhbCwKKwkJCQkJY19tb25leSBt b25leSwgY18xYyB0ZXh0LCBjXzFiIGJ5dGVhLAorCQkJCQljX2JpdCBiaXQoMiksIGNfMW9yM2lu dDIgaW50MiwKKwkJCQkJY18xb3IzaW50NCBpbnQ0LCBjXzFvcjNpbnQ4IGludDgsCisJCQkJCWNf Ym9vbCBib29sLCBjX2VudW0gbW9vZCwgY19wZ19sc24gcGdfbHNuLAorCQkJCQljX3RpZCB0aWQs IGNfaW50NHJhbmdlIGludDRyYW5nZSwKKwkJCQkJY19pbnQ0bXVsdGlyYW5nZSBpbnQ0bXVsdGly YW5nZSwKKwkJCQkJY190aW1lIHRpbWUsIGNfdGltZXR6IHRpbWV0eiwKKwkJCQkJY190aW1lc3Rh bXAgdGltZXN0YW1wLCBjX3RpbWVzdGFtcHR6IHRpbWVzdGFtcHR6LAorCQkJCQljX3hpZDggeGlk OCkKKwlQQVJUSVRJT04gQlkgUkFOR0UoYSk7CiBDUkVBVEUgVEFCTEUgcGFnZ190YWJfcDEgKExJ S0UgcGFnZ190YWIpOwogQ1JFQVRFIFRBQkxFIHBhZ2dfdGFiX3AyIChMSUtFIHBhZ2dfdGFiKTsK IENSRUFURSBUQUJMRSBwYWdnX3RhYl9wMyAoTElLRSBwYWdnX3RhYik7Ci1JTlNFUlQgSU5UTyBw YWdnX3RhYl9wMSBTRUxFQ1QgaSAlIDMwLCBpICUgNTAsIHRvX2NoYXIoaS8zMCwgJ0ZNMDAwMCcp IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMwMDApIGkgV0hFUkUgKGkgJSAzMCkgPCAxMDsKLUlO U0VSVCBJTlRPIHBhZ2dfdGFiX3AyIFNFTEVDVCBpICUgMzAsIGkgJSA1MCwgdG9fY2hhcihpLzMw LCAnRk0wMDAwJykgRlJPTSBnZW5lcmF0ZV9zZXJpZXMoMSwgMzAwMCkgaSBXSEVSRSAoaSAlIDMw KSA8IDIwIGFuZCAoaSAlIDMwKSA+PSAxMDsKLUlOU0VSVCBJTlRPIHBhZ2dfdGFiX3AzIFNFTEVD VCBpICUgMzAsIGkgJSA1MCwgdG9fY2hhcihpLzMwLCAnRk0wMDAwJykgRlJPTSBnZW5lcmF0ZV9z ZXJpZXMoMSwgMzAwMCkgaSBXSEVSRSAoaSAlIDMwKSA8IDMwIGFuZCAoaSAlIDMwKSA+PSAyMDsK K1NFVCBUaW1lWm9uZSA9ICdVVEMnOworSU5TRVJUIElOVE8gcGFnZ190YWJfcDEgU0VMRUNUIGkg JSAzMCwgaSAlIDUwLCB0b19jaGFyKGkvMzAsICdGTTAwMDAnKSwgaSwgYXJyYXlbKGkgJSAyKSwg MF0sICgoaSAlIDIpIHx8ICcgc2Vjb25kcycpOjppbnRlcnZhbCwgKGkgJSAyKTo6bW9uZXksICgo aSAtIDEpICUgMTApOjp0ZXh0LCAoKChpIC0gMSkgJSAxMCk6OnRleHQpOjpieXRlYSwgY2FzZSB3 aGVuIChpICUgMikgPSAwIHRoZW4gQicwMScgZWxzZSBCJzExJyBlbmQsIGNhc2Ugd2hlbiAoaSAl IDIpID0gMCB0aGVuIDEgZWxzZSAzIGVuZCwgY2FzZSB3aGVuIChpICUgMikgPSAwIHRoZW4gMSBl bHNlIDMgZW5kLCBjYXNlIHdoZW4gKGkgJSAyKSA9IDAgdGhlbiAxIGVsc2UgMyBlbmQsIGNhc2Ug d2hlbiAoaSAlIDIpID0gMCB0aGVuIHRydWUgZWxzZSBmYWxzZSBlbmQsIChjYXNlIHdoZW4gKGkg JSAyKSA9IDAgdGhlbiAnc2FkJyBlbHNlICdoYXBweScgZW5kKTo6bW9vZCwgKCcwLycgfHwgaSk6 OnBnX2xzbiwgKCcoMCwnIHx8IGkgfHwgJyknKTo6dGlkLCBpbnQ0cmFuZ2UoMCwgaSksIGludDRt dWx0aXJhbmdlKGludDRyYW5nZSgwLCBpKSwgaW50NHJhbmdlKDEwMCwgMTAwICsgaSkpLCAnMDA6 MDA6MDAnOjp0aW1lICsgKGkgfHwgJyBzZWNvbmRzJyk6OmludGVydmFsLCAnMDA6MDA6MDAnOjp0 aW1ldHogKyAoaSB8fCAnIHNlY29uZHMnKTo6aW50ZXJ2YWwsICcyMDAwLTAxLTAxJzo6dGltZXN0 YW1wICsgKGkgfHwgJyBzZWNvbmRzJyk6OmludGVydmFsLCAnMjAwMC0wMS0wMSc6OnRpbWVzdGFt cHR6ICsgKGkgfHwgJyBzZWNvbmRzJyk6OmludGVydmFsLCAoKGkgJSAxMCk6OnRleHQpOjp4aWQ4 IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMwMDApIGkgV0hFUkUgKGkgJSAzMCkgPCAxMDsKK0lO U0VSVCBJTlRPIHBhZ2dfdGFiX3AyIFNFTEVDVCBpICUgMzAsIGkgJSA1MCwgdG9fY2hhcihpLzMw LCAnRk0wMDAwJyksIGksIGFycmF5WyhpICUgMiksIDBdLCAoKGkgJSAyKSB8fCAnIHNlY29uZHMn KTo6aW50ZXJ2YWwsIChpICUgMik6Om1vbmV5LCAoKGkgLSAxKSAlIDEwKTo6dGV4dCwgKCgoaSAt IDEpICUgMTApOjp0ZXh0KTo6Ynl0ZWEsIGNhc2Ugd2hlbiAoaSAlIDIpID0gMCB0aGVuIEInMDEn IGVsc2UgQicxMScgZW5kLCBjYXNlIHdoZW4gKGkgJSAyKSA9IDAgdGhlbiAxIGVsc2UgMyBlbmQs IGNhc2Ugd2hlbiAoaSAlIDIpID0gMCB0aGVuIDEgZWxzZSAzIGVuZCwgY2FzZSB3aGVuIChpICUg MikgPSAwIHRoZW4gMSBlbHNlIDMgZW5kLCBjYXNlIHdoZW4gKGkgJSAyKSA9IDAgdGhlbiB0cnVl IGVsc2UgZmFsc2UgZW5kLCAoY2FzZSB3aGVuIChpICUgMikgPSAwIHRoZW4gJ3NhZCcgZWxzZSAn aGFwcHknIGVuZCk6Om1vb2QsICgnMC8nIHx8IGkpOjpwZ19sc24sICgnKDAsJyB8fCBpIHx8ICcp Jyk6OnRpZCwgaW50NHJhbmdlKDAsIGkpLCBpbnQ0bXVsdGlyYW5nZShpbnQ0cmFuZ2UoMCwgaSks IGludDRyYW5nZSgxMDAsIDEwMCArIGkpKSwgJzAwOjAwOjAwJzo6dGltZSArIChpIHx8ICcgc2Vj b25kcycpOjppbnRlcnZhbCwgJzAwOjAwOjAwJzo6dGltZXR6ICsgKGkgfHwgJyBzZWNvbmRzJyk6 OmludGVydmFsLCAnMjAwMC0wMS0wMSc6OnRpbWVzdGFtcCArIChpIHx8ICcgc2Vjb25kcycpOjpp bnRlcnZhbCwgJzIwMDAtMDEtMDEnOjp0aW1lc3RhbXB0eiArIChpIHx8ICcgc2Vjb25kcycpOjpp bnRlcnZhbCwgKChpICUgMTApOjp0ZXh0KTo6eGlkOCBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAz MDAwKSBpIFdIRVJFIChpICUgMzApIDwgMjAgYW5kIChpICUgMzApID49IDEwOworSU5TRVJUIElO VE8gcGFnZ190YWJfcDMgU0VMRUNUIGkgJSAzMCwgaSAlIDUwLCB0b19jaGFyKGkvMzAsICdGTTAw MDAnKSwgaSwgYXJyYXlbKGkgJSAyKSwgMF0sICgoaSAlIDIpIHx8ICcgc2Vjb25kcycpOjppbnRl cnZhbCwgKGkgJSAyKTo6bW9uZXksICgoaSAtIDEpICUgMTApOjp0ZXh0LCAoKChpIC0gMSkgJSAx MCk6OnRleHQpOjpieXRlYSwgY2FzZSB3aGVuIChpICUgMikgPSAwIHRoZW4gQicwMScgZWxzZSBC JzExJyBlbmQsIGNhc2Ugd2hlbiAoaSAlIDIpID0gMCB0aGVuIDEgZWxzZSAzIGVuZCwgY2FzZSB3 aGVuIChpICUgMikgPSAwIHRoZW4gMSBlbHNlIDMgZW5kLCBjYXNlIHdoZW4gKGkgJSAyKSA9IDAg dGhlbiAxIGVsc2UgMyBlbmQsIGNhc2Ugd2hlbiAoaSAlIDIpID0gMCB0aGVuIHRydWUgZWxzZSBm YWxzZSBlbmQsIChjYXNlIHdoZW4gKGkgJSAyKSA9IDAgdGhlbiAnc2FkJyBlbHNlICdoYXBweScg ZW5kKTo6bW9vZCwgKCcwLycgfHwgaSk6OnBnX2xzbiwgKCcoMCwnIHx8IGkgfHwgJyknKTo6dGlk LCBpbnQ0cmFuZ2UoMCwgaSksIGludDRtdWx0aXJhbmdlKGludDRyYW5nZSgwLCBpKSwgaW50NHJh bmdlKDEwMCwgMTAwICsgaSkpLCAnMDA6MDA6MDAnOjp0aW1lICsgKGkgfHwgJyBzZWNvbmRzJyk6 OmludGVydmFsLCAnMDA6MDA6MDAnOjp0aW1ldHogKyAoaSB8fCAnIHNlY29uZHMnKTo6aW50ZXJ2 YWwsICcyMDAwLTAxLTAxJzo6dGltZXN0YW1wICsgKGkgfHwgJyBzZWNvbmRzJyk6OmludGVydmFs LCAnMjAwMC0wMS0wMSc6OnRpbWVzdGFtcHR6ICsgKGkgfHwgJyBzZWNvbmRzJyk6OmludGVydmFs LCAoKGkgJSAxMCk6OnRleHQpOjp4aWQ4IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMwMDApIGkg V0hFUkUgKGkgJSAzMCkgPCAzMCBhbmQgKGkgJSAzMCkgPj0gMjA7CiAtLSBDcmVhdGUgZm9yZWln biBwYXJ0aXRpb25zCiBDUkVBVEUgRk9SRUlHTiBUQUJMRSBmcGFnZ190YWJfcDEgUEFSVElUSU9O IE9GIHBhZ2dfdGFiIEZPUiBWQUxVRVMgRlJPTSAoMCkgVE8gKDEwKSBTRVJWRVIgbG9vcGJhY2sg T1BUSU9OUyAodGFibGVfbmFtZSAncGFnZ190YWJfcDEnKTsKIENSRUFURSBGT1JFSUdOIFRBQkxF IGZwYWdnX3RhYl9wMiBQQVJUSVRJT04gT0YgcGFnZ190YWIgRk9SIFZBTFVFUyBGUk9NICgxMCkg VE8gKDIwKSBTRVJWRVIgbG9vcGJhY2sgT1BUSU9OUyAodGFibGVfbmFtZSAncGFnZ190YWJfcDIn KTsKIENSRUFURSBGT1JFSUdOIFRBQkxFIGZwYWdnX3RhYl9wMyBQQVJUSVRJT04gT0YgcGFnZ190 YWIgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8gKDMwKSBTRVJWRVIgbG9vcGJhY2sgT1BUSU9OUyAo dGFibGVfbmFtZSAncGFnZ190YWJfcDMnKTsKIEFOQUxZWkUgcGFnZ190YWI7CitBTkFMWVpFIHBh Z2dfdGFiX3AxOworQU5BTFlaRSBwYWdnX3RhYl9wMjsKK0FOQUxZWkUgcGFnZ190YWJfcDM7CiBB TkFMWVpFIGZwYWdnX3RhYl9wMTsKIEFOQUxZWkUgZnBhZ2dfdGFiX3AyOwogQU5BTFlaRSBmcGFn Z190YWJfcDM7CitTRVQgZXh0cmFfZmxvYXRfZGlnaXRzID0gMDsKIC0tIFdoZW4gR1JPVVAgQlkg Y2xhdXNlIG1hdGNoZXMgd2l0aCBQQVJUSVRJT04gS0VZLgogLS0gUGxhbiB3aXRoIHBhcnRpdGlv bndpc2UgYWdncmVnYXRlcyBpcyBkaXNhYmxlZAogU0VUIGVuYWJsZV9wYXJ0aXRpb253aXNlX2Fn Z3JlZ2F0ZSBUTyBmYWxzZTsKIEVYUExBSU4gKENPU1RTIE9GRikKIFNFTEVDVCBhLCBzdW0oYiks IG1pbihiKSwgY291bnQoKikgRlJPTSBwYWdnX3RhYiBHUk9VUCBCWSBhIEhBVklORyBhdmcoYikg PCAyMiBPUkRFUiBCWSAxOwotICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAg ICAgICAgICAgICAgICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tCi0gR3JvdXBBZ2dyZWdhdGUKLSAgIEdyb3VwIEtleTogcGFnZ190YWIuYQot ICAgRmlsdGVyOiAoYXZnKHBhZ2dfdGFiLmIpIDwgJzIyJzo6bnVtZXJpYykKLSAgIC0+ICBBcHBl bmQKLSAgICAgICAgIC0+ICBGb3JlaWduIFNjYW4gb24gZnBhZ2dfdGFiX3AxIHBhZ2dfdGFiXzEK LSAgICAgICAgIC0+ICBGb3JlaWduIFNjYW4gb24gZnBhZ2dfdGFiX3AyIHBhZ2dfdGFiXzIKLSAg ICAgICAgIC0+ICBGb3JlaWduIFNjYW4gb24gZnBhZ2dfdGFiX3AzIHBhZ2dfdGFiXzMKLSg3IHJv d3MpCisgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAg ICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBTb3J0CisgICBTb3J0IEtleTogcGFnZ190YWIuYQorICAgLT4gIEhhc2hB Z2dyZWdhdGUKKyAgICAgICAgIEdyb3VwIEtleTogcGFnZ190YWIuYQorICAgICAgICAgRmlsdGVy OiAoYXZnKHBhZ2dfdGFiLmIpIDwgJzIyJzo6bnVtZXJpYykKKyAgICAgICAgIC0+ICBBcHBlbmQK KyAgICAgICAgICAgICAgIC0+ICBGb3JlaWduIFNjYW4gb24gZnBhZ2dfdGFiX3AxIHBhZ2dfdGFi XzEKKyAgICAgICAgICAgICAgIC0+ICBGb3JlaWduIFNjYW4gb24gZnBhZ2dfdGFiX3AyIHBhZ2df dGFiXzIKKyAgICAgICAgICAgICAgIC0+ICBGb3JlaWduIFNjYW4gb24gZnBhZ2dfdGFiX3AzIHBh Z2dfdGFiXzMKKyg5IHJvd3MpCiAKIC0tIFBsYW4gd2l0aCBwYXJ0aXRpb253aXNlIGFnZ3JlZ2F0 ZXMgaXMgZW5hYmxlZAogU0VUIGVuYWJsZV9wYXJ0aXRpb253aXNlX2FnZ3JlZ2F0ZSBUTyB0cnVl OwpAQCAtMTAzMjMsMzIgKzEwMzQ0LDM0IEBAIFNFTEVDVCBhLCBzdW0oYiksIG1pbihiKSwgY291 bnQoKikgRlJPTSBwYWdnX3RhYiBHUk9VUCBCWSBhIEhBVklORyBhdmcoYikgPCAyMiBPCiAtLSBT aG91bGQgaGF2ZSBhbGwgdGhlIGNvbHVtbnMgaW4gdGhlIHRhcmdldCBsaXN0IGZvciB0aGUgZ2l2 ZW4gcmVsYXRpb24KIEVYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKIFNFTEVDVCBhLCBjb3Vu dCh0MSkgRlJPTSBwYWdnX3RhYiB0MSBHUk9VUCBCWSBhIEhBVklORyBhdmcoYikgPCAyMiBPUkRF UiBCWSAxOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQ TEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gTWVyZ2UgQXBwZW5kCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU29y dAorICAgT3V0cHV0OiB0MS5hLCAoY291bnQoKCh0MS4qKTo6cGFnZ190YWIpKSkKICAgIFNvcnQg S2V5OiB0MS5hCi0gICAtPiAgR3JvdXBBZ2dyZWdhdGUKLSAgICAgICAgIE91dHB1dDogdDEuYSwg Y291bnQoKCh0MS4qKTo6cGFnZ190YWIpKQotICAgICAgICAgR3JvdXAgS2V5OiB0MS5hCi0gICAg ICAgICBGaWx0ZXI6IChhdmcodDEuYikgPCAnMjInOjpudW1lcmljKQotICAgICAgICAgLT4gIEZv cmVpZ24gU2NhbiBvbiBwdWJsaWMuZnBhZ2dfdGFiX3AxIHQxCi0gICAgICAgICAgICAgICBPdXRw dXQ6IHQxLmEsIHQxLiosIHQxLmIKLSAgICAgICAgICAgICAgIFJlbW90ZSBTUUw6IFNFTEVDVCBh LCBiLCBjIEZST00gcHVibGljLnBhZ2dfdGFiX3AxIE9SREVSIEJZIGEgQVNDIE5VTExTIExBU1QK LSAgIC0+ICBHcm91cEFnZ3JlZ2F0ZQotICAgICAgICAgT3V0cHV0OiB0MV8xLmEsIGNvdW50KCgo dDFfMS4qKTo6cGFnZ190YWIpKQotICAgICAgICAgR3JvdXAgS2V5OiB0MV8xLmEKLSAgICAgICAg IEZpbHRlcjogKGF2Zyh0MV8xLmIpIDwgJzIyJzo6bnVtZXJpYykKLSAgICAgICAgIC0+ICBGb3Jl aWduIFNjYW4gb24gcHVibGljLmZwYWdnX3RhYl9wMiB0MV8xCi0gICAgICAgICAgICAgICBPdXRw dXQ6IHQxXzEuYSwgdDFfMS4qLCB0MV8xLmIKLSAgICAgICAgICAgICAgIFJlbW90ZSBTUUw6IFNF TEVDVCBhLCBiLCBjIEZST00gcHVibGljLnBhZ2dfdGFiX3AyIE9SREVSIEJZIGEgQVNDIE5VTExT IExBU1QKLSAgIC0+ICBHcm91cEFnZ3JlZ2F0ZQotICAgICAgICAgT3V0cHV0OiB0MV8yLmEsIGNv dW50KCgodDFfMi4qKTo6cGFnZ190YWIpKQotICAgICAgICAgR3JvdXAgS2V5OiB0MV8yLmEKLSAg ICAgICAgIEZpbHRlcjogKGF2Zyh0MV8yLmIpIDwgJzIyJzo6bnVtZXJpYykKLSAgICAgICAgIC0+ ICBGb3JlaWduIFNjYW4gb24gcHVibGljLmZwYWdnX3RhYl9wMyB0MV8yCi0gICAgICAgICAgICAg ICBPdXRwdXQ6IHQxXzIuYSwgdDFfMi4qLCB0MV8yLmIKLSAgICAgICAgICAgICAgIFJlbW90ZSBT UUw6IFNFTEVDVCBhLCBiLCBjIEZST00gcHVibGljLnBhZ2dfdGFiX3AzIE9SREVSIEJZIGEgQVND IE5VTExTIExBU1QKLSgyMyByb3dzKQorICAgLT4gIEFwcGVuZAorICAgICAgICAgLT4gIEhhc2hB Z2dyZWdhdGUKKyAgICAgICAgICAgICAgIE91dHB1dDogdDEuYSwgY291bnQoKCh0MS4qKTo6cGFn Z190YWIpKQorICAgICAgICAgICAgICAgR3JvdXAgS2V5OiB0MS5hCisgICAgICAgICAgICAgICBG aWx0ZXI6IChhdmcodDEuYikgPCAnMjInOjpudW1lcmljKQorICAgICAgICAgICAgICAgLT4gIEZv cmVpZ24gU2NhbiBvbiBwdWJsaWMuZnBhZ2dfdGFiX3AxIHQxCisgICAgICAgICAgICAgICAgICAg ICBPdXRwdXQ6IHQxLmEsIHQxLiosIHQxLmIKKyAgICAgICAgICAgICAgICAgICAgIFJlbW90ZSBT UUw6IFNFTEVDVCBhLCBiLCBjLCBjX3NlcmlhbCwgY19pbnQ0YXJyYXksIGNfaW50ZXJ2YWwsIGNf bW9uZXksIGNfMWMsIGNfMWIsIGNfYml0LCBjXzFvcjNpbnQyLCBjXzFvcjNpbnQ0LCBjXzFvcjNp bnQ4LCBjX2Jvb2wsIGNfZW51bSwgY19wZ19sc24sIGNfdGlkLCBjX2ludDRyYW5nZSwgY19pbnQ0 bXVsdGlyYW5nZSwgY190aW1lLCBjX3RpbWV0eiwgY190aW1lc3RhbXAsIGNfdGltZXN0YW1wdHos IGNfeGlkOCBGUk9NIHB1YmxpYy5wYWdnX3RhYl9wMQorICAgICAgICAgLT4gIEhhc2hBZ2dyZWdh dGUKKyAgICAgICAgICAgICAgIE91dHB1dDogdDFfMS5hLCBjb3VudCgoKHQxXzEuKik6OnBhZ2df dGFiKSkKKyAgICAgICAgICAgICAgIEdyb3VwIEtleTogdDFfMS5hCisgICAgICAgICAgICAgICBG aWx0ZXI6IChhdmcodDFfMS5iKSA8ICcyMic6Om51bWVyaWMpCisgICAgICAgICAgICAgICAtPiAg Rm9yZWlnbiBTY2FuIG9uIHB1YmxpYy5mcGFnZ190YWJfcDIgdDFfMQorICAgICAgICAgICAgICAg ICAgICAgT3V0cHV0OiB0MV8xLmEsIHQxXzEuKiwgdDFfMS5iCisgICAgICAgICAgICAgICAgICAg ICBSZW1vdGUgU1FMOiBTRUxFQ1QgYSwgYiwgYywgY19zZXJpYWwsIGNfaW50NGFycmF5LCBjX2lu dGVydmFsLCBjX21vbmV5LCBjXzFjLCBjXzFiLCBjX2JpdCwgY18xb3IzaW50MiwgY18xb3IzaW50 NCwgY18xb3IzaW50OCwgY19ib29sLCBjX2VudW0sIGNfcGdfbHNuLCBjX3RpZCwgY19pbnQ0cmFu Z2UsIGNfaW50NG11bHRpcmFuZ2UsIGNfdGltZSwgY190aW1ldHosIGNfdGltZXN0YW1wLCBjX3Rp bWVzdGFtcHR6LCBjX3hpZDggRlJPTSBwdWJsaWMucGFnZ190YWJfcDIKKyAgICAgICAgIC0+ICBI YXNoQWdncmVnYXRlCisgICAgICAgICAgICAgICBPdXRwdXQ6IHQxXzIuYSwgY291bnQoKCh0MV8y LiopOjpwYWdnX3RhYikpCisgICAgICAgICAgICAgICBHcm91cCBLZXk6IHQxXzIuYQorICAgICAg ICAgICAgICAgRmlsdGVyOiAoYXZnKHQxXzIuYikgPCAnMjInOjpudW1lcmljKQorICAgICAgICAg ICAgICAgLT4gIEZvcmVpZ24gU2NhbiBvbiBwdWJsaWMuZnBhZ2dfdGFiX3AzIHQxXzIKKyAgICAg ICAgICAgICAgICAgICAgIE91dHB1dDogdDFfMi5hLCB0MV8yLiosIHQxXzIuYgorICAgICAgICAg ICAgICAgICAgICAgUmVtb3RlIFNRTDogU0VMRUNUIGEsIGIsIGMsIGNfc2VyaWFsLCBjX2ludDRh cnJheSwgY19pbnRlcnZhbCwgY19tb25leSwgY18xYywgY18xYiwgY19iaXQsIGNfMW9yM2ludDIs IGNfMW9yM2ludDQsIGNfMW9yM2ludDgsIGNfYm9vbCwgY19lbnVtLCBjX3BnX2xzbiwgY190aWQs IGNfaW50NHJhbmdlLCBjX2ludDRtdWx0aXJhbmdlLCBjX3RpbWUsIGNfdGltZXR6LCBjX3RpbWVz dGFtcCwgY190aW1lc3RhbXB0eiwgY194aWQ4IEZST00gcHVibGljLnBhZ2dfdGFiX3AzCisoMjUg cm93cykKIAogU0VMRUNUIGEsIGNvdW50KHQxKSBGUk9NIHBhZ2dfdGFiIHQxIEdST1VQIEJZIGEg SEFWSU5HIGF2ZyhiKSA8IDIyIE9SREVSIEJZIDE7CiAgYSAgfCBjb3VudCAKQEAgLTEwMzYxLDI3 ICsxMDM4NCw1MzQgQEAgU0VMRUNUIGEsIGNvdW50KHQxKSBGUk9NIHBhZ2dfdGFiIHQxIEdST1VQ IEJZIGEgSEFWSU5HIGF2ZyhiKSA8IDIyIE9SREVSIEJZIDE7CiAgMjEgfCAgIDEwMAogKDYgcm93 cykKIAotLS0gV2hlbiBHUk9VUCBCWSBjbGF1c2UgZG9lcyBub3QgbWF0Y2ggd2l0aCBQQVJUSVRJ T04gS0VZLgotRVhQTEFJTiAoQ09TVFMgT0ZGKQorLS0gUGFydGlhbCBhZ2dyZWdhdGVzIGFyZSBz YWZlIHRvIHB1c2ggZG93biB3aGVuIHRoZXJlIGlzIGEgSEFWSU5HIGNsYXVzZQorRVhQTEFJTiAo VkVSQk9TRSwgQ09TVFMgT0ZGKQogU0VMRUNUIGIsIGF2ZyhhKSwgbWF4KGEpLCBjb3VudCgqKSBG Uk9NIHBhZ2dfdGFiIEdST1VQIEJZIGIgSEFWSU5HIHN1bShhKSA8IDcwMCBPUkRFUiBCWSAxOwot ICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAgICAgICAgICAgICAgICAg ICAKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgU29ydAorICAgT3V0 cHV0OiBwYWdnX3RhYi5iLCAoYXZnKHBhZ2dfdGFiLmEpKSwgKG1heChwYWdnX3RhYi5hKSksIChj b3VudCgqKSkKKyAgIFNvcnQgS2V5OiBwYWdnX3RhYi5iCisgICAtPiAgRmluYWxpemUgSGFzaEFn Z3JlZ2F0ZQorICAgICAgICAgT3V0cHV0OiBwYWdnX3RhYi5iLCBhdmcocGFnZ190YWIuYSksIG1h eChwYWdnX3RhYi5hKSwgY291bnQoKikKKyAgICAgICAgIEdyb3VwIEtleTogcGFnZ190YWIuYgor ICAgICAgICAgRmlsdGVyOiAoc3VtKHBhZ2dfdGFiLmEpIDwgNzAwKQorICAgICAgICAgLT4gIEFw cGVuZAorICAgICAgICAgICAgICAgLT4gIEZvcmVpZ24gU2NhbgorICAgICAgICAgICAgICAgICAg ICAgT3V0cHV0OiBwYWdnX3RhYi5iLCAoUEFSVElBTCBhdmcocGFnZ190YWIuYSkpLCAoUEFSVElB TCBtYXgocGFnZ190YWIuYSkpLCAoUEFSVElBTCBjb3VudCgqKSksIChQQVJUSUFMIHN1bShwYWdn X3RhYi5hKSkKKyAgICAgICAgICAgICAgICAgICAgIFJlbGF0aW9uczogQWdncmVnYXRlIG9uIChw dWJsaWMuZnBhZ2dfdGFiX3AxIHBhZ2dfdGFiKQorICAgICAgICAgICAgICAgICAgICAgUmVtb3Rl IFNRTDogU0VMRUNUIGIsIGF2ZyhhKSBQQVJUSUFMX0FHR1JFR0FURSAsIG1heChhKSBQQVJUSUFM X0FHR1JFR0FURSAsIGNvdW50KCopIFBBUlRJQUxfQUdHUkVHQVRFICwgc3VtKGEpIFBBUlRJQUxf QUdHUkVHQVRFICBGUk9NIHB1YmxpYy5wYWdnX3RhYl9wMSBHUk9VUCBCWSAxCisgICAgICAgICAg ICAgICAtPiAgRm9yZWlnbiBTY2FuCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHBhZ2df dGFiXzEuYiwgKFBBUlRJQUwgYXZnKHBhZ2dfdGFiXzEuYSkpLCAoUEFSVElBTCBtYXgocGFnZ190 YWJfMS5hKSksIChQQVJUSUFMIGNvdW50KCopKSwgKFBBUlRJQUwgc3VtKHBhZ2dfdGFiXzEuYSkp CisgICAgICAgICAgICAgICAgICAgICBSZWxhdGlvbnM6IEFnZ3JlZ2F0ZSBvbiAocHVibGljLmZw YWdnX3RhYl9wMiBwYWdnX3RhYl8xKQorICAgICAgICAgICAgICAgICAgICAgUmVtb3RlIFNRTDog U0VMRUNUIGIsIGF2ZyhhKSBQQVJUSUFMX0FHR1JFR0FURSAsIG1heChhKSBQQVJUSUFMX0FHR1JF R0FURSAsIGNvdW50KCopIFBBUlRJQUxfQUdHUkVHQVRFICwgc3VtKGEpIFBBUlRJQUxfQUdHUkVH QVRFICBGUk9NIHB1YmxpYy5wYWdnX3RhYl9wMiBHUk9VUCBCWSAxCisgICAgICAgICAgICAgICAt PiAgRm9yZWlnbiBTY2FuCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHBhZ2dfdGFiXzIu YiwgKFBBUlRJQUwgYXZnKHBhZ2dfdGFiXzIuYSkpLCAoUEFSVElBTCBtYXgocGFnZ190YWJfMi5h KSksIChQQVJUSUFMIGNvdW50KCopKSwgKFBBUlRJQUwgc3VtKHBhZ2dfdGFiXzIuYSkpCisgICAg ICAgICAgICAgICAgICAgICBSZWxhdGlvbnM6IEFnZ3JlZ2F0ZSBvbiAocHVibGljLmZwYWdnX3Rh Yl9wMyBwYWdnX3RhYl8yKQorICAgICAgICAgICAgICAgICAgICAgUmVtb3RlIFNRTDogU0VMRUNU IGIsIGF2ZyhhKSBQQVJUSUFMX0FHR1JFR0FURSAsIG1heChhKSBQQVJUSUFMX0FHR1JFR0FURSAs IGNvdW50KCopIFBBUlRJQUxfQUdHUkVHQVRFICwgc3VtKGEpIFBBUlRJQUxfQUdHUkVHQVRFICBG Uk9NIHB1YmxpYy5wYWdnX3RhYl9wMyBHUk9VUCBCWSAxCisoMjAgcm93cykKKworU0VMRUNUIGIs IGF2ZyhhKSwgbWF4KGEpLCBjb3VudCgqKSBGUk9NIHBhZ2dfdGFiIEdST1VQIEJZIGIgSEFWSU5H IHN1bShhKSA8IDcwMCBPUkRFUiBCWSAxOworIGIgIHwgICAgICAgICBhdmcgICAgICAgICB8IG1h eCB8IGNvdW50IAorLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0rLS0tLS0tLQorICAw IHwgMTAuMDAwMDAwMDAwMDAwMDAwMCB8ICAyMCB8ICAgIDYwCisgIDEgfCAxMS4wMDAwMDAwMDAw MDAwMDAwIHwgIDIxIHwgICAgNjAKKyAxMCB8IDEwLjAwMDAwMDAwMDAwMDAwMDAgfCAgMjAgfCAg ICA2MAorIDExIHwgMTEuMDAwMDAwMDAwMDAwMDAwMCB8ICAyMSB8ICAgIDYwCisgMjAgfCAxMC4w MDAwMDAwMDAwMDAwMDAwIHwgIDIwIHwgICAgNjAKKyAyMSB8IDExLjAwMDAwMDAwMDAwMDAwMDAg fCAgMjEgfCAgICA2MAorIDMwIHwgMTAuMDAwMDAwMDAwMDAwMDAwMCB8ICAyMCB8ICAgIDYwCisg MzEgfCAxMS4wMDAwMDAwMDAwMDAwMDAwIHwgIDIxIHwgICAgNjAKKyA0MCB8IDEwLjAwMDAwMDAw MDAwMDAwMDAgfCAgMjAgfCAgICA2MAorIDQxIHwgMTEuMDAwMDAwMDAwMDAwMDAwMCB8ICAyMSB8 ICAgIDYwCisoMTAgcm93cykKKworLS0gUGFydGlhbCBhZ2dyZWdhdGVzIGFyZSBzYWZlIHRvIHB1 c2ggZG93biB3aXRob3V0IGhhdmluZyBjbGF1c2UKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9G RikKK1NFTEVDVCBiLCBhdmcoYSksIG1heChhKSwgY291bnQoKikgRlJPTSBwYWdnX3RhYiBHUk9V UCBCWSBiIE9SREVSIEJZIDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgU29ydAorICAgT3V0cHV0OiBwYWdnX3RhYi5iLCAoYXZnKHBhZ2dfdGFiLmEpKSwgKG1heChw YWdnX3RhYi5hKSksIChjb3VudCgqKSkKKyAgIFNvcnQgS2V5OiBwYWdnX3RhYi5iCisgICAtPiAg RmluYWxpemUgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgT3V0cHV0OiBwYWdnX3RhYi5iLCBhdmco cGFnZ190YWIuYSksIG1heChwYWdnX3RhYi5hKSwgY291bnQoKikKKyAgICAgICAgIEdyb3VwIEtl eTogcGFnZ190YWIuYgorICAgICAgICAgLT4gIEFwcGVuZAorICAgICAgICAgICAgICAgLT4gIEZv cmVpZ24gU2NhbgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiBwYWdnX3RhYi5iLCAoUEFS VElBTCBhdmcocGFnZ190YWIuYSkpLCAoUEFSVElBTCBtYXgocGFnZ190YWIuYSkpLCAoUEFSVElB TCBjb3VudCgqKSkKKyAgICAgICAgICAgICAgICAgICAgIFJlbGF0aW9uczogQWdncmVnYXRlIG9u IChwdWJsaWMuZnBhZ2dfdGFiX3AxIHBhZ2dfdGFiKQorICAgICAgICAgICAgICAgICAgICAgUmVt b3RlIFNRTDogU0VMRUNUIGIsIGF2ZyhhKSBQQVJUSUFMX0FHR1JFR0FURSAsIG1heChhKSBQQVJU SUFMX0FHR1JFR0FURSAsIGNvdW50KCopIFBBUlRJQUxfQUdHUkVHQVRFICBGUk9NIHB1YmxpYy5w YWdnX3RhYl9wMSBHUk9VUCBCWSAxCisgICAgICAgICAgICAgICAtPiAgRm9yZWlnbiBTY2FuCisg ICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHBhZ2dfdGFiXzEuYiwgKFBBUlRJQUwgYXZnKHBh Z2dfdGFiXzEuYSkpLCAoUEFSVElBTCBtYXgocGFnZ190YWJfMS5hKSksIChQQVJUSUFMIGNvdW50 KCopKQorICAgICAgICAgICAgICAgICAgICAgUmVsYXRpb25zOiBBZ2dyZWdhdGUgb24gKHB1Ymxp Yy5mcGFnZ190YWJfcDIgcGFnZ190YWJfMSkKKyAgICAgICAgICAgICAgICAgICAgIFJlbW90ZSBT UUw6IFNFTEVDVCBiLCBhdmcoYSkgUEFSVElBTF9BR0dSRUdBVEUgLCBtYXgoYSkgUEFSVElBTF9B R0dSRUdBVEUgLCBjb3VudCgqKSBQQVJUSUFMX0FHR1JFR0FURSAgRlJPTSBwdWJsaWMucGFnZ190 YWJfcDIgR1JPVVAgQlkgMQorICAgICAgICAgICAgICAgLT4gIEZvcmVpZ24gU2NhbgorICAgICAg ICAgICAgICAgICAgICAgT3V0cHV0OiBwYWdnX3RhYl8yLmIsIChQQVJUSUFMIGF2ZyhwYWdnX3Rh Yl8yLmEpKSwgKFBBUlRJQUwgbWF4KHBhZ2dfdGFiXzIuYSkpLCAoUEFSVElBTCBjb3VudCgqKSkK KyAgICAgICAgICAgICAgICAgICAgIFJlbGF0aW9uczogQWdncmVnYXRlIG9uIChwdWJsaWMuZnBh Z2dfdGFiX3AzIHBhZ2dfdGFiXzIpCisgICAgICAgICAgICAgICAgICAgICBSZW1vdGUgU1FMOiBT RUxFQ1QgYiwgYXZnKGEpIFBBUlRJQUxfQUdHUkVHQVRFICwgbWF4KGEpIFBBUlRJQUxfQUdHUkVH QVRFICwgY291bnQoKikgUEFSVElBTF9BR0dSRUdBVEUgIEZST00gcHVibGljLnBhZ2dfdGFiX3Az IEdST1VQIEJZIDEKKygxOSByb3dzKQorCitTRUxFQ1QgYiwgYXZnKGEpLCBtYXgoYSksIGNvdW50 KCopIEZST00gcGFnZ190YWIgR1JPVVAgQlkgYiBPUkRFUiBCWSAxOworIGIgIHwgICAgICAgICBh dmcgICAgICAgICB8IG1heCB8IGNvdW50IAorLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0t LS0rLS0tLS0tLQorICAwIHwgMTAuMDAwMDAwMDAwMDAwMDAwMCB8ICAyMCB8ICAgIDYwCisgIDEg fCAxMS4wMDAwMDAwMDAwMDAwMDAwIHwgIDIxIHwgICAgNjAKKyAgMiB8IDEyLjAwMDAwMDAwMDAw MDAwMDAgfCAgMjIgfCAgICA2MAorICAzIHwgMTMuMDAwMDAwMDAwMDAwMDAwMCB8ICAyMyB8ICAg IDYwCisgIDQgfCAxNC4wMDAwMDAwMDAwMDAwMDAwIHwgIDI0IHwgICAgNjAKKyAgNSB8IDE1LjAw MDAwMDAwMDAwMDAwMDAgfCAgMjUgfCAgICA2MAorICA2IHwgMTYuMDAwMDAwMDAwMDAwMDAwMCB8 ICAyNiB8ICAgIDYwCisgIDcgfCAxNy4wMDAwMDAwMDAwMDAwMDAwIHwgIDI3IHwgICAgNjAKKyAg OCB8IDE4LjAwMDAwMDAwMDAwMDAwMDAgfCAgMjggfCAgICA2MAorICA5IHwgMTkuMDAwMDAwMDAw MDAwMDAwMCB8ICAyOSB8ICAgIDYwCisgMTAgfCAxMC4wMDAwMDAwMDAwMDAwMDAwIHwgIDIwIHwg ICAgNjAKKyAxMSB8IDExLjAwMDAwMDAwMDAwMDAwMDAgfCAgMjEgfCAgICA2MAorIDEyIHwgMTIu MDAwMDAwMDAwMDAwMDAwMCB8ICAyMiB8ICAgIDYwCisgMTMgfCAxMy4wMDAwMDAwMDAwMDAwMDAw IHwgIDIzIHwgICAgNjAKKyAxNCB8IDE0LjAwMDAwMDAwMDAwMDAwMDAgfCAgMjQgfCAgICA2MAor IDE1IHwgMTUuMDAwMDAwMDAwMDAwMDAwMCB8ICAyNSB8ICAgIDYwCisgMTYgfCAxNi4wMDAwMDAw MDAwMDAwMDAwIHwgIDI2IHwgICAgNjAKKyAxNyB8IDE3LjAwMDAwMDAwMDAwMDAwMDAgfCAgMjcg fCAgICA2MAorIDE4IHwgMTguMDAwMDAwMDAwMDAwMDAwMCB8ICAyOCB8ICAgIDYwCisgMTkgfCAx OS4wMDAwMDAwMDAwMDAwMDAwIHwgIDI5IHwgICAgNjAKKyAyMCB8IDEwLjAwMDAwMDAwMDAwMDAw MDAgfCAgMjAgfCAgICA2MAorIDIxIHwgMTEuMDAwMDAwMDAwMDAwMDAwMCB8ICAyMSB8ICAgIDYw CisgMjIgfCAxMi4wMDAwMDAwMDAwMDAwMDAwIHwgIDIyIHwgICAgNjAKKyAyMyB8IDEzLjAwMDAw MDAwMDAwMDAwMDAgfCAgMjMgfCAgICA2MAorIDI0IHwgMTQuMDAwMDAwMDAwMDAwMDAwMCB8ICAy NCB8ICAgIDYwCisgMjUgfCAxNS4wMDAwMDAwMDAwMDAwMDAwIHwgIDI1IHwgICAgNjAKKyAyNiB8 IDE2LjAwMDAwMDAwMDAwMDAwMDAgfCAgMjYgfCAgICA2MAorIDI3IHwgMTcuMDAwMDAwMDAwMDAw MDAwMCB8ICAyNyB8ICAgIDYwCisgMjggfCAxOC4wMDAwMDAwMDAwMDAwMDAwIHwgIDI4IHwgICAg NjAKKyAyOSB8IDE5LjAwMDAwMDAwMDAwMDAwMDAgfCAgMjkgfCAgICA2MAorIDMwIHwgMTAuMDAw MDAwMDAwMDAwMDAwMCB8ICAyMCB8ICAgIDYwCisgMzEgfCAxMS4wMDAwMDAwMDAwMDAwMDAwIHwg IDIxIHwgICAgNjAKKyAzMiB8IDEyLjAwMDAwMDAwMDAwMDAwMDAgfCAgMjIgfCAgICA2MAorIDMz IHwgMTMuMDAwMDAwMDAwMDAwMDAwMCB8ICAyMyB8ICAgIDYwCisgMzQgfCAxNC4wMDAwMDAwMDAw MDAwMDAwIHwgIDI0IHwgICAgNjAKKyAzNSB8IDE1LjAwMDAwMDAwMDAwMDAwMDAgfCAgMjUgfCAg ICA2MAorIDM2IHwgMTYuMDAwMDAwMDAwMDAwMDAwMCB8ICAyNiB8ICAgIDYwCisgMzcgfCAxNy4w MDAwMDAwMDAwMDAwMDAwIHwgIDI3IHwgICAgNjAKKyAzOCB8IDE4LjAwMDAwMDAwMDAwMDAwMDAg fCAgMjggfCAgICA2MAorIDM5IHwgMTkuMDAwMDAwMDAwMDAwMDAwMCB8ICAyOSB8ICAgIDYwCisg NDAgfCAxMC4wMDAwMDAwMDAwMDAwMDAwIHwgIDIwIHwgICAgNjAKKyA0MSB8IDExLjAwMDAwMDAw MDAwMDAwMDAgfCAgMjEgfCAgICA2MAorIDQyIHwgMTIuMDAwMDAwMDAwMDAwMDAwMCB8ICAyMiB8 ICAgIDYwCisgNDMgfCAxMy4wMDAwMDAwMDAwMDAwMDAwIHwgIDIzIHwgICAgNjAKKyA0NCB8IDE0 LjAwMDAwMDAwMDAwMDAwMDAgfCAgMjQgfCAgICA2MAorIDQ1IHwgMTUuMDAwMDAwMDAwMDAwMDAw MCB8ICAyNSB8ICAgIDYwCisgNDYgfCAxNi4wMDAwMDAwMDAwMDAwMDAwIHwgIDI2IHwgICAgNjAK KyA0NyB8IDE3LjAwMDAwMDAwMDAwMDAwMDAgfCAgMjcgfCAgICA2MAorIDQ4IHwgMTguMDAwMDAw MDAwMDAwMDAwMCB8ICAyOCB8ICAgIDYwCisgNDkgfCAxOS4wMDAwMDAwMDAwMDAwMDAwIHwgIDI5 IHwgICAgNjAKKyg1MCByb3dzKQorCistLSBQYXJ0aWFsIGFnZ3JlZ2F0ZXMgYXJlIHNhZmUgdG8g cHVzaCBkb3duIGV2ZW4gaWYgd2UgbmVlZCBib3RoIHZhcmlhYmxlIGFuZCB2YXJpYWJsZS1iYXNl ZCBleHByZXNzaW9uCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QgYXZnKGEp LCBtYXgoYSksIGNvdW50KCopLCAoYi8yKTo6bnVtZXJpYyBGUk9NIHBhZ2dfdGFiIEdST1VQIEJZ IGIvMiBPUkRFUiBCWSA0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIFNvcnQKKyAgIE91dHB1dDogKGF2ZyhwYWdnX3RhYi5h KSksIChtYXgocGFnZ190YWIuYSkpLCAoY291bnQoKikpLCAoKCgocGFnZ190YWIuYiAvIDIpKSk6 Om51bWVyaWMpLCAoKHBhZ2dfdGFiLmIgLyAyKSkKKyAgIFNvcnQgS2V5OiAoKCgocGFnZ190YWIu YiAvIDIpKSk6Om51bWVyaWMpCisgICAtPiAgRmluYWxpemUgSGFzaEFnZ3JlZ2F0ZQorICAgICAg ICAgT3V0cHV0OiBhdmcocGFnZ190YWIuYSksIG1heChwYWdnX3RhYi5hKSwgY291bnQoKiksICgo KHBhZ2dfdGFiLmIgLyAyKSkpOjpudW1lcmljLCAoKHBhZ2dfdGFiLmIgLyAyKSkKKyAgICAgICAg IEdyb3VwIEtleTogKChwYWdnX3RhYi5iIC8gMikpCisgICAgICAgICAtPiAgQXBwZW5kCisgICAg ICAgICAgICAgICAtPiAgRm9yZWlnbiBTY2FuCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6 ICgocGFnZ190YWIuYiAvIDIpKSwgKFBBUlRJQUwgYXZnKHBhZ2dfdGFiLmEpKSwgKFBBUlRJQUwg bWF4KHBhZ2dfdGFiLmEpKSwgKFBBUlRJQUwgY291bnQoKikpLCBwYWdnX3RhYi5iCisgICAgICAg ICAgICAgICAgICAgICBSZWxhdGlvbnM6IEFnZ3JlZ2F0ZSBvbiAocHVibGljLmZwYWdnX3RhYl9w MSBwYWdnX3RhYikKKyAgICAgICAgICAgICAgICAgICAgIFJlbW90ZSBTUUw6IFNFTEVDVCAoYiAv IDIpLCBiLCBhdmcoYSkgUEFSVElBTF9BR0dSRUdBVEUgLCBtYXgoYSkgUEFSVElBTF9BR0dSRUdB VEUgLCBjb3VudCgqKSBQQVJUSUFMX0FHR1JFR0FURSAgRlJPTSBwdWJsaWMucGFnZ190YWJfcDEg R1JPVVAgQlkgMSwgMgorICAgICAgICAgICAgICAgLT4gIEZvcmVpZ24gU2NhbgorICAgICAgICAg ICAgICAgICAgICAgT3V0cHV0OiAoKHBhZ2dfdGFiXzEuYiAvIDIpKSwgKFBBUlRJQUwgYXZnKHBh Z2dfdGFiXzEuYSkpLCAoUEFSVElBTCBtYXgocGFnZ190YWJfMS5hKSksIChQQVJUSUFMIGNvdW50 KCopKSwgcGFnZ190YWJfMS5iCisgICAgICAgICAgICAgICAgICAgICBSZWxhdGlvbnM6IEFnZ3Jl Z2F0ZSBvbiAocHVibGljLmZwYWdnX3RhYl9wMiBwYWdnX3RhYl8xKQorICAgICAgICAgICAgICAg ICAgICAgUmVtb3RlIFNRTDogU0VMRUNUIChiIC8gMiksIGIsIGF2ZyhhKSBQQVJUSUFMX0FHR1JF R0FURSAsIG1heChhKSBQQVJUSUFMX0FHR1JFR0FURSAsIGNvdW50KCopIFBBUlRJQUxfQUdHUkVH QVRFICBGUk9NIHB1YmxpYy5wYWdnX3RhYl9wMiBHUk9VUCBCWSAxLCAyCisgICAgICAgICAgICAg ICAtPiAgRm9yZWlnbiBTY2FuCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6ICgocGFnZ190 YWJfMi5iIC8gMikpLCAoUEFSVElBTCBhdmcocGFnZ190YWJfMi5hKSksIChQQVJUSUFMIG1heChw YWdnX3RhYl8yLmEpKSwgKFBBUlRJQUwgY291bnQoKikpLCBwYWdnX3RhYl8yLmIKKyAgICAgICAg ICAgICAgICAgICAgIFJlbGF0aW9uczogQWdncmVnYXRlIG9uIChwdWJsaWMuZnBhZ2dfdGFiX3Az IHBhZ2dfdGFiXzIpCisgICAgICAgICAgICAgICAgICAgICBSZW1vdGUgU1FMOiBTRUxFQ1QgKGIg LyAyKSwgYiwgYXZnKGEpIFBBUlRJQUxfQUdHUkVHQVRFICwgbWF4KGEpIFBBUlRJQUxfQUdHUkVH QVRFICwgY291bnQoKikgUEFSVElBTF9BR0dSRUdBVEUgIEZST00gcHVibGljLnBhZ2dfdGFiX3Az IEdST1VQIEJZIDEsIDIKKygxOSByb3dzKQorCitTRUxFQ1QgYXZnKGEpLCBtYXgoYSksIGNvdW50 KCopLCAoYi8yKTo6bnVtZXJpYyBGUk9NIHBhZ2dfdGFiIEdST1VQIEJZIGIvMiBPUkRFUiBCWSA0 OworICAgICAgICAgYXZnICAgICAgICAgfCBtYXggfCBjb3VudCB8IG51bWVyaWMgCistLS0tLS0t LS0tLS0tLS0tLS0tLS0rLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0KKyAxMC41MDAwMDAwMDAwMDAw MDAwIHwgIDIxIHwgICAxMjAgfCAgICAgICAwCisgMTIuNTAwMDAwMDAwMDAwMDAwMCB8ICAyMyB8 ICAgMTIwIHwgICAgICAgMQorIDE0LjUwMDAwMDAwMDAwMDAwMDAgfCAgMjUgfCAgIDEyMCB8ICAg ICAgIDIKKyAxNi41MDAwMDAwMDAwMDAwMDAwIHwgIDI3IHwgICAxMjAgfCAgICAgICAzCisgMTgu NTAwMDAwMDAwMDAwMDAwMCB8ICAyOSB8ICAgMTIwIHwgICAgICAgNAorIDEwLjUwMDAwMDAwMDAw MDAwMDAgfCAgMjEgfCAgIDEyMCB8ICAgICAgIDUKKyAxMi41MDAwMDAwMDAwMDAwMDAwIHwgIDIz IHwgICAxMjAgfCAgICAgICA2CisgMTQuNTAwMDAwMDAwMDAwMDAwMCB8ICAyNSB8ICAgMTIwIHwg ICAgICAgNworIDE2LjUwMDAwMDAwMDAwMDAwMDAgfCAgMjcgfCAgIDEyMCB8ICAgICAgIDgKKyAx OC41MDAwMDAwMDAwMDAwMDAwIHwgIDI5IHwgICAxMjAgfCAgICAgICA5CisgMTAuNTAwMDAwMDAw MDAwMDAwMCB8ICAyMSB8ICAgMTIwIHwgICAgICAxMAorIDEyLjUwMDAwMDAwMDAwMDAwMDAgfCAg MjMgfCAgIDEyMCB8ICAgICAgMTEKKyAxNC41MDAwMDAwMDAwMDAwMDAwIHwgIDI1IHwgICAxMjAg fCAgICAgIDEyCisgMTYuNTAwMDAwMDAwMDAwMDAwMCB8ICAyNyB8ICAgMTIwIHwgICAgICAxMwor IDE4LjUwMDAwMDAwMDAwMDAwMDAgfCAgMjkgfCAgIDEyMCB8ICAgICAgMTQKKyAxMC41MDAwMDAw MDAwMDAwMDAwIHwgIDIxIHwgICAxMjAgfCAgICAgIDE1CisgMTIuNTAwMDAwMDAwMDAwMDAwMCB8 ICAyMyB8ICAgMTIwIHwgICAgICAxNgorIDE0LjUwMDAwMDAwMDAwMDAwMDAgfCAgMjUgfCAgIDEy MCB8ICAgICAgMTcKKyAxNi41MDAwMDAwMDAwMDAwMDAwIHwgIDI3IHwgICAxMjAgfCAgICAgIDE4 CisgMTguNTAwMDAwMDAwMDAwMDAwMCB8ICAyOSB8ICAgMTIwIHwgICAgICAxOQorIDEwLjUwMDAw MDAwMDAwMDAwMDAgfCAgMjEgfCAgIDEyMCB8ICAgICAgMjAKKyAxMi41MDAwMDAwMDAwMDAwMDAw IHwgIDIzIHwgICAxMjAgfCAgICAgIDIxCisgMTQuNTAwMDAwMDAwMDAwMDAwMCB8ICAyNSB8ICAg MTIwIHwgICAgICAyMgorIDE2LjUwMDAwMDAwMDAwMDAwMDAgfCAgMjcgfCAgIDEyMCB8ICAgICAg MjMKKyAxOC41MDAwMDAwMDAwMDAwMDAwIHwgIDI5IHwgICAxMjAgfCAgICAgIDI0CisoMjUgcm93 cykKKworLS0gUGFydGlhbCBhZ2dyZWdhdGVzIHB1c2hkb3duIGJlaGF2ZXMgc2FuZSB3aXRoIG5v bi1zaGlwcGVkIGdyb3VwaW5nIGVsZW1lbnRzCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYp CitTRUxFQ1QgYXZnKGEpLCAoYi8yKTo6bnVtZXJpYywgJ3Rlc3QnIHRlc3QgRlJPTSBwYWdnX3Rh YiBHUk9VUCBCWSAzLCBiLzIgT1JERVIgQlkgMSwgMiBMSU1JVCAxMDsKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUVVFUlkgUExBTiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLQorIExpbWl0CisgICBPdXRwdXQ6IChhdmcocGFnZ190YWIuYSkpLCAoKCgocGFnZ190YWIu YiAvIDIpKSk6Om51bWVyaWMpLCAndGVzdCc6OnRleHQsICgocGFnZ190YWIuYiAvIDIpKQorICAg LT4gIFNvcnQKKyAgICAgICAgIE91dHB1dDogKGF2ZyhwYWdnX3RhYi5hKSksICgoKChwYWdnX3Rh Yi5iIC8gMikpKTo6bnVtZXJpYyksICd0ZXN0Jzo6dGV4dCwgKChwYWdnX3RhYi5iIC8gMikpCisg ICAgICAgICBTb3J0IEtleTogKGF2ZyhwYWdnX3RhYi5hKSksICgoKChwYWdnX3RhYi5iIC8gMikp KTo6bnVtZXJpYykKKyAgICAgICAgIC0+ICBGaW5hbGl6ZSBIYXNoQWdncmVnYXRlCisgICAgICAg ICAgICAgICBPdXRwdXQ6IGF2ZyhwYWdnX3RhYi5hKSwgKCgocGFnZ190YWIuYiAvIDIpKSk6Om51 bWVyaWMsICd0ZXN0Jzo6dGV4dCwgKChwYWdnX3RhYi5iIC8gMikpCisgICAgICAgICAgICAgICBH cm91cCBLZXk6ICgocGFnZ190YWIuYiAvIDIpKQorICAgICAgICAgICAgICAgLT4gIEFwcGVuZAor ICAgICAgICAgICAgICAgICAgICAgLT4gIEZvcmVpZ24gU2NhbgorICAgICAgICAgICAgICAgICAg ICAgICAgICAgT3V0cHV0OiAoKHBhZ2dfdGFiLmIgLyAyKSksIChQQVJUSUFMIGF2ZyhwYWdnX3Rh Yi5hKSksIHBhZ2dfdGFiLmIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbGF0aW9uczog QWdncmVnYXRlIG9uIChwdWJsaWMuZnBhZ2dfdGFiX3AxIHBhZ2dfdGFiKQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgUmVtb3RlIFNRTDogU0VMRUNUIChiIC8gMiksIGIsIGF2ZyhhKSBQQVJU SUFMX0FHR1JFR0FURSAgRlJPTSBwdWJsaWMucGFnZ190YWJfcDEgR1JPVVAgQlkgMSwgMgorICAg ICAgICAgICAgICAgICAgICAgLT4gIEZvcmVpZ24gU2NhbgorICAgICAgICAgICAgICAgICAgICAg ICAgICAgT3V0cHV0OiAoKHBhZ2dfdGFiXzEuYiAvIDIpKSwgKFBBUlRJQUwgYXZnKHBhZ2dfdGFi XzEuYSkpLCBwYWdnX3RhYl8xLmIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlbGF0aW9u czogQWdncmVnYXRlIG9uIChwdWJsaWMuZnBhZ2dfdGFiX3AyIHBhZ2dfdGFiXzEpCisgICAgICAg ICAgICAgICAgICAgICAgICAgICBSZW1vdGUgU1FMOiBTRUxFQ1QgKGIgLyAyKSwgYiwgYXZnKGEp IFBBUlRJQUxfQUdHUkVHQVRFICBGUk9NIHB1YmxpYy5wYWdnX3RhYl9wMiBHUk9VUCBCWSAxLCAy CisgICAgICAgICAgICAgICAgICAgICAtPiAgRm9yZWlnbiBTY2FuCisgICAgICAgICAgICAgICAg ICAgICAgICAgICBPdXRwdXQ6ICgocGFnZ190YWJfMi5iIC8gMikpLCAoUEFSVElBTCBhdmcocGFn Z190YWJfMi5hKSksIHBhZ2dfdGFiXzIuYgorICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVs YXRpb25zOiBBZ2dyZWdhdGUgb24gKHB1YmxpYy5mcGFnZ190YWJfcDMgcGFnZ190YWJfMikKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIFJlbW90ZSBTUUw6IFNFTEVDVCAoYiAvIDIpLCBiLCBh dmcoYSkgUEFSVElBTF9BR0dSRUdBVEUgIEZST00gcHVibGljLnBhZ2dfdGFiX3AzIEdST1VQIEJZ IDEsIDIKKygyMSByb3dzKQorCitTRUxFQ1QgYXZnKGEpLCAoYi8yKTo6bnVtZXJpYywgJ3Rlc3Qn IHRlc3QgRlJPTSBwYWdnX3RhYiBHUk9VUCBCWSAzLCBiLzIgT1JERVIgQlkgMSwgMiBMSU1JVCAx MDsKKyAgICAgICAgIGF2ZyAgICAgICAgIHwgbnVtZXJpYyB8IHRlc3QgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLQorIDEwLjUwMDAwMDAwMDAwMDAwMDAgfCAgICAgICAw IHwgdGVzdAorIDEwLjUwMDAwMDAwMDAwMDAwMDAgfCAgICAgICA1IHwgdGVzdAorIDEwLjUwMDAw MDAwMDAwMDAwMDAgfCAgICAgIDEwIHwgdGVzdAorIDEwLjUwMDAwMDAwMDAwMDAwMDAgfCAgICAg IDE1IHwgdGVzdAorIDEwLjUwMDAwMDAwMDAwMDAwMDAgfCAgICAgIDIwIHwgdGVzdAorIDEyLjUw MDAwMDAwMDAwMDAwMDAgfCAgICAgICAxIHwgdGVzdAorIDEyLjUwMDAwMDAwMDAwMDAwMDAgfCAg ICAgICA2IHwgdGVzdAorIDEyLjUwMDAwMDAwMDAwMDAwMDAgfCAgICAgIDExIHwgdGVzdAorIDEy LjUwMDAwMDAwMDAwMDAwMDAgfCAgICAgIDE2IHwgdGVzdAorIDEyLjUwMDAwMDAwMDAwMDAwMDAg fCAgICAgIDIxIHwgdGVzdAorKDEwIHJvd3MpCisKKy0tIFBhcnRpYWwgYWdncmVnYXRlcyBhcmUg c2FmZSB0byBwdXNoIGRvd24gZm9yIGFsbCBidWlsdC1pbiBhZ2dyZWdhdGVzCitFWFBMQUlOIChW RVJCT1NFLCBDT1NUUyBPRkYpCitTRUxFQ1QKKwkvKiBUaGUgY2FzZXMgdGhhdCBkb24ndCByZXF1 aXJlIGltcG9ydCBvciBleHBvcnQgZnVuY3Rpb25zICovCisJYml0X2FuZChjX2JpdCksIGJpdF9h bmQoY18xb3IzaW50MiksIGJpdF9hbmQoY18xb3IzaW50NCksIGJpdF9hbmQoY18xb3IzaW50OCks CisJYml0X29yKGNfYml0KSwgYml0X29yKGNfMW9yM2ludDIpLCBiaXRfb3IoY18xb3IzaW50NCks IGJpdF9vcihjXzFvcjNpbnQ4KSwKKwliaXRfeG9yKGNfYml0KSwgYml0X3hvcihjXzFvcjNpbnQy KSwgYml0X3hvcihjXzFvcjNpbnQ0KSwgYml0X3hvcihjXzFvcjNpbnQ4KSwKKwlib29sX2FuZChj X2Jvb2wpLAorCWJvb2xfb3IoY19ib29sKSwKKwlldmVyeShjX2Jvb2wpLAorCW1heChjXzFjOjpj aGFyKDEpKSwgbWF4KCcyMDAwLTAxLTAxJzo6ZGF0ZSArIGIpLCBtYXgoJzAuMC4wLjAnOjppbmV0 ICsgYiksIG1heChiOjpmbG9hdDQpLCBtYXgoYjo6ZmxvYXQ4KSwgbWF4KGI6OmludDIpLCBtYXgo Yjo6aW50NCksIG1heChiOjppbnQ4KSwgbWF4KGNfaW50ZXJ2YWwpLCBtYXgoY19tb25leSksIG1h eChiOjpudW1lcmljKSwgbWF4KGI6Om9pZCksIG1heChjX3BnX2xzbiksIG1heChjX3RpZCksIG1h eChjXzFjKSwgbWF4KGNfdGltZSksIG1heChjX3RpbWV0eiksIG1heChjX3RpbWVzdGFtcCksIG1h eChjX3RpbWVzdGFtcHR6KSwgbWF4KGNfMWIpLCBtYXgoY194aWQ4KSwKKwltaW4oY18xYzo6Y2hh cigxKSksIG1pbignMjAwMC0wMS0wMSc6OmRhdGUgKyBiKSwgbWluKCcwLjAuMC4wJzo6aW5ldCAr IGIpLCBtaW4oYjo6ZmxvYXQ0KSwgbWluKGI6OmZsb2F0OCksIG1pbihiOjppbnQyKSwgbWluKGI6 OmludDQpLCBtaW4oYjo6aW50OCksIG1pbihjX2ludGVydmFsKSwgbWluKGNfbW9uZXkpLCBtaW4o Yjo6bnVtZXJpYyksIG1pbihiOjpvaWQpLCBtaW4oY19wZ19sc24pLCBtaW4oY190aWQpLCBtaW4o Y18xYyksIG1pbihjX3RpbWUpLCBtaW4oY190aW1ldHopLCBtaW4oY190aW1lc3RhbXApLCBtaW4o Y190aW1lc3RhbXB0eiksIG1heChjXzFiKSwgbWluKGNfeGlkOCksCisJYXZnKGI6OmludDQpCisg IEZST00gcGFnZ190YWIgV0hFUkUgY19zZXJpYWwgYmV0d2VlbiAxIGFuZCAzMDsKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0KKyBGaW5hbGl6ZSBBZ2dyZWdhdGUKKyAgIE91dHB1dDogYml0X2FuZChwYWdnX3RhYi5j X2JpdCksIGJpdF9hbmQocGFnZ190YWIuY18xb3IzaW50MiksIGJpdF9hbmQocGFnZ190YWIuY18x b3IzaW50NCksIGJpdF9hbmQocGFnZ190YWIuY18xb3IzaW50OCksIGJpdF9vcihwYWdnX3RhYi5j X2JpdCksIGJpdF9vcihwYWdnX3RhYi5jXzFvcjNpbnQyKSwgYml0X29yKHBhZ2dfdGFiLmNfMW9y M2ludDQpLCBiaXRfb3IocGFnZ190YWIuY18xb3IzaW50OCksIGJpdF94b3IocGFnZ190YWIuY19i aXQpLCBiaXRfeG9yKHBhZ2dfdGFiLmNfMW9yM2ludDIpLCBiaXRfeG9yKHBhZ2dfdGFiLmNfMW9y M2ludDQpLCBiaXRfeG9yKHBhZ2dfdGFiLmNfMW9yM2ludDgpLCBib29sX2FuZChwYWdnX3RhYi5j X2Jvb2wpLCBib29sX29yKHBhZ2dfdGFiLmNfYm9vbCksIGV2ZXJ5KHBhZ2dfdGFiLmNfYm9vbCks IG1heCgocGFnZ190YWIuY18xYyk6OmNoYXJhY3RlcigxKSksIG1heCgoJzAxLTAxLTIwMDAnOjpk YXRlICsgcGFnZ190YWIuYikpLCBtYXgoKCcwLjAuMC4wJzo6aW5ldCArIChwYWdnX3RhYi5iKTo6 YmlnaW50KSksIG1heCgocGFnZ190YWIuYik6OnJlYWwpLCBtYXgoKHBhZ2dfdGFiLmIpOjpkb3Vi bGUgcHJlY2lzaW9uKSwgbWF4KChwYWdnX3RhYi5iKTo6c21hbGxpbnQpLCBtYXgocGFnZ190YWIu YiksIG1heCgocGFnZ190YWIuYik6OmJpZ2ludCksIG1heChwYWdnX3RhYi5jX2ludGVydmFsKSwg bWF4KHBhZ2dfdGFiLmNfbW9uZXkpLCBtYXgoKHBhZ2dfdGFiLmIpOjpudW1lcmljKSwgbWF4KChw YWdnX3RhYi5iKTo6b2lkKSwgbWF4KHBhZ2dfdGFiLmNfcGdfbHNuKSwgbWF4KHBhZ2dfdGFiLmNf dGlkKSwgbWF4KHBhZ2dfdGFiLmNfMWMpLCBtYXgocGFnZ190YWIuY190aW1lKSwgbWF4KHBhZ2df dGFiLmNfdGltZXR6KSwgbWF4KHBhZ2dfdGFiLmNfdGltZXN0YW1wKSwgbWF4KHBhZ2dfdGFiLmNf dGltZXN0YW1wdHopLCBtYXgocGFnZ190YWIuY18xYiksIG1heChwYWdnX3RhYi5jX3hpZDgpLCBt aW4oKHBhZ2dfdGFiLmNfMWMpOjpjaGFyYWN0ZXIoMSkpLCBtaW4oKCcwMS0wMS0yMDAwJzo6ZGF0 ZSArIHBhZ2dfdGFiLmIpKSwgbWluKCgnMC4wLjAuMCc6OmluZXQgKyAocGFnZ190YWIuYik6OmJp Z2ludCkpLCBtaW4oKHBhZ2dfdGFiLmIpOjpyZWFsKSwgbWluKChwYWdnX3RhYi5iKTo6ZG91Ymxl IHByZWNpc2lvbiksIG1pbigocGFnZ190YWIuYik6OnNtYWxsaW50KSwgbWluKHBhZ2dfdGFiLmIp LCBtaW4oKHBhZ2dfdGFiLmIpOjpiaWdpbnQpLCBtaW4ocGFnZ190YWIuY19pbnRlcnZhbCksIG1p bihwYWdnX3RhYi5jX21vbmV5KSwgbWluKChwYWdnX3RhYi5iKTo6bnVtZXJpYyksIG1pbigocGFn Z190YWIuYik6Om9pZCksIG1pbihwYWdnX3RhYi5jX3BnX2xzbiksIG1pbihwYWdnX3RhYi5jX3Rp ZCksIG1pbihwYWdnX3RhYi5jXzFjKSwgbWluKHBhZ2dfdGFiLmNfdGltZSksIG1pbihwYWdnX3Rh Yi5jX3RpbWV0eiksIG1pbihwYWdnX3RhYi5jX3RpbWVzdGFtcCksIG1pbihwYWdnX3RhYi5jX3Rp bWVzdGFtcHR6KSwgbWF4KHBhZ2dfdGFiLmNfMWIpLCBtaW4ocGFnZ190YWIuY194aWQ4KSwgYXZn KHBhZ2dfdGFiLmIpCisgICAtPiAgQXBwZW5kCisgICAgICAgICAtPiAgRm9yZWlnbiBTY2FuCisg ICAgICAgICAgICAgICBPdXRwdXQ6IChQQVJUSUFMIGJpdF9hbmQocGFnZ190YWIuY19iaXQpKSwg KFBBUlRJQUwgYml0X2FuZChwYWdnX3RhYi5jXzFvcjNpbnQyKSksIChQQVJUSUFMIGJpdF9hbmQo cGFnZ190YWIuY18xb3IzaW50NCkpLCAoUEFSVElBTCBiaXRfYW5kKHBhZ2dfdGFiLmNfMW9yM2lu dDgpKSwgKFBBUlRJQUwgYml0X29yKHBhZ2dfdGFiLmNfYml0KSksIChQQVJUSUFMIGJpdF9vcihw YWdnX3RhYi5jXzFvcjNpbnQyKSksIChQQVJUSUFMIGJpdF9vcihwYWdnX3RhYi5jXzFvcjNpbnQ0 KSksIChQQVJUSUFMIGJpdF9vcihwYWdnX3RhYi5jXzFvcjNpbnQ4KSksIChQQVJUSUFMIGJpdF94 b3IocGFnZ190YWIuY19iaXQpKSwgKFBBUlRJQUwgYml0X3hvcihwYWdnX3RhYi5jXzFvcjNpbnQy KSksIChQQVJUSUFMIGJpdF94b3IocGFnZ190YWIuY18xb3IzaW50NCkpLCAoUEFSVElBTCBiaXRf eG9yKHBhZ2dfdGFiLmNfMW9yM2ludDgpKSwgKFBBUlRJQUwgYm9vbF9hbmQocGFnZ190YWIuY19i b29sKSksIChQQVJUSUFMIGJvb2xfb3IocGFnZ190YWIuY19ib29sKSksIChQQVJUSUFMIGV2ZXJ5 KHBhZ2dfdGFiLmNfYm9vbCkpLCAoUEFSVElBTCBtYXgoKHBhZ2dfdGFiLmNfMWMpOjpjaGFyYWN0 ZXIoMSkpKSwgKFBBUlRJQUwgbWF4KCgnMDEtMDEtMjAwMCc6OmRhdGUgKyBwYWdnX3RhYi5iKSkp LCAoUEFSVElBTCBtYXgoKCcwLjAuMC4wJzo6aW5ldCArIChwYWdnX3RhYi5iKTo6YmlnaW50KSkp LCAoUEFSVElBTCBtYXgoKHBhZ2dfdGFiLmIpOjpyZWFsKSksIChQQVJUSUFMIG1heCgocGFnZ190 YWIuYik6OmRvdWJsZSBwcmVjaXNpb24pKSwgKFBBUlRJQUwgbWF4KChwYWdnX3RhYi5iKTo6c21h bGxpbnQpKSwgKFBBUlRJQUwgbWF4KHBhZ2dfdGFiLmIpKSwgKFBBUlRJQUwgbWF4KChwYWdnX3Rh Yi5iKTo6YmlnaW50KSksIChQQVJUSUFMIG1heChwYWdnX3RhYi5jX2ludGVydmFsKSksIChQQVJU SUFMIG1heChwYWdnX3RhYi5jX21vbmV5KSksIChQQVJUSUFMIG1heCgocGFnZ190YWIuYik6Om51 bWVyaWMpKSwgKFBBUlRJQUwgbWF4KChwYWdnX3RhYi5iKTo6b2lkKSksIChQQVJUSUFMIG1heChw YWdnX3RhYi5jX3BnX2xzbikpLCAoUEFSVElBTCBtYXgocGFnZ190YWIuY190aWQpKSwgKFBBUlRJ QUwgbWF4KHBhZ2dfdGFiLmNfMWMpKSwgKFBBUlRJQUwgbWF4KHBhZ2dfdGFiLmNfdGltZSkpLCAo UEFSVElBTCBtYXgocGFnZ190YWIuY190aW1ldHopKSwgKFBBUlRJQUwgbWF4KHBhZ2dfdGFiLmNf dGltZXN0YW1wKSksIChQQVJUSUFMIG1heChwYWdnX3RhYi5jX3RpbWVzdGFtcHR6KSksIChQQVJU SUFMIG1heChwYWdnX3RhYi5jXzFiKSksIChQQVJUSUFMIG1heChwYWdnX3RhYi5jX3hpZDgpKSwg KFBBUlRJQUwgbWluKChwYWdnX3RhYi5jXzFjKTo6Y2hhcmFjdGVyKDEpKSksIChQQVJUSUFMIG1p bigoJzAxLTAxLTIwMDAnOjpkYXRlICsgcGFnZ190YWIuYikpKSwgKFBBUlRJQUwgbWluKCgnMC4w LjAuMCc6OmluZXQgKyAocGFnZ190YWIuYik6OmJpZ2ludCkpKSwgKFBBUlRJQUwgbWluKChwYWdn X3RhYi5iKTo6cmVhbCkpLCAoUEFSVElBTCBtaW4oKHBhZ2dfdGFiLmIpOjpkb3VibGUgcHJlY2lz aW9uKSksIChQQVJUSUFMIG1pbigocGFnZ190YWIuYik6OnNtYWxsaW50KSksIChQQVJUSUFMIG1p bihwYWdnX3RhYi5iKSksIChQQVJUSUFMIG1pbigocGFnZ190YWIuYik6OmJpZ2ludCkpLCAoUEFS VElBTCBtaW4ocGFnZ190YWIuY19pbnRlcnZhbCkpLCAoUEFSVElBTCBtaW4ocGFnZ190YWIuY19t b25leSkpLCAoUEFSVElBTCBtaW4oKHBhZ2dfdGFiLmIpOjpudW1lcmljKSksIChQQVJUSUFMIG1p bigocGFnZ190YWIuYik6Om9pZCkpLCAoUEFSVElBTCBtaW4ocGFnZ190YWIuY19wZ19sc24pKSwg KFBBUlRJQUwgbWluKHBhZ2dfdGFiLmNfdGlkKSksIChQQVJUSUFMIG1pbihwYWdnX3RhYi5jXzFj KSksIChQQVJUSUFMIG1pbihwYWdnX3RhYi5jX3RpbWUpKSwgKFBBUlRJQUwgbWluKHBhZ2dfdGFi LmNfdGltZXR6KSksIChQQVJUSUFMIG1pbihwYWdnX3RhYi5jX3RpbWVzdGFtcCkpLCAoUEFSVElB TCBtaW4ocGFnZ190YWIuY190aW1lc3RhbXB0eikpLCAoUEFSVElBTCBtaW4ocGFnZ190YWIuY194 aWQ4KSksIChQQVJUSUFMIGF2ZyhwYWdnX3RhYi5iKSkKKyAgICAgICAgICAgICAgIFJlbGF0aW9u czogQWdncmVnYXRlIG9uIChwdWJsaWMuZnBhZ2dfdGFiX3AxIHBhZ2dfdGFiKQorICAgICAgICAg ICAgICAgUmVtb3RlIFNRTDogU0VMRUNUIGJpdF9hbmQoY19iaXQpIFBBUlRJQUxfQUdHUkVHQVRF ICwgYml0X2FuZChjXzFvcjNpbnQyKSBQQVJUSUFMX0FHR1JFR0FURSAsIGJpdF9hbmQoY18xb3Iz aW50NCkgUEFSVElBTF9BR0dSRUdBVEUgLCBiaXRfYW5kKGNfMW9yM2ludDgpIFBBUlRJQUxfQUdH UkVHQVRFICwgYml0X29yKGNfYml0KSBQQVJUSUFMX0FHR1JFR0FURSAsIGJpdF9vcihjXzFvcjNp bnQyKSBQQVJUSUFMX0FHR1JFR0FURSAsIGJpdF9vcihjXzFvcjNpbnQ0KSBQQVJUSUFMX0FHR1JF R0FURSAsIGJpdF9vcihjXzFvcjNpbnQ4KSBQQVJUSUFMX0FHR1JFR0FURSAsIGJpdF94b3IoY19i aXQpIFBBUlRJQUxfQUdHUkVHQVRFICwgYml0X3hvcihjXzFvcjNpbnQyKSBQQVJUSUFMX0FHR1JF R0FURSAsIGJpdF94b3IoY18xb3IzaW50NCkgUEFSVElBTF9BR0dSRUdBVEUgLCBiaXRfeG9yKGNf MW9yM2ludDgpIFBBUlRJQUxfQUdHUkVHQVRFICwgYm9vbF9hbmQoY19ib29sKSBQQVJUSUFMX0FH R1JFR0FURSAsIGJvb2xfb3IoY19ib29sKSBQQVJUSUFMX0FHR1JFR0FURSAsIGV2ZXJ5KGNfYm9v bCkgUEFSVElBTF9BR0dSRUdBVEUgLCBtYXgoY18xYzo6Y2hhcmFjdGVyKDEpKSBQQVJUSUFMX0FH R1JFR0FURSAsIG1heCgoJzAxLTAxLTIwMDAnOjpkYXRlICsgYikpIFBBUlRJQUxfQUdHUkVHQVRF ICwgbWF4KCgnMC4wLjAuMCc6OmluZXQgKyBiKSkgUEFSVElBTF9BR0dSRUdBVEUgLCBtYXgoYjo6 cmVhbCkgUEFSVElBTF9BR0dSRUdBVEUgLCBtYXgoYjo6ZG91YmxlIHByZWNpc2lvbikgUEFSVElB TF9BR0dSRUdBVEUgLCBtYXgoYjo6c21hbGxpbnQpIFBBUlRJQUxfQUdHUkVHQVRFICwgbWF4KGIp IFBBUlRJQUxfQUdHUkVHQVRFICwgbWF4KGI6OmJpZ2ludCkgUEFSVElBTF9BR0dSRUdBVEUgLCBt YXgoY19pbnRlcnZhbCkgUEFSVElBTF9BR0dSRUdBVEUgLCBtYXgoY19tb25leSkgUEFSVElBTF9B R0dSRUdBVEUgLCBtYXgoYjo6bnVtZXJpYykgUEFSVElBTF9BR0dSRUdBVEUgLCBtYXgoYjo6b2lk KSBQQVJUSUFMX0FHR1JFR0FURSAsIG1heChjX3BnX2xzbikgUEFSVElBTF9BR0dSRUdBVEUgLCBt YXgoY190aWQpIFBBUlRJQUxfQUdHUkVHQVRFICwgbWF4KGNfMWMpIFBBUlRJQUxfQUdHUkVHQVRF ICwgbWF4KGNfdGltZSkgUEFSVElBTF9BR0dSRUdBVEUgLCBtYXgoY190aW1ldHopIFBBUlRJQUxf QUdHUkVHQVRFICwgbWF4KGNfdGltZXN0YW1wKSBQQVJUSUFMX0FHR1JFR0FURSAsIG1heChjX3Rp bWVzdGFtcHR6KSBQQVJUSUFMX0FHR1JFR0FURSAsIG1heChjXzFiKSBQQVJUSUFMX0FHR1JFR0FU RSAsIG1heChjX3hpZDgpIFBBUlRJQUxfQUdHUkVHQVRFICwgbWluKGNfMWM6OmNoYXJhY3Rlcigx KSkgUEFSVElBTF9BR0dSRUdBVEUgLCBtaW4oKCcwMS0wMS0yMDAwJzo6ZGF0ZSArIGIpKSBQQVJU SUFMX0FHR1JFR0FURSAsIG1pbigoJzAuMC4wLjAnOjppbmV0ICsgYikpIFBBUlRJQUxfQUdHUkVH QVRFICwgbWluKGI6OnJlYWwpIFBBUlRJQUxfQUdHUkVHQVRFICwgbWluKGI6OmRvdWJsZSBwcmVj aXNpb24pIFBBUlRJQUxfQUdHUkVHQVRFICwgbWluKGI6OnNtYWxsaW50KSBQQVJUSUFMX0FHR1JF R0FURSAsIG1pbihiKSBQQVJUSUFMX0FHR1JFR0FURSAsIG1pbihiOjpiaWdpbnQpIFBBUlRJQUxf QUdHUkVHQVRFICwgbWluKGNfaW50ZXJ2YWwpIFBBUlRJQUxfQUdHUkVHQVRFICwgbWluKGNfbW9u ZXkpIFBBUlRJQUxfQUdHUkVHQVRFICwgbWluKGI6Om51bWVyaWMpIFBBUlRJQUxfQUdHUkVHQVRF ICwgbWluKGI6Om9pZCkgUEFSVElBTF9BR0dSRUdBVEUgLCBtaW4oY19wZ19sc24pIFBBUlRJQUxf QUdHUkVHQVRFICwgbWluKGNfdGlkKSBQQVJUSUFMX0FHR1JFR0FURSAsIG1pbihjXzFjKSBQQVJU SUFMX0FHR1JFR0FURSAsIG1pbihjX3RpbWUpIFBBUlRJQUxfQUdHUkVHQVRFICwgbWluKGNfdGlt ZXR6KSBQQVJUSUFMX0FHR1JFR0FURSAsIG1pbihjX3RpbWVzdGFtcCkgUEFSVElBTF9BR0dSRUdB VEUgLCBtaW4oY190aW1lc3RhbXB0eikgUEFSVElBTF9BR0dSRUdBVEUgLCBtaW4oY194aWQ4KSBQ QVJUSUFMX0FHR1JFR0FURSAsIGF2ZyhiKSBQQVJUSUFMX0FHR1JFR0FURSAgRlJPTSBwdWJsaWMu cGFnZ190YWJfcDEgV0hFUkUgKChjX3NlcmlhbCA+PSAxKSkgQU5EICgoY19zZXJpYWwgPD0gMzAp KQorICAgICAgICAgLT4gIEZvcmVpZ24gU2NhbgorICAgICAgICAgICAgICAgT3V0cHV0OiAoUEFS VElBTCBiaXRfYW5kKHBhZ2dfdGFiXzEuY19iaXQpKSwgKFBBUlRJQUwgYml0X2FuZChwYWdnX3Rh Yl8xLmNfMW9yM2ludDIpKSwgKFBBUlRJQUwgYml0X2FuZChwYWdnX3RhYl8xLmNfMW9yM2ludDQp KSwgKFBBUlRJQUwgYml0X2FuZChwYWdnX3RhYl8xLmNfMW9yM2ludDgpKSwgKFBBUlRJQUwgYml0 X29yKHBhZ2dfdGFiXzEuY19iaXQpKSwgKFBBUlRJQUwgYml0X29yKHBhZ2dfdGFiXzEuY18xb3Iz aW50MikpLCAoUEFSVElBTCBiaXRfb3IocGFnZ190YWJfMS5jXzFvcjNpbnQ0KSksIChQQVJUSUFM IGJpdF9vcihwYWdnX3RhYl8xLmNfMW9yM2ludDgpKSwgKFBBUlRJQUwgYml0X3hvcihwYWdnX3Rh Yl8xLmNfYml0KSksIChQQVJUSUFMIGJpdF94b3IocGFnZ190YWJfMS5jXzFvcjNpbnQyKSksIChQ QVJUSUFMIGJpdF94b3IocGFnZ190YWJfMS5jXzFvcjNpbnQ0KSksIChQQVJUSUFMIGJpdF94b3Io cGFnZ190YWJfMS5jXzFvcjNpbnQ4KSksIChQQVJUSUFMIGJvb2xfYW5kKHBhZ2dfdGFiXzEuY19i b29sKSksIChQQVJUSUFMIGJvb2xfb3IocGFnZ190YWJfMS5jX2Jvb2wpKSwgKFBBUlRJQUwgZXZl cnkocGFnZ190YWJfMS5jX2Jvb2wpKSwgKFBBUlRJQUwgbWF4KChwYWdnX3RhYl8xLmNfMWMpOjpj aGFyYWN0ZXIoMSkpKSwgKFBBUlRJQUwgbWF4KCgnMDEtMDEtMjAwMCc6OmRhdGUgKyBwYWdnX3Rh Yl8xLmIpKSksIChQQVJUSUFMIG1heCgoJzAuMC4wLjAnOjppbmV0ICsgKHBhZ2dfdGFiXzEuYik6 OmJpZ2ludCkpKSwgKFBBUlRJQUwgbWF4KChwYWdnX3RhYl8xLmIpOjpyZWFsKSksIChQQVJUSUFM IG1heCgocGFnZ190YWJfMS5iKTo6ZG91YmxlIHByZWNpc2lvbikpLCAoUEFSVElBTCBtYXgoKHBh Z2dfdGFiXzEuYik6OnNtYWxsaW50KSksIChQQVJUSUFMIG1heChwYWdnX3RhYl8xLmIpKSwgKFBB UlRJQUwgbWF4KChwYWdnX3RhYl8xLmIpOjpiaWdpbnQpKSwgKFBBUlRJQUwgbWF4KHBhZ2dfdGFi XzEuY19pbnRlcnZhbCkpLCAoUEFSVElBTCBtYXgocGFnZ190YWJfMS5jX21vbmV5KSksIChQQVJU SUFMIG1heCgocGFnZ190YWJfMS5iKTo6bnVtZXJpYykpLCAoUEFSVElBTCBtYXgoKHBhZ2dfdGFi XzEuYik6Om9pZCkpLCAoUEFSVElBTCBtYXgocGFnZ190YWJfMS5jX3BnX2xzbikpLCAoUEFSVElB TCBtYXgocGFnZ190YWJfMS5jX3RpZCkpLCAoUEFSVElBTCBtYXgocGFnZ190YWJfMS5jXzFjKSks IChQQVJUSUFMIG1heChwYWdnX3RhYl8xLmNfdGltZSkpLCAoUEFSVElBTCBtYXgocGFnZ190YWJf MS5jX3RpbWV0eikpLCAoUEFSVElBTCBtYXgocGFnZ190YWJfMS5jX3RpbWVzdGFtcCkpLCAoUEFS VElBTCBtYXgocGFnZ190YWJfMS5jX3RpbWVzdGFtcHR6KSksIChQQVJUSUFMIG1heChwYWdnX3Rh Yl8xLmNfMWIpKSwgKFBBUlRJQUwgbWF4KHBhZ2dfdGFiXzEuY194aWQ4KSksIChQQVJUSUFMIG1p bigocGFnZ190YWJfMS5jXzFjKTo6Y2hhcmFjdGVyKDEpKSksIChQQVJUSUFMIG1pbigoJzAxLTAx LTIwMDAnOjpkYXRlICsgcGFnZ190YWJfMS5iKSkpLCAoUEFSVElBTCBtaW4oKCcwLjAuMC4wJzo6 aW5ldCArIChwYWdnX3RhYl8xLmIpOjpiaWdpbnQpKSksIChQQVJUSUFMIG1pbigocGFnZ190YWJf MS5iKTo6cmVhbCkpLCAoUEFSVElBTCBtaW4oKHBhZ2dfdGFiXzEuYik6OmRvdWJsZSBwcmVjaXNp b24pKSwgKFBBUlRJQUwgbWluKChwYWdnX3RhYl8xLmIpOjpzbWFsbGludCkpLCAoUEFSVElBTCBt aW4ocGFnZ190YWJfMS5iKSksIChQQVJUSUFMIG1pbigocGFnZ190YWJfMS5iKTo6YmlnaW50KSks IChQQVJUSUFMIG1pbihwYWdnX3RhYl8xLmNfaW50ZXJ2YWwpKSwgKFBBUlRJQUwgbWluKHBhZ2df dGFiXzEuY19tb25leSkpLCAoUEFSVElBTCBtaW4oKHBhZ2dfdGFiXzEuYik6Om51bWVyaWMpKSwg KFBBUlRJQUwgbWluKChwYWdnX3RhYl8xLmIpOjpvaWQpKSwgKFBBUlRJQUwgbWluKHBhZ2dfdGFi XzEuY19wZ19sc24pKSwgKFBBUlRJQUwgbWluKHBhZ2dfdGFiXzEuY190aWQpKSwgKFBBUlRJQUwg bWluKHBhZ2dfdGFiXzEuY18xYykpLCAoUEFSVElBTCBtaW4ocGFnZ190YWJfMS5jX3RpbWUpKSwg KFBBUlRJQUwgbWluKHBhZ2dfdGFiXzEuY190aW1ldHopKSwgKFBBUlRJQUwgbWluKHBhZ2dfdGFi XzEuY190aW1lc3RhbXApKSwgKFBBUlRJQUwgbWluKHBhZ2dfdGFiXzEuY190aW1lc3RhbXB0eikp LCAoUEFSVElBTCBtaW4ocGFnZ190YWJfMS5jX3hpZDgpKSwgKFBBUlRJQUwgYXZnKHBhZ2dfdGFi XzEuYikpCisgICAgICAgICAgICAgICBSZWxhdGlvbnM6IEFnZ3JlZ2F0ZSBvbiAocHVibGljLmZw YWdnX3RhYl9wMiBwYWdnX3RhYl8xKQorICAgICAgICAgICAgICAgUmVtb3RlIFNRTDogU0VMRUNU IGJpdF9hbmQoY19iaXQpIFBBUlRJQUxfQUdHUkVHQVRFICwgYml0X2FuZChjXzFvcjNpbnQyKSBQ QVJUSUFMX0FHR1JFR0FURSAsIGJpdF9hbmQoY18xb3IzaW50NCkgUEFSVElBTF9BR0dSRUdBVEUg LCBiaXRfYW5kKGNfMW9yM2ludDgpIFBBUlRJQUxfQUdHUkVHQVRFICwgYml0X29yKGNfYml0KSBQ QVJUSUFMX0FHR1JFR0FURSAsIGJpdF9vcihjXzFvcjNpbnQyKSBQQVJUSUFMX0FHR1JFR0FURSAs IGJpdF9vcihjXzFvcjNpbnQ0KSBQQVJUSUFMX0FHR1JFR0FURSAsIGJpdF9vcihjXzFvcjNpbnQ4 KSBQQVJUSUFMX0FHR1JFR0FURSAsIGJpdF94b3IoY19iaXQpIFBBUlRJQUxfQUdHUkVHQVRFICwg Yml0X3hvcihjXzFvcjNpbnQyKSBQQVJUSUFMX0FHR1JFR0FURSAsIGJpdF94b3IoY18xb3IzaW50 NCkgUEFSVElBTF9BR0dSRUdBVEUgLCBiaXRfeG9yKGNfMW9yM2ludDgpIFBBUlRJQUxfQUdHUkVH QVRFICwgYm9vbF9hbmQoY19ib29sKSBQQVJUSUFMX0FHR1JFR0FURSAsIGJvb2xfb3IoY19ib29s KSBQQVJUSUFMX0FHR1JFR0FURSAsIGV2ZXJ5KGNfYm9vbCkgUEFSVElBTF9BR0dSRUdBVEUgLCBt YXgoY18xYzo6Y2hhcmFjdGVyKDEpKSBQQVJUSUFMX0FHR1JFR0FURSAsIG1heCgoJzAxLTAxLTIw MDAnOjpkYXRlICsgYikpIFBBUlRJQUxfQUdHUkVHQVRFICwgbWF4KCgnMC4wLjAuMCc6OmluZXQg KyBiKSkgUEFSVElBTF9BR0dSRUdBVEUgLCBtYXgoYjo6cmVhbCkgUEFSVElBTF9BR0dSRUdBVEUg LCBtYXgoYjo6ZG91YmxlIHByZWNpc2lvbikgUEFSVElBTF9BR0dSRUdBVEUgLCBtYXgoYjo6c21h bGxpbnQpIFBBUlRJQUxfQUdHUkVHQVRFICwgbWF4KGIpIFBBUlRJQUxfQUdHUkVHQVRFICwgbWF4 KGI6OmJpZ2ludCkgUEFSVElBTF9BR0dSRUdBVEUgLCBtYXgoY19pbnRlcnZhbCkgUEFSVElBTF9B R0dSRUdBVEUgLCBtYXgoY19tb25leSkgUEFSVElBTF9BR0dSRUdBVEUgLCBtYXgoYjo6bnVtZXJp YykgUEFSVElBTF9BR0dSRUdBVEUgLCBtYXgoYjo6b2lkKSBQQVJUSUFMX0FHR1JFR0FURSAsIG1h eChjX3BnX2xzbikgUEFSVElBTF9BR0dSRUdBVEUgLCBtYXgoY190aWQpIFBBUlRJQUxfQUdHUkVH QVRFICwgbWF4KGNfMWMpIFBBUlRJQUxfQUdHUkVHQVRFICwgbWF4KGNfdGltZSkgUEFSVElBTF9B R0dSRUdBVEUgLCBtYXgoY190aW1ldHopIFBBUlRJQUxfQUdHUkVHQVRFICwgbWF4KGNfdGltZXN0 YW1wKSBQQVJUSUFMX0FHR1JFR0FURSAsIG1heChjX3RpbWVzdGFtcHR6KSBQQVJUSUFMX0FHR1JF R0FURSAsIG1heChjXzFiKSBQQVJUSUFMX0FHR1JFR0FURSAsIG1heChjX3hpZDgpIFBBUlRJQUxf QUdHUkVHQVRFICwgbWluKGNfMWM6OmNoYXJhY3RlcigxKSkgUEFSVElBTF9BR0dSRUdBVEUgLCBt aW4oKCcwMS0wMS0yMDAwJzo6ZGF0ZSArIGIpKSBQQVJUSUFMX0FHR1JFR0FURSAsIG1pbigoJzAu MC4wLjAnOjppbmV0ICsgYikpIFBBUlRJQUxfQUdHUkVHQVRFICwgbWluKGI6OnJlYWwpIFBBUlRJ QUxfQUdHUkVHQVRFICwgbWluKGI6OmRvdWJsZSBwcmVjaXNpb24pIFBBUlRJQUxfQUdHUkVHQVRF ICwgbWluKGI6OnNtYWxsaW50KSBQQVJUSUFMX0FHR1JFR0FURSAsIG1pbihiKSBQQVJUSUFMX0FH R1JFR0FURSAsIG1pbihiOjpiaWdpbnQpIFBBUlRJQUxfQUdHUkVHQVRFICwgbWluKGNfaW50ZXJ2 YWwpIFBBUlRJQUxfQUdHUkVHQVRFICwgbWluKGNfbW9uZXkpIFBBUlRJQUxfQUdHUkVHQVRFICwg bWluKGI6Om51bWVyaWMpIFBBUlRJQUxfQUdHUkVHQVRFICwgbWluKGI6Om9pZCkgUEFSVElBTF9B R0dSRUdBVEUgLCBtaW4oY19wZ19sc24pIFBBUlRJQUxfQUdHUkVHQVRFICwgbWluKGNfdGlkKSBQ QVJUSUFMX0FHR1JFR0FURSAsIG1pbihjXzFjKSBQQVJUSUFMX0FHR1JFR0FURSAsIG1pbihjX3Rp bWUpIFBBUlRJQUxfQUdHUkVHQVRFICwgbWluKGNfdGltZXR6KSBQQVJUSUFMX0FHR1JFR0FURSAs IG1pbihjX3RpbWVzdGFtcCkgUEFSVElBTF9BR0dSRUdBVEUgLCBtaW4oY190aW1lc3RhbXB0eikg UEFSVElBTF9BR0dSRUdBVEUgLCBtaW4oY194aWQ4KSBQQVJUSUFMX0FHR1JFR0FURSAsIGF2Zyhi KSBQQVJUSUFMX0FHR1JFR0FURSAgRlJPTSBwdWJsaWMucGFnZ190YWJfcDIgV0hFUkUgKChjX3Nl cmlhbCA+PSAxKSkgQU5EICgoY19zZXJpYWwgPD0gMzApKQorICAgICAgICAgLT4gIEZvcmVpZ24g U2NhbgorICAgICAgICAgICAgICAgT3V0cHV0OiAoUEFSVElBTCBiaXRfYW5kKHBhZ2dfdGFiXzIu Y19iaXQpKSwgKFBBUlRJQUwgYml0X2FuZChwYWdnX3RhYl8yLmNfMW9yM2ludDIpKSwgKFBBUlRJ QUwgYml0X2FuZChwYWdnX3RhYl8yLmNfMW9yM2ludDQpKSwgKFBBUlRJQUwgYml0X2FuZChwYWdn X3RhYl8yLmNfMW9yM2ludDgpKSwgKFBBUlRJQUwgYml0X29yKHBhZ2dfdGFiXzIuY19iaXQpKSwg KFBBUlRJQUwgYml0X29yKHBhZ2dfdGFiXzIuY18xb3IzaW50MikpLCAoUEFSVElBTCBiaXRfb3Io cGFnZ190YWJfMi5jXzFvcjNpbnQ0KSksIChQQVJUSUFMIGJpdF9vcihwYWdnX3RhYl8yLmNfMW9y M2ludDgpKSwgKFBBUlRJQUwgYml0X3hvcihwYWdnX3RhYl8yLmNfYml0KSksIChQQVJUSUFMIGJp dF94b3IocGFnZ190YWJfMi5jXzFvcjNpbnQyKSksIChQQVJUSUFMIGJpdF94b3IocGFnZ190YWJf Mi5jXzFvcjNpbnQ0KSksIChQQVJUSUFMIGJpdF94b3IocGFnZ190YWJfMi5jXzFvcjNpbnQ4KSks IChQQVJUSUFMIGJvb2xfYW5kKHBhZ2dfdGFiXzIuY19ib29sKSksIChQQVJUSUFMIGJvb2xfb3Io cGFnZ190YWJfMi5jX2Jvb2wpKSwgKFBBUlRJQUwgZXZlcnkocGFnZ190YWJfMi5jX2Jvb2wpKSwg KFBBUlRJQUwgbWF4KChwYWdnX3RhYl8yLmNfMWMpOjpjaGFyYWN0ZXIoMSkpKSwgKFBBUlRJQUwg bWF4KCgnMDEtMDEtMjAwMCc6OmRhdGUgKyBwYWdnX3RhYl8yLmIpKSksIChQQVJUSUFMIG1heCgo JzAuMC4wLjAnOjppbmV0ICsgKHBhZ2dfdGFiXzIuYik6OmJpZ2ludCkpKSwgKFBBUlRJQUwgbWF4 KChwYWdnX3RhYl8yLmIpOjpyZWFsKSksIChQQVJUSUFMIG1heCgocGFnZ190YWJfMi5iKTo6ZG91 YmxlIHByZWNpc2lvbikpLCAoUEFSVElBTCBtYXgoKHBhZ2dfdGFiXzIuYik6OnNtYWxsaW50KSks IChQQVJUSUFMIG1heChwYWdnX3RhYl8yLmIpKSwgKFBBUlRJQUwgbWF4KChwYWdnX3RhYl8yLmIp OjpiaWdpbnQpKSwgKFBBUlRJQUwgbWF4KHBhZ2dfdGFiXzIuY19pbnRlcnZhbCkpLCAoUEFSVElB TCBtYXgocGFnZ190YWJfMi5jX21vbmV5KSksIChQQVJUSUFMIG1heCgocGFnZ190YWJfMi5iKTo6 bnVtZXJpYykpLCAoUEFSVElBTCBtYXgoKHBhZ2dfdGFiXzIuYik6Om9pZCkpLCAoUEFSVElBTCBt YXgocGFnZ190YWJfMi5jX3BnX2xzbikpLCAoUEFSVElBTCBtYXgocGFnZ190YWJfMi5jX3RpZCkp LCAoUEFSVElBTCBtYXgocGFnZ190YWJfMi5jXzFjKSksIChQQVJUSUFMIG1heChwYWdnX3RhYl8y LmNfdGltZSkpLCAoUEFSVElBTCBtYXgocGFnZ190YWJfMi5jX3RpbWV0eikpLCAoUEFSVElBTCBt YXgocGFnZ190YWJfMi5jX3RpbWVzdGFtcCkpLCAoUEFSVElBTCBtYXgocGFnZ190YWJfMi5jX3Rp bWVzdGFtcHR6KSksIChQQVJUSUFMIG1heChwYWdnX3RhYl8yLmNfMWIpKSwgKFBBUlRJQUwgbWF4 KHBhZ2dfdGFiXzIuY194aWQ4KSksIChQQVJUSUFMIG1pbigocGFnZ190YWJfMi5jXzFjKTo6Y2hh cmFjdGVyKDEpKSksIChQQVJUSUFMIG1pbigoJzAxLTAxLTIwMDAnOjpkYXRlICsgcGFnZ190YWJf Mi5iKSkpLCAoUEFSVElBTCBtaW4oKCcwLjAuMC4wJzo6aW5ldCArIChwYWdnX3RhYl8yLmIpOjpi aWdpbnQpKSksIChQQVJUSUFMIG1pbigocGFnZ190YWJfMi5iKTo6cmVhbCkpLCAoUEFSVElBTCBt aW4oKHBhZ2dfdGFiXzIuYik6OmRvdWJsZSBwcmVjaXNpb24pKSwgKFBBUlRJQUwgbWluKChwYWdn X3RhYl8yLmIpOjpzbWFsbGludCkpLCAoUEFSVElBTCBtaW4ocGFnZ190YWJfMi5iKSksIChQQVJU SUFMIG1pbigocGFnZ190YWJfMi5iKTo6YmlnaW50KSksIChQQVJUSUFMIG1pbihwYWdnX3RhYl8y LmNfaW50ZXJ2YWwpKSwgKFBBUlRJQUwgbWluKHBhZ2dfdGFiXzIuY19tb25leSkpLCAoUEFSVElB TCBtaW4oKHBhZ2dfdGFiXzIuYik6Om51bWVyaWMpKSwgKFBBUlRJQUwgbWluKChwYWdnX3RhYl8y LmIpOjpvaWQpKSwgKFBBUlRJQUwgbWluKHBhZ2dfdGFiXzIuY19wZ19sc24pKSwgKFBBUlRJQUwg bWluKHBhZ2dfdGFiXzIuY190aWQpKSwgKFBBUlRJQUwgbWluKHBhZ2dfdGFiXzIuY18xYykpLCAo UEFSVElBTCBtaW4ocGFnZ190YWJfMi5jX3RpbWUpKSwgKFBBUlRJQUwgbWluKHBhZ2dfdGFiXzIu Y190aW1ldHopKSwgKFBBUlRJQUwgbWluKHBhZ2dfdGFiXzIuY190aW1lc3RhbXApKSwgKFBBUlRJ QUwgbWluKHBhZ2dfdGFiXzIuY190aW1lc3RhbXB0eikpLCAoUEFSVElBTCBtaW4ocGFnZ190YWJf Mi5jX3hpZDgpKSwgKFBBUlRJQUwgYXZnKHBhZ2dfdGFiXzIuYikpCisgICAgICAgICAgICAgICBS ZWxhdGlvbnM6IEFnZ3JlZ2F0ZSBvbiAocHVibGljLmZwYWdnX3RhYl9wMyBwYWdnX3RhYl8yKQor ICAgICAgICAgICAgICAgUmVtb3RlIFNRTDogU0VMRUNUIGJpdF9hbmQoY19iaXQpIFBBUlRJQUxf QUdHUkVHQVRFICwgYml0X2FuZChjXzFvcjNpbnQyKSBQQVJUSUFMX0FHR1JFR0FURSAsIGJpdF9h bmQoY18xb3IzaW50NCkgUEFSVElBTF9BR0dSRUdBVEUgLCBiaXRfYW5kKGNfMW9yM2ludDgpIFBB UlRJQUxfQUdHUkVHQVRFICwgYml0X29yKGNfYml0KSBQQVJUSUFMX0FHR1JFR0FURSAsIGJpdF9v cihjXzFvcjNpbnQyKSBQQVJUSUFMX0FHR1JFR0FURSAsIGJpdF9vcihjXzFvcjNpbnQ0KSBQQVJU SUFMX0FHR1JFR0FURSAsIGJpdF9vcihjXzFvcjNpbnQ4KSBQQVJUSUFMX0FHR1JFR0FURSAsIGJp dF94b3IoY19iaXQpIFBBUlRJQUxfQUdHUkVHQVRFICwgYml0X3hvcihjXzFvcjNpbnQyKSBQQVJU SUFMX0FHR1JFR0FURSAsIGJpdF94b3IoY18xb3IzaW50NCkgUEFSVElBTF9BR0dSRUdBVEUgLCBi aXRfeG9yKGNfMW9yM2ludDgpIFBBUlRJQUxfQUdHUkVHQVRFICwgYm9vbF9hbmQoY19ib29sKSBQ QVJUSUFMX0FHR1JFR0FURSAsIGJvb2xfb3IoY19ib29sKSBQQVJUSUFMX0FHR1JFR0FURSAsIGV2 ZXJ5KGNfYm9vbCkgUEFSVElBTF9BR0dSRUdBVEUgLCBtYXgoY18xYzo6Y2hhcmFjdGVyKDEpKSBQ QVJUSUFMX0FHR1JFR0FURSAsIG1heCgoJzAxLTAxLTIwMDAnOjpkYXRlICsgYikpIFBBUlRJQUxf QUdHUkVHQVRFICwgbWF4KCgnMC4wLjAuMCc6OmluZXQgKyBiKSkgUEFSVElBTF9BR0dSRUdBVEUg LCBtYXgoYjo6cmVhbCkgUEFSVElBTF9BR0dSRUdBVEUgLCBtYXgoYjo6ZG91YmxlIHByZWNpc2lv bikgUEFSVElBTF9BR0dSRUdBVEUgLCBtYXgoYjo6c21hbGxpbnQpIFBBUlRJQUxfQUdHUkVHQVRF ICwgbWF4KGIpIFBBUlRJQUxfQUdHUkVHQVRFICwgbWF4KGI6OmJpZ2ludCkgUEFSVElBTF9BR0dS RUdBVEUgLCBtYXgoY19pbnRlcnZhbCkgUEFSVElBTF9BR0dSRUdBVEUgLCBtYXgoY19tb25leSkg UEFSVElBTF9BR0dSRUdBVEUgLCBtYXgoYjo6bnVtZXJpYykgUEFSVElBTF9BR0dSRUdBVEUgLCBt YXgoYjo6b2lkKSBQQVJUSUFMX0FHR1JFR0FURSAsIG1heChjX3BnX2xzbikgUEFSVElBTF9BR0dS RUdBVEUgLCBtYXgoY190aWQpIFBBUlRJQUxfQUdHUkVHQVRFICwgbWF4KGNfMWMpIFBBUlRJQUxf QUdHUkVHQVRFICwgbWF4KGNfdGltZSkgUEFSVElBTF9BR0dSRUdBVEUgLCBtYXgoY190aW1ldHop IFBBUlRJQUxfQUdHUkVHQVRFICwgbWF4KGNfdGltZXN0YW1wKSBQQVJUSUFMX0FHR1JFR0FURSAs IG1heChjX3RpbWVzdGFtcHR6KSBQQVJUSUFMX0FHR1JFR0FURSAsIG1heChjXzFiKSBQQVJUSUFM X0FHR1JFR0FURSAsIG1heChjX3hpZDgpIFBBUlRJQUxfQUdHUkVHQVRFICwgbWluKGNfMWM6OmNo YXJhY3RlcigxKSkgUEFSVElBTF9BR0dSRUdBVEUgLCBtaW4oKCcwMS0wMS0yMDAwJzo6ZGF0ZSAr IGIpKSBQQVJUSUFMX0FHR1JFR0FURSAsIG1pbigoJzAuMC4wLjAnOjppbmV0ICsgYikpIFBBUlRJ QUxfQUdHUkVHQVRFICwgbWluKGI6OnJlYWwpIFBBUlRJQUxfQUdHUkVHQVRFICwgbWluKGI6OmRv dWJsZSBwcmVjaXNpb24pIFBBUlRJQUxfQUdHUkVHQVRFICwgbWluKGI6OnNtYWxsaW50KSBQQVJU SUFMX0FHR1JFR0FURSAsIG1pbihiKSBQQVJUSUFMX0FHR1JFR0FURSAsIG1pbihiOjpiaWdpbnQp IFBBUlRJQUxfQUdHUkVHQVRFICwgbWluKGNfaW50ZXJ2YWwpIFBBUlRJQUxfQUdHUkVHQVRFICwg bWluKGNfbW9uZXkpIFBBUlRJQUxfQUdHUkVHQVRFICwgbWluKGI6Om51bWVyaWMpIFBBUlRJQUxf QUdHUkVHQVRFICwgbWluKGI6Om9pZCkgUEFSVElBTF9BR0dSRUdBVEUgLCBtaW4oY19wZ19sc24p IFBBUlRJQUxfQUdHUkVHQVRFICwgbWluKGNfdGlkKSBQQVJUSUFMX0FHR1JFR0FURSAsIG1pbihj XzFjKSBQQVJUSUFMX0FHR1JFR0FURSAsIG1pbihjX3RpbWUpIFBBUlRJQUxfQUdHUkVHQVRFICwg bWluKGNfdGltZXR6KSBQQVJUSUFMX0FHR1JFR0FURSAsIG1pbihjX3RpbWVzdGFtcCkgUEFSVElB TF9BR0dSRUdBVEUgLCBtaW4oY190aW1lc3RhbXB0eikgUEFSVElBTF9BR0dSRUdBVEUgLCBtaW4o Y194aWQ4KSBQQVJUSUFMX0FHR1JFR0FURSAsIGF2ZyhiKSBQQVJUSUFMX0FHR1JFR0FURSAgRlJP TSBwdWJsaWMucGFnZ190YWJfcDMgV0hFUkUgKChjX3NlcmlhbCA+PSAxKSkgQU5EICgoY19zZXJp YWwgPD0gMzApKQorKDE1IHJvd3MpCisKK1NFTEVDVAorCS8qIFRoZSBjYXNlcyB0aGF0IGRvbid0 IHJlcXVpcmUgaW1wb3J0IG9yIGV4cG9ydCBmdW5jdGlvbnMgKi8KKwliaXRfYW5kKGNfYml0KSwg Yml0X2FuZChjXzFvcjNpbnQyKSwgYml0X2FuZChjXzFvcjNpbnQ0KSwgYml0X2FuZChjXzFvcjNp bnQ4KSwKKwliaXRfb3IoY19iaXQpLCBiaXRfb3IoY18xb3IzaW50MiksIGJpdF9vcihjXzFvcjNp bnQ0KSwgYml0X29yKGNfMW9yM2ludDgpLAorCWJpdF94b3IoY19iaXQpLCBiaXRfeG9yKGNfMW9y M2ludDIpLCBiaXRfeG9yKGNfMW9yM2ludDQpLCBiaXRfeG9yKGNfMW9yM2ludDgpLAorCWJvb2xf YW5kKGNfYm9vbCksCisJYm9vbF9vcihjX2Jvb2wpLAorCWV2ZXJ5KGNfYm9vbCksCisJbWF4KGNf MWM6OmNoYXIoMSkpLCBtYXgoJzIwMDAtMDEtMDEnOjpkYXRlICsgYiksIG1heCgnMC4wLjAuMCc6 OmluZXQgKyBiKSwgbWF4KGI6OmZsb2F0NCksIG1heChiOjpmbG9hdDgpLCBtYXgoYjo6aW50Miks IG1heChiOjppbnQ0KSwgbWF4KGI6OmludDgpLCBtYXgoY19pbnRlcnZhbCksIG1heChjX21vbmV5 KSwgbWF4KGI6Om51bWVyaWMpLCBtYXgoYjo6b2lkKSwgbWF4KGNfcGdfbHNuKSwgbWF4KGNfdGlk KSwgbWF4KGNfMWMpLCBtYXgoY190aW1lKSwgbWF4KGNfdGltZXR6KSwgbWF4KGNfdGltZXN0YW1w KSwgbWF4KGNfdGltZXN0YW1wdHopLCBtYXgoY18xYiksIG1heChjX3hpZDgpLAorCW1pbihjXzFj OjpjaGFyKDEpKSwgbWluKCcyMDAwLTAxLTAxJzo6ZGF0ZSArIGIpLCBtaW4oJzAuMC4wLjAnOjpp bmV0ICsgYiksIG1pbihiOjpmbG9hdDQpLCBtaW4oYjo6ZmxvYXQ4KSwgbWluKGI6OmludDIpLCBt aW4oYjo6aW50NCksIG1pbihiOjppbnQ4KSwgbWluKGNfaW50ZXJ2YWwpLCBtaW4oY19tb25leSks IG1pbihiOjpudW1lcmljKSwgbWluKGI6Om9pZCksIG1pbihjX3BnX2xzbiksIG1pbihjX3RpZCks IG1pbihjXzFjKSwgbWluKGNfdGltZSksIG1pbihjX3RpbWV0eiksIG1pbihjX3RpbWVzdGFtcCks IG1pbihjX3RpbWVzdGFtcHR6KSwgbWF4KGNfMWIpLCBtaW4oY194aWQ4KSwKKwlhdmcoYjo6aW50 NCkKKyAgRlJPTSBwYWdnX3RhYiBXSEVSRSBjX3NlcmlhbCBiZXR3ZWVuIDEgYW5kIDMwOworIGJp dF9hbmQgfCBiaXRfYW5kIHwgYml0X2FuZCB8IGJpdF9hbmQgfCBiaXRfb3IgfCBiaXRfb3IgfCBi aXRfb3IgfCBiaXRfb3IgfCBiaXRfeG9yIHwgYml0X3hvciB8IGJpdF94b3IgfCBiaXRfeG9yIHwg Ym9vbF9hbmQgfCBib29sX29yIHwgZXZlcnkgfCBtYXggfCAgICBtYXggICAgIHwgICBtYXggICAg fCBtYXggfCBtYXggfCBtYXggfCBtYXggfCBtYXggfCAgIG1heCAgIHwgIG1heCAgfCBtYXggfCBt YXggfCBtYXggIHwgIG1heCAgIHwgbWF4IHwgICBtYXggICAgfCAgICAgbWF4ICAgICB8ICAgICAg ICAgICBtYXggICAgICAgICAgICB8ICAgICAgICAgICAgIG1heCAgICAgICAgICAgICAgfCBtYXgg IHwgbWF4IHwgbWluIHwgICAgbWluICAgICB8ICAgbWluICAgfCBtaW4gfCBtaW4gfCBtaW4gfCBt aW4gfCBtaW4gfCBtaW4gfCAgbWluICB8IG1pbiB8IG1pbiB8IG1pbiB8ICBtaW4gIHwgbWluIHwg ICBtaW4gICAgfCAgICAgbWluICAgICB8ICAgICAgICAgICBtaW4gICAgICAgICAgICB8ICAgICAg ICAgICAgIG1pbiAgICAgICAgICAgICAgfCBtYXggIHwgbWluIHwgICAgICAgICBhdmcgICAgICAg ICAKKy0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLSstLS0t LS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0t LS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLSstLS0tLSstLS0tLS0tLS0tLS0rLS0t LS0tLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLS0tLS0rLS0tLS0tLSst LS0tLSstLS0tLSstLS0tLS0rLS0tLS0tLS0rLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LSstLS0tLS0rLS0tLS0rLS0tLS0rLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLSstLS0tLSst LS0tLSstLS0tLSstLS0tLSstLS0tLSstLS0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tKy0tLS0tLS0r LS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t Ky0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0rLS0tLS0rLS0tLS0tLS0tLS0t LS0tLS0tLS0tCisgMDEgICAgICB8ICAgICAgIDEgfCAgICAgICAxIHwgICAgICAgMSB8IDExICAg ICB8ICAgICAgMyB8ICAgICAgMyB8ICAgICAgMyB8IDEwICAgICAgfCAgICAgICAyIHwgICAgICAg MiB8ICAgICAgIDIgfCBmICAgICAgICB8IHQgICAgICAgfCBmICAgICB8IDkgICB8IDAxLTMxLTIw MDAgfCAwLjAuMC4zMCB8ICAzMCB8ICAzMCB8ICAzMCB8ICAzMCB8ICAzMCB8IEAgMSBzZWMgfCAk MS4wMCB8ICAzMCB8ICAzMCB8IDAvMzAgfCAoMCwzMCkgfCA5ICAgfCAwMDowMDozMCB8IDAwOjAw OjMwKzAwIHwgU2F0IEphbiAwMSAwMDowMDozMCAyMDAwIHwgU2F0IEphbiAwMSAwMDowMDozMCAy MDAwIFVUQyB8IFx4MzkgfCAgIDkgfCAwICAgfCAwMS0wMi0yMDAwIHwgMC4wLjAuMSB8ICAgMSB8 ICAgMSB8ICAgMSB8ICAgMSB8ICAgMSB8IEAgMCB8ICQwLjAwIHwgICAxIHwgICAxIHwgMC8xIHwg KDAsMSkgfCAwICAgfCAwMDowMDowMSB8IDAwOjAwOjAxKzAwIHwgU2F0IEphbiAwMSAwMDowMDow MSAyMDAwIHwgU2F0IEphbiAwMSAwMDowMDowMSAyMDAwIFVUQyB8IFx4MzkgfCAgIDAgfCAxNS41 MDAwMDAwMDAwMDAwMDAwCisoMSByb3cpCisKKy0tIFRlc3RzIGZvciBwYXJ0aWFsX2FnZ3JlZ2F0 ZV9zdXBwb3J0CitBTFRFUiBTRVJWRVIgbG9vcGJhY2sgT1BUSU9OUyAoQUREIHBhcnRpYWxfYWdn cmVnYXRlX3N1cHBvcnQgJ2ZhbHNlJyk7CitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCitT RUxFQ1QgYiwgbWF4KGEpIEZST00gcGFnZ190YWIgR1JPVVAgQlkgYiBPUkRFUiBCWSAxOworICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICBGaW5hbGl6ZSBHcm91cEFnZ3Jl Z2F0ZQorICAgT3V0cHV0OiBwYWdnX3RhYi5iLCBtYXgocGFnZ190YWIuYSkKICAgIEdyb3VwIEtl eTogcGFnZ190YWIuYgotICAgRmlsdGVyOiAoc3VtKHBhZ2dfdGFiLmEpIDwgNzAwKQorICAgLT4g IFNvcnQKKyAgICAgICAgIE91dHB1dDogcGFnZ190YWIuYiwgKFBBUlRJQUwgbWF4KHBhZ2dfdGFi LmEpKQorICAgICAgICAgU29ydCBLZXk6IHBhZ2dfdGFiLmIKKyAgICAgICAgIC0+ICBBcHBlbmQK KyAgICAgICAgICAgICAgIC0+ICBQYXJ0aWFsIEhhc2hBZ2dyZWdhdGUKKyAgICAgICAgICAgICAg ICAgICAgIE91dHB1dDogcGFnZ190YWIuYiwgUEFSVElBTCBtYXgocGFnZ190YWIuYSkKKyAgICAg ICAgICAgICAgICAgICAgIEdyb3VwIEtleTogcGFnZ190YWIuYgorICAgICAgICAgICAgICAgICAg ICAgLT4gIEZvcmVpZ24gU2NhbiBvbiBwdWJsaWMuZnBhZ2dfdGFiX3AxIHBhZ2dfdGFiCisgICAg ICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHBhZ2dfdGFiLmIsIHBhZ2dfdGFiLmEKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIFJlbW90ZSBTUUw6IFNFTEVDVCBhLCBiIEZST00gcHVi bGljLnBhZ2dfdGFiX3AxCisgICAgICAgICAgICAgICAtPiAgUGFydGlhbCBIYXNoQWdncmVnYXRl CisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHBhZ2dfdGFiXzEuYiwgUEFSVElBTCBtYXgo cGFnZ190YWJfMS5hKQorICAgICAgICAgICAgICAgICAgICAgR3JvdXAgS2V5OiBwYWdnX3RhYl8x LmIKKyAgICAgICAgICAgICAgICAgICAgIC0+ICBGb3JlaWduIFNjYW4gb24gcHVibGljLmZwYWdn X3RhYl9wMiBwYWdnX3RhYl8xCisgICAgICAgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHBh Z2dfdGFiXzEuYiwgcGFnZ190YWJfMS5hCisgICAgICAgICAgICAgICAgICAgICAgICAgICBSZW1v dGUgU1FMOiBTRUxFQ1QgYSwgYiBGUk9NIHB1YmxpYy5wYWdnX3RhYl9wMgorICAgICAgICAgICAg ICAgLT4gIFBhcnRpYWwgSGFzaEFnZ3JlZ2F0ZQorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0 OiBwYWdnX3RhYl8yLmIsIFBBUlRJQUwgbWF4KHBhZ2dfdGFiXzIuYSkKKyAgICAgICAgICAgICAg ICAgICAgIEdyb3VwIEtleTogcGFnZ190YWJfMi5iCisgICAgICAgICAgICAgICAgICAgICAtPiAg Rm9yZWlnbiBTY2FuIG9uIHB1YmxpYy5mcGFnZ190YWJfcDMgcGFnZ190YWJfMgorICAgICAgICAg ICAgICAgICAgICAgICAgICAgT3V0cHV0OiBwYWdnX3RhYl8yLmIsIHBhZ2dfdGFiXzIuYQorICAg ICAgICAgICAgICAgICAgICAgICAgICAgUmVtb3RlIFNRTDogU0VMRUNUIGEsIGIgRlJPTSBwdWJs aWMucGFnZ190YWJfcDMKKygyNSByb3dzKQorCitTRUxFQ1QgYiwgbWF4KGEpIEZST00gcGFnZ190 YWIgR1JPVVAgQlkgYiBPUkRFUiBCWSAxOworIGIgIHwgbWF4IAorLS0tLSstLS0tLQorICAwIHwg IDIwCisgIDEgfCAgMjEKKyAgMiB8ICAyMgorICAzIHwgIDIzCisgIDQgfCAgMjQKKyAgNSB8ICAy NQorICA2IHwgIDI2CisgIDcgfCAgMjcKKyAgOCB8ICAyOAorICA5IHwgIDI5CisgMTAgfCAgMjAK KyAxMSB8ICAyMQorIDEyIHwgIDIyCisgMTMgfCAgMjMKKyAxNCB8ICAyNAorIDE1IHwgIDI1Cisg MTYgfCAgMjYKKyAxNyB8ICAyNworIDE4IHwgIDI4CisgMTkgfCAgMjkKKyAyMCB8ICAyMAorIDIx IHwgIDIxCisgMjIgfCAgMjIKKyAyMyB8ICAyMworIDI0IHwgIDI0CisgMjUgfCAgMjUKKyAyNiB8 ICAyNgorIDI3IHwgIDI3CisgMjggfCAgMjgKKyAyOSB8ICAyOQorIDMwIHwgIDIwCisgMzEgfCAg MjEKKyAzMiB8ICAyMgorIDMzIHwgIDIzCisgMzQgfCAgMjQKKyAzNSB8ICAyNQorIDM2IHwgIDI2 CisgMzcgfCAgMjcKKyAzOCB8ICAyOAorIDM5IHwgIDI5CisgNDAgfCAgMjAKKyA0MSB8ICAyMQor IDQyIHwgIDIyCisgNDMgfCAgMjMKKyA0NCB8ICAyNAorIDQ1IHwgIDI1CisgNDYgfCAgMjYKKyA0 NyB8ICAyNworIDQ4IHwgIDI4CisgNDkgfCAgMjkKKyg1MCByb3dzKQorCitBTFRFUiBTRVJWRVIg bG9vcGJhY2sgT1BUSU9OUyAoU0VUIHBhcnRpYWxfYWdncmVnYXRlX3N1cHBvcnQgJ3RydWUnKTsK K0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCBiLCBtYXgoYSkgRlJPTSBwYWdn X3RhYiBHUk9VUCBCWSBiIE9SREVSIEJZIDE7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFFVRVJZIFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0KKyBTb3J0CisgICBPdXRwdXQ6IHBhZ2dfdGFiLmIsIChtYXgocGFnZ190YWIu YSkpCisgICBTb3J0IEtleTogcGFnZ190YWIuYgorICAgLT4gIEZpbmFsaXplIEhhc2hBZ2dyZWdh dGUKKyAgICAgICAgIE91dHB1dDogcGFnZ190YWIuYiwgbWF4KHBhZ2dfdGFiLmEpCisgICAgICAg ICBHcm91cCBLZXk6IHBhZ2dfdGFiLmIKKyAgICAgICAgIC0+ICBBcHBlbmQKKyAgICAgICAgICAg ICAgIC0+ICBGb3JlaWduIFNjYW4KKyAgICAgICAgICAgICAgICAgICAgIE91dHB1dDogcGFnZ190 YWIuYiwgKFBBUlRJQUwgbWF4KHBhZ2dfdGFiLmEpKQorICAgICAgICAgICAgICAgICAgICAgUmVs YXRpb25zOiBBZ2dyZWdhdGUgb24gKHB1YmxpYy5mcGFnZ190YWJfcDEgcGFnZ190YWIpCisgICAg ICAgICAgICAgICAgICAgICBSZW1vdGUgU1FMOiBTRUxFQ1QgYiwgbWF4KGEpIFBBUlRJQUxfQUdH UkVHQVRFICBGUk9NIHB1YmxpYy5wYWdnX3RhYl9wMSBHUk9VUCBCWSAxCisgICAgICAgICAgICAg ICAtPiAgRm9yZWlnbiBTY2FuCisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHBhZ2dfdGFi XzEuYiwgKFBBUlRJQUwgbWF4KHBhZ2dfdGFiXzEuYSkpCisgICAgICAgICAgICAgICAgICAgICBS ZWxhdGlvbnM6IEFnZ3JlZ2F0ZSBvbiAocHVibGljLmZwYWdnX3RhYl9wMiBwYWdnX3RhYl8xKQor ICAgICAgICAgICAgICAgICAgICAgUmVtb3RlIFNRTDogU0VMRUNUIGIsIG1heChhKSBQQVJUSUFM X0FHR1JFR0FURSAgRlJPTSBwdWJsaWMucGFnZ190YWJfcDIgR1JPVVAgQlkgMQorICAgICAgICAg ICAgICAgLT4gIEZvcmVpZ24gU2NhbgorICAgICAgICAgICAgICAgICAgICAgT3V0cHV0OiBwYWdn X3RhYl8yLmIsIChQQVJUSUFMIG1heChwYWdnX3RhYl8yLmEpKQorICAgICAgICAgICAgICAgICAg ICAgUmVsYXRpb25zOiBBZ2dyZWdhdGUgb24gKHB1YmxpYy5mcGFnZ190YWJfcDMgcGFnZ190YWJf MikKKyAgICAgICAgICAgICAgICAgICAgIFJlbW90ZSBTUUw6IFNFTEVDVCBiLCBtYXgoYSkgUEFS VElBTF9BR0dSRUdBVEUgIEZST00gcHVibGljLnBhZ2dfdGFiX3AzIEdST1VQIEJZIDEKKygxOSBy b3dzKQorCitTRUxFQ1QgYiwgbWF4KGEpIEZST00gcGFnZ190YWIgR1JPVVAgQlkgYiBPUkRFUiBC WSAxOworIGIgIHwgbWF4IAorLS0tLSstLS0tLQorICAwIHwgIDIwCisgIDEgfCAgMjEKKyAgMiB8 ICAyMgorICAzIHwgIDIzCisgIDQgfCAgMjQKKyAgNSB8ICAyNQorICA2IHwgIDI2CisgIDcgfCAg MjcKKyAgOCB8ICAyOAorICA5IHwgIDI5CisgMTAgfCAgMjAKKyAxMSB8ICAyMQorIDEyIHwgIDIy CisgMTMgfCAgMjMKKyAxNCB8ICAyNAorIDE1IHwgIDI1CisgMTYgfCAgMjYKKyAxNyB8ICAyNwor IDE4IHwgIDI4CisgMTkgfCAgMjkKKyAyMCB8ICAyMAorIDIxIHwgIDIxCisgMjIgfCAgMjIKKyAy MyB8ICAyMworIDI0IHwgIDI0CisgMjUgfCAgMjUKKyAyNiB8ICAyNgorIDI3IHwgIDI3CisgMjgg fCAgMjgKKyAyOSB8ICAyOQorIDMwIHwgIDIwCisgMzEgfCAgMjEKKyAzMiB8ICAyMgorIDMzIHwg IDIzCisgMzQgfCAgMjQKKyAzNSB8ICAyNQorIDM2IHwgIDI2CisgMzcgfCAgMjcKKyAzOCB8ICAy OAorIDM5IHwgIDI5CisgNDAgfCAgMjAKKyA0MSB8ICAyMQorIDQyIHwgIDIyCisgNDMgfCAgMjMK KyA0NCB8ICAyNAorIDQ1IHwgIDI1CisgNDYgfCAgMjYKKyA0NyB8ICAyNworIDQ4IHwgIDI4Cisg NDkgfCAgMjkKKyg1MCByb3dzKQorCitBTFRFUiBTRVJWRVIgbG9vcGJhY2sgT1BUSU9OUyAoU0VU IGZkd190dXBsZV9jb3N0ICcxLjAnKTsKK1NFVCBlbmFibGVfcGFydGl0aW9ud2lzZV9qb2luPW9u OworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIG1heCh0MS5iKSBGUk9NIHBh Z2dfdGFiIHQxIEpPSU4gcGFnZ190YWIgdDIgVVNJTkcoYSk7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZIFBM QU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIAorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBGaW5hbGl6 ZSBBZ2dyZWdhdGUKKyAgIE91dHB1dDogbWF4KHQxLmIpCisgICAtPiAgQXBwZW5kCisgICAgICAg ICAtPiAgRm9yZWlnbiBTY2FuCisgICAgICAgICAgICAgICBPdXRwdXQ6IChQQVJUSUFMIG1heCh0 MS5iKSkKKyAgICAgICAgICAgICAgIFJlbGF0aW9uczogQWdncmVnYXRlIG9uICgocHVibGljLmZw YWdnX3RhYl9wMSB0MSkgSU5ORVIgSk9JTiAocHVibGljLmZwYWdnX3RhYl9wMSB0MikpCisgICAg ICAgICAgICAgICBSZW1vdGUgU1FMOiBTRUxFQ1QgbWF4KHI0LmIpIFBBUlRJQUxfQUdHUkVHQVRF ICBGUk9NIChwdWJsaWMucGFnZ190YWJfcDEgcjQgSU5ORVIgSk9JTiBwdWJsaWMucGFnZ190YWJf cDEgcjcgT04gKCgocjQuYSA9IHI3LmEpKSkpCisgICAgICAgICAtPiAgRm9yZWlnbiBTY2FuCisg ICAgICAgICAgICAgICBPdXRwdXQ6IChQQVJUSUFMIG1heCh0MV8xLmIpKQorICAgICAgICAgICAg ICAgUmVsYXRpb25zOiBBZ2dyZWdhdGUgb24gKChwdWJsaWMuZnBhZ2dfdGFiX3AyIHQxXzEpIElO TkVSIEpPSU4gKHB1YmxpYy5mcGFnZ190YWJfcDIgdDJfMSkpCisgICAgICAgICAgICAgICBSZW1v dGUgU1FMOiBTRUxFQ1QgbWF4KHI1LmIpIFBBUlRJQUxfQUdHUkVHQVRFICBGUk9NIChwdWJsaWMu cGFnZ190YWJfcDIgcjUgSU5ORVIgSk9JTiBwdWJsaWMucGFnZ190YWJfcDIgcjggT04gKCgocjUu YSA9IHI4LmEpKSkpCisgICAgICAgICAtPiAgRm9yZWlnbiBTY2FuCisgICAgICAgICAgICAgICBP dXRwdXQ6IChQQVJUSUFMIG1heCh0MV8yLmIpKQorICAgICAgICAgICAgICAgUmVsYXRpb25zOiBB Z2dyZWdhdGUgb24gKChwdWJsaWMuZnBhZ2dfdGFiX3AzIHQxXzIpIElOTkVSIEpPSU4gKHB1Ymxp Yy5mcGFnZ190YWJfcDMgdDJfMikpCisgICAgICAgICAgICAgICBSZW1vdGUgU1FMOiBTRUxFQ1Qg bWF4KHI2LmIpIFBBUlRJQUxfQUdHUkVHQVRFICBGUk9NIChwdWJsaWMucGFnZ190YWJfcDMgcjYg SU5ORVIgSk9JTiBwdWJsaWMucGFnZ190YWJfcDMgcjkgT04gKCgocjYuYSA9IHI5LmEpKSkpCiso MTUgcm93cykKKworU0VMRUNUIG1heCh0MS5iKSBGUk9NIHBhZ2dfdGFiIHQxIEpPSU4gcGFnZ190 YWIgdDIgVVNJTkcoYSk7CisgbWF4IAorLS0tLS0KKyAgNDkKKygxIHJvdykKKworUkVTRVQgZW5h YmxlX3BhcnRpdGlvbndpc2Vfam9pbjsKK0FMVEVSIFNFUlZFUiBsb29wYmFjayBPUFRJT05TIChT RVQgZmR3X3R1cGxlX2Nvc3QgJzAuMScpOworQUxURVIgU0VSVkVSIGxvb3BiYWNrIE9QVElPTlMg KERST1AgcGFydGlhbF9hZ2dyZWdhdGVfc3VwcG9ydCk7CistLSBJdCBpcyB1bnNhZmUgdG8gcHVz aCBkb3duIHBhcnRpYWwgYWdncmVnYXRlcyB3aGljaCBjb250YWluIERJU1RJTkNUIGNsYXVzZXMK K0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCBtYXgoYSksIGNvdW50KGRpc3Rp bmN0IGIpIEZST00gcGFnZ190YWI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAor LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBBZ2dyZWdhdGUKKyAgIE91dHB1dDog bWF4KHBhZ2dfdGFiLmEpLCBjb3VudChESVNUSU5DVCBwYWdnX3RhYi5iKQogICAgLT4gIE1lcmdl IEFwcGVuZAogICAgICAgICAgU29ydCBLZXk6IHBhZ2dfdGFiLmIKLSAgICAgICAgIC0+ICBQYXJ0 aWFsIEdyb3VwQWdncmVnYXRlCi0gICAgICAgICAgICAgICBHcm91cCBLZXk6IHBhZ2dfdGFiLmIK LSAgICAgICAgICAgICAgIC0+ICBGb3JlaWduIFNjYW4gb24gZnBhZ2dfdGFiX3AxIHBhZ2dfdGFi Ci0gICAgICAgICAtPiAgUGFydGlhbCBHcm91cEFnZ3JlZ2F0ZQotICAgICAgICAgICAgICAgR3Jv dXAgS2V5OiBwYWdnX3RhYl8xLmIKLSAgICAgICAgICAgICAgIC0+ICBGb3JlaWduIFNjYW4gb24g ZnBhZ2dfdGFiX3AyIHBhZ2dfdGFiXzEKLSAgICAgICAgIC0+ICBQYXJ0aWFsIEdyb3VwQWdncmVn YXRlCi0gICAgICAgICAgICAgICBHcm91cCBLZXk6IHBhZ2dfdGFiXzIuYgotICAgICAgICAgICAg ICAgLT4gIEZvcmVpZ24gU2NhbiBvbiBmcGFnZ190YWJfcDMgcGFnZ190YWJfMgotKDE0IHJvd3Mp CisgICAgICAgICAtPiAgRm9yZWlnbiBTY2FuIG9uIHB1YmxpYy5mcGFnZ190YWJfcDEgcGFnZ190 YWJfMQorICAgICAgICAgICAgICAgT3V0cHV0OiBwYWdnX3RhYl8xLmEsIHBhZ2dfdGFiXzEuYgor ICAgICAgICAgICAgICAgUmVtb3RlIFNRTDogU0VMRUNUIGEsIGIgRlJPTSBwdWJsaWMucGFnZ190 YWJfcDEgT1JERVIgQlkgYiBBU0MgTlVMTFMgTEFTVAorICAgICAgICAgLT4gIEZvcmVpZ24gU2Nh biBvbiBwdWJsaWMuZnBhZ2dfdGFiX3AyIHBhZ2dfdGFiXzIKKyAgICAgICAgICAgICAgIE91dHB1 dDogcGFnZ190YWJfMi5hLCBwYWdnX3RhYl8yLmIKKyAgICAgICAgICAgICAgIFJlbW90ZSBTUUw6 IFNFTEVDVCBhLCBiIEZST00gcHVibGljLnBhZ2dfdGFiX3AyIE9SREVSIEJZIGIgQVNDIE5VTExT IExBU1QKKyAgICAgICAgIC0+ICBGb3JlaWduIFNjYW4gb24gcHVibGljLmZwYWdnX3RhYl9wMyBw YWdnX3RhYl8zCisgICAgICAgICAgICAgICBPdXRwdXQ6IHBhZ2dfdGFiXzMuYSwgcGFnZ190YWJf My5iCisgICAgICAgICAgICAgICBSZW1vdGUgU1FMOiBTRUxFQ1QgYSwgYiBGUk9NIHB1YmxpYy5w YWdnX3RhYl9wMyBPUkRFUiBCWSBiIEFTQyBOVUxMUyBMQVNUCisoMTMgcm93cykKKworU0VMRUNU IG1heChhKSwgY291bnQoZGlzdGluY3QgYikgRlJPTSBwYWdnX3RhYjsKKyBtYXggfCBjb3VudCAK Ky0tLS0tKy0tLS0tLS0KKyAgMjkgfCAgICA1MAorKDEgcm93KQorCistLSBJdCBpcyB1bnNhZmUg dG8gcHVzaCBkb3duIHBhcnRpYWwgYWdncmVnYXRlcyB3aGljaCBjb250YWluIE9SREVSIEJZIGNs YXVzZXMKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikgU0VMRUNUIGFycmF5X2FnZyhiIG9y ZGVyIGJ5IGIpIEZST00gcGFnZ190YWIgV0hFUkUgY19zZXJpYWwgYmV0d2VlbiAxIGFuZCAzMDsK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFFVRVJZ IFBMQU4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQorIEFnZ3JlZ2F0ZQorICAgT3V0cHV0OiBhcnJheV9hZ2cocGFnZ190YWIuYiBPUkRFUiBCWSBw YWdnX3RhYi5iKQorICAgLT4gIFNvcnQKKyAgICAgICAgIE91dHB1dDogcGFnZ190YWIuYgorICAg ICAgICAgU29ydCBLZXk6IHBhZ2dfdGFiLmIKKyAgICAgICAgIC0+ICBBcHBlbmQKKyAgICAgICAg ICAgICAgIC0+ICBGb3JlaWduIFNjYW4gb24gcHVibGljLmZwYWdnX3RhYl9wMSBwYWdnX3RhYl8x CisgICAgICAgICAgICAgICAgICAgICBPdXRwdXQ6IHBhZ2dfdGFiXzEuYgorICAgICAgICAgICAg ICAgICAgICAgUmVtb3RlIFNRTDogU0VMRUNUIGIgRlJPTSBwdWJsaWMucGFnZ190YWJfcDEgV0hF UkUgKChjX3NlcmlhbCA+PSAxKSkgQU5EICgoY19zZXJpYWwgPD0gMzApKQorICAgICAgICAgICAg ICAgLT4gIEZvcmVpZ24gU2NhbiBvbiBwdWJsaWMuZnBhZ2dfdGFiX3AyIHBhZ2dfdGFiXzIKKyAg ICAgICAgICAgICAgICAgICAgIE91dHB1dDogcGFnZ190YWJfMi5iCisgICAgICAgICAgICAgICAg ICAgICBSZW1vdGUgU1FMOiBTRUxFQ1QgYiBGUk9NIHB1YmxpYy5wYWdnX3RhYl9wMiBXSEVSRSAo KGNfc2VyaWFsID49IDEpKSBBTkQgKChjX3NlcmlhbCA8PSAzMCkpCisgICAgICAgICAgICAgICAt PiAgRm9yZWlnbiBTY2FuIG9uIHB1YmxpYy5mcGFnZ190YWJfcDMgcGFnZ190YWJfMworICAgICAg ICAgICAgICAgICAgICAgT3V0cHV0OiBwYWdnX3RhYl8zLmIKKyAgICAgICAgICAgICAgICAgICAg IFJlbW90ZSBTUUw6IFNFTEVDVCBiIEZST00gcHVibGljLnBhZ2dfdGFiX3AzIFdIRVJFICgoY19z ZXJpYWwgPj0gMSkpIEFORCAoKGNfc2VyaWFsIDw9IDMwKSkKKygxNSByb3dzKQorCitTRUxFQ1Qg YXJyYXlfYWdnKGIgb3JkZXIgYnkgYikgRlJPTSBwYWdnX3RhYiBXSEVSRSBjX3NlcmlhbCBiZXR3 ZWVuIDEgYW5kIDMwOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFycmF5 X2FnZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCistLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0KKyB7MSwyLDMsNCw1LDYsNyw4LDksMTAsMTEsMTIsMTMsMTQsMTUsMTYs MTcsMTgsMTksMjAsMjEsMjIsMjMsMjQsMjUsMjYsMjcsMjgsMjksMzB9CisoMSByb3cpCiAKK0FM VEVSIFNFUlZFUiBsb29wYmFjayBPUFRJT05TIChEUk9QIGZkd190dXBsZV9jb3N0KTsKK1JFU0VU IFRpbWVab25lOwogLS0gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0gYWNjZXNzIHJpZ2h0cyBhbmQgc3VwZXJ1c2Vy CiAtLSA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09CmRpZmYgLS1naXQgYS9jb250cmliL3Bvc3RncmVzX2Zkdy9vcHRpb24u YyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L29wdGlvbi5jCmluZGV4IGQwNzY2ZjAwN2QyLi5kM2Fh ZDE3Njk0MiAxMDA2NDQKLS0tIGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvb3B0aW9uLmMKKysrIGIv Y29udHJpYi9wb3N0Z3Jlc19mZHcvb3B0aW9uLmMKQEAgLTEyNSw3ICsxMjUsOCBAQCBwb3N0Z3Jl c19mZHdfdmFsaWRhdG9yKFBHX0ZVTkNUSU9OX0FSR1MpCiAJCQlzdHJjbXAoZGVmLT5kZWZuYW1l LCAiYXN5bmNfY2FwYWJsZSIpID09IDAgfHwKIAkJCXN0cmNtcChkZWYtPmRlZm5hbWUsICJwYXJh bGxlbF9jb21taXQiKSA9PSAwIHx8CiAJCQlzdHJjbXAoZGVmLT5kZWZuYW1lLCAicGFyYWxsZWxf YWJvcnQiKSA9PSAwIHx8Ci0JCQlzdHJjbXAoZGVmLT5kZWZuYW1lLCAia2VlcF9jb25uZWN0aW9u cyIpID09IDApCisJCQlzdHJjbXAoZGVmLT5kZWZuYW1lLCAia2VlcF9jb25uZWN0aW9ucyIpID09 IDAgfHwKKwkJCXN0cmNtcChkZWYtPmRlZm5hbWUsICJwYXJ0aWFsX2FnZ3JlZ2F0ZV9zdXBwb3J0 IikgPT0gMCkKIAkJewogCQkJLyogdGhlc2UgYWNjZXB0IG9ubHkgYm9vbGVhbiB2YWx1ZXMgKi8K IAkJCSh2b2lkKSBkZWZHZXRCb29sZWFuKGRlZik7CkBAIC0yNjcsNiArMjY4LDcgQEAgSW5pdFBn RmR3T3B0aW9ucyh2b2lkKQogCQkvKiBiYXRjaF9zaXplIGlzIGF2YWlsYWJsZSBvbiBib3RoIHNl cnZlciBhbmQgdGFibGUgKi8KIAkJeyJiYXRjaF9zaXplIiwgRm9yZWlnblNlcnZlclJlbGF0aW9u SWQsIGZhbHNlfSwKIAkJeyJiYXRjaF9zaXplIiwgRm9yZWlnblRhYmxlUmVsYXRpb25JZCwgZmFs c2V9LAorCQl7InBhcnRpYWxfYWdncmVnYXRlX3N1cHBvcnQiLCBGb3JlaWduU2VydmVyUmVsYXRp b25JZCwgZmFsc2V9LAogCQkvKiBhc3luY19jYXBhYmxlIGlzIGF2YWlsYWJsZSBvbiBib3RoIHNl cnZlciBhbmQgdGFibGUgKi8KIAkJeyJhc3luY19jYXBhYmxlIiwgRm9yZWlnblNlcnZlclJlbGF0 aW9uSWQsIGZhbHNlfSwKIAkJeyJhc3luY19jYXBhYmxlIiwgRm9yZWlnblRhYmxlUmVsYXRpb25J ZCwgZmFsc2V9LApkaWZmIC0tZ2l0IGEvY29udHJpYi9wb3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3 LmMgYi9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuYwppbmRleCAxMTMxYThiZjc3 ZS4uYmY3NWYzNDdmYzAgMTAwNjQ0Ci0tLSBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVz X2Zkdy5jCisrKyBiL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5jCkBAIC0xOCw2 ICsxOCw4IEBACiAjaW5jbHVkZSAiYWNjZXNzL3N5c2F0dHIuaCIKICNpbmNsdWRlICJhY2Nlc3Mv dGFibGUuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX29wZmFtaWx5LmgiCisjaW5jbHVkZSAiY2F0 YWxvZy9wZ19hZ2dyZWdhdGUuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3Byb2MuaCIKICNpbmNs dWRlICJjb21tYW5kcy9kZWZyZW0uaCIKICNpbmNsdWRlICJjb21tYW5kcy9leHBsYWluLmgiCiAj aW5jbHVkZSAiY29tbWFuZHMvZXhwbGFpbl9mb3JtYXQuaCIKQEAgLTM0LDYgKzM2LDcgQEAKICNp bmNsdWRlICJvcHRpbWl6ZXIvcGF0aG5vZGUuaCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvcGF0aHMu aCIKICNpbmNsdWRlICJvcHRpbWl6ZXIvcGxhbm1haW4uaCIKKyNpbmNsdWRlICJvcHRpbWl6ZXIv cGxhbm5lci5oIgogI2luY2x1ZGUgIm9wdGltaXplci9wcmVwLmgiCiAjaW5jbHVkZSAib3B0aW1p emVyL3Jlc3RyaWN0aW5mby5oIgogI2luY2x1ZGUgIm9wdGltaXplci90bGlzdC5oIgpAQCAtNDgs NiArNTEsNyBAQAogI2luY2x1ZGUgInV0aWxzL3JlbC5oIgogI2luY2x1ZGUgInV0aWxzL3NhbXBs aW5nLmgiCiAjaW5jbHVkZSAidXRpbHMvc2VsZnVuY3MuaCIKKyNpbmNsdWRlICJ1dGlscy9zeXNj YWNoZS5oIgogCiBQR19NT0RVTEVfTUFHSUM7CiAKQEAgLTUxOSw3ICs1MjMsNyBAQCBzdGF0aWMg Ym9vbCBmb3JlaWduX2pvaW5fb2soUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKmpvaW5y ZWwsCiAJCQkJCQkJSm9pblR5cGUgam9pbnR5cGUsIFJlbE9wdEluZm8gKm91dGVycmVsLCBSZWxP cHRJbmZvICppbm5lcnJlbCwKIAkJCQkJCQlKb2luUGF0aEV4dHJhRGF0YSAqZXh0cmEpOwogc3Rh dGljIGJvb2wgZm9yZWlnbl9ncm91cGluZ19vayhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5m byAqZ3JvdXBlZF9yZWwsCi0JCQkJCQkJCU5vZGUgKmhhdmluZ1F1YWwpOworCQkJCQkJCQlHcm91 cFBhdGhFeHRyYURhdGEgKmV4dHJhKTsKIHN0YXRpYyBMaXN0ICpnZXRfdXNlZnVsX3BhdGhrZXlz X2Zvcl9yZWxhdGlvbihQbGFubmVySW5mbyAqcm9vdCwKIAkJCQkJCQkJCQkJICBSZWxPcHRJbmZv ICpyZWwpOwogc3RhdGljIExpc3QgKmdldF91c2VmdWxfZWNzX2Zvcl9yZWxhdGlvbihQbGFubmVy SW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAqcmVsKTsKQEAgLTY1MCw2ICs2NTQsOCBAQCBwb3N0Z3Jl c0dldEZvcmVpZ25SZWxTaXplKFBsYW5uZXJJbmZvICpyb290LAogCWZwaW5mby0+ZmR3X3R1cGxl X2Nvc3QgPSBERUZBVUxUX0ZEV19UVVBMRV9DT1NUOwogCWZwaW5mby0+c2hpcHBhYmxlX2V4dGVu c2lvbnMgPSBOSUw7CiAJZnBpbmZvLT5mZXRjaF9zaXplID0gMTAwOworCWZwaW5mby0+cmVtb3Rl dmVyc2lvbiA9IDA7CisJZnBpbmZvLT5wYXJ0aWFsX2FnZ3JlZ2F0ZV9zdXBwb3J0ID0gdHJ1ZTsK IAlmcGluZm8tPmFzeW5jX2NhcGFibGUgPSBmYWxzZTsKIAogCWFwcGx5X3NlcnZlcl9vcHRpb25z KGZwaW5mbyk7CkBAIC02NjEsNyArNjY3LDcgQEAgcG9zdGdyZXNHZXRGb3JlaWduUmVsU2l6ZShQ bGFubmVySW5mbyAqcm9vdCwKIAkgKiBzaG91bGQgbWF0Y2ggd2hhdCBFeGVjQ2hlY2tQZXJtaXNz aW9ucygpIGRvZXMuICBJZiB3ZSBmYWlsIGR1ZSB0byBsYWNrCiAJICogb2YgcGVybWlzc2lvbnMs IHRoZSBxdWVyeSB3b3VsZCBoYXZlIGZhaWxlZCBhdCBydW50aW1lIGFueXdheS4KIAkgKi8KLQlp ZiAoZnBpbmZvLT51c2VfcmVtb3RlX2VzdGltYXRlKQorCWlmIChmcGluZm8tPnVzZV9yZW1vdGVf ZXN0aW1hdGUgfHwgZnBpbmZvLT5wYXJ0aWFsX2FnZ3JlZ2F0ZV9zdXBwb3J0KQogCXsKIAkJT2lk CQkJdXNlcmlkOwogCkBAIC02MDUyLDkgKzYwNTgsOSBAQCBmb3JlaWduX2pvaW5fb2soUGxhbm5l ckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKmpvaW5yZWwsIEpvaW5UeXBlIGpvaW50eXBlLAogCWZw aW5mby0+cHVzaGRvd25fc2FmZSA9IHRydWU7CiAKIAkvKiBHZXQgdXNlciBtYXBwaW5nICovCi0J aWYgKGZwaW5mby0+dXNlX3JlbW90ZV9lc3RpbWF0ZSkKKwlpZiAoZnBpbmZvLT51c2VfcmVtb3Rl X2VzdGltYXRlIHx8IGZwaW5mby0+cGFydGlhbF9hZ2dyZWdhdGVfc3VwcG9ydCkKIAl7Ci0JCWlm IChmcGluZm9fby0+dXNlX3JlbW90ZV9lc3RpbWF0ZSkKKwkJaWYgKGZwaW5mb19vLT51c2VfcmVt b3RlX2VzdGltYXRlIHx8IGZwaW5mb19vLT5wYXJ0aWFsX2FnZ3JlZ2F0ZV9zdXBwb3J0KQogCQkJ ZnBpbmZvLT51c2VyID0gZnBpbmZvX28tPnVzZXI7CiAJCWVsc2UKIAkJCWZwaW5mby0+dXNlciA9 IGZwaW5mb19pLT51c2VyOwpAQCAtNjIyOSw2ICs2MjM1LDggQEAgYXBwbHlfc2VydmVyX29wdGlv bnMoUGdGZHdSZWxhdGlvbkluZm8gKmZwaW5mbykKIAogCQlpZiAoc3RyY21wKGRlZi0+ZGVmbmFt ZSwgInVzZV9yZW1vdGVfZXN0aW1hdGUiKSA9PSAwKQogCQkJZnBpbmZvLT51c2VfcmVtb3RlX2Vz dGltYXRlID0gZGVmR2V0Qm9vbGVhbihkZWYpOworCQllbHNlIGlmIChzdHJjbXAoZGVmLT5kZWZu YW1lLCAicGFydGlhbF9hZ2dyZWdhdGVfc3VwcG9ydCIpID09IDApCisJCQlmcGluZm8tPnBhcnRp YWxfYWdncmVnYXRlX3N1cHBvcnQgPSBkZWZHZXRCb29sZWFuKGRlZik7CiAJCWVsc2UgaWYgKHN0 cmNtcChkZWYtPmRlZm5hbWUsICJmZHdfc3RhcnR1cF9jb3N0IikgPT0gMCkKIAkJCSh2b2lkKSBw YXJzZV9yZWFsKGRlZkdldFN0cmluZyhkZWYpLCAmZnBpbmZvLT5mZHdfc3RhcnR1cF9jb3N0LCAw LAogCQkJCQkJCSAgTlVMTCk7CkBAIC02Mjk5LDYgKzYzMDcsOCBAQCBtZXJnZV9mZHdfb3B0aW9u cyhQZ0Zkd1JlbGF0aW9uSW5mbyAqZnBpbmZvLAogCWZwaW5mby0+c2hpcHBhYmxlX2V4dGVuc2lv bnMgPSBmcGluZm9fby0+c2hpcHBhYmxlX2V4dGVuc2lvbnM7CiAJZnBpbmZvLT51c2VfcmVtb3Rl X2VzdGltYXRlID0gZnBpbmZvX28tPnVzZV9yZW1vdGVfZXN0aW1hdGU7CiAJZnBpbmZvLT5mZXRj aF9zaXplID0gZnBpbmZvX28tPmZldGNoX3NpemU7CisJZnBpbmZvLT5yZW1vdGV2ZXJzaW9uID0g ZnBpbmZvX28tPnJlbW90ZXZlcnNpb247CisJZnBpbmZvLT5wYXJ0aWFsX2FnZ3JlZ2F0ZV9zdXBw b3J0ID0gZnBpbmZvX28tPnBhcnRpYWxfYWdncmVnYXRlX3N1cHBvcnQ7CiAJZnBpbmZvLT5hc3lu Y19jYXBhYmxlID0gZnBpbmZvX28tPmFzeW5jX2NhcGFibGU7CiAKIAkvKiBNZXJnZSB0aGUgdGFi bGUgbGV2ZWwgb3B0aW9ucyBmcm9tIGVpdGhlciBzaWRlIG9mIHRoZSBqb2luLiAqLwpAQCAtNjQ4 NSw3ICs2NDk1LDcgQEAgcG9zdGdyZXNHZXRGb3JlaWduSm9pblBhdGhzKFBsYW5uZXJJbmZvICpy b290LAogICovCiBzdGF0aWMgYm9vbAogZm9yZWlnbl9ncm91cGluZ19vayhQbGFubmVySW5mbyAq cm9vdCwgUmVsT3B0SW5mbyAqZ3JvdXBlZF9yZWwsCi0JCQkJCU5vZGUgKmhhdmluZ1F1YWwpCisJ CQkJCUdyb3VwUGF0aEV4dHJhRGF0YSAqZXh0cmEpCiB7CiAJUXVlcnkJICAgKnF1ZXJ5ID0gcm9v dC0+cGFyc2U7CiAJUGdGZHdSZWxhdGlvbkluZm8gKmZwaW5mbyA9IChQZ0Zkd1JlbGF0aW9uSW5m byAqKSBncm91cGVkX3JlbC0+ZmR3X3ByaXZhdGU7CkBAIC02NDk0LDYgKzY1MDQsNyBAQCBmb3Jl aWduX2dyb3VwaW5nX29rKFBsYW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpncm91cGVkX3Jl bCwKIAlMaXN0Q2VsbCAgICpsYzsKIAlpbnQJCQlpOwogCUxpc3QJICAgKnRsaXN0ID0gTklMOwor CWJvb2wJCXBhcnRpYWwgPSBleHRyYS0+cGF0eXBlID09IFBBUlRJVElPTldJU0VfQUdHUkVHQVRF X1BBUlRJQUw7CiAKIAkvKiBXZSBjdXJyZW50bHkgZG9uJ3Qgc3VwcG9ydCBwdXNoaW5nIEdyb3Vw aW5nIFNldHMuICovCiAJaWYgKHF1ZXJ5LT5ncm91cGluZ1NldHMpCkBAIC02NTI3LDYgKzY1Mzgs MTIgQEAgZm9yZWlnbl9ncm91cGluZ19vayhQbGFubmVySW5mbyAqcm9vdCwgUmVsT3B0SW5mbyAq Z3JvdXBlZF9yZWwsCiAJICogYSBub2RlLCBhcyBsb25nIGFzIGl0J3Mgbm90IGF0IHRvcCBsZXZl bDsgdGhlbiBubyBtYXRjaCBpcyBwb3NzaWJsZS4KIAkgKi8KIAlpID0gMDsKKwlmcGluZm8tPmdy b3VwX2NsYXVzZSA9IHF1ZXJ5LT5ncm91cENsYXVzZTsKKwlpZiAocGFydGlhbCkKKwl7CisJCWZw aW5mby0+Z3JvdXBfY2xhdXNlID0gZXh0cmEtPmdyb3VwQ2xhdXNlUGFydGlhbDsKKwkJZ3JvdXBp bmdfdGFyZ2V0ID0gZXh0cmEtPnBhcnRpYWxfdGFyZ2V0OworCX0KIAlmb3JlYWNoKGxjLCBncm91 cGluZ190YXJnZXQtPmV4cHJzKQogCXsKIAkJRXhwcgkgICAqZXhwciA9IChFeHByICopIGxmaXJz dChsYyk7CkBAIC02NTM4LDcgKzY1NTUsNyBAQCBmb3JlaWduX2dyb3VwaW5nX29rKFBsYW5uZXJJ bmZvICpyb290LCBSZWxPcHRJbmZvICpncm91cGVkX3JlbCwKIAkJICogY2hlY2sgdGhlIHdob2xl IEdST1VQIEJZIGNsYXVzZSBub3QganVzdCBwcm9jZXNzZWRfZ3JvdXBDbGF1c2UsCiAJCSAqIGJl Y2F1c2Ugd2Ugd2lsbCBzaGlwIGFsbCBvZiBpdCwgY2YuIGFwcGVuZEdyb3VwQnlDbGF1c2UuCiAJ CSAqLwotCQlpZiAoc2dyZWYgJiYgZ2V0X3NvcnRncm91cHJlZl9jbGF1c2Vfbm9lcnIoc2dyZWYs IHF1ZXJ5LT5ncm91cENsYXVzZSkpCisJCWlmIChzZ3JlZiAmJiBnZXRfc29ydGdyb3VwcmVmX2Ns YXVzZV9ub2VycihzZ3JlZiwgZnBpbmZvLT5ncm91cF9jbGF1c2UpKQogCQl7CiAJCQlUYXJnZXRF bnRyeSAqdGxlOwogCkBAIC02NjI0LDkgKzY2NDEsOSBAQCBmb3JlaWduX2dyb3VwaW5nX29rKFBs YW5uZXJJbmZvICpyb290LCBSZWxPcHRJbmZvICpncm91cGVkX3JlbCwKIAkgKiBDbGFzc2lmeSB0 aGUgcHVzaGFibGUgYW5kIG5vbi1wdXNoYWJsZSBIQVZJTkcgY2xhdXNlcyBhbmQgc2F2ZSB0aGVt IGluCiAJICogcmVtb3RlX2NvbmRzIGFuZCBsb2NhbF9jb25kcyBvZiB0aGUgZ3JvdXBlZCByZWwn cyBmcGluZm8uCiAJICovCi0JaWYgKGhhdmluZ1F1YWwpCisJaWYgKGV4dHJhLT5oYXZpbmdRdWFs ICYmICFwYXJ0aWFsKQogCXsKLQkJZm9yZWFjaChsYywgKExpc3QgKikgaGF2aW5nUXVhbCkKKwkJ Zm9yZWFjaChsYywgKExpc3QgKikgZXh0cmEtPmhhdmluZ1F1YWwpCiAJCXsKIAkJCUV4cHIJICAg KmV4cHIgPSAoRXhwciAqKSBsZmlyc3QobGMpOwogCQkJUmVzdHJpY3RJbmZvICpyaW5mbzsKQEAg LTY3NDAsNiArNjc1Nyw3IEBAIHBvc3RncmVzR2V0Rm9yZWlnblVwcGVyUGF0aHMoUGxhbm5lcklu Zm8gKnJvb3QsIFVwcGVyUmVsYXRpb25LaW5kIHN0YWdlLAogCiAJLyogSWdub3JlIHN0YWdlcyB3 ZSBkb24ndCBzdXBwb3J0OyBhbmQgc2tpcCBhbnkgZHVwbGljYXRlIGNhbGxzLiAqLwogCWlmICgo c3RhZ2UgIT0gVVBQRVJSRUxfR1JPVVBfQUdHICYmCisJCSBzdGFnZSAhPSBVUFBFUlJFTF9QQVJU SUFMX0dST1VQX0FHRyAmJgogCQkgc3RhZ2UgIT0gVVBQRVJSRUxfT1JERVJFRCAmJgogCQkgc3Rh Z2UgIT0gVVBQRVJSRUxfRklOQUwpIHx8CiAJCW91dHB1dF9yZWwtPmZkd19wcml2YXRlKQpAQCAt Njc1Niw2ICs2Nzc0LDEwIEBAIHBvc3RncmVzR2V0Rm9yZWlnblVwcGVyUGF0aHMoUGxhbm5lcklu Zm8gKnJvb3QsIFVwcGVyUmVsYXRpb25LaW5kIHN0YWdlLAogCQkJYWRkX2ZvcmVpZ25fZ3JvdXBp bmdfcGF0aHMocm9vdCwgaW5wdXRfcmVsLCBvdXRwdXRfcmVsLAogCQkJCQkJCQkJICAgKEdyb3Vw UGF0aEV4dHJhRGF0YSAqKSBleHRyYSk7CiAJCQlicmVhazsKKwkJY2FzZSBVUFBFUlJFTF9QQVJU SUFMX0dST1VQX0FHRzoKKwkJCWFkZF9mb3JlaWduX2dyb3VwaW5nX3BhdGhzKHJvb3QsIGlucHV0 X3JlbCwgb3V0cHV0X3JlbCwKKwkJCQkJCQkJCSAgIChHcm91cFBhdGhFeHRyYURhdGEgKikgZXh0 cmEpOworCQkJYnJlYWs7CiAJCWNhc2UgVVBQRVJSRUxfT1JERVJFRDoKIAkJCWFkZF9mb3JlaWdu X29yZGVyZWRfcGF0aHMocm9vdCwgaW5wdXRfcmVsLCBvdXRwdXRfcmVsKTsKIAkJCWJyZWFrOwpA QCAtNjc5Nyw3ICs2ODE5LDggQEAgYWRkX2ZvcmVpZ25fZ3JvdXBpbmdfcGF0aHMoUGxhbm5lcklu Zm8gKnJvb3QsIFJlbE9wdEluZm8gKmlucHV0X3JlbCwKIAkJcmV0dXJuOwogCiAJQXNzZXJ0KGV4 dHJhLT5wYXR5cGUgPT0gUEFSVElUSU9OV0lTRV9BR0dSRUdBVEVfTk9ORSB8fAotCQkgICBleHRy YS0+cGF0eXBlID09IFBBUlRJVElPTldJU0VfQUdHUkVHQVRFX0ZVTEwpOworCQkgICBleHRyYS0+ cGF0eXBlID09IFBBUlRJVElPTldJU0VfQUdHUkVHQVRFX0ZVTEwgfHwKKwkJICAgZXh0cmEtPnBh dHlwZSA9PSBQQVJUSVRJT05XSVNFX0FHR1JFR0FURV9QQVJUSUFMKTsKIAogCS8qIHNhdmUgdGhl IGlucHV0X3JlbCBhcyBvdXRlcnJlbCBpbiBmcGluZm8gKi8KIAlmcGluZm8tPm91dGVycmVsID0g aW5wdXRfcmVsOwpAQCAtNjgxNyw3ICs2ODQwLDcgQEAgYWRkX2ZvcmVpZ25fZ3JvdXBpbmdfcGF0 aHMoUGxhbm5lckluZm8gKnJvb3QsIFJlbE9wdEluZm8gKmlucHV0X3JlbCwKIAkgKiBVc2UgSEFW SU5HIHF1YWwgZnJvbSBleHRyYS4gSW4gY2FzZSBvZiBjaGlsZCBwYXJ0aXRpb24sIGl0IHdpbGwg aGF2ZQogCSAqIHRyYW5zbGF0ZWQgVmFycy4KIAkgKi8KLQlpZiAoIWZvcmVpZ25fZ3JvdXBpbmdf b2socm9vdCwgZ3JvdXBlZF9yZWwsIGV4dHJhLT5oYXZpbmdRdWFsKSkKKwlpZiAoIWZvcmVpZ25f Z3JvdXBpbmdfb2socm9vdCwgZ3JvdXBlZF9yZWwsIGV4dHJhKSkKIAkJcmV0dXJuOwogCiAJLyoK ZGlmZiAtLWdpdCBhL2NvbnRyaWIvcG9zdGdyZXNfZmR3L3Bvc3RncmVzX2Zkdy5oIGIvY29udHJp Yi9wb3N0Z3Jlc19mZHcvcG9zdGdyZXNfZmR3LmgKaW5kZXggODEzNThmM2JkZTcuLmE5ODc0YjA3 YzM1IDEwMDY0NAotLS0gYS9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuaAorKysg Yi9jb250cmliL3Bvc3RncmVzX2Zkdy9wb3N0Z3Jlc19mZHcuaApAQCAtODUsNyArODUsMTYgQEAg dHlwZWRlZiBzdHJ1Y3QgUGdGZHdSZWxhdGlvbkluZm8KIAkvKiBDYWNoZWQgY2F0YWxvZyBpbmZv cm1hdGlvbi4gKi8KIAlGb3JlaWduVGFibGUgKnRhYmxlOwogCUZvcmVpZ25TZXJ2ZXIgKnNlcnZl cjsKLQlVc2VyTWFwcGluZyAqdXNlcjsJCQkvKiBvbmx5IHNldCBpbiB1c2VfcmVtb3RlX2VzdGlt YXRlIG1vZGUgKi8KKwlVc2VyTWFwcGluZyAqdXNlcjsJCQkvKiBvbmx5IHNldCBpbiB1c2VfcmVt b3RlX2VzdGltYXRlL3BhcnRpYWxfYWdncmVnYXRlX3N1cHBvcnQgbW9kZSAqLworCisJLyogZm9y IHBhcnRpYWwgYWdncmVnYXRlIHB1c2hkb3duICovCisJYm9vbAkJcGFydGlhbF9hZ2dyZWdhdGVf c3VwcG9ydDsKKworCS8qCisJICogSWYgcmVtb3RldmVyc2lvbiBpcyB6ZXJvLCBpdCBtZWFucyB0 aGUgcmVtb3RlIHNlcnZlciB2ZXJzaW9uIGhhcyBub3QKKwkgKiBiZWVuIGFjcXVpcmVkLgorCSAq LworCWludAkJCXJlbW90ZXZlcnNpb247CiAKIAlpbnQJCQlmZXRjaF9zaXplOwkJLyogZmV0Y2gg c2l6ZSBmb3IgdGhpcyByZW1vdGUgdGFibGUgKi8KIApAQCAtMTExLDYgKzEyMCw3IEBAIHR5cGVk ZWYgc3RydWN0IFBnRmR3UmVsYXRpb25JbmZvCiAKIAkvKiBHcm91cGluZyBpbmZvcm1hdGlvbiAq LwogCUxpc3QJICAgKmdyb3VwZWRfdGxpc3Q7CisJTGlzdAkgICAqZ3JvdXBfY2xhdXNlOwogCiAJ LyogU3VicXVlcnkgaW5mb3JtYXRpb24gKi8KIAlib29sCQltYWtlX291dGVycmVsX3N1YnF1ZXJ5 OyAvKiBkbyB3ZSBkZXBhcnNlIG91dGVycmVsIGFzIGEKZGlmZiAtLWdpdCBhL2NvbnRyaWIvcG9z dGdyZXNfZmR3L3NxbC9wb3N0Z3Jlc19mZHcuc3FsIGIvY29udHJpYi9wb3N0Z3Jlc19mZHcvc3Fs L3Bvc3RncmVzX2Zkdy5zcWwKaW5kZXggZDQ1ZTlmOGFiNTIuLjU5MDEwODFjMTM4IDEwMDY0NAot LS0gYS9jb250cmliL3Bvc3RncmVzX2Zkdy9zcWwvcG9zdGdyZXNfZmR3LnNxbAorKysgYi9jb250 cmliL3Bvc3RncmVzX2Zkdy9zcWwvcG9zdGdyZXNfZmR3LnNxbApAQCAtMzIwMSwxNiArMzIwMSwz MyBAQCBSRVNFVCBlbmFibGVfcGFydGl0aW9ud2lzZV9qb2luOwogLS0gPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0g dGVzdCBwYXJ0aXRpb253aXNlIGFnZ3JlZ2F0ZXMKIC0tID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotQ1JFQVRFIFRB QkxFIHBhZ2dfdGFiIChhIGludCwgYiBpbnQsIGMgdGV4dCkgUEFSVElUSU9OIEJZIFJBTkdFKGEp OworQUxURVIgU0VSVkVSIGxvb3BiYWNrIE9QVElPTlMgKEFERCBmZHdfdHVwbGVfY29zdCAnMC4x Jyk7CisKK0NSRUFURSBUWVBFIG1vb2QgQVMgZW51bSAoJ3NhZCcsICdvaycsICdoYXBweScpOwor QUxURVIgRVhURU5TSU9OIHBvc3RncmVzX2ZkdyBBREQgVFlQRSBtb29kOworCitDUkVBVEUgVEFC TEUgcGFnZ190YWIgKGEgaW50LCBiIGludCwgYyB0ZXh0LCBjX3NlcmlhbCBpbnQ0LAorCQkJCQlj X2ludDRhcnJheSBfaW50NCwgY19pbnRlcnZhbCBpbnRlcnZhbCwKKwkJCQkJY19tb25leSBtb25l eSwgY18xYyB0ZXh0LCBjXzFiIGJ5dGVhLAorCQkJCQljX2JpdCBiaXQoMiksIGNfMW9yM2ludDIg aW50MiwKKwkJCQkJY18xb3IzaW50NCBpbnQ0LCBjXzFvcjNpbnQ4IGludDgsCisJCQkJCWNfYm9v bCBib29sLCBjX2VudW0gbW9vZCwgY19wZ19sc24gcGdfbHNuLAorCQkJCQljX3RpZCB0aWQsIGNf aW50NHJhbmdlIGludDRyYW5nZSwKKwkJCQkJY19pbnQ0bXVsdGlyYW5nZSBpbnQ0bXVsdGlyYW5n ZSwKKwkJCQkJY190aW1lIHRpbWUsIGNfdGltZXR6IHRpbWV0eiwKKwkJCQkJY190aW1lc3RhbXAg dGltZXN0YW1wLCBjX3RpbWVzdGFtcHR6IHRpbWVzdGFtcHR6LAorCQkJCQljX3hpZDggeGlkOCkK KwlQQVJUSVRJT04gQlkgUkFOR0UoYSk7CiAKIENSRUFURSBUQUJMRSBwYWdnX3RhYl9wMSAoTElL RSBwYWdnX3RhYik7CiBDUkVBVEUgVEFCTEUgcGFnZ190YWJfcDIgKExJS0UgcGFnZ190YWIpOwog Q1JFQVRFIFRBQkxFIHBhZ2dfdGFiX3AzIChMSUtFIHBhZ2dfdGFiKTsKIAotSU5TRVJUIElOVE8g cGFnZ190YWJfcDEgU0VMRUNUIGkgJSAzMCwgaSAlIDUwLCB0b19jaGFyKGkvMzAsICdGTTAwMDAn KSBGUk9NIGdlbmVyYXRlX3NlcmllcygxLCAzMDAwKSBpIFdIRVJFIChpICUgMzApIDwgMTA7Ci1J TlNFUlQgSU5UTyBwYWdnX3RhYl9wMiBTRUxFQ1QgaSAlIDMwLCBpICUgNTAsIHRvX2NoYXIoaS8z MCwgJ0ZNMDAwMCcpIEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMwMDApIGkgV0hFUkUgKGkgJSAz MCkgPCAyMCBhbmQgKGkgJSAzMCkgPj0gMTA7Ci1JTlNFUlQgSU5UTyBwYWdnX3RhYl9wMyBTRUxF Q1QgaSAlIDMwLCBpICUgNTAsIHRvX2NoYXIoaS8zMCwgJ0ZNMDAwMCcpIEZST00gZ2VuZXJhdGVf c2VyaWVzKDEsIDMwMDApIGkgV0hFUkUgKGkgJSAzMCkgPCAzMCBhbmQgKGkgJSAzMCkgPj0gMjA7 CitTRVQgVGltZVpvbmUgPSAnVVRDJzsKKworSU5TRVJUIElOVE8gcGFnZ190YWJfcDEgU0VMRUNU IGkgJSAzMCwgaSAlIDUwLCB0b19jaGFyKGkvMzAsICdGTTAwMDAnKSwgaSwgYXJyYXlbKGkgJSAy KSwgMF0sICgoaSAlIDIpIHx8ICcgc2Vjb25kcycpOjppbnRlcnZhbCwgKGkgJSAyKTo6bW9uZXks ICgoaSAtIDEpICUgMTApOjp0ZXh0LCAoKChpIC0gMSkgJSAxMCk6OnRleHQpOjpieXRlYSwgY2Fz ZSB3aGVuIChpICUgMikgPSAwIHRoZW4gQicwMScgZWxzZSBCJzExJyBlbmQsIGNhc2Ugd2hlbiAo aSAlIDIpID0gMCB0aGVuIDEgZWxzZSAzIGVuZCwgY2FzZSB3aGVuIChpICUgMikgPSAwIHRoZW4g MSBlbHNlIDMgZW5kLCBjYXNlIHdoZW4gKGkgJSAyKSA9IDAgdGhlbiAxIGVsc2UgMyBlbmQsIGNh c2Ugd2hlbiAoaSAlIDIpID0gMCB0aGVuIHRydWUgZWxzZSBmYWxzZSBlbmQsIChjYXNlIHdoZW4g KGkgJSAyKSA9IDAgdGhlbiAnc2FkJyBlbHNlICdoYXBweScgZW5kKTo6bW9vZCwgKCcwLycgfHwg aSk6OnBnX2xzbiwgKCcoMCwnIHx8IGkgfHwgJyknKTo6dGlkLCBpbnQ0cmFuZ2UoMCwgaSksIGlu dDRtdWx0aXJhbmdlKGludDRyYW5nZSgwLCBpKSwgaW50NHJhbmdlKDEwMCwgMTAwICsgaSkpLCAn MDA6MDA6MDAnOjp0aW1lICsgKGkgfHwgJyBzZWNvbmRzJyk6OmludGVydmFsLCAnMDA6MDA6MDAn Ojp0aW1ldHogKyAoaSB8fCAnIHNlY29uZHMnKTo6aW50ZXJ2YWwsICcyMDAwLTAxLTAxJzo6dGlt ZXN0YW1wICsgKGkgfHwgJyBzZWNvbmRzJyk6OmludGVydmFsLCAnMjAwMC0wMS0wMSc6OnRpbWVz dGFtcHR6ICsgKGkgfHwgJyBzZWNvbmRzJyk6OmludGVydmFsLCAoKGkgJSAxMCk6OnRleHQpOjp4 aWQ4IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMwMDApIGkgV0hFUkUgKGkgJSAzMCkgPCAxMDsK K0lOU0VSVCBJTlRPIHBhZ2dfdGFiX3AyIFNFTEVDVCBpICUgMzAsIGkgJSA1MCwgdG9fY2hhcihp LzMwLCAnRk0wMDAwJyksIGksIGFycmF5WyhpICUgMiksIDBdLCAoKGkgJSAyKSB8fCAnIHNlY29u ZHMnKTo6aW50ZXJ2YWwsIChpICUgMik6Om1vbmV5LCAoKGkgLSAxKSAlIDEwKTo6dGV4dCwgKCgo aSAtIDEpICUgMTApOjp0ZXh0KTo6Ynl0ZWEsIGNhc2Ugd2hlbiAoaSAlIDIpID0gMCB0aGVuIEIn MDEnIGVsc2UgQicxMScgZW5kLCBjYXNlIHdoZW4gKGkgJSAyKSA9IDAgdGhlbiAxIGVsc2UgMyBl bmQsIGNhc2Ugd2hlbiAoaSAlIDIpID0gMCB0aGVuIDEgZWxzZSAzIGVuZCwgY2FzZSB3aGVuIChp ICUgMikgPSAwIHRoZW4gMSBlbHNlIDMgZW5kLCBjYXNlIHdoZW4gKGkgJSAyKSA9IDAgdGhlbiB0 cnVlIGVsc2UgZmFsc2UgZW5kLCAoY2FzZSB3aGVuIChpICUgMikgPSAwIHRoZW4gJ3NhZCcgZWxz ZSAnaGFwcHknIGVuZCk6Om1vb2QsICgnMC8nIHx8IGkpOjpwZ19sc24sICgnKDAsJyB8fCBpIHx8 ICcpJyk6OnRpZCwgaW50NHJhbmdlKDAsIGkpLCBpbnQ0bXVsdGlyYW5nZShpbnQ0cmFuZ2UoMCwg aSksIGludDRyYW5nZSgxMDAsIDEwMCArIGkpKSwgJzAwOjAwOjAwJzo6dGltZSArIChpIHx8ICcg c2Vjb25kcycpOjppbnRlcnZhbCwgJzAwOjAwOjAwJzo6dGltZXR6ICsgKGkgfHwgJyBzZWNvbmRz Jyk6OmludGVydmFsLCAnMjAwMC0wMS0wMSc6OnRpbWVzdGFtcCArIChpIHx8ICcgc2Vjb25kcycp OjppbnRlcnZhbCwgJzIwMDAtMDEtMDEnOjp0aW1lc3RhbXB0eiArIChpIHx8ICcgc2Vjb25kcycp OjppbnRlcnZhbCwgKChpICUgMTApOjp0ZXh0KTo6eGlkOCBGUk9NIGdlbmVyYXRlX3Nlcmllcygx LCAzMDAwKSBpIFdIRVJFIChpICUgMzApIDwgMjAgYW5kIChpICUgMzApID49IDEwOworSU5TRVJU IElOVE8gcGFnZ190YWJfcDMgU0VMRUNUIGkgJSAzMCwgaSAlIDUwLCB0b19jaGFyKGkvMzAsICdG TTAwMDAnKSwgaSwgYXJyYXlbKGkgJSAyKSwgMF0sICgoaSAlIDIpIHx8ICcgc2Vjb25kcycpOjpp bnRlcnZhbCwgKGkgJSAyKTo6bW9uZXksICgoaSAtIDEpICUgMTApOjp0ZXh0LCAoKChpIC0gMSkg JSAxMCk6OnRleHQpOjpieXRlYSwgY2FzZSB3aGVuIChpICUgMikgPSAwIHRoZW4gQicwMScgZWxz ZSBCJzExJyBlbmQsIGNhc2Ugd2hlbiAoaSAlIDIpID0gMCB0aGVuIDEgZWxzZSAzIGVuZCwgY2Fz ZSB3aGVuIChpICUgMikgPSAwIHRoZW4gMSBlbHNlIDMgZW5kLCBjYXNlIHdoZW4gKGkgJSAyKSA9 IDAgdGhlbiAxIGVsc2UgMyBlbmQsIGNhc2Ugd2hlbiAoaSAlIDIpID0gMCB0aGVuIHRydWUgZWxz ZSBmYWxzZSBlbmQsIChjYXNlIHdoZW4gKGkgJSAyKSA9IDAgdGhlbiAnc2FkJyBlbHNlICdoYXBw eScgZW5kKTo6bW9vZCwgKCcwLycgfHwgaSk6OnBnX2xzbiwgKCcoMCwnIHx8IGkgfHwgJyknKTo6 dGlkLCBpbnQ0cmFuZ2UoMCwgaSksIGludDRtdWx0aXJhbmdlKGludDRyYW5nZSgwLCBpKSwgaW50 NHJhbmdlKDEwMCwgMTAwICsgaSkpLCAnMDA6MDA6MDAnOjp0aW1lICsgKGkgfHwgJyBzZWNvbmRz Jyk6OmludGVydmFsLCAnMDA6MDA6MDAnOjp0aW1ldHogKyAoaSB8fCAnIHNlY29uZHMnKTo6aW50 ZXJ2YWwsICcyMDAwLTAxLTAxJzo6dGltZXN0YW1wICsgKGkgfHwgJyBzZWNvbmRzJyk6OmludGVy dmFsLCAnMjAwMC0wMS0wMSc6OnRpbWVzdGFtcHR6ICsgKGkgfHwgJyBzZWNvbmRzJyk6OmludGVy dmFsLCAoKGkgJSAxMCk6OnRleHQpOjp4aWQ4IEZST00gZ2VuZXJhdGVfc2VyaWVzKDEsIDMwMDAp IGkgV0hFUkUgKGkgJSAzMCkgPCAzMCBhbmQgKGkgJSAzMCkgPj0gMjA7CiAKIC0tIENyZWF0ZSBm b3JlaWduIHBhcnRpdGlvbnMKIENSRUFURSBGT1JFSUdOIFRBQkxFIGZwYWdnX3RhYl9wMSBQQVJU SVRJT04gT0YgcGFnZ190YWIgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMTApIFNFUlZFUiBsb29w YmFjayBPUFRJT05TICh0YWJsZV9uYW1lICdwYWdnX3RhYl9wMScpOwpAQCAtMzIxOCw5ICszMjM1 LDEzIEBAIENSRUFURSBGT1JFSUdOIFRBQkxFIGZwYWdnX3RhYl9wMiBQQVJUSVRJT04gT0YgcGFn Z190YWIgRk9SIFZBTFVFUyBGUk9NICgxMCkgVE8KIENSRUFURSBGT1JFSUdOIFRBQkxFIGZwYWdn X3RhYl9wMyBQQVJUSVRJT04gT0YgcGFnZ190YWIgRk9SIFZBTFVFUyBGUk9NICgyMCkgVE8gKDMw KSBTRVJWRVIgbG9vcGJhY2sgT1BUSU9OUyAodGFibGVfbmFtZSAncGFnZ190YWJfcDMnKTsKIAog QU5BTFlaRSBwYWdnX3RhYjsKK0FOQUxZWkUgcGFnZ190YWJfcDE7CitBTkFMWVpFIHBhZ2dfdGFi X3AyOworQU5BTFlaRSBwYWdnX3RhYl9wMzsKIEFOQUxZWkUgZnBhZ2dfdGFiX3AxOwogQU5BTFla RSBmcGFnZ190YWJfcDI7CiBBTkFMWVpFIGZwYWdnX3RhYl9wMzsKK1NFVCBleHRyYV9mbG9hdF9k aWdpdHMgPSAwOwogCiAtLSBXaGVuIEdST1VQIEJZIGNsYXVzZSBtYXRjaGVzIHdpdGggUEFSVElU SU9OIEtFWS4KIC0tIFBsYW4gd2l0aCBwYXJ0aXRpb253aXNlIGFnZ3JlZ2F0ZXMgaXMgZGlzYWJs ZWQKQEAgLTMyNDAsOSArMzI2MSw4NiBAQCBFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBPRkYpCiBT RUxFQ1QgYSwgY291bnQodDEpIEZST00gcGFnZ190YWIgdDEgR1JPVVAgQlkgYSBIQVZJTkcgYXZn KGIpIDwgMjIgT1JERVIgQlkgMTsKIFNFTEVDVCBhLCBjb3VudCh0MSkgRlJPTSBwYWdnX3RhYiB0 MSBHUk9VUCBCWSBhIEhBVklORyBhdmcoYikgPCAyMiBPUkRFUiBCWSAxOwogCi0tLSBXaGVuIEdS T1VQIEJZIGNsYXVzZSBkb2VzIG5vdCBtYXRjaCB3aXRoIFBBUlRJVElPTiBLRVkuCi1FWFBMQUlO IChDT1NUUyBPRkYpCistLSBQYXJ0aWFsIGFnZ3JlZ2F0ZXMgYXJlIHNhZmUgdG8gcHVzaCBkb3du IHdoZW4gdGhlcmUgaXMgYSBIQVZJTkcgY2xhdXNlCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBP RkYpCiBTRUxFQ1QgYiwgYXZnKGEpLCBtYXgoYSksIGNvdW50KCopIEZST00gcGFnZ190YWIgR1JP VVAgQlkgYiBIQVZJTkcgc3VtKGEpIDwgNzAwIE9SREVSIEJZIDE7CitTRUxFQ1QgYiwgYXZnKGEp LCBtYXgoYSksIGNvdW50KCopIEZST00gcGFnZ190YWIgR1JPVVAgQlkgYiBIQVZJTkcgc3VtKGEp IDwgNzAwIE9SREVSIEJZIDE7CisKKy0tIFBhcnRpYWwgYWdncmVnYXRlcyBhcmUgc2FmZSB0byBw dXNoIGRvd24gd2l0aG91dCBoYXZpbmcgY2xhdXNlCitFWFBMQUlOIChWRVJCT1NFLCBDT1NUUyBP RkYpCitTRUxFQ1QgYiwgYXZnKGEpLCBtYXgoYSksIGNvdW50KCopIEZST00gcGFnZ190YWIgR1JP VVAgQlkgYiBPUkRFUiBCWSAxOworU0VMRUNUIGIsIGF2ZyhhKSwgbWF4KGEpLCBjb3VudCgqKSBG Uk9NIHBhZ2dfdGFiIEdST1VQIEJZIGIgT1JERVIgQlkgMTsKKworLS0gUGFydGlhbCBhZ2dyZWdh dGVzIGFyZSBzYWZlIHRvIHB1c2ggZG93biBldmVuIGlmIHdlIG5lZWQgYm90aCB2YXJpYWJsZSBh bmQgdmFyaWFibGUtYmFzZWQgZXhwcmVzc2lvbgorRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZG KQorU0VMRUNUIGF2ZyhhKSwgbWF4KGEpLCBjb3VudCgqKSwgKGIvMik6Om51bWVyaWMgRlJPTSBw YWdnX3RhYiBHUk9VUCBCWSBiLzIgT1JERVIgQlkgNDsKK1NFTEVDVCBhdmcoYSksIG1heChhKSwg Y291bnQoKiksIChiLzIpOjpudW1lcmljIEZST00gcGFnZ190YWIgR1JPVVAgQlkgYi8yIE9SREVS IEJZIDQ7CisKKy0tIFBhcnRpYWwgYWdncmVnYXRlcyBwdXNoZG93biBiZWhhdmVzIHNhbmUgd2l0 aCBub24tc2hpcHBlZCBncm91cGluZyBlbGVtZW50cworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMg T0ZGKQorU0VMRUNUIGF2ZyhhKSwgKGIvMik6Om51bWVyaWMsICd0ZXN0JyB0ZXN0IEZST00gcGFn Z190YWIgR1JPVVAgQlkgMywgYi8yIE9SREVSIEJZIDEsIDIgTElNSVQgMTA7CitTRUxFQ1QgYXZn KGEpLCAoYi8yKTo6bnVtZXJpYywgJ3Rlc3QnIHRlc3QgRlJPTSBwYWdnX3RhYiBHUk9VUCBCWSAz LCBiLzIgT1JERVIgQlkgMSwgMiBMSU1JVCAxMDsKKworLS0gUGFydGlhbCBhZ2dyZWdhdGVzIGFy ZSBzYWZlIHRvIHB1c2ggZG93biBmb3IgYWxsIGJ1aWx0LWluIGFnZ3JlZ2F0ZXMKK0VYUExBSU4g KFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVAorCS8qIFRoZSBjYXNlcyB0aGF0IGRvbid0IHJl cXVpcmUgaW1wb3J0IG9yIGV4cG9ydCBmdW5jdGlvbnMgKi8KKwliaXRfYW5kKGNfYml0KSwgYml0 X2FuZChjXzFvcjNpbnQyKSwgYml0X2FuZChjXzFvcjNpbnQ0KSwgYml0X2FuZChjXzFvcjNpbnQ4 KSwKKwliaXRfb3IoY19iaXQpLCBiaXRfb3IoY18xb3IzaW50MiksIGJpdF9vcihjXzFvcjNpbnQ0 KSwgYml0X29yKGNfMW9yM2ludDgpLAorCWJpdF94b3IoY19iaXQpLCBiaXRfeG9yKGNfMW9yM2lu dDIpLCBiaXRfeG9yKGNfMW9yM2ludDQpLCBiaXRfeG9yKGNfMW9yM2ludDgpLAorCWJvb2xfYW5k KGNfYm9vbCksCisJYm9vbF9vcihjX2Jvb2wpLAorCWV2ZXJ5KGNfYm9vbCksCisJbWF4KGNfMWM6 OmNoYXIoMSkpLCBtYXgoJzIwMDAtMDEtMDEnOjpkYXRlICsgYiksIG1heCgnMC4wLjAuMCc6Omlu ZXQgKyBiKSwgbWF4KGI6OmZsb2F0NCksIG1heChiOjpmbG9hdDgpLCBtYXgoYjo6aW50MiksIG1h eChiOjppbnQ0KSwgbWF4KGI6OmludDgpLCBtYXgoY19pbnRlcnZhbCksIG1heChjX21vbmV5KSwg bWF4KGI6Om51bWVyaWMpLCBtYXgoYjo6b2lkKSwgbWF4KGNfcGdfbHNuKSwgbWF4KGNfdGlkKSwg bWF4KGNfMWMpLCBtYXgoY190aW1lKSwgbWF4KGNfdGltZXR6KSwgbWF4KGNfdGltZXN0YW1wKSwg bWF4KGNfdGltZXN0YW1wdHopLCBtYXgoY18xYiksIG1heChjX3hpZDgpLAorCW1pbihjXzFjOjpj aGFyKDEpKSwgbWluKCcyMDAwLTAxLTAxJzo6ZGF0ZSArIGIpLCBtaW4oJzAuMC4wLjAnOjppbmV0 ICsgYiksIG1pbihiOjpmbG9hdDQpLCBtaW4oYjo6ZmxvYXQ4KSwgbWluKGI6OmludDIpLCBtaW4o Yjo6aW50NCksIG1pbihiOjppbnQ4KSwgbWluKGNfaW50ZXJ2YWwpLCBtaW4oY19tb25leSksIG1p bihiOjpudW1lcmljKSwgbWluKGI6Om9pZCksIG1pbihjX3BnX2xzbiksIG1pbihjX3RpZCksIG1p bihjXzFjKSwgbWluKGNfdGltZSksIG1pbihjX3RpbWV0eiksIG1pbihjX3RpbWVzdGFtcCksIG1p bihjX3RpbWVzdGFtcHR6KSwgbWF4KGNfMWIpLCBtaW4oY194aWQ4KSwKKwlhdmcoYjo6aW50NCkK KyAgRlJPTSBwYWdnX3RhYiBXSEVSRSBjX3NlcmlhbCBiZXR3ZWVuIDEgYW5kIDMwOworCitTRUxF Q1QKKwkvKiBUaGUgY2FzZXMgdGhhdCBkb24ndCByZXF1aXJlIGltcG9ydCBvciBleHBvcnQgZnVu Y3Rpb25zICovCisJYml0X2FuZChjX2JpdCksIGJpdF9hbmQoY18xb3IzaW50MiksIGJpdF9hbmQo Y18xb3IzaW50NCksIGJpdF9hbmQoY18xb3IzaW50OCksCisJYml0X29yKGNfYml0KSwgYml0X29y KGNfMW9yM2ludDIpLCBiaXRfb3IoY18xb3IzaW50NCksIGJpdF9vcihjXzFvcjNpbnQ4KSwKKwli aXRfeG9yKGNfYml0KSwgYml0X3hvcihjXzFvcjNpbnQyKSwgYml0X3hvcihjXzFvcjNpbnQ0KSwg Yml0X3hvcihjXzFvcjNpbnQ4KSwKKwlib29sX2FuZChjX2Jvb2wpLAorCWJvb2xfb3IoY19ib29s KSwKKwlldmVyeShjX2Jvb2wpLAorCW1heChjXzFjOjpjaGFyKDEpKSwgbWF4KCcyMDAwLTAxLTAx Jzo6ZGF0ZSArIGIpLCBtYXgoJzAuMC4wLjAnOjppbmV0ICsgYiksIG1heChiOjpmbG9hdDQpLCBt YXgoYjo6ZmxvYXQ4KSwgbWF4KGI6OmludDIpLCBtYXgoYjo6aW50NCksIG1heChiOjppbnQ4KSwg bWF4KGNfaW50ZXJ2YWwpLCBtYXgoY19tb25leSksIG1heChiOjpudW1lcmljKSwgbWF4KGI6Om9p ZCksIG1heChjX3BnX2xzbiksIG1heChjX3RpZCksIG1heChjXzFjKSwgbWF4KGNfdGltZSksIG1h eChjX3RpbWV0eiksIG1heChjX3RpbWVzdGFtcCksIG1heChjX3RpbWVzdGFtcHR6KSwgbWF4KGNf MWIpLCBtYXgoY194aWQ4KSwKKwltaW4oY18xYzo6Y2hhcigxKSksIG1pbignMjAwMC0wMS0wMSc6 OmRhdGUgKyBiKSwgbWluKCcwLjAuMC4wJzo6aW5ldCArIGIpLCBtaW4oYjo6ZmxvYXQ0KSwgbWlu KGI6OmZsb2F0OCksIG1pbihiOjppbnQyKSwgbWluKGI6OmludDQpLCBtaW4oYjo6aW50OCksIG1p bihjX2ludGVydmFsKSwgbWluKGNfbW9uZXkpLCBtaW4oYjo6bnVtZXJpYyksIG1pbihiOjpvaWQp LCBtaW4oY19wZ19sc24pLCBtaW4oY190aWQpLCBtaW4oY18xYyksIG1pbihjX3RpbWUpLCBtaW4o Y190aW1ldHopLCBtaW4oY190aW1lc3RhbXApLCBtaW4oY190aW1lc3RhbXB0eiksIG1heChjXzFi KSwgbWluKGNfeGlkOCksCisJYXZnKGI6OmludDQpCisgIEZST00gcGFnZ190YWIgV0hFUkUgY19z ZXJpYWwgYmV0d2VlbiAxIGFuZCAzMDsKKworLS0gVGVzdHMgZm9yIHBhcnRpYWxfYWdncmVnYXRl X3N1cHBvcnQKK0FMVEVSIFNFUlZFUiBsb29wYmFjayBPUFRJT05TIChBREQgcGFydGlhbF9hZ2dy ZWdhdGVfc3VwcG9ydCAnZmFsc2UnKTsKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NF TEVDVCBiLCBtYXgoYSkgRlJPTSBwYWdnX3RhYiBHUk9VUCBCWSBiIE9SREVSIEJZIDE7CitTRUxF Q1QgYiwgbWF4KGEpIEZST00gcGFnZ190YWIgR1JPVVAgQlkgYiBPUkRFUiBCWSAxOworCitBTFRF UiBTRVJWRVIgbG9vcGJhY2sgT1BUSU9OUyAoU0VUIHBhcnRpYWxfYWdncmVnYXRlX3N1cHBvcnQg J3RydWUnKTsKK0VYUExBSU4gKFZFUkJPU0UsIENPU1RTIE9GRikKK1NFTEVDVCBiLCBtYXgoYSkg RlJPTSBwYWdnX3RhYiBHUk9VUCBCWSBiIE9SREVSIEJZIDE7CitTRUxFQ1QgYiwgbWF4KGEpIEZS T00gcGFnZ190YWIgR1JPVVAgQlkgYiBPUkRFUiBCWSAxOworCitBTFRFUiBTRVJWRVIgbG9vcGJh Y2sgT1BUSU9OUyAoU0VUIGZkd190dXBsZV9jb3N0ICcxLjAnKTsKK1NFVCBlbmFibGVfcGFydGl0 aW9ud2lzZV9qb2luPW9uOworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIG1h eCh0MS5iKSBGUk9NIHBhZ2dfdGFiIHQxIEpPSU4gcGFnZ190YWIgdDIgVVNJTkcoYSk7CitTRUxF Q1QgbWF4KHQxLmIpIEZST00gcGFnZ190YWIgdDEgSk9JTiBwYWdnX3RhYiB0MiBVU0lORyhhKTsK K1JFU0VUIGVuYWJsZV9wYXJ0aXRpb253aXNlX2pvaW47CitBTFRFUiBTRVJWRVIgbG9vcGJhY2sg T1BUSU9OUyAoU0VUIGZkd190dXBsZV9jb3N0ICcwLjEnKTsKKworQUxURVIgU0VSVkVSIGxvb3Bi YWNrIE9QVElPTlMgKERST1AgcGFydGlhbF9hZ2dyZWdhdGVfc3VwcG9ydCk7CisKKy0tIEl0IGlz IHVuc2FmZSB0byBwdXNoIGRvd24gcGFydGlhbCBhZ2dyZWdhdGVzIHdoaWNoIGNvbnRhaW4gRElT VElOQ1QgY2xhdXNlcworRVhQTEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKQorU0VMRUNUIG1heChh KSwgY291bnQoZGlzdGluY3QgYikgRlJPTSBwYWdnX3RhYjsKK1NFTEVDVCBtYXgoYSksIGNvdW50 KGRpc3RpbmN0IGIpIEZST00gcGFnZ190YWI7CisKKy0tIEl0IGlzIHVuc2FmZSB0byBwdXNoIGRv d24gcGFydGlhbCBhZ2dyZWdhdGVzIHdoaWNoIGNvbnRhaW4gT1JERVIgQlkgY2xhdXNlcworRVhQ TEFJTiAoVkVSQk9TRSwgQ09TVFMgT0ZGKSBTRUxFQ1QgYXJyYXlfYWdnKGIgb3JkZXIgYnkgYikg RlJPTSBwYWdnX3RhYiBXSEVSRSBjX3NlcmlhbCBiZXR3ZWVuIDEgYW5kIDMwOworU0VMRUNUIGFy cmF5X2FnZyhiIG9yZGVyIGJ5IGIpIEZST00gcGFnZ190YWIgV0hFUkUgY19zZXJpYWwgYmV0d2Vl biAxIGFuZCAzMDsKKworQUxURVIgU0VSVkVSIGxvb3BiYWNrIE9QVElPTlMgKERST1AgZmR3X3R1 cGxlX2Nvc3QpOworUkVTRVQgVGltZVpvbmU7CiAKIC0tID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tIGFjY2VzcyBy aWdodHMgYW5kIHN1cGVydXNlcgpkaWZmIC0tZ2l0IGEvZG9jL3NyYy9zZ21sL3Bvc3RncmVzLWZk dy5zZ21sIGIvZG9jL3NyYy9zZ21sL3Bvc3RncmVzLWZkdy5zZ21sCmluZGV4IGE3ZjJmNWNhMTgy Li5jM2E2ZTNiMTk3NSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3Bvc3RncmVzLWZkdy5zZ21s CisrKyBiL2RvYy9zcmMvc2dtbC9wb3N0Z3Jlcy1mZHcuc2dtbApAQCAtNDUzLDYgKzQ1Myw0NCBA QCBPUFRJT05TIChBREQgcGFzc3dvcmRfcmVxdWlyZWQgJ2ZhbHNlJyk7CiAKICAgPC9zZWN0Mz4K IAorICA8c2VjdDMgaWQ9InBvc3RncmVzLWZkdy1vcHRpb25zLXBhcnRpYWwtYWdncmVnYXRlLXB1 c2hkb3duIj4KKyAgIDx0aXRsZT5QYXJ0aWFsIEFnZ3JlZ2F0ZSBQdXNoZG93biBPcHRpb248L3Rp dGxlPgorCisgICA8cGFyYT4KKyAgICBXaGVuIHBlcmZvcm1pbmcgcGFydGlhbCBhZ2dyZWdhdGUg cHVzaGRvd24sCisgICAgPGZpbGVuYW1lPnBvc3RncmVzX2ZkdzwvZmlsZW5hbWU+IGdldHMgdGhl IHN0YXRlIHZhbHVlIGZyb20gdGhlIGxvY2FsCisgICAgc2VydmVyOyBzZWUgPHhyZWYgbGlua2Vu ZD0icGFydGlhbC1hZ2dyZWdhdGUtcHVzaGRvd24iLz4KKyAgICBmb3IgcGFydGlhbCBhZ2dyZWdh dGUgcHVzaGRvd24uCisgICAgQnkgZGVmYXVsdCwgPGZpbGVuYW1lPnBvc3RncmVzX2ZkdzwvZmls ZW5hbWU+IGFzc3VtZXMgdGhhdCB0aGUgZm9ybWF0CisgICAgb2Ygc3RhdGUgdmFsdWVzIG9uIHRo ZSBsb2NhbCBzZXJ2ZXIgaXMgdGhlIHNhbWUgYXMgdGhlIGZvcm1hdCBvZiBzdGF0ZQorICAgIHZh bHVlcyBvbiB0aGUgcmVtb3RlIHNlcnZlciBmb3IgZXZlcnkgYWdncmVnYXRlIGZ1bmN0aW9uLiBU aGlzIG1heSBiZQorICAgIG92ZXJyaWRkZW4gdXNpbmcgdGhlIGZvbGxvd2luZyBvcHRpb246Cisg ICA8L3BhcmE+CisKKyAgIDx2YXJpYWJsZWxpc3Q+CisKKyAgICA8dmFybGlzdGVudHJ5PgorICAg ICA8dGVybT48bGl0ZXJhbD5wYXJ0aWFsX2FnZ3JlZ2F0ZV9zdXBwb3J0PC9saXRlcmFsPiAoPHR5 cGU+Ym9vbGVhbjwvdHlwZT4pPC90ZXJtPgorICAgICA8bGlzdGl0ZW0+CisgICAgICA8cGFyYT4K KyAgICAgICBJZiB0aGlzIG9wdGlvbiBpcyBmYWxzZSwgPGZpbGVuYW1lPnBvc3RncmVzX2Zkdzwv ZmlsZW5hbWU+CisgICAgICAgYXNzdW1lcyB0aGF0IHRoZSBmb3JtYXQgb2Ygc3RhdGUgdmFsdWVz IG9uIHRoZSBsb2NhbCBzZXJ2ZXIgaXMKKyAgICAgICB0aGUgc2FtZSBhcyB0aGUgZm9ybWF0IG9m IHN0YXRlIHZhbHVlcyBvbiB0aGUgcmVtb3RlIHNlcnZlciBmb3IKKyAgICAgICBldmVyeSBhZ2dy ZWdhdGUgZnVuY3Rpb24uIElmIHRoaXMgb3B0aW9uIGlzIHRydWUsCisgICAgICAgZHVyaW5nIHF1 ZXJ5IHBsYW5uaW5nLCA8ZmlsZW5hbWU+cG9zdGdyZXNfZmR3PC9maWxlbmFtZT4gd2lsbAorICAg ICAgIGNvbm5lY3QgdG8gdGhlIHJlbW90ZSBzZXJ2ZXIgYW5kIHJldHJpZXZlIHRoZSByZW1vdGUg c2VydmVyIHZlcnNpb24uCisgICAgICAgSWYgdGhlIHJlbW90ZSB2ZXJzaW9uIGlzIHRoZSBzYW1l LCB0aGUgZm9ybWF0IG9mIHN0YXRlIHZhbHVlcyBvbiB0aGUKKyAgICAgICBsb2NhbCBzZXJ2ZXIg d2lsbCBiZSBhc3N1bWVkIHRvIHRoZSBzYW1lIGFzIHRoZSBmb3JtYXQgb2Ygc3RhdGUKKyAgICAg ICB2YWx1ZXMgb24gdGhlIHJlbW90ZSBzZXJ2ZXIgZm9yIGV2ZXJ5IGFnZ3JlZ2F0ZSBmdW5jdGlv bi4KKyAgICAgICBJZiBub3Qgc2FtZSwgPGZpbGVuYW1lPnBvc3RncmVzX2ZkdzwvZmlsZW5hbWU+ IHdpbGwgbm90IHBlcmZvcm0KKyAgICAgICBwYXJ0aWFsIGFnZ3JlZ2F0ZSBwdXNoZG93bi4gVGhl IGRlZmF1bHQgaXMgPGxpdGVyYWw+ZmFsc2U8L2xpdGVyYWw+LgorICAgICAgPC9wYXJhPgorICAg ICA8L2xpc3RpdGVtPgorICAgIDwvdmFybGlzdGVudHJ5PgorCisgICA8L3ZhcmlhYmxlbGlzdD4K KyAgPC9zZWN0Mz4KKwogICA8c2VjdDMgaWQ9InBvc3RncmVzLWZkdy1vcHRpb25zLWFzeW5jaHJv bm91cy1leGVjdXRpb24iPgogICAgPHRpdGxlPkFzeW5jaHJvbm91cyBFeGVjdXRpb24gT3B0aW9u czwvdGl0bGU+CiAKQEAgLTEwOTUsMTQgKzExMzMsMTUgQEAgcG9zdGdyZXM9IyBTRUxFQ1QgcG9z dGdyZXNfZmR3X2Rpc2Nvbm5lY3RfYWxsKCk7CiAgIDxwYXJhPgogICAgPGZpbGVuYW1lPnBvc3Rn cmVzX2ZkdzwvZmlsZW5hbWU+IGF0dGVtcHRzIHRvIG9wdGltaXplIHJlbW90ZSBxdWVyaWVzIHRv IHJlZHVjZQogICAgdGhlIGFtb3VudCBvZiBkYXRhIHRyYW5zZmVycmVkIGZyb20gZm9yZWlnbiBz ZXJ2ZXJzLiAgVGhpcyBpcyBkb25lIGJ5Ci0gICBzZW5kaW5nIHF1ZXJ5IDxsaXRlcmFsPldIRVJF PC9saXRlcmFsPiBjbGF1c2VzIHRvIHRoZSByZW1vdGUgc2VydmVyIGZvcgotICAgZXhlY3V0aW9u LCBhbmQgYnkgbm90IHJldHJpZXZpbmcgdGFibGUgY29sdW1ucyB0aGF0IGFyZSBub3QgbmVlZGVk IGZvcgotICAgdGhlIGN1cnJlbnQgcXVlcnkuICBUbyByZWR1Y2UgdGhlIHJpc2sgb2YgbWlzZXhl Y3V0aW9uIG9mIHF1ZXJpZXMsCi0gICA8bGl0ZXJhbD5XSEVSRTwvbGl0ZXJhbD4gY2xhdXNlcyBh cmUgbm90IHNlbnQgdG8gdGhlIHJlbW90ZSBzZXJ2ZXIgdW5sZXNzIHRoZXkgdXNlCi0gICBvbmx5 IGRhdGEgdHlwZXMsIG9wZXJhdG9ycywgYW5kIGZ1bmN0aW9ucyB0aGF0IGFyZSBidWlsdC1pbiBv ciBiZWxvbmcgdG8gYW4KLSAgIGV4dGVuc2lvbiB0aGF0J3MgbGlzdGVkIGluIHRoZSBmb3JlaWdu IHNlcnZlcidzIDxsaXRlcmFsPmV4dGVuc2lvbnM8L2xpdGVyYWw+Ci0gICBvcHRpb24uICBPcGVy YXRvcnMgYW5kIGZ1bmN0aW9ucyBpbiBzdWNoIGNsYXVzZXMgbXVzdAotICAgYmUgPGxpdGVyYWw+ SU1NVVRBQkxFPC9saXRlcmFsPiBhcyB3ZWxsLgorICAgc2VuZGluZyBxdWVyeSA8bGl0ZXJhbD5X SEVSRTwvbGl0ZXJhbD4gY2xhdXNlcyBhbmQgYWdncmVnYXRlIGV4cHJlc3Npb25zCisgICB0byB0 aGUgcmVtb3RlIHNlcnZlciBmb3IgZXhlY3V0aW9uLCBhbmQgYnkgbm90IHJldHJpZXZpbmcgdGFi bGUKKyAgIGNvbHVtbnMgdGhhdCBhcmUgbm90IG5lZWRlZCBmb3IgdGhlIGN1cnJlbnQgcXVlcnku ICBUbyByZWR1Y2UgdGhlCisgICByaXNrIG9mIG1pc2V4ZWN1dGlvbiBvZiBxdWVyaWVzLCA8bGl0 ZXJhbD5XSEVSRTwvbGl0ZXJhbD4gY2xhdXNlcworICAgYW5kIGFnZ3JlZ2F0ZSBleHByZXNzaW9u cyBhcmUgbm90IHNlbnQgdG8gdGhlIHJlbW90ZSBzZXJ2ZXIgdW5sZXNzCisgICB0aGV5IG9ubHkg dXNlIGRhdGEgdHlwZXMsIG9wZXJhdG9ycywgYW5kIGZ1bmN0aW9ucyB0aGF0IGFyZSBidWlsdC1p bgorICAgb3IgYmVsb25nIHRvIGFuIGV4dGVuc2lvbiB0aGF0IGlzIGxpc3RlZCBpbiB0aGUgZm9y ZWlnbiBzZXJ2ZXIncworICAgPGxpdGVyYWw+ZXh0ZW5zaW9uczwvbGl0ZXJhbD4gb3B0aW9uLiAg T3BlcmF0b3JzIGFuZCBmdW5jdGlvbnMgaW4gc3VjaAorICAgY2xhdXNlcyBtdXN0IGJlIDxsaXRl cmFsPklNTVVUQUJMRTwvbGl0ZXJhbD4gYXMgd2VsbC4KICAgIEZvciBhbiA8Y29tbWFuZD5VUERB VEU8L2NvbW1hbmQ+IG9yIDxjb21tYW5kPkRFTEVURTwvY29tbWFuZD4gcXVlcnksCiAgICA8Zmls ZW5hbWU+cG9zdGdyZXNfZmR3PC9maWxlbmFtZT4gYXR0ZW1wdHMgdG8gb3B0aW1pemUgdGhlIHF1 ZXJ5IGV4ZWN1dGlvbiBieQogICAgc2VuZGluZyB0aGUgd2hvbGUgcXVlcnkgdG8gdGhlIHJlbW90 ZSBzZXJ2ZXIgaWYgdGhlcmUgYXJlIG5vIHF1ZXJ5CkBAIC0xMTMyLDYgKzExNzEsNTQgQEAgcG9z dGdyZXM9IyBTRUxFQ1QgcG9zdGdyZXNfZmR3X2Rpc2Nvbm5lY3RfYWxsKCk7CiAgIDwvcGFyYT4K ICA8L3NlY3QyPgogCisgPHNlY3QyIGlkPSJwYXJ0aWFsLWFnZ3JlZ2F0ZS1wdXNoZG93biI+Cisg IDx0aXRsZT5QYXJ0aWFsIEFnZ3JlZ2F0ZSBQdXNoZG93bjwvdGl0bGU+CisgIDxwYXJhPgorICAg UGFydGlhbCBhZ2dyZWdhdGUgcHVzaGRvd24gaXMgYW4gb3B0aW1pemF0aW9uIGZvciBxdWVyaWVz IHRoYXQgY29udGFpbgorICAgYWdncmVnYXRlIGV4cHJlc3Npb25zIGZvciBhIHBhcnRpdGlvbmVk IHRhYmxlIGFjcm9zcyBvbmUgb3IgbW9yZSByZW1vdGUKKyAgIHNlcnZlcnMuIElmIG11bHRpcGxl IGNvbmRpdGlvbnMgYXJlIG1ldCwgYWdncmVnYXRlIGV4cHJlc3Npb25zIHdpdGgKKyAgIDxsaXRl cmFsPlBBUlRJQUxfQUdHUkVHQVRFPC9saXRlcmFsPiBrZXl3b3JkIGFyZSBzZW50IHRvIHRoZQor ICAgcmVtb3RlIHNlcnZlcnMuIFRoZSBjb25kaXRpb25zIHVuZGVyIHdoaWNoIHRoaXMgc2VuZGlu ZyBpcyBhY3RpdmUgYXJlCisgICBhcyBmb2xsb3dzLgorICAgPGl0ZW1pemVkbGlzdCBzcGFjaW5n PSJjb21wYWN0Ij4KKyAgICA8bGlzdGl0ZW0+CisgICAgIDxwYXJhPgorICAgICAgVGhlIGZvcm1h dCBvZiBzdGF0ZSB2YWx1ZXMgb24gdGhlIGxvY2FsIHNlcnZlciBpcyB0aGUgc2FtZSBhcyB0aGUK KyAgICAgIGZvcm1hdCBvZiBzdGF0ZSB2YWx1ZXMgb24gdGhlIHJlbW90ZSBzZXJ2ZXIuIFNlZSA8 eHJlZgorICAgICAgbGlua2VuZD0icG9zdGdyZXMtZmR3LW9wdGlvbnMtcGFydGlhbC1hZ2dyZWdh dGUtcHVzaGRvd24iLz4gZm9yIHRoZSBkZXRhaWwKKyAgICAgPC9wYXJhPgorICAgIDwvbGlzdGl0 ZW0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4KKyAgICAgIFRoZSBhZ2dyZWdhdGUgZXhw cmVzc2lvbnMgaW4gdGhlIHF1ZXJ5IGRvIG5vdCBjb250YWluCisgICAgICA8bGl0ZXJhbD5ESVNU SU5DVDwvbGl0ZXJhbD4gb3IgPGxpdGVyYWw+T1JERVIgQlk8L2xpdGVyYWw+IGNsYXVzZXMKKyAg ICAgPC9wYXJhPgorICAgIDwvbGlzdGl0ZW0+CisgICAgPGxpc3RpdGVtPgorICAgICA8cGFyYT4K KyAgICAgIFRoZSBkYXRhIHR5cGUgb2YgdGhlIHN0YXRlIHZhbHVlIGlzIG5laXRoZXIgPHR5cGU+ aW50ZXJuYWw8L3R5cGU+CisgICAgICBub3IgcHNldWRvLXR5cGUuCisgICAgIDwvcGFyYT4KKyAg ICA8L2xpc3RpdGVtPgorICAgPC9pdGVtaXplZGxpc3Q+CisgIFdoZW4gcGVyZm9ybWluZyBwYXJ0 aWFsIGFnZ3JlZ2F0ZSBwdXNoZG93biwKKyAgPGZpbGVuYW1lPnBvc3RncmVzX2ZkdzwvZmlsZW5h bWU+IHdpbGwgbm90IHNlbmQgPGxpdGVyYWw+SEFWSU5HPC9saXRlcmFsPgorICBjbGF1c2UuIEZv ciBleGFtcGxlLCBsZXQgdXMgYXNzdW1lIHRoYXQgdGhlcmUgaXMgb25lIHJlbW90ZSBzZXJ2ZXIK KyAgYW5kIHRoZSBsb2NhbCBzZXJ2ZXIgcmVjZWl2ZSB0aGUgZm9sbG93aW5nCisgIHF1ZXJ5LCB3 aGVyZSA8bGl0ZXJhbD5mX3Q8L2xpdGVyYWw+IGlzIGEgZm9yZWlnbiB0YWJsZSBhbmQKKyAgPGxp dGVyYWw+Y19pbnRlZ2VyPC9saXRlcmFsPiBpcyBhIGNvbHVtbiB3aG9zZSB0eXBlIGlzIDxsaXRl cmFsPmludGVnZXI8L2xpdGVyYWw+LgorICBBbmQgbGV0IHVzIGFzc3VtZSB0aGF0IDxsaXRlcmFs PmZfdDwvbGl0ZXJhbD4gY29ycmVzcG9uZHMKKyAgdGhlIHRhYmxlIDxsaXRlcmFsPnQ8L2xpdGVy YWw+IG9uIHRoZSBsb2NhbCBzZXJ2ZXIuCis8cHJvZ3JhbWxpc3Rpbmc+CitTRUxFQ1QgYXZnKGNf aW50ZWdlcikgRlJPTSBmX3QgSEFWSU5HIHN1bShjX2ludGVnZXIpID4gMAorPC9wcm9ncmFtbGlz dGluZz4KKyAgVGhlbiA8ZmlsZW5hbWU+cG9zdGdyZXNfZmR3PC9maWxlbmFtZT4gc2VuZCB0aGUg Zm9sbG93aW5nIHF1ZXJ5IHRvIHRoZSByZW1vdGUgc2VydmVycy4KKzxwcm9ncmFtbGlzdGluZz4K K1NFTEVDVCBhdmcoY19pbnRlZ2VyKSBQQVJUSUFMX0FHR1JFR0FURSBGUk9NIHQKKzwvcHJvZ3Jh bWxpc3Rpbmc+CisgIDwvcGFyYT4KKyA8L3NlY3QyPgorCiAgPHNlY3QyIGlkPSJwb3N0Z3Jlcy1m ZHctcmVtb3RlLXF1ZXJ5LWV4ZWN1dGlvbi1lbnZpcm9ubWVudCI+CiAgIDx0aXRsZT5SZW1vdGUg UXVlcnkgRXhlY3V0aW9uIEVudmlyb25tZW50PC90aXRsZT4KIApkaWZmIC0tZ2l0IGEvZG9jL3Ny Yy9zZ21sL3N5bnRheC5zZ21sIGIvZG9jL3NyYy9zZ21sL3N5bnRheC5zZ21sCmluZGV4IDkxNjE4 OWE3ZDY4Li45NjdkZGQzYmUzOSAxMDA2NDQKLS0tIGEvZG9jL3NyYy9zZ21sL3N5bnRheC5zZ21s CisrKyBiL2RvYy9zcmMvc2dtbC9zeW50YXguc2dtbApAQCAtMTU5OCwxMCArMTU5OCwxMCBAQCBz cXJ0KDIpCiAgICAgc3ludGF4IG9mIGFuIGFnZ3JlZ2F0ZSBleHByZXNzaW9uIGlzIG9uZSBvZiB0 aGUgZm9sbG93aW5nOgogCiA8c3lub3BzaXM+Ci08cmVwbGFjZWFibGU+YWdncmVnYXRlX25hbWU8 L3JlcGxhY2VhYmxlPiAoPHJlcGxhY2VhYmxlPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiBbICwg Li4uIF0gWyA8cmVwbGFjZWFibGU+b3JkZXJfYnlfY2xhdXNlPC9yZXBsYWNlYWJsZT4gXSApIFsg RklMVEVSICggV0hFUkUgPHJlcGxhY2VhYmxlPmZpbHRlcl9jbGF1c2U8L3JlcGxhY2VhYmxlPiAp IF0KLTxyZXBsYWNlYWJsZT5hZ2dyZWdhdGVfbmFtZTwvcmVwbGFjZWFibGU+IChBTEwgPHJlcGxh Y2VhYmxlPmV4cHJlc3Npb248L3JlcGxhY2VhYmxlPiBbICwgLi4uIF0gWyA8cmVwbGFjZWFibGU+ b3JkZXJfYnlfY2xhdXNlPC9yZXBsYWNlYWJsZT4gXSApIFsgRklMVEVSICggV0hFUkUgPHJlcGxh Y2VhYmxlPmZpbHRlcl9jbGF1c2U8L3JlcGxhY2VhYmxlPiApIF0KLTxyZXBsYWNlYWJsZT5hZ2dy ZWdhdGVfbmFtZTwvcmVwbGFjZWFibGU+IChESVNUSU5DVCA8cmVwbGFjZWFibGU+ZXhwcmVzc2lv bjwvcmVwbGFjZWFibGU+IFsgLCAuLi4gXSBbIDxyZXBsYWNlYWJsZT5vcmRlcl9ieV9jbGF1c2U8 L3JlcGxhY2VhYmxlPiBdICkgWyBGSUxURVIgKCBXSEVSRSA8cmVwbGFjZWFibGU+ZmlsdGVyX2Ns YXVzZTwvcmVwbGFjZWFibGU+ICkgXQotPHJlcGxhY2VhYmxlPmFnZ3JlZ2F0ZV9uYW1lPC9yZXBs YWNlYWJsZT4gKCAqICkgWyBGSUxURVIgKCBXSEVSRSA8cmVwbGFjZWFibGU+ZmlsdGVyX2NsYXVz ZTwvcmVwbGFjZWFibGU+ICkgXQorPHJlcGxhY2VhYmxlPmFnZ3JlZ2F0ZV9uYW1lPC9yZXBsYWNl YWJsZT4gKDxyZXBsYWNlYWJsZT5leHByZXNzaW9uPC9yZXBsYWNlYWJsZT4gWyAsIC4uLiBdIFsg PHJlcGxhY2VhYmxlPm9yZGVyX2J5X2NsYXVzZTwvcmVwbGFjZWFibGU+IF0gKSBbIEZJTFRFUiAo IFdIRVJFIDxyZXBsYWNlYWJsZT5maWx0ZXJfY2xhdXNlPC9yZXBsYWNlYWJsZT4gKSBdIFsgUEFS VElBTF9BR0dSRUdBVEUgXQorPHJlcGxhY2VhYmxlPmFnZ3JlZ2F0ZV9uYW1lPC9yZXBsYWNlYWJs ZT4gKEFMTCA8cmVwbGFjZWFibGU+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+IFsgLCAuLi4gXSBb IDxyZXBsYWNlYWJsZT5vcmRlcl9ieV9jbGF1c2U8L3JlcGxhY2VhYmxlPiBdICkgWyBGSUxURVIg KCBXSEVSRSA8cmVwbGFjZWFibGU+ZmlsdGVyX2NsYXVzZTwvcmVwbGFjZWFibGU+ICkgXSBbIFBB UlRJQUxfQUdHUkVHQVRFIF0KKzxyZXBsYWNlYWJsZT5hZ2dyZWdhdGVfbmFtZTwvcmVwbGFjZWFi bGU+IChESVNUSU5DVCA8cmVwbGFjZWFibGU+ZXhwcmVzc2lvbjwvcmVwbGFjZWFibGU+IFsgLCAu Li4gXSBbIDxyZXBsYWNlYWJsZT5vcmRlcl9ieV9jbGF1c2U8L3JlcGxhY2VhYmxlPiBdICkgWyBG SUxURVIgKCBXSEVSRSA8cmVwbGFjZWFibGU+ZmlsdGVyX2NsYXVzZTwvcmVwbGFjZWFibGU+ICkg XSBbIFBBUlRJQUxfQUdHUkVHQVRFIF0KKzxyZXBsYWNlYWJsZT5hZ2dyZWdhdGVfbmFtZTwvcmVw bGFjZWFibGU+ICggKiApIFsgRklMVEVSICggV0hFUkUgPHJlcGxhY2VhYmxlPmZpbHRlcl9jbGF1 c2U8L3JlcGxhY2VhYmxlPiApIF0gWyBQQVJUSUFMX0FHR1JFR0FURSBdCiA8cmVwbGFjZWFibGU+ YWdncmVnYXRlX25hbWU8L3JlcGxhY2VhYmxlPiAoIFsgPHJlcGxhY2VhYmxlPmV4cHJlc3Npb248 L3JlcGxhY2VhYmxlPiBbICwgLi4uIF0gXSApIFdJVEhJTiBHUk9VUCAoIDxyZXBsYWNlYWJsZT5v cmRlcl9ieV9jbGF1c2U8L3JlcGxhY2VhYmxlPiApIFsgRklMVEVSICggV0hFUkUgPHJlcGxhY2Vh YmxlPmZpbHRlcl9jbGF1c2U8L3JlcGxhY2VhYmxlPiApIF0KIDwvc3lub3BzaXM+CiAKQEAgLTE3 NzksNiArMTc3OSwyNSBAQCBGUk9NIGdlbmVyYXRlX3NlcmllcygxLDEwKSBBUyBzKGkpOwogPC9w cm9ncmFtbGlzdGluZz4KICAgIDwvcGFyYT4KIAorICAgPHBhcmE+CisgICAgSWYgPGxpdGVyYWw+ UEFSVElBTF9BR0dSRUdBVEU8L2xpdGVyYWw+IGlzIHNwZWNpZmllZCwgdGhlbiB0aGUgYWdncmVn YXRlCisgICAgZXhwcmVzc2lvbiB5aWVsZHMgdGhlIHZhbHVlIGJlZm9yZSBmaW5hbGl6YXRpb24g b2YgdGhlIGFnZ3JlZ2F0aW9uLgorICAgIEZvciBleGFtcGxlLCB0aGUgZGF0YSB0eXBlIG9mIHRo ZSBzdGF0ZSB2YWx1ZSBvZiA8bGl0ZXJhbD5hdmcgKCBpbnRlZ2VyICk8L2xpdGVyYWw+IGlzIDxs aXRlcmFsPmJpZ2ludFtdPC9saXRlcmFsPi4KKyAgICBUaGUgc3RhdGUgdmFsdWUgb2YgPGxpdGVy YWw+YXZnICggaW50ZWdlciApPC9saXRlcmFsPiBoYXMgdHdvIGVsZW1lbnRzLCB3aGljaCBhcmUg dGhlIHRvdGFsIG51bWJlcgorICAgIG9mIGlucHV0IHZhbHVlcyBhbmQgdGhlIHN1bSBvZiB0aGUg aW5wdXQgdmFsdWVzLiBUaGVyZWZvcmUsIGFuIGV4YW1wbGUgb2YgYQorICAgIGNhbGwgb2YgPGxp dGVyYWw+YXZnICggaW50ZWdlciApPC9saXRlcmFsPiB3aXRoIDxsaXRlcmFsPlBBUlRJQUxfQUdH UkVHQVRFPC9saXRlcmFsPiBpczoKKzxwcm9ncmFtbGlzdGluZz4KK1dJVEggdmFscyAodikgQVMg KCBWQUxVRVMgKDEpLCg1KSApCitTRUxFQ1QKKyAgICBhdmcodikgUEFSVElBTF9BR0dSRUdBVEUK K0ZST00gdmFsczsKKyAgYXZnCistLS0tLS0tCisgezIsM30KKygxIHJvdykKKzwvcHJvZ3JhbWxp c3Rpbmc+CisgICA8L3BhcmE+CisKICAgIDxwYXJhPgogICAgIFRoZSBwcmVkZWZpbmVkIGFnZ3Jl Z2F0ZSBmdW5jdGlvbnMgYXJlIGRlc2NyaWJlZCBpbiA8eHJlZgogICAgIGxpbmtlbmQ9ImZ1bmN0 aW9ucy1hZ2dyZWdhdGUiLz4uICBPdGhlciBhZ2dyZWdhdGUgZnVuY3Rpb25zIGNhbiBiZSBhZGRl ZApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFnZy5jIGIvc3JjL2JhY2tl bmQvZXhlY3V0b3Ivbm9kZUFnZy5jCmluZGV4IGI0YTc2OThhMGIzLi40ZWVkMjgxZDc4YiAxMDA2 NDQKLS0tIGEvc3JjL2JhY2tlbmQvZXhlY3V0b3Ivbm9kZUFnZy5jCisrKyBiL3NyYy9iYWNrZW5k L2V4ZWN1dG9yL25vZGVBZ2cuYwpAQCAtMTA3NCw5ICsxMDc0LDExIEBAIGZpbmFsaXplX2FnZ3Jl Z2F0ZShBZ2dTdGF0ZSAqYWdnc3RhdGUsCiAJfQogCiAJLyoKLQkgKiBBcHBseSB0aGUgYWdnJ3Mg ZmluYWxmbiBpZiBvbmUgaXMgcHJvdmlkZWQsIGVsc2UgcmV0dXJuIHRyYW5zVmFsdWUuCisJICog QXBwbHkgdGhlIGFnZydzIGZpbmFsZm4gaWYgb25lIGlzIHByb3ZpZGVkIGFuZCBQQVJUSUFMX0FH R1JFR0FURQorCSAqIGtleXdvcmQgaXMgbm90IHNwZWNpZmllZCwgZWxzZSByZXR1cm4gdHJhbnNW YWx1ZS4KIAkgKi8KLQlpZiAoT2lkSXNWYWxpZChwZXJhZ2ctPmZpbmFsZm5fb2lkKSkKKwlpZiAo T2lkSXNWYWxpZChwZXJhZ2ctPmZpbmFsZm5fb2lkKSAmJgorCQkocGVyYWdnLT5hZ2dyZWYtPmFn Z19wYXJ0aWFsID09IGZhbHNlKSkKIAl7CiAJCWludAkJCW51bUZpbmFsQXJncyA9IHBlcmFnZy0+ bnVtRmluYWxBcmdzOwogCmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9ub2Rlcy9tYWtlZnVuY3Mu YyBiL3NyYy9iYWNrZW5kL25vZGVzL21ha2VmdW5jcy5jCmluZGV4IGUyZDllOWJlNDFhLi5jMTcy NzBhOTQ1NyAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNzLmMKKysrIGIv c3JjL2JhY2tlbmQvbm9kZXMvbWFrZWZ1bmNzLmMKQEAgLTY4NSw2ICs2ODUsNyBAQCBtYWtlRnVu Y0NhbGwoTGlzdCAqbmFtZSwgTGlzdCAqYXJncywgQ29lcmNpb25Gb3JtIGZ1bmNmb3JtYXQsIGlu dCBsb2NhdGlvbikKIAluLT5hZ2dfd2l0aGluX2dyb3VwID0gZmFsc2U7CiAJbi0+YWdnX3N0YXIg PSBmYWxzZTsKIAluLT5hZ2dfZGlzdGluY3QgPSBmYWxzZTsKKwluLT5hZ2dfcGFydGlhbCA9IGZh bHNlOwogCW4tPmZ1bmNfdmFyaWFkaWMgPSBmYWxzZTsKIAluLT5mdW5jZm9ybWF0ID0gZnVuY2Zv cm1hdDsKIAluLT5sb2NhdGlvbiA9IGxvY2F0aW9uOwpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQv b3B0aW1pemVyL3BsYW4vcGxhbm5lci5jIGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3BsYW4vcGxh bm5lci5jCmluZGV4IGE0ZDUyM2RjYjBmLi45YzliY2FiNjQ4YSAxMDA2NDQKLS0tIGEvc3JjL2Jh Y2tlbmQvb3B0aW1pemVyL3BsYW4vcGxhbm5lci5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXpl ci9wbGFuL3BsYW5uZXIuYwpAQCAtMjA5LDcgKzIwOSw3IEBAIHN0YXRpYyBQYXRoVGFyZ2V0ICpt YWtlX2dyb3VwX2lucHV0X3RhcmdldChQbGFubmVySW5mbyAqcm9vdCwKIAkJCQkJCQkJCQkgICBQ YXRoVGFyZ2V0ICpmaW5hbF90YXJnZXQpOwogc3RhdGljIFBhdGhUYXJnZXQgKm1ha2VfcGFydGlh bF9ncm91cGluZ190YXJnZXQoUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQkJCQkJCQlQYXRoVGFy Z2V0ICpncm91cGluZ190YXJnZXQsCi0JCQkJCQkJCQkJCQlOb2RlICpoYXZpbmdRdWFsKTsKKwkJ CQkJCQkJCQkJCUdyb3VwUGF0aEV4dHJhRGF0YSAqZXh0cmEpOwogc3RhdGljIExpc3QgKnBvc3Rw cm9jZXNzX3NldG9wX3RsaXN0KExpc3QgKm5ld190bGlzdCwgTGlzdCAqb3JpZ190bGlzdCk7CiBz dGF0aWMgdm9pZCBvcHRpbWl6ZV93aW5kb3dfY2xhdXNlcyhQbGFubmVySW5mbyAqcm9vdCwKIAkJ CQkJCQkJCVdpbmRvd0Z1bmNMaXN0cyAqd2ZsaXN0cyk7CkBAIC01NTE2LDYgKzU1MTYsOTkgQEAg bWFrZV9ncm91cF9pbnB1dF90YXJnZXQoUGxhbm5lckluZm8gKnJvb3QsIFBhdGhUYXJnZXQgKmZp bmFsX3RhcmdldCkKIAlyZXR1cm4gc2V0X3BhdGh0YXJnZXRfY29zdF93aWR0aChyb290LCBpbnB1 dF90YXJnZXQpOwogfQogCisvKgorICogc2V0R3JvdXBDbGF1c2VQYXJ0aWFsCisgKgkgIEdlbmVy YXRlIGEgZ3JvdXBDbGF1c2UgYW5kIGEgcGF0aHRhcmdldCBmb3IgcGFydGlhbCBhZ2dyZWdhdGUK KyAqCSAgcHVzaGRvd24gYnkgRkRXIGFuZCBzZXQgdGhlbSB0byBHcm91cFBhdGhFeHRyYURhdGEu CisgKi8KK3N0YXRpYyB2b2lkCitzZXRHcm91cENsYXVzZVBhcnRpYWwoUGF0aFRhcmdldCAqcGFy dGlhbF90YXJnZXQsIExpc3QgKm5vbl9ncm91cF9leHBycywKKwkJCQkJICBMaXN0ICpncm91cENs YXVzZSwgR3JvdXBQYXRoRXh0cmFEYXRhICpleHRyYSkKK3sKKwlpbnQJCQlleHBybm8sCisJCQkJ cmVmbm87CisJTGlzdENlbGwgICAqbGM7CisJSW5kZXgJCW1heFJlZiA9IDA7CisJTGlzdAkgICAq ZXhwcnNfcHJvY2Vzc2VkID0gTklMOworCWludAkJCWV4cHJzX251bSA9IDA7CisKKwlmb3JlYWNo KGxjLCBncm91cENsYXVzZSkKKwl7CisJCVNvcnRHcm91cENsYXVzZSAqc2djID0gKFNvcnRHcm91 cENsYXVzZSAqKSBsZmlyc3QobGMpOworCisJCWlmIChzZ2MtPnRsZVNvcnRHcm91cFJlZiA+IG1h eFJlZikKKwkJCW1heFJlZiA9IHNnYy0+dGxlU29ydEdyb3VwUmVmOworCX0KKwltYXhSZWYrKzsK KworCWV4dHJhLT5ncm91cENsYXVzZVBhcnRpYWwgPSBsaXN0X2NvcHlfZGVlcChncm91cENsYXVz ZSk7CisJZXh0cmEtPnBhcnRpYWxfdGFyZ2V0ID0gY29weV9wYXRodGFyZ2V0KHBhcnRpYWxfdGFy Z2V0KTsKKworCWlmIChwYXJ0aWFsX3RhcmdldC0+ZXhwcnMpCisJCWV4cHJzX251bSA9IHBhcnRp YWxfdGFyZ2V0LT5leHBycy0+bGVuZ3RoOworCisJZm9yZWFjaChsYywgbm9uX2dyb3VwX2V4cHJz KQorCXsKKwkJRXhwcgkgICAqZXhwciA9IChFeHByICopIGxmaXJzdChsYyk7CisKKwkJcmVmbm8g PSAtMTsKKwkJaWYgKGxpc3RfbWVtYmVyKGV4cHJzX3Byb2Nlc3NlZCwgZXhwcikgfHwKKwkJCSgh SXNBKGV4cHIsIFZhcikgJiYgIUlzQShleHByLCBQbGFjZUhvbGRlclZhcikpKQorCQkJY29udGlu dWU7CisJCWV4cHJzX3Byb2Nlc3NlZCA9IGxhcHBlbmQoZXhwcnNfcHJvY2Vzc2VkLCBleHByKTsK KwkJZm9yIChleHBybm8gPSAwOyBleHBybm8gPCBleHByc19udW07IGV4cHJubysrKQorCQl7CisJ CQlFeHByCSAgICp0YXJnZXRfZXhwciA9IChFeHByICopIGxpc3RfbnRoKHBhcnRpYWxfdGFyZ2V0 LT5leHBycywgZXhwcm5vKTsKKworCQkJaWYgKGVxdWFsKHRhcmdldF9leHByLCBleHByKSkKKwkJ CXsKKwkJCQlyZWZubyA9IGV4cHJubzsKKwkJCQlicmVhazsKKwkJCX0KKwkJfQorCQlpZiAocmVm bm8gPCAwKQorCQl7CisJCQlTb3J0R3JvdXBDbGF1c2UgKmdycGNsID0gbWFrZU5vZGUoU29ydEdy b3VwQ2xhdXNlKTsKKworCQkJZ3JwY2wtPnRsZVNvcnRHcm91cFJlZiA9IG1heFJlZisrOworCQkJ ZXh0cmEtPmdyb3VwQ2xhdXNlUGFydGlhbCA9IGxhcHBlbmQoZXh0cmEtPmdyb3VwQ2xhdXNlUGFy dGlhbCwgZ3JwY2wpOworCQkJYWRkX2NvbHVtbl90b19wYXRodGFyZ2V0KGV4dHJhLT5wYXJ0aWFs X3RhcmdldCwgZXhwciwgZ3JwY2wtPnRsZVNvcnRHcm91cFJlZik7CisJCX0KKwl9Cit9CisKKy8q CisgKiBhZGp1c3RBZ2dyZWZGb3JQYXJ0aWFsCisgKiBBZGp1c3QgQWdncmVmcyB0byBwdXQgdGhl bSBpbiBwYXJ0aWFsIG1vZGUKKyAqLworc3RhdGljIHZvaWQKK2FkanVzdEFnZ3JlZkZvclBhcnRp YWwoTGlzdCAqZXhwcnMpCit7CisJTGlzdENlbGwgICAqbGM7CisKKwlmb3JlYWNoKGxjLCBleHBy cykKKwl7CisJCUFnZ3JlZgkgICAqYWdncmVmID0gKEFnZ3JlZiAqKSBsZmlyc3QobGMpOworCisJ CWlmIChJc0EoYWdncmVmLCBBZ2dyZWYpKQorCQl7CisJCQlBZ2dyZWYJICAgKm5ld2FnZ3JlZjsK KworCQkJLyoKKwkJCSAqIFdlIHNob3VsZG4ndCBuZWVkIHRvIGNvcHkgdGhlIHN1YnN0cnVjdHVy ZSBvZiB0aGUgQWdncmVmIG5vZGUsCisJCQkgKiBidXQgZmxhdC1jb3B5IHRoZSBub2RlIGl0c2Vs ZiB0byBhdm9pZCBkYW1hZ2luZyBvdGhlciB0cmVlcy4KKwkJCSAqLworCQkJbmV3YWdncmVmID0g bWFrZU5vZGUoQWdncmVmKTsKKwkJCW1lbWNweShuZXdhZ2dyZWYsIGFnZ3JlZiwgc2l6ZW9mKEFn Z3JlZikpOworCisJCQkvKiBGb3Igbm93LCBhc3N1bWUgc2VyaWFsaXphdGlvbiBpcyByZXF1aXJl ZCAqLworCQkJbWFya19wYXJ0aWFsX2FnZ3JlZihuZXdhZ2dyZWYsIEFHR1NQTElUX0lOSVRJQUxf U0VSSUFMKTsKKworCQkJbGZpcnN0KGxjKSA9IG5ld2FnZ3JlZjsKKwkJfQorCX0KK30KKwogLyoK ICAqIG1ha2VfcGFydGlhbF9ncm91cGluZ190YXJnZXQKICAqCSAgR2VuZXJhdGUgYXBwcm9wcmlh dGUgUGF0aFRhcmdldCBmb3Igb3V0cHV0IG9mIHBhcnRpYWwgYWdncmVnYXRlCkBAIC01NTMxLDEx ICs1NjI0LDE1IEBAIG1ha2VfZ3JvdXBfaW5wdXRfdGFyZ2V0KFBsYW5uZXJJbmZvICpyb290LCBQ YXRoVGFyZ2V0ICpmaW5hbF90YXJnZXQpCiAgKgogICogZ3JvdXBpbmdfdGFyZ2V0IGlzIHRoZSB0 bGlzdCB0byBiZSBlbWl0dGVkIGJ5IHRoZSB0b3Btb3N0IGFnZ3JlZ2F0aW9uIHN0ZXAuCiAgKiBo YXZpbmdRdWFsIHJlcHJlc2VudHMgdGhlIEhBVklORyBjbGF1c2UuCisgKgorICogTW9kaWZpZWQg UGF0aFRhcmdldCBjYW5ub3QgYmUgdXNlZCBieSBGRFcgYXMtaXMgdG8gZGVwYXJzZSB0aGlzIHN0 YXRlbWVudC4KKyAqIFNvLCBiZWZvcmUgbW9kaWZ5aW5nIFBhdGhUYXJnZXQsIHNldEdyb3VwQ2xh dXNlUGFydGlhbCBnZW5lcmF0ZXMKKyAqIGFub3RoZXIgUGF0aHRhcmdldCBhbmQgYW5vdGhlciBs aXN0IG9mIFNvcnRHcm91cENsYXVzZXMuCiAgKi8KIHN0YXRpYyBQYXRoVGFyZ2V0ICoKIG1ha2Vf cGFydGlhbF9ncm91cGluZ190YXJnZXQoUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQkJIFBhdGhU YXJnZXQgKmdyb3VwaW5nX3RhcmdldCwKLQkJCQkJCQkgTm9kZSAqaGF2aW5nUXVhbCkKKwkJCQkJ CQkgR3JvdXBQYXRoRXh0cmFEYXRhICpleHRyYSkKIHsKIAlQYXRoVGFyZ2V0ICpwYXJ0aWFsX3Rh cmdldDsKIAlMaXN0CSAgICpub25fZ3JvdXBfY29sczsKQEAgLTU1NzcsOCArNTY3NCw4IEBAIG1h a2VfcGFydGlhbF9ncm91cGluZ190YXJnZXQoUGxhbm5lckluZm8gKnJvb3QsCiAJLyoKIAkgKiBJ ZiB0aGVyZSdzIGEgSEFWSU5HIGNsYXVzZSwgd2UnbGwgbmVlZCB0aGUgVmFycy9BZ2dyZWZzIGl0 IHVzZXMsIHRvby4KIAkgKi8KLQlpZiAoaGF2aW5nUXVhbCkKLQkJbm9uX2dyb3VwX2NvbHMgPSBs YXBwZW5kKG5vbl9ncm91cF9jb2xzLCBoYXZpbmdRdWFsKTsKKwlpZiAoZXh0cmEtPmhhdmluZ1F1 YWwpCisJCW5vbl9ncm91cF9jb2xzID0gbGFwcGVuZChub25fZ3JvdXBfY29scywgZXh0cmEtPmhh dmluZ1F1YWwpOwogCiAJLyoKIAkgKiBQdWxsIG91dCBhbGwgdGhlIFZhcnMsIFBsYWNlSG9sZGVy VmFycywgYW5kIEFnZ3JlZnMgbWVudGlvbmVkIGluCkBAIC01NTkxLDM1ICs1Njg4LDE3IEBAIG1h a2VfcGFydGlhbF9ncm91cGluZ190YXJnZXQoUGxhbm5lckluZm8gKnJvb3QsCiAJCQkJCQkJCQkg IFBWQ19JTkNMVURFX0FHR1JFR0FURVMgfAogCQkJCQkJCQkJICBQVkNfUkVDVVJTRV9XSU5ET1dG VU5DUyB8CiAJCQkJCQkJCQkgIFBWQ19JTkNMVURFX1BMQUNFSE9MREVSUyk7Ci0KKwlzZXRHcm91 cENsYXVzZVBhcnRpYWwocGFydGlhbF90YXJnZXQsIG5vbl9ncm91cF9leHBycywgcm9vdC0+cHJv Y2Vzc2VkX2dyb3VwQ2xhdXNlLCBleHRyYSk7CiAJYWRkX25ld19jb2x1bW5zX3RvX3BhdGh0YXJn ZXQocGFydGlhbF90YXJnZXQsIG5vbl9ncm91cF9leHBycyk7CisJYWRkX25ld19jb2x1bW5zX3Rv X3BhdGh0YXJnZXQoZXh0cmEtPnBhcnRpYWxfdGFyZ2V0LCBub25fZ3JvdXBfZXhwcnMpOwogCiAJ LyoKIAkgKiBBZGp1c3QgQWdncmVmcyB0byBwdXQgdGhlbSBpbiBwYXJ0aWFsIG1vZGUuICBBdCB0 aGlzIHBvaW50IGFsbCBBZ2dyZWZzCiAJICogYXJlIGF0IHRoZSB0b3AgbGV2ZWwgb2YgdGhlIHRh cmdldCBsaXN0LCBzbyB3ZSBjYW4ganVzdCBzY2FuIHRoZSBsaXN0CiAJICogcmF0aGVyIHRoYW4g cmVjdXJzaW5nIHRocm91Z2ggdGhlIGV4cHJlc3Npb24gdHJlZXMuCiAJICovCi0JZm9yZWFjaChs YywgcGFydGlhbF90YXJnZXQtPmV4cHJzKQotCXsKLQkJQWdncmVmCSAgICphZ2dyZWYgPSAoQWdn cmVmICopIGxmaXJzdChsYyk7Ci0KLQkJaWYgKElzQShhZ2dyZWYsIEFnZ3JlZikpCi0JCXsKLQkJ CUFnZ3JlZgkgICAqbmV3YWdncmVmOwotCi0JCQkvKgotCQkJICogV2Ugc2hvdWxkbid0IG5lZWQg dG8gY29weSB0aGUgc3Vic3RydWN0dXJlIG9mIHRoZSBBZ2dyZWYgbm9kZSwKLQkJCSAqIGJ1dCBm bGF0LWNvcHkgdGhlIG5vZGUgaXRzZWxmIHRvIGF2b2lkIGRhbWFnaW5nIG90aGVyIHRyZWVzLgot CQkJICovCi0JCQluZXdhZ2dyZWYgPSBtYWtlTm9kZShBZ2dyZWYpOwotCQkJbWVtY3B5KG5ld2Fn Z3JlZiwgYWdncmVmLCBzaXplb2YoQWdncmVmKSk7Ci0KLQkJCS8qIEZvciBub3csIGFzc3VtZSBz ZXJpYWxpemF0aW9uIGlzIHJlcXVpcmVkICovCi0JCQltYXJrX3BhcnRpYWxfYWdncmVmKG5ld2Fn Z3JlZiwgQUdHU1BMSVRfSU5JVElBTF9TRVJJQUwpOwotCi0JCQlsZmlyc3QobGMpID0gbmV3YWdn cmVmOwotCQl9Ci0JfQorCWFkanVzdEFnZ3JlZkZvclBhcnRpYWwocGFydGlhbF90YXJnZXQtPmV4 cHJzKTsKKwlhZGp1c3RBZ2dyZWZGb3JQYXJ0aWFsKGV4dHJhLT5wYXJ0aWFsX3RhcmdldC0+ZXhw cnMpOwogCiAJLyogY2xlYW4gdXAgY3J1ZnQgKi8KIAlsaXN0X2ZyZWUobm9uX2dyb3VwX2V4cHJz KTsKQEAgLTcyODAsNyArNzM1OSw3IEBAIGNyZWF0ZV9wYXJ0aWFsX2dyb3VwaW5nX3BhdGhzKFBs YW5uZXJJbmZvICpyb290LAogCSAqLwogCXBhcnRpYWxseV9ncm91cGVkX3JlbC0+cmVsdGFyZ2V0 ID0KIAkJbWFrZV9wYXJ0aWFsX2dyb3VwaW5nX3RhcmdldChyb290LCBncm91cGVkX3JlbC0+cmVs dGFyZ2V0LAotCQkJCQkJCQkJIGV4dHJhLT5oYXZpbmdRdWFsKTsKKwkJCQkJCQkJCSBleHRyYSk7 CiAKIAlpZiAoIWV4dHJhLT5wYXJ0aWFsX2Nvc3RzX3NldCkKIAl7CmRpZmYgLS1naXQgYS9zcmMv YmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMgYi9zcmMvYmFja2VuZC9vcHRpbWl6ZXIv cGxhbi9zZXRyZWZzLmMKaW5kZXggOTk5YTVhOGFiNWEuLjJkNjg1OGUxMjVjIDEwMDY0NAotLS0g YS9zcmMvYmFja2VuZC9vcHRpbWl6ZXIvcGxhbi9zZXRyZWZzLmMKKysrIGIvc3JjL2JhY2tlbmQv b3B0aW1pemVyL3BsYW4vc2V0cmVmcy5jCkBAIC0yNjUxLDYgKzI2NTEsNyBAQCBjb252ZXJ0X2Nv bWJpbmluZ19hZ2dyZWZzKE5vZGUgKm5vZGUsIHZvaWQgKmNvbnRleHQpCiAJCXBhcmVudF9hZ2cg PSBjb3B5T2JqZWN0KGNoaWxkX2FnZyk7CiAJCWNoaWxkX2FnZy0+YXJncyA9IG9yaWdfYWdnLT5h cmdzOwogCQljaGlsZF9hZ2ctPmFnZ2ZpbHRlciA9IG9yaWdfYWdnLT5hZ2dmaWx0ZXI7CisJCWNo aWxkX2FnZy0+YWdnX3BhcnRpYWwgPSBvcmlnX2FnZy0+YWdnX3BhcnRpYWw7CiAKIAkJLyoKIAkJ ICogTm93LCBzZXQgdXAgY2hpbGRfYWdnIHRvIHJlcHJlc2VudCB0aGUgZmlyc3QgcGhhc2Ugb2Yg cGFydGlhbApkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3ByZXAvcHJlcGFnZy5j IGIvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3ByZXAvcHJlcGFnZy5jCmluZGV4IGMwYTJmMDRhOGMz Li5jM2ZmZDM2ZDZlNCAxMDA2NDQKLS0tIGEvc3JjL2JhY2tlbmQvb3B0aW1pemVyL3ByZXAvcHJl cGFnZy5jCisrKyBiL3NyYy9iYWNrZW5kL29wdGltaXplci9wcmVwL3ByZXBhZ2cuYwpAQCAtNDEw LDYgKzQxMCw3IEBAIGZpbmRfY29tcGF0aWJsZV9hZ2coUGxhbm5lckluZm8gKnJvb3QsIEFnZ3Jl ZiAqbmV3YWdnLAogCQkvKiBhbGwgb2YgdGhlIGZvbGxvd2luZyBtdXN0IGJlIHRoZSBzYW1lIG9y IGl0J3Mgbm8gbWF0Y2ggKi8KIAkJaWYgKG5ld2FnZy0+aW5wdXRjb2xsaWQgIT0gZXhpc3RpbmdS ZWYtPmlucHV0Y29sbGlkIHx8CiAJCQluZXdhZ2ctPmFnZ3RyYW5zdHlwZSAhPSBleGlzdGluZ1Jl Zi0+YWdndHJhbnN0eXBlIHx8CisJCQluZXdhZ2ctPmFnZ19wYXJ0aWFsICE9IGV4aXN0aW5nUmVm LT5hZ2dfcGFydGlhbCB8fAogCQkJbmV3YWdnLT5hZ2dzdGFyICE9IGV4aXN0aW5nUmVmLT5hZ2dz dGFyIHx8CiAJCQluZXdhZ2ctPmFnZ3ZhcmlhZGljICE9IGV4aXN0aW5nUmVmLT5hZ2d2YXJpYWRp YyB8fAogCQkJbmV3YWdnLT5hZ2draW5kICE9IGV4aXN0aW5nUmVmLT5hZ2draW5kIHx8CmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIvZ3JhbS55IGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dy YW0ueQppbmRleCAyNzFhZTI2Y2JhZi4uMTFhNDlkYTc3OWYgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNr ZW5kL3BhcnNlci9ncmFtLnkKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL2dyYW0ueQpAQCAtNjI5 LDYgKzYyOSw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpy ZWxuYW1lLCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAKICV0eXBlIDxsaXN0Pgl3aXRo aW5fZ3JvdXBfY2xhdXNlCiAldHlwZSA8bm9kZT4JZmlsdGVyX2NsYXVzZQorJXR5cGUgPGJvb2xl YW4+IHBhcnRpYWxfYWdncmVnYXRlX2NsYXVzZQogJXR5cGUgPGxpc3Q+CXdpbmRvd19jbGF1c2Ug d2luZG93X2RlZmluaXRpb25fbGlzdCBvcHRfcGFydGl0aW9uX2NsYXVzZQogJXR5cGUgPHdpbmRl Zj4Jd2luZG93X2RlZmluaXRpb24gb3Zlcl9jbGF1c2Ugd2luZG93X3NwZWNpZmljYXRpb24KIAkJ CQlvcHRfZnJhbWVfY2xhdXNlIGZyYW1lX2V4dGVudCBmcmFtZV9ib3VuZApAQCAtNzU2LDcgKzc1 Nyw3IEBAIHN0YXRpYyBOb2RlICptYWtlUmVjdXJzaXZlVmlld1NlbGVjdChjaGFyICpyZWxuYW1l LCBMaXN0ICphbGlhc2VzLCBOb2RlICpxdWVyeSk7CiAJT1JERVIgT1JESU5BTElUWSBPVEhFUlMg T1VUX1AgT1VURVJfUAogCU9WRVIgT1ZFUkxBUFMgT1ZFUkxBWSBPVkVSUklESU5HIE9XTkVEIE9X TkVSCiAKLQlQQVJBTExFTCBQQVJBTUVURVIgUEFSU0VSIFBBUlRJQUwgUEFSVElUSU9OIFBBU1NJ TkcgUEFTU1dPUkQgUEFUSAorCVBBUkFMTEVMIFBBUkFNRVRFUiBQQVJTRVIgUEFSVElBTCBQQVJU SUFMX0FHR1JFR0FURSBQQVJUSVRJT04gUEFTU0lORyBQQVNTV09SRCBQQVRICiAJUEVSSU9EIFBM QUNJTkcgUExBTiBQTEFOUyBQT0xJQ1kKIAlQT1NJVElPTiBQUkVDRURJTkcgUFJFQ0lTSU9OIFBS RVNFUlZFIFBSRVBBUkUgUFJFUEFSRUQgUFJJTUFSWQogCVBSSU9SIFBSSVZJTEVHRVMgUFJPQ0VE VVJBTCBQUk9DRURVUkUgUFJPQ0VEVVJFUyBQUk9HUkFNIFBVQkxJQ0FUSU9OCkBAIC0xNTc1OCwx MCArMTU3NTksMTEgQEAgZnVuY19hcHBsaWNhdGlvbjogZnVuY19uYW1lICcoJyAnKScKICAqIChO b3RlIHRoYXQgbWFueSBvZiB0aGUgc3BlY2lhbCBTUUwgZnVuY3Rpb25zIHdvdWxkbid0IGFjdHVh bGx5IG1ha2UgYW55CiAgKiBzZW5zZSBhcyBmdW5jdGlvbmFsIGluZGV4IGVudHJpZXMsIGJ1dCB3 ZSBpZ25vcmUgdGhhdCBjb25zaWRlcmF0aW9uIGhlcmUuKQogICovCi1mdW5jX2V4cHI6IGZ1bmNf YXBwbGljYXRpb24gd2l0aGluX2dyb3VwX2NsYXVzZSBmaWx0ZXJfY2xhdXNlIG92ZXJfY2xhdXNl CitmdW5jX2V4cHI6IGZ1bmNfYXBwbGljYXRpb24gd2l0aGluX2dyb3VwX2NsYXVzZSBmaWx0ZXJf Y2xhdXNlIHBhcnRpYWxfYWdncmVnYXRlX2NsYXVzZSBvdmVyX2NsYXVzZQogCQkJCXsKIAkJCQkJ RnVuY0NhbGwgICAqbiA9IChGdW5jQ2FsbCAqKSAkMTsKIAorCQkJCQluLT5hZ2dfcGFydGlhbCA9 ICQ0OwogCQkJCQkvKgogCQkJCQkgKiBUaGUgb3JkZXIgY2xhdXNlIGZvciBXSVRISU4gR1JPVVAg YW5kIHRoZSBvbmUgZm9yCiAJCQkJCSAqIHBsYWluLWFnZ3JlZ2F0ZSBPUkRFUiBCWSBzaGFyZSBh IGZpZWxkLCBzbyB3ZSBoYXZlIHRvCkBAIC0xNTc4Miw2ICsxNTc4NCwxMSBAQCBmdW5jX2V4cHI6 IGZ1bmNfYXBwbGljYXRpb24gd2l0aGluX2dyb3VwX2NsYXVzZSBmaWx0ZXJfY2xhdXNlIG92ZXJf Y2xhdXNlCiAJCQkJCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRBWF9FUlJPUiksCiAJCQkJCQkJ CQkgZXJybXNnKCJjYW5ub3QgdXNlIERJU1RJTkNUIHdpdGggV0lUSElOIEdST1VQIiksCiAJCQkJ CQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKEAyKSkpOworCQkJCQkJaWYgKG4tPmFnZ19wYXJ0aWFs KQorCQkJCQkJCWVyZXBvcnQoRVJST1IsCisJCQkJCQkJCQkoZXJyY29kZShFUlJDT0RFX1NZTlRB WF9FUlJPUiksCisJCQkJCQkJCQkgZXJybXNnKCJjYW5ub3QgdXNlIFBBUlRJQUxfQUdHUkVHQVRF IHdpdGggV0lUSElOIEdST1VQIiksCisJCQkJCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKEAyKSkp OwogCQkJCQkJaWYgKG4tPmZ1bmNfdmFyaWFkaWMpCiAJCQkJCQkJZXJlcG9ydChFUlJPUiwKIAkJ CQkJCQkJCShlcnJjb2RlKEVSUkNPREVfU1lOVEFYX0VSUk9SKSwKQEAgLTE1NzkxLDcgKzE1Nzk4 LDcgQEAgZnVuY19leHByOiBmdW5jX2FwcGxpY2F0aW9uIHdpdGhpbl9ncm91cF9jbGF1c2UgZmls dGVyX2NsYXVzZSBvdmVyX2NsYXVzZQogCQkJCQkJbi0+YWdnX3dpdGhpbl9ncm91cCA9IHRydWU7 CiAJCQkJCX0KIAkJCQkJbi0+YWdnX2ZpbHRlciA9ICQzOwotCQkJCQluLT5vdmVyID0gJDQ7CisJ CQkJCW4tPm92ZXIgPSAkNTsKIAkJCQkJJCQgPSAoTm9kZSAqKSBuOwogCQkJCX0KIAkJCXwganNv bl9hZ2dyZWdhdGVfZnVuYyBmaWx0ZXJfY2xhdXNlIG92ZXJfY2xhdXNlCkBAIC0xNjM4Myw2ICsx NjM5MCwxMCBAQCBmaWx0ZXJfY2xhdXNlOgogCQkJfCAvKkVNUFRZKi8JCQkJCQkJCXsgJCQgPSBO VUxMOyB9CiAJCTsKIAorcGFydGlhbF9hZ2dyZWdhdGVfY2xhdXNlOgorCQkJUEFSVElBTF9BR0dS RUdBVEUJCQkJeyAkJCA9IHRydWU7IH0KKwkJCXwgLypFTVBUWSovCQkJCQkJCQl7ICQkID0gZmFs c2U7IH0KKwkJOwogCiAvKgogICogV2luZG93IERlZmluaXRpb25zCkBAIC0xNzkwNSw2ICsxNzkx Niw3IEBAIHVucmVzZXJ2ZWRfa2V5d29yZDoKIAkJCXwgUEFSQU1FVEVSCiAJCQl8IFBBUlNFUgog CQkJfCBQQVJUSUFMCisJCQl8IFBBUlRJQUxfQUdHUkVHQVRFCiAJCQl8IFBBUlRJVElPTgogCQkJ fCBQQVNTSU5HCiAJCQl8IFBBU1NXT1JECmRpZmYgLS1naXQgYS9zcmMvYmFja2VuZC9wYXJzZXIv cGFyc2VfYWdnLmMgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfYWdnLmMKaW5kZXggMGFjODk2 NmUzMGYuLmNkMjNlZWFlMjQ4IDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2Vf YWdnLmMKKysrIGIvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2FnZy5jCkBAIC0xNiw2ICsxNiw3 IEBACiAKICNpbmNsdWRlICJhY2Nlc3MvaHR1cF9kZXRhaWxzLmgiCiAjaW5jbHVkZSAiY2F0YWxv Zy9wZ19hZ2dyZWdhdGUuaCIKKyNpbmNsdWRlICJjYXRhbG9nL3BnX3Byb2MuaCIKICNpbmNsdWRl ICJjYXRhbG9nL3BnX2NvbnN0cmFpbnQuaCIKICNpbmNsdWRlICJjYXRhbG9nL3BnX3R5cGUuaCIK ICNpbmNsdWRlICJjb21tb24vaW50LmgiCkBAIC0xMDYsOCArMTA3LDggQEAgc3RhdGljIE5vZGUg Km1ha2VfYWdnX2FyZyhPaWQgYXJndHlwZSwgT2lkIGFyZ2NvbGxhdGlvbik7CiAgKiBwc3RhdGUg bGV2ZWwuCiAgKi8KIHZvaWQKLXRyYW5zZm9ybUFnZ3JlZ2F0ZUNhbGwoUGFyc2VTdGF0ZSAqcHN0 YXRlLCBBZ2dyZWYgKmFnZywKLQkJCQkJICAgTGlzdCAqYXJncywgTGlzdCAqYWdnb3JkZXIsIGJv b2wgYWdnX2Rpc3RpbmN0KQordHJhbnNmb3JtQWdncmVnYXRlQ2FsbChQYXJzZVN0YXRlICpwc3Rh dGUsIEFnZ3JlZiAqYWdnLCBMaXN0ICphcmdzLAorCQkJCQkgICBMaXN0ICphZ2dvcmRlciwgYm9v bCBhZ2dfZGlzdGluY3QsIGJvb2wgYWdnX3BhcnRpYWwpCiB7CiAJTGlzdAkgICAqYXJndHlwZXMg PSBOSUw7CiAJTGlzdAkgICAqdGxpc3QgPSBOSUw7CkBAIC0xNTIsOCArMTUzLDggQEAgdHJhbnNm b3JtQWdncmVnYXRlQ2FsbChQYXJzZVN0YXRlICpwc3RhdGUsIEFnZ3JlZiAqYWdnLAogCQkJCQkJ CQkJCSB0b3JkZXIsIHRsaXN0LCBzb3J0YnkpOwogCQl9CiAKLQkJLyogTmV2ZXIgYW55IERJU1RJ TkNUIGluIGFuIG9yZGVyZWQtc2V0IGFnZyAqLwotCQlBc3NlcnQoIWFnZ19kaXN0aW5jdCk7CisJ CS8qIE5ldmVyIGFueSBESVNUSU5DVCBhbmQgUEFSVElBTF9BR0cgaW4gYW4gb3JkZXJlZC1zZXQg YWdnICovCisJCUFzc2VydCghYWdnX2Rpc3RpbmN0IHx8ICFhZ2dfcGFydGlhbCk7CiAJfQogCWVs c2UKIAl7CkBAIC0yMjcsNiArMjI4LDE4IEBAIHRyYW5zZm9ybUFnZ3JlZ2F0ZUNhbGwoUGFyc2VT dGF0ZSAqcHN0YXRlLCBBZ2dyZWYgKmFnZywKIAlhZ2ctPmFyZ3MgPSB0bGlzdDsKIAlhZ2ctPmFn Z29yZGVyID0gdG9yZGVyOwogCWFnZy0+YWdnZGlzdGluY3QgPSB0ZGlzdGluY3Q7CisJYWdnLT5h Z2dfcGFydGlhbCA9IGFnZ19wYXJ0aWFsOworCWlmKGFnZy0+YWdnX3BhcnRpYWwpeworCQlIZWFw VHVwbGUJYWdndHVwOworCQlGb3JtX3BnX2FnZ3JlZ2F0ZSBhZ2dmb3JtOworCisJCWFnZ3R1cCA9 IFNlYXJjaFN5c0NhY2hlMShBR0dGTk9JRCwgT2JqZWN0SWRHZXREYXR1bShhZ2ctPmFnZ2Zub2lk KSk7CisJCWlmICghSGVhcFR1cGxlSXNWYWxpZChhZ2d0dXApKQorCQkJZWxvZyhFUlJPUiwgImNh Y2hlIGxvb2t1cCBmYWlsZWQgZm9yIGFnZ3JlZ2F0ZSAldSIsIGFnZy0+YWdnZm5vaWQpOworCQlh Z2dmb3JtID0gKEZvcm1fcGdfYWdncmVnYXRlKSBHRVRTVFJVQ1QoYWdndHVwKTsKKwkJUmVsZWFz ZVN5c0NhY2hlKGFnZ3R1cCk7CisJCWFnZy0+YWdndHlwZSA9IGFnZ2Zvcm0tPmFnZ3RyYW5zdHlw ZTsKKwl9CiAKIAkvKgogCSAqIE5vdyBidWlsZCB0aGUgYWdnYXJndHlwZXMgbGlzdCB3aXRoIHRo ZSB0eXBlIE9JRHMgb2YgdGhlIGRpcmVjdCBhbmQKZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kL3Bh cnNlci9wYXJzZV9jbGF1c2UuYyBiL3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9jbGF1c2UuYwpp bmRleCAyZTY0ZmNhZTdiMi4uNDM1MTg0NmM1YTggMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5kL3Bh cnNlci9wYXJzZV9jbGF1c2UuYworKysgYi9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfY2xhdXNl LmMKQEAgLTUzOSw2ICs1MzksNyBAQCB0cmFuc2Zvcm1SYW5nZUZ1bmN0aW9uKFBhcnNlU3RhdGUg KnBzdGF0ZSwgUmFuZ2VGdW5jdGlvbiAqcikKIAkJCQlmYy0+b3ZlciA9PSBOVUxMICYmCiAJCQkJ IWZjLT5hZ2dfc3RhciAmJgogCQkJCSFmYy0+YWdnX2Rpc3RpbmN0ICYmCisJCQkJIWZjLT5hZ2df cGFydGlhbCAmJgogCQkJCSFmYy0+ZnVuY192YXJpYWRpYyAmJgogCQkJCWNvbGRlZmxpc3QgPT0g TklMKQogCQkJewpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2V4cHIuYyBi L3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKaW5kZXggOWNhZjFlNDgxYTIuLmNhYzhi YThjMDgwIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZXhwci5jCisrKyBi L3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9leHByLmMKQEAgLTM4OTMsNyArMzg5Myw4IEBAIHRy YW5zZm9ybUpzb25BZ2dDb25zdHJ1Y3RvcihQYXJzZVN0YXRlICpwc3RhdGUsIEpzb25BZ2dDb25z dHJ1Y3RvciAqYWdnX2N0b3IsCiAJCWFnZ3JlZi0+YWdndHJhbnNubyA9IC0xOwogCQlhZ2dyZWYt PmxvY2F0aW9uID0gYWdnX2N0b3ItPmxvY2F0aW9uOwogCi0JCXRyYW5zZm9ybUFnZ3JlZ2F0ZUNh bGwocHN0YXRlLCBhZ2dyZWYsIGFyZ3MsIGFnZ19jdG9yLT5hZ2dfb3JkZXIsIGZhbHNlKTsKKwkJ dHJhbnNmb3JtQWdncmVnYXRlQ2FsbChwc3RhdGUsIGFnZ3JlZiwgYXJncywgYWdnX2N0b3ItPmFn Z19vcmRlciwgZmFsc2UsCisJCQkJCQkJICAgZmFsc2UpOwogCiAJCW5vZGUgPSAoTm9kZSAqKSBh Z2dyZWY7CiAJfQpkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmQvcGFyc2VyL3BhcnNlX2Z1bmMuYyBi L3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9mdW5jLmMKaW5kZXggNTgzYmJiZjIzMmYuLjQ2M2Ix ZGZkYjMzIDEwMDY0NAotLS0gYS9zcmMvYmFja2VuZC9wYXJzZXIvcGFyc2VfZnVuYy5jCisrKyBi L3NyYy9iYWNrZW5kL3BhcnNlci9wYXJzZV9mdW5jLmMKQEAgLTk3LDYgKzk3LDcgQEAgUGFyc2VG dW5jT3JDb2x1bW4oUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpmdW5jbmFtZSwgTGlzdCAqZmFy Z3MsCiAJYm9vbAkJYWdnX3dpdGhpbl9ncm91cCA9IChmbiA/IGZuLT5hZ2dfd2l0aGluX2dyb3Vw IDogZmFsc2UpOwogCWJvb2wJCWFnZ19zdGFyID0gKGZuID8gZm4tPmFnZ19zdGFyIDogZmFsc2Up OwogCWJvb2wJCWFnZ19kaXN0aW5jdCA9IChmbiA/IGZuLT5hZ2dfZGlzdGluY3QgOiBmYWxzZSk7 CisJYm9vbAkJYWdnX3BhcnRpYWwgPSAoZm4gPyBmbi0+YWdnX3BhcnRpYWwgOiBmYWxzZSk7CiAJ Ym9vbAkJZnVuY192YXJpYWRpYyA9IChmbiA/IGZuLT5mdW5jX3ZhcmlhZGljIDogZmFsc2UpOwog CUNvZXJjaW9uRm9ybSBmdW5jZm9ybWF0ID0gKGZuID8gZm4tPmZ1bmNmb3JtYXQgOiBDT0VSQ0Vf RVhQTElDSVRfQ0FMTCk7CiAJYm9vbAkJY291bGRfYmVfcHJvamVjdGlvbjsKQEAgLTIyMiw3ICsy MjMsOCBAQCBQYXJzZUZ1bmNPckNvbHVtbihQYXJzZVN0YXRlICpwc3RhdGUsIExpc3QgKmZ1bmNu YW1lLCBMaXN0ICpmYXJncywKIAkgKi8KIAljb3VsZF9iZV9wcm9qZWN0aW9uID0gKG5hcmdzID09 IDEgJiYgIXByb2NfY2FsbCAmJgogCQkJCQkJICAgYWdnX29yZGVyID09IE5JTCAmJiBhZ2dfZmls dGVyID09IE5VTEwgJiYKLQkJCQkJCSAgICFhZ2dfc3RhciAmJiAhYWdnX2Rpc3RpbmN0ICYmIG92 ZXIgPT0gTlVMTCAmJgorCQkJCQkJICAgIWFnZ19zdGFyICYmICFhZ2dfZGlzdGluY3QgJiYKKwkJ CQkJCSAgICFhZ2dfcGFydGlhbCAmJiBvdmVyID09IE5VTEwgJiYKIAkJCQkJCSAgICFmdW5jX3Zh cmlhZGljICYmIGFyZ25hbWVzID09IE5JTCAmJgogCQkJCQkJICAgbGlzdF9sZW5ndGgoZnVuY25h bWUpID09IDEgJiYKIAkJCQkJCSAgIChhY3R1YWxfYXJnX3R5cGVzWzBdID09IFJFQ09SRE9JRCB8 fApAQCAtMzIyLDYgKzMyNCwxMiBAQCBQYXJzZUZ1bmNPckNvbHVtbihQYXJzZVN0YXRlICpwc3Rh dGUsIExpc3QgKmZ1bmNuYW1lLCBMaXN0ICpmYXJncywKIAkJCQkJIGVycm1zZygiRElTVElOQ1Qg c3BlY2lmaWVkLCBidXQgJXMgaXMgbm90IGFuIGFnZ3JlZ2F0ZSBmdW5jdGlvbiIsCiAJCQkJCQkJ TmFtZUxpc3RUb1N0cmluZyhmdW5jbmFtZSkpLAogCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBz dGF0ZSwgbG9jYXRpb24pKSk7CisJCWlmIChhZ2dfcGFydGlhbCkKKwkJCWVyZXBvcnQoRVJST1Is CisJCQkJCShlcnJjb2RlKEVSUkNPREVfV1JPTkdfT0JKRUNUX1RZUEUpLAorCQkJCQkgZXJybXNn KCJQQVJUSUFMX0FHR1JFR0FURSBzcGVjaWZpZWQsIGJ1dCAlcyBpcyBub3QgYW4gYWdncmVnYXRl IGZ1bmN0aW9uIiwKKwkJCQkJCQlOYW1lTGlzdFRvU3RyaW5nKGZ1bmNuYW1lKSksCisJCQkJCSBw YXJzZXJfZXJycG9zaXRpb24ocHN0YXRlLCBsb2NhdGlvbikpKTsKIAkJaWYgKGFnZ193aXRoaW5f Z3JvdXApCiAJCQllcmVwb3J0KEVSUk9SLAogCQkJCQkoZXJyY29kZShFUlJDT0RFX1dST05HX09C SkVDVF9UWVBFKSwKQEAgLTM5Miw2ICs0MDAsOCBAQCBQYXJzZUZ1bmNPckNvbHVtbihQYXJzZVN0 YXRlICpwc3RhdGUsIExpc3QgKmZ1bmNuYW1lLCBMaXN0ICpmYXJncywKIAkJCQkJCSBwYXJzZXJf ZXJycG9zaXRpb24ocHN0YXRlLCBsb2NhdGlvbikpKTsKIAkJCS8qIGdyYW0ueSByZWplY3RzIERJ U1RJTkNUICsgV0lUSElOIEdST1VQICovCiAJCQlBc3NlcnQoIWFnZ19kaXN0aW5jdCk7CisJCQkv KiBncmFtLnkgcmVqZWN0cyBQQVJUSUFMX0FHR1JFR0FURSAqLworCQkJQXNzZXJ0KCFhZ2dfcGFy dGlhbCk7CiAJCQkvKiBncmFtLnkgcmVqZWN0cyBWQVJJQURJQyArIFdJVEhJTiBHUk9VUCAqLwog CQkJQXNzZXJ0KCFmdW5jX3ZhcmlhZGljKTsKIApAQCAtODE0LDcgKzgyNCw4IEBAIFBhcnNlRnVu Y09yQ29sdW1uKFBhcnNlU3RhdGUgKnBzdGF0ZSwgTGlzdCAqZnVuY25hbWUsIExpc3QgKmZhcmdz LAogCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgbG9jYXRpb24pKSk7CiAKIAkJLyog cGFyc2VfYWdnLmMgZG9lcyBhZGRpdGlvbmFsIGFnZ3JlZ2F0ZS1zcGVjaWZpYyBwcm9jZXNzaW5n ICovCi0JCXRyYW5zZm9ybUFnZ3JlZ2F0ZUNhbGwocHN0YXRlLCBhZ2dyZWYsIGZhcmdzLCBhZ2df b3JkZXIsIGFnZ19kaXN0aW5jdCk7CisJCXRyYW5zZm9ybUFnZ3JlZ2F0ZUNhbGwocHN0YXRlLCBh Z2dyZWYsIGZhcmdzLCBhZ2dfb3JkZXIsIGFnZ19kaXN0aW5jdCwKKwkJCQkJCQkgICBhZ2dfcGFy dGlhbCk7CiAKIAkJcmV0dmFsID0gKE5vZGUgKikgYWdncmVmOwogCX0KQEAgLTg0Niw2ICs4NTcs MTUgQEAgUGFyc2VGdW5jT3JDb2x1bW4oUGFyc2VTdGF0ZSAqcHN0YXRlLCBMaXN0ICpmdW5jbmFt ZSwgTGlzdCAqZmFyZ3MsCiAJCQkJCSBlcnJtc2coIkRJU1RJTkNUIGlzIG5vdCBpbXBsZW1lbnRl ZCBmb3Igd2luZG93IGZ1bmN0aW9ucyIpLAogCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0 ZSwgbG9jYXRpb24pKSk7CiAKKwkJLyoKKwkJICogcGFydGlhbCBhZ2dyZWdhdGVzIG5vdCBhbGxv d2VkIGluIHdpbmRvd3MgeWV0CisJCSAqLworCQlpZiAoYWdnX3BhcnRpYWwpCisJCQllcmVwb3J0 KEVSUk9SLAorCQkJCQkoZXJyY29kZShFUlJDT0RFX0ZFQVRVUkVfTk9UX1NVUFBPUlRFRCksCisJ CQkJCSBlcnJtc2coIlBBUlRJQUxfQUdHUkVHQVRFIGlzIG5vdCBpbXBsZW1lbnRlZCBmb3Igd2lu ZG93IGZ1bmN0aW9ucyIpLAorCQkJCQkgcGFyc2VyX2VycnBvc2l0aW9uKHBzdGF0ZSwgbG9jYXRp b24pKSk7CisKIAkJLyoKIAkJICogUmVqZWN0IGF0dGVtcHQgdG8gY2FsbCBhIHBhcmFtZXRlcmxl c3MgYWdncmVnYXRlIHdpdGhvdXQgKCopCiAJCSAqIHN5bnRheC4gIFRoaXMgaXMgbWVyZSBwZWRh bnRyeSBidXQgc29tZSBmb2xrcyBpbnNpc3RlZCAuLi4KZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9ydWxldXRpbHMuYyBiL3NyYy9iYWNrZW5kL3V0aWxzL2FkdC9ydWxldXRpbHMu YwppbmRleCA5ZTkwYWNlZGI5MS4uMGQ5NjBlYWI4ZDIgMTAwNjQ0Ci0tLSBhL3NyYy9iYWNrZW5k L3V0aWxzL2FkdC9ydWxldXRpbHMuYworKysgYi9zcmMvYmFja2VuZC91dGlscy9hZHQvcnVsZXV0 aWxzLmMKQEAgLTEwOTE1LDcgKzEwOTE1LDggQEAgZ2V0X2FnZ19leHByX2hlbHBlcihBZ2dyZWYg KmFnZ3JlZiwgZGVwYXJzZV9jb250ZXh0ICpjb250ZXh0LAogCiAJLyogUHJpbnQgdGhlIGFnZ3Jl Z2F0ZSBuYW1lLCBzY2hlbWEtcXVhbGlmaWVkIGlmIG5lZWRlZCAqLwogCWFwcGVuZFN0cmluZ0lu Zm8oYnVmLCAiJXMoJXMiLCBmdW5jbmFtZSwKLQkJCQkJIChhZ2dyZWYtPmFnZ2Rpc3RpbmN0ICE9 IE5JTCkgPyAiRElTVElOQ1QgIiA6ICIiKTsKKwkJCQkJIChhZ2dyZWYtPmFnZ2Rpc3RpbmN0ICE9 IE5JTCkgPyAiRElTVElOQ1QgIiA6CisJCQkJCSBhZ2dyZWYtPmFnZ19wYXJ0aWFsID8gIlBBUlRJ QUxfQUdHUkVHQVRFICIgOiAiIik7CiAKIAlpZiAoQUdHS0lORF9JU19PUkRFUkVEX1NFVChhZ2dy ZWYtPmFnZ2tpbmQpKQogCXsKZGlmZiAtLWdpdCBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9k ZXMuaCBiL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAppbmRleCAyM2M5ZTNjNWFiZi4u NWFmNDk1ZDJiOTAgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3BhcnNlbm9kZXMuaAor KysgYi9zcmMvaW5jbHVkZS9ub2Rlcy9wYXJzZW5vZGVzLmgKQEAgLTQ0Miw2ICs0NDIsNyBAQCB0 eXBlZGVmIHN0cnVjdCBGdW5jQ2FsbAogCWJvb2wJCWFnZ193aXRoaW5fZ3JvdXA7CS8qIE9SREVS IEJZIGFwcGVhcmVkIGluIFdJVEhJTiBHUk9VUCAqLwogCWJvb2wJCWFnZ19zdGFyOwkJLyogYXJn dW1lbnQgd2FzIHJlYWxseSAnKicgKi8KIAlib29sCQlhZ2dfZGlzdGluY3Q7CS8qIGFyZ3VtZW50 cyB3ZXJlIGxhYmVsZWQgRElTVElOQ1QgKi8KKwlib29sCQlhZ2dfcGFydGlhbDsJLyogYXJndW1l bnRzIHdlcmUgbGFiZWxlZCBQQVJUSUFMX0FHR1JFR0FURSAqLwogCWJvb2wJCWZ1bmNfdmFyaWFk aWM7CS8qIGxhc3QgYXJndW1lbnQgd2FzIGxhYmVsZWQgVkFSSUFESUMgKi8KIAlDb2VyY2lvbkZv cm0gZnVuY2Zvcm1hdDsJLyogaG93IHRvIGRpc3BsYXkgdGhpcyBub2RlICovCiAJUGFyc2VMb2MJ bG9jYXRpb247CQkvKiB0b2tlbiBsb2NhdGlvbiwgb3IgLTEgaWYgdW5rbm93biAqLwpkaWZmIC0t Z2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcGF0aG5vZGVzLmggYi9zcmMvaW5jbHVkZS9ub2Rlcy9w YXRobm9kZXMuaAppbmRleCBmYmYwNTMyMmM3NS4uMDNkNGNkZWM3NDAgMTAwNjQ0Ci0tLSBhL3Ny Yy9pbmNsdWRlL25vZGVzL3BhdGhub2Rlcy5oCisrKyBiL3NyYy9pbmNsdWRlL25vZGVzL3BhdGhu b2Rlcy5oCkBAIC0zMzE5LDYgKzMzMTksOSBAQCB0eXBlZGVmIGVudW0KICAqIGhhdmluZ1F1YWwg Z2l2ZXMgbGlzdCBvZiBxdWFscyB0byBiZSBhcHBsaWVkIGFmdGVyIGFnZ3JlZ2F0aW9uLgogICog dGFyZ2V0TGlzdCBnaXZlcyBsaXN0IG9mIGNvbHVtbnMgdG8gYmUgcHJvamVjdGVkLgogICogcGF0 eXBlIGlzIHRoZSB0eXBlIG9mIHBhcnRpdGlvbndpc2UgYWdncmVnYXRpb24gdGhhdCBpcyBiZWlu ZyBwZXJmb3JtZWQuCisgKiBncm91cENsYXVzZVBhcnRpYWwgaXMgTGlzdCBvZiBTb3J0R3JvdXBD bGF1c2VzIGZvciBwYXJ0aWFsIGFnZ3JlZ2F0ZQorICogCQlwdXNoZG93biBieSBGRFcKKyAqIHBh cnRpYWxfdGFyZ2V0IGlzIFBhdGhUYXJnZXQgZm9yIHBhcnRpYWwgYWdncmVnYXRlIHB1c2hkb3du IGJ5IEZEVwogICovCiB0eXBlZGVmIHN0cnVjdAogewpAQCAtMzMzMyw2ICszMzM2LDggQEAgdHlw ZWRlZiBzdHJ1Y3QKIAlOb2RlCSAgICpoYXZpbmdRdWFsOwogCUxpc3QJICAgKnRhcmdldExpc3Q7 CiAJUGFydGl0aW9ud2lzZUFnZ3JlZ2F0ZVR5cGUgcGF0eXBlOworCUxpc3QJICAgKmdyb3VwQ2xh dXNlUGFydGlhbDsKKwlQYXRoVGFyZ2V0ICpwYXJ0aWFsX3RhcmdldDsKIH0gR3JvdXBQYXRoRXh0 cmFEYXRhOwogCiAvKgpkaWZmIC0tZ2l0IGEvc3JjL2luY2x1ZGUvbm9kZXMvcHJpbW5vZGVzLmgg Yi9zcmMvaW5jbHVkZS9ub2Rlcy9wcmltbm9kZXMuaAppbmRleCBkMDU3NmRhM2UyNS4uNzljZmQ2 OWQyMTQgMTAwNjQ0Ci0tLSBhL3NyYy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oCisrKyBiL3Ny Yy9pbmNsdWRlL25vZGVzL3ByaW1ub2Rlcy5oCkBAIC00OTAsNiArNDkwLDkgQEAgdHlwZWRlZiBz dHJ1Y3QgQWdncmVmCiAJLyogRElTVElOQ1QgKGxpc3Qgb2YgU29ydEdyb3VwQ2xhdXNlKSAqLwog CUxpc3QJICAgKmFnZ2Rpc3RpbmN0OwogCisJLyogdHJ1ZSBpZiB0aGVyZSBpcyBQQVJUSUFMX0FH R1JFR0FURSBrZXl3b3JkICovCisJYm9vbCAgICAgICAgYWdnX3BhcnRpYWw7CisKIAkvKiBGSUxU RVIgZXhwcmVzc2lvbiwgaWYgYW55ICovCiAJRXhwcgkgICAqYWdnZmlsdGVyOwogCmRpZmYgLS1n aXQgYS9zcmMvaW5jbHVkZS9wYXJzZXIva3dsaXN0LmggYi9zcmMvaW5jbHVkZS9wYXJzZXIva3ds aXN0LmgKaW5kZXggNDBjZjA5MGNlNjEuLjZkNzA0NDA3OGNhIDEwMDY0NAotLS0gYS9zcmMvaW5j bHVkZS9wYXJzZXIva3dsaXN0LmgKKysrIGIvc3JjL2luY2x1ZGUvcGFyc2VyL2t3bGlzdC5oCkBA IC0zMzUsNiArMzM1LDcgQEAgUEdfS0VZV09SRCgicGFyYWxsZWwiLCBQQVJBTExFTCwgVU5SRVNF UlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicGFyYW1ldGVyIiwgUEFSQU1F VEVSLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwYXJzZXIi LCBQQVJTRVIsIFVOUkVTRVJWRURfS0VZV09SRCwgQkFSRV9MQUJFTCkKIFBHX0tFWVdPUkQoInBh cnRpYWwiLCBQQVJUSUFMLCBVTlJFU0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCitQR19LRVlX T1JEKCJwYXJ0aWFsX2FnZ3JlZ2F0ZSIsIFBBUlRJQUxfQUdHUkVHQVRFLCBVTlJFU0VSVkVEX0tF WVdPUkQsIEFTX0xBQkVMKQogUEdfS0VZV09SRCgicGFydGl0aW9uIiwgUEFSVElUSU9OLCBVTlJF U0VSVkVEX0tFWVdPUkQsIEJBUkVfTEFCRUwpCiBQR19LRVlXT1JEKCJwYXNzaW5nIiwgUEFTU0lO RywgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQogUEdfS0VZV09SRCgicGFzc3dvcmQi LCBQQVNTV09SRCwgVU5SRVNFUlZFRF9LRVlXT1JELCBCQVJFX0xBQkVMKQpkaWZmIC0tZ2l0IGEv c3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNlX2FnZy5oIGIvc3JjL2luY2x1ZGUvcGFyc2VyL3BhcnNl X2FnZy5oCmluZGV4IDI3N2Q0NWJhZjgzLi5lNGNhNzA3ODdjMSAxMDA2NDQKLS0tIGEvc3JjL2lu Y2x1ZGUvcGFyc2VyL3BhcnNlX2FnZy5oCisrKyBiL3NyYy9pbmNsdWRlL3BhcnNlci9wYXJzZV9h Z2cuaApAQCAtMTcsNyArMTcsNyBAQAogCiBleHRlcm4gdm9pZCB0cmFuc2Zvcm1BZ2dyZWdhdGVD YWxsKFBhcnNlU3RhdGUgKnBzdGF0ZSwgQWdncmVmICphZ2csCiAJCQkJCQkJCSAgIExpc3QgKmFy Z3MsIExpc3QgKmFnZ29yZGVyLAotCQkJCQkJCQkgICBib29sIGFnZ19kaXN0aW5jdCk7CisJCQkJ CQkJCSAgIGJvb2wgYWdnX2Rpc3RpbmN0LCBib29sIGFnZ19wYXJ0aWFsKTsKIAogZXh0ZXJuIE5v ZGUgKnRyYW5zZm9ybUdyb3VwaW5nRnVuYyhQYXJzZVN0YXRlICpwc3RhdGUsIEdyb3VwaW5nRnVu YyAqcCk7CiAKZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvYWdncmVnYXRl cy5vdXQgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2FnZ3JlZ2F0ZXMub3V0CmluZGV4IDZi NjM3MWMzZTc0Li45N2M5ZmI3YmNjMiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvcmVncmVzcy9leHBl Y3RlZC9hZ2dyZWdhdGVzLm91dAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL2V4cGVjdGVkL2FnZ3Jl Z2F0ZXMub3V0CkBAIC0zNTM2LDYgKzM1MzYsMTQgQEAgc2V0IHdvcmtfbWVtIHRvIGRlZmF1bHQ7 CiAtLS0tKy0tLS0rLS0tLQogKDAgcm93cykKIAorLS0gUEFSVElBTF9BR0dSRUdBVEUgdGVzdHMK Ky0tIENoZWNrIHJldHVybiB0eXBlIG9mIHBhcnRpYWwgYWdncmVnYXRlCitzZWxlY3QgcGdfdHlw ZW9mKGF2ZyhhOjppbnQ0KSBwYXJ0aWFsX2FnZ3JlZ2F0ZSksIHBnX3R5cGVvZihhdmcoYTo6aW50 NCkpIGZyb20gYWdndGVzdDsKKyBwZ190eXBlb2YgfCBwZ190eXBlb2YgCistLS0tLS0tLS0tLSst LS0tLS0tLS0tLQorIGJpZ2ludFtdICB8IG51bWVyaWMKKygxIHJvdykKKwogZHJvcCB0YWJsZSBh Z2dfZ3JvdXBfMTsKIGRyb3AgdGFibGUgYWdnX2dyb3VwXzI7CiBkcm9wIHRhYmxlIGFnZ19ncm91 cF8zOwpkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvcmVncmVzcy9leHBlY3RlZC9wYXJ0aXRpb25fYWdn cmVnYXRlLm91dCBiL3NyYy90ZXN0L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX2FnZ3JlZ2F0 ZS5vdXQKaW5kZXggNWYyYzBjZjU3ODYuLmNmZGUzOGM2ZWQxIDEwMDY0NAotLS0gYS9zcmMvdGVz dC9yZWdyZXNzL2V4cGVjdGVkL3BhcnRpdGlvbl9hZ2dyZWdhdGUub3V0CisrKyBiL3NyYy90ZXN0 L3JlZ3Jlc3MvZXhwZWN0ZWQvcGFydGl0aW9uX2FnZ3JlZ2F0ZS5vdXQKQEAgLTM5OSw2ICszOTks MzUgQEAgU0VMRUNUIGEsIHN1bShiIG9yZGVyIGJ5IGEpIEZST00gcGFnZ190YWIgR1JPVVAgQlkg YSBPUkRFUiBCWSAxLCAyOwogICAgICAgICAgICAgICAgICAgICAgLT4gIFNlcSBTY2FuIG9uIHBh Z2dfdGFiX3AzIHBhZ2dfdGFiXzMKICgxMCByb3dzKQogCistLSBQQVJUSUFMX0FHR1JFR0FURSB0 ZXN0cworLS0gQ2hlY2sgcGFydGlhbCBhZ2dyZWdhdGUgb3ZlciBwYXJ0aXRpb25lZCB0YWJsZQor ZXhwbGFpbiAodmVyYm9zZSwgY29zdHMgb2ZmKQorc2VsZWN0IGF2ZyhhKSBwYXJ0aWFsX2FnZ3Jl Z2F0ZSwgYXZnKGEpIGZyb20gcGFnZ190YWI7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBRVUVSWSBQTEFOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgRmluYWxp emUgQWdncmVnYXRlCisgICBPdXRwdXQ6IGF2ZyhQQVJUSUFMX0FHR1JFR0FURSBwYWdnX3RhYi5h KSwgYXZnKHBhZ2dfdGFiLmEpCisgICAtPiAgQXBwZW5kCisgICAgICAgICAtPiAgUGFydGlhbCBB Z2dyZWdhdGUKKyAgICAgICAgICAgICAgIE91dHB1dDogUEFSVElBTCBhdmcoUEFSVElBTF9BR0dS RUdBVEUgcGFnZ190YWIuYSksIFBBUlRJQUwgYXZnKHBhZ2dfdGFiLmEpCisgICAgICAgICAgICAg ICAtPiAgU2VxIFNjYW4gb24gcHVibGljLnBhZ2dfdGFiX3AxIHBhZ2dfdGFiCisgICAgICAgICAg ICAgICAgICAgICBPdXRwdXQ6IHBhZ2dfdGFiLmEKKyAgICAgICAgIC0+ICBQYXJ0aWFsIEFnZ3Jl Z2F0ZQorICAgICAgICAgICAgICAgT3V0cHV0OiBQQVJUSUFMIGF2ZyhQQVJUSUFMX0FHR1JFR0FU RSBwYWdnX3RhYl8xLmEpLCBQQVJUSUFMIGF2ZyhwYWdnX3RhYl8xLmEpCisgICAgICAgICAgICAg ICAtPiAgU2VxIFNjYW4gb24gcHVibGljLnBhZ2dfdGFiX3AyIHBhZ2dfdGFiXzEKKyAgICAgICAg ICAgICAgICAgICAgIE91dHB1dDogcGFnZ190YWJfMS5hCisgICAgICAgICAtPiAgUGFydGlhbCBB Z2dyZWdhdGUKKyAgICAgICAgICAgICAgIE91dHB1dDogUEFSVElBTCBhdmcoUEFSVElBTF9BR0dS RUdBVEUgcGFnZ190YWJfMi5hKSwgUEFSVElBTCBhdmcocGFnZ190YWJfMi5hKQorICAgICAgICAg ICAgICAgLT4gIFNlcSBTY2FuIG9uIHB1YmxpYy5wYWdnX3RhYl9wMyBwYWdnX3RhYl8yCisgICAg ICAgICAgICAgICAgICAgICBPdXRwdXQ6IHBhZ2dfdGFiXzIuYQorKDE1IHJvd3MpCisKK3NlbGVj dCBhdmcoYSkgcGFydGlhbF9hZ2dyZWdhdGUsIGF2ZyhhKSBmcm9tIHBhZ2dfdGFiOworICAgICBh dmcgICAgICB8ICAgICAgICBhdmcgICAgICAgICAKKy0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0t LS0tLS0tLS0tCisgezMwMDAsMjg1MDB9IHwgOS41MDAwMDAwMDAwMDAwMDAwCisoMSByb3cpCisK IC0tIEpPSU4gcXVlcnkKIENSRUFURSBUQUJMRSBwYWdnX3RhYjEoeCBpbnQsIHkgaW50KSBQQVJU SVRJT04gQlkgUkFOR0UoeCk7CiBDUkVBVEUgVEFCTEUgcGFnZ190YWIxX3AxIFBBUlRJVElPTiBP RiBwYWdnX3RhYjEgRk9SIFZBTFVFUyBGUk9NICgwKSBUTyAoMTApOwpkaWZmIC0tZ2l0IGEvc3Jj L3Rlc3QvcmVncmVzcy9zcWwvYWdncmVnYXRlcy5zcWwgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9h Z2dyZWdhdGVzLnNxbAppbmRleCAyYzQ3YTQ2MmI3ZS4uMmIyZDQ2NDA3OTggMTAwNjQ0Ci0tLSBh L3NyYy90ZXN0L3JlZ3Jlc3Mvc3FsL2FnZ3JlZ2F0ZXMuc3FsCisrKyBiL3NyYy90ZXN0L3JlZ3Jl c3Mvc3FsL2FnZ3JlZ2F0ZXMuc3FsCkBAIC0xNjE3LDYgKzE2MTcsMTAgQEAgc2V0IHdvcmtfbWVt IHRvIGRlZmF1bHQ7CiAgIHVuaW9uIGFsbAogKHNlbGVjdCAqIGZyb20gYWdnX2dyb3VwXzQgZXhj ZXB0IHNlbGVjdCAqIGZyb20gYWdnX2hhc2hfNCk7CiAKKy0tIFBBUlRJQUxfQUdHUkVHQVRFIHRl c3RzCistLSBDaGVjayByZXR1cm4gdHlwZSBvZiBwYXJ0aWFsIGFnZ3JlZ2F0ZQorc2VsZWN0IHBn X3R5cGVvZihhdmcoYTo6aW50NCkgcGFydGlhbF9hZ2dyZWdhdGUpLCBwZ190eXBlb2YoYXZnKGE6 OmludDQpKSBmcm9tIGFnZ3Rlc3Q7CisKIGRyb3AgdGFibGUgYWdnX2dyb3VwXzE7CiBkcm9wIHRh YmxlIGFnZ19ncm91cF8yOwogZHJvcCB0YWJsZSBhZ2dfZ3JvdXBfMzsKZGlmZiAtLWdpdCBhL3Ny Yy90ZXN0L3JlZ3Jlc3Mvc3FsL3BhcnRpdGlvbl9hZ2dyZWdhdGUuc3FsIGIvc3JjL3Rlc3QvcmVn cmVzcy9zcWwvcGFydGl0aW9uX2FnZ3JlZ2F0ZS5zcWwKaW5kZXggYWIwNzBmZWUyNDQuLjYwMzU2 YTg5ZjFjIDEwMDY0NAotLS0gYS9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fYWdncmVn YXRlLnNxbAorKysgYi9zcmMvdGVzdC9yZWdyZXNzL3NxbC9wYXJ0aXRpb25fYWdncmVnYXRlLnNx bApAQCAtOTIsNiArOTIsMTEgQEAgU0VMRUNUIGMsIHN1bShiIG9yZGVyIGJ5IGEpIEZST00gcGFn Z190YWIgR1JPVVAgQlkgYyBPUkRFUiBCWSAxLCAyOwogRVhQTEFJTiAoQ09TVFMgT0ZGKQogU0VM RUNUIGEsIHN1bShiIG9yZGVyIGJ5IGEpIEZST00gcGFnZ190YWIgR1JPVVAgQlkgYSBPUkRFUiBC WSAxLCAyOwogCistLSBQQVJUSUFMX0FHR1JFR0FURSB0ZXN0cworLS0gQ2hlY2sgcGFydGlhbCBh Z2dyZWdhdGUgb3ZlciBwYXJ0aXRpb25lZCB0YWJsZQorZXhwbGFpbiAodmVyYm9zZSwgY29zdHMg b2ZmKQorc2VsZWN0IGF2ZyhhKSBwYXJ0aWFsX2FnZ3JlZ2F0ZSwgYXZnKGEpIGZyb20gcGFnZ190 YWI7CitzZWxlY3QgYXZnKGEpIHBhcnRpYWxfYWdncmVnYXRlLCBhdmcoYSkgZnJvbSBwYWdnX3Rh YjsKIAogLS0gSk9JTiBxdWVyeQogCi0tIAoyLjM5LjMKCg== --_002_TYRPR01MB13941CEA16574771B1BFD130595A02TYRPR01MB13941jp_--