From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from simark.ca by simark.ca with LMTP id EgdpOOmv+2n4YxsAWB0awg (envelope-from ) for ; Wed, 06 May 2026 17:17:29 -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=Ie6U3N3z; dkim-atps=neutral Received: by simark.ca (Postfix, from userid 112) id D15E91E067; Wed, 06 May 2026 17:17:29 -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 502211E067 for ; Wed, 06 May 2026 17:17:25 -0400 (EDT) Received: from vm01.sourceware.org (localhost [IPv6:::1]) by sourceware.org (Postfix) with ESMTP id 00DF34BA2E3E for ; Wed, 6 May 2026 21:17:24 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 00DF34BA2E3E 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=Ie6U3N3z Received: from mgamail.intel.com (mgamail.intel.com [192.198.163.11]) by sourceware.org (Postfix) with ESMTPS id 11F304BA2E31 for ; Wed, 6 May 2026 21:16:47 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 11F304BA2E31 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 11F304BA2E31 Authentication-Results: sourceware.org; arc=fail smtp.remote-ip=192.198.163.11 ARC-Seal: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1778102208; cv=fail; b=JsYqh+wwr/dJDYQuPZGOZWeW46gNXfny3/WNIwfyHpBLstzRxpRhArzpFLS9L5b8NmU2cJ25zVLhmk+55tAZctr9b+Xhbx+SR42n1d0xZebQfoetIgYh8oiUmG0VedK9toohk0xm8FJd2Ff5CCOuvdskMHAb6lDxySBUbFQbggA= ARC-Message-Signature: i=2; a=rsa-sha256; d=sourceware.org; s=key; t=1778102208; c=relaxed/simple; bh=69YTBqowJJ4MjHdMOrzyfObDeSsmiokiSJMSI7Xl/A0=; h=DKIM-Signature:From:To:Subject:Date:Message-ID:MIME-Version; b=ST37nmpYXiHp/MBiO6qF68YrAf41HPhCgJWiSJpvPNTY3J9fQYU+LTTX1zHlbjGSqu7MVEyQYuLWhxWdvmAfhvSm7wymTjDmKZdQhSpeVMRGc/+/VM2Q2g6MJlBzOZpN5SZMSIREjjt1lsMWIUuoFI7MrD0KUmp9aZHJXX2NnIo= 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=Ie6U3N3z DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 11F304BA2E31 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1778102208; x=1809638208; h=from:to:subject:date:message-id:references:in-reply-to: mime-version:content-transfer-encoding; bh=69YTBqowJJ4MjHdMOrzyfObDeSsmiokiSJMSI7Xl/A0=; b=Ie6U3N3zhzLs/RGb3USpThZzooCO4aNLk5zMpm2GcLQK4HGvwC4nAqjg DWrCces3mip77JoT8sU6ZvXz6943k9KS/nGyEolFe50eWCHmlfG6oGGYI THXmBz+n/QHiWgtAy3Ywr1SzTbOdshkQOabE6/J53AaMsCxye19a17LnT XJyZvTfFsy1BV0mf8dkOju4q6+/0D4U6bZHX0dQZjsrwuPTDZ++4uB5lj 2TfeoXeGuaJFi+m0U/46f+eSTIShnqNtLffG1TTXAHleBAFo/la2Ce0iP CTUqX4L08zEjazEhaCCEXR+XuCUu3YaHYIeh8XJ8M1LnNkmHG+/PwBhu+ Q==; X-CSE-ConnectionGUID: fbWxEJMSTS20hZur7+JmzQ== X-CSE-MsgGUID: O2at7daYR1qUguVRX8yFUQ== X-IronPort-AV: E=McAfee;i="6800,10657,11778"; a="89632993" X-IronPort-AV: E=Sophos;i="6.23,220,1770624000"; d="scan'208";a="89632993" Received: from orviesa001.jf.intel.com ([10.64.159.141]) by fmvoesa105.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 May 2026 14:16:47 -0700 X-CSE-ConnectionGUID: grrVAgajSJiaxfhDYeNXtQ== X-CSE-MsgGUID: z+Ym78tCTCeLk/dFG4gj7g== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="6.23,220,1770624000"; d="scan'208";a="274384370" Received: from orsmsx901.amr.corp.intel.com ([10.22.229.23]) by orviesa001.jf.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 06 May 2026 14:16:47 -0700 Received: from ORSMSX902.amr.corp.intel.com (10.22.229.24) 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; Wed, 6 May 2026 14:16:46 -0700 Received: from ORSEDG902.ED.cps.intel.com (10.7.248.12) by ORSMSX902.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.37 via Frontend Transport; Wed, 6 May 2026 14:16:46 -0700 Received: from DM1PR04CU001.outbound.protection.outlook.com (52.101.61.1) by edgegateway.intel.com (134.134.137.112) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.2.2562.37; Wed, 6 May 2026 14:16:45 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=oLxD0Za8SoJC8tuF/lcjAsRrQcSQPhuHpW+SnQMXFfioudXaVGTyhGf7FH6mh04jMicNRI2LZXcCGA0fZEfeEQmsNwjCWHkcknEgfDewSRctptCmKKsSRoJUU4r9urumJ5PsEjMHN5m/pBSzvm40zCcjVmrn1+6gQLkElRaF+k5f02Xm0gUyZPnsSfBnqMQ1J/9BfMevzFokQ8KRMbdC1X/6XnsDmiyA5jHVPryTUCq1tKcKb53K9CgqqmxczCeUFIDK0pbzp0U33LJTuVl3MFCIbGmbxKonGQB2wAezvJN6sWPTqIy6/XgWfBDme7/BLHC+jpJ02NI0dt7/l2AItw== 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=VZNFTMVFpzYQvLCJrv3owzk694uzlMHE1KcQk4BNLDs=; b=IyVnSH3mpoFpuzO/GhHYK0BSWGpWKUzEjvDveBiMahyi14SMA0Z7joxssGJiUK7MGFfBDkY0GADS+Vm/jNpoFKeBfD8DuX1sJwtlKKNGkhCweprMzfAYGG6XMnIYk3i2e2vDIP5aC0Msixbk75g7cjAXdKsMcChbFxOKVgtT43XZ5t/tB08PrtjayJvVlssVnVhswgE3Rm8VBE1mDS0QmZP1Qb4u48ezp8YOFVMiQ5OWxb2Anfxfr84++Iw4g9acU4yZWyoObCg4/3b9/VWkHn6quywalakq493nz681SCl4PMZYxkm+e6W9AhkibjW518yRi1pv8dXSwKOdNt0ENw== 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 BN9PR11MB5324.namprd11.prod.outlook.com (2603:10b6:408:119::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9870.27; Wed, 6 May 2026 21:16:43 +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.20.9870.023; Wed, 6 May 2026 21:16:41 +0000 From: "Schimpe, Christina" To: Guinevere Larsen , "gdb-patches@sourceware.org" Subject: RE: [PATCH v2 1/6] gdb/record: Refactor record history Thread-Topic: [PATCH v2 1/6] gdb/record: Refactor record history Thread-Index: AQHc0zWs2tneStgsnkGdGTFQ8Vh1hbYA9WWA Date: Wed, 6 May 2026 21:16:41 +0000 Message-ID: References: <20260423152604.171356-1-guinevere@redhat.com> <20260423152604.171356-2-guinevere@redhat.com> In-Reply-To: <20260423152604.171356-2-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_|BN9PR11MB5324:EE_ x-ms-office365-filtering-correlation-id: 010ff109-d3d2-4de1-4ab8-08deabb4c4df x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; ARA:13230040|1800799024|366016|10070799003|376014|38070700021|18096099006|17096099006|56012099003|18002099003|22082099003|3023799003; x-microsoft-antispam-message-info: BwmTBSFQxJWLz/5BGNN6zRsoZL9fF4KBlCXGbqWPSR9+cn+BSfAtwX43CgurTDnFUKOtU6XmhcfNjm2vbC2Y/+FulJnP12CzZzmTyb0c0HpMjEQ8eKgMpgmC33dftRaAdXoRB2T7Zzwv7srCFLwRCyTsH+u0M0wL1+v8/oGRQqGOxnpGRq1FJEw7UmU0wrZSsu6vGYSUTF7Tx+HGSpOkSYLoWmAVUOFxsy1FY0MvBZrCUoS8cGmobWHPsrOTdmYD2Brqjc1z+8Gr7rRJJlX0eGp35VzUebFAn1hb1G7IHqJm69+L73AfXptka2YO1IkfCMXvyRlachoCO8kdHkICvKIeSFjbnkfLUzOL6JPbarSRqZCQmZrGbs2YlSGQCPEdD0gVEMPbQ/5VDkH8j5RXXoqFJbQMsjj9oeRb2f52SQ6CLZlswLdKtr4vTUrxSKfEp/zC9/pG36UamCPQNNGheaF2Mx58pIL4X8qv/WIM2H9bPoXCuI/HpFOCjqIqskcRAVnwrRDMpmIazHVD0uaSDoU914Zqa6Icu/FKIEURHSPsB8YSjeFfHV756CwqA8QuoBL8Yv5HZHBA5dThj938nsV68/fAQ2jI7cNwZ6VR2l5REHO/9UWMmTHIs9l/4KSRjLNkwRvfbi7YLP5x9IXN8/xZ+9o1wQ5dJsznaMmAKW57/RAK3qoOG0zPVbxUKcann6QeyewGU43R44ywOWLABHkS3hMfWKolILty1FfaTYdLNDgJ/tK2cagO5VSj15nU 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)(1800799024)(366016)(10070799003)(376014)(38070700021)(18096099006)(17096099006)(56012099003)(18002099003)(22082099003)(3023799003); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 2 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?aGJDcFMxSklmZStHS0xiYnNZSU1ETkkwSThPMEpjN1BGQ2s5TEdUYVFHeHl5?= =?utf-8?B?SnBORDBNb1JQUjFzUmt0ZlRqd1pNUWE4bEpJa0tpcDdGL2UyTExqekZVVWNH?= =?utf-8?B?ZFJCeEJiSGdiRHJRWjd0SUlNcnVaUDRpN3FrYzVubFlQZ3EwNTZNdDZHUmF3?= =?utf-8?B?VDlIdHlOeUloTkdsblZRclYrUHl4eitxRzVxcjlzL0ZYLzFIVzZGN1RPVE9B?= =?utf-8?B?QlNCdytGeGVSNmd3WCsvdjJmSnhpVTVNczhKZ3BnMzJtejN6bGRqMFZPZFBl?= =?utf-8?B?NVZ0QytmNkpnNkNiTEJVTUhQU0grY1JlSzc5akdhSFFLeXBJMHB4QjR2UldM?= =?utf-8?B?V2p1VjU3YUN6dyt0eVlocFRDd3VMNXQvdmp2MmRlRU52UGtOVDJBYTBUMWJB?= =?utf-8?B?TFhuSElvenVwdXhtckRlUUxoQnQvcUV5eXpRdXJ3U3l3MjF1WGh1VUZ0N3pP?= =?utf-8?B?RTZHb29qZzB4aVhMb25tazFTeExoWTN4dGFaRjFWaFhVMVFKTlVCNG9OYy90?= =?utf-8?B?ZU9rVGN5NTJJckFZRk4vY1VCcXhvVkRuMVVURlVjTGN1dkdpbHhHdThHSHA2?= =?utf-8?B?SWpaOFFhZUtZS25EckEycTFlNEY2bU1hckQ0TEhhV1IrZGNkUXAvN3ZzZXhu?= =?utf-8?B?QXR1YXlvL0ZoWlQwQlg4V0kvWVBQd3FpUSs0akZGSy9CNFIwOWtYTUpJN0tD?= =?utf-8?B?WjFKMWxZL0pxZCtXY2NUSm1EdkNpNjBwdHBzYWtjZDhob0xOWEkzYlZDQWVX?= =?utf-8?B?TlUzSGNNQXBycWhwTFFkLzJ2a1VNQzJWK2x0VW1hZ3ZQUTVNRWpyc3BHQzRD?= =?utf-8?B?Nkx4UXZkU2FvdEhmb240UUg5dElSK09hWmVOQUNXUE5OVGI0Y2lqYVU0aFZ2?= =?utf-8?B?ZGlHMEpHcGJBRDRTQ1NyMWg0MTNocWQ2SG9FazNhZGlyOUxMVnV3SzJ5eVNj?= =?utf-8?B?b3c4VDdraUk2aGRRd1FicXEvbFJVc2ZrWFNTRjVSQUJwQ25Ed2x1NnBsaVl3?= =?utf-8?B?cnZrNk9YQjN1bzEyYUVZOTQ2YjVqVEVBaWl0dERNaEtrbE04Rzl0VmUxaUcr?= =?utf-8?B?WWg5d3JaK0ZMRENPWDJwRHVTNU15Q1JZd3lnSGVXSDVEcW5RUEM0NmF3NnFa?= =?utf-8?B?UTJGNjJxdEpKZjkycDBtQjhrSnFKT0xHNGh5VndMQlFESUw0MjNlZFNjZ0s0?= =?utf-8?B?bWhnWFltQ1FtYTQxRk5YbkhPMFIyUXljSzZDaTBxVEpkYXlYbWVtMjd2TEZS?= =?utf-8?B?V04ydGtZSG5hMVJMRXJoRTgxaERMNW9hUDVha0JndWpudk45WGt5aW1OVExi?= =?utf-8?B?K3BlczBxOTRLSnJ2TmlKSndqUE5GellISlBHVWZTbW5VYnlrbGJabm1ybU94?= =?utf-8?B?QldTUHVOR2Y5KzJ2aUkwd0FtRy9TVGpHL3VkZXRuK3g3TktHazBReUt1Zm0z?= =?utf-8?B?NDFmc2svTEU4T2NKUHYzalU3WkQvZTdZOEZSeEEwOWxCVmlvc3hwUE5uWVd1?= =?utf-8?B?dUNoVzcvR2QvNnlTK3YrQ2cvbTJnOVliR21qU3hQaVE5b1NhOXg3MENvVlNx?= =?utf-8?B?dUx2MnFOOWJVcUUxVW8yOU5CRVd2UGcvSGdIdlJEN0hqTTFFK1dwZUVBSlgv?= =?utf-8?B?MEZBVElkVUJLUG00eFVwWWxrVnpMYm5pdnlIRStKY3lRMkJGNTFqNXFIcU5B?= =?utf-8?B?VmR6S2UxL04yaHRLbUlLemtidXhWa1ZJMDlqeGhNRHRxOURLeUFFZ01EWDQ0?= =?utf-8?B?OHNRb0ZmQjRid3ZyZXFxcGIza0RTcUJyOVJadGdWaDNBa3owWHArN3BRZ0U0?= =?utf-8?B?a3RpMGUwZE12cUx3TlBoTXdZYzNKdGU0aEc0T29pVk9mdXI5TTFCV2ttTzBu?= =?utf-8?B?ZlFiaWZWa0tRTzBnTWk1bUtCeVdEdFZDVGFyODdwa0xZNFBadVRSRVl3eXZh?= =?utf-8?B?NjZWQU9TNDZFNGlHUGZqUnRtZ3IyY2ppZXBSenFGcFlObytmTXJ4eU5UTlBB?= =?utf-8?B?OStKaTFBcGkwQkJwaGoxZmVOZmw5U0ovaVZxWlpoZ0RCZ0c3dzdTL0hYTWV1?= =?utf-8?B?RlczZy9MNTQvejM5UG1Nb3dreWdZZU1KSUF0c0NrUnFIQVdYZHZKQStpbFYy?= =?utf-8?B?UzdhRHo4YUp1dU4wRlFGY1FoK0NXYTBuQlI2MGllK2x5M25RV2U5czM5SERx?= =?utf-8?B?TlRwMHRNejNYL0JROW9BMGl4U3QvT091dXVlUWdQVnBuT3YzVEd3UHN5YmxZ?= =?utf-8?B?VWp6WFpVNnk3YzRoZ1dZclBLVk1kRzJjS2NPQms3dFpLT2pZUGh2RDVFNXZ0?= =?utf-8?B?SEhad01lVWNVbk5BMmtpUFcxa3BlQU1pU3l0NHZnM3BtOEtQeWhYMllaTW9J?= =?utf-8?Q?UHKxGOnGJOiD15etnNkm9k2QphEzkx7+vu3+xx8lNKYuQ?= x-ms-exchange-antispam-messagedata-1: /DxYU3ZHUcLIVw== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 X-Exchange-RoutingPolicyChecked: vIENag55HcBJc+ekSS5P5BsB9SThEJfZnVito/pOq1vzVKtIRUwZ2OGLlnI/pVQQdQ4iQ8MmIL8Z4S6L8pfczsEfA9kW4LZYtSS67oySxp9w606nRs1JPGxu0g4yMYT/gXWTIh5yXJK/UrwWvZ5pgvJlT33dDprljYz68mlz8i4caylmqBn9EtKHtsP1tlU+pc/0n7BucI/XCbe5ytgdM9RDh3YibCyeq7HE4iJzZLY/SiNDoq6R/AZKEymtWD+y7aNG5vHaxr2kZ5IwvEZeIIaGpVm8rK3eecC7MQ54md4ck7Nif4yoe20McfDjAXoW+JdkTJKKTuqDrjtP9jK+Zw== X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: SN7PR11MB7638.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 010ff109-d3d2-4de1-4ab8-08deabb4c4df X-MS-Exchange-CrossTenant-originalarrivaltime: 06 May 2026 21:16:41.8429 (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: tX7BgqpJ8/iWFcNksO1OJFjQd+JdumIMUFUiBRJwgj70BjxkU4q30cdXvcNWHYeARe5cNg+1tH1PUrpuTqqy9GQ/EuBDZfSDeQmolWoBCGE= X-MS-Exchange-Transport-CrossTenantHeadersStamped: BN9PR11MB5324 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 SGkgR3VpbmV2ZXJlLA0KDQpUaGFuayB5b3UgZm9yIHdvcmtpbmcgb24gdGhpcy4NCkkgZm91bmQg dHdvIGl0ZW1zIHRoYXQgbWlnaHQgYmUgd29ydGggbG9va2luZyBhdCBpbiBtb3JlIGRldGFpbCwg YnV0DQphcGFydCBmcm9tIHRoYXQgaXTigJlzIG1vc3RseSBtaW5vciBuaXRzLiBQbGVhc2UgZmlu ZCBteSBmZWVkYmFjayBiZWxvdy4NCg0KSSBkb27igJl0IGhhdmUgbXVjaCBleHBlcmllbmNlIHdp dGggdGhlIHJlY29yZCBmZWF0dXJlLCBzbyBteSByZXZpZXcgaXMNCmEgYml0IHNsb3cgaGVyZS4g VG8gZnVsbHkgdW5kZXJzdGFuZCB0aGlzIHBhdGNoLCBJIHByb2JhYmx5IG5lZWQgbW9yZSB0aW1l LA0KYnV0IEkgd2FudGVkIHRvIHNoYXJlIHRoZSBjb21tZW50cyBJIGFscmVhZHkgaGF2ZS4gU29y cnkgZm9yIGNoaW1pbmcgaW4NCnNvIGxhdGUuIEnigJlsbCB0cnkgYWdhaW4gdG9tb3Jyb3csIG9y IGJ5IEZyaWRheSBhdCB0aGUgbGF0ZXN0Lg0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0t DQo+IEZyb206IEd1aW5ldmVyZSBMYXJzZW4gPGd1aW5ldmVyZUByZWRoYXQuY29tPg0KPiBTZW50 OiBEb25uZXJzdGFnLCAyMy4gQXByaWwgMjAyNiAxNzoyNg0KPiBUbzogZ2RiLXBhdGNoZXNAc291 cmNld2FyZS5vcmcNCj4gQ2M6IEd1aW5ldmVyZSBMYXJzZW4gPGd1aW5ldmVyZUByZWRoYXQuY29t Pg0KPiBTdWJqZWN0OiBbUEFUQ0ggdjIgMS82XSBnZGIvcmVjb3JkOiBSZWZhY3RvciByZWNvcmQg aGlzdG9yeQ0KPiANCj4gVGhpcyBpcyB0aGUgZmlyc3Qgc3RlcCBpbiBhIGxhcmdlIHJlZmFjdG9y IGluIGhvdyBHREIga2VlcHMgZXhlY3V0aW9uDQo+IGhpc3RvcnkuICBSYXRoZXIgdGhhbiB1c2lu ZyBhIGxpbmtlZCBsaXN0IHdoZXJlIG11bHRpcGxlIGVudHJpZXMgY2FuDQo+IGRlc2NyaWJlIGEg c2luZ2xlIGluc3RydWN0aW9uLCB0aGUgaGlzdG9yeSB3aWxsIG5vdyBiZSBzdG9yZWQgaW4gYW4N Cj4gc3RkOjpkZXF1ZSwgZWFjaCBpbnN0cnVjdGlvbiBiZWluZyBvbmUgZW50cnkgaW4gdGhlIGRl cXVlLg0KPiANCj4gVGhlIGNob2ljZSB3YXMgaW5pdGlhbGx5IHRvIHVzZSBhbiBzdGQ6OnZlY3Rv ciwgYnV0IGl0IHdvdWxkIGJlY29tZQ0KPiB1bndpZWxkeSBiZWNhdXNlIGl0IG5lZWRzIGFsbCB0 aGUgbWVtb3J5IHRvIGJlIGNvbnNlY3V0aXZlLCB3aGljaCBpcw0KPiBoYXJkIGZvciAyMDAgdGhv dXNhbmQgZW50cmllcy4gRGVxdWUgd2FzIHBpY2tlZCBiZWNhdXNlIGl0IHdhcyBhIG5pY2UNCj4g bWlkcG9pbnQgYmV0d2VlbiB2ZWN0b3IgKG1heGltdW0gY2FjaGUgY29oZXNpb24pIGFuZCBsaW5r ZWQgbGlzdA0KPiAobWF4aW11bSBlYXNlIG9mIGZpbmRpbmcgc3BhY2UgdG8gc3RvcmUgbW9yZSku DQo+IA0KPiBFYWNoIGluc3RydWN0aW9uIGluIG1lbW9yeSB3aWxsIGJlIG5vdyBvbmUgcmVjb3Jk X2Z1bGxfaW5zdHJ1Y3Rpb24NCj4gZW50cnksIHdoaWNoIGZvciB0aGlzIGNvbW1pdCBqdXN0IGNv bnRhaW5zIGEgdmVjdG9yIG9mDQo+IHJlY29yZF9mdWxsX2VudHJ5IGZvciB0aGUgZWZmZWN0cyBv ZiB0aGUgaW5zdHJ1Y3Rpb24sIGFuZCB0aGUgZGF0YSB0aGF0DQo+IHdhcyBzdG9yZWQgaW4gdGhl IHJlY29yZF9mdWxsX2VuZCBlbnRyeSAodGhhdCBpcywgdGhlIGluc3RydWN0aW9uIG51bWJlcg0K PiBhbmQgdGhlIHNpZ25hbCwgaWYgYW55KS4NCj4gDQo+IFRoaXMgY2hhbmdlIGludHJvZHVjZWQg YSBtaW5pbWFsIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50ICh3aGF0J3MNCj4gaW1wb3J0YW50IGlz IHRoYXQgaXQgaXNuJ3QgYSBkZWdyYWRhdGlvbikgYW5kIGEgIHJlZHVjdGlvbiBpbiB0aGUgdG90 YWwNCj4gbWVtb3J5IGZvb3RwcmludCBvZiByb3VnaGx5IDIwJSBpZiB0aGUgZW50aXJlIGhpc3Rv cnkgaXMgdXNlZC4NCj4gLS0tDQo+ICBnZGIvYWFyY2g2NC10ZGVwLmMgICAgIHwgICAgMiAtDQo+ ICBnZGIvYW1kNjQtbGludXgtdGRlcC5jIHwgICAgMyAtDQo+ICBnZGIvYXJtLXRkZXAuYyAgICAg ICAgIHwgICAgMiAtDQo+ICBnZGIvaTM4Ni1saW51eC10ZGVwLmMgIHwgICAgMyAtDQo+ICBnZGIv aTM4Ni10ZGVwLmMgICAgICAgIHwgICAgNCAtDQo+ICBnZGIvbG9vbmdhcmNoLXRkZXAuYyAgIHwg ICAgMiAtDQo+ICBnZGIvbW94aWUtdGRlcC5jICAgICAgIHwgICAgMiAtDQo+ICBnZGIvcHBjLWxp bnV4LXRkZXAuYyAgIHwgICAgMyAtDQo+ICBnZGIvcmVjb3JkLWZ1bGwuYyAgICAgIHwgMTE4MCAr KysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ICBnZGIvcmVjb3JkLWZ1 bGwuaCAgICAgIHwgICAgMSAtDQo+ICBnZGIvcmlzY3YtdGRlcC5jICAgICAgIHwgICAgMyAtDQo+ ICBnZGIvcnM2MDAwLXRkZXAuYyAgICAgIHwgICAgNCAtDQo+ICBnZGIvczM5MC1saW51eC10ZGVw LmMgIHwgICAgMyAtDQo+ICBnZGIvczM5MC10ZGVwLmMgICAgICAgIHwgICAgMiAtDQo+ICAxNCBm aWxlcyBjaGFuZ2VkLCA0NzYgaW5zZXJ0aW9ucygrKSwgNzM4IGRlbGV0aW9ucygtKQ0KPiANCj4g ZGlmZiAtLWdpdCBhL2dkYi9hYXJjaDY0LXRkZXAuYyBiL2dkYi9hYXJjaDY0LXRkZXAuYw0KPiBp bmRleCA0YmVmYWEyNzIwZC4uYTUzMjk5MmIxZDggMTAwNjQ0DQo+IC0tLSBhL2dkYi9hYXJjaDY0 LXRkZXAuYw0KPiArKysgYi9nZGIvYWFyY2g2NC10ZGVwLmMNCj4gQEAgLTYyMTAsOCArNjIxMCw2 IEBAIGFhcmNoNjRfcHJvY2Vzc19yZWNvcmQgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLA0KPiBz dHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLA0KPiAgCSAgICAgICBhYXJjaDY0X3JlY29yZC5hYXJj aDY0X21lbXNbcmVjX25vXS5sZW4pKQ0KPiAgCSAgICByZXQgPSAtMTsNCj4gDQo+IC0gICAgICBp ZiAocmVjb3JkX2Z1bGxfYXJjaF9saXN0X2FkZF9lbmQgKCkpDQo+IC0JcmV0ID0gLTE7DQo+ICAg ICAgfQ0KPiANCj4gICAgZGVhbGxvY2F0ZV9yZWdfbWVtICgmYWFyY2g2NF9yZWNvcmQpOw0KPiBk aWZmIC0tZ2l0IGEvZ2RiL2FtZDY0LWxpbnV4LXRkZXAuYyBiL2dkYi9hbWQ2NC1saW51eC10ZGVw LmMNCj4gaW5kZXggYTVhYzI2NjU0Y2YuLjliMjNkYjcyYmJlIDEwMDY0NA0KPiAtLS0gYS9nZGIv YW1kNjQtbGludXgtdGRlcC5jDQo+ICsrKyBiL2dkYi9hbWQ2NC1saW51eC10ZGVwLmMNCj4gQEAg LTE1OTEsOSArMTU5MSw2IEBAIGFtZDY0X2xpbnV4X3JlY29yZF9zaWduYWwgKHN0cnVjdCBnZGJh cmNoDQo+ICpnZGJhcmNoLA0KPiAgCQkJCSAgICAgKyBBTUQ2NF9MSU5VWF9mcmFtZV9zaXplKSkN Cj4gICAgICByZXR1cm4gLTE7DQo+IA0KPiAtICBpZiAocmVjb3JkX2Z1bGxfYXJjaF9saXN0X2Fk ZF9lbmQgKCkpDQo+IC0gICAgcmV0dXJuIC0xOw0KPiAtDQo+ICAgIHJldHVybiAwOw0KPiAgfQ0K PiANCj4gZGlmZiAtLWdpdCBhL2dkYi9hcm0tdGRlcC5jIGIvZ2RiL2FybS10ZGVwLmMNCj4gaW5k ZXggMDhjY2U5ZGJhZDguLjFjZTA5MjdmMjZiIDEwMDY0NA0KPiAtLS0gYS9nZGIvYXJtLXRkZXAu Yw0KPiArKysgYi9nZGIvYXJtLXRkZXAuYw0KPiBAQCAtMTQ5MTEsOCArMTQ5MTEsNiBAQCBhcm1f cHJvY2Vzc19yZWNvcmQgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLA0KPiBzdHJ1Y3QgcmVnY2Fj aGUgKnJlZ2NhY2hlLA0KPiAgCSAgICB9DQo+ICAJfQ0KPiANCj4gLSAgICAgIGlmIChyZWNvcmRf ZnVsbF9hcmNoX2xpc3RfYWRkX2VuZCAoKSkNCj4gLQlyZXQgPSAtMTsNCj4gICAgICB9DQo+IA0K PiANCj4gZGlmZiAtLWdpdCBhL2dkYi9pMzg2LWxpbnV4LXRkZXAuYyBiL2dkYi9pMzg2LWxpbnV4 LXRkZXAuYw0KPiBpbmRleCAyM2FlY2NhYzlmYy4uNGYzMzc2NmZjZGQgMTAwNjQ0DQo+IC0tLSBh L2dkYi9pMzg2LWxpbnV4LXRkZXAuYw0KPiArKysgYi9nZGIvaTM4Ni1saW51eC10ZGVwLmMNCj4g QEAgLTk0OSw5ICs5NDksNiBAQCBpMzg2X2xpbnV4X3JlY29yZF9zaWduYWwgKHN0cnVjdCBnZGJh cmNoICpnZGJhcmNoLA0KPiAgCQkJCSAgICAgSTM4Nl9MSU5VWF94c3RhdGUgKw0KPiBJMzg2X0xJ TlVYX2ZyYW1lX3NpemUpKQ0KPiAgICAgIHJldHVybiAtMTsNCj4gDQo+IC0gIGlmIChyZWNvcmRf ZnVsbF9hcmNoX2xpc3RfYWRkX2VuZCAoKSkNCj4gLSAgICByZXR1cm4gLTE7DQo+IC0NCj4gICAg cmV0dXJuIDA7DQo+ICB9DQo+ICANCj4gDQo+IGRpZmYgLS1naXQgYS9nZGIvaTM4Ni10ZGVwLmMg Yi9nZGIvaTM4Ni10ZGVwLmMNCj4gaW5kZXggZmE5MzViNWZjZGIuLmZlZTM2YjQ2YTczIDEwMDY0 NA0KPiAtLS0gYS9nZGIvaTM4Ni10ZGVwLmMNCj4gKysrIGIvZ2RiL2kzODYtdGRlcC5jDQo+IEBA IC01MjAxLDggKzUyMDEsNiBAQCBpMzg2X3JlY29yZF92ZXggKHN0cnVjdCBpMzg2X3JlY29yZF9z ICppciwgdWludDhfdA0KPiB2ZXhfdywgdWludDhfdCB2ZXhfciwNCj4gICAgICB9DQo+IA0KPiAg ICByZWNvcmRfZnVsbF9hcmNoX2xpc3RfYWRkX3JlZyAoaXItPnJlZ2NhY2hlLCBpci0NCj4gPnJl Z21hcFtYODZfUkVDT1JEX1JFSVBfUkVHTlVNXSk7DQo+IC0gIGlmIChyZWNvcmRfZnVsbF9hcmNo X2xpc3RfYWRkX2VuZCAoKSkNCj4gLSAgICByZXR1cm4gLTE7DQo+IA0KPiAgICByZXR1cm4gMDsN Cj4gIH0NCj4gQEAgLTgzNTksOCArODM1Nyw2IEBAIERvIHlvdSB3YW50IHRvIHN0b3AgdGhlIHBy b2dyYW0/IiksDQo+IA0KPiAgICAvKiBJbiB0aGUgZnV0dXJlLCBtYXliZSBzdGlsbCBuZWVkIHRv IGRlYWwgd2l0aCBuZWVkX2Rhc20uICAqLw0KPiAgICBJMzg2X1JFQ09SRF9GVUxMX0FSQ0hfTElT VF9BRERfUkVHIChYODZfUkVDT1JEX1JFSVBfUkVHTlVNKTsNCj4gLSAgaWYgKHJlY29yZF9mdWxs X2FyY2hfbGlzdF9hZGRfZW5kICgpKQ0KPiAtICAgIHJldHVybiAtMTsNCj4gDQo+ICAgIHJldHVy biAwOw0KPiANCj4gZGlmZiAtLWdpdCBhL2dkYi9sb29uZ2FyY2gtdGRlcC5jIGIvZ2RiL2xvb25n YXJjaC10ZGVwLmMNCj4gaW5kZXggMjI1YjFhYmI3MDMuLjVlYzZiMmE0OGQwIDEwMDY0NA0KPiAt LS0gYS9nZGIvbG9vbmdhcmNoLXRkZXAuYw0KPiArKysgYi9nZGIvbG9vbmdhcmNoLXRkZXAuYw0K PiBAQCAtMjc4OSw4ICsyNzg5LDYgQEAgbG9vbmdhcmNoX3Byb2Nlc3NfcmVjb3JkIChzdHJ1Y3Qg Z2RiYXJjaA0KPiAqZ2RiYXJjaCwgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwNCj4gIAkJCQkJ IExPT05HQVJDSF9QQ19SRUdOVU0pKQ0KPiAgCXJldHVybiAtMTsNCj4gDQo+IC0gICAgICBpZiAo cmVjb3JkX2Z1bGxfYXJjaF9saXN0X2FkZF9lbmQgKCkpDQo+IC0JcmV0dXJuIC0xOw0KPiAgICAg IH0NCj4gDQo+ICAgIHJldHVybiByZXQ7DQo+IGRpZmYgLS1naXQgYS9nZGIvbW94aWUtdGRlcC5j IGIvZ2RiL21veGllLXRkZXAuYw0KPiBpbmRleCBjOGEwNGQyMWY1OS4uMmY4ZjAxODY0ODggMTAw NjQ0DQo+IC0tLSBhL2dkYi9tb3hpZS10ZGVwLmMNCj4gKysrIGIvZ2RiL21veGllLXRkZXAuYw0K PiBAQCAtMTA0MCw4ICsxMDQwLDYgQEAgbW94aWVfcHJvY2Vzc19yZWNvcmQgKHN0cnVjdCBnZGJh cmNoICpnZGJhcmNoLA0KPiBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLA0KPiANCj4gICAgaWYg KHJlY29yZF9mdWxsX2FyY2hfbGlzdF9hZGRfcmVnIChyZWdjYWNoZSwgTU9YSUVfUENfUkVHTlVN KSkNCj4gICAgICByZXR1cm4gLTE7DQo+IC0gIGlmIChyZWNvcmRfZnVsbF9hcmNoX2xpc3RfYWRk X2VuZCAoKSkNCj4gLSAgICByZXR1cm4gLTE7DQo+ICAgIHJldHVybiAwOw0KPiAgfQ0KPiANCj4g ZGlmZiAtLWdpdCBhL2dkYi9wcGMtbGludXgtdGRlcC5jIGIvZ2RiL3BwYy1saW51eC10ZGVwLmMN Cj4gaW5kZXggMTk2OThlYWFjYmUuLmUyZjUzNTUxNzA5IDEwMDY0NA0KPiAtLS0gYS9nZGIvcHBj LWxpbnV4LXRkZXAuYw0KPiArKysgYi9nZGIvcHBjLWxpbnV4LXRkZXAuYw0KPiBAQCAtMTU2NSw5 ICsxNTY1LDYgQEAgcHBjX2xpbnV4X3JlY29yZF9zaWduYWwgKHN0cnVjdCBnZGJhcmNoICpnZGJh cmNoLA0KPiBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLA0KPiAgICBpZiAocmVjb3JkX2Z1bGxf YXJjaF9saXN0X2FkZF9tZW0gKHNwLCBTSUdOQUxfRlJBTUVTSVpFICsNCj4gc2l6ZW9mX3J0X3Np Z2ZyYW1lKSkNCj4gICAgICByZXR1cm4gLTE7DQo+IA0KPiAtICBpZiAocmVjb3JkX2Z1bGxfYXJj aF9saXN0X2FkZF9lbmQgKCkpDQo+IC0gICAgcmV0dXJuIC0xOw0KPiAtDQo+ICAgIHJldHVybiAw Ow0KPiAgfQ0KPiANCj4gZGlmZiAtLWdpdCBhL2dkYi9yZWNvcmQtZnVsbC5jIGIvZ2RiL3JlY29y ZC1mdWxsLmMNCj4gaW5kZXggNjlkMmMxMDBlNTcuLmFhYzY5Y2VlMTdlIDEwMDY0NA0KPiAtLS0g YS9nZGIvcmVjb3JkLWZ1bGwuYw0KPiArKysgYi9nZGIvcmVjb3JkLWZ1bGwuYw0KDQpJIHRoaW5r IHdlIHNob3VsZCBpbmNsdWRlIHZlY3Rvciwgb3B0aW9uYWwgYW5kIGRlcXVlIGRpcmVjdGx5Lg0K DQo+IEBAIC03MiwyMCArNzIsMTcgQEANCj4gICNkZWZpbmUgREVGQVVMVF9SRUNPUkRfRlVMTF9J TlNOX01BWF9OVU0JMjAwMDAwDQo+IA0KPiAgI2RlZmluZSBSRUNPUkRfRlVMTF9JU19SRVBMQVkg XA0KPiAtICAocmVjb3JkX2Z1bGxfbGlzdC0+bmV4dCB8fCA6OmV4ZWN1dGlvbl9kaXJlY3Rpb24g PT0gRVhFQ19SRVZFUlNFKQ0KPiArICAoIChyZWNvcmRfZnVsbF9uZXh0X2luc24gIT0gcmVjb3Jk X2Z1bGxfbGlzdC5zaXplICgpKSBcDQoNCk5pdDogTm8gd2hpdGVzcGFjZSBhZnRlciB0aGUgZmly c3QgYnJhY2tldDoNCj0+ICgocmVjb3JkX2Z1bGxfbmV4dF9pbnNuICE9IHJlY29yZF9mdWxsX2xp c3Quc2l6ZSAoKSkgXA0KDQo+ICsgICAgIHx8IDo6ZXhlY3V0aW9uX2RpcmVjdGlvbiA9PSBFWEVD X1JFVkVSU0UpDQo+IA0KPiAgI2RlZmluZSBSRUNPUkRfRlVMTF9GSUxFX01BR0lDCW5ldG9yZGVy MzIoMHgyMDA5MTAxNikNCj4gDQo+ICAvKiBUaGVzZSBhcmUgdGhlIGNvcmUgc3RydWN0cyBvZiB0 aGUgcHJvY2VzcyByZWNvcmQgZnVuY3Rpb25hbGl0eS4NCj4gDQo+ICAgICBBIHJlY29yZF9mdWxs X2VudHJ5IGlzIGEgcmVjb3JkIG9mIHRoZSB2YWx1ZSBjaGFuZ2Ugb2YgYSByZWdpc3Rlcg0KPiAt ICAgKCJyZWNvcmRfZnVsbF9yZWciKSBvciBhIHBhcnQgb2YgbWVtb3J5ICgicmVjb3JkX2Z1bGxf bWVtIikuICBBbmQgZWFjaA0KPiAtICAgaW5zdHJ1Y3Rpb24gbXVzdCBoYXZlIGEgc3RydWN0IHJl Y29yZF9mdWxsX2VudHJ5ICgicmVjb3JkX2Z1bGxfZW5kIikNCj4gLSAgIHRoYXQgaW5kaWNhdGVz IHRoYXQgdGhpcyBpcyB0aGUgbGFzdCBzdHJ1Y3QgcmVjb3JkX2Z1bGxfZW50cnkgb2YgdGhpcw0K PiAtICAgaW5zdHJ1Y3Rpb24uDQo+IC0NCj4gLSAgIEVhY2ggc3RydWN0IHJlY29yZF9mdWxsX2Vu dHJ5IGlzIGxpbmtlZCB0byAicmVjb3JkX2Z1bGxfbGlzdCIgYnkgInByZXYiDQo+IC0gICBhbmQg Im5leHQiIHBvaW50ZXJzLiAgKi8NCj4gKyAgICgicmVjb3JkX2Z1bGxfcmVnIikgb3IgYSBwYXJ0 IG9mIG1lbW9yeSAoInJlY29yZF9mdWxsX21lbSIpLg0KPiArICAgVGhlc2UgYXJlIHNhdmVkIG9u IHRoZSByZWNvcmRfZnVsbF9pbnN0cnVjdGlvbiBzdHJ1Y3QsIHdoaWNoIGFsc28NCj4gKyAgIGNv bnRhaW5zIHNvbWUgZXh0cmEgaW5mb3JtYXRpb24sIHN1Y2ggYXMgZGVsaXZlcmVkIHNpZ25hbHMu ICAqLw0KPiANCj4gIHN0cnVjdCByZWNvcmRfZnVsbF9tZW1fZW50cnkNCj4gIHsNCj4gQEAgLTEx Miw0NyArMTA5LDE0IEBAIHN0cnVjdCByZWNvcmRfZnVsbF9yZWdfZW50cnkNCj4gICAgfSB1Ow0K PiAgfTsNCj4gDQo+IC1zdHJ1Y3QgcmVjb3JkX2Z1bGxfZW5kX2VudHJ5DQo+IC17DQo+IC0gIGVu dW0gZ2RiX3NpZ25hbCBzaWd2YWw7DQo+IC0gIFVMT05HRVNUIGluc25fbnVtOw0KPiAtfTsNCj4g LQ0KPiAgZW51bSByZWNvcmRfZnVsbF90eXBlDQo+ICB7DQo+IC0gIHJlY29yZF9mdWxsX2VuZCA9 IDAsDQo+ICAgIHJlY29yZF9mdWxsX3JlZywNCj4gICAgcmVjb3JkX2Z1bGxfbWVtDQo+ICB9Ow0K PiANCj4gLS8qIFRoaXMgaXMgdGhlIGRhdGEgc3RydWN0dXJlIHRoYXQgbWFrZXMgdXAgdGhlIGV4 ZWN1dGlvbiBsb2cuDQo+IC0NCj4gLSAgIFRoZSBleGVjdXRpb24gbG9nIGNvbnNpc3RzIG9mIGEg c2luZ2xlIGxpbmtlZCBsaXN0IG9mIGVudHJpZXMNCj4gLSAgIG9mIHR5cGUgInN0cnVjdCByZWNv cmRfZnVsbF9lbnRyeSIuICBJdCBpcyBkb3VibHkgbGlua2VkIHNvIHRoYXQgaXQNCj4gLSAgIGNh biBiZSB0cmF2ZXJzZWQgaW4gZWl0aGVyIGRpcmVjdGlvbi4NCj4gLQ0KPiAtICAgVGhlIHN0YXJ0 IG9mIHRoZSBsaXN0IGlzIGFuY2hvcmVkIGJ5IGEgc3RydWN0IGNhbGxlZA0KPiAtICAgInJlY29y ZF9mdWxsX2ZpcnN0Ii4gIFRoZSBwb2ludGVyICJyZWNvcmRfZnVsbF9saXN0IiBlaXRoZXIgcG9p bnRzDQo+IC0gICB0byB0aGUgbGFzdCBlbnRyeSB0aGF0IHdhcyBhZGRlZCB0byB0aGUgbGlzdCAo aW4gcmVjb3JkIG1vZGUpLCBvciB0bw0KPiAtICAgdGhlIG5leHQgZW50cnkgaW4gdGhlIGxpc3Qg dGhhdCB3aWxsIGJlIGV4ZWN1dGVkIChpbiByZXBsYXkgbW9kZSkuDQo+IC0NCj4gLSAgIEVhY2gg bGlzdCBlbGVtZW50IChzdHJ1Y3QgcmVjb3JkX2Z1bGxfZW50cnkpLCBpbiBhZGRpdGlvbiB0byBu ZXh0DQo+IC0gICBhbmQgcHJldiBwb2ludGVycywgY29uc2lzdHMgb2YgYSB1bmlvbiBvZiB0aHJl ZSBlbnRyeSB0eXBlczogbWVtLA0KPiAtICAgcmVnLCBhbmQgZW5kLiAgQSBmaWVsZCBjYWxsZWQg InR5cGUiIGRldGVybWluZXMgd2hpY2ggZW50cnkgdHlwZSBpcw0KPiAtICAgcmVwcmVzZW50ZWQg YnkgYSBnaXZlbiBsaXN0IGVsZW1lbnQuDQo+IC0NCj4gLSAgIEVhY2ggaW5zdHJ1Y3Rpb24gdGhh dCBpcyBhZGRlZCB0byB0aGUgZXhlY3V0aW9uIGxvZyBpcyByZXByZXNlbnRlZA0KPiAtICAgYnkg YSB2YXJpYWJsZSBudW1iZXIgb2YgbGlzdCBlbGVtZW50cyAoJ2VudHJpZXMnKS4gIFRoZSBpbnN0 cnVjdGlvbg0KPiAtICAgd2lsbCBoYXZlIG9uZSAicmVnIiBlbnRyeSBmb3IgZWFjaCByZWdpc3Rl ciB0aGF0IGlzIGNoYW5nZWQgYnkNCj4gLSAgIGV4ZWN1dGluZyB0aGUgaW5zdHJ1Y3Rpb24gKGlu Y2x1ZGluZyB0aGUgUEMgaW4gZXZlcnkgY2FzZSkuICBJdA0KPiAtICAgd2lsbCBhbHNvIGhhdmUg b25lICJtZW0iIGVudHJ5IGZvciBlYWNoIG1lbW9yeSBjaGFuZ2UuICBGaW5hbGx5LA0KPiAtICAg ZWFjaCBpbnN0cnVjdGlvbiB3aWxsIGhhdmUgYW4gImVuZCIgZW50cnkgdGhhdCBzZXBhcmF0ZXMg aXQgZnJvbQ0KPiAtICAgdGhlIGNoYW5nZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBuZXh0IGluc3Ry dWN0aW9uLiAgKi8NCj4gLQ0KPiAgc3RydWN0IHJlY29yZF9mdWxsX2VudHJ5DQo+ICB7DQo+IC0g IHN0cnVjdCByZWNvcmRfZnVsbF9lbnRyeSAqcHJldjsNCj4gLSAgc3RydWN0IHJlY29yZF9mdWxs X2VudHJ5ICpuZXh0Ow0KPiAgICBlbnVtIHJlY29yZF9mdWxsX3R5cGUgdHlwZTsNCj4gICAgdW5p b24NCj4gICAgew0KPiBAQCAtMTYwLDExICsxMjQsMzEgQEAgc3RydWN0IHJlY29yZF9mdWxsX2Vu dHJ5DQo+ICAgICAgc3RydWN0IHJlY29yZF9mdWxsX3JlZ19lbnRyeSByZWc7DQo+ICAgICAgLyog bWVtICovDQo+ICAgICAgc3RydWN0IHJlY29yZF9mdWxsX21lbV9lbnRyeSBtZW07DQo+IC0gICAg LyogZW5kICovDQo+IC0gICAgc3RydWN0IHJlY29yZF9mdWxsX2VuZF9lbnRyeSBlbmQ7DQo+ICAg IH0gdTsNCj4gIH07DQo+IA0KPiArLyogVGhpcyBpcyB0aGUgbWFpbiBzdHJ1Y3R1cmUgdGhhdCBj b21wcmlzZXMgdGhlIGV4ZWN1dGlvbiBsb2cuDQo+ICsgICBFYWNoIGluc3RydWN0aW9uIGlzIGNv bXByaXNlZCBvZjoNCj4gKyAgICogVGhlIGluc3RydWN0aW9uIG51bWJlcjogSG93IG1hbnkgaW5z dHJ1Y3Rpb25zIHdlcmUgcmVjb3JkZWQgYmVmb3JlDQo+ICsgICAgIHRoaXMgb25lOw0KPiArICAg KiBzaWd2YWw6IFdoZXRoZXIgdGhlIGluZmVyaW9yIHJlY2VpdmVkIGEgc2lnbmFsIHdoaWxlIHRo ZSBmb2xsb3dpbmcNCj4gKyAgICAgaW5zdHJ1Y3Rpb24gd2FzIGJlaW5nIHJlY29yZGVkOw0KPiAr ICAgKiBlZmZlY3RzOiBBIGxpc3Qgb2YgcmVjb3JkX2Z1bGxfZW50cnkgc3RydWN0dXJlcywgZWFj aCBvZiB3aGljaA0KPiArICAgICBkZXNjcmliaW5nIG9uZSBlZmZlY3QgdGhhdCB0aGUgaW5zdHJ1 Y3Rpb24gaGFzIG9uIHRoZSBpbmZlcmlvci4NCj4gKw0KPiArICAgTm90ZSwgdGhlIHNpZ25hbCBp cyBzdG9yZWQgaW4gdGhlIHByZXZpb3VzIGluc3RydWN0aW9uIGZvciBoaXN0b3JpY2FsDQo+ICsg ICByZWFzb25zLiAgVGhpcyBpcyBob3cgaXQgd2FzIGZpcnN0IGltcGxlbWVudGVkLCBhbmQgbm8g b25lIGhhcyBnb3R0ZW4NCj4gKyAgIGFyb3VuZCB0byBjaGFuZ2luZyBpdCB5ZXQuICAqLw0KPiAr DQo+ICtzdHJ1Y3QgcmVjb3JkX2Z1bGxfaW5zdHJ1Y3Rpb24NCj4gK3sNCj4gKyAgLyogVGhpcyBt aWdodCBiZSBkaWZmZXJlbnQgZnJvbSB0aGUgaW5kZXggaWYNCj4gKyAgICAgd2UgaGFkIHRvIHJl bW92ZSB0aGUgZmlyc3QgZmV3IGluc3RydWN0aW9ucy4gICovDQo+ICsgIHVpbnQzMl90IGluc25f bnVtOw0KPiArICBzdGQ6Om9wdGlvbmFsPGdkYl9zaWduYWw+IHNpZ3ZhbDsNCj4gKyAgc3RkOjp2 ZWN0b3I8cmVjb3JkX2Z1bGxfZW50cnk+IGVmZmVjdHM7DQo+ICt9Ow0KPiArDQo+ICAvKiBJZiB0 cnVlLCBxdWVyeSBpZiBQUkVDIGNhbm5vdCByZWNvcmQgbWVtb3J5DQo+ICAgICBjaGFuZ2Ugb2Yg bmV4dCBpbnN0cnVjdGlvbi4gICovDQo+ICBib29sIHJlY29yZF9mdWxsX21lbW9yeV9xdWVyeSA9 IGZhbHNlOw0KPiBAQCAtMTgxLDI3ICsxNjUsMjUgQEAgc3RhdGljIGRldGFjaGVkX3JlZ2NhY2hl DQo+ICpyZWNvcmRfZnVsbF9jb3JlX3JlZ2J1ZiA9IE5VTEw7DQo+ICBzdGF0aWMgc3RkOjp2ZWN0 b3I8dGFyZ2V0X3NlY3Rpb24+IHJlY29yZF9mdWxsX2NvcmVfc2VjdGlvbnM7DQo+ICBzdGF0aWMg c3RydWN0IHJlY29yZF9mdWxsX2NvcmVfYnVmX2VudHJ5ICpyZWNvcmRfZnVsbF9jb3JlX2J1Zl9s aXN0ID0gTlVMTDsNCj4gDQo+IC0vKiBUaGUgZm9sbG93aW5nIHZhcmlhYmxlcyBhcmUgdXNlZCBm b3IgbWFuYWdpbmcgdGhlIGxpbmtlZCBsaXN0IHRoYXQNCj4gLSAgIHJlcHJlc2VudHMgdGhlIGV4 ZWN1dGlvbiBsb2cuDQo+ICsvKiBUaGUgZm9sbG93aW5nIHZhcmlhYmxlcyBhcmUgdXNlZCBmb3Ig bWFuYWdpbmcgdGhlIGhpc3Rvcnkgb2YgZXhlY3V0ZWQNCj4gKyAgIGluc3RydWN0aW9ucyBmcm9t IHRoZSBpbmZlcmlvci4NCj4gDQo+IC0gICByZWNvcmRfZnVsbF9maXJzdCBpcyB0aGUgYW5jaG9y IHRoYXQgaG9sZHMgZG93biB0aGUgYmVnaW5uaW5nIG9mDQo+IC0gICB0aGUgbGlzdC4NCj4gKyAg IHJlY29yZF9mdWxsX2xpc3QgY29udGFpbnMgYWxsIGluc3RydWN0aW9ucyB0aGF0IHdlcmUgZnVs bHkgZXhlY3V0ZWQgYW5kDQo+ICsgICBzYXZlZCB0byB0aGUgbG9nLCBzbyB0aGF0IHdlIGNhbiBy ZXBsYXkgdGhlIGV4ZWN1dGlvbi4NCj4gDQo+IC0gICByZWNvcmRfZnVsbF9saXN0IHNlcnZlcyB0 d28gZnVuY3Rpb25zOg0KPiAtICAgICAxKSBJbiByZWNvcmQgbW9kZSwgaXQgYW5jaG9ycyB0aGUg ZW5kIG9mIHRoZSBsaXN0Lg0KPiAtICAgICAyKSBJbiByZXBsYXkgbW9kZSwgaXQgdHJhdmVyc2Vz IHRoZSBsaXN0IGFuZCBwb2ludHMgdG8NCj4gLQl0aGUgbmV4dCBpbnN0cnVjdGlvbiB0aGF0IG11 c3QgYmUgZW11bGF0ZWQuDQo+ICsgICByZWNvcmRfZnVsbF9uZXh0X2luc24gYWx3YXlzIHBvaW50 cyB0byB0aGUgbmV4dCBpbnN0cnVjdGlvbiB0aGF0IHdvdWxkDQo+ICsgICBiZSBleGVjdXRlZCBp ZiB0aGUgaW5mZXJpb3IgZXhlY3V0ZXMgZm9yd2FyZC4gIEluIHRoZSBzcGVjaWFsIGNhc2Ugd2hl bg0KPiArICAgdGhlIGluZmVyaW9yIGlzIG5vdCByZXBsYXlpbmcsIHJlY29yZF9mdWxsX25leHRf aW5zbiBwb2ludHMgcGFzdCB0aGUNCj4gKyAgIGVuZCBvZiB0aGUgaGlzdG9yeS4NCj4gDQo+IC0g ICByZWNvcmRfZnVsbF9hcmNoX2xpc3RfaGVhZCBhbmQgcmVjb3JkX2Z1bGxfYXJjaF9saXN0X3Rh aWwgYXJlIHVzZWQNCj4gLSAgIHRvIG1hbmFnZSBhIHNlcGFyYXRlIGxpc3QsIHdoaWNoIGlzIHVz ZWQgdG8gYnVpbGQgdXAgdGhlIGNoYW5nZQ0KPiAtICAgZWxlbWVudHMgb2YgdGhlIGN1cnJlbnRs eSBleGVjdXRpbmcgaW5zdHJ1Y3Rpb24gZHVyaW5nIHJlY29yZCBtb2RlLg0KPiAtICAgV2hlbiB0 aGlzIGluc3RydWN0aW9uIGhhcyBiZWVuIGNvbXBsZXRlbHkgYW5ub3RhdGVkIGluIHRoZSAiYXJj aA0KPiAtICAgbGlzdCIsIGl0IHdpbGwgYmUgYXBwZW5kZWQgdG8gdGhlIG1haW4gZXhlY3V0aW9u IGxvZy4gICovDQo+ICsgICByZWNvcmRfZnVsbF9pbmNvbXBsZXRlX2luc3RydWN0aW9uIGhvbGRz IGEgcGFydGlhbCBpbnN0cnVjdGlvbiwgd2hpbGUNCj4gKyAgIHRoZSBsb3dlciB0YXJnZXQgaXMg ZGlzYXNzZW1ibGluZyB0aGUgaW5zdHJ1Y3Rpb24sIG9yIGFzIHBhcnRpYWwgeGZlcnMgYXJlDQo+ ICsgICBoYXBwZW5pbmcuICBJdCBpcyBtYW5pcHVsYXRlZCBieSB0aGUgImFyY2ggbGlzdCIgZnVu Y3Rpb25zIGZvciBoaXN0b3JpY2FsDQo+ICsgICByZWFzb25zLiAgKi8NCj4gDQo+IC1zdGF0aWMg c3RydWN0IHJlY29yZF9mdWxsX2VudHJ5IHJlY29yZF9mdWxsX2ZpcnN0Ow0KPiAtc3RhdGljIHN0 cnVjdCByZWNvcmRfZnVsbF9lbnRyeSAqcmVjb3JkX2Z1bGxfbGlzdCA9ICZyZWNvcmRfZnVsbF9m aXJzdDsNCj4gLXN0YXRpYyBzdHJ1Y3QgcmVjb3JkX2Z1bGxfZW50cnkgKnJlY29yZF9mdWxsX2Fy Y2hfbGlzdF9oZWFkID0gTlVMTDsNCj4gLXN0YXRpYyBzdHJ1Y3QgcmVjb3JkX2Z1bGxfZW50cnkg KnJlY29yZF9mdWxsX2FyY2hfbGlzdF90YWlsID0gTlVMTDsNCj4gK3N0YXRpYyBzdGQ6OmRlcXVl PHJlY29yZF9mdWxsX2luc3RydWN0aW9uPiByZWNvcmRfZnVsbF9saXN0Ow0KDQpHaXZlbiB0aGF0 IHRoaXMgaXMgbm90IGEgbGlzdCBhbnltb3JlIEkgd29uZGVyIGlmIHdlIHNob3VsZCBiZXR0ZXIg Y2FsbCB0aGlzIHN0aC4gbGlrZQ0KcmVjb3JkX2Z1bGxfaGlzdG9yeSBvciByZWNvcmRfZnVsbF9s b2cgb3IgZXZlbiBzaW1wbHkgcmVjb3JkZWRfaW5zdHJ1Y3Rpb25zPw0KDQo+ICtzdGF0aWMgcmVj b3JkX2Z1bGxfaW5zdHJ1Y3Rpb24gcmVjb3JkX2Z1bGxfaW5jb21wbGV0ZV9pbnN0cnVjdGlvbjsN Cj4gK2ludCByZWNvcmRfZnVsbF9uZXh0X2luc247DQo+IA0KPiAgLyogdHJ1ZSBhc2sgdXNlci4g ZmFsc2UgYXV0byBkZWxldGUgdGhlIGxhc3Qgc3RydWN0IHJlY29yZF9mdWxsX2VudHJ5LiAgKi8N Cj4gIHN0YXRpYyBib29sIHJlY29yZF9mdWxsX3N0b3BfYXRfbGltaXQgPSB0cnVlOw0KPiBAQCAt MzYxLDYgKzM0MywxNCBAQCByZWNvcmRfZnVsbF90YXJnZXQ6OmtpbGwgKCkNCj4gICAgcmVjb3Jk X2tpbGwgKHRoaXMpOw0KPiAgfQ0KPiANCj4gK3N0YXRpYyB2b2lkDQo+ICtyZWNvcmRfZnVsbF9y ZXNldF9pbmNvbXBsZXRlICgpDQo+ICt7DQo+ICsgIHJlY29yZF9mdWxsX2luY29tcGxldGVfaW5z dHJ1Y3Rpb24uZWZmZWN0cy5jbGVhciAoKTsNCj4gKyAgcmVjb3JkX2Z1bGxfaW5jb21wbGV0ZV9p bnN0cnVjdGlvbi5zaWd2YWwucmVzZXQgKCk7DQo+ICsgIHJlY29yZF9mdWxsX2luY29tcGxldGVf aW5zdHJ1Y3Rpb24uaW5zbl9udW0gPSAwOw0KPiArfQ0KPiArDQo+ICAvKiBTZWUgcmVjb3JkLWZ1 bGwuaC4gICovDQo+IA0KPiAgaW50DQo+IEBAIC0zOTAsMTU2ICszODAsMTIwIEBAIHN0YXRpYyBz dHJ1Y3QgY21kX2xpc3RfZWxlbWVudA0KPiAqc2hvd19yZWNvcmRfZnVsbF9jbWRsaXN0Ow0KPiAg LyogQ29tbWFuZCBsaXN0IGZvciAicmVjb3JkIGZ1bGwiLiAgKi8NCj4gIHN0YXRpYyBzdHJ1Y3Qg Y21kX2xpc3RfZWxlbWVudCAqcmVjb3JkX2Z1bGxfY21kbGlzdDsNCj4gDQo+IC1zdGF0aWMgdm9p ZCByZWNvcmRfZnVsbF9nb3RvX2luc24gKHN0cnVjdCByZWNvcmRfZnVsbF9lbnRyeSAqZW50cnks DQo+ICtzdGF0aWMgdm9pZCByZWNvcmRfZnVsbF9nb3RvX2luc24gKHNpemVfdCB0YXJnZXRfaW5z biwNCj4gIAkJCQkgICBlbnVtIGV4ZWNfZGlyZWN0aW9uX2tpbmQgZGlyKTsNCj4gDQo+IC0vKiBB bGxvYyBhbmQgZnJlZSBmdW5jdGlvbnMgZm9yIHJlY29yZF9mdWxsX3JlZywgcmVjb3JkX2Z1bGxf bWVtLCBhbmQNCj4gLSAgIHJlY29yZF9mdWxsX2VuZCBlbnRyaWVzLiAgKi8NCj4gKy8qIEluaXRp YWxpemF0aW9uIGFuZCBjbGVhbnVwIGZ1bmN0aW9ucyBmb3IgcmVjb3JkX2Z1bGxfcmVnIGFuZA0K PiArICAgcmVjb3JkX2Z1bGxfbWVtIGVudHJpZXMuICAqLw0KPiANCj4gLS8qIEFsbG9jIGEgcmVj b3JkX2Z1bGxfcmVnIHJlY29yZCBlbnRyeS4gICovDQo+ICsvKiBJbml0IGEgcmVjb3JkX2Z1bGxf cmVnIHJlY29yZCBlbnRyeS4gICovDQo+IA0KPiAtc3RhdGljIGlubGluZSBzdHJ1Y3QgcmVjb3Jk X2Z1bGxfZW50cnkgKg0KPiAtcmVjb3JkX2Z1bGxfcmVnX2FsbG9jIChzdHJ1Y3QgcmVnY2FjaGUg KnJlZ2NhY2hlLCBpbnQgcmVnbnVtKQ0KPiArc3RhdGljIGlubGluZSBzdHJ1Y3QgcmVjb3JkX2Z1 bGxfZW50cnkNCj4gK3JlY29yZF9mdWxsX3JlZ19pbml0IChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2Nh Y2hlLCBpbnQgcmVnbnVtKQ0KPiAgew0KPiAtICBzdHJ1Y3QgcmVjb3JkX2Z1bGxfZW50cnkgKnJl YzsNCj4gKyAgc3RydWN0IHJlY29yZF9mdWxsX2VudHJ5IHJlYzsNCj4gICAgc3RydWN0IGdkYmFy Y2ggKmdkYmFyY2ggPSByZWdjYWNoZS0+YXJjaCAoKTsNCj4gDQo+IC0gIHJlYyA9IFhDTkVXIChz dHJ1Y3QgcmVjb3JkX2Z1bGxfZW50cnkpOw0KPiAtICByZWMtPnR5cGUgPSByZWNvcmRfZnVsbF9y ZWc7DQo+IC0gIHJlYy0+dS5yZWcubnVtID0gcmVnbnVtOw0KPiAtICByZWMtPnUucmVnLmxlbiA9 IHJlZ2lzdGVyX3NpemUgKGdkYmFyY2gsIHJlZ251bSk7DQo+IC0gIGlmIChyZWMtPnUucmVnLmxl biA+IHNpemVvZiAocmVjLT51LnJlZy51LmJ1ZikpDQo+IC0gICAgcmVjLT51LnJlZy51LnB0ciA9 IChnZGJfYnl0ZSAqKSB4bWFsbG9jIChyZWMtPnUucmVnLmxlbik7DQo+ICsgIHJlYy50eXBlID0g cmVjb3JkX2Z1bGxfcmVnOw0KPiArICByZWMudS5yZWcubnVtID0gcmVnbnVtOw0KPiArICByZWMu dS5yZWcubGVuID0gcmVnaXN0ZXJfc2l6ZSAoZ2RiYXJjaCwgcmVnbnVtKTsNCj4gKyAgaWYgKHJl Yy51LnJlZy5sZW4gPiBzaXplb2YgKHJlYy51LnJlZy51LmJ1ZikpDQo+ICsgICAgcmVjLnUucmVn LnUucHRyID0gKGdkYl9ieXRlICopIHhtYWxsb2MgKHJlYy51LnJlZy5sZW4pOw0KPiANCj4gICAg cmV0dXJuIHJlYzsNCj4gIH0NCj4gDQo+IC0vKiBGcmVlIGEgcmVjb3JkX2Z1bGxfcmVnIHJlY29y ZCBlbnRyeS4gICovDQo+ICsvKiBDbGVhbnVwIGEgcmVjb3JkX2Z1bGxfcmVnIHJlY29yZCBlbnRy eS4gICovDQo+IA0KPiAgc3RhdGljIGlubGluZSB2b2lkDQo+IC1yZWNvcmRfZnVsbF9yZWdfcmVs ZWFzZSAoc3RydWN0IHJlY29yZF9mdWxsX2VudHJ5ICpyZWMpDQo+ICtyZWNvcmRfZnVsbF9yZWdf Y2xlYW51cCAoc3RydWN0IHJlY29yZF9mdWxsX2VudHJ5IHJlYykNCj4gIHsNCj4gLSAgZ2RiX2Fz c2VydCAocmVjLT50eXBlID09IHJlY29yZF9mdWxsX3JlZyk7DQo+IC0gIGlmIChyZWMtPnUucmVn LmxlbiA+IHNpemVvZiAocmVjLT51LnJlZy51LmJ1ZikpDQo+IC0gICAgeGZyZWUgKHJlYy0+dS5y ZWcudS5wdHIpOw0KPiAtICB4ZnJlZSAocmVjKTsNCj4gKyAgZ2RiX2Fzc2VydCAocmVjLnR5cGUg PT0gcmVjb3JkX2Z1bGxfcmVnKTsNCj4gKyAgaWYgKHJlYy51LnJlZy5sZW4gPiBzaXplb2YgKHJl Yy51LnJlZy51LmJ1ZikpDQo+ICsgICAgeGZyZWUgKHJlYy51LnJlZy51LnB0cik7DQo+ICB9DQo+ IA0KPiAtLyogQWxsb2MgYSByZWNvcmRfZnVsbF9tZW0gcmVjb3JkIGVudHJ5LiAgKi8NCj4gKy8q IEluaXQgYSByZWNvcmRfZnVsbF9tZW0gcmVjb3JkIGVudHJ5LiAgKi8NCj4gDQo+IC1zdGF0aWMg aW5saW5lIHN0cnVjdCByZWNvcmRfZnVsbF9lbnRyeSAqDQo+IC1yZWNvcmRfZnVsbF9tZW1fYWxs b2MgKENPUkVfQUREUiBhZGRyLCBpbnQgbGVuKQ0KPiArc3RhdGljIGlubGluZSBzdHJ1Y3QgcmVj b3JkX2Z1bGxfZW50cnkNCj4gK3JlY29yZF9mdWxsX21lbV9pbml0IChDT1JFX0FERFIgYWRkciwg aW50IGxlbikNCj4gIHsNCj4gLSAgc3RydWN0IHJlY29yZF9mdWxsX2VudHJ5ICpyZWM7DQo+ICsg IHN0cnVjdCByZWNvcmRfZnVsbF9lbnRyeSByZWM7DQo+IA0KPiAtICByZWMgPSBYQ05FVyAoc3Ry dWN0IHJlY29yZF9mdWxsX2VudHJ5KTsNCj4gLSAgcmVjLT50eXBlID0gcmVjb3JkX2Z1bGxfbWVt Ow0KPiAtICByZWMtPnUubWVtLmFkZHIgPSBhZGRyOw0KPiAtICByZWMtPnUubWVtLmxlbiA9IGxl bjsNCj4gLSAgaWYgKHJlYy0+dS5tZW0ubGVuID4gc2l6ZW9mIChyZWMtPnUubWVtLnUuYnVmKSkN Cj4gLSAgICByZWMtPnUubWVtLnUucHRyID0gKGdkYl9ieXRlICopIHhtYWxsb2MgKGxlbik7DQo+ ICsgIHJlYy50eXBlID0gcmVjb3JkX2Z1bGxfbWVtOw0KPiArICByZWMudS5tZW0uYWRkciA9IGFk ZHI7DQo+ICsgIHJlYy51Lm1lbS5sZW4gPSBsZW47DQo+ICsgIGlmIChyZWMudS5tZW0ubGVuID4g c2l6ZW9mIChyZWMudS5tZW0udS5idWYpKQ0KPiArICAgIHJlYy51Lm1lbS51LnB0ciA9IChnZGJf Ynl0ZSAqKSB4bWFsbG9jIChsZW4pOw0KPiArICByZWMudS5tZW0ubWVtX2VudHJ5X25vdF9hY2Nl c3NpYmxlID0gMDsNCj4gDQo+ICAgIHJldHVybiByZWM7DQo+ICB9DQo+IA0KPiAtLyogRnJlZSBh IHJlY29yZF9mdWxsX21lbSByZWNvcmQgZW50cnkuICAqLw0KPiArLyogQ2xlYW51cCBhIHJlY29y ZF9mdWxsX21lbSByZWNvcmQgZW50cnkuICAqLw0KPiANCj4gIHN0YXRpYyBpbmxpbmUgdm9pZA0K PiAtcmVjb3JkX2Z1bGxfbWVtX3JlbGVhc2UgKHN0cnVjdCByZWNvcmRfZnVsbF9lbnRyeSAqcmVj KQ0KPiAtew0KPiAtICBnZGJfYXNzZXJ0IChyZWMtPnR5cGUgPT0gcmVjb3JkX2Z1bGxfbWVtKTsN Cj4gLSAgaWYgKHJlYy0+dS5tZW0ubGVuID4gc2l6ZW9mIChyZWMtPnUubWVtLnUuYnVmKSkNCj4g LSAgICB4ZnJlZSAocmVjLT51Lm1lbS51LnB0cik7DQo+IC0gIHhmcmVlIChyZWMpOw0KPiAtfQ0K PiAtDQo+IC0vKiBBbGxvYyBhIHJlY29yZF9mdWxsX2VuZCByZWNvcmQgZW50cnkuICAqLw0KPiAt DQo+IC1zdGF0aWMgaW5saW5lIHN0cnVjdCByZWNvcmRfZnVsbF9lbnRyeSAqDQo+IC1yZWNvcmRf ZnVsbF9lbmRfYWxsb2MgKHZvaWQpDQo+ICtyZWNvcmRfZnVsbF9tZW1fY2xlYW51cCAoc3RydWN0 IHJlY29yZF9mdWxsX2VudHJ5IHJlYykNCj4gIHsNCj4gLSAgc3RydWN0IHJlY29yZF9mdWxsX2Vu dHJ5ICpyZWM7DQo+IC0NCj4gLSAgcmVjID0gWENORVcgKHN0cnVjdCByZWNvcmRfZnVsbF9lbnRy eSk7DQo+IC0gIHJlYy0+dHlwZSA9IHJlY29yZF9mdWxsX2VuZDsNCj4gLQ0KPiAtICByZXR1cm4g cmVjOw0KPiArICBnZGJfYXNzZXJ0IChyZWMudHlwZSA9PSByZWNvcmRfZnVsbF9tZW0pOw0KPiAr ICBpZiAocmVjLnUubWVtLmxlbiA+IHNpemVvZiAocmVjLnUubWVtLnUuYnVmKSkNCj4gKyAgICB4 ZnJlZSAocmVjLnUubWVtLnUucHRyKTsNCj4gIH0NCj4gDQo+IC0vKiBGcmVlIGEgcmVjb3JkX2Z1 bGxfZW5kIHJlY29yZCBlbnRyeS4gICovDQo+ICsvKiBGcmVlIG9uZSByZWNvcmQgZW50cnksIGFu eSB0eXBlLiAgKi8NCj4gDQo+ICBzdGF0aWMgaW5saW5lIHZvaWQNCj4gLXJlY29yZF9mdWxsX2Vu ZF9yZWxlYXNlIChzdHJ1Y3QgcmVjb3JkX2Z1bGxfZW50cnkgKnJlYykNCj4gLXsNCj4gLSAgeGZy ZWUgKHJlYyk7DQo+IC19DQo+IC0NCj4gLS8qIEZyZWUgb25lIHJlY29yZCBlbnRyeSwgYW55IHR5 cGUuDQo+IC0gICBSZXR1cm4gZW50cnktPnR5cGUsIGluIGNhc2UgY2FsbGVyIHdhbnRzIHRvIGtu b3cuICAqLw0KPiAtDQo+IC1zdGF0aWMgaW5saW5lIGVudW0gcmVjb3JkX2Z1bGxfdHlwZQ0KPiAt cmVjb3JkX2Z1bGxfZW50cnlfcmVsZWFzZSAoc3RydWN0IHJlY29yZF9mdWxsX2VudHJ5ICpyZWMp DQo+ICtyZWNvcmRfZnVsbF9lbnRyeV9jbGVhbnVwIChzdHJ1Y3QgcmVjb3JkX2Z1bGxfZW50cnkg cmVjKQ0KPiAgew0KPiAtICBlbnVtIHJlY29yZF9mdWxsX3R5cGUgdHlwZSA9IHJlYy0+dHlwZTsN Cj4gDQo+IC0gIHN3aXRjaCAodHlwZSkgew0KPiArICBzd2l0Y2ggKHJlYy50eXBlKSB7DQo+ICAg IGNhc2UgcmVjb3JkX2Z1bGxfcmVnOg0KPiAtICAgIHJlY29yZF9mdWxsX3JlZ19yZWxlYXNlIChy ZWMpOw0KPiArICAgIHJlY29yZF9mdWxsX3JlZ19jbGVhbnVwIChyZWMpOw0KPiAgICAgIGJyZWFr Ow0KPiAgICBjYXNlIHJlY29yZF9mdWxsX21lbToNCj4gLSAgICByZWNvcmRfZnVsbF9tZW1fcmVs ZWFzZSAocmVjKTsNCj4gLSAgICBicmVhazsNCj4gLSAgY2FzZSByZWNvcmRfZnVsbF9lbmQ6DQo+ IC0gICAgcmVjb3JkX2Z1bGxfZW5kX3JlbGVhc2UgKHJlYyk7DQo+ICsgICAgcmVjb3JkX2Z1bGxf bWVtX2NsZWFudXAgKHJlYyk7DQo+ICAgICAgYnJlYWs7DQo+ICAgIH0NCj4gLSAgcmV0dXJuIHR5 cGU7DQo+ICB9DQo+IA0KPiAtLyogRnJlZSBhbGwgcmVjb3JkIGVudHJpZXMgaW4gbGlzdCBwb2lu dGVkIHRvIGJ5IFJFQy4gICovDQo+IC0NCj4gIHN0YXRpYyB2b2lkDQo+IC1yZWNvcmRfZnVsbF9s aXN0X3JlbGVhc2UgKHN0cnVjdCByZWNvcmRfZnVsbF9lbnRyeSAqcmVjKQ0KPiArcmVjb3JkX2Z1 bGxfcmVzZXRfaGlzdG9yeSAoKQ0KPiAgew0KPiAtICBpZiAoIXJlYykNCj4gLSAgICByZXR1cm47 DQo+IC0NCj4gLSAgd2hpbGUgKHJlYy0+bmV4dCkNCj4gLSAgICByZWMgPSByZWMtPm5leHQ7DQo+ ICsgIHJlY29yZF9mdWxsX2luc25fbnVtID0gMDsNCj4gKyAgcmVjb3JkX2Z1bGxfaW5zbl9jb3Vu dCA9IDA7DQo+ICsgIHJlY29yZF9mdWxsX25leHRfaW5zbiA9IDA7DQo+IA0KPiAtICB3aGlsZSAo cmVjLT5wcmV2KQ0KPiArICBmb3IgKGF1dG8gJmluc24gOiByZWNvcmRfZnVsbF9saXN0KQ0KPiAg ICAgIHsNCj4gLSAgICAgIHJlYyA9IHJlYy0+cHJldjsNCj4gLSAgICAgIHJlY29yZF9mdWxsX2Vu dHJ5X3JlbGVhc2UgKHJlYy0+bmV4dCk7DQo+ICsgICAgICBmb3IgKGF1dG8gJmVudHJ5IDogaW5z bi5lZmZlY3RzKQ0KPiArCXJlY29yZF9mdWxsX2VudHJ5X2NsZWFudXAgKGVudHJ5KTsNCj4gICAg ICB9DQo+IA0KPiAtICBpZiAocmVjID09ICZyZWNvcmRfZnVsbF9maXJzdCkNCj4gLSAgICB7DQo+ IC0gICAgICByZWNvcmRfZnVsbF9pbnNuX251bSA9IDA7DQo+IC0gICAgICByZWNvcmRfZnVsbF9m aXJzdC5uZXh0ID0gTlVMTDsNCj4gLSAgICB9DQo+IC0gIGVsc2UNCj4gLSAgICByZWNvcmRfZnVs bF9lbnRyeV9yZWxlYXNlIChyZWMpOw0KPiArICByZWNvcmRfZnVsbF9saXN0LmNsZWFyICgpOw0K PiAgfQ0KPiANCj4gLS8qIEZyZWUgYWxsIHJlY29yZCBlbnRyaWVzIGZvcndhcmQgb2YgdGhlIGdp dmVuIGxpc3QgcG9zaXRpb24uICAqLw0KPiAtDQo+ICBzdGF0aWMgdm9pZA0KPiAtcmVjb3JkX2Z1 bGxfbGlzdF9yZWxlYXNlX2ZvbGxvd2luZyAoc3RydWN0IHJlY29yZF9mdWxsX2VudHJ5ICpyZWMp DQo+ICtyZWNvcmRfZnVsbF9saXN0X3JlbGVhc2VfZm9sbG93aW5nIChpbnQgaW5kZXgpDQo+ICB7 DQo+IC0gIHN0cnVjdCByZWNvcmRfZnVsbF9lbnRyeSAqdG1wID0gcmVjLT5uZXh0Ow0KPiAtDQo+ IC0gIHJlYy0+bmV4dCA9IE5VTEw7DQo+IC0gIHdoaWxlICh0bXApDQo+ICsgIGZvciAoaW50IGkg PSByZWNvcmRfZnVsbF9saXN0LnNpemUgKCkgLSAxOyBpID4gaW5kZXg7IGktLSkNCj4gICAgICB7 DQo+IC0gICAgICByZWMgPSB0bXAtPm5leHQ7DQo+IC0gICAgICBpZiAocmVjb3JkX2Z1bGxfZW50 cnlfcmVsZWFzZSAodG1wKSA9PSByZWNvcmRfZnVsbF9lbmQpDQo+IC0Jew0KPiAtCSAgcmVjb3Jk X2Z1bGxfaW5zbl9udW0tLTsNCj4gLQkgIHJlY29yZF9mdWxsX2luc25fY291bnQtLTsNCj4gLQl9 DQo+IC0gICAgICB0bXAgPSByZWM7DQo+ICsgICAgICBmb3IgKGF1dG8gJmVudHJ5IDogcmVjb3Jk X2Z1bGxfbGlzdFtpXS5lZmZlY3RzKQ0KPiArCXJlY29yZF9mdWxsX2VudHJ5X2NsZWFudXAgKGVu dHJ5KTsNCj4gKyAgICAgIHJlY29yZF9mdWxsX2xpc3QucG9wX2JhY2sgKCk7DQo+ICAgICAgfQ0K PiArICAvKiBTZXQgdGhlIG5leHQgaW5zdHJ1Y3Rpb24gdG8gYmUgcGFzdCB0aGUgZW5kIG9mIHRo ZSBsb2cgc28gd2UNCj4gKyAgICAgc3RhcnQgcmVjb3JkaW5nIGlmIHRoZSB1c2VyIG1vdmVzIGZv cndhcmQgYWdhaW4uICAqLw0KPiArICByZWNvcmRfZnVsbF9uZXh0X2luc24gPSBpbmRleDsNCj4g K30NCj4gKw0KPiArc3RhdGljIHZvaWQNCj4gK3JlY29yZF9mdWxsX3NhdmVfaW5zdHJ1Y3Rpb24g KCkNCj4gK3sNCj4gKyAgKytyZWNvcmRfZnVsbF9pbnNuX2NvdW50Ow0KPiArICByZWNvcmRfZnVs bF9pbmNvbXBsZXRlX2luc3RydWN0aW9uLmluc25fbnVtID0gcmVjb3JkX2Z1bGxfaW5zbl9jb3Vu dDsNCj4gKyAgcmVjb3JkX2Z1bGxfaW5jb21wbGV0ZV9pbnN0cnVjdGlvbi5lZmZlY3RzLnNocmlu a190b19maXQgKCk7DQo+ICsgIHJlY29yZF9mdWxsX2xpc3QucHVzaF9iYWNrIChyZWNvcmRfZnVs bF9pbmNvbXBsZXRlX2luc3RydWN0aW9uKTsNCj4gKyAgcmVjb3JkX2Z1bGxfbmV4dF9pbnNuKys7 DQo+ICB9DQo+IA0KPiAgLyogRGVsZXRlIHRoZSBmaXJzdCBpbnN0cnVjdGlvbiBmcm9tIHRoZSBi ZWdpbm5pbmcgb2YgdGhlIGxvZywgdG8gbWFrZQ0KPiBAQCAtNTUwLDUyICs1MDQsMjIgQEAgcmVj b3JkX2Z1bGxfbGlzdF9yZWxlYXNlX2ZvbGxvd2luZyAoc3RydWN0DQo+IHJlY29yZF9mdWxsX2Vu dHJ5ICpyZWMpDQo+ICBzdGF0aWMgdm9pZA0KPiAgcmVjb3JkX2Z1bGxfbGlzdF9yZWxlYXNlX2Zp cnN0ICh2b2lkKQ0KPiAgew0KPiAtICBzdHJ1Y3QgcmVjb3JkX2Z1bGxfZW50cnkgKnRtcDsNCj4g LQ0KPiAtICBpZiAoIXJlY29yZF9mdWxsX2ZpcnN0Lm5leHQpDQo+ICsgIGlmIChyZWNvcmRfZnVs bF9saXN0LmVtcHR5ICgpKQ0KPiAgICAgIHJldHVybjsNCj4gDQo+IC0gIC8qIExvb3AgdW50aWwg YSByZWNvcmRfZnVsbF9lbmQuICAqLw0KPiAtICB3aGlsZSAoMSkNCj4gLSAgICB7DQo+IC0gICAg ICAvKiBDdXQgcmVjb3JkX2Z1bGxfZmlyc3QubmV4dCBvdXQgb2YgdGhlIGxpbmtlZCBsaXN0LiAg Ki8NCj4gLSAgICAgIHRtcCA9IHJlY29yZF9mdWxsX2ZpcnN0Lm5leHQ7DQo+IC0gICAgICByZWNv cmRfZnVsbF9maXJzdC5uZXh0ID0gdG1wLT5uZXh0Ow0KPiAtICAgICAgdG1wLT5uZXh0LT5wcmV2 ID0gJnJlY29yZF9mdWxsX2ZpcnN0Ow0KPiAtDQo+IC0gICAgICAvKiB0bXAgaXMgbm93IGlzb2xh dGVkLCBhbmQgY2FuIGJlIGRlbGV0ZWQuICAqLw0KPiAtICAgICAgaWYgKHJlY29yZF9mdWxsX2Vu dHJ5X3JlbGVhc2UgKHRtcCkgPT0gcmVjb3JkX2Z1bGxfZW5kKQ0KPiAtCWJyZWFrOwkvKiBFbmQg bG9vcCBhdCBmaXJzdCByZWNvcmRfZnVsbF9lbmQuICAqLw0KPiArICBmb3IgKGF1dG8gJmVudHJ5 IDogcmVjb3JkX2Z1bGxfbGlzdFswXS5lZmZlY3RzKQ0KPiArICAgIHJlY29yZF9mdWxsX2VudHJ5 X2NsZWFudXAgKGVudHJ5KTsNCj4gDQo+IC0gICAgICBpZiAoIXJlY29yZF9mdWxsX2ZpcnN0Lm5l eHQpDQo+IC0Jew0KPiAtCSAgZ2RiX2Fzc2VydCAocmVjb3JkX2Z1bGxfaW5zbl9udW0gPT0gMSk7 DQo+IC0JICBicmVhazsJLyogRW5kIGxvb3Agd2hlbiBsaXN0IGlzIGVtcHR5LiAgKi8NCj4gLQl9 DQo+IC0gICAgfQ0KPiArICByZWNvcmRfZnVsbF9saXN0LnBvcF9mcm9udCAoKTsNCj4gKyAgLS1y ZWNvcmRfZnVsbF9uZXh0X2luc247DQo+ICB9DQo+IA0KPiAgLyogQWRkIGEgc3RydWN0IHJlY29y ZF9mdWxsX2VudHJ5IHRvIHJlY29yZF9mdWxsX2FyY2hfbGlzdC4gICovDQo+IA0KPiAgc3RhdGlj IHZvaWQNCj4gLXJlY29yZF9mdWxsX2FyY2hfbGlzdF9hZGQgKHN0cnVjdCByZWNvcmRfZnVsbF9l bnRyeSAqcmVjKQ0KPiArcmVjb3JkX2Z1bGxfYXJjaF9saXN0X2FkZCAoc3RydWN0IHJlY29yZF9m dWxsX2VudHJ5ICZyZWMpDQo+ICB7DQo+IC0gIGlmIChyZWNvcmRfZGVidWcgPiAxKQ0KPiAtICAg IGdkYl9wcmludGYgKGdkYl9zdGRsb2csDQo+IC0JCSJQcm9jZXNzIHJlY29yZDogcmVjb3JkX2Z1 bGxfYXJjaF9saXN0X2FkZCAlcy5cbiIsDQo+IC0JCWhvc3RfYWRkcmVzc190b19zdHJpbmcgKHJl YykpOw0KPiAtDQo+IC0gIGlmIChyZWNvcmRfZnVsbF9hcmNoX2xpc3RfdGFpbCkNCj4gLSAgICB7 DQo+IC0gICAgICByZWNvcmRfZnVsbF9hcmNoX2xpc3RfdGFpbC0+bmV4dCA9IHJlYzsNCj4gLSAg ICAgIHJlYy0+cHJldiA9IHJlY29yZF9mdWxsX2FyY2hfbGlzdF90YWlsOw0KPiAtICAgICAgcmVj b3JkX2Z1bGxfYXJjaF9saXN0X3RhaWwgPSByZWM7DQo+IC0gICAgfQ0KPiAtICBlbHNlDQo+IC0g ICAgew0KPiAtICAgICAgcmVjb3JkX2Z1bGxfYXJjaF9saXN0X2hlYWQgPSByZWM7DQo+IC0gICAg ICByZWNvcmRfZnVsbF9hcmNoX2xpc3RfdGFpbCA9IHJlYzsNCj4gLSAgICB9DQo+ICsgIHJlY29y ZF9mdWxsX2luY29tcGxldGVfaW5zdHJ1Y3Rpb24uZWZmZWN0cy5wdXNoX2JhY2sgKHJlYyk7DQo+ ICB9DQo+IA0KPiAgLyogUmV0dXJuIHRoZSB2YWx1ZSBzdG9yYWdlIGxvY2F0aW9uIG9mIGEgcmVj b3JkIGVudHJ5LiAgKi8NCj4gQEAgLTYxMyw3ICs1MzcsNiBAQCByZWNvcmRfZnVsbF9nZXRfbG9j IChzdHJ1Y3QgcmVjb3JkX2Z1bGxfZW50cnkgKnJlYykNCj4gICAgICAgIHJldHVybiByZWMtPnUu cmVnLnUucHRyOw0KPiAgICAgIGVsc2UNCj4gICAgICAgIHJldHVybiByZWMtPnUucmVnLnUuYnVm Ow0KPiAtICBjYXNlIHJlY29yZF9mdWxsX2VuZDoNCj4gICAgZGVmYXVsdDoNCj4gICAgICBnZGJf YXNzZXJ0X25vdF9yZWFjaGVkICgidW5leHBlY3RlZCByZWNvcmRfZnVsbF9lbnRyeSB0eXBlIik7 DQo+ICAgICAgcmV0dXJuIE5VTEw7DQo+IEBAIC02MjUsNyArNTQ4LDcgQEAgcmVjb3JkX2Z1bGxf Z2V0X2xvYyAoc3RydWN0IHJlY29yZF9mdWxsX2VudHJ5ICpyZWMpDQo+ICBpbnQNCj4gIHJlY29y ZF9mdWxsX2FyY2hfbGlzdF9hZGRfcmVnIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLCBpbnQg cmVnbnVtKQ0KPiAgew0KPiAtICBzdHJ1Y3QgcmVjb3JkX2Z1bGxfZW50cnkgKnJlYzsNCj4gKyAg c3RydWN0IHJlY29yZF9mdWxsX2VudHJ5IHJlYzsNCg0KSSB0aGluayB3ZSBjYW4gb21pdCB0aGUg c3RydWN0IGtleXdvcmQgaGVyZSAodGhlcmUgYXJlIHNvbWUgbW9yZSBvY2N1cnJlbmNlcyBpbiB0 aGlzIHBhdGNoKS4NCg0KPiAgICBpZiAocmVjb3JkX2RlYnVnID4gMSkNCj4gICAgICBnZGJfcHJp bnRmIChnZGJfc3RkbG9nLA0KPiBAQCAtNjMzLDkgKzU1Niw5IEBAIHJlY29yZF9mdWxsX2FyY2hf bGlzdF9hZGRfcmVnIChzdHJ1Y3QgcmVnY2FjaGUNCj4gKnJlZ2NhY2hlLCBpbnQgcmVnbnVtKQ0K PiAgCQkicmVjb3JkIGxpc3QuXG4iLA0KPiAgCQlyZWdudW0pOw0KPiANCj4gLSAgcmVjID0gcmVj b3JkX2Z1bGxfcmVnX2FsbG9jIChyZWdjYWNoZSwgcmVnbnVtKTsNCj4gKyAgcmVjID0gcmVjb3Jk X2Z1bGxfcmVnX2luaXQgKHJlZ2NhY2hlLCByZWdudW0pOw0KPiANCj4gLSAgcmVnY2FjaGUtPmNv b2tlZF9yZWFkIChyZWdudW0sIHJlY29yZF9mdWxsX2dldF9sb2MgKHJlYykpOw0KPiArICByZWdj YWNoZS0+Y29va2VkX3JlYWQgKHJlZ251bSwgcmVjb3JkX2Z1bGxfZ2V0X2xvYyAoJnJlYykpOw0K PiANCj4gICAgcmVjb3JkX2Z1bGxfYXJjaF9saXN0X2FkZCAocmVjKTsNCj4gDQo+IEBAIC02NDgs NyArNTcxLDcgQEAgcmVjb3JkX2Z1bGxfYXJjaF9saXN0X2FkZF9yZWcgKHN0cnVjdCByZWdjYWNo ZQ0KPiAqcmVnY2FjaGUsIGludCByZWdudW0pDQo+ICBpbnQNCj4gIHJlY29yZF9mdWxsX2FyY2hf bGlzdF9hZGRfbWVtIChDT1JFX0FERFIgYWRkciwgaW50IGxlbikNCj4gIHsNCj4gLSAgc3RydWN0 IHJlY29yZF9mdWxsX2VudHJ5ICpyZWM7DQo+ICsgIHN0cnVjdCByZWNvcmRfZnVsbF9lbnRyeSBy ZWM7DQo+IA0KPiAgICBpZiAocmVjb3JkX2RlYnVnID4gMSkNCj4gICAgICBnZGJfcHJpbnRmIChn ZGJfc3RkbG9nLA0KPiBAQCAtNjU5LDEyICs1ODIsMTIgQEAgcmVjb3JkX2Z1bGxfYXJjaF9saXN0 X2FkZF9tZW0gKENPUkVfQUREUiBhZGRyLA0KPiBpbnQgbGVuKQ0KPiAgICBpZiAoIWFkZHIpCS8q IEZJWE1FOiBXaHk/ICBTb21lIGFyY2ggbXVzdCBwZXJtaXQgaXQuLi4gICovDQo+ICAgICAgcmV0 dXJuIDA7DQo+IA0KPiAtICByZWMgPSByZWNvcmRfZnVsbF9tZW1fYWxsb2MgKGFkZHIsIGxlbik7 DQo+ICsgIHJlYyA9IHJlY29yZF9mdWxsX21lbV9pbml0IChhZGRyLCBsZW4pOw0KPiANCj4gICAg aWYgKHJlY29yZF9yZWFkX21lbW9yeSAoY3VycmVudF9pbmZlcmlvciAoKS0+YXJjaCAoKSwgYWRk ciwNCj4gLQkJCSAgcmVjb3JkX2Z1bGxfZ2V0X2xvYyAocmVjKSwgbGVuKSkNCj4gKwkJCSAgcmVj b3JkX2Z1bGxfZ2V0X2xvYyAoJnJlYyksIGxlbikpDQo+ICAgICAgew0KPiAtICAgICAgcmVjb3Jk X2Z1bGxfbWVtX3JlbGVhc2UgKHJlYyk7DQo+ICsgICAgICByZWNvcmRfZnVsbF9tZW1fY2xlYW51 cCAocmVjKTsNCj4gICAgICAgIHJldHVybiAtMTsNCj4gICAgICB9DQo+IA0KPiBAQCAtNjczLDI3 ICs1OTYsNiBAQCByZWNvcmRfZnVsbF9hcmNoX2xpc3RfYWRkX21lbSAoQ09SRV9BRERSIGFkZHIs DQo+IGludCBsZW4pDQo+ICAgIHJldHVybiAwOw0KPiAgfQ0KPiANCj4gLS8qIEFkZCBhIHJlY29y ZF9mdWxsX2VuZCB0eXBlIHN0cnVjdCByZWNvcmRfZnVsbF9lbnRyeSB0bw0KPiAtICAgcmVjb3Jk X2Z1bGxfYXJjaF9saXN0LiAgKi8NCj4gLQ0KPiAtaW50DQo+IC1yZWNvcmRfZnVsbF9hcmNoX2xp c3RfYWRkX2VuZCAodm9pZCkNCj4gLXsNCj4gLSAgc3RydWN0IHJlY29yZF9mdWxsX2VudHJ5ICpy ZWM7DQo+IC0NCj4gLSAgaWYgKHJlY29yZF9kZWJ1ZyA+IDEpDQo+IC0gICAgZ2RiX3ByaW50ZiAo Z2RiX3N0ZGxvZywNCj4gLQkJIlByb2Nlc3MgcmVjb3JkOiBhZGQgZW5kIHRvIGFyY2ggbGlzdC5c biIpOw0KPiAtDQo+IC0gIHJlYyA9IHJlY29yZF9mdWxsX2VuZF9hbGxvYyAoKTsNCj4gLSAgcmVj LT51LmVuZC5zaWd2YWwgPSBHREJfU0lHTkFMXzA7DQo+IC0gIHJlYy0+dS5lbmQuaW5zbl9udW0g PSArK3JlY29yZF9mdWxsX2luc25fY291bnQ7DQo+IC0NCj4gLSAgcmVjb3JkX2Z1bGxfYXJjaF9s aXN0X2FkZCAocmVjKTsNCj4gLQ0KPiAtICByZXR1cm4gMDsNCj4gLX0NCj4gLQ0KPiAgc3RhdGlj IHZvaWQNCj4gIHJlY29yZF9mdWxsX2NoZWNrX2luc25fbnVtICh2b2lkKQ0KPiAgew0KPiBAQCAt NzI1LDggKzYyNyw3IEBAIHJlY29yZF9mdWxsX21lc3NhZ2UgKHN0cnVjdCByZWdjYWNoZSAqcmVn Y2FjaGUsDQo+IGVudW0gZ2RiX3NpZ25hbCBzaWduYWwpDQo+IA0KPiAgICB0cnkNCj4gICAgICB7 DQo+IC0gICAgICByZWNvcmRfZnVsbF9hcmNoX2xpc3RfaGVhZCA9IE5VTEw7DQo+IC0gICAgICBy ZWNvcmRfZnVsbF9hcmNoX2xpc3RfdGFpbCA9IE5VTEw7DQo+ICsgICAgICByZWNvcmRfZnVsbF9y ZXNldF9pbmNvbXBsZXRlICgpOw0KPiANCj4gICAgICAgIC8qIENoZWNrIHJlY29yZF9mdWxsX2lu c25fbnVtLiAgKi8NCj4gICAgICAgIHJlY29yZF9mdWxsX2NoZWNrX2luc25fbnVtICgpOw0KPiBA QCAtNzQ2LDIwICs2NDcsMTYgQEAgcmVjb3JkX2Z1bGxfbWVzc2FnZSAoc3RydWN0IHJlZ2NhY2hl ICpyZWdjYWNoZSwNCj4gZW51bSBnZGJfc2lnbmFsIHNpZ25hbCkNCj4gIAkgdGhlIHVzZXIgc2F5 cyBzb21ldGhpbmcgZGlmZmVyZW50LCBsaWtlICJkZWxpdmVyIHRoaXMgc2lnbmFsIg0KPiAgCSBk dXJpbmcgdGhlIHJlcGxheSBtb2RlKS4NCj4gDQo+IC0JIFVzZXIgc2hvdWxkIHVuZGVyc3RhbmQg dGhhdCBub3RoaW5nIGhlIGRvZXMgZHVyaW5nIHRoZSByZXBsYXkNCj4gLQkgbW9kZSB3aWxsIGNo YW5nZSB0aGUgYmVoYXZpb3Igb2YgdGhlIGNoaWxkLiAgSWYgaGUgdHJpZXMsDQo+ICsJIFVzZXIg c2hvdWxkIHVuZGVyc3RhbmQgdGhhdCBub3RoaW5nIHRoZXkgZG8gZHVyaW5nIHRoZSByZXBsYXkN Cj4gKwkgbW9kZSB3aWxsIGNoYW5nZSB0aGUgYmVoYXZpb3Igb2YgdGhlIGNoaWxkLiAgSWYgdGhl eSB0cnksDQo+ICAJIHRoZW4gdGhhdCBpcyBhIHVzZXIgZXJyb3IuDQo+IA0KPiAgCSBCdXQgd2Ug c2hvdWxkIHN0aWxsIGRlbGl2ZXIgdGhlIHNpZ25hbCB0byBnZGIgZHVyaW5nIHRoZSByZXBsYXks DQo+ICAJIGlmIHdlIGRlbGl2ZXJlZCBpdCBkdXJpbmcgdGhlIHJlY29yZGluZy4gIFRoZXJlZm9y ZSB3ZSBzaG91bGQNCj4gIAkgcmVjb3JkIHRoZSBzaWduYWwgZHVyaW5nIHJlY29yZF9mdWxsX3dh aXQsIG5vdA0KPiAgCSByZWNvcmRfZnVsbF9yZXN1bWUuICAqLw0KPiAtICAgICAgaWYgKHJlY29y ZF9mdWxsX2xpc3QgIT0gJnJlY29yZF9mdWxsX2ZpcnN0KSAgLyogRklYTUUgYmV0dGVyIHdheQ0K PiAtCQkJCQkJICAgICAgdG8gY2hlY2sgKi8NCj4gLQl7DQo+IC0JICBnZGJfYXNzZXJ0IChyZWNv cmRfZnVsbF9saXN0LT50eXBlID09IHJlY29yZF9mdWxsX2VuZCk7DQo+IC0JICByZWNvcmRfZnVs bF9saXN0LT51LmVuZC5zaWd2YWwgPSBzaWduYWw7DQo+IC0JfQ0KPiArICAgICAgaWYgKHNpZ25h bCAhPSBHREJfU0lHTkFMXzApDQo+ICsJcmVjb3JkX2Z1bGxfbGlzdFtyZWNvcmRfZnVsbF9uZXh0 X2luc24gLSAxXS5zaWd2YWwgPSBzaWduYWw7DQo+IA0KPiAgICAgICAgaWYgKHNpZ25hbCA9PSBH REJfU0lHTkFMXzANCj4gIAkgIHx8ICFnZGJhcmNoX3Byb2Nlc3NfcmVjb3JkX3NpZ25hbF9wIChn ZGJhcmNoKSkNCj4gQEAgLTc3OCwxMyArNjc1LDExIEBAIHJlY29yZF9mdWxsX21lc3NhZ2UgKHN0 cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsDQo+IGVudW0gZ2RiX3NpZ25hbCBzaWduYWwpDQo+ICAg ICAgfQ0KPiAgICBjYXRjaCAoY29uc3QgZ2RiX2V4Y2VwdGlvbiAmZXgpDQo+ICAgICAgew0KPiAt ICAgICAgcmVjb3JkX2Z1bGxfbGlzdF9yZWxlYXNlIChyZWNvcmRfZnVsbF9hcmNoX2xpc3RfdGFp bCk7DQo+ICsgICAgICByZWNvcmRfZnVsbF9yZXNldF9pbmNvbXBsZXRlICgpOw0KPiAgICAgICAg dGhyb3c7DQo+ICAgICAgfQ0KPiANCj4gLSAgcmVjb3JkX2Z1bGxfbGlzdC0+bmV4dCA9IHJlY29y ZF9mdWxsX2FyY2hfbGlzdF9oZWFkOw0KPiAtICByZWNvcmRfZnVsbF9hcmNoX2xpc3RfaGVhZC0+ cHJldiA9IHJlY29yZF9mdWxsX2xpc3Q7DQo+IC0gIHJlY29yZF9mdWxsX2xpc3QgPSByZWNvcmRf ZnVsbF9hcmNoX2xpc3RfdGFpbDsNCj4gKyAgcmVjb3JkX2Z1bGxfc2F2ZV9pbnN0cnVjdGlvbiAo KTsNCj4gDQo+ICAgIGlmIChyZWNvcmRfZnVsbF9pbnNuX251bSA9PSByZWNvcmRfZnVsbF9pbnNu X21heF9udW0pDQo+ICAgICAgcmVjb3JkX2Z1bGxfbGlzdF9yZWxlYXNlX2ZpcnN0ICgpOw0KPiBA QCAtODI5LDkgKzcyNCw5IEBAIHN0YXRpYyBlbnVtIHRhcmdldF9zdG9wX3JlYXNvbg0KPiByZWNv cmRfZnVsbF9zdG9wX3JlYXNvbg0KPiAgICAgZW50cmllcyBhbmQgbWVtb3J5IGVudHJpZXMsIGZv bGxvd2VkIGJ5IGFuICdlbmQnIGVudHJ5LiAgKi8NCj4gDQo+ICBzdGF0aWMgaW5saW5lIHZvaWQN Cj4gLXJlY29yZF9mdWxsX2V4ZWNfaW5zbiAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwNCj4g LQkJICAgICAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLA0KPiAtCQkgICAgICAgc3RydWN0IHJl Y29yZF9mdWxsX2VudHJ5ICplbnRyeSkNCj4gK3JlY29yZF9mdWxsX2V4ZWNfZW50cnkgKHN0cnVj dCByZWdjYWNoZSAqcmVnY2FjaGUsDQo+ICsJCQlzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwNCj4g KwkJCXN0cnVjdCByZWNvcmRfZnVsbF9lbnRyeSAqZW50cnkpDQoNCk5pdDogb21pdCBzdHJ1Y3Qg a2V5d29yZHMNCkFuZCB0aGVyZSBhcmUgc29tZSBtb3JlIHBsYWNlcyBpbiB0aGlzIHNlcmllcy9w YXRjaCwgYnV0IEkgd2lsbCBzdG9wIGNvbW1lbnRpbmcNCm5vdyBvbiBhbGwgb2YgdGhlbS4NCg0K PiAgew0KPiAgICBzd2l0Y2ggKGVudHJ5LT50eXBlKQ0KPiAgICAgIHsNCj4gQEAgLTkwOSw2ICs4 MDQsMTUgQEAgcmVjb3JkX2Z1bGxfZXhlY19pbnNuIChzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hl LA0KPiAgICAgIH0NCj4gIH0NCj4gDQo+ICtzdGF0aWMgaW5saW5lIHZvaWQNCj4gK3JlY29yZF9m dWxsX2V4ZWNfaW5zbiAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwNCj4gKwkJICAgICAgIHN0 cnVjdCBnZGJhcmNoICpnZGJhcmNoLA0KPiArCQkgICAgICAgcmVjb3JkX2Z1bGxfaW5zdHJ1Y3Rp b24gJmluc24pDQo+ICt7DQo+ICsgIGZvciAoYXV0byAmZW50cnkgOiBpbnNuLmVmZmVjdHMpDQo+ ICsgICAgcmVjb3JkX2Z1bGxfZXhlY19lbnRyeSAocmVnY2FjaGUsIGdkYmFyY2gsICZlbnRyeSk7 DQo+ICt9DQo+ICsNCj4gIHN0YXRpYyB2b2lkIHJlY29yZF9mdWxsX3Jlc3RvcmUgKHN0cnVjdCBi ZmQgJmNiZmQpOw0KPiANCj4gIC8qIEFzeW5jaHJvbm91cyBzaWduYWwgaGFuZGxlIHJlZ2lzdGVy ZWQgYXMgZXZlbnQgbG9vcCBzb3VyY2UgZm9yIHdoZW4NCj4gQEAgLTk4MywxMCArODg3LDcgQEAg cmVjb3JkX2Z1bGxfb3BlbiAoY29uc3QgY2hhciAqYXJncywgaW50IGZyb21fdHR5KQ0KPiAgICBy ZWNvcmRfcHJlb3BlbiAoKTsNCj4gDQo+ICAgIC8qIFJlc2V0ICovDQo+IC0gIHJlY29yZF9mdWxs X2luc25fbnVtID0gMDsNCj4gLSAgcmVjb3JkX2Z1bGxfaW5zbl9jb3VudCA9IDA7DQo+IC0gIHJl Y29yZF9mdWxsX2xpc3QgPSAmcmVjb3JkX2Z1bGxfZmlyc3Q7DQo+IC0gIHJlY29yZF9mdWxsX2xp c3QtPm5leHQgPSBOVUxMOw0KPiArICByZWNvcmRfZnVsbF9yZXNldF9oaXN0b3J5ICgpOw0KPiAN Cj4gICAgYmZkICpjYmZkID0gZ2V0X2luZmVyaW9yX2NvcmVfYmZkIChjdXJyZW50X2luZmVyaW9y ICgpKTsNCj4gICAgaWYgKGNiZmQgIT0gbnVsbHB0cikNCj4gQEAgLTEwMTQsNyArOTE1LDcgQEAg cmVjb3JkX2Z1bGxfYmFzZV90YXJnZXQ6OmNsb3NlICgpDQo+ICAgIGlmIChyZWNvcmRfZGVidWcp DQo+ICAgICAgZ2RiX3ByaW50ZiAoZ2RiX3N0ZGxvZywgIlByb2Nlc3MgcmVjb3JkOiByZWNvcmRf ZnVsbF9jbG9zZVxuIik7DQo+IA0KPiAtICByZWNvcmRfZnVsbF9saXN0X3JlbGVhc2UgKHJlY29y ZF9mdWxsX2xpc3QpOw0KPiArICByZWNvcmRfZnVsbF9yZXNldF9oaXN0b3J5ICgpOw0KPiANCj4g ICAgLyogUmVsZWFzZSByZWNvcmRfZnVsbF9jb3JlX3JlZ2J1Zi4gICovDQo+ICAgIGlmIChyZWNv cmRfZnVsbF9jb3JlX3JlZ2J1ZikNCj4gQEAgLTEzMTMsNyArMTIxNCw2IEBAIHJlY29yZF9mdWxs X3dhaXRfMSAoc3RydWN0IHRhcmdldF9vcHMgKm9wcywNCj4gICAgICAgIHN0cnVjdCBnZGJhcmNo ICpnZGJhcmNoID0gcmVnY2FjaGUtPmFyY2ggKCk7DQo+ICAgICAgICBjb25zdCBhZGRyZXNzX3Nw YWNlICphc3BhY2UgPSBjdXJyZW50X2luZmVyaW9yICgpLT5hc3BhY2UuZ2V0ICgpOw0KPiAgICAg ICAgaW50IGNvbnRpbnVlX2ZsYWcgPSAxOw0KPiAtICAgICAgaW50IGZpcnN0X3JlY29yZF9mdWxs X2VuZCA9IDE7DQo+IA0KPiAgICAgICAgdHJ5DQo+ICAJew0KPiBAQCAtMTMyMiw3ICsxMjIyLDYg QEAgcmVjb3JkX2Z1bGxfd2FpdF8xIChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzLA0KPiAgCSAgcmVj b3JkX2Z1bGxfc3RvcF9yZWFzb24gPSBUQVJHRVRfU1RPUFBFRF9CWV9OT19SRUFTT047DQo+ICAJ ICBzdGF0dXMtPnNldF9zdG9wcGVkIChHREJfU0lHTkFMXzApOw0KPiANCj4gLQkgIC8qIENoZWNr IGJyZWFrcG9pbnQgd2hlbiBmb3J3YXJkIGV4ZWN1dGUuICAqLw0KPiAgCSAgaWYgKGV4ZWN1dGlv bl9kaXJlY3Rpb24gPT0gRVhFQ19GT1JXQVJEKQ0KPiAgCSAgICB7DQo+ICAJICAgICAgdG1wX3Bj ID0gcmVnY2FjaGVfcmVhZF9wYyAocmVnY2FjaGUpOw0KPiBAQCAtMTMzMCw4ICsxMjI5LDcgQEAg cmVjb3JkX2Z1bGxfd2FpdF8xIChzdHJ1Y3QgdGFyZ2V0X29wcyAqb3BzLA0KPiANCj4gJnJlY29y ZF9mdWxsX3N0b3BfcmVhc29uKSkNCj4gIAkJew0KPiAgCQkgIGlmIChyZWNvcmRfZGVidWcpDQo+ IC0JCSAgICBnZGJfcHJpbnRmIChnZGJfc3RkbG9nLA0KPiAtCQkJCSJQcm9jZXNzIHJlY29yZDog YnJlYWsgYXQgJXMuXG4iLA0KPiArCQkgICAgZ2RiX3ByaW50ZiAoZ2RiX3N0ZGxvZywgIlByb2Nl c3MgcmVjb3JkOiBicmVhayBhdCAlcy5cbiIsDQo+ICAJCQkJcGFkZHJlc3MgKGdkYmFyY2gsIHRt cF9wYykpOw0KPiAgCQkgIGdvdG8gcmVwbGF5X291dDsNCj4gIAkJfQ0KPiBAQCAtMTM0NCwxMCAr MTI0MiwxMCBAQCByZWNvcmRfZnVsbF93YWl0XzEgKHN0cnVjdCB0YXJnZXRfb3BzICpvcHMsDQo+ ICAJICAgICB0aGUgc2lnbmFsLiAgKi8NCj4gIAkgIHRhcmdldF90ZXJtaW5hbDo6b3VycyAoKTsN Cj4gDQo+IC0JICAvKiBJbiBFWEVDX0ZPUldBUkQgbW9kZSwgcmVjb3JkX2Z1bGxfbGlzdCBwb2lu dHMgdG8gdGhlIHRhaWwgb2YgcHJldg0KPiAtCSAgICAgaW5zdHJ1Y3Rpb24uICAqLw0KPiAtCSAg aWYgKGV4ZWN1dGlvbl9kaXJlY3Rpb24gPT0gRVhFQ19GT1JXQVJEICYmIHJlY29yZF9mdWxsX2xp c3QtPm5leHQpDQo+IC0JICAgIHJlY29yZF9mdWxsX2xpc3QgPSByZWNvcmRfZnVsbF9saXN0LT5u ZXh0Ow0KPiArCSAgLyogSW4gRVhFQ19GT1JXQVJEIG1vZGUsIHJlY29yZF9mdWxsX25leHRfaW5z biBpcyB0aGUgbmV4dA0KPiArCSAgICAgaW5zdHJ1Y3Rpb24gdG8gYmUgZXhlY3V0ZWQuICAqLw0K PiArCSAgaWYgKGV4ZWN1dGlvbl9kaXJlY3Rpb24gPT0gRVhFQ19SRVZFUlNFKQ0KPiArCSAgICBy ZWNvcmRfZnVsbF9uZXh0X2luc24tLTsNCj4gDQo+ICAJICAvKiBMb29wIG92ZXIgdGhlIHJlY29y ZF9mdWxsX2xpc3QsIGxvb2tpbmcgZm9yIHRoZSBuZXh0IHBsYWNlIHRvDQo+ICAJICAgICBzdG9w LiAgKi8NCj4gQEAgLTEzNTUsMTA4ICsxMjUzLDkyIEBAIHJlY29yZF9mdWxsX3dhaXRfMSAoc3Ry dWN0IHRhcmdldF9vcHMgKm9wcywNCj4gIAkgICAgew0KPiAgCSAgICAgIC8qIENoZWNrIGZvciBi ZWdpbm5pbmcgYW5kIGVuZCBvZiBsb2cuICAqLw0KPiAgCSAgICAgIGlmIChleGVjdXRpb25fZGly ZWN0aW9uID09IEVYRUNfUkVWRVJTRQ0KPiAtCQkgICYmIHJlY29yZF9mdWxsX2xpc3QgPT0gJnJl Y29yZF9mdWxsX2ZpcnN0KQ0KPiArCQkgICYmIHJlY29yZF9mdWxsX25leHRfaW5zbiA8IDApDQo+ ICAJCXsNCj4gIAkJICAvKiBIaXQgYmVnaW5uaW5nIG9mIHJlY29yZCBsb2cgaW4gcmV2ZXJzZS4g ICovDQo+ICAJCSAgc3RhdHVzLT5zZXRfbm9faGlzdG9yeSAoKTsNCj4gKwkJICByZWNvcmRfZnVs bF9uZXh0X2luc24gPSAwOw0KPiAgCQkgIGJyZWFrOw0KPiAgCQl9DQo+ICAJICAgICAgaWYgKGV4 ZWN1dGlvbl9kaXJlY3Rpb24gIT0gRVhFQ19SRVZFUlNFDQo+IC0JCSAgJiYgIXJlY29yZF9mdWxs X2xpc3QtPm5leHQpDQo+ICsJCSAgJiYgcmVjb3JkX2Z1bGxfbmV4dF9pbnNuID09IHJlY29yZF9m dWxsX2xpc3Quc2l6ZSAoKSkNCj4gIAkJew0KPiAgCQkgIC8qIEhpdCBlbmQgb2YgcmVjb3JkIGxv ZyBnb2luZyBmb3J3YXJkLiAgKi8NCj4gIAkJICBzdGF0dXMtPnNldF9ub19oaXN0b3J5ICgpOw0K PiAgCQkgIGJyZWFrOw0KPiAgCQl9DQo+IA0KPiAtCSAgICAgIHJlY29yZF9mdWxsX2V4ZWNfaW5z biAocmVnY2FjaGUsIGdkYmFyY2gsIHJlY29yZF9mdWxsX2xpc3QpOw0KPiArCSAgICAgIHJlY29y ZF9mdWxsX2V4ZWNfaW5zbg0KPiArCQkocmVnY2FjaGUsIGdkYmFyY2gsDQo+ICsJCSByZWNvcmRf ZnVsbF9saXN0W3JlY29yZF9mdWxsX25leHRfaW5zbl0pOw0KPiANCj4gLQkgICAgICBpZiAocmVj b3JkX2Z1bGxfbGlzdC0+dHlwZSA9PSByZWNvcmRfZnVsbF9lbmQpDQo+ICsJICAgICAgLyogc3Rl cCAqLw0KPiArCSAgICAgIGlmIChyZWNvcmRfZnVsbF9yZXN1bWVfc3RlcCkNCj4gIAkJew0KPiAg CQkgIGlmIChyZWNvcmRfZGVidWcgPiAxKQ0KPiAtCQkgICAgZ2RiX3ByaW50Zg0KPiAtCQkgICAg ICAoZ2RiX3N0ZGxvZywNCj4gLQkJICAgICAgICJQcm9jZXNzIHJlY29yZDogcmVjb3JkX2Z1bGxf ZW5kICVzIHRvICINCj4gLQkJICAgICAgICJpbmZlcmlvci5cbiIsDQo+IC0JCSAgICAgICBob3N0 X2FkZHJlc3NfdG9fc3RyaW5nIChyZWNvcmRfZnVsbF9saXN0KSk7DQo+IC0NCj4gLQkJICBpZiAo Zmlyc3RfcmVjb3JkX2Z1bGxfZW5kDQo+IC0JCSAgICAgICYmIGV4ZWN1dGlvbl9kaXJlY3Rpb24g PT0gRVhFQ19SRVZFUlNFKQ0KPiAtCQkgICAgew0KPiAtCQkgICAgICAvKiBXaGVuIHJldmVyc2Ug ZXhlY3V0ZSwgdGhlIGZpcnN0DQo+IC0JCQkgcmVjb3JkX2Z1bGxfZW5kIGlzIHRoZSBwYXJ0IG9m IGN1cnJlbnQNCj4gLQkJCSBpbnN0cnVjdGlvbi4gICovDQo+IC0JCSAgICAgIGZpcnN0X3JlY29y ZF9mdWxsX2VuZCA9IDA7DQo+IC0JCSAgICB9DQo+IC0JCSAgZWxzZQ0KPiAtCQkgICAgew0KPiAt CQkgICAgICAvKiBJbiBFWEVDX1JFVkVSU0UgbW9kZSwgdGhpcyBpcyB0aGUNCj4gLQkJCSByZWNv cmRfZnVsbF9lbmQgb2YgcHJldiBpbnN0cnVjdGlvbi4gIEluDQo+IC0JCQkgRVhFQ19GT1JXQVJE IG1vZGUsIHRoaXMgaXMgdGhlDQo+IC0JCQkgcmVjb3JkX2Z1bGxfZW5kIG9mIGN1cnJlbnQgaW5z dHJ1Y3Rpb24uICAqLw0KPiAtCQkgICAgICAvKiBzdGVwICovDQo+IC0JCSAgICAgIGlmIChyZWNv cmRfZnVsbF9yZXN1bWVfc3RlcCkNCj4gLQkJCXsNCj4gLQkJCSAgaWYgKHJlY29yZF9kZWJ1ZyA+ IDEpDQo+IC0JCQkgICAgZ2RiX3ByaW50ZiAoZ2RiX3N0ZGxvZywNCj4gLQkJCQkJIlByb2Nlc3Mg cmVjb3JkOiBzdGVwLlxuIik7DQo+IC0JCQkgIGNvbnRpbnVlX2ZsYWcgPSAwOw0KPiAtCQkJfQ0K PiAtDQo+IC0JCSAgICAgIC8qIGNoZWNrIGJyZWFrcG9pbnQgKi8NCj4gLQkJICAgICAgdG1wX3Bj ID0gcmVnY2FjaGVfcmVhZF9wYyAocmVnY2FjaGUpOw0KPiAtCQkgICAgICBpZiAocmVjb3JkX2No ZWNrX3N0b3BwZWRfYnlfYnJlYWtwb2ludA0KPiAtCQkJICAoYXNwYWNlLCB0bXBfcGMsICZyZWNv cmRfZnVsbF9zdG9wX3JlYXNvbikpDQo+IC0JCQl7DQo+IC0JCQkgIGlmIChyZWNvcmRfZGVidWcp DQo+IC0JCQkgICAgZ2RiX3ByaW50ZiAoZ2RiX3N0ZGxvZywNCj4gLQkJCQkJIlByb2Nlc3MgcmVj b3JkOiBicmVhayAiDQo+IC0JCQkJCSJhdCAlcy5cbiIsDQo+IC0JCQkJCXBhZGRyZXNzIChnZGJh cmNoLCB0bXBfcGMpKTsNCj4gKwkJICAgIGdkYl9wcmludGYgKGdkYl9zdGRsb2csDQo+ICsJCQkJ IlByb2Nlc3MgcmVjb3JkOiBzdGVwLlxuIik7DQo+ICsJCSAgY29udGludWVfZmxhZyA9IDA7DQo+ ICsJCX0NCj4gDQo+IC0JCQkgIGNvbnRpbnVlX2ZsYWcgPSAwOw0KPiAtCQkJfQ0KPiArCSAgICAg IC8qIGNoZWNrIGJyZWFrcG9pbnQgKi8NCj4gKwkgICAgICB0bXBfcGMgPSByZWdjYWNoZV9yZWFk X3BjIChyZWdjYWNoZSk7DQo+ICsJICAgICAgaWYgKHJlY29yZF9jaGVja19zdG9wcGVkX2J5X2Jy ZWFrcG9pbnQNCj4gKwkJICAoYXNwYWNlLCB0bXBfcGMsICZyZWNvcmRfZnVsbF9zdG9wX3JlYXNv bikpDQo+ICsJCXsNCj4gKwkJICBpZiAocmVjb3JkX2RlYnVnKQ0KPiArCQkgICAgZ2RiX3ByaW50 ZiAoZ2RiX3N0ZGxvZywNCj4gKwkJCQkiUHJvY2VzcyByZWNvcmQ6IGJyZWFrICINCj4gKwkJCQki YXQgJXMuXG4iLA0KPiArCQkJCXBhZGRyZXNzIChnZGJhcmNoLCB0bXBfcGMpKTsNCj4gDQo+IC0J CSAgICAgIGlmIChyZWNvcmRfZnVsbF9zdG9wX3JlYXNvbg0KPiAtCQkJICA9PSBUQVJHRVRfU1RP UFBFRF9CWV9XQVRDSFBPSU5UKQ0KPiAtCQkJew0KPiAtCQkJICBpZiAocmVjb3JkX2RlYnVnKQ0K PiAtCQkJICAgIGdkYl9wcmludGYgKGdkYl9zdGRsb2csDQo+IC0JCQkJCSJQcm9jZXNzIHJlY29y ZDogaGl0IGh3ICINCj4gLQkJCQkJIndhdGNocG9pbnQuXG4iKTsNCj4gLQkJCSAgY29udGludWVf ZmxhZyA9IDA7DQo+IC0JCQl9DQo+IC0JCSAgICAgIC8qIENoZWNrIHRhcmdldCBzaWduYWwgKi8N Cj4gLQkJICAgICAgaWYgKHJlY29yZF9mdWxsX2xpc3QtPnUuZW5kLnNpZ3ZhbCAhPSBHREJfU0lH TkFMXzApDQo+IC0JCQkvKiBGSVhNRTogYmV0dGVyIHdheSB0byBjaGVjayAqLw0KPiAtCQkJY29u dGludWVfZmxhZyA9IDA7DQo+IC0JCSAgICB9DQo+ICsJCSAgY29udGludWVfZmxhZyA9IDA7DQo+ ICAJCX0NCj4gDQo+IC0JICAgICAgaWYgKGNvbnRpbnVlX2ZsYWcpDQo+ICsJICAgICAgaWYgKHJl Y29yZF9mdWxsX3N0b3BfcmVhc29uDQo+ICsJCSAgPT0gVEFSR0VUX1NUT1BQRURfQllfV0FUQ0hQ T0lOVCkNCj4gIAkJew0KPiAtCQkgIGlmIChleGVjdXRpb25fZGlyZWN0aW9uID09IEVYRUNfUkVW RVJTRSkNCj4gLQkJICAgIHsNCj4gLQkJICAgICAgaWYgKHJlY29yZF9mdWxsX2xpc3QtPnByZXYp DQo+IC0JCQlyZWNvcmRfZnVsbF9saXN0ID0gcmVjb3JkX2Z1bGxfbGlzdC0+cHJldjsNCj4gLQkJ ICAgIH0NCj4gLQkJICBlbHNlDQo+IC0JCSAgICB7DQo+IC0JCSAgICAgIGlmIChyZWNvcmRfZnVs bF9saXN0LT5uZXh0KQ0KPiAtCQkJcmVjb3JkX2Z1bGxfbGlzdCA9IHJlY29yZF9mdWxsX2xpc3Qt Pm5leHQ7DQo+IC0JCSAgICB9DQo+ICsJCSAgaWYgKHJlY29yZF9kZWJ1ZykNCj4gKwkJICAgIGdk Yl9wcmludGYgKGdkYl9zdGRsb2csDQo+ICsJCQkJIlByb2Nlc3MgcmVjb3JkOiBoaXQgaHcgIg0K PiArCQkJCSJ3YXRjaHBvaW50LlxuIik7DQo+ICsJCSAgY29udGludWVfZmxhZyA9IDA7DQo+ICAJ CX0NCj4gKwkgICAgICBpZiAocmVjb3JkX2Z1bGxfbGlzdFtyZWNvcmRfZnVsbF9uZXh0X2luc25d LnNpZ3ZhbC5oYXNfdmFsdWUgKCkpDQo+ICsJCWNvbnRpbnVlX2ZsYWcgPSAwOw0KPiArDQo+ICsJ ICAgICAgaWYgKGV4ZWN1dGlvbl9kaXJlY3Rpb24gPT0gRVhFQ19SRVZFUlNFKQ0KPiArCQlyZWNv cmRfZnVsbF9uZXh0X2luc24tLTsNCj4gKwkgICAgICBlbHNlDQo+ICsJCXJlY29yZF9mdWxsX25l eHRfaW5zbisrOw0KPiAgCSAgICB9DQo+ICAJICB3aGlsZSAoY29udGludWVfZmxhZyk7DQo+IA0K PiArCSAgaWYgKHJlY29yZF9mdWxsX25leHRfaW5zbiA8IDApDQo+ICsJICAgIHsNCj4gKwkgICAg ICBnZGJfYXNzZXJ0IChleGVjdXRpb25fZGlyZWN0aW9uID09IEVYRUNfUkVWRVJTRSk7DQo+ICsJ ICAgICAgcmVjb3JkX2Z1bGxfbmV4dF9pbnNuID0gMDsNCj4gKwkgICAgfQ0KPiArCSAgZWxzZSBp ZiAocmVjb3JkX2Z1bGxfbmV4dF9pbnNuID4gcmVjb3JkX2Z1bGxfbGlzdC5zaXplICgpKQ0KPiAr CSAgICB7DQo+ICsJICAgICAgZ2RiX2Fzc2VydCAoZXhlY3V0aW9uX2RpcmVjdGlvbiA9PSBFWEVD X0ZPUldBUkQpOw0KPiArCSAgICAgIHJlY29yZF9mdWxsX25leHRfaW5zbiA9IHJlY29yZF9mdWxs X2xpc3Quc2l6ZSAoKTsNCj4gKwkgICAgfQ0KPiArCSAgLyogUmVzZXQgdGhlIGN1cnJlbnQgaW5z dHJ1Y2l0b24gdG8gcG9pbnQgdG8gdGhlIG9uZSB0byBiZSByZXBsYXllZA0KDQpOaXQ6IGluc3Ry dWN0aW9uDQoNCj4gKwkgICAgIG1vdmluZyBmb3J3YXJkLiAgKi8NCj4gKwkgIGVsc2UgaWYgKGV4 ZWN1dGlvbl9kaXJlY3Rpb24gPT0gRVhFQ19SRVZFUlNFKQ0KPiArCSAgICByZWNvcmRfZnVsbF9u ZXh0X2luc24rKzsNCj4gKw0KPiAgCXJlcGxheV9vdXQ6DQo+ICAJICBpZiAoc3RhdHVzLT5raW5k ICgpID09IFRBUkdFVF9XQUlUS0lORF9TVE9QUEVEKQ0KPiAgCSAgICB7DQo+ICsJICAgICAgaW50 IGluc24gPSAoZXhlY3V0aW9uX2RpcmVjdGlvbiA9PSBFWEVDX0ZPUldBUkQpDQo+ICsJCQkgPyBy ZWNvcmRfZnVsbF9uZXh0X2luc24gLSAxIDogcmVjb3JkX2Z1bGxfbmV4dF9pbnNuOw0KPiAgCSAg ICAgIGlmIChyZWNvcmRfZnVsbF9nZXRfc2lnKQ0KPiAgCQlzdGF0dXMtPnNldF9zdG9wcGVkIChH REJfU0lHTkFMX0lOVCk7DQo+IC0JICAgICAgZWxzZSBpZiAocmVjb3JkX2Z1bGxfbGlzdC0+dS5l bmQuc2lndmFsICE9IEdEQl9TSUdOQUxfMCkNCj4gLQkJLyogRklYTUU6IGJldHRlciB3YXkgdG8g Y2hlY2sgKi8NCj4gLQkJc3RhdHVzLT5zZXRfc3RvcHBlZCAocmVjb3JkX2Z1bGxfbGlzdC0+dS5l bmQuc2lndmFsKTsNCj4gKwkgICAgICBlbHNlIGlmIChyZWNvcmRfZnVsbF9saXN0W2luc25dLnNp Z3ZhbC5oYXNfdmFsdWUgKCkpDQo+ICsJCXN0YXR1cy0+c2V0X3N0b3BwZWQNCj4gKwkJICAocmVj b3JkX2Z1bGxfbGlzdFtpbnNuXS5zaWd2YWwudmFsdWUgKCkpOw0KPiAgCSAgICAgIGVsc2UNCj4g IAkJc3RhdHVzLT5zZXRfc3RvcHBlZCAoR0RCX1NJR05BTF9UUkFQKTsNCj4gIAkgICAgfQ0KPiBA QCAtMTQ2NCwxMiArMTM0Niw5IEBAIHJlY29yZF9mdWxsX3dhaXRfMSAoc3RydWN0IHRhcmdldF9v cHMgKm9wcywNCj4gICAgICAgIGNhdGNoIChjb25zdCBnZGJfZXhjZXB0aW9uICZleCkNCj4gIAl7 DQo+ICAJICBpZiAoZXhlY3V0aW9uX2RpcmVjdGlvbiA9PSBFWEVDX1JFVkVSU0UpDQo+IC0JICAg IHsNCj4gLQkgICAgICBpZiAocmVjb3JkX2Z1bGxfbGlzdC0+bmV4dCkNCj4gLQkJcmVjb3JkX2Z1 bGxfbGlzdCA9IHJlY29yZF9mdWxsX2xpc3QtPm5leHQ7DQo+IC0JICAgIH0NCj4gKwkgICAgcmVj b3JkX2Z1bGxfbmV4dF9pbnNuKys7DQo+ICAJICBlbHNlDQo+IC0JICAgIHJlY29yZF9mdWxsX2xp c3QgPSByZWNvcmRfZnVsbF9saXN0LT5wcmV2Ow0KPiArCSAgICByZWNvcmRfZnVsbF9uZXh0X2lu c24tLTsNCj4gDQo+ICAJICB0aHJvdzsNCj4gIAl9DQo+IEBAIC0xNTU3LDggKzE0MzYsNyBAQCBy ZWNvcmRfZnVsbF9yZWdpc3RlcnNfY2hhbmdlIChzdHJ1Y3QgcmVnY2FjaGUNCj4gKnJlZ2NhY2hl LCBpbnQgcmVnbnVtKQ0KPiAgICAvKiBDaGVjayByZWNvcmRfZnVsbF9pbnNuX251bS4gICovDQo+ ICAgIHJlY29yZF9mdWxsX2NoZWNrX2luc25fbnVtICgpOw0KPiANCj4gLSAgcmVjb3JkX2Z1bGxf YXJjaF9saXN0X2hlYWQgPSBOVUxMOw0KPiAtICByZWNvcmRfZnVsbF9hcmNoX2xpc3RfdGFpbCA9 IE5VTEw7DQo+ICsgIHJlY29yZF9mdWxsX3Jlc2V0X2luY29tcGxldGUgKCk7DQo+IA0KPiAgICBp ZiAocmVnbnVtIDwgMCkNCj4gICAgICB7DQo+IEBAIC0xNTY4LDcgKzE0NDYsNyBAQCByZWNvcmRf ZnVsbF9yZWdpc3RlcnNfY2hhbmdlIChzdHJ1Y3QgcmVnY2FjaGUNCj4gKnJlZ2NhY2hlLCBpbnQg cmVnbnVtKQ0KPiAgCXsNCj4gIAkgIGlmIChyZWNvcmRfZnVsbF9hcmNoX2xpc3RfYWRkX3JlZyAo cmVnY2FjaGUsIGkpKQ0KPiAgCSAgICB7DQo+IC0JICAgICAgcmVjb3JkX2Z1bGxfbGlzdF9yZWxl YXNlIChyZWNvcmRfZnVsbF9hcmNoX2xpc3RfdGFpbCk7DQo+ICsJICAgICAgcmVjb3JkX2Z1bGxf cmVzZXRfaW5jb21wbGV0ZSAoKTsNCj4gIAkgICAgICBlcnJvciAoXygiUHJvY2VzcyByZWNvcmQ6 IGZhaWxlZCB0byByZWNvcmQgZXhlY3V0aW9uIGxvZy4iKSk7DQo+ICAJICAgIH0NCj4gIAl9DQo+ IEBAIC0xNTc3LDE4ICsxNDU1LDExIEBAIHJlY29yZF9mdWxsX3JlZ2lzdGVyc19jaGFuZ2UgKHN0 cnVjdCByZWdjYWNoZQ0KPiAqcmVnY2FjaGUsIGludCByZWdudW0pDQo+ICAgICAgew0KPiAgICAg ICAgaWYgKHJlY29yZF9mdWxsX2FyY2hfbGlzdF9hZGRfcmVnIChyZWdjYWNoZSwgcmVnbnVtKSkN Cj4gIAl7DQo+IC0JICByZWNvcmRfZnVsbF9saXN0X3JlbGVhc2UgKHJlY29yZF9mdWxsX2FyY2hf bGlzdF90YWlsKTsNCj4gKwkgIHJlY29yZF9mdWxsX3Jlc2V0X2luY29tcGxldGUgKCk7DQo+ICAJ ICBlcnJvciAoXygiUHJvY2VzcyByZWNvcmQ6IGZhaWxlZCB0byByZWNvcmQgZXhlY3V0aW9uIGxv Zy4iKSk7DQo+ICAJfQ0KPiAgICAgIH0NCj4gLSAgaWYgKHJlY29yZF9mdWxsX2FyY2hfbGlzdF9h ZGRfZW5kICgpKQ0KPiAtICAgIHsNCj4gLSAgICAgIHJlY29yZF9mdWxsX2xpc3RfcmVsZWFzZSAo cmVjb3JkX2Z1bGxfYXJjaF9saXN0X3RhaWwpOw0KPiAtICAgICAgZXJyb3IgKF8oIlByb2Nlc3Mg cmVjb3JkOiBmYWlsZWQgdG8gcmVjb3JkIGV4ZWN1dGlvbiBsb2cuIikpOw0KPiAtICAgIH0NCj4g LSAgcmVjb3JkX2Z1bGxfbGlzdC0+bmV4dCA9IHJlY29yZF9mdWxsX2FyY2hfbGlzdF9oZWFkOw0K PiAtICByZWNvcmRfZnVsbF9hcmNoX2xpc3RfaGVhZC0+cHJldiA9IHJlY29yZF9mdWxsX2xpc3Q7 DQo+IC0gIHJlY29yZF9mdWxsX2xpc3QgPSByZWNvcmRfZnVsbF9hcmNoX2xpc3RfdGFpbDsNCj4g KyAgcmVjb3JkX2Z1bGxfc2F2ZV9pbnN0cnVjdGlvbiAoKTsNCj4gDQo+ICAgIGlmIChyZWNvcmRf ZnVsbF9pbnNuX251bSA9PSByZWNvcmRfZnVsbF9pbnNuX21heF9udW0pDQo+ICAgICAgcmVjb3Jk X2Z1bGxfbGlzdF9yZWxlYXNlX2ZpcnN0ICgpOw0KPiBAQCAtMTYwNyw3ICsxNDc4LDcgQEAgcmVj b3JkX2Z1bGxfdGFyZ2V0OjpzdG9yZV9yZWdpc3RlcnMgKHN0cnVjdA0KPiByZWdjYWNoZSAqcmVn Y2FjaGUsIGludCByZWdubykNCj4gIAl7DQo+ICAJICBpbnQgbjsNCj4gDQo+IC0JICAvKiBMZXQg dXNlciBjaG9vc2UgaWYgaGUgd2FudHMgdG8gd3JpdGUgcmVnaXN0ZXIgb3Igbm90LiAgKi8NCj4g KwkgIC8qIExldCB1c2VyIGNob29zZSBpZiB0aGV5IHdhbnQgdG8gd3JpdGUgcmVnaXN0ZXIgb3Ig bm90LiAgKi8NCj4gIAkgIGlmIChyZWdubyA8IDApDQo+ICAJICAgIG4gPQ0KPiAgCSAgICAgIHF1 ZXJ5IChfKCJCZWNhdXNlIEdEQiBpcyBpbiByZXBsYXkgbW9kZSwgY2hhbmdpbmcgdGhlICINCj4g QEAgLTE2NDIsNyArMTUxMyw3IEBAIHJlY29yZF9mdWxsX3RhcmdldDo6c3RvcmVfcmVnaXN0ZXJz IChzdHJ1Y3QNCj4gcmVnY2FjaGUgKnJlZ2NhY2hlLCBpbnQgcmVnbm8pDQo+ICAJICAgIH0NCj4g DQo+ICAJICAvKiBEZXN0cm95IHRoZSByZWNvcmQgZnJvbSBoZXJlIGZvcndhcmQuICAqLw0KPiAt CSAgcmVjb3JkX2Z1bGxfbGlzdF9yZWxlYXNlX2ZvbGxvd2luZyAocmVjb3JkX2Z1bGxfbGlzdCk7 DQo+ICsJICByZWNvcmRfZnVsbF9saXN0X3JlbGVhc2VfZm9sbG93aW5nIChyZWNvcmRfZnVsbF9u ZXh0X2luc24pOw0KPiAgCX0NCj4gDQo+ICAgICAgICByZWNvcmRfZnVsbF9yZWdpc3RlcnNfY2hh bmdlIChyZWdjYWNoZSwgcmVnbm8pOw0KPiBAQCAtMTY3NSwzNiArMTU0NiwyNCBAQCByZWNvcmRf ZnVsbF90YXJnZXQ6OnhmZXJfcGFydGlhbCAoZW51bQ0KPiB0YXJnZXRfb2JqZWN0IG9iamVjdCwN Cj4gIAkgICAgZXJyb3IgKF8oIlByb2Nlc3MgcmVjb3JkIGNhbmNlbGVkIHRoZSBvcGVyYXRpb24u IikpOw0KPiANCj4gIAkgIC8qIERlc3Ryb3kgdGhlIHJlY29yZCBmcm9tIGhlcmUgZm9yd2FyZC4g ICovDQo+IC0JICByZWNvcmRfZnVsbF9saXN0X3JlbGVhc2VfZm9sbG93aW5nIChyZWNvcmRfZnVs bF9saXN0KTsNCj4gKwkgIHJlY29yZF9mdWxsX2xpc3RfcmVsZWFzZV9mb2xsb3dpbmcgKHJlY29y ZF9mdWxsX25leHRfaW5zbik7DQo+ICAJfQ0KPiANCj4gICAgICAgIC8qIENoZWNrIHJlY29yZF9m dWxsX2luc25fbnVtICovDQo+ICAgICAgICByZWNvcmRfZnVsbF9jaGVja19pbnNuX251bSAoKTsN Cj4gDQo+ICAgICAgICAvKiBSZWNvcmQgcmVnaXN0ZXJzIGNoYW5nZSB0byBsaXN0IGFzIGFuIGlu c3RydWN0aW9uLiAgKi8NCj4gLSAgICAgIHJlY29yZF9mdWxsX2FyY2hfbGlzdF9oZWFkID0gTlVM TDsNCj4gLSAgICAgIHJlY29yZF9mdWxsX2FyY2hfbGlzdF90YWlsID0gTlVMTDsNCj4gKyAgICAg IHJlY29yZF9mdWxsX3Jlc2V0X2luY29tcGxldGUgKCk7DQo+ICAgICAgICBpZiAocmVjb3JkX2Z1 bGxfYXJjaF9saXN0X2FkZF9tZW0gKG9mZnNldCwgbGVuKSkNCj4gIAl7DQo+IC0JICByZWNvcmRf ZnVsbF9saXN0X3JlbGVhc2UgKHJlY29yZF9mdWxsX2FyY2hfbGlzdF90YWlsKTsNCj4gKwkgIHJl Y29yZF9mdWxsX3Jlc2V0X2luY29tcGxldGUgKCk7DQo+ICAJICBpZiAocmVjb3JkX2RlYnVnKQ0K PiAgCSAgICBnZGJfcHJpbnRmIChnZGJfc3RkbG9nLA0KPiAgCQkJIlByb2Nlc3MgcmVjb3JkOiBm YWlsZWQgdG8gcmVjb3JkICINCj4gIAkJCSJleGVjdXRpb24gbG9nLiIpOw0KPiAgCSAgcmV0dXJu IFRBUkdFVF9YRkVSX0VfSU87DQo+ICAJfQ0KPiAtICAgICAgaWYgKHJlY29yZF9mdWxsX2FyY2hf bGlzdF9hZGRfZW5kICgpKQ0KPiAtCXsNCj4gLQkgIHJlY29yZF9mdWxsX2xpc3RfcmVsZWFzZSAo cmVjb3JkX2Z1bGxfYXJjaF9saXN0X3RhaWwpOw0KPiAtCSAgaWYgKHJlY29yZF9kZWJ1ZykNCj4g LQkgICAgZ2RiX3ByaW50ZiAoZ2RiX3N0ZGxvZywNCj4gLQkJCSJQcm9jZXNzIHJlY29yZDogZmFp bGVkIHRvIHJlY29yZCAiDQo+IC0JCQkiZXhlY3V0aW9uIGxvZy4iKTsNCj4gLQkgIHJldHVybiBU QVJHRVRfWEZFUl9FX0lPOw0KPiAtCX0NCj4gLSAgICAgIHJlY29yZF9mdWxsX2xpc3QtPm5leHQg PSByZWNvcmRfZnVsbF9hcmNoX2xpc3RfaGVhZDsNCj4gLSAgICAgIHJlY29yZF9mdWxsX2FyY2hf bGlzdF9oZWFkLT5wcmV2ID0gcmVjb3JkX2Z1bGxfbGlzdDsNCj4gLSAgICAgIHJlY29yZF9mdWxs X2xpc3QgPSByZWNvcmRfZnVsbF9hcmNoX2xpc3RfdGFpbDsNCj4gKyAgICAgIHJlY29yZF9mdWxs X3NhdmVfaW5zdHJ1Y3Rpb24gKCk7DQo+IA0KPiAgICAgICAgaWYgKHJlY29yZF9mdWxsX2luc25f bnVtID09IHJlY29yZF9mdWxsX2luc25fbWF4X251bSkNCj4gIAlyZWNvcmRfZnVsbF9saXN0X3Jl bGVhc2VfZmlyc3QgKCk7DQo+IEBAIC0xODY2LDggKzE3MjUsNyBAQCByZWNvcmRfZnVsbF9iYXNl X3RhcmdldDo6Z2V0X2Jvb2ttYXJrIChjb25zdCBjaGFyDQo+ICphcmdzLCBpbnQgZnJvbV90dHkp DQo+ICAgIGNoYXIgKnJldCA9IE5VTEw7DQo+IA0KPiAgICAvKiBSZXR1cm4gc3RyaW5naWZpZWQg Zm9ybSBvZiBpbnN0cnVjdGlvbiBjb3VudC4gICovDQo+IC0gIGlmIChyZWNvcmRfZnVsbF9saXN0 ICYmIHJlY29yZF9mdWxsX2xpc3QtPnR5cGUgPT0gcmVjb3JkX2Z1bGxfZW5kKQ0KPiAtICAgIHJl dCA9IHhzdHJkdXAgKHB1bG9uZ2VzdCAocmVjb3JkX2Z1bGxfbGlzdC0+dS5lbmQuaW5zbl9udW0p KTsNCj4gKyAgcmV0ID0geHN0cmR1cCAocHVsb25nZXN0IChyZWNvcmRfZnVsbF9saXN0W3JlY29y ZF9mdWxsX25leHRfaW5zbl0uaW5zbl9udW0pKTsNCg0KSSB0aGluayB3ZSBjYW4gZ2V0IGhlcmUg d2l0aCBhbiBlbXB0eSByZWNvcmRfZnVsbF9saXN0IC0gaW4gY2FzZSB3ZSBhcmUgaW4gcmVjb3Jk aW5nIG1vZGUsDQpubyBpbnN0cnVjdGlvbnMgaGF2ZSBiZWVuIGxvZ2dlZCBhbmQgdGhpcyBmdW5j dGlvbiBpcyBjYWxsZWQ6DQoNCn5+fg0KKGdkYikgaW5mbyByZWNvcmQNCkFjdGl2ZSByZWNvcmQg dGFyZ2V0OiByZWNvcmQtZnVsbA0KUmVjb3JkIG1vZGU6DQpObyBpbnN0cnVjdGlvbnMgaGF2ZSBi ZWVuIGxvZ2dlZC4NCk1heCBsb2dnZWQgaW5zdHJ1Y3Rpb25zIGlzIDIwMDAwMC4NCihnZGIpIGJv b2ttYXJrDQoNClRocmVhZCAxICJnZGItdXAiIGhpdCBCcmVha3BvaW50IDEsIHJlY29yZF9mdWxs X2Jhc2VfdGFyZ2V0OjpnZXRfYm9va21hcmsgKHRoaXM9MHg1NTU1NTgzOTI5MDAgPHJlY29yZF9m dWxsX29wcz4sIGFyZ3M9MHgwLCBmcm9tX3R0eT0xKSBhdCAvdG1wL3JlY29yZC1mdWxsLmM6MTc3 NA0KMTc3NCAgICAgIGNoYXIgKnJldCA9IE5VTEw7DQooZ2RiKSBwIHJlY29yZF9mdWxsX25leHRf aW5zbg0KJDEgPSAwDQooZ2RiKSBwIHJlY29yZF9mdWxsX2xpc3QuZW1wdHkgKCkNCiQyID0gdHJ1 ZQ0Kfn5+DQoNCj4gICAgaWYgKHJlY29yZF9kZWJ1ZykNCj4gICAgICB7DQo+IEBAIC0xOTIzLDMw ICsxNzgxLDIyIEBAIHJlY29yZF9mdWxsX2Jhc2VfdGFyZ2V0OjpyZWNvcmRfbWV0aG9kIChwdGlk X3QNCj4gcHRpZCkNCj4gIHZvaWQNCj4gIHJlY29yZF9mdWxsX2Jhc2VfdGFyZ2V0OjppbmZvX3Jl Y29yZCAoKQ0KPiAgew0KPiAtICBzdHJ1Y3QgcmVjb3JkX2Z1bGxfZW50cnkgKnA7DQo+IC0NCj4g ICAgaWYgKFJFQ09SRF9GVUxMX0lTX1JFUExBWSkNCj4gICAgICBnZGJfcHJpbnRmIChfKCJSZXBs YXkgbW9kZTpcbiIpKTsNCj4gICAgZWxzZQ0KPiAgICAgIGdkYl9wcmludGYgKF8oIlJlY29yZCBt b2RlOlxuIikpOw0KPiANCj4gLSAgLyogRmluZCBlbnRyeSBmb3IgZmlyc3QgYWN0dWFsIGluc3Ry dWN0aW9uIGluIHRoZSBsb2cuICAqLw0KPiAtICBmb3IgKHAgPSByZWNvcmRfZnVsbF9maXJzdC5u ZXh0Ow0KPiAtICAgICAgIHAgIT0gTlVMTCAmJiBwLT50eXBlICE9IHJlY29yZF9mdWxsX2VuZDsN Cj4gLSAgICAgICBwID0gcC0+bmV4dCkNCj4gLSAgICA7DQo+IC0NCj4gICAgLyogRG8gd2UgaGF2 ZSBhIGxvZyBhdCBhbGw/ICAqLw0KPiAtICBpZiAocCAhPSBOVUxMICYmIHAtPnR5cGUgPT0gcmVj b3JkX2Z1bGxfZW5kKQ0KPiArICBpZiAoIXJlY29yZF9mdWxsX2xpc3QuZW1wdHkgKCkpDQo+ICAg ICAgew0KPiAgICAgICAgLyogRGlzcGxheSBpbnN0cnVjdGlvbiBudW1iZXIgZm9yIGZpcnN0IGlu c3RydWN0aW9uIGluIHRoZSBsb2cuICAqLw0KPiAtICAgICAgZ2RiX3ByaW50ZiAoXygiTG93ZXN0 IHJlY29yZGVkIGluc3RydWN0aW9uIG51bWJlciBpcyAlcy5cbiIpLA0KPiAtCQkgIHB1bG9uZ2Vz dCAocC0+dS5lbmQuaW5zbl9udW0pKTsNCj4gKyAgICAgIGdkYl9wcmludGYgKF8oIkxvd2VzdCBy ZWNvcmRlZCBpbnN0cnVjdGlvbiBudW1iZXIgaXMgJXUuXG4iKSwNCj4gKwkJICByZWNvcmRfZnVs bF9saXN0WzBdLmluc25fbnVtKTsNCj4gDQo+ICAgICAgICAvKiBJZiBpbiByZXBsYXkgbW9kZSwg ZGlzcGxheSB3aGVyZSB3ZSBhcmUgaW4gdGhlIGxvZy4gICovDQo+ICAgICAgICBpZiAoUkVDT1JE X0ZVTExfSVNfUkVQTEFZKQ0KPiAtCWdkYl9wcmludGYgKF8oIkN1cnJlbnQgaW5zdHJ1Y3Rpb24g bnVtYmVyIGlzICVzLlxuIiksDQo+IC0JCSAgICBwdWxvbmdlc3QgKHJlY29yZF9mdWxsX2xpc3Qt PnUuZW5kLmluc25fbnVtKSk7DQo+ICsJZ2RiX3ByaW50ZiAoXygiQ3VycmVudCBpbnN0cnVjdGlv biBudW1iZXIgaXMgJXUuXG4iKSwNCj4gKwkJICAgIHJlY29yZF9mdWxsX2xpc3RbcmVjb3JkX2Z1 bGxfbmV4dF9pbnNuXS5pbnNuX251bSk7DQo+IA0KPiAgICAgICAgLyogRGlzcGxheSBpbnN0cnVj dGlvbiBudW1iZXIgZm9yIGxhc3QgaW5zdHJ1Y3Rpb24gaW4gdGhlIGxvZy4gICovDQo+ICAgICAg ICBnZGJfcHJpbnRmIChfKCJIaWdoZXN0IHJlY29yZGVkIGluc3RydWN0aW9uIG51bWJlciBpcyAl cy5cbiIpLA0KPiBAQCAtMTk3NSw3ICsxODI1LDcgQEAgcmVjb3JkX2Z1bGxfYmFzZV90YXJnZXQ6 OnN1cHBvcnRzX2RlbGV0ZV9yZWNvcmQgKCkNCj4gIHZvaWQNCj4gIHJlY29yZF9mdWxsX2Jhc2Vf dGFyZ2V0OjpkZWxldGVfcmVjb3JkICgpDQo+ICB7DQo+IC0gIHJlY29yZF9mdWxsX2xpc3RfcmVs ZWFzZV9mb2xsb3dpbmcgKHJlY29yZF9mdWxsX2xpc3QpOw0KPiArICByZWNvcmRfZnVsbF9yZXNl dF9oaXN0b3J5ICgpOw0KPiAgfQ0KPiANCj4gIC8qIFRoZSAicmVjb3JkX2lzX3JlcGxheWluZyIg dGFyZ2V0IG1ldGhvZC4gICovDQo+IEBAIC0yMDAxLDIzICsxODUxLDIzIEBAIHJlY29yZF9mdWxs X2Jhc2VfdGFyZ2V0OjpyZWNvcmRfd2lsbF9yZXBsYXkNCj4gKHB0aWRfdCBwdGlkLCBpbnQgZGly KQ0KPiAgLyogR28gdG8gYSBzcGVjaWZpYyBlbnRyeS4gICovDQo+IA0KPiAgc3RhdGljIHZvaWQN Cj4gLXJlY29yZF9mdWxsX2dvdG9fZW50cnkgKHN0cnVjdCByZWNvcmRfZnVsbF9lbnRyeSAqcCkN Cj4gK3JlY29yZF9mdWxsX2dvdG9fZW50cnkgKHNpemVfdCB0YXJnZXRfaW5zbikNCj4gIHsNCj4g LSAgaWYgKHAgPT0gTlVMTCkNCj4gKyAgaWYgKHRhcmdldF9pbnNuID49IHJlY29yZF9mdWxsX2xp c3Quc2l6ZSAoKSkNCj4gICAgICBlcnJvciAoXygiVGFyZ2V0IGluc24gbm90IGZvdW5kLiIpKTsN Cj4gLSAgZWxzZSBpZiAocCA9PSByZWNvcmRfZnVsbF9saXN0KQ0KPiArICBlbHNlIGlmICh0YXJn ZXRfaW5zbiA9PSByZWNvcmRfZnVsbF9uZXh0X2luc24pDQo+ICAgICAgZXJyb3IgKF8oIkFscmVh ZHkgYXQgdGFyZ2V0IGluc24uIikpOw0KPiAtICBlbHNlIGlmIChwLT51LmVuZC5pbnNuX251bSA+ IHJlY29yZF9mdWxsX2xpc3QtPnUuZW5kLmluc25fbnVtKQ0KPiArICBlbHNlIGlmICh0YXJnZXRf aW5zbiA+IHJlY29yZF9mdWxsX25leHRfaW5zbikNCj4gICAgICB7DQo+ICAgICAgICBnZGJfcHJp bnRmIChfKCJHbyBmb3J3YXJkIHRvIGluc24gbnVtYmVyICVzXG4iKSwNCj4gLQkJICBwdWxvbmdl c3QgKHAtPnUuZW5kLmluc25fbnVtKSk7DQo+IC0gICAgICByZWNvcmRfZnVsbF9nb3RvX2luc24g KHAsIEVYRUNfRk9SV0FSRCk7DQo+ICsJCSAgcHVsb25nZXN0IChyZWNvcmRfZnVsbF9saXN0W3Rh cmdldF9pbnNuXS5pbnNuX251bSkpOw0KPiArICAgICAgcmVjb3JkX2Z1bGxfZ290b19pbnNuICh0 YXJnZXRfaW5zbiwgRVhFQ19GT1JXQVJEKTsNCj4gICAgICB9DQo+ICAgIGVsc2UNCj4gICAgICB7 DQo+ICAgICAgICBnZGJfcHJpbnRmIChfKCJHbyBiYWNrd2FyZCB0byBpbnNuIG51bWJlciAlc1xu IiksDQo+IC0JCSAgcHVsb25nZXN0IChwLT51LmVuZC5pbnNuX251bSkpOw0KPiAtICAgICAgcmVj b3JkX2Z1bGxfZ290b19pbnNuIChwLCBFWEVDX1JFVkVSU0UpOw0KPiArCQkgIHB1bG9uZ2VzdCAo dGFyZ2V0X2luc24pKTsNCj4gKyAgICAgIHJlY29yZF9mdWxsX2dvdG9faW5zbiAodGFyZ2V0X2lu c24sIEVYRUNfUkVWRVJTRSk7DQo+ICAgICAgfQ0KPiANCj4gICAgcmVnaXN0ZXJzX2NoYW5nZWQg KCk7DQo+IEBAIC0yMDMzLDEzICsxODgzLDcgQEAgcmVjb3JkX2Z1bGxfZ290b19lbnRyeSAoc3Ry dWN0IHJlY29yZF9mdWxsX2VudHJ5DQo+ICpwKQ0KPiAgdm9pZA0KPiAgcmVjb3JkX2Z1bGxfYmFz ZV90YXJnZXQ6OmdvdG9fcmVjb3JkX2JlZ2luICgpDQo+ICB7DQo+IC0gIHN0cnVjdCByZWNvcmRf ZnVsbF9lbnRyeSAqcCA9IE5VTEw7DQo+IC0NCj4gLSAgZm9yIChwID0gJnJlY29yZF9mdWxsX2Zp cnN0OyBwICE9IE5VTEw7IHAgPSBwLT5uZXh0KQ0KPiAtICAgIGlmIChwLT50eXBlID09IHJlY29y ZF9mdWxsX2VuZCkNCj4gLSAgICAgIGJyZWFrOw0KPiAtDQo+IC0gIHJlY29yZF9mdWxsX2dvdG9f ZW50cnkgKHApOw0KPiArICByZWNvcmRfZnVsbF9nb3RvX2VudHJ5ICgwKTsNCj4gIH0NCj4gDQo+ ICAvKiBUaGUgImdvdG9fcmVjb3JkX2VuZCIgdGFyZ2V0IG1ldGhvZC4gICovDQo+IEBAIC0yMDQ3 LDE1ICsxODkxLDcgQEAgcmVjb3JkX2Z1bGxfYmFzZV90YXJnZXQ6OmdvdG9fcmVjb3JkX2JlZ2lu ICgpDQo+ICB2b2lkDQo+ICByZWNvcmRfZnVsbF9iYXNlX3RhcmdldDo6Z290b19yZWNvcmRfZW5k ICgpDQo+ICB7DQo+IC0gIHN0cnVjdCByZWNvcmRfZnVsbF9lbnRyeSAqcCA9IE5VTEw7DQo+IC0N Cj4gLSAgZm9yIChwID0gcmVjb3JkX2Z1bGxfbGlzdDsgcC0+bmV4dCAhPSBOVUxMOyBwID0gcC0+ bmV4dCkNCj4gLSAgICA7DQo+IC0gIGZvciAoOyBwIT0gTlVMTDsgcCA9IHAtPnByZXYpDQo+IC0g ICAgaWYgKHAtPnR5cGUgPT0gcmVjb3JkX2Z1bGxfZW5kKQ0KPiAtICAgICAgYnJlYWs7DQo+IC0N Cj4gLSAgcmVjb3JkX2Z1bGxfZ290b19lbnRyeSAocCk7DQo+ICsgIHJlY29yZF9mdWxsX2dvdG9f ZW50cnkgKHJlY29yZF9mdWxsX2xpc3Quc2l6ZSAoKSAtMSk7DQoNCk5pdDogd2hpdGVzcGFjZSBi ZWZvcmUgMSA9PiAicmVjb3JkX2Z1bGxfbGlzdC5zaXplICgpIC0gMSINCg0KQW5kIGluIGNhc2Ug dGhlIHJlY29yZF9mdWxsX2xpc3QgaXMgZW1wdHksIHdvbid0IHdlIGNhbGwNCnJlY29yZF9mdWxs X2dvdG9fZW50cnkgd2l0aCBhbiBpbnZhbGlkIHZhbHVlIGZvciB0YXJnZXRfaW5zbiA/DQoNCj4g IH0NCj4gDQo+ICAvKiBUaGUgImdvdG9fcmVjb3JkIiB0YXJnZXQgbWV0aG9kLiAgKi8NCj4gQEAg LTIwNjMsMTMgKzE4OTksNyBAQCByZWNvcmRfZnVsbF9iYXNlX3RhcmdldDo6Z290b19yZWNvcmRf ZW5kICgpDQo+ICB2b2lkDQo+ICByZWNvcmRfZnVsbF9iYXNlX3RhcmdldDo6Z290b19yZWNvcmQg KFVMT05HRVNUIHRhcmdldF9pbnNuKQ0KPiAgew0KPiAtICBzdHJ1Y3QgcmVjb3JkX2Z1bGxfZW50 cnkgKnAgPSBOVUxMOw0KPiAtDQo+IC0gIGZvciAocCA9ICZyZWNvcmRfZnVsbF9maXJzdDsgcCAh PSBOVUxMOyBwID0gcC0+bmV4dCkNCj4gLSAgICBpZiAocC0+dHlwZSA9PSByZWNvcmRfZnVsbF9l bmQgJiYgcC0+dS5lbmQuaW5zbl9udW0gPT0gdGFyZ2V0X2luc24pDQo+IC0gICAgICBicmVhazsN Cj4gLQ0KPiAtICByZWNvcmRfZnVsbF9nb3RvX2VudHJ5IChwKTsNCj4gKyAgcmVjb3JkX2Z1bGxf Z290b19lbnRyeSAodGFyZ2V0X2luc24pOw0KPiAgfQ0KPiANCj4gIC8qIFRoZSAicmVjb3JkX3N0 b3BfcmVwbGF5aW5nIiB0YXJnZXQgbWV0aG9kLiAgKi8NCj4gQEAgLTIzMzksMTkgKzIxNjksOTYg QEAgbmV0b3JkZXIzMiAodWludDMyX3QgaW5wdXQpDQo+ICAgIHJldHVybiByZXQ7DQo+ICB9DQo+ IA0KPiArc3RhdGljIHZvaWQNCj4gK3JlY29yZF9mdWxsX3JlYWRfZW50cnlfZnJvbV9iZmQgKGJm ZCAqY2JmZCwgYXNlY3Rpb24gKm9zZWMsIGludCAqYmZkX29mZnNldCkNCj4gK3sNCj4gKyAgdWlu dDhfdCByZWN0eXBlOw0KPiArICB1aW50MzJfdCByZWdudW0sIGxlbjsNCj4gKyAgdWludDY0X3Qg YWRkcjsNCj4gKyAgcmVnY2FjaGUgKmNhY2hlID0gZ2V0X3RocmVhZF9yZWdjYWNoZSAoaW5mZXJp b3JfdGhyZWFkICgpKTsNCj4gKw0KPiArICBiZmRjb3JlX3JlYWQgKGNiZmQsIG9zZWMsICZyZWN0 eXBlLCBzaXplb2YgKHJlY3R5cGUpLCBiZmRfb2Zmc2V0KTsNCj4gKyAgc3dpdGNoIChyZWN0eXBl KQ0KPiArICAgIHsNCj4gKyAgICBjYXNlIHJlY29yZF9mdWxsX3JlZzogLyogcmVnICovDQo+ICsg ICAgICB7DQo+ICsJLyogR2V0IHJlZ2lzdGVyIG51bWJlciB0byByZWdudW0uICAqLw0KPiArCWJm ZGNvcmVfcmVhZCAoY2JmZCwgb3NlYywgJnJlZ251bSwgc2l6ZW9mIChyZWdudW0pLCBiZmRfb2Zm c2V0KTsNCj4gKwlyZWdudW0gPSBuZXRvcmRlcjMyIChyZWdudW0pOw0KPiArDQo+ICsJcmVjb3Jk X2Z1bGxfZW50cnkgcmVjOw0KPiArDQo+ICsJcmVjID0gcmVjb3JkX2Z1bGxfcmVnX2luaXQgKGNh Y2hlLCByZWdudW0pOw0KPiArDQo+ICsJLyogR2V0IHZhbC4gICovDQo+ICsJYmZkY29yZV9yZWFk IChjYmZkLCBvc2VjLCByZWNvcmRfZnVsbF9nZXRfbG9jICgmcmVjKSwNCj4gKwkJICAgICAgcmVj LnUucmVnLmxlbiwgYmZkX29mZnNldCk7DQo+ICsNCj4gKwlpZiAocmVjb3JkX2RlYnVnKQ0KPiAr CSAgZ2RiX3ByaW50ZiAoZ2RiX3N0ZGxvZywNCj4gKwkJICAgICAgIiAgUmVhZGluZyByZWdpc3Rl ciAlZCAoMSAiDQo+ICsJCSAgICAgICJwbHVzICVsdSBwbHVzICVkIGJ5dGVzKVxuIiwNCj4gKwkJ ICAgICAgcmVjLnUucmVnLm51bSwNCj4gKwkJICAgICAgKHVuc2lnbmVkIGxvbmcpIHNpemVvZiAo cmVnbnVtKSwNCj4gKwkJICAgICAgcmVjLnUucmVnLmxlbik7DQo+ICsNCj4gKwlyZWNvcmRfZnVs bF9hcmNoX2xpc3RfYWRkIChyZWMpOw0KPiArCWJyZWFrOw0KPiArICAgICAgfQ0KPiArDQo+ICsg ICAgY2FzZSByZWNvcmRfZnVsbF9tZW06IC8qIG1lbSAqLw0KPiArICAgICAgew0KPiArCS8qIEdl dCBsZW4uICAqLw0KPiArCWJmZGNvcmVfcmVhZCAoY2JmZCwgb3NlYywgJmxlbiwgc2l6ZW9mIChs ZW4pLCBiZmRfb2Zmc2V0KTsNCj4gKwlsZW4gPSBuZXRvcmRlcjMyIChsZW4pOw0KPiArDQo+ICsJ LyogR2V0IGFkZHIuICAqLw0KPiArCWJmZGNvcmVfcmVhZCAoY2JmZCwgb3NlYywgJmFkZHIsIHNp emVvZiAoYWRkciksDQo+ICsJCSAgICAgIGJmZF9vZmZzZXQpOw0KPiArCWFkZHIgPSBuZXRvcmRl cjY0IChhZGRyKTsNCj4gKw0KPiArCXJlY29yZF9mdWxsX2VudHJ5IHJlYzsNCj4gKwlyZWMgPSBy ZWNvcmRfZnVsbF9tZW1faW5pdCAoYWRkciwgbGVuKTsNCj4gKw0KPiArCS8qIEdldCB2YWwuICAq Lw0KPiArCWJmZGNvcmVfcmVhZCAoY2JmZCwgb3NlYywgcmVjb3JkX2Z1bGxfZ2V0X2xvYyAoJnJl YyksIGxlbiwNCj4gKwkJICAgICAgYmZkX29mZnNldCk7DQo+ICsNCj4gKwlpZiAocmVjb3JkX2Rl YnVnKQ0KPiArCSAgZ2RiX3ByaW50ZiAoZ2RiX3N0ZGxvZywNCj4gKwkJICAgICAgIiAgUmVhZGlu ZyBtZW1vcnkgJXMgKDEgcGx1cyAiDQo+ICsJCSAgICAgICIlbHUgcGx1cyAlbHUgcGx1cyAlZCBi eXRlcylcbiIsDQo+ICsJCSAgICAgIHBhZGRyZXNzIChnZXRfY3VycmVudF9hcmNoICgpLA0KPiAr CQkJCXJlYy51Lm1lbS5hZGRyKSwNCj4gKwkJICAgICAgKHVuc2lnbmVkIGxvbmcpIHNpemVvZiAo YWRkciksDQo+ICsJCSAgICAgICh1bnNpZ25lZCBsb25nKSBzaXplb2YgKGxlbiksDQo+ICsJCSAg ICAgIGxlbik7DQo+ICsNCj4gKwlyZWNvcmRfZnVsbF9hcmNoX2xpc3RfYWRkIChyZWMpOw0KPiAr CWJyZWFrOw0KPiArICAgICAgfQ0KPiArDQo+ICsgICAgZGVmYXVsdDoNCj4gKyAgICAgIGVycm9y IChfKCJCYWQgZW50cnkgdHlwZSAlZCwgb2Zmc2V0ICVkIG9mICVsdSBpbiBjb3JlIGZpbGUgJXBz LiIpLA0KPiArCSAgICAgcmVjdHlwZSwgKmJmZF9vZmZzZXQsIGJmZF9zZWN0aW9uX3NpemUgKG9z ZWMpLA0KPiArCSAgICAgc3R5bGVkX3N0cmluZyAoZmlsZV9uYW1lX3N0eWxlLnN0eWxlICgpLA0K PiArCQkJICAgIGJmZF9nZXRfZmlsZW5hbWUgKGNiZmQpKSk7DQo+ICsgICAgICBicmVhazsNCj4g KyAgICB9DQo+ICt9DQo+ICsNCj4gIC8qIFJlc3RvcmUgdGhlIGV4ZWN1dGlvbiBsb2cgZnJvbSBj b3JlIGZpbGUgQ0JGRC4gICovDQo+IA0KPiAgc3RhdGljIHZvaWQNCj4gIHJlY29yZF9mdWxsX3Jl c3RvcmUgKHN0cnVjdCBiZmQgJmNiZmQpDQo+ICB7DQo+ICAgIHVpbnQzMl90IG1hZ2ljOw0KPiAt ICBzdHJ1Y3QgcmVjb3JkX2Z1bGxfZW50cnkgKnJlYzsNCj4gICAgYXNlY3Rpb24gKm9zZWM7DQo+ ICAgIHVpbnQzMl90IG9zZWNfc2l6ZTsNCj4gICAgaW50IGJmZF9vZmZzZXQgPSAwOw0KPiANCj4g ICAgLyogInJlY29yZF9mdWxsX3Jlc3RvcmUiIGNhbiBvbmx5IGJlIGNhbGxlZCB3aGVuIHJlY29y ZCBsaXN0IGlzIGVtcHR5LiAgKi8NCj4gLSAgZ2RiX2Fzc2VydCAocmVjb3JkX2Z1bGxfZmlyc3Qu bmV4dCA9PSBOVUxMKTsNCj4gKyAgZ2RiX2Fzc2VydCAocmVjb3JkX2Z1bGxfbGlzdC5lbXB0eSAo KSk7DQo+IA0KPiAgICBpZiAocmVjb3JkX2RlYnVnKQ0KPiAgICAgIGdkYl9wcmludGYgKGdkYl9z dGRsb2csICJSZXN0b3JpbmcgcmVjb3JkaW5nIGZyb20gY29yZSBmaWxlLlxuIik7DQo+IEBAIC0y Mzc5LDEyNCArMjI4Niw0NyBAQCByZWNvcmRfZnVsbF9yZXN0b3JlIChzdHJ1Y3QgYmZkICZjYmZk KQ0KPiAgCQkiUkVDT1JEX0ZVTExfRklMRV9NQUdJQyAoMHglcylcbiIsDQo+ICAJCXBoZXhfbnog KG5ldG9yZGVyMzIgKG1hZ2ljKSwgNCkpOw0KPiANCj4gLSAgLyogUmVzdG9yZSB0aGUgZW50cmll cyBpbiByZWNmZCBpbnRvIHJlY29yZF9mdWxsX2FyY2hfbGlzdF9oZWFkIGFuZA0KPiAtICAgICBy ZWNvcmRfZnVsbF9hcmNoX2xpc3RfdGFpbC4gICovDQo+IC0gIHJlY29yZF9mdWxsX2FyY2hfbGlz dF9oZWFkID0gTlVMTDsNCj4gLSAgcmVjb3JkX2Z1bGxfYXJjaF9saXN0X3RhaWwgPSBOVUxMOw0K PiAgICByZWNvcmRfZnVsbF9pbnNuX251bSA9IDA7DQo+IA0KPiAgICB0cnkNCj4gICAgICB7DQo+ IC0gICAgICByZWdjYWNoZSAqcmVnY2FjaGUgPSBnZXRfdGhyZWFkX3JlZ2NhY2hlIChpbmZlcmlv cl90aHJlYWQgKCkpOw0KPiAtDQo+IC0gICAgICB3aGlsZSAoMSkNCj4gKyAgICAgIHdoaWxlIChi ZmRfb2Zmc2V0IDwgb3NlY19zaXplKQ0KPiAgCXsNCj4gLQkgIHVpbnQ4X3QgcmVjdHlwZTsNCj4g LQkgIHVpbnQzMl90IHJlZ251bSwgbGVuLCBzaWduYWwsIGNvdW50Ow0KPiAtCSAgdWludDY0X3Qg YWRkcjsNCj4gLQ0KPiAtCSAgLyogV2UgYXJlIGZpbmlzaGVkIHdoZW4gb2Zmc2V0IHJlYWNoZXMg b3NlY19zaXplLiAgKi8NCj4gLQkgIGlmIChiZmRfb2Zmc2V0ID49IG9zZWNfc2l6ZSkNCj4gLQkg ICAgYnJlYWs7DQo+IC0JICBiZmRjb3JlX3JlYWQgKCZjYmZkLCBvc2VjLCAmcmVjdHlwZSwgc2l6 ZW9mIChyZWN0eXBlKSwgJmJmZF9vZmZzZXQpOw0KPiAtDQo+IC0JICBzd2l0Y2ggKHJlY3R5cGUp DQo+ICsJICByZWNvcmRfZnVsbF9yZXNldF9pbmNvbXBsZXRlICgpOw0KPiArCSAgdWludDMyX3Qg ZWZmX2NvdW50ID0gMDsNCj4gKwkgIHVpbnQ4X3Qgc2lndmFsOw0KPiArCSAgdWludDMyX3QgaW5z bl9udW07DQo+ICsNCj4gKwkgIC8qIEZpcnN0IHJlYWQgdGhlIGdlbmVyaWMgaW5mb3JtYXRpb24g Zm9yIGFuIGluc3RydWN0aW9uLiAgKi8NCj4gKwkgIGJmZGNvcmVfcmVhZCAoJmNiZmQsIG9zZWMs ICZzaWd2YWwsIHNpemVvZiAodWludDhfdCksICZiZmRfb2Zmc2V0KTsNCj4gKwkgIGJmZGNvcmVf cmVhZCAoJmNiZmQsIG9zZWMsICZlZmZfY291bnQsIHNpemVvZiAodWludDMyX3QpLA0KPiArCQkJ JmJmZF9vZmZzZXQpOw0KPiArCSAgYmZkY29yZV9yZWFkICgmY2JmZCwgb3NlYywgJmluc25fbnVt LCBzaXplb2YgKHVpbnQzMl90KSwNCj4gKwkJCSZiZmRfb2Zmc2V0KTsNCj4gKw0KPiArCSAgcmVj b3JkX2Z1bGxfaW5jb21wbGV0ZV9pbnN0cnVjdGlvbi5pbnNuX251bSA9IG5ldG9yZGVyMzINCj4g KGluc25fbnVtKTsNCj4gKwkgIGlmIChzaWd2YWwgIT0gR0RCX1NJR05BTF8wKQ0KPiArCSAgICBy ZWNvcmRfZnVsbF9pbmNvbXBsZXRlX2luc3RydWN0aW9uLnNpZ3ZhbCA9IChnZGJfc2lnbmFsKSBz aWd2YWw7DQo+ICsNCj4gKwkgIGVmZl9jb3VudCA9IG5ldG9yZGVyMzIgKGVmZl9jb3VudCk7DQo+ ICsNCj4gKwkgIC8qIFRoaXMgZGVhbHMgd2l0aCBhbGwgdGhlIHNpZGUgZWZmZWN0cy4gICovDQo+ ICsJIHdoaWxlIChlZmZfY291bnQgPiAwKQ0KPiAgCSAgICB7DQoNClRoZXJlIGlzIG9uZSBzcGFj ZSB0b28gbXVjaCBpbmRlbnQuDQoNCj4gLQkgICAgY2FzZSByZWNvcmRfZnVsbF9yZWc6IC8qIHJl ZyAqLw0KPiAtCSAgICAgIC8qIEdldCByZWdpc3RlciBudW1iZXIgdG8gcmVnbnVtLiAgKi8NCj4g LQkgICAgICBiZmRjb3JlX3JlYWQgKCZjYmZkLCBvc2VjLCAmcmVnbnVtLCBzaXplb2YgKHJlZ251 bSksDQo+IC0JCQkgICAgJmJmZF9vZmZzZXQpOw0KPiAtCSAgICAgIHJlZ251bSA9IG5ldG9yZGVy MzIgKHJlZ251bSk7DQo+IC0NCj4gLQkgICAgICByZWMgPSByZWNvcmRfZnVsbF9yZWdfYWxsb2Mg KHJlZ2NhY2hlLCByZWdudW0pOw0KPiAtDQo+IC0JICAgICAgLyogR2V0IHZhbC4gICovDQo+IC0J ICAgICAgYmZkY29yZV9yZWFkICgmY2JmZCwgb3NlYywgcmVjb3JkX2Z1bGxfZ2V0X2xvYyAocmVj KSwNCj4gLQkJCSAgICByZWMtPnUucmVnLmxlbiwgJmJmZF9vZmZzZXQpOw0KPiAtDQo+IC0JICAg ICAgaWYgKHJlY29yZF9kZWJ1ZykNCj4gLQkJZ2RiX3ByaW50ZiAoZ2RiX3N0ZGxvZywNCj4gLQkJ CSAgICAiICBSZWFkaW5nIHJlZ2lzdGVyICVkICgxICINCj4gLQkJCSAgICAicGx1cyAlbHUgcGx1 cyAlZCBieXRlcylcbiIsDQo+IC0JCQkgICAgcmVjLT51LnJlZy5udW0sDQo+IC0JCQkgICAgKHVu c2lnbmVkIGxvbmcpIHNpemVvZiAocmVnbnVtKSwNCj4gLQkJCSAgICByZWMtPnUucmVnLmxlbik7 DQo+IC0JICAgICAgYnJlYWs7DQo+ICsJICAgICAgZWZmX2NvdW50LS07DQo+IA0KPiAtCSAgICBj YXNlIHJlY29yZF9mdWxsX21lbTogLyogbWVtICovDQo+IC0JICAgICAgLyogR2V0IGxlbi4gICov DQo+IC0JICAgICAgYmZkY29yZV9yZWFkICgmY2JmZCwgb3NlYywgJmxlbiwgc2l6ZW9mIChsZW4p LCAmYmZkX29mZnNldCk7DQo+IC0JICAgICAgbGVuID0gbmV0b3JkZXIzMiAobGVuKTsNCj4gLQ0K PiAtCSAgICAgIC8qIEdldCBhZGRyLiAgKi8NCj4gLQkgICAgICBiZmRjb3JlX3JlYWQgKCZjYmZk LCBvc2VjLCAmYWRkciwgc2l6ZW9mIChhZGRyKSwgJmJmZF9vZmZzZXQpOw0KPiAtCSAgICAgIGFk ZHIgPSBuZXRvcmRlcjY0IChhZGRyKTsNCj4gLQ0KPiAtCSAgICAgIHJlYyA9IHJlY29yZF9mdWxs X21lbV9hbGxvYyAoYWRkciwgbGVuKTsNCj4gLQ0KPiAtCSAgICAgIC8qIEdldCB2YWwuICAqLw0K PiAtCSAgICAgIGJmZGNvcmVfcmVhZCAoJmNiZmQsIG9zZWMsIHJlY29yZF9mdWxsX2dldF9sb2Mg KHJlYyksDQo+IC0JCQkgICAgcmVjLT51Lm1lbS5sZW4sICZiZmRfb2Zmc2V0KTsNCj4gLQ0KPiAt CSAgICAgIGlmIChyZWNvcmRfZGVidWcpDQo+IC0JCWdkYl9wcmludGYgKGdkYl9zdGRsb2csDQo+ IC0JCQkgICAgIiAgUmVhZGluZyBtZW1vcnkgJXMgKDEgcGx1cyAiDQo+IC0JCQkgICAgIiVsdSBw bHVzICVsdSBwbHVzICVkIGJ5dGVzKVxuIiwNCj4gLQkJCSAgICBwYWRkcmVzcyAoZ2V0X2N1cnJl bnRfYXJjaCAoKSwNCj4gLQkJCQkgICAgICByZWMtPnUubWVtLmFkZHIpLA0KPiAtCQkJICAgICh1 bnNpZ25lZCBsb25nKSBzaXplb2YgKGFkZHIpLA0KPiAtCQkJICAgICh1bnNpZ25lZCBsb25nKSBz aXplb2YgKGxlbiksDQo+IC0JCQkgICAgcmVjLT51Lm1lbS5sZW4pOw0KPiAtCSAgICAgIGJyZWFr Ow0KPiAtDQo+IC0JICAgIGNhc2UgcmVjb3JkX2Z1bGxfZW5kOiAvKiBlbmQgKi8NCj4gLQkgICAg ICByZWMgPSByZWNvcmRfZnVsbF9lbmRfYWxsb2MgKCk7DQo+IC0JICAgICAgcmVjb3JkX2Z1bGxf aW5zbl9udW0gKys7DQo+IC0NCj4gLQkgICAgICAvKiBHZXQgc2lnbmFsIHZhbHVlLiAgKi8NCj4g LQkgICAgICBiZmRjb3JlX3JlYWQgKCZjYmZkLCBvc2VjLCAmc2lnbmFsLCBzaXplb2YgKHNpZ25h bCksDQo+IC0JCQkgICAgJmJmZF9vZmZzZXQpOw0KPiAtCSAgICAgIHNpZ25hbCA9IG5ldG9yZGVy MzIgKHNpZ25hbCk7DQo+IC0JICAgICAgcmVjLT51LmVuZC5zaWd2YWwgPSAoZW51bSBnZGJfc2ln bmFsKSBzaWduYWw7DQo+IC0NCj4gLQkgICAgICAvKiBHZXQgaW5zbiBjb3VudC4gICovDQo+IC0J ICAgICAgYmZkY29yZV9yZWFkICgmY2JmZCwgb3NlYywgJmNvdW50LCBzaXplb2YgKGNvdW50KSwg JmJmZF9vZmZzZXQpOw0KPiAtCSAgICAgIGNvdW50ID0gbmV0b3JkZXIzMiAoY291bnQpOw0KPiAt CSAgICAgIHJlYy0+dS5lbmQuaW5zbl9udW0gPSBjb3VudDsNCj4gLQkgICAgICByZWNvcmRfZnVs bF9pbnNuX2NvdW50ID0gY291bnQgKyAxOw0KPiAtCSAgICAgIGlmIChyZWNvcmRfZGVidWcpDQo+ IC0JCWdkYl9wcmludGYgKGdkYl9zdGRsb2csDQo+IC0JCQkgICAgIiAgUmVhZGluZyByZWNvcmRf ZnVsbF9lbmQgKDEgKyAiDQo+IC0JCQkgICAgIiVsdSArICVsdSBieXRlcyksIG9mZnNldCA9PSAl c1xuIiwNCj4gLQkJCSAgICAodW5zaWduZWQgbG9uZykgc2l6ZW9mIChzaWduYWwpLA0KPiAtCQkJ ICAgICh1bnNpZ25lZCBsb25nKSBzaXplb2YgKGNvdW50KSwNCj4gLQkJCSAgICBwYWRkcmVzcyAo Z2V0X2N1cnJlbnRfYXJjaCAoKSwNCj4gLQkJCQkgICAgICBiZmRfb2Zmc2V0KSk7DQo+IC0JICAg ICAgYnJlYWs7DQo+IC0NCj4gLQkgICAgZGVmYXVsdDoNCj4gLQkgICAgICBlcnJvciAoXygiQmFk IGVudHJ5IHR5cGUgaW4gY29yZSBmaWxlICVwcy4iKSwNCj4gLQkJICAgICBzdHlsZWRfc3RyaW5n IChmaWxlX25hbWVfc3R5bGUuc3R5bGUgKCksDQo+IC0JCQkJICAgIGJmZF9nZXRfZmlsZW5hbWUg KCZjYmZkKSkpOw0KPiAtCSAgICAgIGJyZWFrOw0KPiArCSAgICAgIHJlY29yZF9mdWxsX3JlYWRf ZW50cnlfZnJvbV9iZmQgKCZjYmZkLCBvc2VjLCAmYmZkX29mZnNldCk7DQo+ICAJICAgIH0NCj4g DQo+IC0JICAvKiBBZGQgcmVjIHRvIHJlY29yZCBhcmNoIGxpc3QuICAqLw0KPiAtCSAgcmVjb3Jk X2Z1bGxfYXJjaF9saXN0X2FkZCAocmVjKTsNCj4gKwkgIHJlY29yZF9mdWxsX3NhdmVfaW5zdHJ1 Y3Rpb24gKCk7DQo+ICAJfQ0KPiAgICAgIH0NCj4gICAgY2F0Y2ggKGNvbnN0IGdkYl9leGNlcHRp b24gJmV4KQ0KPiAgICAgIHsNCj4gLSAgICAgIHJlY29yZF9mdWxsX2xpc3RfcmVsZWFzZSAocmVj b3JkX2Z1bGxfYXJjaF9saXN0X3RhaWwpOw0KPiArICAgICAgcmVjb3JkX2Z1bGxfcmVzZXRfaW5j b21wbGV0ZSAoKTsNCj4gICAgICAgIHRocm93Ow0KPiAgICAgIH0NCj4gDQo+IC0gIC8qIEFkZCBy ZWNvcmRfZnVsbF9hcmNoX2xpc3RfaGVhZCB0byB0aGUgZW5kIG9mIHJlY29yZCBsaXN0LiAgKi8N Cj4gLSAgcmVjb3JkX2Z1bGxfZmlyc3QubmV4dCA9IHJlY29yZF9mdWxsX2FyY2hfbGlzdF9oZWFk Ow0KPiAtICByZWNvcmRfZnVsbF9hcmNoX2xpc3RfaGVhZC0+cHJldiA9ICZyZWNvcmRfZnVsbF9m aXJzdDsNCj4gLSAgcmVjb3JkX2Z1bGxfYXJjaF9saXN0X3RhaWwtPm5leHQgPSBOVUxMOw0KPiAt ICByZWNvcmRfZnVsbF9saXN0ID0gJnJlY29yZF9mdWxsX2ZpcnN0Ow0KPiAtDQo+ICAgIC8qIFVw ZGF0ZSByZWNvcmRfZnVsbF9pbnNuX21heF9udW0uICAqLw0KPiAgICBpZiAocmVjb3JkX2Z1bGxf aW5zbl9udW0gPiByZWNvcmRfZnVsbF9pbnNuX21heF9udW0pDQo+ICAgICAgew0KPiBAQCAtMjUw NSw2ICsyMzM1LDEwIEBAIHJlY29yZF9mdWxsX3Jlc3RvcmUgKHN0cnVjdCBiZmQgJmNiZmQpDQo+ ICAJICAgICAgIHJlY29yZF9mdWxsX2luc25fbWF4X251bSk7DQo+ICAgICAgfQ0KPiANCj4gKyAg LyogV2hlbiBsb2FkaW5nIGEgcmVjb3JkaW5nLCB3ZSdsbCBhbHdheXMgc3RhcnQgYXQgdGhlIG9s ZGVzdCBwb3NzaWJsZQ0KPiArICAgICBpbnN0cnVjdGlvbiwgbm8gbWF0dGVyIHdoZXJlIHRoZSBv cmlnaW5hbCByZWNvcmRpbmcgd2FzIHN0b3BwZWQuICAqLw0KPiArICByZWNvcmRfZnVsbF9uZXh0 X2luc24gPSAwOw0KPiArDQo+ICAgIC8qIFN1Y2NlZWRlZC4gICovDQo+ICAgIGdkYl9wcmludGYg KF8oIlJlc3RvcmVkIHJlY29yZHMgZnJvbSBjb3JlIGZpbGUgJXMuXG4iKSwNCj4gIAkgICAgICBi ZmRfZ2V0X2ZpbGVuYW1lICgmY2JmZCkpOw0KPiBAQCAtMjUzOCwxMyArMjM3Miw3MyBAQCBjbWRf cmVjb3JkX2Z1bGxfcmVzdG9yZSAoY29uc3QgY2hhciAqYXJncywgaW50DQo+IGZyb21fdHR5KQ0K PiAgICByZWNvcmRfZnVsbF9vcGVuIChudWxscHRyLCBmcm9tX3R0eSk7DQo+ICB9DQo+IA0KPiAr c3RhdGljIHZvaWQNCj4gK3JlY29yZF9mdWxsX3dyaXRlX2VudHJ5X3RvX2JmZCAocmVjb3JkX2Z1 bGxfZW50cnkgJmVudHJ5LA0KPiArCQkJCWdkYl9iZmRfcmVmX3B0ciBvYmZkLA0KPiArCQkJCWFz ZWN0aW9uICpvc2VjLCBpbnQgKmJmZF9vZmZzZXQsDQo+ICsJCQkJc3RydWN0IGdkYmFyY2ggKmdk YmFyY2gpDQo+ICt7DQo+ICsgIC8qIFNhdmUgZW50cnkuICAqLw0KPiArICB1aW50OF90IHR5cGU7 DQo+ICsgIHVpbnQzMl90IHJlZ251bSwgbGVuOw0KPiArICB1aW50NjRfdCBhZGRyOw0KPiArDQo+ ICsgIHR5cGUgPSBlbnRyeS50eXBlOw0KPiArICBiZmRjb3JlX3dyaXRlIChvYmZkLmdldCAoKSwg b3NlYywgJnR5cGUsIHNpemVvZiAodHlwZSksIGJmZF9vZmZzZXQpOw0KPiArDQo+ICsgIHN3aXRj aCAoZW50cnkudHlwZSkNCj4gKyAgICB7DQo+ICsgICAgY2FzZSByZWNvcmRfZnVsbF9yZWc6IC8q IHJlZyAqLw0KPiArICAgICAgaWYgKHJlY29yZF9kZWJ1ZykNCj4gKwlnZGJfcHJpbnRmIChnZGJf c3RkbG9nLA0KPiArCQkgICAgIiAgV3JpdGluZyByZWdpc3RlciAlZCAoMSAiDQo+ICsJCSAgICAi cGx1cyAlbHUgcGx1cyAlZCBieXRlcylcbiIsDQo+ICsJCSAgICBlbnRyeS51LnJlZy5udW0sDQo+ ICsJCSAgICAodW5zaWduZWQgbG9uZykgc2l6ZW9mIChyZWdudW0pLA0KPiArCQkgICAgZW50cnku dS5yZWcubGVuKTsNCj4gKw0KPiArICAgICAgLyogV3JpdGUgcmVnbnVtLiAgKi8NCj4gKyAgICAg IHJlZ251bSA9IG5ldG9yZGVyMzIgKGVudHJ5LnUucmVnLm51bSk7DQo+ICsgICAgICBiZmRjb3Jl X3dyaXRlIChvYmZkLmdldCAoKSwgb3NlYywgJnJlZ251bSwgc2l6ZW9mIChyZWdudW0pLCBiZmRf b2Zmc2V0KTsNCj4gKw0KPiArICAgICAgLyogV3JpdGUgcmVndmFsLiAgKi8NCj4gKyAgICAgIGJm ZGNvcmVfd3JpdGUgKG9iZmQuZ2V0ICgpLCBvc2VjLCByZWNvcmRfZnVsbF9nZXRfbG9jICgmZW50 cnkpLA0KPiArCQkgICAgIGVudHJ5LnUucmVnLmxlbiwgYmZkX29mZnNldCk7DQo+ICsgICAgICBi cmVhazsNCj4gKw0KPiArICAgIGNhc2UgcmVjb3JkX2Z1bGxfbWVtOiAvKiBtZW0gKi8NCj4gKyAg ICAgIGlmIChyZWNvcmRfZGVidWcpDQo+ICsJZ2RiX3ByaW50ZiAoZ2RiX3N0ZGxvZywNCj4gKwkJ ICAgICIgIFdyaXRpbmcgbWVtb3J5ICVzICgxIHBsdXMgIg0KPiArCQkgICAgIiVsdSBwbHVzICVs dSBwbHVzICVkIGJ5dGVzKVxuIiwNCj4gKwkJICAgIHBhZGRyZXNzIChnZGJhcmNoLA0KPiArCQkJ ICAgICAgZW50cnkudS5tZW0uYWRkciksDQo+ICsJCSAgICAodW5zaWduZWQgbG9uZykgc2l6ZW9m IChhZGRyKSwNCj4gKwkJICAgICh1bnNpZ25lZCBsb25nKSBzaXplb2YgKGxlbiksDQo+ICsJCSAg ICBlbnRyeS51Lm1lbS5sZW4pOw0KPiArDQo+ICsgICAgICAvKiBXcml0ZSBtZW1sZW4uICAqLw0K PiArICAgICAgbGVuID0gbmV0b3JkZXIzMiAoZW50cnkudS5tZW0ubGVuKTsNCj4gKyAgICAgIGJm ZGNvcmVfd3JpdGUgKG9iZmQuZ2V0ICgpLCBvc2VjLCAmbGVuLCBzaXplb2YgKGxlbiksIGJmZF9v ZmZzZXQpOw0KPiArDQo+ICsgICAgICAvKiBXcml0ZSBtZW1hZGRyLiAgKi8NCj4gKyAgICAgIGFk ZHIgPSBuZXRvcmRlcjY0IChlbnRyeS51Lm1lbS5hZGRyKTsNCj4gKyAgICAgIGJmZGNvcmVfd3Jp dGUgKG9iZmQuZ2V0ICgpLCBvc2VjLCAmYWRkciwgc2l6ZW9mIChhZGRyKSwgYmZkX29mZnNldCk7 DQo+ICsNCj4gKyAgICAgIC8qIFdyaXRlIG1lbXZhbC4gICovDQo+ICsgICAgICBiZmRjb3JlX3dy aXRlIChvYmZkLmdldCAoKSwgb3NlYywgcmVjb3JkX2Z1bGxfZ2V0X2xvYyAoJmVudHJ5KSwNCj4g KwkJICAgICBlbnRyeS51Lm1lbS5sZW4sIGJmZF9vZmZzZXQpOw0KPiArICAgICAgYnJlYWs7DQo+ ICsgICAgfQ0KPiArDQo+ICt9DQo+ICsNCj4gIC8qIFNhdmUgdGhlIGV4ZWN1dGlvbiBsb2cgdG8g YSBmaWxlLiAgV2UgdXNlIGEgbW9kaWZpZWQgZWxmIGNvcmVmaWxlDQo+ICAgICBmb3JtYXQsIHdp dGggYW4gZXh0cmEgc2VjdGlvbiBmb3Igb3VyIGRhdGEuICAqLw0KPiANCj4gIHZvaWQNCj4gIHJl Y29yZF9mdWxsX2Jhc2VfdGFyZ2V0OjpzYXZlX3JlY29yZCAoY29uc3QgY2hhciAqcmVjZmlsZW5h bWUpDQo+ICB7DQo+IC0gIHN0cnVjdCByZWNvcmRfZnVsbF9lbnRyeSAqY3VyX3JlY29yZF9mdWxs X2xpc3Q7DQo+ICAgIHVpbnQzMl90IG1hZ2ljOw0KPiAgICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJj aDsNCj4gICAgaW50IHNhdmVfc2l6ZSA9IDA7DQo+IEBAIC0yNTYyLDkgKzI0NTYsNiBAQCByZWNv cmRfZnVsbF9iYXNlX3RhcmdldDo6c2F2ZV9yZWNvcmQgKGNvbnN0IGNoYXINCj4gKnJlY2ZpbGVu YW1lKQ0KPiAgICAvKiBBcnJhbmdlIHRvIHJlbW92ZSB0aGUgb3V0cHV0IGZpbGUgb24gZmFpbHVy ZS4gICovDQo+ICAgIGdkYjo6dW5saW5rZXIgdW5saW5rX2ZpbGUgKHJlY2ZpbGVuYW1lKTsNCj4g DQo+IC0gIC8qIFNhdmUgdGhlIGN1cnJlbnQgcmVjb3JkIGVudHJ5IHRvICJjdXJfcmVjb3JkX2Z1 bGxfbGlzdCIuICAqLw0KPiAtICBjdXJfcmVjb3JkX2Z1bGxfbGlzdCA9IHJlY29yZF9mdWxsX2xp c3Q7DQo+IC0NCj4gICAgLyogR2V0IHRoZSB2YWx1ZXMgb2YgcmVnY2FjaGUgYW5kIGdkYmFyY2gu ICAqLw0KPiAgICByZWdjYWNoZSAqcmVnY2FjaGUgPSBnZXRfdGhyZWFkX3JlZ2NhY2hlIChpbmZl cmlvcl90aHJlYWQgKCkpOw0KPiAgICBnZGJhcmNoID0gcmVnY2FjaGUtPmFyY2ggKCk7DQo+IEBA IC0yNTc0LDM0ICsyNDY1LDI3IEBAIHJlY29yZF9mdWxsX2Jhc2VfdGFyZ2V0OjpzYXZlX3JlY29y ZCAoY29uc3QNCj4gY2hhciAqcmVjZmlsZW5hbWUpDQo+ICAgICAgPSByZWNvcmRfZnVsbF9nZGJf b3BlcmF0aW9uX2Rpc2FibGVfc2V0ICgpOw0KPiANCj4gICAgLyogUmV2ZXJzZSBleGVjdXRlIHRv IHRoZSBiZWdpbiBvZiByZWNvcmQgbGlzdC4gICovDQo+IC0gIHdoaWxlICgxKQ0KPiAtICAgIHsN Cj4gLSAgICAgIC8qIENoZWNrIGZvciBiZWdpbm5pbmcgYW5kIGVuZCBvZiBsb2cuICAqLw0KPiAt ICAgICAgaWYgKHJlY29yZF9mdWxsX2xpc3QgPT0gJnJlY29yZF9mdWxsX2ZpcnN0KQ0KPiAtCWJy ZWFrOw0KPiAtDQo+IC0gICAgICByZWNvcmRfZnVsbF9leGVjX2luc24gKHJlZ2NhY2hlLCBnZGJh cmNoLCByZWNvcmRfZnVsbF9saXN0KTsNCj4gLQ0KPiAtICAgICAgaWYgKHJlY29yZF9mdWxsX2xp c3QtPnByZXYpDQo+IC0JcmVjb3JkX2Z1bGxfbGlzdCA9IHJlY29yZF9mdWxsX2xpc3QtPnByZXY7 DQo+IC0gICAgfQ0KPiArICBmb3IgKGludCBpID0gcmVjb3JkX2Z1bGxfbmV4dF9pbnNuIC0gMTsg aSA+PSAwOyBpLS0pDQo+ICsgICAgcmVjb3JkX2Z1bGxfZXhlY19pbnNuIChyZWdjYWNoZSwgZ2Ri YXJjaCwNCj4gKwkJCSAgIHJlY29yZF9mdWxsX2xpc3RbaV0pOw0KPiANCj4gICAgLyogQ29tcHV0 ZSB0aGUgc2l6ZSBuZWVkZWQgZm9yIHRoZSBleHRyYSBiZmQgc2VjdGlvbi4gICovDQo+ICAgIHNh dmVfc2l6ZSA9IDQ7CS8qIG1hZ2ljIGNvb2tpZSAqLw0KPiAtICBmb3IgKHJlY29yZF9mdWxsX2xp c3QgPSByZWNvcmRfZnVsbF9maXJzdC5uZXh0OyByZWNvcmRfZnVsbF9saXN0Ow0KPiAtICAgICAg IHJlY29yZF9mdWxsX2xpc3QgPSByZWNvcmRfZnVsbF9saXN0LT5uZXh0KQ0KPiAtICAgIHN3aXRj aCAocmVjb3JkX2Z1bGxfbGlzdC0+dHlwZSkNCj4gLSAgICAgIHsNCj4gLSAgICAgIGNhc2UgcmVj b3JkX2Z1bGxfZW5kOg0KPiAtCXNhdmVfc2l6ZSArPSAxICsgNCArIDQ7DQo+IC0JYnJlYWs7DQo+ IC0gICAgICBjYXNlIHJlY29yZF9mdWxsX3JlZzoNCj4gLQlzYXZlX3NpemUgKz0gMSArIDQgKyBy ZWNvcmRfZnVsbF9saXN0LT51LnJlZy5sZW47DQo+IC0JYnJlYWs7DQo+IC0gICAgICBjYXNlIHJl Y29yZF9mdWxsX21lbToNCj4gLQlzYXZlX3NpemUgKz0gMSArIDQgKyA4ICsgcmVjb3JkX2Z1bGxf bGlzdC0+dS5tZW0ubGVuOw0KPiAtCWJyZWFrOw0KPiAtICAgICAgfQ0KPiArICBmb3IgKGludCBp ID0gcmVjb3JkX2Z1bGxfbGlzdC5zaXplICgpIC0gMTsgaSA+PSAwOyBpLS0pDQo+ICsgICAgew0K PiArICAgICAgLyogTnVtYmVyIG9mIGVmZmVjdHMgb2YgYW4gaW5zdHJ1Y3Rpb24uICAqLw0KPiAr ICAgICAgc2F2ZV9zaXplICs9IHNpemVvZiAodWludDMyX3QpICsgc2l6ZW9mICh1aW50OF90KSAr IHNpemVvZiAodWludDMyX3QpOw0KPiArICAgICAgZm9yIChhdXRvICZlbnRyeSA6IHJlY29yZF9m dWxsX2xpc3RbaV0uZWZmZWN0cykNCj4gKwlzd2l0Y2ggKGVudHJ5LnR5cGUpDQo+ICsJICB7DQo+ ICsJICBjYXNlIHJlY29yZF9mdWxsX3JlZzoNCj4gKwkgICAgc2F2ZV9zaXplICs9IDEgKyA0ICsg ZW50cnkudS5yZWcubGVuOw0KPiArCSAgICBicmVhazsNCj4gKwkgIGNhc2UgcmVjb3JkX2Z1bGxf bWVtOg0KPiArCSAgICBzYXZlX3NpemUgKz0gMSArIDQgKyA4ICsgZW50cnkudS5tZW0ubGVuOw0K PiArCSAgICBicmVhazsNCj4gKwkgIH0NCj4gKyAgICB9DQo+IA0KPiAgICAvKiBNYWtlIHRoZSBu ZXcgYmZkIHNlY3Rpb24uICAqLw0KPiAgICBvc2VjID0gYmZkX21ha2Vfc2VjdGlvbl9hbnl3YXlf d2l0aF9mbGFncyAob2JmZC5nZXQgKCksICJwcmVjb3JkIiwNCj4gQEAgLTI2MzAsMTA4ICsyNTE0 LDMyIEBAIHJlY29yZF9mdWxsX2Jhc2VfdGFyZ2V0OjpzYXZlX3JlY29yZCAoY29uc3QNCj4gY2hh ciAqcmVjZmlsZW5hbWUpDQo+IA0KPiAgICAvKiBTYXZlIHRoZSBlbnRyaWVzIHRvIHJlY2ZkIGFu ZCBmb3J3YXJkIGV4ZWN1dGUgdG8gdGhlIGVuZCBvZg0KPiAgICAgICByZWNvcmQgbGlzdC4gICov DQo+IC0gIHJlY29yZF9mdWxsX2xpc3QgPSAmcmVjb3JkX2Z1bGxfZmlyc3Q7DQo+IC0gIHdoaWxl ICgxKQ0KPiArICBmb3IgKGludCBpID0gMDsgaSA8IHJlY29yZF9mdWxsX2xpc3Quc2l6ZSAoKTsg aSsrKQ0KPiAgICAgIHsNCj4gLSAgICAgIC8qIFNhdmUgZW50cnkuICAqLw0KPiAtICAgICAgaWYg KHJlY29yZF9mdWxsX2xpc3QgIT0gJnJlY29yZF9mdWxsX2ZpcnN0KQ0KPiArICAgICAgdWludDMy X3QgZWZmX2NvdW50ID0gKHVpbnQzMl90KSByZWNvcmRfZnVsbF9saXN0W2ldLmVmZmVjdHMuc2l6 ZSAoKTsNCj4gKyAgICAgIHVpbnQzMl90IGluc25fbnVtID0gcmVjb3JkX2Z1bGxfbGlzdFtpXS5p bnNuX251bTsNCj4gKyAgICAgIHVpbnQ4X3Qgc2lndmFsID0gKHJlY29yZF9mdWxsX2xpc3RbaV0u c2lndmFsLmhhc192YWx1ZSAoKSkNCj4gKwkJCSA/IHJlY29yZF9mdWxsX2xpc3RbaV0uc2lndmFs LnZhbHVlICgpDQo+ICsJCQkgOiBHREJfU0lHTkFMXzA7DQo+ICsNCj4gKyAgICAgIC8qIFNpZ25h bC4gICovDQo+ICsgICAgICBiZmRjb3JlX3dyaXRlIChvYmZkLmdldCAoKSwgb3NlYywgJnNpZ3Zh bCwgc2l6ZW9mIChzaWd2YWwpLCAmYmZkX29mZnNldCk7DQo+ICsgICAgICBlZmZfY291bnQgPSBu ZXRvcmRlcjMyIChlZmZfY291bnQpOw0KPiArICAgICAgLyogTnVtYmVyIG9mIGVmZmVjdHMuICAq Lw0KPiArICAgICAgYmZkY29yZV93cml0ZSAob2JmZC5nZXQgKCksIG9zZWMsICZlZmZfY291bnQs IHNpemVvZiAoZWZmX2NvdW50KSwNCj4gKwkJICAgICAmYmZkX29mZnNldCk7DQo+ICsgICAgICAv KiBJbnN0cnVjdGlvbiBudW1iZXIuICAqLw0KPiArICAgICAgYmZkY29yZV93cml0ZSAob2JmZC5n ZXQgKCksIG9zZWMsICZpbnNuX251bSwgc2l6ZW9mICh1aW50MzJfdCksDQo+ICsJCSAgICAgJmJm ZF9vZmZzZXQpOw0KPiArDQo+ICsgICAgICBmb3IgKGF1dG8gJmVudHJ5IDogcmVjb3JkX2Z1bGxf bGlzdFtpXS5lZmZlY3RzKQ0KPiAgCXsNCj4gLQkgIHVpbnQ4X3QgdHlwZTsNCj4gLQkgIHVpbnQz Ml90IHJlZ251bSwgbGVuLCBzaWduYWwsIGNvdW50Ow0KPiAtCSAgdWludDY0X3QgYWRkcjsNCj4g LQ0KPiAtCSAgdHlwZSA9IHJlY29yZF9mdWxsX2xpc3QtPnR5cGU7DQo+IC0JICBiZmRjb3JlX3dy aXRlIChvYmZkLmdldCAoKSwgb3NlYywgJnR5cGUsIHNpemVvZiAodHlwZSksICZiZmRfb2Zmc2V0 KTsNCj4gLQ0KPiAtCSAgc3dpdGNoIChyZWNvcmRfZnVsbF9saXN0LT50eXBlKQ0KPiAtCSAgICB7 DQo+IC0JICAgIGNhc2UgcmVjb3JkX2Z1bGxfcmVnOiAvKiByZWcgKi8NCj4gLQkgICAgICBpZiAo cmVjb3JkX2RlYnVnKQ0KPiAtCQlnZGJfcHJpbnRmIChnZGJfc3RkbG9nLA0KPiAtCQkJICAgICIg IFdyaXRpbmcgcmVnaXN0ZXIgJWQgKDEgIg0KPiAtCQkJICAgICJwbHVzICVsdSBwbHVzICVkIGJ5 dGVzKVxuIiwNCj4gLQkJCSAgICByZWNvcmRfZnVsbF9saXN0LT51LnJlZy5udW0sDQo+IC0JCQkg ICAgKHVuc2lnbmVkIGxvbmcpIHNpemVvZiAocmVnbnVtKSwNCj4gLQkJCSAgICByZWNvcmRfZnVs bF9saXN0LT51LnJlZy5sZW4pOw0KPiAtDQo+IC0JICAgICAgLyogV3JpdGUgcmVnbnVtLiAgKi8N Cj4gLQkgICAgICByZWdudW0gPSBuZXRvcmRlcjMyIChyZWNvcmRfZnVsbF9saXN0LT51LnJlZy5u dW0pOw0KPiAtCSAgICAgIGJmZGNvcmVfd3JpdGUgKG9iZmQuZ2V0ICgpLCBvc2VjLCAmcmVnbnVt LA0KPiAtCQkJICAgICBzaXplb2YgKHJlZ251bSksICZiZmRfb2Zmc2V0KTsNCj4gLQ0KPiAtCSAg ICAgIC8qIFdyaXRlIHJlZ3ZhbC4gICovDQo+IC0JICAgICAgYmZkY29yZV93cml0ZSAob2JmZC5n ZXQgKCksIG9zZWMsDQo+IC0JCQkgICAgIHJlY29yZF9mdWxsX2dldF9sb2MgKHJlY29yZF9mdWxs X2xpc3QpLA0KPiAtCQkJICAgICByZWNvcmRfZnVsbF9saXN0LT51LnJlZy5sZW4sICZiZmRfb2Zm c2V0KTsNCj4gLQkgICAgICBicmVhazsNCj4gLQ0KPiAtCSAgICBjYXNlIHJlY29yZF9mdWxsX21l bTogLyogbWVtICovDQo+IC0JICAgICAgaWYgKHJlY29yZF9kZWJ1ZykNCj4gLQkJZ2RiX3ByaW50 ZiAoZ2RiX3N0ZGxvZywNCj4gLQkJCSAgICAiICBXcml0aW5nIG1lbW9yeSAlcyAoMSBwbHVzICIN Cj4gLQkJCSAgICAiJWx1IHBsdXMgJWx1IHBsdXMgJWQgYnl0ZXMpXG4iLA0KPiAtCQkJICAgIHBh ZGRyZXNzIChnZGJhcmNoLA0KPiAtCQkJCSAgICAgIHJlY29yZF9mdWxsX2xpc3QtPnUubWVtLmFk ZHIpLA0KPiAtCQkJICAgICh1bnNpZ25lZCBsb25nKSBzaXplb2YgKGFkZHIpLA0KPiAtCQkJICAg ICh1bnNpZ25lZCBsb25nKSBzaXplb2YgKGxlbiksDQo+IC0JCQkgICAgcmVjb3JkX2Z1bGxfbGlz dC0+dS5tZW0ubGVuKTsNCj4gLQ0KPiAtCSAgICAgIC8qIFdyaXRlIG1lbWxlbi4gICovDQo+IC0J ICAgICAgbGVuID0gbmV0b3JkZXIzMiAocmVjb3JkX2Z1bGxfbGlzdC0+dS5tZW0ubGVuKTsNCj4g LQkgICAgICBiZmRjb3JlX3dyaXRlIChvYmZkLmdldCAoKSwgb3NlYywgJmxlbiwgc2l6ZW9mIChs ZW4pLA0KPiAtCQkJICAgICAmYmZkX29mZnNldCk7DQo+IC0NCj4gLQkgICAgICAvKiBXcml0ZSBt ZW1hZGRyLiAgKi8NCj4gLQkgICAgICBhZGRyID0gbmV0b3JkZXI2NCAocmVjb3JkX2Z1bGxfbGlz dC0+dS5tZW0uYWRkcik7DQo+IC0JICAgICAgYmZkY29yZV93cml0ZSAob2JmZC5nZXQgKCksIG9z ZWMsICZhZGRyLA0KPiAtCQkJICAgICBzaXplb2YgKGFkZHIpLCAmYmZkX29mZnNldCk7DQo+IC0N Cj4gLQkgICAgICAvKiBXcml0ZSBtZW12YWwuICAqLw0KPiAtCSAgICAgIGJmZGNvcmVfd3JpdGUg KG9iZmQuZ2V0ICgpLCBvc2VjLA0KPiAtCQkJICAgICByZWNvcmRfZnVsbF9nZXRfbG9jIChyZWNv cmRfZnVsbF9saXN0KSwNCj4gLQkJCSAgICAgcmVjb3JkX2Z1bGxfbGlzdC0+dS5tZW0ubGVuLCAm YmZkX29mZnNldCk7DQo+IC0JICAgICAgYnJlYWs7DQo+IC0NCj4gLQkgICAgICBjYXNlIHJlY29y ZF9mdWxsX2VuZDoNCj4gLQkJaWYgKHJlY29yZF9kZWJ1ZykNCj4gLQkJICBnZGJfcHJpbnRmIChn ZGJfc3RkbG9nLA0KPiAtCQkJICAgICAgIiAgV3JpdGluZyByZWNvcmRfZnVsbF9lbmQgKDEgKyAi DQo+IC0JCQkgICAgICAiJWx1ICsgJWx1IGJ5dGVzKVxuIiwNCj4gLQkJCSAgICAgICh1bnNpZ25l ZCBsb25nKSBzaXplb2YgKHNpZ25hbCksDQo+IC0JCQkgICAgICAodW5zaWduZWQgbG9uZykgc2l6 ZW9mIChjb3VudCkpOw0KPiAtCQkvKiBXcml0ZSBzaWduYWwgdmFsdWUuICAqLw0KPiAtCQlzaWdu YWwgPSBuZXRvcmRlcjMyIChyZWNvcmRfZnVsbF9saXN0LT51LmVuZC5zaWd2YWwpOw0KPiAtCQli ZmRjb3JlX3dyaXRlIChvYmZkLmdldCAoKSwgb3NlYywgJnNpZ25hbCwNCj4gLQkJCSAgICAgICBz aXplb2YgKHNpZ25hbCksICZiZmRfb2Zmc2V0KTsNCj4gLQ0KPiAtCQkvKiBXcml0ZSBpbnNuIGNv dW50LiAgKi8NCj4gLQkJY291bnQgPSBuZXRvcmRlcjMyIChyZWNvcmRfZnVsbF9saXN0LT51LmVu ZC5pbnNuX251bSk7DQo+IC0JCWJmZGNvcmVfd3JpdGUgKG9iZmQuZ2V0ICgpLCBvc2VjLCAmY291 bnQsDQo+IC0JCQkgICAgICAgc2l6ZW9mIChjb3VudCksICZiZmRfb2Zmc2V0KTsNCj4gLQkJYnJl YWs7DQo+IC0JICAgIH0NCj4gKwkgIHJlY29yZF9mdWxsX3dyaXRlX2VudHJ5X3RvX2JmZCAoZW50 cnksIG9iZmQsIG9zZWMsICZiZmRfb2Zmc2V0LA0KPiArCQkJCQkgIGdkYmFyY2gpOw0KPiAgCX0N Cj4gLQ0KPiAgICAgICAgLyogRXhlY3V0ZSBlbnRyeS4gICovDQo+IC0gICAgICByZWNvcmRfZnVs bF9leGVjX2luc24gKHJlZ2NhY2hlLCBnZGJhcmNoLCByZWNvcmRfZnVsbF9saXN0KTsNCj4gLQ0K PiAtICAgICAgaWYgKHJlY29yZF9mdWxsX2xpc3QtPm5leHQpDQo+IC0JcmVjb3JkX2Z1bGxfbGlz dCA9IHJlY29yZF9mdWxsX2xpc3QtPm5leHQ7DQo+IC0gICAgICBlbHNlDQo+IC0JYnJlYWs7DQo+ IC0gICAgfQ0KPiAtDQo+IC0gIC8qIFJldmVyc2UgZXhlY3V0ZSB0byBjdXJfcmVjb3JkX2Z1bGxf bGlzdC4gICovDQo+IC0gIHdoaWxlICgxKQ0KPiAtICAgIHsNCj4gLSAgICAgIC8qIENoZWNrIGZv ciBiZWdpbm5pbmcgYW5kIGVuZCBvZiBsb2cuICAqLw0KPiAtICAgICAgaWYgKHJlY29yZF9mdWxs X2xpc3QgPT0gY3VyX3JlY29yZF9mdWxsX2xpc3QpDQo+IC0JYnJlYWs7DQo+IC0NCj4gLSAgICAg IHJlY29yZF9mdWxsX2V4ZWNfaW5zbiAocmVnY2FjaGUsIGdkYmFyY2gsIHJlY29yZF9mdWxsX2xp c3QpOw0KPiAtDQo+IC0gICAgICBpZiAocmVjb3JkX2Z1bGxfbGlzdC0+cHJldikNCj4gLQlyZWNv cmRfZnVsbF9saXN0ID0gcmVjb3JkX2Z1bGxfbGlzdC0+cHJldjsNCj4gKyAgICAgIGlmIChpIDwg cmVjb3JkX2Z1bGxfbmV4dF9pbnNuKQ0KPiArCXJlY29yZF9mdWxsX2V4ZWNfaW5zbiAocmVnY2Fj aGUsIGdkYmFyY2gsIHJlY29yZF9mdWxsX2xpc3RbaV0pOw0KPiAgICAgIH0NCj4gDQo+ICAgIHVu bGlua19maWxlLmtlZXAgKCk7DQo+IEBAIC0yNzQ2LDcgKzI1NTQsNyBAQCByZWNvcmRfZnVsbF9i YXNlX3RhcmdldDo6c2F2ZV9yZWNvcmQgKGNvbnN0IGNoYXINCj4gKnJlY2ZpbGVuYW1lKQ0KPiAg ICAgY29ycmVzcG9uZGluZ2x5LiAgKi8NCj4gDQo+ICBzdGF0aWMgdm9pZA0KPiAtcmVjb3JkX2Z1 bGxfZ290b19pbnNuIChzdHJ1Y3QgcmVjb3JkX2Z1bGxfZW50cnkgKmVudHJ5LA0KPiArcmVjb3Jk X2Z1bGxfZ290b19pbnNuIChzaXplX3QgdGFyZ2V0X2luc24sDQo+ICAJCSAgICAgICBlbnVtIGV4 ZWNfZGlyZWN0aW9uX2tpbmQgZGlyKQ0KDQpZb3UgY291bGQgZXhwbGFpbiB0aGUgbmV3IHBhcmFt ZXRlciBpbiB0aGUgZnVuY3Rpb24gZGVzY3JpcHRpb24uDQoNCj4gIHsNCj4gICAgc2NvcGVkX3Jl c3RvcmUgcmVzdG9yZV9vcGVyYXRpb25fZGlzYWJsZQ0KPiBAQCAtMjc1NywxNyArMjU2NSwxMiBA QCByZWNvcmRfZnVsbF9nb3RvX2luc24gKHN0cnVjdCByZWNvcmRfZnVsbF9lbnRyeQ0KPiAqZW50 cnksDQo+ICAgIC8qIEFzc3VtZSBldmVyeXRoaW5nIGlzIHZhbGlkOiB3ZSB3aWxsIGhpdCB0aGUg ZW50cnksDQo+ICAgICAgIGFuZCB3ZSB3aWxsIG5vdCBoaXQgdGhlIGVuZCBvZiB0aGUgcmVjb3Jk aW5nLiAgKi8NCj4gDQo+IC0gIGlmIChkaXIgPT0gRVhFQ19GT1JXQVJEKQ0KPiAtICAgIHJlY29y ZF9mdWxsX2xpc3QgPSByZWNvcmRfZnVsbF9saXN0LT5uZXh0Ow0KPiAtDQo+IC0gIGRvDQo+IC0g ICAgew0KPiAtICAgICAgcmVjb3JkX2Z1bGxfZXhlY19pbnNuIChyZWdjYWNoZSwgZ2RiYXJjaCwg cmVjb3JkX2Z1bGxfbGlzdCk7DQo+IC0gICAgICBpZiAoZGlyID09IEVYRUNfUkVWRVJTRSkNCj4g LQlyZWNvcmRfZnVsbF9saXN0ID0gcmVjb3JkX2Z1bGxfbGlzdC0+cHJldjsNCj4gLSAgICAgIGVs c2UNCj4gLQlyZWNvcmRfZnVsbF9saXN0ID0gcmVjb3JkX2Z1bGxfbGlzdC0+bmV4dDsNCj4gLSAg ICB9IHdoaWxlIChyZWNvcmRfZnVsbF9saXN0ICE9IGVudHJ5KTsNCj4gKyAgaWYgKGRpciA9PSBF WEVDX1JFVkVSU0UpDQo+ICsgICAgZm9yIChpbnQgaSA9IHJlY29yZF9mdWxsX25leHRfaW5zbjsg aSA+IHRhcmdldF9pbnNuOyBpLS0pDQo+ICsgICAgICByZWNvcmRfZnVsbF9leGVjX2luc24gKHJl Z2NhY2hlLCBnZGJhcmNoLCByZWNvcmRfZnVsbF9saXN0W2kgLSAxXSk7DQo+ICsgIGVsc2UNCj4g KyAgICBmb3IgKGludCBpID0gcmVjb3JkX2Z1bGxfbmV4dF9pbnNuOyBpIDwgdGFyZ2V0X2luc247 IGkrKykNCj4gKyAgICAgIHJlY29yZF9mdWxsX2V4ZWNfaW5zbiAocmVnY2FjaGUsIGdkYmFyY2gs IHJlY29yZF9mdWxsX2xpc3RbaV0pOw0KPiAgfQ0KPiANCj4gIC8qIEFsaWFzIGZvciAidGFyZ2V0 IHJlY29yZC1mdWxsIi4gICovDQo+IEBAIC0yNzk4LDYxICsyNjAxLDM2IEBAIHNldF9yZWNvcmRf ZnVsbF9pbnNuX21heF9udW0gKGNvbnN0IGNoYXINCj4gKmFyZ3MsIGludCBmcm9tX3R0eSwNCj4g IHN0YXRpYyB2b2lkDQo+ICBtYWludGVuYW5jZV9wcmludF9yZWNvcmRfaW5zdHJ1Y3Rpb24gKGNv bnN0IGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0eSkNCj4gIHsNCj4gLSAgc3RydWN0IHJlY29yZF9m dWxsX2VudHJ5ICp0b19wcmludCA9IHJlY29yZF9mdWxsX2xpc3Q7DQo+ICsgIGlmIChyZWNvcmRf ZnVsbF9saXN0LmVtcHR5ICgpKQ0KPiArICAgIGVycm9yIChfKCJOb3QgZW5vdWdoIHJlY29yZGVk IGhpc3RvcnkiKSk7DQo+IA0KPiArICBpbnQgb2Zmc2V0ID0gcmVjb3JkX2Z1bGxfbmV4dF9pbnNu IC0gMTsNCj4gKyAgLyogUmVkdWNlIHRoZSBvZmZzZXQgYnkgMSBpZiB0aGUgcmVjb3JkX2Z1bGxf bmV4dF9pbnNuIGlzIGFmdGVyIHRoZSBlbmQNCj4gKyAgICAgc28gdGhhdCB3ZSBzaG93IHRoZSBs YXN0IHJlY29yZGVkIGluc3RydWN0aW9uIGluc3RlYWQgb2YgY3Jhc2hpbmcuICAqLw0KPiArICBp ZiAob2Zmc2V0ID09IHJlY29yZF9mdWxsX2xpc3Quc2l6ZSAoKSkNCj4gKyAgICBvZmZzZXQtLTsN Cj4gICAgaWYgKGFyZ3MgIT0gbnVsbHB0cikNCj4gICAgICB7DQo+IC0gICAgICBpbnQgb2Zmc2V0 ID0gdmFsdWVfYXNfbG9uZyAocGFyc2VfYW5kX2V2YWwgKGFyZ3MpKTsNCj4gLSAgICAgIGlmIChv ZmZzZXQgPiAwKQ0KPiAtCXsNCj4gLQkgIC8qIE1vdmUgZm9yd2FyZCBPRkZTRVQgaW5zdHJ1Y3Rp b25zLiAgV2Uga25vdyB3ZSBmb3VuZCB0aGUNCj4gLQkgICAgIGVuZCBvZiBhbiBpbnN0cnVjdGlv biB3aGVuIHRvX3ByaW50LT50eXBlIGlzIHJlY29yZF9mdWxsX2VuZC4gICovDQo+IC0JICB3aGls ZSAodG9fcHJpbnQtPm5leHQgIT0gbnVsbHB0ciAmJiBvZmZzZXQgPiAwKQ0KPiAtCSAgICB7DQo+ IC0JICAgICAgdG9fcHJpbnQgPSB0b19wcmludC0+bmV4dDsNCj4gLQkgICAgICBpZiAodG9fcHJp bnQtPnR5cGUgPT0gcmVjb3JkX2Z1bGxfZW5kKQ0KPiAtCQlvZmZzZXQtLTsNCj4gLQkgICAgfQ0K PiAtCSAgaWYgKG9mZnNldCAhPSAwKQ0KPiAtCSAgICBlcnJvciAoXygiTm90IGVub3VnaCByZWNv cmRlZCBoaXN0b3J5IikpOw0KPiAtCX0NCj4gLSAgICAgIGVsc2UNCj4gLQl7DQo+IC0JICB3aGls ZSAodG9fcHJpbnQtPnByZXYgIT0gbnVsbHB0ciAmJiBvZmZzZXQgPCAwKQ0KPiAtCSAgICB7DQo+ IC0JICAgICAgdG9fcHJpbnQgPSB0b19wcmludC0+cHJldjsNCj4gLQkgICAgICBpZiAodG9fcHJp bnQtPnR5cGUgPT0gcmVjb3JkX2Z1bGxfZW5kKQ0KPiAtCQlvZmZzZXQrKzsNCj4gLQkgICAgfQ0K PiAtCSAgaWYgKG9mZnNldCAhPSAwKQ0KPiAtCSAgICBlcnJvciAoXygiTm90IGVub3VnaCByZWNv cmRlZCBoaXN0b3J5IikpOw0KPiAtCX0NCj4gKyAgICAgIG9mZnNldCArPSB2YWx1ZV9hc19sb25n IChwYXJzZV9hbmRfZXZhbCAoYXJncykpOw0KPiArICAgICAgaWYgKG9mZnNldCA+PSByZWNvcmRf ZnVsbF9saXN0LnNpemUgKCkgfHwgb2Zmc2V0IDwgMCkNCj4gKwllcnJvciAoXygiTm90IGVub3Vn aCByZWNvcmRlZCBoaXN0b3J5IikpOw0KPiAgICAgIH0NCj4gLSAgZ2RiX2Fzc2VydCAodG9fcHJp bnQgIT0gbnVsbHB0cik7DQo+ICsgIGF1dG8gdG9fcHJpbnQgPSByZWNvcmRfZnVsbF9saXN0LmJl Z2luICgpICsgb2Zmc2V0Ow0KPiANCj4gICAgZ2RiYXJjaCAqYXJjaCA9IGN1cnJlbnRfaW5mZXJp b3IgKCktPmFyY2ggKCk7DQo+IA0KPiAtICAvKiBHbyBiYWNrIHRvIHRoZSBzdGFydCBvZiB0aGUg aW5zdHJ1Y3Rpb24uICAqLw0KPiAtICB3aGlsZSAodG9fcHJpbnQtPnByZXYgIT0gbnVsbHB0ciAm JiB0b19wcmludC0+cHJldi0+dHlwZSAhPSByZWNvcmRfZnVsbF9lbmQpDQo+IC0gICAgdG9fcHJp bnQgPSB0b19wcmludC0+cHJldjsNCj4gLQ0KPiAtICAvKiBpZiB3ZSdyZSBpbiB0aGUgZmlyc3Qg cmVjb3JkLCB0aGVyZSBhcmUgbm8gYWN0dWFsIGluc3RydWN0aW9ucw0KPiAtICAgICByZWNvcmRl ZC4gIFdhcm4gdGhlIHVzZXIgYW5kIGxlYXZlLiAgKi8NCj4gLSAgaWYgKHRvX3ByaW50ID09ICZy ZWNvcmRfZnVsbF9maXJzdCkNCj4gLSAgICBlcnJvciAoXygiTm90IGVub3VnaCByZWNvcmRlZCBo aXN0b3J5IikpOw0KPiAtDQo+IC0gIHdoaWxlICh0b19wcmludC0+dHlwZSAhPSByZWNvcmRfZnVs bF9lbmQpDQo+ICsgIGZvciAoYXV0byBlbnRyeSA6IHRvX3ByaW50LT5lZmZlY3RzKQ0KPiAgICAg IHsNCj4gLSAgICAgIHN3aXRjaCAodG9fcHJpbnQtPnR5cGUpDQo+ICsgICAgICBzd2l0Y2ggKGVu dHJ5LnR5cGUpDQo+ICAJew0KPiAgCSAgY2FzZSByZWNvcmRfZnVsbF9yZWc6DQo+ICAJICAgIHsN Cj4gLQkgICAgICB0eXBlICpyZWd0eXBlID0gZ2RiYXJjaF9yZWdpc3Rlcl90eXBlIChhcmNoLCB0 b19wcmludC0NCj4gPnUucmVnLm51bSk7DQo+ICsJICAgICAgdHlwZSAqcmVndHlwZSA9IGdkYmFy Y2hfcmVnaXN0ZXJfdHlwZSAoYXJjaCwgZW50cnkudS5yZWcubnVtKTsNCj4gIAkgICAgICB2YWx1 ZSAqdmFsDQo+ICAJCSAgPSB2YWx1ZV9mcm9tX2NvbnRlbnRzIChyZWd0eXBlLA0KPiAtCQkJCQkg cmVjb3JkX2Z1bGxfZ2V0X2xvYyAodG9fcHJpbnQpKTsNCj4gKwkJCQkJIHJlY29yZF9mdWxsX2dl dF9sb2MgKCZlbnRyeSkpOw0KPiAgCSAgICAgIGdkYl9wcmludGYgKCJSZWdpc3RlciAlcyBjaGFu Z2VkOiAiLA0KPiAtCQkJICBnZGJhcmNoX3JlZ2lzdGVyX25hbWUgKGFyY2gsIHRvX3ByaW50LQ0K PiA+dS5yZWcubnVtKSk7DQo+ICsJCQkgIGdkYmFyY2hfcmVnaXN0ZXJfbmFtZSAoYXJjaCwgZW50 cnkudS5yZWcubnVtKSk7DQo+ICAJICAgICAgc3RydWN0IHZhbHVlX3ByaW50X29wdGlvbnMgb3B0 czsNCj4gIAkgICAgICBnZXRfdXNlcl9wcmludF9vcHRpb25zICgmb3B0cyk7DQo+ICAJICAgICAg b3B0cy5yYXcgPSB0cnVlOw0KPiBAQCAtMjg2MiwxNyArMjY0MCwxNiBAQCBtYWludGVuYW5jZV9w cmludF9yZWNvcmRfaW5zdHJ1Y3Rpb24gKGNvbnN0DQo+IGNoYXIgKmFyZ3MsIGludCBmcm9tX3R0 eSkNCj4gIAkgICAgfQ0KPiAgCSAgY2FzZSByZWNvcmRfZnVsbF9tZW06DQo+ICAJICAgIHsNCj4g LQkgICAgICBnZGJfYnl0ZSAqYiA9IHJlY29yZF9mdWxsX2dldF9sb2MgKHRvX3ByaW50KTsNCj4g KwkgICAgICBnZGJfYnl0ZSAqYiA9IHJlY29yZF9mdWxsX2dldF9sb2MgKCZlbnRyeSk7DQo+ICAJ ICAgICAgZ2RiX3ByaW50ZiAoIiVkIGJ5dGVzIG9mIG1lbW9yeSBhdCBhZGRyZXNzICVzIGNoYW5n ZWQgZnJvbToiLA0KPiAtCQkJICB0b19wcmludC0+dS5tZW0ubGVuLA0KPiAtCQkJICBwcmludF9j b3JlX2FkZHJlc3MgKGFyY2gsIHRvX3ByaW50LT51Lm1lbS5hZGRyKSk7DQo+IC0JICAgICAgZm9y IChpbnQgaSA9IDA7IGkgPCB0b19wcmludC0+dS5tZW0ubGVuOyBpKyspDQo+ICsJCQkgIGVudHJ5 LnUubWVtLmxlbiwNCj4gKwkJCSAgcHJpbnRfY29yZV9hZGRyZXNzIChhcmNoLCBlbnRyeS51Lm1l bS5hZGRyKSk7DQo+ICsJICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBlbnRyeS51Lm1lbS5sZW47 IGkrKykNCj4gIAkJZ2RiX3ByaW50ZiAoIiAlMDJ4IiwgYltpXSk7DQo+ICAJICAgICAgZ2RiX3By aW50ZiAoIlxuIik7DQo+ICAJICAgICAgYnJlYWs7DQo+ICAJICAgIH0NCj4gIAl9DQo+IC0gICAg ICB0b19wcmludCA9IHRvX3ByaW50LT5uZXh0Ow0KPiAgICAgIH0NCj4gIH0NCj4gDQo+IEBAIC0y ODgwLDExICsyNjU3LDYgQEAgSU5JVF9HREJfRklMRSAocmVjb3JkX2Z1bGwpDQo+ICB7DQo+ICAg IHN0cnVjdCBjbWRfbGlzdF9lbGVtZW50ICpjOw0KPiANCj4gLSAgLyogSW5pdCByZWNvcmRfZnVs bF9maXJzdC4gICovDQo+IC0gIHJlY29yZF9mdWxsX2ZpcnN0LnByZXYgPSBOVUxMOw0KPiAtICBy ZWNvcmRfZnVsbF9maXJzdC5uZXh0ID0gTlVMTDsNCj4gLSAgcmVjb3JkX2Z1bGxfZmlyc3QudHlw ZSA9IHJlY29yZF9mdWxsX2VuZDsNCj4gLQ0KPiAgICBhZGRfdGFyZ2V0IChyZWNvcmRfZnVsbF90 YXJnZXRfaW5mbywgcmVjb3JkX2Z1bGxfb3Blbik7DQo+ICAgIGFkZF9kZXByZWNhdGVkX3Rhcmdl dF9hbGlhcyAocmVjb3JkX2Z1bGxfdGFyZ2V0X2luZm8sICJyZWNvcmQiKTsNCj4gICAgYWRkX3Rh cmdldCAocmVjb3JkX2Z1bGxfY29yZV90YXJnZXRfaW5mbywgcmVjb3JkX2Z1bGxfb3Blbik7DQo+ IGRpZmYgLS1naXQgYS9nZGIvcmVjb3JkLWZ1bGwuaCBiL2dkYi9yZWNvcmQtZnVsbC5oDQo+IGlu ZGV4IDUxZWZmZTc0NTYwLi5jMzI3ZDg3OWE4YSAxMDA2NDQNCj4gLS0tIGEvZ2RiL3JlY29yZC1m dWxsLmgNCj4gKysrIGIvZ2RiL3JlY29yZC1mdWxsLmgNCj4gQEAgLTQxLDcgKzQxLDYgQEAgZW51 bSByZWNvcmRfcmVzdWx0DQo+IA0KPiAgZXh0ZXJuIGludCByZWNvcmRfZnVsbF9hcmNoX2xpc3Rf YWRkX3JlZyAoc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwgaW50DQo+IG51bSk7DQo+ICBleHRl cm4gaW50IHJlY29yZF9mdWxsX2FyY2hfbGlzdF9hZGRfbWVtIChDT1JFX0FERFIgYWRkciwgaW50 IGxlbik7DQo+IC1leHRlcm4gaW50IHJlY29yZF9mdWxsX2FyY2hfbGlzdF9hZGRfZW5kICh2b2lk KTsNCj4gDQo+ICAvKiBSZXR1cm5zIHRydWUgaWYgdGhlIHByb2Nlc3MgcmVjb3JkIHRhcmdldCBp cyBvcGVuLiAgKi8NCj4gIGV4dGVybiBpbnQgcmVjb3JkX2Z1bGxfaXNfdXNlZCAodm9pZCk7DQo+ IGRpZmYgLS1naXQgYS9nZGIvcmlzY3YtdGRlcC5jIGIvZ2RiL3Jpc2N2LXRkZXAuYw0KPiBpbmRl eCA2YjVjOWMwMmQ0Ni4uZjViMWY2Njg0NGMgMTAwNjQ0DQo+IC0tLSBhL2dkYi9yaXNjdi10ZGVw LmMNCj4gKysrIGIvZ2RiL3Jpc2N2LXRkZXAuYw0KPiBAQCAtNTQ2Niw4ICs1NDY2LDUgQEAgcmlz Y3ZfcHJvY2Vzc19yZWNvcmQgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLA0KPiBzdHJ1Y3QgcmVn Y2FjaGUgKnJlZ2NhY2hlLA0KPiAgICBpZiAocmVzICE9IFJFQ09SRF9TVUNDRVNTKQ0KPiAgICAg IHJldHVybiByZXM7DQo+IA0KPiAtICBpZiAocmVjb3JkX2Z1bGxfYXJjaF9saXN0X2FkZF9lbmQg KCkpDQo+IC0gICAgcmV0dXJuIC0xOw0KPiAtDQo+ICAgIHJldHVybiAwOw0KPiAgfQ0KPiBkaWZm IC0tZ2l0IGEvZ2RiL3JzNjAwMC10ZGVwLmMgYi9nZGIvcnM2MDAwLXRkZXAuYw0KPiBpbmRleCBl MTM1ZGY5NGE0MC4uZjk2NDg4OWE0OWYgMTAwNjQ0DQo+IC0tLSBhL2dkYi9yczYwMDAtdGRlcC5j DQo+ICsrKyBiL2dkYi9yczYwMDAtdGRlcC5jDQo+IEBAIC03MTM4LDggKzcxMzgsNiBAQCBwcGNf cHJvY2Vzc19wcmVmaXhfaW5zdHJ1Y3Rpb24gKGludCBpbnNuX3ByZWZpeCwgaW50DQo+IGluc25f c3VmZml4LA0KPiAgICBpZiAocmVjb3JkX2Z1bGxfYXJjaF9saXN0X2FkZF9yZWcgKHJlZ2NhY2hl LCBQUENfUENfUkVHTlVNKSkNCj4gICAgICByZXR1cm4gLTE7DQo+IA0KPiAtICBpZiAocmVjb3Jk X2Z1bGxfYXJjaF9saXN0X2FkZF9lbmQgKCkpDQo+IC0gICAgcmV0dXJuIC0xOw0KPiAgICByZXR1 cm4gMDsNCj4gIH0NCj4gDQo+IEBAIC03NDQ3LDggKzc0NDUsNiBAQCBwcGNfcHJvY2Vzc19yZWNv cmQgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLA0KPiBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hl LA0KPiANCj4gICAgaWYgKHJlY29yZF9mdWxsX2FyY2hfbGlzdF9hZGRfcmVnIChyZWdjYWNoZSwg UFBDX1BDX1JFR05VTSkpDQo+ICAgICAgcmV0dXJuIC0xOw0KPiAtICBpZiAocmVjb3JkX2Z1bGxf YXJjaF9saXN0X2FkZF9lbmQgKCkpDQo+IC0gICAgcmV0dXJuIC0xOw0KPiAgICByZXR1cm4gMDsN Cj4gIH0NCj4gDQo+IGRpZmYgLS1naXQgYS9nZGIvczM5MC1saW51eC10ZGVwLmMgYi9nZGIvczM5 MC1saW51eC10ZGVwLmMNCj4gaW5kZXggM2NkNmIzNTlkMTMuLjZiZWEzMGYwOGRjIDEwMDY0NA0K PiAtLS0gYS9nZGIvczM5MC1saW51eC10ZGVwLmMNCj4gKysrIGIvZ2RiL3MzOTAtbGludXgtdGRl cC5jDQo+IEBAIC05MTAsOSArOTEwLDYgQEAgczM5MF9saW51eF9yZWNvcmRfc2lnbmFsIChzdHJ1 Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwNCj4gc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwNCj4gICAg aWYgKHJlY29yZF9mdWxsX2FyY2hfbGlzdF9hZGRfbWVtIChzcCwgc2l6ZW9mX3J0X3NpZ2ZyYW1l KSkNCj4gICAgICByZXR1cm4gLTE7DQo+IA0KPiAtICBpZiAocmVjb3JkX2Z1bGxfYXJjaF9saXN0 X2FkZF9lbmQgKCkpDQo+IC0gICAgcmV0dXJuIC0xOw0KPiAtDQo+ICAgIHJldHVybiAwOw0KPiAg fQ0KPiANCj4gZGlmZiAtLWdpdCBhL2dkYi9zMzkwLXRkZXAuYyBiL2dkYi9zMzkwLXRkZXAuYw0K PiBpbmRleCBmOWQ3YmRkMDRlNC4uMzZjZTY1OWVhMTUgMTAwNjQ0DQo+IC0tLSBhL2dkYi9zMzkw LXRkZXAuYw0KPiArKysgYi9nZGIvczM5MC10ZGVwLmMNCj4gQEAgLTcwMTksOCArNzAxOSw2IEBA IHMzOTBfcHJvY2Vzc19yZWNvcmQgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLA0KPiBzdHJ1Y3Qg cmVnY2FjaGUgKnJlZ2NhY2hlLA0KPiANCj4gICAgaWYgKHJlY29yZF9mdWxsX2FyY2hfbGlzdF9h ZGRfcmVnIChyZWdjYWNoZSwgUzM5MF9QU1dBX1JFR05VTSkpDQo+ICAgICAgcmV0dXJuIC0xOw0K PiAtICBpZiAocmVjb3JkX2Z1bGxfYXJjaF9saXN0X2FkZF9lbmQgKCkpDQo+IC0gICAgcmV0dXJu IC0xOw0KPiAgICByZXR1cm4gMDsNCj4gIH0NCj4gDQo+IC0tDQo+IDIuNTMuMA0KPiANCg0KS2lu ZCBSZWdhcmRzLA0KQ2hyaXN0aW5hDQoNCkludGVsIERldXRzY2hsYW5kIEdtYkgNClJlZ2lzdGVy ZWQgQWRkcmVzczogRG9ybmFjaGVyIFN0cmFzc2UgMSwgODU2MjIgRmVsZGtpcmNoZW4sIEdlcm1h bnkNClRlbDogKzQ5IDg5IDk5MSA0MzAsIHd3dy5pbnRlbC5kZQ0KTWFuYWdpbmcgRGlyZWN0b3Jz OiBIYXJyeSBEZW1hcywgSmVmZnJleSBTY2huZWlkZXJtYW4sIFlpbiBDaG9uZyBTb3JyZWxsDQpD aGFpcnBlcnNvbiBvZiB0aGUgU3VwZXJ2aXNvcnkgQm9hcmQ6IE5pY29sZSBMYXUNClJlZ2lzdGVy ZWQgU2VhdDogTXVuaWNoDQpDb21tZXJjaWFsIFJlZ2lzdGVyOiBBbXRzZ2VyaWNodCBNdWVuY2hl biBIUkIgMTg2OTI4Cg==