From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by sourceware.org (Postfix) with ESMTPS id 1397F3858C27 for ; Wed, 20 Sep 2023 13:44:50 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 1397F3858C27 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=oracle.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=oracle.com Received: from pps.filterd (m0246630.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 38K9sTqP028117; Wed, 20 Sep 2023 13:44:45 GMT DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com; h=from : to : cc : subject : date : message-id : references : in-reply-to : content-type : content-id : content-transfer-encoding : mime-version; s=corp-2023-03-30; bh=x4aDUapHgn34Y36Wxhh9gO1/itpeYFYlD76uHd5mS3I=; b=F0CixFa7TkW9Sql8vCRawFWo2KeB5x3chV82lmGf2Gpb6kxYxM/m8bbEURZ1HLJn34Jm G7gl3E3jD1E8JYJW2/rTtorPAySUJ001oB/a1OGTrDiL1vj/e4SFXh6P05kfE745GdyM h77/yjqdS2LMF3yToZJxZliT9VDXFg+Ou4jbVtsJV3Jl9mth95C8v1b9f5dkGSdcjyYI i/f/nadi6JXG+wp58QhpXgYugrVyOJIhV2e4lUUlurLJC1gJbKr+JaS+13plmPdBlbwQ 1FsXExRrqr+vxUbaULGc5Td2oBnPGQN4gAAQcYvDWeaRge0ULZjT+TCCIiBtfLUHlgci mQ== Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3t52sdyadn-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 20 Sep 2023 13:44:45 +0000 Received: from pps.filterd (phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (8.17.1.19/8.17.1.19) with ESMTP id 38KC4hXQ030875; Wed, 20 Sep 2023 13:44:44 GMT Received: from nam04-dm6-obe.outbound.protection.outlook.com (mail-dm6nam04lp2043.outbound.protection.outlook.com [104.47.73.43]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3t52t73sv2-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 20 Sep 2023 13:44:44 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=IbPLvrtZgWUgvZFtoE8T4TipE5/jTe9BeQECuNQdoS6wAY50LPjyVFIRn/uzDaQekOoKi239VueGdrE7RbFuM/cSdc+zWvpPZ6JAzu+4y2dNfPZL4pBF4YxW8dDNFOMR7SOQDCuMGZk0eIxOz0tBeBm2CmX1l5ayFwYS0S63HYJMUpu/tWep+6tLkuFI/MvdJJ3VjZ7cdbtIrYO8S2IxzIULWqn5AhBGakDzmEtI8MnkBz3nIdGttkSrXjOZrwrKd/zbUWNzOVGh+WIg+Zz+/g1vL3jA6ykN60UwA4QI2z7t/b6TTekQpow9vUVn/QWM8S3lKR4jYUgZUV8Gl7ccYw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=x4aDUapHgn34Y36Wxhh9gO1/itpeYFYlD76uHd5mS3I=; b=ahYUmwGYVxO8ehUv22mcRicKHXMBWmPDOyBe2CDfPu5PBdYctZJgydCTF8JANkI+fcdEkbYNa5QXGumHoh09f78icUUVNbjTiIbkKhJoLo4NYCq715h4QeBMaZKhQx6VQYP0UxQFo2/GDkZLRM6NkES+de790+7HooeMl7PnHcVqf2USuzbL1uXv2AoNUf0RnMzs+rfcNmL9dJQaDxehklpEgM3rE0F/YzXCkrJWYGm9D0AeYsgNnwohVmFjh2KkJAECPikJ9ADbU6h24629FBD6iqcyZHftmzAwtFFvZqxlktMsRvPyUpfw+GldUXrtxKRaDkKY38HFbCtpq7YwiA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com; dkim=pass header.d=oracle.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=x4aDUapHgn34Y36Wxhh9gO1/itpeYFYlD76uHd5mS3I=; b=QRVq4cNOwHplhpNOHNJ/u/Mqg+MiiCQrTZMXAtnfu2e1KIvTW/JzHmpxcghCSiiJvaCFDGx+W6OI4ouiJYKczwpUiq2YqaLUIRLuNMXJQ52Hq/Tzbin9zlYZmzO4r0AEpbkXriU4R2MFza7SHkXCvOqO98KXCbkOniwtMovqKRE= Received: from CH2PR10MB4344.namprd10.prod.outlook.com (2603:10b6:610:af::19) by CO1PR10MB4595.namprd10.prod.outlook.com (2603:10b6:303:98::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6792.27; Wed, 20 Sep 2023 13:44:21 +0000 Received: from CH2PR10MB4344.namprd10.prod.outlook.com ([fe80::f775:e161:fc6d:8291]) by CH2PR10MB4344.namprd10.prod.outlook.com ([fe80::f775:e161:fc6d:8291%6]) with mapi id 15.20.6792.026; Wed, 20 Sep 2023 13:44:21 +0000 From: Qing Zhao To: Joseph Myers , Richard Biener , "jakub@redhat.com" , "gcc-patches@gcc.gnu.org" CC: "keescook@chromium.org" , "siddhesh@gotplt.org" , "uecker@tugraz.at" , "isanbard@gmail.com" Subject: Ping * 2: [V3][PATCH 1/3] Provide counted_by attribute to flexible array member field (PR108896) Thread-Topic: Ping * 2: [V3][PATCH 1/3] Provide counted_by attribute to flexible array member field (PR108896) Thread-Index: AQHZ12hBjKMnBp+fbEKNJydjoqv0ULAj4kwA Date: Wed, 20 Sep 2023 13:44:21 +0000 Message-ID: <46358E0C-E694-488B-86C1-60DFE8D737A1@oracle.com> References: <20230825152425.2417656-1-qing.zhao@oracle.com> <20230825152425.2417656-2-qing.zhao@oracle.com> In-Reply-To: <20230825152425.2417656-2-qing.zhao@oracle.com> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: Apple Mail (2.3696.120.41.1.3) x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CH2PR10MB4344:EE_|CO1PR10MB4595:EE_ x-ms-office365-filtering-correlation-id: aa766eaf-5faf-40ce-6350-08dbb9dfb1c7 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: XTi9fmbi822Z/ViVf4edP27HIIG9yQPbG07JLbKBIdNaEv7efHsthR0zql/pYZl+WAzlu4II05wSlZ0ILi6mYvWx8Xq8Boap5fWC7+Tmm5DDepHJM6ppoViEC0m9AVM2fpdND+jpJ9RscyqcM8sggiAm3Im0M+TjTbUsZXGAQ1vJ7k+CEH+PCn7tJSmJ4B+vTY/28KdG6Wo2EQIm3wkfcLGkJ1stOQx/336rNnu0vQT3+lCtkmNv5vNJo7mT1TvF7l0hDEMwkIeP9gbrr7iSny4thHjbIlv1PUsUMET4qoe1l775Sya5UfgFp747yvJxED3Al74vzSR/Ri1GOGaw9Pfu6fQoXviJqflIR7Nadi0AzJONVHX4Yz3HY09xrZvv1NhMvdWROG19LjK6rpVwStGC8+NZjsH/AJUxRmwyNAh92kJ6w5pVqcR4MZCZE61iyWCwxobNqDIicOvMOnhH002rvff36VTGB+LjNWQ1yzkY3KWMKcbNhsbLHW88TpiM213Pn6C3ge/YZcqZFBrF0koO6VbFicaiTmZL/HF1kpjVTxdGe1lRpfbQW2LCqW3/Ce5qCgXXKViRGcJ9oHGsIIITYrKR89m+XHTE8Qdr1mY4pkQb9zAQQppTUDrSnytyAq6nbpQyJ3BNCIEH8RE8Qw== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:CH2PR10MB4344.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230031)(376002)(366004)(136003)(396003)(346002)(39860400002)(1800799009)(186009)(451199024)(71200400001)(2906002)(84970400001)(8936002)(4326008)(8676002)(30864003)(478600001)(26005)(41300700001)(122000001)(44832011)(5660300002)(66946007)(64756008)(33656002)(66446008)(66476007)(66556008)(83380400001)(316002)(38100700002)(38070700005)(91956017)(6486002)(6506007)(54906003)(2616005)(6512007)(53546011)(110136005)(36756003)(76116006)(86362001)(45980500001)(579004);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?OXlLVFpEMGkwRkVPbWI2UndHcWxXeng2TUhVdDJoZ2ZJWDVZdzJtbEdIQm1U?= =?utf-8?B?dWRJaVY2bFpGbk1QMVVjbzM4Zlc0N2pnYWVWcjRXNmF1UFRSMG5RSkhqbTFu?= =?utf-8?B?R0RDdU9tRDVBeDVSK0FUWDFYU2Z6S3Ivd2luYVd2UDRlVGtBTEl4NkQwVTd2?= =?utf-8?B?SjQ0ZFlJMDJmUFBXYmtHeFc0M0Y4SHVYQ1NaQnhvdGZuMEo2REJsbjZmczVv?= =?utf-8?B?NXlzWlhuVlQ2ems3Y1pSQ1MrU29oNVdrbXhLY2M4RjdYSDMzRUFKM1ZFSGds?= =?utf-8?B?U05FR3ZDNVBxZWlYbWQwY3VUMHhpVEdXVFJEdEoxWW1Lbi9LWm53VDloZnlE?= =?utf-8?B?MFl2VFplaWRxVGFXSEpqTkVOTHN0UFFVR255bHNkcVpXbCtidXI5Uk9aZ04w?= =?utf-8?B?SjFjMTROQXZkTUcrbW1qbCs3Wm5EMTFMTTNDOHo1bm9qaXlXV3R2V0VqZGNq?= =?utf-8?B?cTlPTnlIclZZU2tEY3d5TGE4VUlBTGdkdUpWV1pjMWc4a2U1RDU2RFdTVldr?= =?utf-8?B?cHE4Uy9TQjhjTm5BT1U3b0JFeCtSbEJKOWlYa1JHYjVvR0hNU2hoR0NVVzRL?= =?utf-8?B?M0hIVk1FdHdPbm1qanVSTEtJcDF0Rk9xR3VSTE9DKzlpTWMvWi9zalp0YVc0?= =?utf-8?B?am02SjU3VWFjMVJEbGhPWDNCb0hwRHdpZzdBVUU3NzloVFVhcFFseXpFZXVr?= =?utf-8?B?cVFDSGp4elpRV2hKWHE1OU1XWUlTM1NmQlQwYmUvU0tKM3ptM1lSM1AvRmUz?= =?utf-8?B?bHh4WHlYUU83MG13eHJCVnV5SlV2K0M0Wm05d3ArcldsRlRTMUNNNlF5TEFh?= =?utf-8?B?QlhUR25Ua2JqUnFVSUdidFJqVnJJYWNXa1Z2NkJ3dGx0QnZJUUNGb01DUEdr?= =?utf-8?B?Ky9LNjZ5eDBrYkZnOXNrNjVyMENlUEladVRxNG9HZk5naVQ1bXM3ajkzYlcw?= =?utf-8?B?dzQwTGJrTlIxcTJGK1RUejdlcUhKK25uWnQ5RVVnUzR2aS9FQzZjdDZxWTBC?= =?utf-8?B?d21MazhCdXlOR1M0VnVEcDRBSG9ydWM0UmJtcnhjdzR0TzF6ZmsxZzZBV2di?= =?utf-8?B?bXhLbE5tY1VVdmhNM2FuMnorL2lEUWJwcmVoYWFKenlyMmt1SXQ1a1RPM3R2?= =?utf-8?B?NFlHWHhDazZUVXE3clY0b2dIa3Y3VGwyenJ2NTNKeS9NOGJoTkNoWHJ5YU0y?= =?utf-8?B?Z3ZUdnJGdkVUeVRmcUxQM1o4NHFvNXcvVTFkT0JTVStDejk0OTVpNldsdzYw?= =?utf-8?B?VExBN3Y1ZVBxcGlwT051MzV2UlZqa1NpdEkySjZTWmUyZ2dVeE5Gdmx2NEU0?= =?utf-8?B?cjBmN0Q0YjdxM1d3Y01CNHo2ZVFnUG9GNktMZEFib1RlcEd4QUhlOW96VXZO?= =?utf-8?B?YlAyWWtHbVFGQ0VxRExiOXo4UW5EcGZ2b2kxVGx2bkJXUGRRNWtsaS8rU2Nl?= =?utf-8?B?YlBkRCtMMXFuR0dIRjltWGRFN2Rsb0xtbnh4OVNIOUF4MWhBOGQyQzVPaUJp?= =?utf-8?B?NmNQTXhvd2JKRlZ6cTh2Q3h4WWl1aW1RZkhjcHhyZ25BdXo2MTQwVkVLbktu?= =?utf-8?B?VDNKR3htdmllWHRiNzY1WjRkQVFtbFZ3WEIzcThyRVcyczJMajRSNlI0a0ti?= =?utf-8?B?V3lrVW5QVlM0dnd2VE9OeldsOEx3TDhRZmdQZjFkd1ZuNEVCNjNSOUhoekIr?= =?utf-8?B?QXBNZW9acWszUlNPbUdGRnVmOFZTU00vSHkxbWwvdzJWd1JvOTZMSEZ6ZUNJ?= =?utf-8?B?aFQrUGlWeW0za0I3KzNIVDVtZDZvRHgvSENTbGROckI1U0JDcUZDc0pxTGhq?= =?utf-8?B?WkZOTU5zTXZhZDNqZkZtYVlqRS8vekF6VzFXZzJmL0pKMCszQnljb05GNXN2?= =?utf-8?B?OUVqYnErQkt0TVJiS3g1OE1TM1Y5OVl0cW5RRDAzdjB5Y0I0cmZEbkJrNzJD?= =?utf-8?B?c1dHZXMwTC9zQW9wUXFTb3VCM2JESEpWVCsrRDQrN0RUS3kwVlErZnpCYncx?= =?utf-8?B?OUdLZElacXNQUkR3cVlQNVl1UWFaeW01L2hpQkIwcGFWVDcyc0QreUdyQjEw?= =?utf-8?B?RUx1ejVMMnU4clo5NkQ0WE9HRElaM0ZGWExCNmJmUjVSZkhGaTdUS3FkR0Fi?= =?utf-8?B?MkhqUVJNTHcxOGlvQm5QalV5dExmWE5NSk43TStpQUcvbCs0aUpiQWNxNE8r?= =?utf-8?B?eVE9PQ==?= Content-Type: text/plain; charset="utf-8" Content-ID: <7F633199DA8D15419A7EADD301BF2222@namprd10.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: =?utf-8?B?NzRWQ0N6RXl3ajFKbkExQUZCSk1tTEFCdVJCdWVWSmduQ0M4Zm9yejgrWkRD?= =?utf-8?B?STlXMFpYcWNGQ3RUaXhFSElVK3p0aFZjQ2ZBc1ZUUXdOMWZSN1J6RDJoSDBY?= =?utf-8?B?akhUM2I2bWZOK1hmb3RwUnBVd3J3R3hhZ2dBakhpeGFKQTE0OFFvVnlsWW5E?= =?utf-8?B?cTc2Q0hsMEtPRUJMMExJWVIrVGdiMlIxcDVyZXRkZXB2cTRtWkN5Ukppd1Jo?= =?utf-8?B?dVU5Vy9wMm5YcmllRjFyYTMvVHdKaXBVcmp4OG1Cc1BzY1oybVlHY2RhUnZS?= =?utf-8?B?M0JHa29DTmhwaUEwTERJR1R5TEdNVGhVaVFZRmRQNHIvWjJLd2syK2pKbFlV?= =?utf-8?B?VDMzQjZEcFJUUCtScXVLTW1rTE53WnFyNjFEUkxHY3dHNVdLQXZHenJPQncx?= =?utf-8?B?TUc4WGlBakR2NXNRdk1ER25vUTI5MThFV0NKQjk2c2R3Uk9OTUQ4R0hNSzRu?= =?utf-8?B?Y1FqVFMvWS9IeWc4eVlTS1Y3ait1aGxsdGdabGUwVzhZTWZSR2huNjF6Ykt1?= =?utf-8?B?KzJxQ0JkeTJvTGhjQ3V5cUlYM2MwQVloUEc2OStNY1VlK29mWEVyRlpSMEJp?= =?utf-8?B?V3B5b0xrUHpXenAxWkk5RGlBc1JSa1A0YkltMC9qTURZblVVK21JVFQxNkIr?= =?utf-8?B?NmtuKzFqK3U4MDdOSElrQnpGRjlFWGpFaTZ3bWIwVkgxY2p3bTFXRnVaTWZD?= =?utf-8?B?SStNM29KMHJQYzQxQTJGZ1V5ZExWSXRZV2IraVM3K1FoWmp4SDg4ZEt1Y0dr?= =?utf-8?B?bE9nK2dkdlEzMDl6clExYndRZzN4T3dBOHJRRzVhcUF0akY1ZFc1dVltTzVI?= =?utf-8?B?V0dLNE5wQVI5OEdwVk14ZHJLTnVGTXowWjYyRmljQ2pMOTFPNWJ4Z2dmRWN6?= =?utf-8?B?NndHY1Y4M1JZVnJIZmd3TG81MXZyRzdyakNBMjZGeTRRbjNZcmZ1Y2FMRDFx?= =?utf-8?B?NFN1by9hNUwzSHQ4aUhOcjRua0pWbGM4cFdCU210d1A0Z0pPb0hndmRJZGdq?= =?utf-8?B?Rmljd3FpbFczcWc2S0RDdHYzWHg0TWJOWjNDcGcwWlJ0VG1QdnV0eUpNb0E1?= =?utf-8?B?KzJhVENDK1k2emxlQWFmdzVUUDM2dmNqWjBTaHREY1p4aGllUUlxSExYT0xM?= =?utf-8?B?bFNsK0VHL2dwRm9sVFZidklEa3FFOXdINHdRWjE4eFZoTWpwWlNaTzNhWC9P?= =?utf-8?B?WGlkMTBlMDMzN25VQkpWUFVOK2FBeFB5RWRxQWFRaUpPTy9ZNmpQUUs2TjNM?= =?utf-8?Q?YRS1pLkiE/2CEMa?= X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: CH2PR10MB4344.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: aa766eaf-5faf-40ce-6350-08dbb9dfb1c7 X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Sep 2023 13:44:21.4181 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: UFT9mLdEd0V0TuFjLsNz4YqeW8eoJkA33Aqi9myeK5i5x1tZ7Zm51o/+Am6nY75sub5vFcWncdLjhs1NV72MeQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO1PR10MB4595 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.267,Aquarius:18.0.980,Hydra:6.0.601,FMLib:17.11.176.26 definitions=2023-09-20_05,2023-09-20_01,2023-05-22_02 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 adultscore=0 phishscore=0 mlxscore=0 mlxlogscore=999 bulkscore=0 malwarescore=0 suspectscore=0 spamscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2308100000 definitions=main-2309200112 X-Proofpoint-GUID: 6sSHzsQibHx0LwlFIgH62kXqWYWJFxfB X-Proofpoint-ORIG-GUID: 6sSHzsQibHx0LwlFIgH62kXqWYWJFxfB X-Spam-Status: No, score=-11.3 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,GIT_PATCH_0,RCVD_IN_DNSWL_LOW,RCVD_IN_MSPIKE_H5,RCVD_IN_MSPIKE_WL,SPF_HELO_NONE,SPF_NONE,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: SGksIA0KDQpJ4oCZZCBsaWtlIHRvIHBpbmcgdGhpcyBwYXRjaCBzZXQgb25lIG1vcmUgdGltZS4N Cg0KVGhhbmtzDQoNClFpbmcNCg0KPiBPbiBBdWcgMjUsIDIwMjMsIGF0IDExOjI0IEFNLCBRaW5n IFpoYW8gPHFpbmcuemhhb0BvcmFjbGUuY29tPiB3cm90ZToNCj4gDQo+IFByb3ZpZGUgYSBuZXcg Y291bnRlZF9ieSBhdHRyaWJ1dGUgdG8gZmxleGlibGUgYXJyYXkgbWVtYmVyIGZpZWxkLg0KPiAN Cj4gJ2NvdW50ZWRfYnkgKENPVU5UKScNCj4gICAgIFRoZSAnY291bnRlZF9ieScgYXR0cmlidXRl IG1heSBiZSBhdHRhY2hlZCB0byB0aGUgZmxleGlibGUgYXJyYXkNCj4gICAgIG1lbWJlciBvZiBh IHN0cnVjdHVyZS4gIEl0IGluZGljYXRlcyB0aGF0IHRoZSBudW1iZXIgb2YgdGhlDQo+ICAgICBl bGVtZW50cyBvZiB0aGUgYXJyYXkgaXMgZ2l2ZW4gYnkgdGhlIGZpZWxkIG5hbWVkICJDT1VOVCIg aW4gdGhlDQo+ICAgICBzYW1lIHN0cnVjdHVyZSBhcyB0aGUgZmxleGlibGUgYXJyYXkgbWVtYmVy LiAgR0NDIHVzZXMgdGhpcw0KPiAgICAgaW5mb3JtYXRpb24gdG8gaW1wcm92ZSB0aGUgcmVzdWx0 cyBvZiB0aGUgYXJyYXkgYm91bmQgc2FuaXRpemVyIGFuZA0KPiAgICAgdGhlICdfX2J1aWx0aW5f ZHluYW1pY19vYmplY3Rfc2l6ZScuDQo+IA0KPiAgICAgRm9yIGluc3RhbmNlLCB0aGUgZm9sbG93 aW5nIGNvZGU6DQo+IA0KPiAgICAgICAgICBzdHJ1Y3QgUCB7DQo+ICAgICAgICAgICAgc2l6ZV90 IGNvdW50Ow0KPiAgICAgICAgICAgIGNoYXIgb3RoZXI7DQo+ICAgICAgICAgICAgY2hhciBhcnJh eVtdIF9fYXR0cmlidXRlX18gKChjb3VudGVkX2J5IChjb3VudCkpKTsNCj4gICAgICAgICAgfSAq cDsNCj4gDQo+ICAgICBzcGVjaWZpZXMgdGhhdCB0aGUgJ2FycmF5JyBpcyBhIGZsZXhpYmxlIGFy cmF5IG1lbWJlciB3aG9zZSBudW1iZXINCj4gICAgIG9mIGVsZW1lbnRzIGlzIGdpdmVuIGJ5IHRo ZSBmaWVsZCAnY291bnQnIGluIHRoZSBzYW1lIHN0cnVjdHVyZS4NCj4gDQo+ICAgICBUaGUgZmll bGQgdGhhdCByZXByZXNlbnRzIHRoZSBudW1iZXIgb2YgdGhlIGVsZW1lbnRzIHNob3VsZCBoYXZl IGFuDQo+ICAgICBpbnRlZ2VyIHR5cGUuICBBbiBleHBsaWNpdCAnY291bnRlZF9ieScgYW5ub3Rh dGlvbiBkZWZpbmVzIGENCj4gICAgIHJlbGF0aW9uc2hpcCBiZXR3ZWVuIHR3byBvYmplY3RzLCAn cC0+YXJyYXknIGFuZCAncC0+Y291bnQnLCB0aGF0DQo+ICAgICAncC0+YXJyYXknIGhhcyBfYXQg bGVhc3RfICdwLT5jb3VudCcgbnVtYmVyIG9mIGVsZW1lbnRzIGF2YWlsYWJsZS4NCj4gICAgIFRo aXMgcmVsYXRpb25zaGlwIG11c3QgaG9sZCBldmVuIGFmdGVyIGFueSBvZiB0aGVzZSByZWxhdGVk IG9iamVjdHMNCj4gICAgIGFyZSB1cGRhdGVkLiAgSXQncyB0aGUgdXNlcidzIHJlc3BvbnNpYmls aXR5IHRvIG1ha2Ugc3VyZSB0aGlzDQo+ICAgICByZWxhdGlvbnNoaXAgdG8gYmUga2VwdCBhbGwg dGhlIHRpbWUuICBPdGhlcndpc2UgdGhlIHJlc3VsdHMgb2YgdGhlDQo+ICAgICBhcnJheSBib3Vu ZCBzYW5pdGl6ZXIgYW5kIHRoZSAnX19idWlsdGluX2R5bmFtaWNfb2JqZWN0X3NpemUnIG1pZ2h0 DQo+ICAgICBiZSBpbmNvcnJlY3QuDQo+IA0KPiAgICAgRm9yIGluc3RhbmNlLCBpbiB0aGUgZm9s bG93aW5nIGV4YW1wbGUsIHRoZSBhbGxvY2F0ZWQgYXJyYXkgaGFzDQo+ICAgICBsZXNzIGVsZW1l bnRzIHRoYW4gd2hhdCdzIHNwZWNpZmllZCBieSB0aGUgJ3NidWYtPmNvdW50JywgdGhpcyBpcw0K PiAgICAgYW4gdXNlciBlcnJvci4gIEFzIGEgcmVzdWx0LCBvdXQtb2YtYm91bmRzIGFjY2VzcyB0 byB0aGUgYXJyYXkNCj4gICAgIG1pZ2h0IG5vdCBiZSBkZXRlY3RlZC4NCj4gDQo+ICAgICAgICAg ICNkZWZpbmUgU0laRV9CVU1QIDEwDQo+ICAgICAgICAgIHN0cnVjdCBQICpzYnVmOw0KPiAgICAg ICAgICB2b2lkIGFsbG9jX2J1ZiAoc2l6ZV90IG5lbGVtcykNCj4gICAgICAgICAgew0KPiAgICAg ICAgICAgIHNidWYgPSAoc3RydWN0IFAgKikgbWFsbG9jIChNQVggKHNpemVvZiAoc3RydWN0IFAp LA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAob2Zmc2V0b2Yg KHN0cnVjdCBQLCBhcnJheVswXSkNCj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICsgbmVsZW1zICogc2l6ZW9mIChjaGFyKSkpKTsNCj4gICAgICAgICAgICBzYnVm LT5jb3VudCA9IG5lbGVtcyArIFNJWkVfQlVNUDsNCj4gICAgICAgICAgICAvKiBUaGlzIGlzIGlu dmFsaWQgd2hlbiB0aGUgc2J1Zi0+YXJyYXkgaGFzIGxlc3MgdGhhbiBzYnVmLT5jb3VudA0KPiAg ICAgICAgICAgICAgIGVsZW1lbnRzLiAgKi8NCj4gICAgICAgICAgfQ0KPiANCj4gICAgIEluIHRo ZSBmb2xsb3dpbmcgZXhhbXBsZSwgdGhlIDJuZCB1cGRhdGUgdG8gdGhlIGZpZWxkICdzYnVmLT5j b3VudCcNCj4gICAgIG9mIHRoZSBhYm92ZSBzdHJ1Y3R1cmUgd2lsbCBwZXJtaXQgb3V0LW9mLWJv dW5kcyBhY2Nlc3MgdG8gdGhlDQo+ICAgICBhcnJheSAnc2J1Zj5hcnJheScgYXMgd2VsbC4NCj4g DQo+ICAgICAgICAgICNkZWZpbmUgU0laRV9CVU1QIDEwDQo+ICAgICAgICAgIHN0cnVjdCBQICpz YnVmOw0KPiAgICAgICAgICB2b2lkIGFsbG9jX2J1ZiAoc2l6ZV90IG5lbGVtcykNCj4gICAgICAg ICAgew0KPiAgICAgICAgICAgIHNidWYgPSAoc3RydWN0IFAgKikgbWFsbG9jIChNQVggKHNpemVv ZiAoc3RydWN0IFApLA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAob2Zmc2V0b2YgKHN0cnVjdCBQLCBhcnJheVswXSkNCj4gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICsgKG5lbGVtcyArIFNJWkVfQlVNUCkgKiBzaXplb2YgKGNo YXIpKSkpOw0KPiAgICAgICAgICAgIHNidWYtPmNvdW50ID0gbmVsZW1zOw0KPiAgICAgICAgICAg IC8qIFRoaXMgaXMgdmFsaWQgd2hlbiB0aGUgc2J1Zi0+YXJyYXkgaGFzIGF0IGxlYXN0IHNidWYt PmNvdW50DQo+ICAgICAgICAgICAgICAgZWxlbWVudHMuICAqLw0KPiAgICAgICAgICB9DQo+ICAg ICAgICAgIHZvaWQgdXNlX2J1ZiAoaW50IGluZGV4KQ0KPiAgICAgICAgICB7DQo+ICAgICAgICAg ICAgc2J1Zi0+Y291bnQgPSBzYnVmLT5jb3VudCArIFNJWkVfQlVNUCArIDE7DQo+ICAgICAgICAg ICAgLyogTm93IHRoZSB2YWx1ZSBvZiBzYnVmLT5jb3VudCBpcyBsYXJnZXIgdGhhbiB0aGUgbnVt YmVyDQo+ICAgICAgICAgICAgICAgb2YgZWxlbWVudHMgb2Ygc2J1Zi0+YXJyYXkuICAqLw0KPiAg ICAgICAgICAgIHNidWYtPmFycmF5W2luZGV4XSA9IDA7DQo+ICAgICAgICAgICAgLyogdGhlbiB0 aGUgb3V0LW9mLWJvdW5kIGFjY2VzcyB0byB0aGlzIGFycmF5DQo+ICAgICAgICAgICAgICAgbWln aHQgbm90IGJlIGRldGVjdGVkLiAgKi8NCj4gICAgICAgICAgfQ0KPiANCj4gZ2NjL2MtZmFtaWx5 L0NoYW5nZUxvZzoNCj4gDQo+IAlQUiBDLzEwODg5Ng0KPiAJKiBjLWF0dHJpYnMuY2MgKGhhbmRs ZV9jb3VudGVkX2J5X2F0dHJpYnV0ZSk6IE5ldyBmdW5jdGlvbi4NCj4gCShhdHRyaWJ1dGVfdGFr ZXNfaWRlbnRpZmllcl9wKTogQWRkIGNvdW50ZWRfYnkgYXR0cmlidXRlIHRvIHRoZSBsaXN0Lg0K PiAJKiBjLWNvbW1vbi5jYyAoY19mbGV4aWJsZV9hcnJheV9tZW1iZXJfdHlwZV9wKTogLi4uVG8g dGhpcy4NCj4gCSogYy1jb21tb24uaCAoY19mbGV4aWJsZV9hcnJheV9tZW1iZXJfdHlwZV9wKTog TmV3IHByb3RvdHlwZS4NCj4gDQo+IGdjYy9jL0NoYW5nZUxvZzoNCj4gDQo+IAlQUiBDLzEwODg5 Ng0KPiAJKiBjLWRlY2wuY2MgKGZsZXhpYmxlX2FycmF5X21lbWJlcl90eXBlX3ApOiBSZW5hbWVk IGFuZCBtb3ZlZCB0by4uLg0KPiAJKGFkZF9mbGV4aWJsZV9hcnJheV9lbHRzX3RvX3NpemUpOiBV c2UgcmVuYW1lZCBmdW5jdGlvbi4NCj4gCShpc19mbGV4aWJsZV9hcnJheV9tZW1iZXJfcCk6IFVz ZSByZW5hbWVkIGZ1bmN0aW9uLg0KPiAJKHZlcmlmeV9jb3VudGVkX2J5X2F0dHJpYnV0ZSk6IE5l dyBmdW5jdGlvbi4NCj4gCShmaW5pc2hfc3RydWN0KTogVXNlIHJlbmFtZWQgZnVuY3Rpb24gYW5k IHZlcmlmeSBjb3VudGVkX2J5DQo+IAlhdHRyaWJ1dGUuDQo+IA0KPiBnY2MvQ2hhbmdlTG9nOg0K PiANCj4gCVBSIEMvMTA4ODk2DQo+IAkqIGRvYy9leHRlbmQudGV4aTogRG9jdW1lbnQgYXR0cmli dXRlIGNvdW50ZWRfYnkuDQo+IAkqIHRyZWUuY2MgKGdldF9uYW1lZF9maWVsZCk6IE5ldyBmdW5j dGlvbi4NCj4gCSogdHJlZS5oIChnZXRfbmFtZWRfZmllbGQpOiBOZXcgcHJvdG90eXBlLg0KPiAN Cj4gZ2NjL3Rlc3RzdWl0ZS9DaGFuZ2VMb2c6DQo+IA0KPiAJUFIgQy8xMDg4OTYNCj4gCSogZ2Nj LmRnL2ZsZXgtYXJyYXktY291bnRlZC1ieS5jOiBOZXcgdGVzdC4NCj4gLS0tDQo+IGdjYy9jLWZh bWlseS9jLWF0dHJpYnMuY2MgICAgICAgICAgICAgICAgICAgIHwgNTQgKysrKysrKysrKysrLQ0K PiBnY2MvYy1mYW1pbHkvYy1jb21tb24uY2MgICAgICAgICAgICAgICAgICAgICB8IDEzICsrKysN Cj4gZ2NjL2MtZmFtaWx5L2MtY29tbW9uLmggICAgICAgICAgICAgICAgICAgICAgfCAgMSArDQo+ IGdjYy9jL2MtZGVjbC5jYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNzkgKysrKysr KysrKysrKysrLS0tLS0NCj4gZ2NjL2RvYy9leHRlbmQudGV4aSAgICAgICAgICAgICAgICAgICAg ICAgICAgfCA3NyArKysrKysrKysrKysrKysrKysrDQo+IGdjYy90ZXN0c3VpdGUvZ2NjLmRnL2Zs ZXgtYXJyYXktY291bnRlZC1ieS5jIHwgNDAgKysrKysrKysrKw0KPiBnY2MvdHJlZS5jYyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQwICsrKysrKysrKysNCj4gZ2NjL3RyZWUu aCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNSArKw0KPiA4IGZpbGVzIGNo YW5nZWQsIDI5MSBpbnNlcnRpb25zKCspLCAxOCBkZWxldGlvbnMoLSkNCj4gY3JlYXRlIG1vZGUg MTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLmRnL2ZsZXgtYXJyYXktY291bnRlZC1ieS5jDQo+IA0K PiBkaWZmIC0tZ2l0IGEvZ2NjL2MtZmFtaWx5L2MtYXR0cmlicy5jYyBiL2djYy9jLWZhbWlseS9j LWF0dHJpYnMuY2MNCj4gaW5kZXggZTI3OTJjYTY4OThiLi42NWU0ZjY2MzkxMDkgMTAwNjQ0DQo+ IC0tLSBhL2djYy9jLWZhbWlseS9jLWF0dHJpYnMuY2MNCj4gKysrIGIvZ2NjL2MtZmFtaWx5L2Mt YXR0cmlicy5jYw0KPiBAQCAtMTAzLDYgKzEwMyw4IEBAIHN0YXRpYyB0cmVlIGhhbmRsZV93YXJu X2lmX25vdF9hbGlnbmVkX2F0dHJpYnV0ZSAodHJlZSAqLCB0cmVlLCB0cmVlLA0KPiAJCQkJCQkg IGludCwgYm9vbCAqKTsNCj4gc3RhdGljIHRyZWUgaGFuZGxlX3N0cmljdF9mbGV4X2FycmF5X2F0 dHJpYnV0ZSAodHJlZSAqLCB0cmVlLCB0cmVlLA0KPiAJCQkJCQkgaW50LCBib29sICopOw0KPiAr c3RhdGljIHRyZWUgaGFuZGxlX2NvdW50ZWRfYnlfYXR0cmlidXRlICh0cmVlICosIHRyZWUsIHRy ZWUsDQo+ICsJCQkJCSAgIGludCwgYm9vbCAqKTsNCj4gc3RhdGljIHRyZWUgaGFuZGxlX3dlYWtf YXR0cmlidXRlICh0cmVlICosIHRyZWUsIHRyZWUsIGludCwgYm9vbCAqKSA7DQo+IHN0YXRpYyB0 cmVlIGhhbmRsZV9ub3BsdF9hdHRyaWJ1dGUgKHRyZWUgKiwgdHJlZSwgdHJlZSwgaW50LCBib29s ICopIDsNCj4gc3RhdGljIHRyZWUgaGFuZGxlX2FsaWFzX2lmdW5jX2F0dHJpYnV0ZSAoYm9vbCwg dHJlZSAqLCB0cmVlLCB0cmVlLCBib29sICopOw0KPiBAQCAtMzczLDYgKzM3NSw4IEBAIGNvbnN0 IHN0cnVjdCBhdHRyaWJ1dGVfc3BlYyBjX2NvbW1vbl9hdHRyaWJ1dGVfdGFibGVbXSA9DQo+IAkJ CSAgICAgIGhhbmRsZV93YXJuX2lmX25vdF9hbGlnbmVkX2F0dHJpYnV0ZSwgTlVMTCB9LA0KPiAg IHsgInN0cmljdF9mbGV4X2FycmF5IiwgICAgICAxLCAxLCB0cnVlLCBmYWxzZSwgZmFsc2UsIGZh bHNlLA0KPiAJCQkgICAgICBoYW5kbGVfc3RyaWN0X2ZsZXhfYXJyYXlfYXR0cmlidXRlLCBOVUxM IH0sDQo+ICsgIHsgImNvdW50ZWRfYnkiLAkgICAgICAxLCAxLCB0cnVlLCBmYWxzZSwgZmFsc2Us IGZhbHNlLA0KPiArCQkJICAgICAgaGFuZGxlX2NvdW50ZWRfYnlfYXR0cmlidXRlLCBOVUxMIH0s DQo+ICAgeyAid2VhayIsICAgICAgICAgICAgICAgICAgIDAsIDAsIHRydWUsICBmYWxzZSwgZmFs c2UsIGZhbHNlLA0KPiAJCQkgICAgICBoYW5kbGVfd2Vha19hdHRyaWJ1dGUsIE5VTEwgfSwNCj4g ICB7ICJub3BsdCIsICAgICAgICAgICAgICAgICAgIDAsIDAsIHRydWUsICBmYWxzZSwgZmFsc2Us IGZhbHNlLA0KPiBAQCAtNjAxLDcgKzYwNSw4IEBAIGF0dHJpYnV0ZV90YWtlc19pZGVudGlmaWVy X3AgKGNvbnN0X3RyZWUgYXR0cl9pZCkNCj4gICBlbHNlIGlmICghc3RyY21wICgibW9kZSIsIHNw ZWMtPm5hbWUpDQo+IAkgICB8fCAhc3RyY21wICgiZm9ybWF0Iiwgc3BlYy0+bmFtZSkNCj4gCSAg IHx8ICFzdHJjbXAgKCJjbGVhbnVwIiwgc3BlYy0+bmFtZSkNCj4gLQkgICB8fCAhc3RyY21wICgi YWNjZXNzIiwgc3BlYy0+bmFtZSkpDQo+ICsJICAgfHwgIXN0cmNtcCAoImFjY2VzcyIsIHNwZWMt Pm5hbWUpDQo+ICsJICAgfHwgIXN0cmNtcCAoImNvdW50ZWRfYnkiLCBzcGVjLT5uYW1lKSkNCj4g ICAgIHJldHVybiB0cnVlOw0KPiAgIGVsc2UNCj4gICAgIHJldHVybiB0YXJnZXRtLmF0dHJpYnV0 ZV90YWtlc19pZGVudGlmaWVyX3AgKGF0dHJfaWQpOw0KPiBAQCAtMjU1NSw2ICsyNTYwLDUzIEBA IGhhbmRsZV9zdHJpY3RfZmxleF9hcnJheV9hdHRyaWJ1dGUgKHRyZWUgKm5vZGUsIHRyZWUgbmFt ZSwNCj4gICByZXR1cm4gTlVMTF9UUkVFOw0KPiB9DQo+IA0KPiArLyogSGFuZGxlIGEgImNvdW50 ZWRfYnkiIGF0dHJpYnV0ZTsgYXJndW1lbnRzIGFzIGluDQo+ICsgICBzdHJ1Y3QgYXR0cmlidXRl X3NwZWMuaGFuZGxlci4gICovDQo+ICsNCj4gK3N0YXRpYyB0cmVlDQo+ICtoYW5kbGVfY291bnRl ZF9ieV9hdHRyaWJ1dGUgKHRyZWUgKm5vZGUsIHRyZWUgbmFtZSwNCj4gKwkJCSAgICAgdHJlZSBh cmdzLCBpbnQgQVJHX1VOVVNFRCAoZmxhZ3MpLA0KPiArCQkJICAgICBib29sICpub19hZGRfYXR0 cnMpDQo+ICt7DQo+ICsgIHRyZWUgZGVjbCA9ICpub2RlOw0KPiArICB0cmVlIGFyZ3ZhbCA9IFRS RUVfVkFMVUUgKGFyZ3MpOw0KPiArDQo+ICsgIC8qIFRoaXMgYXR0cmlidXRlIG9ubHkgYXBwbGll cyB0byBmaWVsZCBkZWNscyBvZiBhIHN0cnVjdHVyZS4gICovDQo+ICsgIGlmIChUUkVFX0NPREUg KGRlY2wpICE9IEZJRUxEX0RFQ0wpDQo+ICsgICAgew0KPiArICAgICAgZXJyb3JfYXQgKERFQ0xf U09VUkNFX0xPQ0FUSU9OIChkZWNsKSwNCj4gKwkJIiVxRSBhdHRyaWJ1dGUgbWF5IG5vdCBiZSBz cGVjaWZpZWQgZm9yIG5vbi1maWVsZCINCj4gKwkJIiBkZWNsYXJhdGlvbiAlcStEIiwgbmFtZSwg ZGVjbCk7DQo+ICsgICAgICAqbm9fYWRkX2F0dHJzID0gdHJ1ZTsNCj4gKyAgICB9DQo+ICsgIC8q IFRoaXMgYXR0cmlidXRlIG9ubHkgYXBwbGllcyB0byBmaWVsZCB3aXRoIGFycmF5IHR5cGUuICAq Lw0KPiArICBlbHNlIGlmIChUUkVFX0NPREUgKFRSRUVfVFlQRSAoZGVjbCkpICE9IEFSUkFZX1RZ UEUpDQo+ICsgICAgew0KPiArICAgICAgZXJyb3JfYXQgKERFQ0xfU09VUkNFX0xPQ0FUSU9OIChk ZWNsKSwNCj4gKwkJIiVxRSBhdHRyaWJ1dGUgbWF5IG5vdCBiZSBzcGVjaWZpZWQgZm9yIGEgbm9u LWFycmF5IGZpZWxkIiwNCj4gKwkJbmFtZSk7DQo+ICsgICAgICAqbm9fYWRkX2F0dHJzID0gdHJ1 ZTsNCj4gKyAgICB9DQo+ICsgIC8qIFRoaXMgYXR0cmlidXRlIG9ubHkgYXBwbGllcyB0byBhIEM5 OSBmbGV4aWJsZSBhcnJheSBtZW1iZXIgdHlwZS4gICovDQo+ICsgIGVsc2UgaWYgKCEgY19mbGV4 aWJsZV9hcnJheV9tZW1iZXJfdHlwZV9wIChUUkVFX1RZUEUgKGRlY2wpKSkNCj4gKyAgICB7DQo+ ICsgICAgICBlcnJvcl9hdCAoREVDTF9TT1VSQ0VfTE9DQVRJT04gKGRlY2wpLA0KPiArCQkiJXFF IGF0dHJpYnV0ZSBtYXkgbm90IGJlIHNwZWNpZmllZCBmb3IgYSBub24iDQo+ICsJCSIgZmxleGli bGUgYXJyYXkgbWVtYmVyIGZpZWxkIiwNCj4gKwkJbmFtZSk7DQo+ICsgICAgICAqbm9fYWRkX2F0 dHJzID0gdHJ1ZTsNCj4gKyAgICB9DQo+ICsgIC8qIFRoZSBhcmd1bWVudCBzaG91bGQgYmUgYW4g aWRlbnRpZmllci4gICovDQo+ICsgIGVsc2UgaWYgKFRSRUVfQ09ERSAoYXJndmFsKSAhPSBJREVO VElGSUVSX05PREUpDQo+ICsgICAgew0KPiArICAgICAgZXJyb3JfYXQgKERFQ0xfU09VUkNFX0xP Q0FUSU9OIChkZWNsKSwNCj4gKwkJIiU8Y291bnRlZF9ieSU+IGFyZ3VtZW50IG5vdCBhbiBpZGVu dGlmaWVyIik7DQo+ICsgICAgICAqbm9fYWRkX2F0dHJzID0gdHJ1ZTsNCj4gKyAgICB9DQo+ICsN Cj4gKyAgcmV0dXJuIE5VTExfVFJFRTsNCj4gK30NCj4gKw0KPiAvKiBIYW5kbGUgYSAid2VhayIg YXR0cmlidXRlOyBhcmd1bWVudHMgYXMgaW4NCj4gICAgc3RydWN0IGF0dHJpYnV0ZV9zcGVjLmhh bmRsZXIuICAqLw0KPiANCj4gZGlmZiAtLWdpdCBhL2djYy9jLWZhbWlseS9jLWNvbW1vbi5jYyBi L2djYy9jLWZhbWlseS9jLWNvbW1vbi5jYw0KPiBpbmRleCA5ZmJhZWI0MzdhMTIuLmExODkzNzI0 NWMyYSAxMDA2NDQNCj4gLS0tIGEvZ2NjL2MtZmFtaWx5L2MtY29tbW9uLmNjDQo+ICsrKyBiL2dj Yy9jLWZhbWlseS9jLWNvbW1vbi5jYw0KPiBAQCAtOTUyMSw2ICs5NTIxLDE5IEBAIGNfY29tbW9u X2ZpbmFsaXplX2Vhcmx5X2RlYnVnICh2b2lkKQ0KPiAgICAgICAoKmRlYnVnX2hvb2tzLT5lYXJs eV9nbG9iYWxfZGVjbCkgKGNub2RlLT5kZWNsKTsNCj4gfQ0KPiANCj4gKy8qIERldGVybWluZSB3 aGV0aGVyIFRZUEUgaXMgYSBJU08gQzk5IGZsZXhpYmxlIGFycmF5IG1lbWViZXIgdHlwZSAiW10i LiAgKi8NCj4gK2Jvb2wNCj4gK2NfZmxleGlibGVfYXJyYXlfbWVtYmVyX3R5cGVfcCAoY29uc3Rf dHJlZSB0eXBlKQ0KPiArew0KPiArICBpZiAoVFJFRV9DT0RFICh0eXBlKSA9PSBBUlJBWV9UWVBF DQo+ICsgICAgICAmJiBUWVBFX1NJWkUgKHR5cGUpID09IE5VTExfVFJFRQ0KPiArICAgICAgJiYg VFlQRV9ET01BSU4gKHR5cGUpICE9IE5VTExfVFJFRQ0KPiArICAgICAgJiYgVFlQRV9NQVhfVkFM VUUgKFRZUEVfRE9NQUlOICh0eXBlKSkgPT0gTlVMTF9UUkVFKQ0KPiArICAgIHJldHVybiB0cnVl Ow0KPiArDQo+ICsgIHJldHVybiBmYWxzZTsNCj4gK30NCj4gKw0KPiAvKiBHZXQgdGhlIExFVkVM IG9mIHRoZSBzdHJpY3RfZmxleF9hcnJheSBmb3IgdGhlIEFSUkFZX0ZJRUxEIGJhc2VkIG9uIHRo ZQ0KPiAgICB2YWx1ZXMgb2YgYXR0cmlidXRlIHN0cmljdF9mbGV4X2FycmF5IGFuZCB0aGUgZmxh Z19zdHJpY3RfZmxleF9hcnJheXMuICAqLw0KPiB1bnNpZ25lZCBpbnQNCj4gZGlmZiAtLWdpdCBh L2djYy9jLWZhbWlseS9jLWNvbW1vbi5oIGIvZ2NjL2MtZmFtaWx5L2MtY29tbW9uLmgNCj4gaW5k ZXggNzhmYzUyNDhiYTY4Li5jMjliYjQyOTA2MmIgMTAwNjQ0DQo+IC0tLSBhL2djYy9jLWZhbWls eS9jLWNvbW1vbi5oDQo+ICsrKyBiL2djYy9jLWZhbWlseS9jLWNvbW1vbi5oDQo+IEBAIC05MDks NiArOTA5LDcgQEAgZXh0ZXJuIHRyZWUgZm9sZF9mb3Jfd2FybiAodHJlZSk7DQo+IGV4dGVybiB0 cmVlIGNfY29tbW9uX2dldF9uYXJyb3dlciAodHJlZSwgaW50ICopOw0KPiBleHRlcm4gYm9vbCBn ZXRfYXR0cmlidXRlX29wZXJhbmQgKHRyZWUsIHVuc2lnbmVkIEhPU1RfV0lERV9JTlQgKik7DQo+ IGV4dGVybiB2b2lkIGNfY29tbW9uX2ZpbmFsaXplX2Vhcmx5X2RlYnVnICh2b2lkKTsNCj4gK2V4 dGVybiBib29sIGNfZmxleGlibGVfYXJyYXlfbWVtYmVyX3R5cGVfcCAoY29uc3RfdHJlZSk7DQo+ IGV4dGVybiB1bnNpZ25lZCBpbnQgY19zdHJpY3RfZmxleF9hcnJheV9sZXZlbF9vZiAodHJlZSk7 DQo+IGV4dGVybiBib29sIGNfb3B0aW9uX2lzX2Zyb21fY3BwX2RpYWdub3N0aWNzIChpbnQpOw0K PiANCj4gZGlmZiAtLWdpdCBhL2djYy9jL2MtZGVjbC5jYyBiL2djYy9jL2MtZGVjbC5jYw0KPiBp bmRleCAxZjllYjQ0ZGJhYTIuLmU5NDNiNDliNTIzMCAxMDA2NDQNCj4gLS0tIGEvZ2NjL2MvYy1k ZWNsLmNjDQo+ICsrKyBiL2djYy9jL2MtZGVjbC5jYw0KPiBAQCAtNTE3MywxOSArNTE3Myw2IEBA IHNldF9hcnJheV9kZWNsYXJhdG9yX2lubmVyIChzdHJ1Y3QgY19kZWNsYXJhdG9yICpkZWNsLA0K PiAgIHJldHVybiBkZWNsOw0KPiB9DQo+IA0KPiAtLyogRGV0ZXJtaW5lIHdoZXRoZXIgVFlQRSBp cyBhIElTTyBDOTkgZmxleGlibGUgYXJyYXkgbWVtZWJlciB0eXBlICJbXSIuICAqLw0KPiAtc3Rh dGljIGJvb2wNCj4gLWZsZXhpYmxlX2FycmF5X21lbWJlcl90eXBlX3AgKGNvbnN0X3RyZWUgdHlw ZSkNCj4gLXsNCj4gLSAgaWYgKFRSRUVfQ09ERSAodHlwZSkgPT0gQVJSQVlfVFlQRQ0KPiAtICAg ICAgJiYgVFlQRV9TSVpFICh0eXBlKSA9PSBOVUxMX1RSRUUNCj4gLSAgICAgICYmIFRZUEVfRE9N QUlOICh0eXBlKSAhPSBOVUxMX1RSRUUNCj4gLSAgICAgICYmIFRZUEVfTUFYX1ZBTFVFIChUWVBF X0RPTUFJTiAodHlwZSkpID09IE5VTExfVFJFRSkNCj4gLSAgICByZXR1cm4gdHJ1ZTsNCj4gLQ0K PiAtICByZXR1cm4gZmFsc2U7DQo+IC19DQo+IC0NCj4gLyogRGV0ZXJtaW5lIHdoZXRoZXIgVFlQ RSBpcyBhIG9uZS1lbGVtZW50IGFycmF5IHR5cGUgIlsxXSIuICAqLw0KPiBzdGF0aWMgYm9vbA0K PiBvbmVfZWxlbWVudF9hcnJheV90eXBlX3AgKGNvbnN0X3RyZWUgdHlwZSkNCj4gQEAgLTUyMjIs NyArNTIwOSw3IEBAIGFkZF9mbGV4aWJsZV9hcnJheV9lbHRzX3RvX3NpemUgKHRyZWUgZGVjbCwg dHJlZSBpbml0KQ0KPiANCj4gICBlbHQgPSBDT05TVFJVQ1RPUl9FTFRTIChpbml0KS0+bGFzdCAo KS52YWx1ZTsNCj4gICB0eXBlID0gVFJFRV9UWVBFIChlbHQpOw0KPiAtICBpZiAoZmxleGlibGVf YXJyYXlfbWVtYmVyX3R5cGVfcCAodHlwZSkpDQo+ICsgIGlmIChjX2ZsZXhpYmxlX2FycmF5X21l bWJlcl90eXBlX3AgKHR5cGUpKQ0KPiAgICAgew0KPiAgICAgICBjb21wbGV0ZV9hcnJheV90eXBl ICgmdHlwZSwgZWx0LCBmYWxzZSk7DQo+ICAgICAgIERFQ0xfU0laRSAoZGVjbCkNCj4gQEAgLTkw OTQsNyArOTA4MSw3IEBAIGlzX2ZsZXhpYmxlX2FycmF5X21lbWJlcl9wIChib29sIGlzX2xhc3Rf ZmllbGQsDQo+IA0KPiAgIGJvb2wgaXNfemVyb19sZW5ndGhfYXJyYXkgPSB6ZXJvX2xlbmd0aF9h cnJheV90eXBlX3AgKFRSRUVfVFlQRSAoeCkpOw0KPiAgIGJvb2wgaXNfb25lX2VsZW1lbnRfYXJy YXkgPSBvbmVfZWxlbWVudF9hcnJheV90eXBlX3AgKFRSRUVfVFlQRSAoeCkpOw0KPiAtICBib29s IGlzX2ZsZXhpYmxlX2FycmF5ID0gZmxleGlibGVfYXJyYXlfbWVtYmVyX3R5cGVfcCAoVFJFRV9U WVBFICh4KSk7DQo+ICsgIGJvb2wgaXNfZmxleGlibGVfYXJyYXkgPSBjX2ZsZXhpYmxlX2FycmF5 X21lbWJlcl90eXBlX3AgKFRSRUVfVFlQRSAoeCkpOw0KPiANCj4gICB1bnNpZ25lZCBpbnQgc3Ry aWN0X2ZsZXhfYXJyYXlfbGV2ZWwgPSBjX3N0cmljdF9mbGV4X2FycmF5X2xldmVsX29mICh4KTsN Cj4gDQo+IEBAIC05MTI0LDYgKzkxMTEsNjEgQEAgaXNfZmxleGlibGVfYXJyYXlfbWVtYmVyX3Ag KGJvb2wgaXNfbGFzdF9maWVsZCwNCj4gICByZXR1cm4gZmFsc2U7DQo+IH0NCj4gDQo+ICsvKiBW ZXJpZnkgdGhlIGFyZ3VtZW50IG9mIHRoZSBjb3VudGVkX2J5IGF0dHJpYnV0ZSBvZiB0aGUgZmxl eGlibGUgYXJyYXkNCj4gKyAgIG1lbWJlciBGSUVMRF9ERUNMIGlzIGEgdmFsaWQgZmllbGQgb2Yg dGhlIGNvbnRhaW5pbmcgc3RydWN0dXJlJ3MgZmllbGRsaXN0LA0KPiArICAgRklFTERMSVNULCBS ZXBvcnQgZXJyb3IgYW5kIHJlbW92ZSB0aGlzIGF0dHJpYnV0ZSB3aGVuIGl0J3Mgbm90LiAgKi8N Cj4gK3N0YXRpYyB2b2lkDQo+ICt2ZXJpZnlfY291bnRlZF9ieV9hdHRyaWJ1dGUgKHRyZWUgZmll bGRsaXN0LCB0cmVlIGZpZWxkX2RlY2wpDQo+ICt7DQo+ICsgIHRyZWUgYXR0cl9jb3VudGVkX2J5 ID0gbG9va3VwX2F0dHJpYnV0ZSAoImNvdW50ZWRfYnkiLA0KPiArCQkJCQkgICBERUNMX0FUVFJJ QlVURVMgKGZpZWxkX2RlY2wpKTsNCj4gKw0KPiArICBpZiAoIWF0dHJfY291bnRlZF9ieSkNCj4g KyAgICByZXR1cm47DQo+ICsNCj4gKyAgLyogSWYgdGhlcmUgaXMgYW4gY291bnRlZF9ieSBhdHRy aWJ1dGUgYXR0YWNoZWQgdG8gdGhlIGZpZWxkLA0KPiArICAgICB2ZXJpZnkgaXQuICAqLw0KPiAr DQo+ICsgIGNvbnN0IGNoYXIgKmZpZWxkbmFtZQ0KPiArICAgID0gSURFTlRJRklFUl9QT0lOVEVS IChUUkVFX1ZBTFVFIChUUkVFX1ZBTFVFIChhdHRyX2NvdW50ZWRfYnkpKSk7DQo+ICsNCj4gKyAg LyogVmVyaWZ5IHRoZSBhcmd1bWVudCBvZiB0aGUgYXR0cmJ1dGUgaXMgYSB2YWxpZCBmaWVsZCBv ZiB0aGUNCj4gKyAgICAgY29udGFpbmluZyBzdHJ1Y3R1cmUuICAqLw0KPiArDQo+ICsgIHRyZWUg Y291bnRlZF9ieV9maWVsZCA9IGdldF9uYW1lZF9maWVsZCAoZmllbGRsaXN0LCBmaWVsZG5hbWUp Ow0KPiArDQo+ICsgIC8qIEVycm9yIHdoZW4gdGhlIGZpZWxkIGlzIG5vdCBmb3VuZCBpbiB0aGUg Y29udGFpbmluZyBzdHJ1Y3R1cmUuICAqLw0KPiArICBpZiAoIWNvdW50ZWRfYnlfZmllbGQpDQo+ ICsgICAgew0KPiArICAgICAgZXJyb3JfYXQgKERFQ0xfU09VUkNFX0xPQ0FUSU9OIChmaWVsZF9k ZWNsKSwNCj4gKwkJIiVxRSBhdHRyaWJ1dGUgYXJndW1lbnQgbm90IGEgZmllbGQgZGVjbGFyYXRp b24iDQo+ICsJCSIgaW4gdGhlIHNhbWUgc3RydWN0dXJlLCBpZ25vcmUgaXQiLA0KPiArCQkoZ2V0 X2F0dHJpYnV0ZV9uYW1lIChhdHRyX2NvdW50ZWRfYnkpKSk7DQo+ICsNCj4gKyAgICAgIERFQ0xf QVRUUklCVVRFUyAoZmllbGRfZGVjbCkNCj4gKwk9IHJlbW92ZV9hdHRyaWJ1dGUgKCJjb3VudGVk X2J5IiwgREVDTF9BVFRSSUJVVEVTIChmaWVsZF9kZWNsKSk7DQo+ICsgICAgfQ0KPiArICBlbHNl DQo+ICsgIC8qIEVycm9yIHdoZW4gdGhlIGZpZWxkIGlzIG5vdCB3aXRoIGFuIGludGVnZXIgdHlw ZS4gICovDQo+ICsgICAgew0KPiArICAgICAgd2hpbGUgKFRSRUVfQ0hBSU4gKGNvdW50ZWRfYnlf ZmllbGQpKQ0KPiArCWNvdW50ZWRfYnlfZmllbGQgPSBUUkVFX0NIQUlOIChjb3VudGVkX2J5X2Zp ZWxkKTsNCj4gKyAgICAgIHRyZWUgcmVhbF9maWVsZCA9IFRSRUVfVkFMVUUgKGNvdW50ZWRfYnlf ZmllbGQpOw0KPiArDQo+ICsgICAgICBpZiAoVFJFRV9DT0RFIChUUkVFX1RZUEUgKHJlYWxfZmll bGQpKSAhPSBJTlRFR0VSX1RZUEUpDQo+ICsJew0KPiArCSAgZXJyb3JfYXQgKERFQ0xfU09VUkNF X0xPQ0FUSU9OIChmaWVsZF9kZWNsKSwNCj4gKwkJICAgICAiJXFFIGF0dHJpYnV0ZSBhcmd1bWVu dCBub3QgYSBmaWVsZCBkZWNsYXJhdGlvbiINCj4gKwkJICAgICAiIHdpdGggaW50ZWdlciB0eXBl LCBpZ25vcmUgaXQiLA0KPiArCQkgICAgIChnZXRfYXR0cmlidXRlX25hbWUgKGF0dHJfY291bnRl ZF9ieSkpKTsNCj4gKw0KPiArCSAgREVDTF9BVFRSSUJVVEVTIChmaWVsZF9kZWNsKQ0KPiArCSAg ICA9IHJlbW92ZV9hdHRyaWJ1dGUgKCJjb3VudGVkX2J5IiwgREVDTF9BVFRSSUJVVEVTIChmaWVs ZF9kZWNsKSk7DQo+ICsJfQ0KPiArICAgIH0NCj4gKw0KPiArICByZXR1cm47DQo+ICt9DQo+IA0K PiAvKiBGaWxsIGluIHRoZSBmaWVsZHMgb2YgYSBSRUNPUkRfVFlQRSBvciBVTklPTl9UWVBFIG5v ZGUsIFQuDQo+ICAgIExPQyBpcyB0aGUgbG9jYXRpb24gb2YgdGhlIFJFQ09SRF9UWVBFIG9yIFVO SU9OX1RZUEUncyBkZWZpbml0aW9uLg0KPiBAQCAtOTI0NCw3ICs5Mjg2LDcgQEAgZmluaXNoX3N0 cnVjdCAobG9jYXRpb25fdCBsb2MsIHRyZWUgdCwgdHJlZSBmaWVsZGxpc3QsIHRyZWUgYXR0cmli dXRlcywNCj4gCURFQ0xfUEFDS0VEICh4KSA9IDE7DQo+IA0KPiAgICAgICAvKiBEZXRlY3QgZmxl eGlibGUgYXJyYXkgbWVtYmVyIGluIGFuIGludmFsaWQgY29udGV4dC4gICovDQo+IC0gICAgICBp ZiAoZmxleGlibGVfYXJyYXlfbWVtYmVyX3R5cGVfcCAoVFJFRV9UWVBFICh4KSkpDQo+ICsgICAg ICBpZiAoY19mbGV4aWJsZV9hcnJheV9tZW1iZXJfdHlwZV9wIChUUkVFX1RZUEUgKHgpKSkNCj4g CXsNCj4gCSAgaWYgKFRSRUVfQ09ERSAodCkgPT0gVU5JT05fVFlQRSkNCj4gCSAgICB7DQo+IEBA IC05MjY1LDYgKzkzMDcsOSBAQCBmaW5pc2hfc3RydWN0IChsb2NhdGlvbl90IGxvYywgdHJlZSB0 LCB0cmVlIGZpZWxkbGlzdCwgdHJlZSBhdHRyaWJ1dGVzLA0KPiAJCQkibWVtYmVycyIpOw0KPiAJ ICAgICAgVFJFRV9UWVBFICh4KSA9IGVycm9yX21hcmtfbm9kZTsNCj4gCSAgICB9DQo+ICsJICAv KiBpZiB0aGVyZSBpcyBhIGNvdW50ZWRfYnkgYXR0cmlidXRlIGF0dGFjaGVkIHRvIHRoaXMgZmll bGQsDQo+ICsJICAgICB2ZXJpZnkgaXQuICAqLw0KPiArCSAgdmVyaWZ5X2NvdW50ZWRfYnlfYXR0 cmlidXRlIChmaWVsZGxpc3QsIHgpOw0KPiAJfQ0KPiANCj4gICAgICAgaWYgKHBlZGFudGljICYm IFRSRUVfQ09ERSAodCkgPT0gUkVDT1JEX1RZUEUNCj4gQEAgLTkyNzksNyArOTMyNCw3IEBAIGZp bmlzaF9zdHJ1Y3QgKGxvY2F0aW9uX3QgbG9jLCB0cmVlIHQsIHRyZWUgZmllbGRsaXN0LCB0cmVl IGF0dHJpYnV0ZXMsDQo+IAkgd2hlbiB4IGlzIGFuIGFycmF5IGFuZCBpcyB0aGUgbGFzdCBmaWVs ZC4gICovDQo+ICAgICAgIGlmIChUUkVFX0NPREUgKFRSRUVfVFlQRSAoeCkpID09IEFSUkFZX1RZ UEUpDQo+IAlUWVBFX0lOQ0xVREVTX0ZMRVhBUlJBWSAodCkNCj4gLQkgID0gaXNfbGFzdF9maWVs ZCAmJiBmbGV4aWJsZV9hcnJheV9tZW1iZXJfdHlwZV9wIChUUkVFX1RZUEUgKHgpKTsNCj4gKwkg ID0gaXNfbGFzdF9maWVsZCAmJiBjX2ZsZXhpYmxlX2FycmF5X21lbWJlcl90eXBlX3AgKFRSRUVf VFlQRSAoeCkpOw0KPiAgICAgICAvKiBSZWN1cnNpdmVseSBzZXQgVFlQRV9JTkNMVURFU19GTEVY QVJSQVkgZm9yIHRoZSBjb250ZXh0IG9mIHgsIHQNCj4gCSB3aGVuIHggaXMgYW4gdW5pb24gb3Ig cmVjb3JkIGFuZCBpcyB0aGUgbGFzdCBmaWVsZC4gICovDQo+ICAgICAgIGVsc2UgaWYgKFJFQ09S RF9PUl9VTklPTl9UWVBFX1AgKFRSRUVfVFlQRSAoeCkpKQ0KPiBkaWZmIC0tZ2l0IGEvZ2NjL2Rv Yy9leHRlbmQudGV4aSBiL2djYy9kb2MvZXh0ZW5kLnRleGkNCj4gaW5kZXggOTdlYWFjZjhhN2Vj Li5lYTYyNDA2NDY5MzYgMTAwNjQ0DQo+IC0tLSBhL2djYy9kb2MvZXh0ZW5kLnRleGkNCj4gKysr IGIvZ2NjL2RvYy9leHRlbmQudGV4aQ0KPiBAQCAtNzYxNyw2ICs3NjE3LDgzIEBAIFdoZW4gYm90 aCB0aGUgYXR0cmlidXRlIGFuZCB0aGUgb3B0aW9uIHByZXNlbnQgYXQgdGhlIHNhbWUgdGltZSwg dGhlIGxldmVsIG9mDQo+IHRoZSBzdHJpY3RuZXNzIGZvciB0aGUgc3BlY2lmaWMgdHJhaWxpbmcg YXJyYXkgZmllbGQgaXMgZGV0ZXJtaW5lZCBieSB0aGUNCj4gYXR0cmlidXRlLg0KPiANCj4gK0Bj aW5kZXggQGNvZGV7Y291bnRlZF9ieX0gdmFyaWFibGUgYXR0cmlidXRlDQo+ICtAaXRlbSBjb3Vu dGVkX2J5IChAdmFye2NvdW50fSkNCj4gK1RoZSBAY29kZXtjb3VudGVkX2J5fSBhdHRyaWJ1dGUg bWF5IGJlIGF0dGFjaGVkIHRvIHRoZSBmbGV4aWJsZSBhcnJheQ0KPiArbWVtYmVyIG9mIGEgc3Ry dWN0dXJlLiAgSXQgaW5kaWNhdGVzIHRoYXQgdGhlIG51bWJlciBvZiB0aGUgZWxlbWVudHMgb2Yg dGhlDQo+ICthcnJheSBpcyBnaXZlbiBieSB0aGUgZmllbGQgbmFtZWQgIkB2YXJ7Y291bnR9IiBp biB0aGUgc2FtZSBzdHJ1Y3R1cmUgYXMgdGhlDQo+ICtmbGV4aWJsZSBhcnJheSBtZW1iZXIuICBH Q0MgdXNlcyB0aGlzIGluZm9ybWF0aW9uIHRvIGltcHJvdmUgdGhlIHJlc3VsdHMgb2YNCj4gK3Ro ZSBhcnJheSBib3VuZCBzYW5pdGl6ZXIgYW5kIHRoZSBAY29kZXtfX2J1aWx0aW5fZHluYW1pY19v YmplY3Rfc2l6ZX0uDQo+ICsNCj4gK0ZvciBpbnN0YW5jZSwgdGhlIGZvbGxvd2luZyBjb2RlOg0K PiArDQo+ICtAc21hbGxleGFtcGxlDQo+ICtzdHJ1Y3QgUCBAew0KPiArICBzaXplX3QgY291bnQ7 DQo+ICsgIGNoYXIgb3RoZXI7DQo+ICsgIGNoYXIgYXJyYXlbXSBfX2F0dHJpYnV0ZV9fICgoY291 bnRlZF9ieSAoY291bnQpKSk7DQo+ICtAfSAqcDsNCj4gK0BlbmQgc21hbGxleGFtcGxlDQo+ICsN Cj4gK0Bub2luZGVudA0KPiArc3BlY2lmaWVzIHRoYXQgdGhlIEBjb2Rle2FycmF5fSBpcyBhIGZs ZXhpYmxlIGFycmF5IG1lbWJlciB3aG9zZSBudW1iZXIgb2YNCj4gK2VsZW1lbnRzIGlzIGdpdmVu IGJ5IHRoZSBmaWVsZCBAY29kZXtjb3VudH0gaW4gdGhlIHNhbWUgc3RydWN0dXJlLg0KPiArDQo+ ICtUaGUgZmllbGQgdGhhdCByZXByZXNlbnRzIHRoZSBudW1iZXIgb2YgdGhlIGVsZW1lbnRzIHNo b3VsZCBoYXZlIGFuIGludGVnZXINCj4gK3R5cGUuICBBbiBleHBsaWNpdCBAY29kZXtjb3VudGVk X2J5fSBhbm5vdGF0aW9uIGRlZmluZXMgYSByZWxhdGlvbnNoaXAgYmV0d2Vlbg0KPiArdHdvIG9i amVjdHMsIEBjb2Rle3AtPmFycmF5fSBhbmQgQGNvZGV7cC0+Y291bnR9LCB0aGF0IEBjb2Rle3At PmFycmF5fSBoYXMNCj4gK0BlbXBoe2F0IGxlYXN0fSBAY29kZXtwLT5jb3VudH0gbnVtYmVyIG9m IGVsZW1lbnRzIGF2YWlsYWJsZS4gIFRoaXMgcmVsYXRpb25zaGlwDQo+ICttdXN0IGhvbGQgZXZl biBhZnRlciBhbnkgb2YgdGhlc2UgcmVsYXRlZCBvYmplY3RzIGFyZSB1cGRhdGVkLiAgSXQncyB0 aGUgdXNlcidzDQo+ICtyZXNwb25zaWJpbGl0eSB0byBtYWtlIHN1cmUgdGhpcyByZWxhdGlvbnNo aXAgdG8gYmUga2VwdCBhbGwgdGhlIHRpbWUuDQo+ICtPdGhlcndpc2UgdGhlIHJlc3VsdHMgb2Yg dGhlIGFycmF5IGJvdW5kIHNhbml0aXplciBhbmQgdGhlDQo+ICtAY29kZXtfX2J1aWx0aW5fZHlu YW1pY19vYmplY3Rfc2l6ZX0gbWlnaHQgYmUgaW5jb3JyZWN0Lg0KPiArDQo+ICtGb3IgaW5zdGFu Y2UsIGluIHRoZSBmb2xsb3dpbmcgZXhhbXBsZSwgdGhlIGFsbG9jYXRlZCBhcnJheSBoYXMgbGVz cyBlbGVtZW50cw0KPiArdGhhbiB3aGF0J3Mgc3BlY2lmaWVkIGJ5IHRoZSBAY29kZXtzYnVmLT5j b3VudH0sIHRoaXMgaXMgYW4gdXNlciBlcnJvci4gQXMgYQ0KPiArcmVzdWx0LCBvdXQtb2YtYm91 bmRzIGFjY2VzcyB0byB0aGUgYXJyYXkgbWlnaHQgbm90IGJlIGRldGVjdGVkLg0KPiArDQo+ICtA c21hbGxleGFtcGxlDQo+ICsjZGVmaW5lIFNJWkVfQlVNUCAxMA0KPiArc3RydWN0IFAgKnNidWY7 DQo+ICt2b2lkIGFsbG9jX2J1ZiAoc2l6ZV90IG5lbGVtcykNCj4gK0B7DQo+ICsgIHNidWYgPSAo c3RydWN0IFAgKikgbWFsbG9jIChNQVggKHNpemVvZiAoc3RydWN0IFApLA0KPiArCQkJCSAgIChv ZmZzZXRvZiAoc3RydWN0IFAsIGFycmF5WzBdKQ0KPiArCQkJCSAgICArIG5lbGVtcyAqIHNpemVv ZiAoY2hhcikpKSk7DQo+ICsgIHNidWYtPmNvdW50ID0gbmVsZW1zICsgU0laRV9CVU1QOw0KPiAr ICAvKiBUaGlzIGlzIGludmFsaWQgd2hlbiB0aGUgc2J1Zi0+YXJyYXkgaGFzIGxlc3MgdGhhbiBz YnVmLT5jb3VudA0KPiArICAgICBlbGVtZW50cy4gICovDQo+ICtAfQ0KPiArQGVuZCBzbWFsbGV4 YW1wbGUNCj4gKw0KPiArSW4gdGhlIGZvbGxvd2luZyBleGFtcGxlLCB0aGUgMm5kIHVwZGF0ZSB0 byB0aGUgZmllbGQgQGNvZGV7c2J1Zi0+Y291bnR9IG9mDQo+ICt0aGUgYWJvdmUgc3RydWN0dXJl IHdpbGwgcGVybWl0IG91dC1vZi1ib3VuZHMgYWNjZXNzIHRvIHRoZSBhcnJheQ0KPiArQGNvZGV7 c2J1Zj5hcnJheX0gYXMgd2VsbC4NCj4gKw0KPiArQHNtYWxsZXhhbXBsZQ0KPiArI2RlZmluZSBT SVpFX0JVTVAgMTANCj4gK3N0cnVjdCBQICpzYnVmOw0KPiArdm9pZCBhbGxvY19idWYgKHNpemVf dCBuZWxlbXMpDQo+ICtAew0KPiArICBzYnVmID0gKHN0cnVjdCBQICopIG1hbGxvYyAoTUFYIChz aXplb2YgKHN0cnVjdCBQKSwNCj4gKwkJCQkgICAob2Zmc2V0b2YgKHN0cnVjdCBQLCBhcnJheVsw XSkNCj4gKwkJCQkgICAgKyAobmVsZW1zICsgU0laRV9CVU1QKSAqIHNpemVvZiAoY2hhcikpKSk7 DQo+ICsgIHNidWYtPmNvdW50ID0gbmVsZW1zOw0KPiArICAvKiBUaGlzIGlzIHZhbGlkIHdoZW4g dGhlIHNidWYtPmFycmF5IGhhcyBhdCBsZWFzdCBzYnVmLT5jb3VudA0KPiArICAgICBlbGVtZW50 cy4gICovDQo+ICtAfQ0KPiArdm9pZCB1c2VfYnVmIChpbnQgaW5kZXgpDQo+ICtAew0KPiArICBz YnVmLT5jb3VudCA9IHNidWYtPmNvdW50ICsgU0laRV9CVU1QICsgMTsNCj4gKyAgLyogTm93IHRo ZSB2YWx1ZSBvZiBzYnVmLT5jb3VudCBpcyBsYXJnZXIgdGhhbiB0aGUgbnVtYmVyDQo+ICsgICAg IG9mIGVsZW1lbnRzIG9mIHNidWYtPmFycmF5LiAgKi8NCj4gKyAgc2J1Zi0+YXJyYXlbaW5kZXhd ID0gMDsNCj4gKyAgLyogdGhlbiB0aGUgb3V0LW9mLWJvdW5kIGFjY2VzcyB0byB0aGlzIGFycmF5 DQo+ICsgICAgIG1pZ2h0IG5vdCBiZSBkZXRlY3RlZC4gICovDQo+ICtAfQ0KPiArQGVuZCBzbWFs bGV4YW1wbGUNCj4gKw0KPiArDQo+IEBjaW5kZXggQGNvZGV7YWxsb2Nfc2l6ZX0gdmFyaWFibGUg YXR0cmlidXRlDQo+IEBpdGVtIGFsbG9jX3NpemUgKEB2YXJ7cG9zaXRpb259KQ0KPiBAaXRlbXgg YWxsb2Nfc2l6ZSAoQHZhcntwb3NpdGlvbi0xfSwgQHZhcntwb3NpdGlvbi0yfSkNCj4gZGlmZiAt LWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2ZsZXgtYXJyYXktY291bnRlZC1ieS5jIGIvZ2Nj L3Rlc3RzdWl0ZS9nY2MuZGcvZmxleC1hcnJheS1jb3VudGVkLWJ5LmMNCj4gbmV3IGZpbGUgbW9k ZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAwLi5mOGNlOTc3NmJmODYNCj4gLS0tIC9kZXYv bnVsbA0KPiArKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9mbGV4LWFycmF5LWNvdW50ZWQtYnku Yw0KPiBAQCAtMCwwICsxLDQwIEBADQo+ICsvKiB0ZXN0aW5nIHRoZSBjb3JyZWN0IHVzYWdlIG9m IGF0dHJpYnV0ZSBjb3VudGVkX2J5LiAgKi8gICANCj4gKy8qIHsgZGctZG8gY29tcGlsZSB9ICov DQo+ICsvKiB7IGRnLW9wdGlvbnMgIi1PMiIgfSAqLw0KPiArDQo+ICsjaW5jbHVkZSA8d2NoYXIu aD4NCj4gKw0KPiAraW50IHNpemU7DQo+ICtpbnQgeCBfX2F0dHJpYnV0ZSAoKGNvdW50ZWRfYnkg KHNpemUpKSk7IC8qIHsgZGctZXJyb3IgImF0dHJpYnV0ZSBtYXkgbm90IGJlIHNwZWNpZmllZCBm b3Igbm9uLWZpZWxkIGRlY2xhcmF0aW9uIiB9ICovDQo+ICsNCj4gK3N0cnVjdCB0cmFpbGluZyB7 DQo+ICsgIGludCBjb3VudDsNCj4gKyAgaW50IGZpZWxkIF9fYXR0cmlidXRlICgoY291bnRlZF9i eSAoY291bnQpKSk7IC8qIHsgZGctZXJyb3IgImF0dHJpYnV0ZSBtYXkgbm90IGJlIHNwZWNpZmll ZCBmb3IgYSBub24tYXJyYXkgZmllbGQiIH0gKi8NCj4gK307DQo+ICsNCj4gK3N0cnVjdCB0cmFp bGluZ18xIHsNCj4gKyAgaW50IGNvdW50Ow0KPiArICBpbnQgYXJyYXlfMVswXSBfX2F0dHJpYnV0 ZSAoKGNvdW50ZWRfYnkgKGNvdW50KSkpOyAvKiB7IGRnLWVycm9yICJhdHRyaWJ1dGUgbWF5IG5v dCBiZSBzcGVjaWZpZWQgZm9yIGEgbm9uIGZsZXhpYmxlIGFycmF5IG1lbWJlciBmaWVsZCIgfSAq Lw0KPiArfTsNCj4gKw0KPiAraW50IGNvdW50Ow0KPiArc3RydWN0IHRyYWlsaW5nX2FycmF5XzIg ew0KPiArICBpbnQgY291bnQ7DQo+ICsgIGludCBhcnJheV8yW10gX19hdHRyaWJ1dGUgKChjb3Vu dGVkX2J5ICgiY291bnQiKSkpOyAvKiB7IGRnLWVycm9yICJhcmd1bWVudCBub3QgYW4gaWRlbnRp ZmllciIgfSAqLw0KPiArfTsNCj4gKw0KPiArc3RydWN0IHRyYWlsaW5nX2FycmF5XzMgew0KPiAr ICBpbnQgb3RoZXI7DQo+ICsgIGludCBhcnJheV8zW10gX19hdHRyaWJ1dGUgKChjb3VudGVkX2J5 IChMImNvdW50IikpKTsgLyogeyBkZy1lcnJvciAiYXJndW1lbnQgbm90IGFuIGlkZW50aWZpZXIi IH0gKi8NCj4gK307DQo+ICsNCj4gK3N0cnVjdCB0cmFpbGluZ19hcnJheV80IHsNCj4gKyAgaW50 IG90aGVyOw0KPiArICBpbnQgYXJyYXlfNFtdIF9fYXR0cmlidXRlICgoY291bnRlZF9ieSAoY291 bnQpKSk7IC8qIHsgZGctZXJyb3IgImF0dHJpYnV0ZSBhcmd1bWVudCBub3QgYSBmaWVsZCBkZWNs YXJhdGlvbiBpbiB0aGUgc2FtZSBzdHJ1Y3R1cmUsIGlnbm9yZSBpdCIgfSAqLw0KPiArfTsNCj4g Kw0KPiAraW50IGNvdW50Ow0KPiArc3RydWN0IHRyYWlsaW5nX2FycmF5XzUgew0KPiArICBmbG9h dCBjb3VudDsNCj4gKyAgaW50IGFycmF5XzVbXSBfX2F0dHJpYnV0ZSAoKGNvdW50ZWRfYnkgKGNv dW50KSkpOyAvKiB7IGRnLWVycm9yICJhdHRyaWJ1dGUgYXJndW1lbnQgbm90IGEgZmllbGQgZGVj bGFyYXRpb24gd2l0aCBpbnRlZ2VyIHR5cGUsIGlnbm9yZSBpdCIgfSAqLw0KPiArfTsNCj4gZGlm ZiAtLWdpdCBhL2djYy90cmVlLmNjIGIvZ2NjL3RyZWUuY2MNCj4gaW5kZXggNDIwODU3YjExMGM0 Li5mY2QzNmFlMGNkNzQgMTAwNjQ0DQo+IC0tLSBhL2djYy90cmVlLmNjDQo+ICsrKyBiL2djYy90 cmVlLmNjDQo+IEBAIC0xMjc0NSw2ICsxMjc0NSw0NiBAQCBhcnJheV9yZWZfZWxlbWVudF9zaXpl ICh0cmVlIGV4cCkNCj4gICAgIHJldHVybiBTVUJTVElUVVRFX1BMQUNFSE9MREVSX0lOX0VYUFIg KFRZUEVfU0laRV9VTklUIChlbG10X3R5cGUpLCBleHApOw0KPiB9DQo+IA0KPiArLyogR2l2ZW4g YSBmaWVsZCBsaXN0LCBGSUVMRExJU1QsIG9mIGEgc3RydWN0dXJlL3VuaW9uLCByZXR1cm4gYSBU UkVFX0xJU1QsDQo+ICsgICB3aXRoIGVhY2ggVFJFRV9WQUxVRSBhIEZJRUxEX0RFQ0wgc3RlcHBp bmcgZG93biB0aGUgY2hhaW4gdG8gdGhlIEZJRUxEDQo+ICsgICB3aG9zZSBuYW1lIGlzIEZJRUxE TkFNRSwgd2hpY2ggaXMgdGhlIGxhc3QgVFJFRV9WQUxVRSBvZiB0aGUgbGlzdC4NCj4gKyAgIHJl dHVybiBOVUxMX1RSRUUgaWYgc3VjaCBmaWVsZCBpcyBub3QgZm91bmQuICBOb3JtYWxseSB0aGlz IGxpc3QgaXMgb2YNCj4gKyAgIGxlbmd0aCBvbmUsIGJ1dCBpZiB0aGUgZmllbGQgaXMgZW1iZWRk ZWQgd2l0aCAobmVzdGVkKSBhbm9ueW1vdXMgc3RydWN0dXJlcw0KPiArICAgb3IgdW5pb25zLCB0 aGlzIGxpc3Qgc3RlcHMgZG93biB0aGUgY2hhaW4gdG8gdGhlIGZpZWxkLiAgKi8NCj4gK3RyZWUN Cj4gK2dldF9uYW1lZF9maWVsZCAodHJlZSBmaWVsZGxpc3QsIGNvbnN0IGNoYXIgKmZpZWxkbmFt ZSkNCj4gK3sNCj4gKyAgdHJlZSBuYW1lZF9maWVsZCA9IE5VTExfVFJFRTsNCj4gKyAgZm9yICh0 cmVlIGZpZWxkID0gZmllbGRsaXN0OyBmaWVsZDsgZmllbGQgPSBERUNMX0NIQUlOIChmaWVsZCkp DQo+ICsgICAgew0KPiArICAgICAgaWYgKFRSRUVfQ09ERSAoZmllbGQpICE9IEZJRUxEX0RFQ0wp DQo+ICsJY29udGludWU7DQo+ICsgICAgICBpZiAoREVDTF9OQU1FIChmaWVsZCkgIT0gTlVMTCkN Cj4gKwlpZiAoc3RyY21wIChJREVOVElGSUVSX1BPSU5URVIgKERFQ0xfTkFNRSAoZmllbGQpKSwg ZmllbGRuYW1lKSA9PSAwKQ0KPiArCSAgew0KPiArCSAgICBuYW1lZF9maWVsZCA9IHRyZWVfY29u cyAoTlVMTF9UUkVFLCBmaWVsZCwgbmFtZWRfZmllbGQpOw0KPiArCSAgICBicmVhazsNCj4gKwkg IH0NCj4gKwllbHNlDQo+ICsJICBjb250aW51ZTsNCj4gKyAgICAgIC8qIGlmIHRoZSBmaWVsZCBp cyBhbiBhbm9ueW1vdXMgc3RydWN0L3VuaW9uLCB3ZSB3aWxsIGNoZWNrIHRoZSBuZXN0ZWQNCj4g KwkgZmllbGRzIGluc2lkZSBpdCByZWN1cnNpdmVseS4gICovDQo+ICsgICAgICBlbHNlIGlmIChS RUNPUkRfT1JfVU5JT05fVFlQRV9QIChUUkVFX1RZUEUgKGZpZWxkKSkpDQo+ICsJICBpZiAoKG5h bWVkX2ZpZWxkID0gZ2V0X25hbWVkX2ZpZWxkIChUWVBFX0ZJRUxEUyAoVFJFRV9UWVBFIChmaWVs ZCkpLA0KPiArCQkJCQkJICBmaWVsZG5hbWUpKSAhPSBOVUxMX1RSRUUpDQo+ICsJICAgIHsNCj4g KwkgICAgICBuYW1lZF9maWVsZCA9IHRyZWVfY29ucyAoTlVMTF9UUkVFLCBmaWVsZCwgbmFtZWRf ZmllbGQpOw0KPiArCSAgICAgIGJyZWFrOw0KPiArCSAgICB9DQo+ICsJICBlbHNlDQo+ICsJICAg IGNvbnRpbnVlOw0KPiArICAgICAgZWxzZQ0KPiArCWNvbnRpbnVlOw0KPiArICAgIH0NCj4gKyAg cmV0dXJuIG5hbWVkX2ZpZWxkOw0KPiArfQ0KPiArDQo+ICsNCj4gLyogUmV0dXJuIGEgdHJlZSBy ZXByZXNlbnRpbmcgdGhlIGxvd2VyIGJvdW5kIG9mIHRoZSBhcnJheSBtZW50aW9uZWQgaW4NCj4g ICAgRVhQLCBhbiBBUlJBWV9SRUYgb3IgYW4gQVJSQVlfUkFOR0VfUkVGLiAgKi8NCj4gDQo+IGRp ZmYgLS1naXQgYS9nY2MvdHJlZS5oIGIvZ2NjL3RyZWUuaA0KPiBpbmRleCA0YzA0MjQ1ZTJiMWIu LjQ4NTliZWNhYTFlNyAxMDA2NDQNCj4gLS0tIGEvZ2NjL3RyZWUuaA0KPiArKysgYi9nY2MvdHJl ZS5oDQo+IEBAIC01NjE5LDYgKzU2MTksMTEgQEAgZXh0ZXJuIHRyZWUgZ2V0X2Jhc2VfYWRkcmVz cyAodHJlZSB0KTsNCj4gICAgb2YgRVhQLCBhbiBBUlJBWV9SRUYgb3IgYW4gQVJSQVlfUkFOR0Vf UkVGLiAgKi8NCj4gZXh0ZXJuIHRyZWUgYXJyYXlfcmVmX2VsZW1lbnRfc2l6ZSAodHJlZSk7DQo+ IA0KPiArLyogR2l2ZW4gYSBmaWVsZCBsaXN0LCBGSUVMRExJU1QsIG9mIGEgc3RydWN0dXJlL3Vu aW9uLCByZXR1cm4gdGhlIEZJRUxEIHdob3NlDQo+ICsgICBuYW1lIGlzIEZJRUxETkFNRSwgcmV0 dXJuIE5VTExfVFJFRSBpZiBzdWNoIGZpZWxkIGlzIG5vdCBmb3VuZC4NCj4gKyAgIHNlYXJjaGlu ZyBuZXN0ZWQgYW5vbnltb3VzIHN0cnVjdHVyZS91bmlvbiByZWN1cnNpdmVseS4gICovDQo+ICtl eHRlcm4gdHJlZSBnZXRfbmFtZWRfZmllbGQgKHRyZWUsIGNvbnN0IGNoYXIgKik7DQo+ICsNCj4g LyogUmV0dXJuIGEgdHlwZW5vZGUgZm9yIHRoZSAic3RhbmRhcmQiIEMgdHlwZSB3aXRoIGEgZ2l2 ZW4gbmFtZS4gICovDQo+IGV4dGVybiB0cmVlIGdldF90eXBlbm9kZV9mcm9tX25hbWUgKGNvbnN0 IGNoYXIgKik7DQo+IA0KPiAtLSANCj4gMi4zMS4xDQo+IA0KDQo=