From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id JWoBNYZmFWrYwhwAWB0awg (envelope-from ) for ; Tue, 26 May 2026 05:23:18 -0400 Authentication-Results: simark.ca; dkim=pass (2048-bit key; unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=LRbcWRU6; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id B174B1E0A3; Tue, 26 May 2026 05:23:18 -0400 (EDT) X-Spam-Checker-Version: SpamAssassin 4.0.1 (2024-03-25) on simark.ca X-Spam-Level: X-Spam-Status: No, score=-3.4 required=5.0 tests=ARC_SIGNED,ARC_VALID,BAYES_00, DKIMWL_WL_HIGH,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED,RCVD_IN_VALIDITY_CERTIFIED_BLOCKED, RCVD_IN_VALIDITY_RPBL_BLOCKED,RCVD_IN_VALIDITY_SAFE_BLOCKED autolearn=ham autolearn_force=no version=4.0.1 Received: from vm01.sourceware.org (vm01.sourceware.org [38.145.34.32]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange x25519 server-signature ECDSA (prime256v1) server-digest SHA256) (No client certificate requested) by simark.ca (Postfix) with ESMTPS id 21D6C1E062 for ; Tue, 26 May 2026 05:23:16 -0400 (EDT) Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 7E7E04BA23DA for ; Tue, 26 May 2026 09:23:15 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 7E7E04BA23DA Authentication-Results: sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=LRbcWRU6 Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.8]) by sourceware.org (Postfix) with ESMTPS id 6B1994BA2E0C for ; Tue, 26 May 2026 09:00:35 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 6B1994BA2E0C Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=intel.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=intel.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 6B1994BA2E0C Authentication-Results: sourceware.org; arc=fail smtp.remote-ip=192.198.163.8 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1779786036; cv=fail; b=PSOfezmt6SniBNiTfEl2hYhZOC/EPX75ToBq2MfXsct6tcbYkHjFEzloAuzDai7hntK5KoEXZlxiMrGCEGu3zVuIgkrFOJOI9wKVRCKAEN6I2CEYdXyZasg7XwnD/pkeovsUsoh/kZl6oW3oLn1u8nBXNaQsi6Rs2qfkrFcLy2M= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1779786036; c=relaxed/simple; bh=h4DESsOPZbQPW0XrVWZaslxEG1h6WU0pfi96OwZNh0s=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=wx8XzWKOY/azebit848M40hZhmv/vuwP6+cM+6noIsSQ4l9XGQzgHbeqnD0mKPKSCzUskOjiKnCfGKg/9JV/y0Pq6COx/PuzzKaiuPEtaTdqS2rInmsOa1ZotmDTmL9bmzljcuxrT1VVnIjNVSxL8djZVcGmVYFGa1aRJi6J33A= ARC-Authentication-Results: i=2; sourceware.org; dkim=pass (2048-bit key, unprotected) header.d=intel.com header.i=@intel.com header.a=rsa-sha256 header.s=Intel header.b=LRbcWRU6 DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 6B1994BA2E0C DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1779786035; x=1811322035; h=from:to:cc:subject:date:message-id:references: in-reply-to:mime-version:content-transfer-encoding; bh=h4DESsOPZbQPW0XrVWZaslxEG1h6WU0pfi96OwZNh0s=; b=LRbcWRU6TksjwoYGyfAMBhEN4Nhe+2qLTN/U8uvLrN15kF8g6LxlxEDU BfXdC4emkNkmxANDEmsf4vrI7CyosL3aZrUS5cASj/tmyERDh709ekPeI 44CcEAzhZGsPrzGGwC751YDZEiBLjZ6FBN37t8LNq/M5BbO5yMk8dAMH0 pLG3pkaejZopd7lmSP4brRv5hkl8FyTF3Q5KmK6Hy4kfIU/w/y1caCJTr gDtrN4DUA/7YPEPERszw5A+FD8nrKLgX8ynHg8v+DmbQ6DNuS25ZdAu5e ZWDUTQFxQxZNpDOwQeILDYR82F/Kc3OCxpLr1zxhqPAChyNDTelraC9IF g==; X-CSE-ConnectionGUID: qMjpp0uSS6SgwBuidtWdbA== X-CSE-MsgGUID: 2z6tiyn2Qbe63MrKuOULkA== X-IronPort-AV: E=McAfee;i="6800,10657,11797"; a="98170314" X-IronPort-AV: E=Sophos;i="6.24,169,1774335600"; d="scan'208";a="98170314" Received: from orviesa006.jf.intel.com ([10.64.159.146]) by fmvoesa102.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 May 2026 02:00:22 -0700 X-CSE-ConnectionGUID: +o3p/KptSreJp+OPfTGnUQ== X-CSE-MsgGUID: 955HcfUxT86580aDsnWHag== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.24,169,1774335600"; d="scan'208";a="240810236" Received: from orsmsx903.amr.corp.intel.com ([10.22.229.25]) by orviesa006.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 May 2026 02:00:21 -0700 Received: from ORSMSX901.amr.corp.intel.com (10.22.229.23) by ORSMSX903.amr.corp.intel.com (10.22.229.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.37; Tue, 26 May 2026 02:00:19 -0700 Received: from ORSEDG903.ED.cps.intel.com (10.7.248.13) by ORSMSX901.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.37 via Frontend Transport; Tue, 26 May 2026 02:00:19 -0700 Received: from MW6PR02CU001.outbound.protection.outlook.com (52.101.48.49) by edgegateway.intel.com (134.134.137.113) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.37; Tue, 26 May 2026 02:00:17 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=kUmq3v+a063OAkDs/AzhFjwwgYh9akLmUly4F411/+x7GqSoCvrLb7u1FfcEvpyjtVRdzXyfvMmgnXqZMNUnu38eOvMGUJp/ESGkLzVW8+vUuo8L8/Qde9S/R7T14BRGrCMomKUTPeUaWpSPkf5P0MwlAkMOMcXq6r+ElcO2NnaTYIInIASIXXTs62R2TYzR3tU9xo9ICUgvUexRMUJV9cc+Sp0thGEIJy8BhiOy5zqmjyZR6D0zXCTedzzH5QzBI3uCk6F6sztZxFWD4qZcK1lEdD6TWKc24mLQ5u7yX4TEty8vsFRQ1nN4103W36wcD8uk/TszazEbSuBLPFy5TA== 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=8tbKfOpm+JVhrAxhPranuULdeZHOrzo3j7FBt3+JUDQ=; b=VX7LaRZUG3JayEzWRbITCt+oBKLcX8uMHbAdMzMi+iLZ+4pm8RPYtVipxf4SOSOg+kXrMuy1WKvpVJAkd1hYHgckyMDFTCKigOBDAYEzaO2pVdi/z/7B6qJH/ASAUZmJUM+UYWbEj3QJFy6z7txCFhzLCsBiWSshH4mT0H/fHoH2RSCL8ghjyZMV6C0ImHGPjSKwd7tgJjKmIsZkdVIRQV4waRLIR05t4Nk6jutIoLEKvof+p8K6ONCgX5f4v1eM3JXqadrqIC6NUr36x+WGqoKYqyu8eCHwYZrY3IHzfaZOvFsYsLx2FMd+8WNqg4/va9lLA7rw5EvZJc+/RkLMQQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from SN7PR11MB7638.namprd11.prod.outlook.com (2603:10b6:806:34b::22) by SN7PR11MB6727.namprd11.prod.outlook.com (2603:10b6:806:265::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.21.71.11; Tue, 26 May 2026 09:00:16 +0000 Received: from SN7PR11MB7638.namprd11.prod.outlook.com ([fe80::7a35:98d:f02c:b011]) by SN7PR11MB7638.namprd11.prod.outlook.com ([fe80::7a35:98d:f02c:b011%3]) with mapi id 15.21.0048.016; Tue, 26 May 2026 09:00:15 +0000 From: "Schimpe, Christina" To: Guinevere Larsen , "gdb-patches@sourceware.org" CC: Thiago Jung Bauermann Subject: RE: [PATCH v3 3/7] gdb/record: c++ify internal structures of record-full.c Thread-Topic: [PATCH v3 3/7] gdb/record: c++ify internal structures of record-full.c Thread-Index: AQHc5Imq1WKuIq1JKUqlEBbQJnBNdrYXAsmw Date: Tue, 26 May 2026 09:00:15 +0000 Message-ID: References: <20260515163706.3355686-1-guinevere@redhat.com> <20260515163706.3355686-4-guinevere@redhat.com> In-Reply-To: <20260515163706.3355686-4-guinevere@redhat.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: SN7PR11MB7638:EE_|SN7PR11MB6727:EE_ x-ms-office365-filtering-correlation-id: f094bfe6-ba21-486b-9802-08debb053446 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|10070799003|366016|376014|1800799024|38070700021|18002099003|56012099003|22082099003|10063799003|6133799003|11063799006|3023799007|5023799004|4143699003; x-microsoft-antispam-message-info: uK6Al6cxuCKGu0eKwz/1wyMu7DBiSRyZTzxfn17FVunjlPC7HPNPLb6RAljNot2h0h6WxeCbnVVGHPAxIU9yW93afLcnGXVbywFLKrdAQc6/saNmy7woymEOFd/y5iex6VChLukEJReWs9Fy8cdqxxHMnaCPtZX2eFOgUf+Q20I7XbM+YLWT7YBeEnH2N0MlwM1vKCQWUVEHw2MhOuSWNy2avSqSbX5rJOwOmqXGMMRN8LAa8KoC+37kD0Pei4sbdEGhv3TU8rXgDvlPT8F3iK/mlfRGzOnmUF73pQ3+fUKhEzUSIznJ3foeCYU1ID08c+6KYitOXnyd68Q++dSPQ4wXw1nAa4/nR3Voln9LWbo/aHWlZL3vkl10in9fp1bMoPb5Xjc36a922MNNx9YmoeHI+myK0gYEHrPR8dqf6AbrfHVFFUZgtVpt/tj/IW6PG8XYCJ/vwHFW9p9Vh7ELfF5E9/YvQbuIsPqlhZRf5SviO5PjvjHhcxyLRIE5X+CKDAC8w4Fj4lwtogesEpr4EH5e92sBx/lIPbPBbNfN7hduOaSf14ouDSyLClS+Q8CniKKcWRfGAWqX5zq/NC6y3+r795i/BPqFBC486tLo5FIbVp4H11Y6iui6ZTW86ZtGsQ+CvfZBhcNFL/IJkOS35TYLRJy6pjQaTq8mZvSllOYfwJPtNXBhujphEcqcmnc+dUqJDhMOrOMJBFWNYn1mjnTJoD4ISrf3LLdIEBMwIaN8JIzTib8M43pCES/f+Xsw x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:SN7PR11MB7638.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230040)(10070799003)(366016)(376014)(1800799024)(38070700021)(18002099003)(56012099003)(22082099003)(10063799003)(6133799003)(11063799006)(3023799007)(5023799004)(4143699003); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 2 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?V2lpMVNJYlRMSmt3THp6UW0rU3RqeW9PeW51dlFwaG5LajlhWXdFYjk1cXll?= =?utf-8?B?MFF0WWdLY0ZoMXYvWWlWWDczS0RnSXJYNHJFTGJhZVRhQ1V3bytuSjdjVE5C?= =?utf-8?B?a3g0ek1vSGNKK1JGbWMvY3hPcU9FclRQS3Z1KzRNZGVBblFWdmlHYVdFT09a?= =?utf-8?B?bkZyYS90TDhVWWcvOGhwSmFmRTZrRlJhK1NOUVN2K1BzTENsMzVjcjh6N3VY?= =?utf-8?B?QlU2cUtWUDNhUWVEaCsyM2VyR2U3OGlkdGNHVHdMMG9VZFVUNGN3N0Y0OVEz?= =?utf-8?B?S0xrVDJpVEx6MVEvT1IwVkwvOGp2a2pUUlBmNVZBM2J0SytqR2NUMU84cEN0?= =?utf-8?B?aG9tUFBGamJrMm11QlRxRFlPdkd5STJMeDIySlczSzRVL0tLSkpEYm9CNzFP?= =?utf-8?B?OUVsd3U0ZnFsSm9uMlU2bzVlNEFPSFVXcXJ5elNESDlNOUVSUVQ5Z0Irdk0r?= =?utf-8?B?YUc3Zm10MzZGV2MzMCtMSm1LUlFBZ0tDK3hBL3oyUkZLcG83dlFNam10TWhz?= =?utf-8?B?aWtmYlBYaTdlQVE3akVpRlo0cTh2QldOdVpZYjJKcXVOWkI4T1ovNW5ueTBn?= =?utf-8?B?Qzh5TWhhaTdsTWVkWHpKVC9pVXFJWHdtajRoWUovVlBkYTc2UWZCbG5xZnFX?= =?utf-8?B?TXJZVG9ZOHVWYWRSSXljTHFkVUVYVUdsU20rc1JLOUMvQ1lnRmZuYk9admt3?= =?utf-8?B?YjhNVFNwMFNNOGdDelZMN2lBZm1GTmNndThicWpPWjRqYjZFaDh3QTQ3TnlM?= =?utf-8?B?Z1E3YXJFZGhMci95OU5rZjgvOGRuNnpqL05QdkozYUVicms4aHdvM29jblo5?= =?utf-8?B?LzE1bnBySzBoYW9zODU5VFFwM0g4b1BMQnlXUU9GckFVeWZ6U0hsZDExRzVC?= =?utf-8?B?dVRxakVNZUIyQm5HOVFJWTU0QjV4WC9EZE1nR1lLWC9DcjN2aWFibDA1M21X?= =?utf-8?B?dGg1eitDSkd2eDJ1UlNKc3JPTksxQWVQWDhCLzg1d2s1eGdVeTNYbTVyNStN?= =?utf-8?B?Mmd3WmtUMXJNK2U3UTJwSkt3ZGNtWTFJTDQ2dytZMDNlUnEwa1BnVjlBZ3d1?= =?utf-8?B?SHVVQVJPRjZma2xJcGtRaVlUdDZqS3Vxd2dvZnZVSWhacUtRdWRIbTJYc3JD?= =?utf-8?B?N0xIZGhjUklWZzlIWUZMa296OGtPWDRGSG5GNjhTdGtOenRiMzFXdzVPcjZU?= =?utf-8?B?WUF4R2NFQTRNS0M5YUk5UGsvVFd2b08xY2FxOE4yc3RTY3lmbktPRHJNbSt3?= =?utf-8?B?UTh5WDBaWmhyRitXTEVnejB1dGI2TStndDlsRHUvalJuWWdBRGlNOUVyYjY2?= =?utf-8?B?aCtGMEplQktaQWl2L1BJWGFMME1vVDlyQWIzRGRmdnZMRC81b1Fsa1NtbVdm?= =?utf-8?B?S2VUMWRIcUY2eW02UEhyWkFuWDZaSk8vUW9aTkUzazNTL0lqTEs0TE85TEQw?= =?utf-8?B?aWZVV2IzTkc1WVM4S0RyNE5QYVp0ZWlDbEpNc1N3TEQyUkFvOEFGS0dpd2Jl?= =?utf-8?B?V0REQXIraHVZbG04VjN6WjAvRWJNT1orV1lmb3ZpbkdpekgvRlBJYlppLzNi?= =?utf-8?B?OUdoWUZXSzBBT0lkSEFLcHlMYWpDV3ZyVkJxNkhpMS9Ic2VYTWgxd1dBaTla?= =?utf-8?B?VkRtT1lZaEtvd0Yyb2J2cHJubmEwK1JrZ2pFb285dEk5VmhGejdMckNWMmha?= =?utf-8?B?eDF6aUZNS01GdTliWWtqMlpaVlZzZ1MxQUg5cHFlY29hWVV2cGw1VmFZZC9a?= =?utf-8?B?T05MU2xodUhjNVNldjdBWUg5eXoyTCsrUUhNd3J3R0JTa29lUm9SUnh3TU9M?= =?utf-8?B?c0tFeUdCTUNRT2hUbC9Rdmk4dkFpSkVyRk85LzBjeGJ0Z0VzNzZ2c0FQdkZ4?= =?utf-8?B?TjlRajl2T2gvRmVuQzVBL05NMVk2UzI3MjFCUTEwdi9zZWpsV1dQcnk0MHc0?= =?utf-8?B?LzVpNDBReENINTlFNHBwSGdwOW9wTjVsZHgzcWdra25nUFJHbWdhTWU3Y3BK?= =?utf-8?B?SnhvZjY2ZXQ3bm5rRWhZODd2djhBWTRmcEY3T0RRY3hJdUYxU1BIKzEvZFA3?= =?utf-8?B?UjFCaGpQdnNoYUx2Z3lxb1V5OXlRVHYyV2svaXJaSXpwZVdyeHlsSnZVYTI3?= =?utf-8?B?Z1RxMlY2TmlVTmEwZ1ZRK0d5NkRDZUQ2MGlvVllIM1RXeG53Y0dzRlVaZVZ4?= =?utf-8?B?Q01udXNoSHRvNXJGcHVrNHVSYWUyT3N3TEZyUDBmVnFzbU5kQTMwd2hRTDYy?= =?utf-8?B?TFNtT1Jac0lsc0taMmFBYUFlMFhlN295RlBpM1VEZ2R6emg0RnZnSzg4MVpw?= =?utf-8?B?OEkwYitIbG54RXkyazFTZzhVREp1RFBDM1habmVtUXdOREJjSDFwZGFvRW9K?= =?utf-8?Q?mWVyYRBJVTbQIz8S7an6HqDHI+PI5ejEK+KrfKkmsioA1?= x-ms-exchange-antispam-messagedata-1: FUvk3Bj9fgtKNA== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 X-Exchange-RoutingPolicyChecked: DYBjLbXMRYhRhbsmV0bo+GFG73yrk1djqklb73vF+LBwnrUxeqyrYuczUp+Zm6OIQ1iQ53Sp/wkKTsRiP5CsK807zbjoR6sJp7l+Tw32eaRGjqeEHIW7JrteESygFIH2d2WeMZIFxJsIVOGSxYh6QJMrpNPtGxARGnkXh2o5qstwvD3qK6knMXhC8abNd/TpN5yj34Uc4gb85BfZgOJREsBwyf3m73XhC53J8ioPFZyKQlThSPU3GFQ2pDoI6NZcSCOA9sMn0fCZX4Ls2o7Ud+NXbCgE9pdtKEI48nNSnA4AMIG0k0pRToaHYPsXDfSEMC1e+3OqOXUKkBnYVhpKrQ== X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SN7PR11MB7638.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: f094bfe6-ba21-486b-9802-08debb053446 X-MS-Exchange-CrossTenant-originalarrivaltime: 26 May 2026 09:00:15.9029 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: tQMD4T8TqRU8UG44cotNqie6QyI4WSkTRmJx/PfwpduclqAqAE/CFkkZQD1I4JCKV54wodTo1fToYgl6hL1cid6j30RMWnZ+cFrITRwRr2U= X-MS-Exchange-Transport-CrossTenantHeadersStamped: SN7PR11MB6727 X-OriginatorOrg: intel.com Content-Transfer-Encoding: base64 X-BeenThere: gdb-patches@sourceware.org X-Mailman-Version: 2.1.30 Precedence: list List-Id: Gdb-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: gdb-patches-bounces~public-inbox=simark.ca@sourceware.org PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBHdWluZXZlcmUgTGFyc2VuIDxn dWluZXZlcmVAcmVkaGF0LmNvbT4NCj4gU2VudDogRnJlaXRhZywgMTUuIE1haSAyMDI2IDE4OjM3 DQo+IFRvOiBnZGItcGF0Y2hlc0Bzb3VyY2V3YXJlLm9yZw0KPiBDYzogR3VpbmV2ZXJlIExhcnNl biA8Z3VpbmV2ZXJlQHJlZGhhdC5jb20+OyBUaGlhZ28gSnVuZyBCYXVlcm1hbm4NCj4gPHRoaWFn by5iYXVlcm1hbm5AbGluYXJvLm9yZz4NCj4gU3ViamVjdDogW1BBVENIIHYzIDMvN10gZ2RiL3Jl Y29yZDogYysraWZ5IGludGVybmFsIHN0cnVjdHVyZXMgb2YgcmVjb3JkLWZ1bGwuYw0KPiANCj4g VGhpcyBjb21taXQgYWRkcyBhIGNvbnN0cnVjdG9yLCBkZXN0cnVjdG9yLCBhbmQgc29tZSBtZXRo b2RzIHRvIHRoZQ0KPiBzdHJ1Y3R1cmVzIHJlY29yZF9mdWxsX2VudHJ5LCByZWNvcmRfZnVsbF9y ZWdfZW50cnkgYW5kDQo+IHJlY29yZF9mdWxsX21lbV9lbnRyeS4gVGhpcyBpcyBhIG1vdmUgdG8g ZGlzZW50YW5nbGUgdGhlIGludGVybmFsDQo+IHJlcHJlc2VudGF0aW9uIG9mIHRoZSBkYXRhIGFu ZCBob3cgcmVjb3JkLWZ1bGwgbWFuaXB1bGF0ZXMgaXQgZm9yIHJlcGxheWluZy4NCj4gDQo+IEFs b25nIHdpdGggdGhpcyBjaGFuZ2UsIHJlY29yZF9mdWxsX2VudHJ5IGlzIGNoYW5nZWQgdG8gdXNl IGFuIHN0ZDo6dmFyaWFudCwNCj4gc2luY2UgaXQgd2FzIGJhc2ljYWxseSBkb2luZyB0aGF0IGFs cmVhZHksIGJ1dCBub3cgd2UgaGF2ZSB0aGUgc3RkbGliYysrIGVycm9yDQo+IGNoZWNraW5nIHRv IG1ha2Ugc3VyZSB3ZSdyZSBvbmx5IGFjY2Vzc2luZyBlbGVtZW50cyB3ZSdyZSBhbGxvd2VkIHRv Lg0KPiANCj4gUmV2aWV3ZWQtYnk6IFRoaWFnbyBKdW5nIEJhdWVybWFubiA8dGhpYWdvLmJhdWVy bWFubkBsaW5hcm8ub3JnPg0KPiAtLS0NCj4gIGdkYi9yZWNvcmQtZnVsbC5jIHwgNjAxICsrKysr KysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gIDEgZmlsZSBjaGFu Z2VkLCAzMjEgaW5zZXJ0aW9ucygrKSwgMjgwIGRlbGV0aW9ucygtKQ0KPiANCj4gZGlmZiAtLWdp dCBhL2dkYi9yZWNvcmQtZnVsbC5jIGIvZ2RiL3JlY29yZC1mdWxsLmMgaW5kZXgNCj4gZTRkZDA3 ZGMzMDAuLjI0ZTk0ZWFmNWRhIDEwMDY0NA0KPiAtLS0gYS9nZGIvcmVjb3JkLWZ1bGwuYw0KPiAr KysgYi9nZGIvcmVjb3JkLWZ1bGwuYw0KPiBAQCAtNTEsNiArNTEsNyBAQA0KPiAgI2luY2x1ZGUg PG9wdGlvbmFsPg0KPiAgI2luY2x1ZGUgPGRlcXVlPg0KPiAgI2luY2x1ZGUgPHNpZ25hbC5oPg0K PiArI2luY2x1ZGUgPHZhcmlhbnQ+DQo+IA0KPiAgLyogVGhpcyBtb2R1bGUgaW1wbGVtZW50cyAi dGFyZ2V0IHJlY29yZC1mdWxsIiwgYWxzbyBrbm93biBhcyAicHJvY2Vzcw0KPiAgICAgcmVjb3Jk IGFuZCByZXBsYXkiLiAgVGhpcyB0YXJnZXQgc2l0cyBvbiB0b3Agb2YgYSAibm9ybWFsIiB0YXJn ZXQgQEAgLTkzLDEyDQo+ICs5NCwxMTMgQEAgc3RydWN0IHJlY29yZF9mdWxsX21lbV9lbnRyeQ0K PiAgICBpbnQgbGVuOw0KPiAgICAvKiBTZXQgdGhpcyBmbGFnIGlmIHRhcmdldCBtZW1vcnkgZm9y IHRoaXMgZW50cnkNCj4gICAgICAgY2FuIG5vIGxvbmdlciBiZSBhY2Nlc3NlZC4gICovDQo+IC0g IGludCBtZW1fZW50cnlfbm90X2FjY2Vzc2libGU7DQo+ICsgIGJvb2wgbWVtX2VudHJ5X2FjY2Vz c2libGU7DQoNClNob3VsZG4ndCB3ZSB1cGRhdGUgdGhlIGNvbW1lbnQgdGhlbiwgdG9vID8NCk5p dDogeW91IGNvdWxkIGNvbnNpZGVyIG1vdmluZyB0aGlzIGludG8gYSBzZXBhcmF0ZSBwYXRjaC4g SSB3b3VsZCBtYWtlIHRoZSByZXZpZXcgYSBiaXQgZWFzaWVyIElNTy4NCg0KVGhlIHNhbWUgYXBw bGllcyBmb3IgZWFjaCBzdHJ1Y3R1cmUvY2xhc3MgdGhhdCB5b3UgcmVmYWN0b3IgaW4gdGhpcyBw YXRjaC4gDQpCdXQgdGhpcyBpcyByYXRoZXIgYW4gb3B0aW9uYWwgc3VnZ2VzdGlvbiwgdG9vLiDw n5iKIA0KDQo+ICAgIHVuaW9uDQo+ICAgIHsNCj4gICAgICBnZGJfYnl0ZSAqcHRyOw0KPiAgICAg IGdkYl9ieXRlIGJ1ZltzaXplb2YgKGdkYl9ieXRlICopXTsNCj4gICAgfSB1Ow0KPiArDQo+ICsg IHJlY29yZF9mdWxsX21lbV9lbnRyeSAoKSA6IGFkZHIgKDApLCBsZW4gKDApIHsgfQ0KDQpBbnkg c3BlY2lmaWMgcmVhc29uIHdoeSB5b3UgZG9uJ3QgaW5pdCBtZW1fZW50cnlfYWNjZXNzaWJsZSBh bmQgdSBoZXJlID8NCg0KPiArDQo+ICsgIHJlY29yZF9mdWxsX21lbV9lbnRyeSAoQ09SRV9BRERS IG1lbV9hZGRyLCBpbnQgbWVtX2xlbikgIHsNCj4gKyAgICBhZGRyID0gbWVtX2FkZHI7DQo+ICsg ICAgbGVuID0gbWVtX2xlbjsNCj4gKyAgICBpZiAobGVuID4gc2l6ZW9mICh1LmJ1ZikpDQo+ICsg ICAgICB1LnB0ciA9IG5ldyBnZGJfYnl0ZVtsZW5dOw0KPiArICAgIG1lbV9lbnRyeV9hY2Nlc3Np YmxlID0gdHJ1ZTsNCj4gKyAgfQ0KPiArDQo+ICsgIHJlY29yZF9mdWxsX21lbV9lbnRyeSAocmVj b3JkX2Z1bGxfbWVtX2VudHJ5ICYmb3RoZXIpICB7DQo+ICsgICAgYWRkciA9IG90aGVyLmFkZHI7 DQo+ICsgICAgbGVuID0gb3RoZXIubGVuOw0KPiArICAgIG1lbWNweSAodS5idWYsIG90aGVyLnUu YnVmLCBzaXplb2YgKHUuYnVmKSk7DQo+ICsgICAgbWVtX2VudHJ5X2FjY2Vzc2libGUgPSBvdGhl ci5tZW1fZW50cnlfYWNjZXNzaWJsZTsNCj4gKyAgICAvKiBXaXRoIGxlbiA9PSAwLCBPVEhFUiBp cyBndWFyYW50ZWVkIHRvIG5vdCB0cnkgdG8gZnJlZSB0aGUNCj4gKyAgICAgICBtZW1vcnkgd2hl biBpdCBpcyBkZXN0cnVjdGVkLiAgKi8NCj4gKyAgICBvdGhlci5sZW4gPSAwOw0KPiArICB9DQo+ ICsNCj4gKyAgfnJlY29yZF9mdWxsX21lbV9lbnRyeSAoKQ0KPiArICB7DQo+ICsgICAgaWYgKGxl biA+IHNpemVvZiAodS5idWYpKQ0KPiArICAgICAgZGVsZXRlW10gdS5wdHI7DQo+ICsgIH0NCj4g Kw0KPiArICByZWNvcmRfZnVsbF9tZW1fZW50cnkgJm9wZXJhdG9yPSAocmVjb3JkX2Z1bGxfbWVt X2VudHJ5ICYmb3RoZXIpICB7DQo+ICsgICAgYWRkciA9IG90aGVyLmFkZHI7DQo+ICsgICAgbGVu ID0gb3RoZXIubGVuOw0KPiArICAgIG1lbWNweSAodS5idWYsIG90aGVyLnUuYnVmLCBzaXplb2Yg KHUuYnVmKSk7DQoNClNob3VsZG4ndCB3ZSBjaGVjayBmb3Igc2VsZi1hc3NpZ25tZW50IGhlcmUg Pw0KDQpBbHNvLCBsaWtlIHRoZSBkZXN0cnVjdG9yLCBJIGJlbGlldmUgd2UgbXVzdCBkZWxldGUg dS5wdHIgaGVyZToNCn5+fg0KICBpZiAobGVuID4gc2l6ZW9mICh1LmJ1ZikpDQogICAgICBkZWxl dGVbXSB1LnB0cjsNCn5+fg0KDQpTYW1lIGZlZWRiYWNrIGZvciByZWNvcmRfZnVsbF9tZW1fZW50 cnkgJm9wZXJhdG9yPQ0KDQo+ICsgICAgbWVtX2VudHJ5X2FjY2Vzc2libGUgPSBvdGhlci5tZW1f ZW50cnlfYWNjZXNzaWJsZTsNCj4gKyAgICAvKiBXaXRoIGxlbiA9PSAwLCBPVEhFUiBpcyBndWFy YW50ZWVkIHRvIG5vdCB0cnkgdG8gZnJlZSB0aGUNCj4gKyAgICAgICBtZW1vcnkgd2hlbiBpdCBp cyBkZXN0cnVjdGVkLiAgKi8NCj4gKyAgICBvdGhlci5sZW4gPSAwOw0KPiArICAgIHJldHVybiAq dGhpczsNCj4gKyAgfQ0KPiArDQo+ICsgIERJU0FCTEVfQ09QWV9BTkRfQVNTSUdOIChyZWNvcmRf ZnVsbF9tZW1fZW50cnkpOw0KPiArDQo+ICsgIGdkYl9ieXRlICpnZXRfbG9jICgpDQoNCkkgZG9u J3QgdGhpbmsgdGhpcyBpcyB0b28gaW1wb3J0YW50LCBidXQgc2luY2UgSSBzYXcgaXQ6IA0KVGhp cyBzaG91bGQgYmUgY29uc3QgSSB0aGluay4NCg0KSUlVQyB3ZSBzaG91bGQgdGhlbiBhbHNvIHVz ZSBhIGNvbnN0IHJlZmVyZW5jZSBpbiBsb29wcyB3aGljaCBjYWxsIGdldF9sb2MgKCksIA0KbGlr ZSB0aGlzIG9uZToNCg0KICBmb3IgKGF1dG8gJmVudHJ5IDogdG9fcHJpbnQtPmVmZmVjdHMpDQoN CkFuZCB0aGUgc2FtZSBhcHBsaWVzIGZvciB0eXBlLCByZWcgYW5kIG1lbS4gDQoNCj4gKyAgew0K PiArICAgIGlmIChsZW4gPiBzaXplb2YgKHUuYnVmKSkNCj4gKyAgICAgIHJldHVybiB1LnB0cjsN Cj4gKyAgICBlbHNlDQo+ICsgICAgICByZXR1cm4gdS5idWY7DQo+ICsgIH0NCj4gKw0KPiArICBi b29sIGV4ZWN1dGUgKGdkYmFyY2ggKmdkYmFyY2gpDQo+ICsgIHsNCj4gKyAgICAvKiBOb3RoaW5n IHRvIGRvIGlmIHRoZSBtZW1vcnkgaXMgZmxhZ2dlZCBub3RfYWNjZXNzaWJsZS4gICovDQo+ICsg ICAgaWYgKCFtZW1fZW50cnlfYWNjZXNzaWJsZSkNCj4gKyAgICAgIHJldHVybiBmYWxzZTsNCj4g Kw0KPiArICAgIGdkYjo6Ynl0ZV92ZWN0b3IgYnVmIChsZW4pOw0KPiArDQo+ICsgICAgaWYgKHJl Y29yZF9kZWJ1ZyA+IDEpDQo+ICsgICAgICBnZGJfcHJpbnRmIChnZGJfc3RkbG9nLA0KPiArCQkg ICJQcm9jZXNzIHJlY29yZDogcmVjb3JkX2Z1bGxfbWVtICVzIHRvICINCj4gKwkJICAiaW5mZXJp b3IgYWRkciA9ICVzIGxlbiA9ICVkLlxuIiwNCj4gKwkJICBob3N0X2FkZHJlc3NfdG9fc3RyaW5n ICh0aGlzKSwNCj4gKwkJICBwYWRkcmVzcyAoZ2RiYXJjaCwgYWRkciksDQo+ICsJCSAgbGVuKTsN Cj4gKw0KPiArICAgIGlmIChyZWNvcmRfcmVhZF9tZW1vcnkgKGdkYmFyY2gsIGFkZHIsIGJ1Zi5k YXRhICgpLCBsZW4pKQ0KPiArICAgICAgbWVtX2VudHJ5X2FjY2Vzc2libGUgPSBmYWxzZTsNCj4g KyAgICBlbHNlDQo+ICsgICAgICB7DQo+ICsJaWYgKHRhcmdldF93cml0ZV9tZW1vcnkgKGFkZHIs DQo+ICsJCQkJIGdldF9sb2MgKCksDQo+ICsJCQkJIGxlbikpDQo+ICsJICB7DQo+ICsJICAgIG1l bV9lbnRyeV9hY2Nlc3NpYmxlID0gZmFsc2U7DQo+ICsJICAgIGlmIChyZWNvcmRfZGVidWcpDQo+ ICsJICAgICAgd2FybmluZyAoXygiUHJvY2VzcyByZWNvcmQ6IGVycm9yIHdyaXRpbmcgbWVtb3J5 IGF0ICINCj4gKwkJCSAiYWRkciA9ICVzIGxlbiA9ICVkLiIpLA0KPiArCQkgICAgICAgcGFkZHJl c3MgKGdkYmFyY2gsIGFkZHIpLA0KPiArCQkgICAgICAgbGVuKTsNCj4gKwkgIH0NCj4gKwllbHNl DQo+ICsJICB7DQo+ICsJICAgIG1lbWNweSAoZ2V0X2xvYyAoKSwgYnVmLmRhdGEgKCksIGxlbik7 DQo+ICsNCj4gKwkgICAgLyogV2UndmUgY2hhbmdlZCBtZW1vcnkgLS0tIGNoZWNrIGlmIGEgaGFy ZHdhcmUNCj4gKwkgICAgICAgd2F0Y2hwb2ludCBzaG91bGQgdHJhcC4gIE5vdGUgdGhhdCB0aGlz DQo+ICsJICAgICAgIHByZXNlbnRseSBhc3N1bWVzIHRoZSB0YXJnZXQgYmVuZWF0aCBzdXBwb3J0 cw0KPiArCSAgICAgICBjb250aW51YWJsZSB3YXRjaHBvaW50cy4gIE9uIG5vbi1jb250aW51YWJs ZQ0KPiArCSAgICAgICB3YXRjaHBvaW50cyB0YXJnZXQsIHdlJ2xsIHdhbnQgdG8gY2hlY2sgdGhp cw0KPiArCSAgICAgICBfYmVmb3JlXyBhY3R1YWxseSBkb2luZyB0aGUgbWVtb3J5IGNoYW5nZSwg YW5kDQo+ICsJICAgICAgIG5vdCBkb2luZyB0aGUgY2hhbmdlIGF0IGFsbCBpZiB0aGUgd2F0Y2hw b2ludA0KPiArCSAgICAgICB0cmFwcy4gICovDQo+ICsJICAgIGlmIChoYXJkd2FyZV93YXRjaHBv aW50X2luc2VydGVkX2luX3JhbmdlDQo+ICsJCShjdXJyZW50X2luZmVyaW9yICgpLT5hc3BhY2Uu Z2V0ICgpLCBhZGRyLCBsZW4pKQ0KPiArCSAgICAgIHJldHVybiB0cnVlOw0KPiArCSAgfQ0KPiAr ICAgICAgfQ0KPiArICAgIHJldHVybiBmYWxzZTsNCj4gKyAgfQ0KPiAgfTsNCj4gDQo+ICBzdHJ1 Y3QgcmVjb3JkX2Z1bGxfcmVnX2VudHJ5DQo+IEBAIC0xMTAsNiArMjEyLDcwIEBAIHN0cnVjdCBy ZWNvcmRfZnVsbF9yZWdfZW50cnkNCj4gICAgICBnZGJfYnl0ZSAqcHRyOw0KPiAgICAgIGdkYl9i eXRlIGJ1ZlsyICogc2l6ZW9mIChnZGJfYnl0ZSAqKV07DQo+ICAgIH0gdTsNCj4gKw0KPiArICBy ZWNvcmRfZnVsbF9yZWdfZW50cnkgKCkgOiBudW0gKDApLCBsZW4gKDApIHsgfQ0KPiArDQo+ICsg IHJlY29yZF9mdWxsX3JlZ19lbnRyeSAoZ2RiYXJjaCAqZ2RiYXJjaCwgaW50IHJlZ251bSkgIHsN Cj4gKyAgICBudW0gPSByZWdudW07DQo+ICsgICAgbGVuID0gcmVnaXN0ZXJfc2l6ZSAoZ2RiYXJj aCwgcmVnbnVtKTsNCj4gKyAgICBpZiAobGVuID4gc2l6ZW9mICh1LmJ1ZikpDQo+ICsgICAgICB1 LnB0ciA9IG5ldyBnZGJfYnl0ZVtsZW5dOw0KPiArICB9DQo+ICsNCj4gKyAgcmVjb3JkX2Z1bGxf cmVnX2VudHJ5IChyZWNvcmRfZnVsbF9yZWdfZW50cnkgJiZvdGhlcikgIHsNCj4gKyAgICBudW0g PSBvdGhlci5udW07DQo+ICsgICAgbGVuID0gb3RoZXIubGVuOw0KPiArICAgIG1lbWNweSAodS5i dWYsIG90aGVyLnUuYnVmLCBzaXplb2YgKHUuYnVmKSk7DQo+ICsgICAgLyogV2l0aCBsZW4gPT0g MCwgT1RIRVIgaXMgZ3VhcmFudGVlZCB0byBub3QgdHJ5IHRvIGZyZWUgdGhlDQo+ICsgICAgICAg bWVtb3J5IHdoZW4gaXQgaXMgZGVzdHJ1Y3RlZC4gICovDQo+ICsgICAgb3RoZXIubGVuID0gMDsN Cj4gKyAgfQ0KPiArDQo+ICsgIH5yZWNvcmRfZnVsbF9yZWdfZW50cnkgKCkNCj4gKyAgew0KPiAr ICAgIGlmIChsZW4gPiBzaXplb2YgKHUuYnVmKSkNCj4gKyAgICAgIGRlbGV0ZVtdIHUucHRyOw0K PiArICB9DQo+ICsNCj4gKyAgcmVjb3JkX2Z1bGxfcmVnX2VudHJ5ICZvcGVyYXRvcj0ocmVjb3Jk X2Z1bGxfcmVnX2VudHJ5ICYmb3RoZXIpICB7DQo+ICsgICAgbnVtID0gb3RoZXIubnVtOw0KPiAr ICAgIGxlbiA9IG90aGVyLmxlbjsNCj4gKyAgICBtZW1jcHkgKHUuYnVmLCBvdGhlci51LmJ1Ziwg c2l6ZW9mICh1LmJ1ZikpOw0KPiArICAgIC8qIFdpdGggbGVuID09IDAsIE9USEVSIGlzIGd1YXJh bnRlZWQgdG8gbm90IHRyeSB0byBmcmVlIHRoZQ0KPiArICAgICAgIG1lbW9yeSB3aGVuIGl0IGlz IGRlc3RydWN0ZWQuICAqLw0KPiArICAgIG90aGVyLmxlbiA9IDA7DQo+ICsgICAgcmV0dXJuICp0 aGlzOw0KPiArICB9DQo+ICsNCj4gKyAgRElTQUJMRV9DT1BZX0FORF9BU1NJR04gKHJlY29yZF9m dWxsX3JlZ19lbnRyeSk7DQo+ICsNCj4gKyAgZ2RiX2J5dGUgKmdldF9sb2MgKCkNCj4gKyAgew0K PiArICAgIGlmIChsZW4gPiBzaXplb2YgKHUuYnVmKSkNCj4gKyAgICAgIHJldHVybiB1LnB0cjsN Cj4gKyAgICBlbHNlDQo+ICsgICAgICByZXR1cm4gdS5idWY7DQo+ICsgIH0NCj4gKw0KPiArICBi b29sIGV4ZWN1dGUgKHJlZ2NhY2hlICpyZWdjYWNoZSkNCj4gKyAgew0KPiArICAgIGdkYjo6Ynl0 ZV92ZWN0b3IgYnVmIChsZW4pOw0KPiArDQo+ICsgICAgaWYgKHJlY29yZF9kZWJ1ZyA+IDEpDQo+ ICsgICAgICBnZGJfcHJpbnRmIChnZGJfc3RkbG9nLA0KPiArCQkgICJQcm9jZXNzIHJlY29yZDog cmVjb3JkX2Z1bGxfcmVnICVzIHRvICINCj4gKwkJICAiaW5mZXJpb3IgbnVtID0gJWQuXG4iLA0K PiArCQkgIGhvc3RfYWRkcmVzc190b19zdHJpbmcgKHRoaXMpLA0KPiArCQkgIG51bSk7DQo+ICsN Cj4gKyAgICByZWdjYWNoZS0+Y29va2VkX3JlYWQgKG51bSwgYnVmKTsNCj4gKyAgICByZWdjYWNo ZS0+Y29va2VkX3dyaXRlIChudW0sIGdldF9sb2MgKCkpOw0KPiArICAgIG1lbWNweSAoZ2V0X2xv YyAoKSwgYnVmLmRhdGEgKCksIGxlbik7DQo+ICsgICAgcmV0dXJuIGZhbHNlOw0KPiArICB9DQo+ ICB9Ow0KPiANCj4gIGVudW0gcmVjb3JkX2Z1bGxfdHlwZQ0KPiBAQCAtMTE4LDE2ICsyODQsODgg QEAgZW51bSByZWNvcmRfZnVsbF90eXBlDQo+ICAgIHJlY29yZF9mdWxsX21lbQ0KPiAgfTsNCj4g DQo+IC1zdHJ1Y3QgcmVjb3JkX2Z1bGxfZW50cnkNCj4gK2NsYXNzIHJlY29yZF9mdWxsX2VudHJ5 DQo+ICB7DQo+IC0gIGVudW0gcmVjb3JkX2Z1bGxfdHlwZSB0eXBlOw0KPiAtICB1bmlvbg0KPiAr ICBzdGQ6OnZhcmlhbnQ8cmVjb3JkX2Z1bGxfcmVnX2VudHJ5LCByZWNvcmRfZnVsbF9tZW1fZW50 cnk+IGVudHJ5Ow0KPiArDQo+ICtwdWJsaWM6DQo+ICsgIHJlY29yZF9mdWxsX2VudHJ5ICgpIDog ZW50cnkgKHJlY29yZF9mdWxsX3JlZ19lbnRyeSAoKSkge30NCj4gKw0KPiArICAvKiBDb25zdHJ1 Y3RvciBmb3IgYSByZWdpc3RlciBlbnRyeS4gIFR5cGUgaXMgaGVyZSB0byBtYWtlIGl0DQo+ICsg ICAgIGVhc2llciB0byByZWNvZ25pemUgaXQgaW4gdGhlIGNvbnN0cnVjdG9yIGNhbGxzLCBpdCBp c24ndA0KPiArICAgICBhY3R1YWxseSBpbXBvcnRhbnQuICAqLw0KPiArICByZWNvcmRfZnVsbF9l bnRyeSAocmVjb3JkX2Z1bGxfdHlwZSByZWdfdHlwZSwgZ2RiYXJjaCAqZ2RiYXJjaCwNCj4gKwkJ ICAgICBpbnQgcmVnbnVtKQ0KPiArICA6IGVudHJ5KHJlY29yZF9mdWxsX3JlZ19lbnRyeSAoZ2Ri YXJjaCwgcmVnbnVtKSkNCj4gICAgew0KPiAtICAgIC8qIHJlZyAqLw0KPiAtICAgIHN0cnVjdCBy ZWNvcmRfZnVsbF9yZWdfZW50cnkgcmVnOw0KPiAtICAgIC8qIG1lbSAqLw0KPiAtICAgIHN0cnVj dCByZWNvcmRfZnVsbF9tZW1fZW50cnkgbWVtOw0KPiAtICB9IHU7DQo+ICsgICAgZ2RiX2Fzc2Vy dCAocmVnX3R5cGUgPT0gcmVjb3JkX2Z1bGxfcmVnKTsgIH0NCj4gKw0KPiArICByZWNvcmRfZnVs bF9lbnRyeSAocmVjb3JkX2Z1bGxfdHlwZSBtZW1fdHlwZSwgQ09SRV9BRERSIGFkZHIsIGludA0K PiArIGxlbikNCj4gKyAgOiBlbnRyeShyZWNvcmRfZnVsbF9tZW1fZW50cnkgKGFkZHIsIGxlbikp ICB7DQo+ICsgICAgZ2RiX2Fzc2VydCAobWVtX3R5cGUgPT0gcmVjb3JkX2Z1bGxfbWVtKTsgIH0N Cj4gKw0KPiArICByZWNvcmRfZnVsbF9lbnRyeSAocmVjb3JkX2Z1bGxfZW50cnkgJiZvdGhlcikN Cj4gKyAgOiBlbnRyeSAoc3RkOjptb3ZlIChvdGhlci5lbnRyeSkpDQo+ICsgIHsNCj4gKyAgfQ0K PiArDQo+ICsgIERJU0FCTEVfQ09QWV9BTkRfQVNTSUdOIChyZWNvcmRfZnVsbF9lbnRyeSk7DQo+ ICsNCj4gKyAgcmVjb3JkX2Z1bGxfcmVnX2VudHJ5JiByZWcgKCkNCj4gKyAgew0KPiArICAgIGdk Yl9hc3NlcnQgKHR5cGUgKCkgPT0gcmVjb3JkX2Z1bGxfcmVnKTsNCj4gKyAgICByZXR1cm4gc3Rk OjpnZXQ8cmVjb3JkX2Z1bGxfcmVnX2VudHJ5PiAoZW50cnkpOyAgfQ0KPiArDQo+ICsgIHJlY29y ZF9mdWxsX21lbV9lbnRyeSYgbWVtICgpDQo+ICsgIHsNCj4gKyAgICBnZGJfYXNzZXJ0ICh0eXBl ICgpID09IHJlY29yZF9mdWxsX21lbSk7DQo+ICsgICAgcmV0dXJuIHN0ZDo6Z2V0PHJlY29yZF9m dWxsX21lbV9lbnRyeT4gKGVudHJ5KTsgIH0NCj4gKw0KPiArICByZWNvcmRfZnVsbF90eXBlIHR5 cGUgKCkNCj4gKyAgew0KPiArICAgIHN3aXRjaCAoZW50cnkuaW5kZXggKCkpDQo+ICsgICAgew0K PiArICAgIGNhc2UgMDoNCj4gKyAgICAgIHJldHVybiByZWNvcmRfZnVsbF9yZWc7DQo+ICsgICAg Y2FzZSAxOg0KPiArICAgICAgcmV0dXJuIHJlY29yZF9mdWxsX21lbTsNCj4gKyAgICB9DQo+ICsg ICAgZ2RiX2Fzc2VydF9ub3RfcmVhY2hlZCAoIkltcG9zc2libGUgdmFyaWFudCBpbmRleCIpOyAg fQ0KPiArDQo+ICsgIC8qIEdldCB0aGUgcG9pbnRlciB0byB0aGUgZGF0YSBzdG9yZWQgYnkgdGhp cyBlbnRyeS4gICovICBnZGJfYnl0ZQ0KPiArICpnZXRfbG9jICgpICB7DQo+ICsgICAgc3dpdGNo ICh0eXBlICgpKQ0KPiArICAgIHsNCj4gKyAgICBjYXNlIHJlY29yZF9mdWxsX3JlZzoNCj4gKyAg ICAgIHJldHVybiByZWcgKCkuZ2V0X2xvYyAoKTsNCj4gKyAgICBjYXNlIHJlY29yZF9mdWxsX21l bToNCj4gKyAgICAgIHJldHVybiBtZW0gKCkuZ2V0X2xvYyAoKTsNCj4gKyAgICB9DQo+ICsgICAg Z2RiX2Fzc2VydF9ub3RfcmVhY2hlZCAoIkltcG9zc2libGUgZW50cnkgdHlwZSIpOyAgfQ0KPiAr DQo+ICsgIC8qIEV4ZWN1dGUgdGhpcyBlbnRyeSwgc3dhcHBpbmcgdGhlIGFwcHJvcHJpYXRlIHZh bHVlcyBmcm9tIG1lbW9yeSBvcg0KPiArICAgICByZWdpc3RlciBhbmQgdGhlIHJlY29yZGVkIG9u ZXMuICBSZXR1cm5zIFRSVUUgaWYgdGhlIGV4ZWN1dGlvbiB3YXMNCj4gKyAgICAgc3RvcHBlZCBi eSBhIHdhdGNocG9pbnQuICAqLw0KPiArDQo+ICsgIGJvb2wgZXhlY3V0ZSAocmVnY2FjaGUgKnJl Z2NhY2hlKQ0KPiArICB7DQo+ICsgICAgc3dpdGNoICh0eXBlICgpKQ0KPiArICAgICAgew0KPiAr ICAgICAgY2FzZSByZWNvcmRfZnVsbF9yZWc6DQo+ICsJcmV0dXJuIHJlZyAoKS5leGVjdXRlIChy ZWdjYWNoZSk7DQo+ICsgICAgICBjYXNlIHJlY29yZF9mdWxsX21lbToNCj4gKwlyZXR1cm4gbWVt ICgpLmV4ZWN1dGUgKHJlZ2NhY2hlLT5hcmNoICgpKTsNCj4gKyAgICAgIH0NCj4gKyAgICByZXR1 cm4gZmFsc2U7DQo+ICsgIH0NCj4gIH07DQo+IA0KPiAgLyogVGhpcyBpcyB0aGUgbWFpbiBzdHJ1 Y3R1cmUgdGhhdCBjb21wcmlzZXMgdGhlIGV4ZWN1dGlvbiBsb2cuDQo+IEBAIC0zODQsOTEgKzYy MiwxMiBAQCBzdGF0aWMgc3RydWN0IGNtZF9saXN0X2VsZW1lbnQNCj4gKnJlY29yZF9mdWxsX2Nt ZGxpc3Q7ICBzdGF0aWMgdm9pZCByZWNvcmRfZnVsbF9nb3RvX2luc24gKHNpemVfdCB0YXJnZXRf aW5zbiwNCj4gIAkJCQkgICBlbnVtIGV4ZWNfZGlyZWN0aW9uX2tpbmQgZGlyKTsNCj4gDQo+IC0v KiBJbml0aWFsaXphdGlvbiBhbmQgY2xlYW51cCBmdW5jdGlvbnMgZm9yIHJlY29yZF9mdWxsX3Jl ZyBhbmQNCj4gLSAgIHJlY29yZF9mdWxsX21lbSBlbnRyaWVzLiAgKi8NCj4gLQ0KPiAtLyogSW5p dCBhIHJlY29yZF9mdWxsX3JlZyByZWNvcmQgZW50cnkuICAqLw0KPiAtDQo+IC1zdGF0aWMgaW5s aW5lIHJlY29yZF9mdWxsX2VudHJ5DQo+IC1yZWNvcmRfZnVsbF9yZWdfaW5pdCAoc3RydWN0IHJl Z2NhY2hlICpyZWdjYWNoZSwgaW50IHJlZ251bSkgLXsNCj4gLSAgcmVjb3JkX2Z1bGxfZW50cnkg cmVjOw0KPiAtICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IHJlZ2NhY2hlLT5hcmNoICgpOw0K PiAtDQo+IC0gIHJlYy50eXBlID0gcmVjb3JkX2Z1bGxfcmVnOw0KPiAtICByZWMudS5yZWcubnVt ID0gcmVnbnVtOw0KPiAtICByZWMudS5yZWcubGVuID0gcmVnaXN0ZXJfc2l6ZSAoZ2RiYXJjaCwg cmVnbnVtKTsNCj4gLSAgaWYgKHJlYy51LnJlZy5sZW4gPiBzaXplb2YgKHJlYy51LnJlZy51LmJ1 ZikpDQo+IC0gICAgcmVjLnUucmVnLnUucHRyID0gKGdkYl9ieXRlICopIHhtYWxsb2MgKHJlYy51 LnJlZy5sZW4pOw0KPiAtDQo+IC0gIHJldHVybiByZWM7DQo+IC19DQo+IC0NCj4gLS8qIENsZWFu dXAgYSByZWNvcmRfZnVsbF9yZWcgcmVjb3JkIGVudHJ5LiAgKi8NCj4gLQ0KPiAtc3RhdGljIGlu bGluZSB2b2lkDQo+IC1yZWNvcmRfZnVsbF9yZWdfY2xlYW51cCAocmVjb3JkX2Z1bGxfZW50cnkg cmVjKSAtew0KPiAtICBnZGJfYXNzZXJ0IChyZWMudHlwZSA9PSByZWNvcmRfZnVsbF9yZWcpOw0K PiAtICBpZiAocmVjLnUucmVnLmxlbiA+IHNpemVvZiAocmVjLnUucmVnLnUuYnVmKSkNCj4gLSAg ICB4ZnJlZSAocmVjLnUucmVnLnUucHRyKTsNCj4gLX0NCj4gLQ0KPiAtLyogSW5pdCBhIHJlY29y ZF9mdWxsX21lbSByZWNvcmQgZW50cnkuICAqLw0KPiAtDQo+IC1zdGF0aWMgaW5saW5lIHJlY29y ZF9mdWxsX2VudHJ5DQo+IC1yZWNvcmRfZnVsbF9tZW1faW5pdCAoQ09SRV9BRERSIGFkZHIsIGlu dCBsZW4pIC17DQo+IC0gIHJlY29yZF9mdWxsX2VudHJ5IHJlYzsNCj4gLQ0KPiAtICByZWMudHlw ZSA9IHJlY29yZF9mdWxsX21lbTsNCj4gLSAgcmVjLnUubWVtLmFkZHIgPSBhZGRyOw0KPiAtICBy ZWMudS5tZW0ubGVuID0gbGVuOw0KPiAtICBpZiAocmVjLnUubWVtLmxlbiA+IHNpemVvZiAocmVj LnUubWVtLnUuYnVmKSkNCj4gLSAgICByZWMudS5tZW0udS5wdHIgPSAoZ2RiX2J5dGUgKikgeG1h bGxvYyAobGVuKTsNCj4gLSAgcmVjLnUubWVtLm1lbV9lbnRyeV9ub3RfYWNjZXNzaWJsZSA9IDA7 DQo+IC0NCj4gLSAgcmV0dXJuIHJlYzsNCj4gLX0NCj4gLQ0KPiAtLyogQ2xlYW51cCBhIHJlY29y ZF9mdWxsX21lbSByZWNvcmQgZW50cnkuICAqLw0KPiAtDQo+IC1zdGF0aWMgaW5saW5lIHZvaWQN Cj4gLXJlY29yZF9mdWxsX21lbV9jbGVhbnVwIChyZWNvcmRfZnVsbF9lbnRyeSByZWMpIC17DQo+ IC0gIGdkYl9hc3NlcnQgKHJlYy50eXBlID09IHJlY29yZF9mdWxsX21lbSk7DQo+IC0gIGlmIChy ZWMudS5tZW0ubGVuID4gc2l6ZW9mIChyZWMudS5tZW0udS5idWYpKQ0KPiAtICAgIHhmcmVlIChy ZWMudS5tZW0udS5wdHIpOw0KPiAtfQ0KPiAtDQo+IC0vKiBGcmVlIG9uZSByZWNvcmQgZW50cnks IGFueSB0eXBlLiAgKi8NCj4gLQ0KPiAtc3RhdGljIGlubGluZSB2b2lkDQo+IC1yZWNvcmRfZnVs bF9lbnRyeV9jbGVhbnVwIChyZWNvcmRfZnVsbF9lbnRyeSByZWMpIC17DQo+IC0NCj4gLSAgc3dp dGNoIChyZWMudHlwZSkgew0KPiAtICBjYXNlIHJlY29yZF9mdWxsX3JlZzoNCj4gLSAgICByZWNv cmRfZnVsbF9yZWdfY2xlYW51cCAocmVjKTsNCj4gLSAgICBicmVhazsNCj4gLSAgY2FzZSByZWNv cmRfZnVsbF9tZW06DQo+IC0gICAgcmVjb3JkX2Z1bGxfbWVtX2NsZWFudXAgKHJlYyk7DQo+IC0g ICAgYnJlYWs7DQo+IC0gIH0NCj4gLX0NCj4gLQ0KPiAgc3RhdGljIHZvaWQNCj4gIHJlY29yZF9m dWxsX3Jlc2V0X2hpc3RvcnkgKCkNCj4gIHsNCj4gICAgcmVjb3JkX2Z1bGxfaW5zbl9jb3VudCA9 IDA7DQo+ICAgIHJlY29yZF9mdWxsX25leHRfaW5zbiA9IDA7DQo+IA0KPiAtICBmb3IgKGF1dG8g Jmluc24gOiByZWNvcmRfZnVsbF9saXN0KQ0KPiAtICAgIHsNCj4gLSAgICAgIGZvciAoYXV0byAm ZW50cnkgOiBpbnNuLmVmZmVjdHMpDQo+IC0JcmVjb3JkX2Z1bGxfZW50cnlfY2xlYW51cCAoZW50 cnkpOw0KPiAtICAgIH0NCj4gLQ0KPiAgICByZWNvcmRfZnVsbF9saXN0LmNsZWFyICgpOw0KPiAg fQ0KPiANCj4gQEAgLTQ3NiwxMSArNjM1LDcgQEAgc3RhdGljIHZvaWQNCj4gIHJlY29yZF9mdWxs X2xpc3RfcmVsZWFzZV9mb2xsb3dpbmcgKGludCBpbmRleCkgIHsNCj4gICAgZm9yIChpbnQgaSA9 IHJlY29yZF9mdWxsX2xpc3Quc2l6ZSAoKSAtIDE7IGkgPiBpbmRleDsgaS0tKQ0KPiAtICAgIHsN Cj4gLSAgICAgIGZvciAoYXV0byAmZW50cnkgOiByZWNvcmRfZnVsbF9saXN0W2ldLmVmZmVjdHMp DQo+IC0JcmVjb3JkX2Z1bGxfZW50cnlfY2xlYW51cCAoZW50cnkpOw0KPiAtICAgICAgcmVjb3Jk X2Z1bGxfbGlzdC5wb3BfYmFjayAoKTsNCj4gLSAgICB9DQo+ICsgICAgcmVjb3JkX2Z1bGxfbGlz dC5wb3BfYmFjayAoKTsNCj4gICAgLyogU2V0IHRoZSBuZXh0IGluc3RydWN0aW9uIHRvIGJlIHBh c3QgdGhlIGVuZCBvZiB0aGUgbG9nIHNvIHdlDQo+ICAgICAgIHN0YXJ0IHJlY29yZGluZyBpZiB0 aGUgdXNlciBtb3ZlcyBmb3J3YXJkIGFnYWluLiAgKi8NCj4gICAgcmVjb3JkX2Z1bGxfbmV4dF9p bnNuID0gaW5kZXg7DQo+IEBAIC01MDksOSArNjY0LDYgQEAgcmVjb3JkX2Z1bGxfbGlzdF9yZWxl YXNlX2ZpcnN0ICh2b2lkKQ0KPiAgICBpZiAocmVjb3JkX2Z1bGxfbGlzdC5lbXB0eSAoKSkNCj4g ICAgICByZXR1cm47DQo+IA0KPiAtICBmb3IgKGF1dG8gJmVudHJ5IDogcmVjb3JkX2Z1bGxfbGlz dFswXS5lZmZlY3RzKQ0KPiAtICAgIHJlY29yZF9mdWxsX2VudHJ5X2NsZWFudXAgKGVudHJ5KTsN Cj4gLQ0KPiAgICByZWNvcmRfZnVsbF9saXN0LnBvcF9mcm9udCAoKTsNCj4gICAgLS1yZWNvcmRf ZnVsbF9uZXh0X2luc247DQo+ICB9DQo+IEBAIC01MjEsMjggKzY3Myw3IEBAIHJlY29yZF9mdWxs X2xpc3RfcmVsZWFzZV9maXJzdCAodm9pZCkgIHN0YXRpYyB2b2lkDQo+IHJlY29yZF9mdWxsX2Fy Y2hfbGlzdF9hZGQgKHJlY29yZF9mdWxsX2VudHJ5ICZyZWMpICB7DQo+IC0gIHJlY29yZF9mdWxs X2luY29tcGxldGVfaW5zdHJ1Y3Rpb24uZWZmZWN0cy5wdXNoX2JhY2sgKHJlYyk7IC19DQo+IC0N Cj4gLS8qIFJldHVybiB0aGUgdmFsdWUgc3RvcmFnZSBsb2NhdGlvbiBvZiBhIHJlY29yZCBlbnRy eS4gICovIC1zdGF0aWMgaW5saW5lDQo+IGdkYl9ieXRlICogLXJlY29yZF9mdWxsX2dldF9sb2Mg KHN0cnVjdCByZWNvcmRfZnVsbF9lbnRyeSAqcmVjKSAtew0KPiAtICBzd2l0Y2ggKHJlYy0+dHlw ZSkgew0KPiAtICBjYXNlIHJlY29yZF9mdWxsX21lbToNCj4gLSAgICBpZiAocmVjLT51Lm1lbS5s ZW4gPiBzaXplb2YgKHJlYy0+dS5tZW0udS5idWYpKQ0KPiAtICAgICAgcmV0dXJuIHJlYy0+dS5t ZW0udS5wdHI7DQo+IC0gICAgZWxzZQ0KPiAtICAgICAgcmV0dXJuIHJlYy0+dS5tZW0udS5idWY7 DQo+IC0gIGNhc2UgcmVjb3JkX2Z1bGxfcmVnOg0KPiAtICAgIGlmIChyZWMtPnUucmVnLmxlbiA+ IHNpemVvZiAocmVjLT51LnJlZy51LmJ1ZikpDQo+IC0gICAgICByZXR1cm4gcmVjLT51LnJlZy51 LnB0cjsNCj4gLSAgICBlbHNlDQo+IC0gICAgICByZXR1cm4gcmVjLT51LnJlZy51LmJ1ZjsNCj4g LSAgZGVmYXVsdDoNCj4gLSAgICBnZGJfYXNzZXJ0X25vdF9yZWFjaGVkICgidW5leHBlY3RlZCBy ZWNvcmRfZnVsbF9lbnRyeSB0eXBlIik7DQo+IC0gICAgcmV0dXJuIE5VTEw7DQo+IC0gIH0NCj4g KyAgcmVjb3JkX2Z1bGxfaW5jb21wbGV0ZV9pbnN0cnVjdGlvbi5lZmZlY3RzLnB1c2hfYmFjayAo c3RkOjptb3ZlDQo+ICsgKHJlYykpOw0KPiAgfQ0KPiANCj4gIC8qIFJlY29yZCB0aGUgdmFsdWUg b2YgYSByZWdpc3RlciBOVU0gdG8gcmVjb3JkX2Z1bGxfYXJjaF9saXN0LiAgKi8gQEAgLTU1MCw3 DQo+ICs2ODEsNyBAQCByZWNvcmRfZnVsbF9nZXRfbG9jIChzdHJ1Y3QgcmVjb3JkX2Z1bGxfZW50 cnkgKnJlYykgIGludA0KPiByZWNvcmRfZnVsbF9hcmNoX2xpc3RfYWRkX3JlZyAoc3RydWN0IHJl Z2NhY2hlICpyZWdjYWNoZSwgaW50IHJlZ251bSkgIHsNCj4gLSAgcmVjb3JkX2Z1bGxfZW50cnkg cmVjOw0KPiArICByZWNvcmRfZnVsbF9lbnRyeSByZWMgKHJlY29yZF9mdWxsX3JlZywgcmVnY2Fj aGUtPmFyY2ggKCksIHJlZ251bSk7DQo+IA0KPiAgICBpZiAocmVjb3JkX2RlYnVnID4gMSkNCj4g ICAgICBnZGJfcHJpbnRmIChnZGJfc3RkbG9nLA0KPiBAQCAtNTU4LDkgKzY4OSw3IEBAIHJlY29y ZF9mdWxsX2FyY2hfbGlzdF9hZGRfcmVnIChzdHJ1Y3QgcmVnY2FjaGUNCj4gKnJlZ2NhY2hlLCBp bnQgcmVnbnVtKQ0KPiAgCQkicmVjb3JkIGxpc3QuXG4iLA0KPiAgCQlyZWdudW0pOw0KPiANCj4g LSAgcmVjID0gcmVjb3JkX2Z1bGxfcmVnX2luaXQgKHJlZ2NhY2hlLCByZWdudW0pOw0KPiAtDQo+ IC0gIHJlZ2NhY2hlLT5jb29rZWRfcmVhZCAocmVnbnVtLCByZWNvcmRfZnVsbF9nZXRfbG9jICgm cmVjKSk7DQo+ICsgIHJlZ2NhY2hlLT5jb29rZWRfcmVhZCAocmVnbnVtLCByZWMuZ2V0X2xvYyAo KSk7DQo+IA0KPiAgICByZWNvcmRfZnVsbF9hcmNoX2xpc3RfYWRkIChyZWMpOw0KPiANCj4gQEAg LTU3Myw3ICs3MDIsNyBAQCByZWNvcmRfZnVsbF9hcmNoX2xpc3RfYWRkX3JlZyAoc3RydWN0IHJl Z2NhY2hlDQo+ICpyZWdjYWNoZSwgaW50IHJlZ251bSkgIGludCAgcmVjb3JkX2Z1bGxfYXJjaF9s aXN0X2FkZF9tZW0gKENPUkVfQUREUg0KPiBhZGRyLCBpbnQgbGVuKSAgew0KPiAtICByZWNvcmRf ZnVsbF9lbnRyeSByZWM7DQo+ICsgIHJlY29yZF9mdWxsX2VudHJ5IHJlYyAocmVjb3JkX2Z1bGxf bWVtLCBhZGRyLCBsZW4pOw0KPiANCj4gICAgaWYgKHJlY29yZF9kZWJ1ZyA+IDEpDQo+ICAgICAg Z2RiX3ByaW50ZiAoZ2RiX3N0ZGxvZywNCj4gQEAgLTU4NCwxNCArNzEzLDkgQEAgcmVjb3JkX2Z1 bGxfYXJjaF9saXN0X2FkZF9tZW0gKENPUkVfQUREUiBhZGRyLA0KPiBpbnQgbGVuKQ0KPiAgICBp ZiAoIWFkZHIpCS8qIEZJWE1FOiBXaHk/ICBTb21lIGFyY2ggbXVzdCBwZXJtaXQgaXQuLi4gICov DQo+ICAgICAgcmV0dXJuIDA7DQo+IA0KPiAtICByZWMgPSByZWNvcmRfZnVsbF9tZW1faW5pdCAo YWRkciwgbGVuKTsNCj4gLQ0KPiAgICBpZiAocmVjb3JkX3JlYWRfbWVtb3J5IChjdXJyZW50X2lu ZmVyaW9yICgpLT5hcmNoICgpLCBhZGRyLA0KPiAtCQkJICByZWNvcmRfZnVsbF9nZXRfbG9jICgm cmVjKSwgbGVuKSkNCj4gLSAgICB7DQo+IC0gICAgICByZWNvcmRfZnVsbF9tZW1fY2xlYW51cCAo cmVjKTsNCj4gLSAgICAgIHJldHVybiAtMTsNCj4gLSAgICB9DQo+ICsJCQkgIHJlYy5nZXRfbG9j ICgpLCBsZW4pKQ0KPiArICAgIHJldHVybiAtMTsNCj4gDQo+ICAgIHJlY29yZF9mdWxsX2FyY2hf bGlzdF9hZGQgKHJlYyk7DQo+IA0KPiBAQCAtNzE5LDk4ICs4NDMsMTQgQEAgcmVjb3JkX2Z1bGxf Z2RiX29wZXJhdGlvbl9kaXNhYmxlX3NldCAodm9pZCkNCj4gc3RhdGljIGVudW0gdGFyZ2V0X3N0 b3BfcmVhc29uIHJlY29yZF9mdWxsX3N0b3BfcmVhc29uDQo+ICAgID0gVEFSR0VUX1NUT1BQRURf QllfTk9fUkVBU09OOw0KPiANCj4gLS8qIEV4ZWN1dGUgb25lIGluc3RydWN0aW9uIGZyb20gdGhl IHJlY29yZCBsb2cuICBFYWNoIGluc3RydWN0aW9uIGluDQo+IC0gICB0aGUgbG9nIHdpbGwgYmUg cmVwcmVzZW50ZWQgYnkgYW4gYXJiaXRyYXJ5IHNlcXVlbmNlIG9mIHJlZ2lzdGVyDQo+IC0gICBl bnRyaWVzIGFuZCBtZW1vcnkgZW50cmllcywgZm9sbG93ZWQgYnkgYW4gJ2VuZCcgZW50cnkuICAq Lw0KPiAtDQo+IC1zdGF0aWMgaW5saW5lIHZvaWQNCj4gLXJlY29yZF9mdWxsX2V4ZWNfZW50cnkg KHJlZ2NhY2hlICpyZWdjYWNoZSwNCj4gLQkJCWdkYmFyY2ggKmdkYmFyY2gsDQo+IC0JCQlyZWNv cmRfZnVsbF9lbnRyeSAqZW50cnkpDQo+IC17DQo+IC0gIHN3aXRjaCAoZW50cnktPnR5cGUpDQo+ IC0gICAgew0KPiAtICAgIGNhc2UgcmVjb3JkX2Z1bGxfcmVnOiAvKiByZWcgKi8NCj4gLSAgICAg IHsNCj4gLQlnZGI6OmJ5dGVfdmVjdG9yIHJlZyAoZW50cnktPnUucmVnLmxlbik7DQo+IC0NCj4g LQlpZiAocmVjb3JkX2RlYnVnID4gMSkNCj4gLQkgIGdkYl9wcmludGYgKGdkYl9zdGRsb2csDQo+ IC0JCSAgICAgICJQcm9jZXNzIHJlY29yZDogcmVjb3JkX2Z1bGxfcmVnICVzIHRvICINCj4gLQkJ ICAgICAgImluZmVyaW9yIG51bSA9ICVkLlxuIiwNCj4gLQkJICAgICAgaG9zdF9hZGRyZXNzX3Rv X3N0cmluZyAoZW50cnkpLA0KPiAtCQkgICAgICBlbnRyeS0+dS5yZWcubnVtKTsNCj4gLQ0KPiAt CXJlZ2NhY2hlLT5jb29rZWRfcmVhZCAoZW50cnktPnUucmVnLm51bSwgcmVnLmRhdGEgKCkpOw0K PiAtCXJlZ2NhY2hlLT5jb29rZWRfd3JpdGUgKGVudHJ5LT51LnJlZy5udW0sIHJlY29yZF9mdWxs X2dldF9sb2MNCj4gKGVudHJ5KSk7DQo+IC0JbWVtY3B5IChyZWNvcmRfZnVsbF9nZXRfbG9jIChl bnRyeSksIHJlZy5kYXRhICgpLCBlbnRyeS0+dS5yZWcubGVuKTsNCj4gLSAgICAgIH0NCj4gLSAg ICAgIGJyZWFrOw0KPiAtDQo+IC0gICAgY2FzZSByZWNvcmRfZnVsbF9tZW06IC8qIG1lbSAqLw0K PiAtICAgICAgew0KPiAtCS8qIE5vdGhpbmcgdG8gZG8gaWYgdGhlIGVudHJ5IGlzIGZsYWdnZWQg bm90X2FjY2Vzc2libGUuICAqLw0KPiAtCWlmICghZW50cnktPnUubWVtLm1lbV9lbnRyeV9ub3Rf YWNjZXNzaWJsZSkNCj4gLQkgIHsNCj4gLQkgICAgZ2RiOjpieXRlX3ZlY3RvciBtZW0gKGVudHJ5 LT51Lm1lbS5sZW4pOw0KPiAtDQo+IC0JICAgIGlmIChyZWNvcmRfZGVidWcgPiAxKQ0KPiAtCSAg ICAgIGdkYl9wcmludGYgKGdkYl9zdGRsb2csDQo+IC0JCQkgICJQcm9jZXNzIHJlY29yZDogcmVj b3JkX2Z1bGxfbWVtICVzIHRvICINCj4gLQkJCSAgImluZmVyaW9yIGFkZHIgPSAlcyBsZW4gPSAl ZC5cbiIsDQo+IC0JCQkgIGhvc3RfYWRkcmVzc190b19zdHJpbmcgKGVudHJ5KSwNCj4gLQkJCSAg cGFkZHJlc3MgKGdkYmFyY2gsIGVudHJ5LT51Lm1lbS5hZGRyKSwNCj4gLQkJCSAgZW50cnktPnUu bWVtLmxlbik7DQo+IC0NCj4gLQkgICAgaWYgKHJlY29yZF9yZWFkX21lbW9yeSAoZ2RiYXJjaCwN Cj4gLQkJCQkgICAgZW50cnktPnUubWVtLmFkZHIsIG1lbS5kYXRhICgpLA0KPiAtCQkJCSAgICBl bnRyeS0+dS5tZW0ubGVuKSkNCj4gLQkgICAgICBlbnRyeS0+dS5tZW0ubWVtX2VudHJ5X25vdF9h Y2Nlc3NpYmxlID0gMTsNCj4gLQkgICAgZWxzZQ0KPiAtCSAgICAgIHsNCj4gLQkJaWYgKHRhcmdl dF93cml0ZV9tZW1vcnkgKGVudHJ5LT51Lm1lbS5hZGRyLA0KPiAtCQkJCQkgcmVjb3JkX2Z1bGxf Z2V0X2xvYyAoZW50cnkpLA0KPiAtCQkJCQkgZW50cnktPnUubWVtLmxlbikpDQo+IC0JCSAgew0K PiAtCQkgICAgZW50cnktPnUubWVtLm1lbV9lbnRyeV9ub3RfYWNjZXNzaWJsZSA9IDE7DQo+IC0J CSAgICBpZiAocmVjb3JkX2RlYnVnKQ0KPiAtCQkgICAgICB3YXJuaW5nIChfKCJQcm9jZXNzIHJl Y29yZDogZXJyb3Igd3JpdGluZyBtZW1vcnkgYXQgIg0KPiAtCQkJCSAiYWRkciA9ICVzIGxlbiA9 ICVkLiIpLA0KPiAtCQkJICAgICAgIHBhZGRyZXNzIChnZGJhcmNoLCBlbnRyeS0+dS5tZW0uYWRk ciksDQo+IC0JCQkgICAgICAgZW50cnktPnUubWVtLmxlbik7DQo+IC0JCSAgfQ0KPiAtCQllbHNl DQo+IC0JCSAgew0KPiAtCQkgICAgbWVtY3B5IChyZWNvcmRfZnVsbF9nZXRfbG9jIChlbnRyeSks IG1lbS5kYXRhICgpLA0KPiAtCQkJICAgIGVudHJ5LT51Lm1lbS5sZW4pOw0KPiAtDQo+IC0JCSAg ICAvKiBXZSd2ZSBjaGFuZ2VkIG1lbW9yeSAtLS0gY2hlY2sgaWYgYSBoYXJkd2FyZQ0KPiAtCQkg ICAgICAgd2F0Y2hwb2ludCBzaG91bGQgdHJhcC4gIE5vdGUgdGhhdCB0aGlzDQo+IC0JCSAgICAg ICBwcmVzZW50bHkgYXNzdW1lcyB0aGUgdGFyZ2V0IGJlbmVhdGggc3VwcG9ydHMNCj4gLQkJICAg ICAgIGNvbnRpbnVhYmxlIHdhdGNocG9pbnRzLiAgT24gbm9uLWNvbnRpbnVhYmxlDQo+IC0JCSAg ICAgICB3YXRjaHBvaW50cyB0YXJnZXQsIHdlJ2xsIHdhbnQgdG8gY2hlY2sgdGhpcw0KPiAtCQkg ICAgICAgX2JlZm9yZV8gYWN0dWFsbHkgZG9pbmcgdGhlIG1lbW9yeSBjaGFuZ2UsIGFuZA0KPiAt CQkgICAgICAgbm90IGRvaW5nIHRoZSBjaGFuZ2UgYXQgYWxsIGlmIHRoZSB3YXRjaHBvaW50DQo+ IC0JCSAgICAgICB0cmFwcy4gICovDQo+IC0JCSAgICBpZiAoaGFyZHdhcmVfd2F0Y2hwb2ludF9p bnNlcnRlZF9pbl9yYW5nZQ0KPiAtCQkJKGN1cnJlbnRfaW5mZXJpb3IgKCktPmFzcGFjZS5nZXQg KCksDQo+IC0JCQkgZW50cnktPnUubWVtLmFkZHIsIGVudHJ5LT51Lm1lbS5sZW4pKQ0KPiAtCQkg ICAgICByZWNvcmRfZnVsbF9zdG9wX3JlYXNvbiA9DQo+IFRBUkdFVF9TVE9QUEVEX0JZX1dBVENI UE9JTlQ7DQo+IC0JCSAgfQ0KPiAtCSAgICAgIH0NCj4gLQkgIH0NCj4gLSAgICAgIH0NCj4gLSAg ICAgIGJyZWFrOw0KPiAtICAgIH0NCj4gLX0NCj4gLQ0KPiAgc3RhdGljIGlubGluZSB2b2lkDQo+ ICByZWNvcmRfZnVsbF9leGVjX2luc24gKHJlZ2NhY2hlICpyZWdjYWNoZSwNCj4gIAkJICAgICAg IGdkYmFyY2ggKmdkYmFyY2gsDQo+ICAJCSAgICAgICByZWNvcmRfZnVsbF9pbnN0cnVjdGlvbiAm aW5zbikgIHsNCj4gICAgZm9yIChhdXRvICZlbnRyeSA6IGluc24uZWZmZWN0cykNCj4gLSAgICBy ZWNvcmRfZnVsbF9leGVjX2VudHJ5IChyZWdjYWNoZSwgZ2RiYXJjaCwgJmVudHJ5KTsNCj4gKyAg ICBpZiAoZW50cnkuZXhlY3V0ZSAocmVnY2FjaGUpKQ0KPiArICAgICAgcmVjb3JkX2Z1bGxfc3Rv cF9yZWFzb24gPSBUQVJHRVRfU1RPUFBFRF9CWV9XQVRDSFBPSU5UOw0KPiAgfQ0KPiANCj4gIHN0 YXRpYyB2b2lkIHJlY29yZF9mdWxsX3Jlc3RvcmUgKHN0cnVjdCBiZmQgJmNiZmQpOyBAQCAtMjE4 NSwyMSArMjIyNSwxOQ0KPiBAQCByZWNvcmRfZnVsbF9yZWFkX2VudHJ5X2Zyb21fYmZkIChiZmQg KmNiZmQsIGFzZWN0aW9uICpvc2VjLCBpbnQNCj4gKmJmZF9vZmZzZXQpDQo+ICAJYmZkY29yZV9y ZWFkIChjYmZkLCBvc2VjLCAmcmVnbnVtLCBzaXplb2YgKHJlZ251bSksIGJmZF9vZmZzZXQpOw0K PiAgCXJlZ251bSA9IG5ldG9yZGVyMzIgKHJlZ251bSk7DQo+IA0KPiAtCXJlY29yZF9mdWxsX2Vu dHJ5IHJlYzsNCj4gLQ0KPiAtCXJlYyA9IHJlY29yZF9mdWxsX3JlZ19pbml0IChjYWNoZSwgcmVn bnVtKTsNCj4gKwlyZWNvcmRfZnVsbF9lbnRyeSByZWMgKHJlY29yZF9mdWxsX3JlZywgY2FjaGUt PmFyY2ggKCksIHJlZ251bSk7DQo+IA0KPiAgCS8qIEdldCB2YWwuICAqLw0KPiAtCWJmZGNvcmVf cmVhZCAoY2JmZCwgb3NlYywgcmVjb3JkX2Z1bGxfZ2V0X2xvYyAoJnJlYyksDQo+IC0JCSAgICAg IHJlYy51LnJlZy5sZW4sIGJmZF9vZmZzZXQpOw0KPiArCWJmZGNvcmVfcmVhZCAoY2JmZCwgb3Nl YywgcmVjLmdldF9sb2MgKCksDQo+ICsJCSAgICAgIHJlYy5yZWcgKCkubGVuLCBiZmRfb2Zmc2V0 KTsNCj4gDQo+ICAJaWYgKHJlY29yZF9kZWJ1ZykNCj4gIAkgIGdkYl9wcmludGYgKGdkYl9zdGRs b2csDQo+ICAJCSAgICAgICIgIFJlYWRpbmcgcmVnaXN0ZXIgJWQgKDEgIg0KPiAgCQkgICAgICAi cGx1cyAlbHUgcGx1cyAlZCBieXRlcylcbiIsDQo+IC0JCSAgICAgIHJlYy51LnJlZy5udW0sDQo+ ICsJCSAgICAgIHJlYy5yZWcgKCkubnVtLA0KPiAgCQkgICAgICAodW5zaWduZWQgbG9uZykgc2l6 ZW9mIChyZWdudW0pLA0KPiAtCQkgICAgICByZWMudS5yZWcubGVuKTsNCj4gKwkJICAgICAgcmVj LnJlZyAoKS5sZW4pOw0KPiANCj4gIAlyZWNvcmRfZnVsbF9hcmNoX2xpc3RfYWRkIChyZWMpOw0K PiAgCWJyZWFrOw0KPiBAQCAtMjIxNiwxOSArMjI1NCwxNyBAQCByZWNvcmRfZnVsbF9yZWFkX2Vu dHJ5X2Zyb21fYmZkIChiZmQgKmNiZmQsDQo+IGFzZWN0aW9uICpvc2VjLCBpbnQgKmJmZF9vZmZz ZXQpDQo+ICAJCSAgICAgIGJmZF9vZmZzZXQpOw0KPiAgCWFkZHIgPSBuZXRvcmRlcjY0IChhZGRy KTsNCj4gDQo+IC0JcmVjb3JkX2Z1bGxfZW50cnkgcmVjOw0KPiAtCXJlYyA9IHJlY29yZF9mdWxs X21lbV9pbml0IChhZGRyLCBsZW4pOw0KPiArCXJlY29yZF9mdWxsX2VudHJ5IHJlYyAocmVjb3Jk X2Z1bGxfbWVtLCBhZGRyLCBsZW4pOw0KPiANCj4gIAkvKiBHZXQgdmFsLiAgKi8NCj4gLQliZmRj b3JlX3JlYWQgKGNiZmQsIG9zZWMsIHJlY29yZF9mdWxsX2dldF9sb2MgKCZyZWMpLCBsZW4sDQo+ IC0JCSAgICAgIGJmZF9vZmZzZXQpOw0KPiArCWJmZGNvcmVfcmVhZCAoY2JmZCwgb3NlYywgcmVj LmdldF9sb2MgKCksIGxlbiwgYmZkX29mZnNldCk7DQo+IA0KPiAgCWlmIChyZWNvcmRfZGVidWcp DQo+ICAJICBnZGJfcHJpbnRmIChnZGJfc3RkbG9nLA0KPiAgCQkgICAgICAiICBSZWFkaW5nIG1l bW9yeSAlcyAoMSBwbHVzICINCj4gIAkJICAgICAgIiVsdSBwbHVzICVsdSBwbHVzICVkIGJ5dGVz KVxuIiwNCj4gIAkJICAgICAgcGFkZHJlc3MgKGdldF9jdXJyZW50X2FyY2ggKCksDQo+IC0JCQkJ cmVjLnUubWVtLmFkZHIpLA0KPiArCQkJCXJlYy5tZW0gKCkuYWRkciksDQo+ICAJCSAgICAgICh1 bnNpZ25lZCBsb25nKSBzaXplb2YgKGFkZHIpLA0KPiAgCQkgICAgICAodW5zaWduZWQgbG9uZykg c2l6ZW9mIChsZW4pLA0KPiAgCQkgICAgICBsZW4pOw0KPiBAQCAtMjM4MCw1MiArMjQxNiw1NiBA QCByZWNvcmRfZnVsbF93cml0ZV9lbnRyeV90b19iZmQNCj4gKHJlY29yZF9mdWxsX2VudHJ5ICZl bnRyeSwNCj4gICAgdWludDMyX3QgcmVnbnVtLCBsZW47DQo+ICAgIHVpbnQ2NF90IGFkZHI7DQo+ IA0KPiAtICB0eXBlID0gZW50cnkudHlwZTsNCj4gKyAgdHlwZSA9IGVudHJ5LnR5cGUgKCk7DQo+ ICAgIGJmZGNvcmVfd3JpdGUgKG9iZmQuZ2V0ICgpLCBvc2VjLCAmdHlwZSwgc2l6ZW9mICh0eXBl KSwgYmZkX29mZnNldCk7DQo+IA0KPiAtICBzd2l0Y2ggKGVudHJ5LnR5cGUpDQo+ICsgIHN3aXRj aCAodHlwZSkNCj4gICAgICB7DQo+ICAgICAgY2FzZSByZWNvcmRfZnVsbF9yZWc6IC8qIHJlZyAq Lw0KPiAtICAgICAgaWYgKHJlY29yZF9kZWJ1ZykNCj4gLQlnZGJfcHJpbnRmIChnZGJfc3RkbG9n LA0KPiAtCQkgICAgIiAgV3JpdGluZyByZWdpc3RlciAlZCAoMSAiDQo+IC0JCSAgICAicGx1cyAl bHUgcGx1cyAlZCBieXRlcylcbiIsDQo+IC0JCSAgICBlbnRyeS51LnJlZy5udW0sDQo+IC0JCSAg ICAodW5zaWduZWQgbG9uZykgc2l6ZW9mIChyZWdudW0pLA0KPiAtCQkgICAgZW50cnkudS5yZWcu bGVuKTsNCj4gLQ0KPiAtICAgICAgLyogV3JpdGUgcmVnbnVtLiAgKi8NCj4gLSAgICAgIHJlZ251 bSA9IG5ldG9yZGVyMzIgKGVudHJ5LnUucmVnLm51bSk7DQo+IC0gICAgICBiZmRjb3JlX3dyaXRl IChvYmZkLmdldCAoKSwgb3NlYywgJnJlZ251bSwgc2l6ZW9mIChyZWdudW0pLCBiZmRfb2Zmc2V0 KTsNCj4gLQ0KPiAtICAgICAgLyogV3JpdGUgcmVndmFsLiAgKi8NCj4gLSAgICAgIGJmZGNvcmVf d3JpdGUgKG9iZmQuZ2V0ICgpLCBvc2VjLCByZWNvcmRfZnVsbF9nZXRfbG9jICgmZW50cnkpLA0K PiAtCQkgICAgIGVudHJ5LnUucmVnLmxlbiwgYmZkX29mZnNldCk7DQo+IC0gICAgICBicmVhazsN Cj4gKyAgICAgIHsNCj4gKwlhdXRvICZyZWcgPSBlbnRyeS5yZWcgKCk7DQo+ICsJaWYgKHJlY29y ZF9kZWJ1ZykNCj4gKwkgIGdkYl9wcmludGYgKGdkYl9zdGRsb2csDQo+ICsJCSAgICAgICIgIFdy aXRpbmcgcmVnaXN0ZXIgJWQgKDEgIg0KPiArCQkgICAgICAicGx1cyAlbHUgcGx1cyAlZCBieXRl cylcbiIsDQo+ICsJCSAgICAgIHJlZy5udW0sDQo+ICsJCSAgICAgICh1bnNpZ25lZCBsb25nKSBz aXplb2YgKHJlZ251bSksDQo+ICsJCSAgICAgIHJlZy5sZW4pOw0KPiArDQo+ICsJLyogV3JpdGUg cmVnbnVtLiAgKi8NCj4gKwlyZWdudW0gPSBuZXRvcmRlcjMyIChyZWcubnVtKTsNCj4gKwliZmRj b3JlX3dyaXRlIChvYmZkLmdldCAoKSwgb3NlYywgJnJlZ251bSwgc2l6ZW9mIChyZWdudW0pLA0K PiArYmZkX29mZnNldCk7DQo+ICsNCj4gKwkvKiBXcml0ZSByZWd2YWwuICAqLw0KPiArCWJmZGNv cmVfd3JpdGUgKG9iZmQuZ2V0ICgpLCBvc2VjLCBlbnRyeS5nZXRfbG9jICgpLCByZWcubGVuLCBi ZmRfb2Zmc2V0KTsNCj4gKwlicmVhazsNCj4gKyAgICAgIH0NCj4gDQo+ICAgICAgY2FzZSByZWNv cmRfZnVsbF9tZW06IC8qIG1lbSAqLw0KPiAtICAgICAgaWYgKHJlY29yZF9kZWJ1ZykNCj4gLQln ZGJfcHJpbnRmIChnZGJfc3RkbG9nLA0KPiAtCQkgICAgIiAgV3JpdGluZyBtZW1vcnkgJXMgKDEg cGx1cyAiDQo+IC0JCSAgICAiJWx1IHBsdXMgJWx1IHBsdXMgJWQgYnl0ZXMpXG4iLA0KPiAtCQkg ICAgcGFkZHJlc3MgKGdkYmFyY2gsDQo+IC0JCQkgICAgICBlbnRyeS51Lm1lbS5hZGRyKSwNCj4g LQkJICAgICh1bnNpZ25lZCBsb25nKSBzaXplb2YgKGFkZHIpLA0KPiAtCQkgICAgKHVuc2lnbmVk IGxvbmcpIHNpemVvZiAobGVuKSwNCj4gLQkJICAgIGVudHJ5LnUubWVtLmxlbik7DQo+IC0NCj4g LSAgICAgIC8qIFdyaXRlIG1lbWxlbi4gICovDQo+IC0gICAgICBsZW4gPSBuZXRvcmRlcjMyIChl bnRyeS51Lm1lbS5sZW4pOw0KPiAtICAgICAgYmZkY29yZV93cml0ZSAob2JmZC5nZXQgKCksIG9z ZWMsICZsZW4sIHNpemVvZiAobGVuKSwgYmZkX29mZnNldCk7DQo+IC0NCj4gLSAgICAgIC8qIFdy aXRlIG1lbWFkZHIuICAqLw0KPiAtICAgICAgYWRkciA9IG5ldG9yZGVyNjQgKGVudHJ5LnUubWVt LmFkZHIpOw0KPiAtICAgICAgYmZkY29yZV93cml0ZSAob2JmZC5nZXQgKCksIG9zZWMsICZhZGRy LCBzaXplb2YgKGFkZHIpLCBiZmRfb2Zmc2V0KTsNCj4gLQ0KPiAtICAgICAgLyogV3JpdGUgbWVt dmFsLiAgKi8NCj4gLSAgICAgIGJmZGNvcmVfd3JpdGUgKG9iZmQuZ2V0ICgpLCBvc2VjLCByZWNv cmRfZnVsbF9nZXRfbG9jICgmZW50cnkpLA0KPiAtCQkgICAgIGVudHJ5LnUubWVtLmxlbiwgYmZk X29mZnNldCk7DQo+IC0gICAgICBicmVhazsNCj4gKyAgICAgIHsNCj4gKwlhdXRvICZtZW0gPSBl bnRyeS5tZW0gKCk7DQo+ICsJaWYgKHJlY29yZF9kZWJ1ZykNCj4gKwkgIGdkYl9wcmludGYgKGdk Yl9zdGRsb2csDQo+ICsJCSAgICAgICIgIFdyaXRpbmcgbWVtb3J5ICVzICgxIHBsdXMgIg0KPiAr CQkgICAgICAiJWx1IHBsdXMgJWx1IHBsdXMgJWQgYnl0ZXMpXG4iLA0KPiArCQkgICAgICBwYWRk cmVzcyAoZ2RiYXJjaCwgbWVtLmFkZHIpLA0KPiArCQkgICAgICAodW5zaWduZWQgbG9uZykgc2l6 ZW9mIChhZGRyKSwNCj4gKwkJICAgICAgKHVuc2lnbmVkIGxvbmcpIHNpemVvZiAobGVuKSwNCj4g KwkJICAgICAgbWVtLmxlbik7DQo+ICsNCj4gKwkvKiBXcml0ZSBtZW1sZW4uICAqLw0KPiArCWxl biA9IG5ldG9yZGVyMzIgKG1lbS5sZW4pOw0KPiArCWJmZGNvcmVfd3JpdGUgKG9iZmQuZ2V0ICgp LCBvc2VjLCAmbGVuLCBzaXplb2YgKGxlbiksIGJmZF9vZmZzZXQpOw0KPiArDQo+ICsJLyogV3Jp dGUgbWVtYWRkci4gICovDQo+ICsJYWRkciA9IG5ldG9yZGVyNjQgKG1lbS5hZGRyKTsNCj4gKwli ZmRjb3JlX3dyaXRlIChvYmZkLmdldCAoKSwgb3NlYywgJmFkZHIsIHNpemVvZiAoYWRkciksIGJm ZF9vZmZzZXQpOw0KPiArDQo+ICsJLyogV3JpdGUgbWVtdmFsLiAgKi8NCj4gKwliZmRjb3JlX3dy aXRlIChvYmZkLmdldCAoKSwgb3NlYywgZW50cnkuZ2V0X2xvYyAoKSwgbWVtLmxlbiwNCj4gKwkJ ICAgICAgIGJmZF9vZmZzZXQpOw0KPiArCWJyZWFrOw0KPiArICAgICAgfQ0KPiAgICAgIH0NCj4g DQo+ICB9DQo+IEBAIC0yNDczLDEzICsyNTEzLDEzIEBAIHJlY29yZF9mdWxsX2Jhc2VfdGFyZ2V0 OjpzYXZlX3JlY29yZCAoY29uc3QNCj4gY2hhciAqcmVjZmlsZW5hbWUpDQo+ICAgICAgICAvKiBO dW1iZXIgb2YgZWZmZWN0cyBvZiBhbiBpbnN0cnVjdGlvbi4gICovDQo+ICAgICAgICBzYXZlX3Np emUgKz0gc2l6ZW9mICh1aW50MzJfdCkgKyBzaXplb2YgKHVpbnQ4X3QpICsgc2l6ZW9mICh1aW50 MzJfdCk7DQo+ICAgICAgICBmb3IgKGF1dG8gJmVudHJ5IDogcmVjb3JkX2Z1bGxfbGlzdFtpXS5l ZmZlY3RzKQ0KPiAtCXN3aXRjaCAoZW50cnkudHlwZSkNCj4gKwlzd2l0Y2ggKGVudHJ5LnR5cGUg KCkpDQo+ICAJICB7DQo+ICAJICBjYXNlIHJlY29yZF9mdWxsX3JlZzoNCj4gLQkgICAgc2F2ZV9z aXplICs9IDEgKyA0ICsgZW50cnkudS5yZWcubGVuOw0KPiArCSAgICBzYXZlX3NpemUgKz0gMSAr IDQgKyBlbnRyeS5yZWcgKCkubGVuOw0KPiAgCSAgICBicmVhazsNCj4gIAkgIGNhc2UgcmVjb3Jk X2Z1bGxfbWVtOg0KPiAtCSAgICBzYXZlX3NpemUgKz0gMSArIDQgKyA4ICsgZW50cnkudS5tZW0u bGVuOw0KPiArCSAgICBzYXZlX3NpemUgKz0gMSArIDQgKyA4ICsgZW50cnkubWVtICgpLmxlbjsN Cj4gIAkgICAgYnJlYWs7DQo+ICAJICB9DQo+ICAgICAgfQ0KPiBAQCAtMjYxMiwxOCArMjY1Miwx OCBAQCBtYWludGVuYW5jZV9wcmludF9yZWNvcmRfaW5zdHJ1Y3Rpb24gKGNvbnN0DQo+IGNoYXIg KmFyZ3MsIGludCBmcm9tX3R0eSkNCj4gDQo+ICAgIGdkYmFyY2ggKmFyY2ggPSBjdXJyZW50X2lu ZmVyaW9yICgpLT5hcmNoICgpOw0KPiANCj4gLSAgZm9yIChhdXRvIGVudHJ5IDogdG9fcHJpbnQt PmVmZmVjdHMpDQo+ICsgIGZvciAoYXV0byAmZW50cnkgOiB0b19wcmludC0+ZWZmZWN0cykNCj4g ICAgICB7DQo+IC0gICAgICBzd2l0Y2ggKGVudHJ5LnR5cGUpDQo+ICsgICAgICBzd2l0Y2ggKGVu dHJ5LnR5cGUgKCkpDQo+ICAJew0KPiAgCSAgY2FzZSByZWNvcmRfZnVsbF9yZWc6DQo+ICAJICAg IHsNCj4gLQkgICAgICB0eXBlICpyZWd0eXBlID0gZ2RiYXJjaF9yZWdpc3Rlcl90eXBlIChhcmNo LCBlbnRyeS51LnJlZy5udW0pOw0KPiArCSAgICAgIHR5cGUgKnJlZ3R5cGUgPSBnZGJhcmNoX3Jl Z2lzdGVyX3R5cGUgKGFyY2gsIGVudHJ5LnJlZyAoKS5udW0pOw0KPiAgCSAgICAgIHZhbHVlICp2 YWwNCj4gIAkJICA9IHZhbHVlX2Zyb21fY29udGVudHMgKHJlZ3R5cGUsDQo+IC0JCQkJCSByZWNv cmRfZnVsbF9nZXRfbG9jICgmZW50cnkpKTsNCj4gKwkJCQkJIGVudHJ5LmdldF9sb2MgKCkpOw0K PiAgCSAgICAgIGdkYl9wcmludGYgKCJSZWdpc3RlciAlcyBjaGFuZ2VkOiAiLA0KPiAtCQkJICBn ZGJhcmNoX3JlZ2lzdGVyX25hbWUgKGFyY2gsIGVudHJ5LnUucmVnLm51bSkpOw0KPiArCQkJICBn ZGJhcmNoX3JlZ2lzdGVyX25hbWUgKGFyY2gsIGVudHJ5LnJlZyAoKS5udW0pKTsNCj4gIAkgICAg ICBzdHJ1Y3QgdmFsdWVfcHJpbnRfb3B0aW9ucyBvcHRzOw0KPiAgCSAgICAgIGdldF91c2VyX3By aW50X29wdGlvbnMgKCZvcHRzKTsNCj4gIAkgICAgICBvcHRzLnJhdyA9IHRydWU7DQo+IEBAIC0y NjMzLDExICsyNjczLDEyIEBAIG1haW50ZW5hbmNlX3ByaW50X3JlY29yZF9pbnN0cnVjdGlvbiAo Y29uc3QNCj4gY2hhciAqYXJncywgaW50IGZyb21fdHR5KQ0KPiAgCSAgICB9DQo+ICAJICBjYXNl IHJlY29yZF9mdWxsX21lbToNCj4gIAkgICAgew0KPiAtCSAgICAgIGdkYl9ieXRlICpiID0gcmVj b3JkX2Z1bGxfZ2V0X2xvYyAoJmVudHJ5KTsNCj4gKwkgICAgICByZWNvcmRfZnVsbF9tZW1fZW50 cnkmIG1lbSA9IGVudHJ5Lm1lbSAoKTsNCj4gKwkgICAgICBnZGJfYnl0ZSAqYiA9IGVudHJ5Lmdl dF9sb2MgKCk7DQo+ICAJICAgICAgZ2RiX3ByaW50ZiAoIiVkIGJ5dGVzIG9mIG1lbW9yeSBhdCBh ZGRyZXNzICVzIGNoYW5nZWQgZnJvbToiLA0KPiAtCQkJICBlbnRyeS51Lm1lbS5sZW4sDQo+IC0J CQkgIHByaW50X2NvcmVfYWRkcmVzcyAoYXJjaCwgZW50cnkudS5tZW0uYWRkcikpOw0KPiAtCSAg ICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZW50cnkudS5tZW0ubGVuOyBpKyspDQo+ICsJCQkgIG1l bS5sZW4sDQo+ICsJCQkgIHByaW50X2NvcmVfYWRkcmVzcyAoYXJjaCwgbWVtLmFkZHIpKTsNCj4g KwkgICAgICBmb3IgKGludCBpID0gMDsgaSA8IG1lbS5sZW47IGkrKykNCj4gIAkJZ2RiX3ByaW50 ZiAoIiAlMDJ4IiwgYltpXSk7DQo+ICAJICAgICAgZ2RiX3ByaW50ZiAoIlxuIik7DQo+ICAJICAg ICAgYnJlYWs7DQo+IC0tDQo+IDIuNTQuMA0KPiANCg0KQ2hyaXN0aW5hDQpJbnRlbCBEZXV0c2No bGFuZCBHbWJIDQpSZWdpc3RlcmVkIEFkZHJlc3M6IERvcm5hY2hlciBTdHJhc3NlIDEsIDg1NjIy IEZlbGRraXJjaGVuLCBHZXJtYW55DQpUZWw6ICs0OSA4OSA5OTEgNDMwLCB3d3cuaW50ZWwuZGUN Ck1hbmFnaW5nIERpcmVjdG9yczogSGFycnkgRGVtYXMsIEplZmZyZXkgU2NobmVpZGVybWFuLCBZ aW4gQ2hvbmcgU29ycmVsbA0KQ2hhaXJwZXJzb24gb2YgdGhlIFN1cGVydmlzb3J5IEJvYXJkOiBO aWNvbGUgTGF1DQpSZWdpc3RlcmVkIFNlYXQ6IE11bmljaA0KQ29tbWVyY2lhbCBSZWdpc3Rlcjog QW10c2dlcmljaHQgTXVlbmNoZW4gSFJCIDE4NjkyOAo=