From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by sourceware.org (Postfix) with ESMTPS id C28383858427 for ; Fri, 26 Aug 2022 13:48:00 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org C28383858427 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 (m0246627.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 27QDcasx011386; Fri, 26 Aug 2022 13:47:52 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-2022-7-12; bh=cGoT1UgKGzEgsp+uXduB4VfOdYDw2k+p7t6ne9DAn7Q=; b=wvIiVGFuEYskshdsDL+ULQCJvlaxgOlyzBbFNQb7/iepOeMm/ZV8zin7oKCswfYncMwc yUilsmISvxI8TMocG4rIhK/f8syOf42WBXdn8MUdBLpDEQ3aC5qjHgQk+Ej0ZQ/FOWUE Q1LQVgLI0hZD3hv90MTMYIqVi5937whVbeYmRubywsjy0fkKmajTNz9IhUV8pphqUWKT Yr9Uo+07aZ2L2qU/JmQBYlecrdTzfI4zrX4bHDmbBfEtwb1I0ykCCoiP0ls9FZesnutU 01hH7qmaopK/BC5KfwQQXrF78nbvLTpqmg86J5ddjEjj4XexdzJyYgnua6o51eLtksxs yA== Received: from iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta02.appoci.oracle.com [147.154.18.20]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3j55nyfykd-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 26 Aug 2022 13:47:52 +0000 Received: from pps.filterd (iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 27QDDJNr018027; Fri, 26 Aug 2022 13:47:51 GMT Received: from nam04-bn8-obe.outbound.protection.outlook.com (mail-bn8nam04lp2041.outbound.protection.outlook.com [104.47.74.41]) by iadpaimrmta02.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3j5n6qv3f5-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 26 Aug 2022 13:47:50 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=G6B91U+wdBXf5efNy6fZS8ZN87NUzg6phyXxQalyB6F+hy6eakKmwS6VxICvYC4uqctPa1MNzmx+xMfeBMl8pUszVm5LYZGtq/jnwafWaDY8TIFB67bAiOLj552QOqTSXjjvSdC62aRSx2EM8u/kwT4sWSyvZl1zkji4vzBk6iCrkh9UrHBwcjgIctooGB9LHMGoy7srjEpSRPlcCBKXcQ6O5lps4n9KUr6cRXplFJCOAQ7gliDnalpzBiUJW+vvRvd1eslarmluJj3KLY4m2DoFflrEAFmxSazhaOyHhlEUjcEofaG1+fkSwZtQFak9L0cVG1+XIFZeOemmmhckqA== 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=cGoT1UgKGzEgsp+uXduB4VfOdYDw2k+p7t6ne9DAn7Q=; b=bWVJ1w2/Hm3ZlPj03A1ujvihtTBnY8RWrRha5KPA+oi9K3f0D0HMcUcLOk3D3xlsctt0lWCC5TPhVWWZoZIg8/YCq6rxLKzen0amcgLgRoNYp8jIcaS0QvJ5OfYM4nbWPbokpTufLB1zQeT6Iw0CHTodWu/zKDfM2w81ilU9eDXcJpiOyL3O5mHgFJb7IBHqJCPziXHmr8ZZB0JdB4fQYUVOg48RcNWqGxAFe+Kwm757lNFNskqAvQePgQ1yidcIXtmQrpE59MvklgXLgAo3xgKeYuR8HiJWvVdvyer6cg/gep0LuY8E+M8Fux4YdZ9t24M6yf01Uwyu2CyvMGUIQw== 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=cGoT1UgKGzEgsp+uXduB4VfOdYDw2k+p7t6ne9DAn7Q=; b=gknlJcFOfedeMaaMBENYwrRJ99Iee7iC+HAr/1cFvrSzSfiUTzJthmbPxjU3b74sP6Dcnu4lRN0es+rE3m7Fz+DDC6alBq4LloKf2lA44OMO1ES+GfMo5TyXewJtABzhdUl1CDXZ/R+wCImwAW9dz7/grEz4Hh5+iDyEhDpopjw= Received: from CH2PR10MB4344.namprd10.prod.outlook.com (2603:10b6:610:af::19) by DM6PR10MB4298.namprd10.prod.outlook.com (2603:10b6:5:21f::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5566.15; Fri, 26 Aug 2022 13:47:48 +0000 Received: from CH2PR10MB4344.namprd10.prod.outlook.com ([fe80::84af:9275:f1d7:de1]) by CH2PR10MB4344.namprd10.prod.outlook.com ([fe80::84af:9275:f1d7:de1%6]) with mapi id 15.20.5566.016; Fri, 26 Aug 2022 13:47:48 +0000 From: Qing Zhao To: Richard Biener , "joseph@codesourcery.com" , Nathan Sidwell CC: GCC Patches , jakub Jelinek , martin Sebor , Kees Cook Subject: Re: [[GCC13][Patch][V3] 1/2] Add a new option -fstrict-flex-array[=n] and new attribute strict_flex_array Thread-Topic: [[GCC13][Patch][V3] 1/2] Add a new option -fstrict-flex-array[=n] and new attribute strict_flex_array Thread-Index: AQHYskdd57xeUE7/yU2Sg7A2kEHzDq3A7KGAgABTqAA= Date: Fri, 26 Aug 2022 13:47:48 +0000 Message-ID: References: <20220817144042.2931674-1-qing.zhao@oracle.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: Apple Mail (2.3608.120.23.2.7) x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: c64acfa5-7e2c-43fb-9f68-08da87698fe4 x-ms-traffictypediagnostic: DM6PR10MB4298:EE_ x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: g4NgHrGkZQR16XsXPATneugGi2FsejP2sSmMavlFx8k0hEKrGa7tm4OIfzhyA6ks9W4UeqkoJws8Q9oJrrne6CBMu4bz4/M6S1H/r7olzuYe8u3VkQL2tsx9XTKTtzyum4ylUQ7zf+WjdPB+eSGE6pVIaKb/5IJ+4iMHdlhUZwnmtf362diC+Com31FDxP82PonzxGCXlafEJRUhsbFA5H10e3/6RpPecPW4L/Vsuu+kkej0Ka+sQQLGf9mnz+lRMUSzS9fwQWat7/Z9nu2I0dEI2yMPNXD2/fc/yi/zlF9CieFZke04OyMuiUyKBfA4i4NWlUIo436Tdnpq7f6G87XHIHq4kfo+Ytxiyy33bwWTS26DdgZ9OCZSn/lvfiLCd1E7Ld52VhOQ4Akle3YhXlsqgMgHviZQhZ+ECWvKFD+fd6Sp8GbWAawB55NMBrTI1XoJRn6Dw8WNB2zmS7OLeDkxqYO5Zm9fxiOiKoCH6I12bZOZ3QKM+AAAFUMXTbBNamL28iLQtmQYke8apMLFK1//Dh1LznmyoOCKMlgRYOfFwXFIGiTTdov2HDvfyUUuvch9AE4eObWgJVzX1EVuiFD2eAhoYeCTMBbn3Sq91epLduT9FgqwD7XSkMlrC1QYPNNdWfyiCEW3BOygLz+HOLoTOW9/85GLUULZyiJtjF2WPqan/F2O4yu9fY8uN7uhJM+oVyb7nlQaCpT/cpke2Q+sTkyuMCqitPmhjRf9kvieoCdaBS2tmDj7ttmZyGRtG2+8+8qjjCtuT/VGJ6lYtj4qJ6GLS2mEbSGi6euh03eSnrC/rJQ8VZ8Jv7V2YmVnrxTaD58xq67R4Q92X8332bfIf2sCTD+OH0rFYAJmqSnaf6Lg5Q+vmCSfU/3jrUEK 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:(13230016)(396003)(366004)(39860400002)(376002)(346002)(136003)(66946007)(91956017)(38100700002)(122000001)(66556008)(66476007)(66446008)(64756008)(8676002)(4326008)(84970400001)(33656002)(36756003)(86362001)(38070700005)(83380400001)(478600001)(6512007)(6486002)(53546011)(6506007)(71200400001)(41300700001)(54906003)(110136005)(316002)(2616005)(2906002)(76116006)(186003)(30864003)(5660300002)(8936002)(44832011)(45980500001)(579004)(559001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?QUxFdDhGcHNINTRxYjYzZ0tDdkE0bXI3TTV6ejgvckJLcnFYUHl1NlZ5YTZi?= =?utf-8?B?d2VYRTJHVmV4SGpWaXFrUEI5WjhGNjdreXgyeDVVQmY4ekh3OVMwajBvVTNR?= =?utf-8?B?N0JWYWg1YlE1U1hFaEtrLzJob3hITHNyRTFuVmhMdUtDLzI5QnJNSkh1Q0hm?= =?utf-8?B?aHhZeGFMNU1WRCtsU2hQK3lSZnpqNHZyTXNHSEtRQ0EybnVacGZvdjdBeE1t?= =?utf-8?B?L1owL1JUbTluYjVJOUNYRDM2MThqM3E3UUJ6UXVwTU14VVFOSHJOZHVob3dK?= =?utf-8?B?RjBjTi9SaDFZemVZUC9HcnFaaHk3cHJYR2NCbmdSc2kxbjI3Z1lkUVI5RUhk?= =?utf-8?B?ZmlGcm9hYlc2RXcyNmh0dmRUT3A1UEtwM0ZnNXVBUFFsd0pHaUt4V2hhaXlL?= =?utf-8?B?eFBTVnF0N3BxTjdmc1dRTWNPalYzalVlNFBqeW55UjYyV2JneFRNQW5rYkM3?= =?utf-8?B?OXFFOWRsSkhqZG9kOHhpYjNmVG14WFU4cUhMQ1FoV1NjcWxaenRWVkwwMFl6?= =?utf-8?B?K01OcnBETGw3QTBTTGppMkZSRk9LQUJsNGRKZWlqeE1pRnFuc3YvVHZjRXIz?= =?utf-8?B?ZGxEYWEva3l2eXRCejljUmpIeTRVYnFwSHRDaDA5L0FlWXozRCsrZWh5OVAz?= =?utf-8?B?dFpKQ2t2VDRKV1h0cW1XTmtkOWwzaGtrZ0tmVUtUaUlDTGMvd1dNdVloWmk3?= =?utf-8?B?TTRiVEMrRWRGSmZaWTdVdUNyOHArQXhtWHBzcWNBd3AyblM0L2dXTDFPQ3d5?= =?utf-8?B?cCs0ZHlBRFZNY3FFUy9RdFR3VS9Jd0Z3S045WUdoY0hOYjNLR0tyOGx1WG5D?= =?utf-8?B?U1k4TmEwSEhqRzZOdVgvTXoyT0tKMUtWcnp5dk0wZVJxTFZ2VTR4ZXBESVRh?= =?utf-8?B?WHZEYWxCbVU3TGNldzJ0c0NDL292R1dJcDJYN1JCVlAzWDd0eHVJZFJ6MWMx?= =?utf-8?B?c0JvM1lVamFFeFlpNDFPN1pXZS93OHo3c3JJZEp4bE5XZ1dmVExZWkYvc20v?= =?utf-8?B?dzYwSmErNUM4TlBuc3pRMStTTHV6dEwveldPdmwvSlMzRkRGZ3ZUaE1DSFgv?= =?utf-8?B?c2p0TEhFbC93U0M4aU4zdHFoTW5CMlAyWUFuaklaODcwSHJTcGVncjBrSmVk?= =?utf-8?B?cVM3dE51SE5vLzRNWVVFcGRNM3lBdFdCWE50T0IrZGtIYTI5VVl1c3pjZk4w?= =?utf-8?B?S0RNSnJRUmJCV2JqME9XYWVmVDhUbWsyYkgzTmpKcGo1dk1BNFY3VDVIYzRM?= =?utf-8?B?MnduTGkwOUE5cDVMMm54Uk1jbXZsSXR0eENscFZqQ3J1YUZ5bHBKNzlwT3lZ?= =?utf-8?B?SDlYWExyOHAvVFF6VXN5akptYWRvQ1gwZUNHNEd2cE54SExheWM3a3pwdCtH?= =?utf-8?B?dTRpYzJxTkNDaDh5UVc4dWJ1TE9nYVVLYXUzc0dWc3J5TlM4UE4zR3lYRldR?= =?utf-8?B?Qks0Q3NCSmp3N1pDR3RuUE9ZcW16Q0xXL2EwNGhrc0hXVWJ2ZU5HbVVqMWJz?= =?utf-8?B?dStPVUZqZndXK2VUL0tIZmw2ZmZCKy9KYUpIblRxKyt2YTVtRlo1VkxHVU90?= =?utf-8?B?Y0NQVlAxWFQ3K2FHSVpHRk12blV4Uk1ldkx5cUZCT216dXQyWTVDSFZHOWs0?= =?utf-8?B?Mm9HZVQ5a214bkF0NEZoN2ZuSS9hYUNxSFhNN1VsMTFWZTlKZ3pxNHhPbThj?= =?utf-8?B?eGovSm1MZG1WVVliL25xM0szNGVKVHZYdHcyM1I4N0FVSGVBZnR5Ty93MlNJ?= =?utf-8?B?RTdKSGpqazZ3UTZzYTFHQ1hPMTFZTmp3aHhncGdRZCswNW9mQitRZTNVemVn?= =?utf-8?B?RGNBWU9pOW54RmV6TkwrV2ZpeVUybmJVVW5ESldmcklHK0ozbjhud29RbEtN?= =?utf-8?B?a3ArV09rQW9vY2xRcnRhZUdGUFhSNnc3Um5vODJqTzlSS1A3V2FtQ0V4M05C?= =?utf-8?B?NU9jckpNTVVhVkQ0S21GQXkvRTQ3M2NrOEk1Q3RDMkRqSFU3bk8yRHlUbC9I?= =?utf-8?B?WTJvWnFJMUM3endpenJORnpDMHVHQ04veVhmK1NlekFCSWkwa3ZtalJIVS90?= =?utf-8?B?Y0cyWDE2SkhLV1Zmak9DV3k4SElVNTZqTUZ6SzN3VGxNeXVvcy9zZ21PWWpi?= =?utf-8?B?cHpYNDRMSmpZTW9DRUltWmErSnRtdkhHMUtlcDJCRnEzQlh2ZGtNUGVWN1BF?= =?utf-8?Q?gB4keIhWczQFLuSzQ0e/MNU=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: <4CD410C1C29E114B80B359E5BD8E9BB6@namprd10.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 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: c64acfa5-7e2c-43fb-9f68-08da87698fe4 X-MS-Exchange-CrossTenant-originalarrivaltime: 26 Aug 2022 13:47:48.1474 (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: 0XPu5xhXqpnH+Qvgpm3zzhzFW7bNGiCpfU+KpPRPVK9/sK2ONmY74zPLSYoLVdcYcytHnHQN+bDQYS2o2kUr1g== X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM6PR10MB4298 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.895,Hydra:6.0.517,FMLib:17.11.122.1 definitions=2022-08-26_06,2022-08-25_01,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 suspectscore=0 phishscore=0 spamscore=0 bulkscore=0 adultscore=0 mlxscore=0 malwarescore=0 mlxlogscore=999 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2207270000 definitions=main-2208260058 X-Proofpoint-ORIG-GUID: 9SGi6yZiF9ZQeZkJaPmjgxoLcOnONtGm X-Proofpoint-GUID: 9SGi6yZiF9ZQeZkJaPmjgxoLcOnONtGm X-Spam-Status: No, score=-11.4 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_H2,SPF_HELO_NONE,SPF_NONE,TXREP,T_SCC_BODY_TEXT_LINE 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: DQoNCj4gT24gQXVnIDI2LCAyMDIyLCBhdCA0OjQ4IEFNLCBSaWNoYXJkIEJpZW5lciA8cmd1ZW50 aGVyQHN1c2UuZGU+IHdyb3RlOg0KPiANCj4gT24gV2VkLCAxNyBBdWcgMjAyMiwgUWluZyBaaGFv IHdyb3RlOg0KPiANCj4+IEFkZCB0aGUgZm9sbG93aW5nIG5ldyBvcHRpb24gLWZzdHJpY3QtZmxl eC1hcnJheVs9bl0gYW5kIGEgY29ycmVzcG9uZGluZw0KPj4gYXR0cmlidXRlIHN0cmljdF9mbGV4 X2FycmF5IHRvIEdDQzoNCj4+IA0KPj4gJy1mc3RyaWN0LWZsZXgtYXJyYXknDQo+PiAgICAgVHJl YXQgdGhlIHRyYWlsaW5nIGFycmF5IG9mIGEgc3RydWN0dXJlIGFzIGEgZmxleGlibGUgYXJyYXkg bWVtYmVyDQo+PiAgICAgaW4gYSBzdHJpY3RlciB3YXkuICBUaGUgcG9zaXRpdmUgZm9ybSBpcyBl cXVpdmFsZW50IHRvDQo+PiAgICAgJy1mc3RyaWN0LWZsZXgtYXJyYXk9MycsIHdoaWNoIGlzIHRo ZSBzdHJpY3Rlc3QuICBBIHRyYWlsaW5nIGFycmF5DQo+PiAgICAgaXMgdHJlYXRlZCBhcyBhIGZs ZXhpYmxlIGFycmF5IG1lbWJlciBvbmx5IHdoZW4gaXQgaXMgZGVjbGFyZWQgYXMgYQ0KPj4gICAg IGZsZXhpYmxlIGFycmF5IG1lbWJlciBwZXIgQzk5IHN0YW5kYXJkIG9ud2FyZHMuICBUaGUgbmVn YXRpdmUgZm9ybQ0KPj4gICAgIGlzIGVxdWl2YWxlbnQgdG8gJy1mc3RyaWN0LWZsZXgtYXJyYXk9 MCcsIHdoaWNoIGlzIHRoZSBsZWFzdA0KPj4gICAgIHN0cmljdC4gIEFsbCB0cmFpbGluZyBhcnJh eXMgb2Ygc3RydWN0dXJlcyBhcmUgdHJlYXRlZCBhcyBmbGV4aWJsZQ0KPj4gICAgIGFycmF5IG1l bWJlcnMuDQo+PiANCj4+ICctZnN0cmljdC1mbGV4LWFycmF5PUxFVkVMJw0KPj4gICAgIFRyZWF0 IHRoZSB0cmFpbGluZyBhcnJheSBvZiBhIHN0cnVjdHVyZSBhcyBhIGZsZXhpYmxlIGFycmF5IG1l bWJlcg0KPj4gICAgIGluIGEgc3RyaWN0ZXIgd2F5LiAgVGhlIHZhbHVlIG9mIExFVkVMIGNvbnRy b2xzIHRoZSBsZXZlbCBvZg0KPj4gICAgIHN0cmljdG5lc3MuDQo+PiANCj4+ICAgICBUaGUgcG9z c2libGUgdmFsdWVzIG9mIExFVkVMIGFyZSB0aGUgc2FtZSBhcyBmb3IgdGhlDQo+PiAgICAgJ3N0 cmljdF9mbGV4X2FycmF5JyBhdHRyaWJ1dGUgKCpub3RlIFZhcmlhYmxlIEF0dHJpYnV0ZXM6Oiku DQo+PiANCj4+ICAgICBZb3UgY2FuIGNvbnRyb2wgdGhpcyBiZWhhdmlvciBmb3IgYSBzcGVjaWZp YyB0cmFpbGluZyBhcnJheSBmaWVsZA0KPj4gICAgIG9mIGEgc3RydWN0dXJlIGJ5IHVzaW5nIHRo ZSB2YXJpYWJsZSBhdHRyaWJ1dGUgJ3N0cmljdF9mbGV4X2FycmF5Jw0KPj4gICAgIGF0dHJpYnV0 ZSAoKm5vdGUgVmFyaWFibGUgQXR0cmlidXRlczo6KS4NCj4+IA0KPj4gICAgIFRoaXMgb3B0aW9u IGlzIG9ubHkgdmFsaWQgd2hlbiBmbGV4aWJsZSBhcnJheSBtZW1iZXIgaXMgc3VwcG9ydGVkIGlu IHRoZQ0KPj4gICAgIGxhbmd1YWdlLiBGT1IgSVNPIEMgYmVmb3JlIEM5OSBhbmQgSVNPIEMrKywg bm8gbGFuZ3VhZ2Ugc3VwcG9ydCBmb3IgdGhlIGZsZXhpYmxlDQo+PiAgICAgYXJyYXkgbWVtYmVy IGF0IGFsbCwgdGhpcyBvcHRpb24gd2lsbCBiZSBpbnZhbGlkIGFuZCBhIHdhcm5pbmcgd2lsbCBi ZSBpc3N1ZWQuDQo+PiAgICAgV2hlbiAtc3RkPWdudTg5IGlzIHNwZWNpZmllZCBvciBDKysgd2l0 aCBHTlUgZXh0ZW5zaW9uLCBvbmx5IHplcm8tbGVuZ3RoIGFycmF5DQo+PiAgICAgZXh0ZW5zaW9u IGFuZCBvbmUtc2l6ZSBhcnJheSBhcmUgc3VwcG9ydGVkLCBhcyBhIHJlc3VsdCwgTEVWRUw9MyB3 aWxsIGJlDQo+PiAgICAgaW52YWxpZCBhbmQgYSB3YXJuaW5nIHdpbGwgYmUgaXNzdWVkLg0KPj4g DQo+PiAnc3RyaWN0X2ZsZXhfYXJyYXkgKExFVkVMKScNCj4+ICAgICBUaGUgJ3N0cmljdF9mbGV4 X2FycmF5JyBhdHRyaWJ1dGUgc2hvdWxkIGJlIGF0dGFjaGVkIHRvIHRoZQ0KPj4gICAgIHRyYWls aW5nIGFycmF5IGZpZWxkIG9mIGEgc3RydWN0dXJlLiAgSXQgc3BlY2lmaWVzIHRoZSBsZXZlbCBv Zg0KPj4gICAgIHN0cmljdG5lc3Mgb2YgdHJlYXRpbmcgdGhlIHRyYWlsaW5nIGFycmF5IGZpZWxk IG9mIGEgc3RydWN0dXJlIGFzIGENCj4+ICAgICBmbGV4aWJsZSBhcnJheSBtZW1iZXIuICBMRVZF TCBtdXN0IGJlIGFuIGludGVnZXIgYmV0d2VuIDAgdG8gMy4NCj4+IA0KPj4gICAgIExFVkVMPTAg aXMgdGhlIGxlYXN0IHN0cmljdCBsZXZlbCwgYWxsIHRyYWlsaW5nIGFycmF5cyBvZg0KPj4gICAg IHN0cnVjdHVyZXMgYXJlIHRyZWF0ZWQgYXMgZmxleGlibGUgYXJyYXkgbWVtYmVycy4gIExFVkVM PTMgaXMgdGhlDQo+PiAgICAgc3RyaWN0ZXN0IGxldmVsLCBvbmx5IHdoZW4gdGhlIHRyYWlsaW5n IGFycmF5IGlzIGRlY2xhcmVkIGFzIGENCj4+ICAgICBmbGV4aWJsZSBhcnJheSBtZW1iZXIgcGVy IEM5OSBzdGFuZGFyZCBvbndhcmRzIChbXSksIGl0IGlzIHRyZWF0ZWQNCj4+ICAgICBhcyBhIGZs ZXhpYmxlIGFycmF5IG1lbWJlci4NCj4+IA0KPj4gICAgIFRoZXJlIGFyZSB0d28gbW9yZSBsZXZl bHMgaW4gYmV0d2VlbiAwIGFuZCAzLCB3aGljaCBhcmUgcHJvdmlkZWQgdG8NCj4+ICAgICBzdXBw b3J0IG9sZGVyIGNvZGVzIHRoYXQgdXNlIEdDQyB6ZXJvLWxlbmd0aCBhcnJheSBleHRlbnNpb24g KFswXSkNCj4+ICAgICBvciBvbmUtc2l6ZSBhcnJheSBhcyBmbGV4aWJsZSBhcnJheSBtZW1iZXIg KFsxXSk6IFdoZW4gTEVWRUwgaXMgMSwNCj4+ICAgICB0aGUgdHJhaWxpbmcgYXJyYXkgaXMgdHJl YXRlZCBhcyBhIGZsZXhpYmxlIGFycmF5IG1lbWJlciB3aGVuIGl0IGlzDQo+PiAgICAgZGVjbGFy ZWQgYXMgZWl0aGVyIFtdLCBbMF0sIG9yIFsxXTsgV2hlbiBMRVZFTCBpcyAyLCB0aGUgdHJhaWxp bmcNCj4+ICAgICBhcnJheSBpcyB0cmVhdGVkIGFzIGEgZmxleGlibGUgYXJyYXkgbWVtYmVyIHdo ZW4gaXQgaXMgZGVjbGFyZWQgYXMNCj4+ICAgICBlaXRoZXIgW10sIG9yIFswXS4NCj4+IA0KPj4g ICAgIFRoaXMgYXR0cmlidXRlIGNhbiBiZSB1c2VkIHdpdGggb3Igd2l0aG91dCAnLWZzdHJpY3Qt ZmxleC1hcnJheScuDQo+PiAgICAgV2hlbiBib3RoIHRoZSBhdHRyaWJ1dGUgYW5kIHRoZSBvcHRp b24gcHJlc2VudCBhdCB0aGUgc2FtZSB0aW1lLA0KPj4gICAgIHRoZSBsZXZlbCBvZiB0aGUgc3Ry aWN0bmVzcyBmb3IgdGhlIHNwZWNpZmljIHRyYWlsaW5nIGFycmF5IGZpZWxkDQo+PiAgICAgaXMg ZGV0ZXJtaW5lZCBieSB0aGUgYXR0cmlidXRlLg0KPj4gDQo+PiAgICAgVGhpcyBhdHRyaWJ1dGUg aXMgb25seSB2YWxpZCB3aGVuIGZsZXhpYmxlIGFycmF5IG1lbWJlciBpcyBzdXBwb3J0ZWQgaW4g dGhlDQo+PiAgICAgbGFuZ3VhZ2UuIEZvciBJU08gQyBiZWZvcmUgQzk5IGFuZCBJU08gQysrLCBu byBsYW5ndWFnZSBzdXBwb3J0IGZvciB0aGUgZmxleGlibGUNCj4+ICAgICBhcnJheSBtZW1iZXIg YXQgYWxsLCB0aGlzIGF0dHJpYnV0ZSB3aWxsIGJlIGludmFsaWQgYW5kIGEgd2FybmluZyBpcyBp c3N1ZWQuDQo+PiAgICAgV2hlbiAtc3RkPWdudTg5IGlzIHNwZWNpZmllZCBvciBDKysgd2l0aCBH TlUgZXh0ZW5zaW9uLCBvbmx5IHplcm8tbGVuZ3RoIGFycmF5DQo+PiAgICAgZXh0ZW5zaW9uIGFu ZCBvbmUtc2l6ZSBhcnJheSBhcmUgc3VwcG9ydGVkLCBhcyBhIHJlc3VsdCwgTEVWRUw9MyB3aWxs IGJlDQo+PiAgICAgaW52YWxpZCBhbmQgYSB3YXJuaW5nIGlzIGlzc3VlZC4NCj4+IA0KPj4gZ2Nj L2MtZmFtaWx5L0NoYW5nZUxvZzoNCj4+IA0KPj4gCSogYy1hdHRyaWJzLmNjIChoYW5kbGVfc3Ry aWN0X2ZsZXhfYXJyYXlzX2F0dHJpYnV0ZSk6IE5ldyBmdW5jdGlvbi4NCj4+IAkoY19jb21tb25f YXR0cmlidXRlX3RhYmxlKTogTmV3IGl0ZW0gZm9yIHN0cmljdF9mbGV4X2FycmF5Lg0KPj4gCSog Yy1vcHRzLmNjIChjX2NvbW1vbl9wb3N0X29wdGlvbnMpOiBIYW5kbGUgdGhlIGNvbWJpbmF0aW9u IG9mDQo+PiAJLWZzdHJpY3QtZmxleC1hcnJheXMgYW5kIC1zdGQgc3BlY2lhbGx5Lg0KPj4gCSog Yy5vcHQ6IChmc3RyaWN0LWZsZXgtYXJyYXkpOiBOZXcgb3B0aW9uLg0KPj4gCShmc3RyaWN0LWZs ZXgtYXJyYXk9KTogTmV3IG9wdGlvbi4NCj4+IA0KPj4gZ2NjL2MvQ2hhbmdlTG9nOg0KPj4gDQo+ PiAJKiBjLWRlY2wuY2MgKGZsZXhpYmxlX2FycmF5X21lbWJlcl90eXBlX3ApOiBOZXcgZnVuY3Rp b24uDQo+PiAJKG9uZV9lbGVtZW50X2FycmF5X3R5cGVfcCk6IExpa2V3aXNlLg0KPj4gCSh6ZXJv X2xlbmd0aF9hcnJheV90eXBlX3ApOiBMaWtld2lzZS4NCj4+IAkoYWRkX2ZsZXhpYmxlX2FycmF5 X2VsdHNfdG9fc2l6ZSk6IENhbGwgbmV3IHV0aWxpdHkNCj4+IAlyb3V0aW5lIGZsZXhpYmxlX2Fy cmF5X21lbWJlcl90eXBlX3AuDQo+PiAJKGlzX2ZsZXhpYmxlX2FycmF5X21lbWJlcl9wKTogTmV3 IGZ1bmN0aW9uLg0KPj4gCShmaW5pc2hfc3RydWN0KTogU2V0IHRoZSBuZXcgREVDTF9OT1RfRkxF WEFSUkFZIGZsYWcuDQo+PiANCj4+IGdjYy9jcC9DaGFuZ2VMb2c6DQo+PiANCj4+IAkqIG1vZHVs ZS5jYyAodHJlZXNfb3V0Ojpjb3JlX2Jvb2xzKTogU3RyZWFtIG91dCBuZXcgYml0DQo+PiAJZGVj bF9ub3RfZmxleGFycmF5Lg0KPj4gCSh0cmVlc19pbjo6Y29yZV9ib29scyk6IFN0cmVhbSBpbiBu ZXcgYml0IGRlY2xfbm90X2ZsZXhhcnJheS4NCj4+IA0KPj4gZ2NjL0NoYW5nZUxvZzoNCj4+IA0K Pj4gCSogZG9jL2V4dGVuZC50ZXhpOiBEb2N1bWVudCBzdHJpY3RfZmxleF9hcnJheSBhdHRyaWJ1 dGUuDQo+PiAJKiBkb2MvaW52b2tlLnRleGk6IERvY3VtZW50IC1mc3RyaWN0LWZsZXgtYXJyYXlb PW5dIG9wdGlvbi4NCj4+IAkqIHByaW50LXRyZWUuY2MgKHByaW50X25vZGUpOiBQcmludCBuZXcg Yml0IGRlY2xfbm90X2ZsZXhhcnJheS4NCj4+IAkqIHRyZWUtY29yZS5oIChzdHJ1Y3QgdHJlZV9k ZWNsX2NvbW1vbik6IE5ldyBiaXQgZmllbGQNCj4+IAlkZWNsX25vdF9mbGV4YXJyYXkuDQo+PiAJ KiB0cmVlLXN0cmVhbWVyLWluLmNjICh1bnBhY2tfdHNfZGVjbF9jb21tb25fdmFsdWVfZmllbGRz KTogU3RyZWFtDQo+PiAJaW4gbmV3IGJpdCBkZWNsX25vdF9mbGV4YXJyYXkuDQo+PiAJKiB0cmVl LXN0cmVhbWVyLW91dC5jYyAocGFja190c19kZWNsX2NvbW1vbl92YWx1ZV9maWVsZHMpOiBTdHJl YW0NCj4+IAlvdXQgbmV3IGJpdCBkZWNsX25vdF9mbGV4YXJyYXkuDQo+PiAJKiB0cmVlLmNjIChh cnJheV9hdF9zdHJ1Y3RfZW5kX3ApOiBVcGRhdGUgaXQgd2l0aCB0aGUgbmV3IGJpdCBmaWVsZA0K Pj4gCWRlY2xfbm90X2ZsZXhhcnJheS4NCj4+IAkqIHRyZWUuaCAoREVDTF9OT1RfRkxFWEFSUkFZ KTogTmV3IGZsYQ0KPiANCj4gVGhlIG1pZGRsZS1lbmQgY2hhbmdlcyBhcmUgT0ssIHRoZSBjLyBh bmQgY3AvIGNoYW5nZXMgbmVlZCByZXZpZXcNCj4gZnJvbSBhIGZyb250ZW5kIG1haW50YWluZXIu DQoNCkkgQ0PigJllZCBKb3NlcGggTXllcnMgZm9yIHRoZSBGRSBwYXJ0IHJldmlldy4gSm9zZXBo LCBjb3VsZCB5b3UgcGxlYXNlIHJldmlldyB0aGUgY2hhbmdlcyBpbiBjLWZhbWlseSBhbmQgYz8N CkFuZCBOYXRoYW4gU2lkd2VsbCBmb3IgdGhlIEMrKyBwYXJ0LCBOYXRoYW4sIGNvdWxkIHlvdSBw bGVhc2UgcmV2aWV3IHRoZSBjaGFuZ2VzIGluIGNwPw0KDQoNCj4gDQo+IEFyZSB0aGUgdGVzdGNh c2VzIGFjdHVhbGx5IEMvQysrIGNvZGU/ICBZb3UgY2FuIHVzZQ0KPiB0ZXN0c3VpdGUvYy1jKyst Y29tbW9uLyB0byBwbGFjZSB0ZXN0cyB0aGF0IHJ1biB3aXRoIGJvdGggZnJvbnRlbmRzLg0KDQpU aGUgbWFqb3IgaXNzdWUgd2hlbiBJIHRyaWVkIHRvIGFkZCB0aGVzZSB0ZXN0IGNhc2VzIGludG8g Yy1jKystY29tbW9uIGlzLCB0aGVzZSB0ZXN0aW5nIGNhc2VzIG1haW5seSBmb3IgdGhlIG9wdGlv bnMgdXNhZ2UsIGZvciBleGFtcGxlLCAtc3RkPWM4OSwgLXN0ZD1nbnU4OSBmb3IgQywgLXN0ZD1j Kys5OCwgLXN0ZD1nbnUrKzk4IGZvciBDKysuDQoNCkZvciBDIGFuZCBDKyssIHRoZSBvcHRpb25z IHRoYXQgYXJlIHRlc3RlZCBhcmUgZGlmZmVyZW50LiBTbywgSSBhbSBub3Qgc3VyZSBob3cgY2Fu IEkgcHV0IHRoZSBzYW1lIHRlc3RpbmcgY2FzZSBmb3IgQyBhbmQgQysrIGJ1dCB3aXRoIGRpZmZl cmVudCBvcHRpb25zPw0KDQpRaW5nDQoNCj4gDQo+IFJpY2hhcmQuDQo+IA0KPj4gDQo+PiBnY2Mv dGVzdHN1aXRlL0NoYW5nZUxvZzoNCj4+IA0KPj4gCSogZysrLmRnL3N0cmljdC1mbGV4LWFycmF5 LTEuQzogTmV3IHRlc3QuDQo+PiAJKiBnKysuZGcvc3RyaWN0LWZsZXgtYXJyYXktMi5DOiBOZXcg dGVzdC4NCj4+IAkqIGcrKy5kZy9zdHJpY3QtZmxleC1hcnJheS0zLkM6IE5ldyB0ZXN0Lg0KPj4g CSogZysrLmRnL3N0cmljdC1mbGV4LWFycmF5LTQuQzogTmV3IHRlc3QuDQo+PiAJKiBnY2MuZGcv c3RyaWN0LWZsZXgtYXJyYXktMS5jOiBOZXcgdGVzdC4NCj4+IAkqIGdjYy5kZy9zdHJpY3QtZmxl eC1hcnJheS0yLmM6IE5ldyB0ZXN0Lg0KPj4gCSogZ2NjLmRnL3N0cmljdC1mbGV4LWFycmF5LTMu YzogTmV3IHRlc3QuDQo+PiAJKiBnY2MuZGcvc3RyaWN0LWZsZXgtYXJyYXktNC5jOiBOZXcgdGVz dC4NCj4+IC0tLQ0KPj4gZ2NjL2MtZmFtaWx5L2MtYXR0cmlicy5jYyAgICAgICAgICAgICAgICAg IHwgIDk0ICsrKysrKysrKysrKysrKw0KPj4gZ2NjL2MtZmFtaWx5L2Mtb3B0cy5jYyAgICAgICAg ICAgICAgICAgICAgIHwgIDQxICsrKysrKysNCj4+IGdjYy9jLWZhbWlseS9jLm9wdCAgICAgICAg ICAgICAgICAgICAgICAgICB8ICAgNyArKw0KPj4gZ2NjL2MvYy1kZWNsLmNjICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHwgMTMwICsrKysrKysrKysrKysrKysrKystLQ0KPj4gZ2NjL2NwL21v ZHVsZS5jYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyICsNCj4+IGdjYy9kb2MvZXh0 ZW5kLnRleGkgICAgICAgICAgICAgICAgICAgICAgICB8ICAzMyArKysrKysNCj4+IGdjYy9kb2Mv aW52b2tlLnRleGkgICAgICAgICAgICAgICAgICAgICAgICB8ICAzNCArKysrKy0NCj4+IGdjYy9w cmludC10cmVlLmNjICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgOCArLQ0KPj4gZ2NjL3Rl c3RzdWl0ZS9nKysuZGcvc3RyaWN0LWZsZXgtYXJyYXktMS5DIHwgIDMxICsrKysrDQo+PiBnY2Mv dGVzdHN1aXRlL2crKy5kZy9zdHJpY3QtZmxleC1hcnJheS0yLkMgfCAgMTYgKysrDQo+PiBnY2Mv dGVzdHN1aXRlL2crKy5kZy9zdHJpY3QtZmxleC1hcnJheS0zLkMgfCAgMjEgKysrKw0KPj4gZ2Nj L3Rlc3RzdWl0ZS9nKysuZGcvc3RyaWN0LWZsZXgtYXJyYXktNC5DIHwgICA5ICsrDQo+PiBnY2Mv dGVzdHN1aXRlL2djYy5kZy9zdHJpY3QtZmxleC1hcnJheS0xLmMgfCAgMzEgKysrKysNCj4+IGdj Yy90ZXN0c3VpdGUvZ2NjLmRnL3N0cmljdC1mbGV4LWFycmF5LTIuYyB8ICAxNSArKysNCj4+IGdj Yy90ZXN0c3VpdGUvZ2NjLmRnL3N0cmljdC1mbGV4LWFycmF5LTMuYyB8ICAyMSArKysrDQo+PiBn Y2MvdGVzdHN1aXRlL2djYy5kZy9zdHJpY3QtZmxleC1hcnJheS00LmMgfCAgMTAgKysNCj4+IGdj Yy90cmVlLWNvcmUuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNSArLQ0KPj4gZ2Nj L3RyZWUtc3RyZWFtZXItaW4uY2MgICAgICAgICAgICAgICAgICAgIHwgICAxICsNCj4+IGdjYy90 cmVlLXN0cmVhbWVyLW91dC5jYyAgICAgICAgICAgICAgICAgICB8ICAgMSArDQo+PiBnY2MvdHJl ZS5jYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNDUgKysrKystLQ0KPj4gZ2Nj L3RyZWUuaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDE0ICsrLQ0KPj4gMjEg ZmlsZXMgY2hhbmdlZCwgNTQxIGluc2VydGlvbnMoKyksIDI4IGRlbGV0aW9ucygtKQ0KPj4gY3Jl YXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZysrLmRnL3N0cmljdC1mbGV4LWFycmF5LTEu Qw0KPj4gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZysrLmRnL3N0cmljdC1mbGV4 LWFycmF5LTIuQw0KPj4gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZysrLmRnL3N0 cmljdC1mbGV4LWFycmF5LTMuQw0KPj4gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUv ZysrLmRnL3N0cmljdC1mbGV4LWFycmF5LTQuQw0KPj4gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90 ZXN0c3VpdGUvZ2NjLmRnL3N0cmljdC1mbGV4LWFycmF5LTEuYw0KPj4gY3JlYXRlIG1vZGUgMTAw NjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3N0cmljdC1mbGV4LWFycmF5LTIuYw0KPj4gY3JlYXRl IG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3N0cmljdC1mbGV4LWFycmF5LTMuYw0K Pj4gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3N0cmljdC1mbGV4LWFy cmF5LTQuYw0KPj4gDQo+PiBkaWZmIC0tZ2l0IGEvZ2NjL2MtZmFtaWx5L2MtYXR0cmlicy5jYyBi L2djYy9jLWZhbWlseS9jLWF0dHJpYnMuY2MNCj4+IGluZGV4IGU0ZjFkMzU0MmYzNy4uOWM5OTI3 Y2VmYTBkIDEwMDY0NA0KPj4gLS0tIGEvZ2NjL2MtZmFtaWx5L2MtYXR0cmlicy5jYw0KPj4gKysr IGIvZ2NjL2MtZmFtaWx5L2MtYXR0cmlicy5jYw0KPj4gQEAgLTEwMSw2ICsxMDEsOCBAQCBzdGF0 aWMgdHJlZSBoYW5kbGVfc3BlY2lhbF92YXJfc2VjX2F0dHJpYnV0ZSAodHJlZSAqLCB0cmVlLCB0 cmVlLCBpbnQsIGJvb2wgKik7DQo+PiBzdGF0aWMgdHJlZSBoYW5kbGVfYWxpZ25lZF9hdHRyaWJ1 dGUgKHRyZWUgKiwgdHJlZSwgdHJlZSwgaW50LCBib29sICopOw0KPj4gc3RhdGljIHRyZWUgaGFu ZGxlX3dhcm5faWZfbm90X2FsaWduZWRfYXR0cmlidXRlICh0cmVlICosIHRyZWUsIHRyZWUsDQo+ PiAJCQkJCQkgIGludCwgYm9vbCAqKTsNCj4+ICtzdGF0aWMgdHJlZSBoYW5kbGVfc3RyaWN0X2Zs ZXhfYXJyYXlzX2F0dHJpYnV0ZSAodHJlZSAqLCB0cmVlLCB0cmVlLA0KPj4gKwkJCQkJCSBpbnQs IGJvb2wgKik7DQo+PiBzdGF0aWMgdHJlZSBoYW5kbGVfd2Vha19hdHRyaWJ1dGUgKHRyZWUgKiwg dHJlZSwgdHJlZSwgaW50LCBib29sICopIDsNCj4+IHN0YXRpYyB0cmVlIGhhbmRsZV9ub3BsdF9h dHRyaWJ1dGUgKHRyZWUgKiwgdHJlZSwgdHJlZSwgaW50LCBib29sICopIDsNCj4+IHN0YXRpYyB0 cmVlIGhhbmRsZV9hbGlhc19pZnVuY19hdHRyaWJ1dGUgKGJvb2wsIHRyZWUgKiwgdHJlZSwgdHJl ZSwgYm9vbCAqKTsNCj4+IEBAIC0zNjgsNiArMzcwLDggQEAgY29uc3Qgc3RydWN0IGF0dHJpYnV0 ZV9zcGVjIGNfY29tbW9uX2F0dHJpYnV0ZV90YWJsZVtdID0NCj4+IAkgICAgICAgICAgICAgICAg ICAgICAgYXR0cl9hbGlnbmVkX2V4Y2x1c2lvbnMgfSwNCj4+ICAgeyAid2Fybl9pZl9ub3RfYWxp Z25lZCIsICAgIDAsIDEsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNlLA0KPj4gCQkJICAgICAg aGFuZGxlX3dhcm5faWZfbm90X2FsaWduZWRfYXR0cmlidXRlLCBOVUxMIH0sDQo+PiArICB7ICJz dHJpY3RfZmxleF9hcnJheXMiLCAgICAgIDEsIDEsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNl LA0KPj4gKwkJCSAgICAgIGhhbmRsZV9zdHJpY3RfZmxleF9hcnJheXNfYXR0cmlidXRlLCBOVUxM IH0sDQo+PiAgIHsgIndlYWsiLCAgICAgICAgICAgICAgICAgICAwLCAwLCB0cnVlLCAgZmFsc2Us IGZhbHNlLCBmYWxzZSwNCj4+IAkJCSAgICAgIGhhbmRsZV93ZWFrX2F0dHJpYnV0ZSwgTlVMTCB9 LA0KPj4gICB7ICJub3BsdCIsICAgICAgICAgICAgICAgICAgIDAsIDAsIHRydWUsICBmYWxzZSwg ZmFsc2UsIGZhbHNlLA0KPj4gQEAgLTI1MDUsNiArMjUwOSw5NiBAQCBoYW5kbGVfd2Fybl9pZl9u b3RfYWxpZ25lZF9hdHRyaWJ1dGUgKHRyZWUgKm5vZGUsIHRyZWUgbmFtZSwNCj4+IAkJCQkJICBu b19hZGRfYXR0cnMsIHRydWUpOw0KPj4gfQ0KPj4gDQo+PiArLyogSGFuZGxlIGEgInN0cmljdF9m bGV4X2FycmF5cyIgYXR0cmlidXRlOyBhcmd1bWVudHMgYXMgaW4NCj4+ICsgICBzdHJ1Y3QgYXR0 cmlidXRlX3NwZWMuaGFuZGxlci4gICovDQo+PiArDQo+PiArc3RhdGljIHRyZWUNCj4+ICtoYW5k bGVfc3RyaWN0X2ZsZXhfYXJyYXlzX2F0dHJpYnV0ZSAodHJlZSAqbm9kZSwgdHJlZSBuYW1lLA0K Pj4gKwkJCQkgICAgIHRyZWUgYXJncywgaW50IEFSR19VTlVTRUQgKGZsYWdzKSwNCj4+ICsJCQkJ ICAgICBib29sICpub19hZGRfYXR0cnMpDQo+PiArew0KPj4gKyAgdHJlZSBkZWNsID0gKm5vZGU7 DQo+PiArICB0cmVlIGFyZ3ZhbCA9IFRSRUVfVkFMVUUgKGFyZ3MpOw0KPj4gKw0KPj4gKyAgLyog VGhpcyBhdHRyaWJ1dGUgb25seSBhcHBsaWVzIHRvIGZpZWxkIGRlY2xzIG9mIGEgc3RydWN0dXJl LiAgKi8NCj4+ICsgIGlmIChUUkVFX0NPREUgKGRlY2wpICE9IEZJRUxEX0RFQ0wpDQo+PiArICAg IHsNCj4+ICsgICAgICBlcnJvcl9hdCAoREVDTF9TT1VSQ0VfTE9DQVRJT04gKGRlY2wpLA0KPj4g KwkJIiVxRSBhdHRyaWJ1dGUgbWF5IG5vdCBiZSBzcGVjaWZpZWQgZm9yICVxK0QiLCBuYW1lLCBk ZWNsKTsNCj4+ICsgICAgICAqbm9fYWRkX2F0dHJzID0gdHJ1ZTsNCj4+ICsgICAgfQ0KPj4gKyAg LyogVGhpcyBhdHRyaWJ1dGUgb25seSBhcHBsaWVzIHRvIGZpZWxkIHdpdGggYXJyYXkgdHlwZS4g ICovDQo+PiArICBlbHNlIGlmIChUUkVFX0NPREUgKFRSRUVfVFlQRSAoZGVjbCkpICE9IEFSUkFZ X1RZUEUpDQo+PiArICAgIHsNCj4+ICsgICAgICBlcnJvcl9hdCAoREVDTF9TT1VSQ0VfTE9DQVRJ T04gKGRlY2wpLA0KPj4gKwkJIiVxRSBhdHRyaWJ1dGUgbWF5IG5vdCBiZSBzcGVjaWZpZWQgZm9y IGEgbm9uIGFycmF5IGZpZWxkIiwNCj4+ICsJCW5hbWUpOw0KPj4gKyAgICAgICpub19hZGRfYXR0 cnMgPSB0cnVlOw0KPj4gKyAgICB9DQo+PiArICBlbHNlIGlmIChUUkVFX0NPREUgKGFyZ3ZhbCkg IT0gSU5URUdFUl9DU1QpDQo+PiArICAgIHsNCj4+ICsgICAgICBlcnJvcl9hdCAoREVDTF9TT1VS Q0VfTE9DQVRJT04gKGRlY2wpLA0KPj4gKwkJIiVxRSBhdHRyaWJ1dGUgYXJndW1lbnQgbm90IGFu IGludGVnZXIiLCBuYW1lKTsNCj4+ICsgICAgICAqbm9fYWRkX2F0dHJzID0gdHJ1ZTsNCj4+ICsg ICAgfQ0KPj4gKyAgZWxzZSBpZiAoIXRyZWVfZml0c191aHdpX3AgKGFyZ3ZhbCkgfHwgdHJlZV90 b191aHdpIChhcmd2YWwpID4gMykNCj4+ICsgICAgew0KPj4gKyAgICAgIGVycm9yX2F0IChERUNM X1NPVVJDRV9MT0NBVElPTiAoZGVjbCksDQo+PiArCQkiJXFFIGF0dHJpYnV0ZSBhcmd1bWVudCAl cUUgaXMgbm90IGFuIGludGVnZXIgY29uc3RhbnQiDQo+PiArCQkiIGJldHdlZW4gMCBhbmQgMyIs IG5hbWUsIGFyZ3ZhbCk7DQo+PiArICAgICAgKm5vX2FkZF9hdHRycyA9IHRydWU7DQo+PiArICAg IH0NCj4+ICsgIGVsc2UNCj4+ICsgICAgew0KPj4gKyAgICAgIHVuc2lnbmVkIGludCBsZXZlbCA9 IHRyZWVfdG9fdWh3aSAoYXJndmFsKTsNCj4+ICsgICAgICAvKiBjaGVjayB3aGV0aGVyIHRoZSBh dHRyaWJ1dGUgaXMgdmFsaWQgYmFzZWQgb24gbGFuZ3VhZ2Ugc3RhbmRhcmQuDQo+PiArCSB0aGUg YXR0cmlidXRlIGlzIG9ubHkgdmFsaWQgd2hlbiBmbGV4aWJsZSBhcnJheSBtZW1iZXIgaXMNCj4+ ICsJIHN1cHBvcnRlZCBpbiB0aGUgbGFuZ3VhZ2UuIFRoZXJlZm9yZSwgd2Ugc2hvdWxkIGludmFs aWQgdGhpcyBhdHRyaWJ1dGUgb3INCj4+ICsJIHNwZWNpZmljIGxldmVsIG9mIHRoaXMgYXR0cmli dXRlIGZvciB0aGUgZm9sbG93aW5nIHNpdHVhdGlvbnM6DQo+PiArCUEuIFdoZW4gLXN0ZD1jODkg aXMgc3BlY2lmaWVkLCBubyBsYW5ndWFnZSBzdXBwb3J0IGF0IGFsbCwgaW52YWxpZCB0aGlzDQo+ PiArCSAgIGF0dHJpYnV0ZSBhbmQgaXNzdWUgYSB3YXJuaW5nOw0KPj4gKwlCLiBXaGVuIC1zdGQ9 Z251ODkgaXMgc3BlY2lmaWVkLCBvbmx5IHplcm8tbGVuZ3RoIGFycmF5IGV4dGVuc2lvbiBhbmQN Cj4+ICsJICAgb25lLXNpemUgYXJyYXkgYXJlIHN1cHBvcnRlZCwgbGV2ZWw9MyB3aWxsIGJlIGlu dmFsaWQgYW5kIGEgd2FybmluZw0KPj4gKwkgICB3aWxsIGJlIGlzc3VlZC4NCj4+ICsJQy4gQysr IHdpdGhvdXQgR05VIGV4dGVuc2lvbiwgbm8gbGFuZ3VhZ2Ugc3VwcG9ydCBhdCBhbGwsIGludmFs aWQgdGhpcw0KPj4gKwkgICBhdHRyaWJ1dGUgYW5kIGlzc3VlIGEgd2FybmluZzsNCj4+ICsJRC4g QysrIHdpdGggR05VIGV4dGVuc2lvbiwgb25seSB6ZXJvLWxlbmd0aCBhcnJheSBleHRlbnNpb24g YW5kIG9uZS1zaXplDQo+PiArCSAgIGFycmF5IGFyZSBzdXBwb3J0ZWQsIGxldmVsPTMgd2lsbCBi ZSBpbnZhbGlkIGFuZCBhIHdhcm5pbmcgd2lsbCBiZQ0KPj4gKwkgICBpc3N1ZWQuICAqLw0KPj4g KyAgICAgIGlmIChsZXZlbCA+IDApDQo+PiArCXsNCj4+ICsJICBpZiAoIWNfZGlhbGVjdF9jeHgg KCkgJiYgZmxhZ19pc28gJiYgZmxhZ19pc29jOTkgPT0gMCkNCj4+ICsJICB7DQo+PiArCSAgICB3 YXJuaW5nIChPUFRfV2F0dHJpYnV0ZXMsICIlcUUgYXR0cmlidXRlIGlnbm9yZWQgc2luY2UgaXQg aXMgIg0KPj4gKwkJICAgICAibm90IHN1cHBvcnRlZCB3aXRoIGEgSVNPIEMgYmVmb3JlIEM5OSIs IG5hbWUpOw0KPj4gKwkgICAgKm5vX2FkZF9hdHRycyA9IHRydWU7DQo+PiArCSAgfQ0KPj4gKwkg IGVsc2UgaWYgKCFjX2RpYWxlY3RfY3h4ICgpICYmICFmbGFnX2lzbw0KPj4gKwkJICAgJiYgZmxh Z19pc29jOTkgPT0gMCAmJiBsZXZlbCA9PSAzKQ0KPj4gKwkgIHsNCj4+ICsJICAgIHdhcm5pbmcg KE9QVF9XYXR0cmlidXRlcywgIiVxRSA9IDMgYXR0cmlidXRlIGlnbm9yZWQgc2luY2UgaXQgaXMg Ig0KPj4gKwkJICAgICAibm90IHN1cHBvcnRlZCB3aXRoIGEgR05VIGV4dGVuc2lvbiBHTlU4OSIs IG5hbWUpOw0KPj4gKwkgICAgKm5vX2FkZF9hdHRycyA9IHRydWU7DQo+PiArCSAgfQ0KPj4gKwkg IGVsc2UgaWYgKGNfZGlhbGVjdF9jeHggKCkgJiYgZmxhZ19pc28pDQo+PiArCSAgew0KPj4gKwkg ICAgd2FybmluZyAoT1BUX1dhdHRyaWJ1dGVzLCAiJXFFIGF0dHJpYnV0ZSBpZ25vcmVkIHNpbmNl IGl0IGlzICINCj4+ICsJCSAgICAgIm5vdCBzdXBwb3J0ZWQgd2l0aCBhIElTTyBDKysiLCBuYW1l KTsNCj4+ICsJICAgICpub19hZGRfYXR0cnMgPSB0cnVlOw0KPj4gKwkgIH0NCj4+ICsJICBlbHNl IGlmIChjX2RpYWxlY3RfY3h4ICgpICYmICFmbGFnX2lzbw0KPj4gKwkJICAgJiYgbGV2ZWwgPT0g MykNCj4+ICsJICB7DQo+PiArCSAgICB3YXJuaW5nIChPUFRfV2F0dHJpYnV0ZXMsICIlcUUgPSAz IGF0dHJpYnV0ZSBpZ25vcmVkIHNpbmNlIGl0IGlzICINCj4+ICsJCSAgICAgIm5vdCBzdXBwb3J0 ZWQgZm9yIEMrKyB3aXRoIEdOVSBleHRlbnNpb24iLCBuYW1lKTsNCj4+ICsJICAgICpub19hZGRf YXR0cnMgPSB0cnVlOw0KPj4gKwkgIH0NCj4+ICsJfQ0KPj4gKyAgICAgIH0NCj4+ICsNCj4+ICsg IHJldHVybiBOVUxMX1RSRUU7DQo+PiArfQ0KPj4gKw0KPj4gLyogSGFuZGxlIGEgIndlYWsiIGF0 dHJpYnV0ZTsgYXJndW1lbnRzIGFzIGluDQo+PiAgICBzdHJ1Y3QgYXR0cmlidXRlX3NwZWMuaGFu ZGxlci4gICovDQo+PiANCj4+IGRpZmYgLS1naXQgYS9nY2MvYy1mYW1pbHkvYy1vcHRzLmNjIGIv Z2NjL2MtZmFtaWx5L2Mtb3B0cy5jYw0KPj4gaW5kZXggNGUxNDYzNjg5ZGUzLi42MzllYjQwZjNj ODYgMTAwNjQ0DQo+PiAtLS0gYS9nY2MvYy1mYW1pbHkvYy1vcHRzLmNjDQo+PiArKysgYi9nY2Mv Yy1mYW1pbHkvYy1vcHRzLmNjDQo+PiBAQCAtODcwLDYgKzg3MCw0NyBAQCBjX2NvbW1vbl9wb3N0 X29wdGlvbnMgKGNvbnN0IGNoYXIgKipwZmlsZW5hbWUpDQo+PiAgICAgU0VUX09QVElPTl9JRl9V TlNFVCAoJmdsb2JhbF9vcHRpb25zLCAmZ2xvYmFsX29wdGlvbnNfc2V0LA0KPj4gCQkJIGZsYWdf dHJlZV9sb29wX2Rpc3RyaWJ1dGVfcGF0dGVybnMsIDApOw0KPj4gDQo+PiArICAvKiAtZnN0cmlj dC1mbGV4LWFycmF5cyBpcyBvbmx5IHZhbGlkIHdoZW4gZmxleGlibGUgYXJyYXkgbWVtYmVyIGlz DQo+PiArICAgICBzdXBwb3J0ZWQgaW4gdGhlIGxhbmd1YWdlLiBUaGVyZWZvcmUsIHdlIHNob3Vs ZCBpbnZhbGlkIHRoaXMgb3B0aW9uIG9yDQo+PiArICAgICBzcGVjaWZpYyBsZXZlbCBvZiB0aGlz IG9wdGlvbiBmb3IgdGhlIGZvbGxvd2luZyBzaXR1YXRpb25zOg0KPj4gKyAgICAgQS4gV2hlbiAt c3RkPWM4OSBpcyBzcGVjaWZpZWQsIG5vIGxhbmd1YWdlIHN1cHBvcnQgYXQgYWxsLCBpbnZhbGlk IHRoaXMNCj4+ICsJb3B0aW9uIGFuZCBpc3N1ZSBhIHdhcm5pbmc7DQo+PiArICAgICBCLiBXaGVu IC1zdGQ9Z251ODkgaXMgc3BlY2lmaWVkLCBvbmx5IHplcm8tbGVuZ3RoIGFycmF5IGV4dGVuc2lv biBhbmQNCj4+ICsJb25lLXNpemUgYXJyYXkgYXJlIHN1cHBvcnRlZCwgbGV2ZWw9MyB3aWxsIGJl IGludmFsaWQgYW5kIGEgd2FybmluZw0KPj4gKwl3aWxsIGJlIGlzc3VlZC4NCj4+ICsgICAgIEMu IEMrKyB3aXRob3V0IEdOVSBleHRlbnNpb24sIG5vIGxhbmd1YWdlIHN1cHBvcnQgYXQgYWxsLCBp bnZhbGlkIHRoaXMNCj4+ICsJb3B0aW9uIGFuZCBpc3N1ZSBhIHdhcm5pbmc7DQo+PiArICAgICBE LiBDKysgd2l0aCBHTlUgZXh0ZW5zaW9uLCBvbmx5IHplcm8tbGVuZ3RoIGFycmF5IGV4dGVuc2lv biBhbmQgb25lLXNpemUNCj4+ICsJYXJyYXkgYXJlIHN1cHBvcnRlZCwgbGV2ZWw9MyB3aWxsIGJl IGludmFsaWQgYW5kIGEgd2FybmluZyB3aWxsIGJlDQo+PiArCWlzc3VlZC4gICovDQo+PiArICBp ZiAoZmxhZ19zdHJpY3RfZmxleF9hcnJheXMgPiAwKQ0KPj4gKyAgICB7DQo+PiArICAgICAgaWYg KCFjX2RpYWxlY3RfY3h4ICgpICYmIGZsYWdfaXNvICYmIGZsYWdfaXNvYzk5ID09IDApDQo+PiAr CXsNCj4+ICsJICBmbGFnX3N0cmljdF9mbGV4X2FycmF5cyA9IDA7DQo+PiArCSAgd2FybmluZyAo MCwgIiU8LWZzdHJpY3QtZmxleC1hcnJheXMlPiBpcyBub3Qgc3VwcG9ydGVkIHdpdGggYSBJU08g QyAiDQo+PiArCQkgICAiYmVmb3JlIEM5OSwgaWdub3JlZCIpOw0KPj4gKwl9DQo+PiArICAgICAg ZWxzZSBpZiAoIWNfZGlhbGVjdF9jeHggKCkgJiYgIWZsYWdfaXNvICYmIGZsYWdfaXNvYzk5ID09 IDAgJiYgZmxhZ19zdHJpY3RfZmxleF9hcnJheXMgPT0gMykNCj4+ICsJew0KPj4gKwkgIGZsYWdf c3RyaWN0X2ZsZXhfYXJyYXlzID0gMDsNCj4+ICsJICB3YXJuaW5nICgwLCAiJTwtZnN0cmljdC1m bGV4LWFycmF5cz0zJT4gaXMgbm90IHN1cHBvcnRlZCB3aXRoIGEgIg0KPj4gKwkJICAgIkdOVSBl eHRlbnNpb24gR05VODksIGlnbm9yZWQiKTsNCj4+ICsJfQ0KPj4gKyAgICAgIGVsc2UgaWYgKGNf ZGlhbGVjdF9jeHggKCkgJiYgZmxhZ19pc28pDQo+PiArCXsNCj4+ICsJICBmbGFnX3N0cmljdF9m bGV4X2FycmF5cyA9IDA7DQo+PiArCSAgd2FybmluZyAoMCwgIiU8LWZzdHJpY3QtZmxleC1hcnJh eXMlPiBpcyBub3Qgc3VwcG9ydGVkIHdpdGggYSBJU08gIg0KPj4gKwkJICAgIkMrKywgaWdub3Jl ZCIpOw0KPj4gKwl9DQo+PiArICAgICAgZWxzZSBpZiAoY19kaWFsZWN0X2N4eCAoKSAmJiAhZmxh Z19pc28gJiYgZmxhZ19zdHJpY3RfZmxleF9hcnJheXMgPT0gMykNCj4+ICsJew0KPj4gKwkgIGZs YWdfc3RyaWN0X2ZsZXhfYXJyYXlzID0gMDsNCj4+ICsJICB3YXJuaW5nICgwLCAiJTwtZnN0cmlj dC1mbGV4LWFycmF5cz0zJT4gaXMgbm90IHN1cHBvcnRlZCBmb3IgQysrICINCj4+ICsJCSAgICJ3 aXRoIEdOVSBleHRlbnNpb24sIGlnbm9yZWQiKTsNCj4+ICsJfQ0KPj4gKyAgICB9DQo+PiArDQo+ PiAgIC8qIC1Xb3Zlcmxlbmd0aC1zdHJpbmdzIGlzIG9mZiBieSBkZWZhdWx0LCBidXQgaXMgZW5h YmxlZCBieSAtV3BlZGFudGljLg0KPj4gICAgICBJdCBpcyBuZXZlciBlbmFibGVkIGluIEMrKywg YXMgdGhlIG1pbmltdW0gbGltaXQgaXMgbm90IG5vcm1hdGl2ZQ0KPj4gICAgICBpbiB0aGF0IHN0 YW5kYXJkLiAgKi8NCj4+IGRpZmYgLS1naXQgYS9nY2MvYy1mYW1pbHkvYy5vcHQgYi9nY2MvYy1m YW1pbHkvYy5vcHQNCj4+IGluZGV4IDQ0ZTFhNjBjZTI0Ni4uMWU5NDRmOGEzMDU1IDEwMDY0NA0K Pj4gLS0tIGEvZ2NjL2MtZmFtaWx5L2Mub3B0DQo+PiArKysgYi9nY2MvYy1mYW1pbHkvYy5vcHQN Cj4+IEBAIC0yMDYwLDYgKzIwNjAsMTMgQEAgZnNpemVkLWRlYWxsb2NhdGlvbg0KPj4gQysrIE9i akMrKyBWYXIoZmxhZ19zaXplZF9kZWFsbG9jYXRpb24pIEluaXQoLTEpDQo+PiBFbmFibGUgQysr MTQgc2l6ZWQgZGVhbGxvY2F0aW9uIHN1cHBvcnQuDQo+PiANCj4+ICtmc3RyaWN0LWZsZXgtYXJy YXlzDQo+PiArQyBDKysgQ29tbW9uIEFsaWFzKGZzdHJpY3QtZmxleC1hcnJheXM9LDMsMCkNCj4+ ICsNCj4+ICtmc3RyaWN0LWZsZXgtYXJyYXlzPQ0KPj4gK0MgQysrIENvbW1vbiBKb2luZWQgUmVq ZWN0TmVnYXRpdmUgVUludGVnZXIgVmFyKGZsYWdfc3RyaWN0X2ZsZXhfYXJyYXlzKSBJbml0KDAp IEludGVnZXJSYW5nZSgwLDMpDQo+PiArLWZzdHJpY3QtZmxleC1hcnJheXM9PGxldmVsPiAgICBU cmVhdCB0aGUgdHJhaWxpbmcgYXJyYXkgb2YgYSBzdHJ1Y3R1cmUgYXMgYSBmbGV4aWJsZSBhcnJh eSBpbiBhIHN0cmljdGVyIHdheS4gIFRoZSBkZWZhdWx0IGlzIHRyZWF0aW5nIGFsbCB0cmFpbGlu ZyBhcnJheXMgb2Ygc3RydWN0dXJlcyBhcyBmbGV4aWJsZSBhcnJheXMuDQo+PiArDQo+PiBmc3F1 YW5nbGUNCj4+IEMrKyBPYmpDKysgV2FyblJlbW92ZWQNCj4+IA0KPj4gZGlmZiAtLWdpdCBhL2dj Yy9jL2MtZGVjbC5jYyBiL2djYy9jL2MtZGVjbC5jYw0KPj4gaW5kZXggYWU4OTkwYzEzOGZkLi5h MmUxMjVkNGRkZDUgMTAwNjQ0DQo+PiAtLS0gYS9nY2MvYy9jLWRlY2wuY2MNCj4+ICsrKyBiL2dj Yy9jL2MtZGVjbC5jYw0KPj4gQEAgLTQ5OTksNiArNDk5OSw0MSBAQCBzZXRfYXJyYXlfZGVjbGFy YXRvcl9pbm5lciAoc3RydWN0IGNfZGVjbGFyYXRvciAqZGVjbCwNCj4+ICAgcmV0dXJuIGRlY2w7 DQo+PiB9DQo+PiANCj4+ICsvKiBEZXRlcm1pbmUgd2hldGhlciBUWVBFIGlzIGEgSVNPIEM5OSBm bGV4aWJsZSBhcnJheSBtZW1lYmVyIHR5cGUgIltdIi4gICovDQo+PiArc3RhdGljIGJvb2wNCj4+ ICtmbGV4aWJsZV9hcnJheV9tZW1iZXJfdHlwZV9wIChjb25zdF90cmVlIHR5cGUpDQo+PiArew0K Pj4gKyAgaWYgKFRSRUVfQ09ERSAodHlwZSkgPT0gQVJSQVlfVFlQRQ0KPj4gKyAgICAgICYmIFRZ UEVfU0laRSAodHlwZSkgPT0gTlVMTF9UUkVFDQo+PiArICAgICAgJiYgVFlQRV9ET01BSU4gKHR5 cGUpICE9IE5VTExfVFJFRQ0KPj4gKyAgICAgICYmIFRZUEVfTUFYX1ZBTFVFIChUWVBFX0RPTUFJ TiAodHlwZSkpID09IE5VTExfVFJFRSkNCj4+ICsgICAgcmV0dXJuIHRydWU7DQo+PiArDQo+PiAr ICByZXR1cm4gZmFsc2U7DQo+PiArfQ0KPj4gKw0KPj4gKy8qIERldGVybWluZSB3aGV0aGVyIFRZ UEUgaXMgYSBvbmUtZWxlbWVudCBhcnJheSB0eXBlICJbMV0iLiAgKi8NCj4+ICtzdGF0aWMgYm9v bA0KPj4gK29uZV9lbGVtZW50X2FycmF5X3R5cGVfcCAoY29uc3RfdHJlZSB0eXBlKQ0KPj4gK3sN Cj4+ICsgIGlmIChUUkVFX0NPREUgKHR5cGUpICE9IEFSUkFZX1RZUEUpDQo+PiArICAgIHJldHVy biBmYWxzZTsNCj4+ICsgIHJldHVybiBpbnRlZ2VyX3plcm9wIChhcnJheV90eXBlX25lbHRzICh0 eXBlKSk7DQo+PiArfQ0KPj4gKw0KPj4gKy8qIERldGVybWluZSB3aGV0aGVyIFRZUEUgaXMgYSB6 ZXJvLWxlbmd0aCBhcnJheSB0eXBlICJbMF0iLiAgKi8NCj4+ICtzdGF0aWMgYm9vbA0KPj4gK3pl cm9fbGVuZ3RoX2FycmF5X3R5cGVfcCAoY29uc3RfdHJlZSB0eXBlKQ0KPj4gK3sNCj4+ICsgIGlm IChUUkVFX0NPREUgKHR5cGUpID09IEFSUkFZX1RZUEUpDQo+PiArICAgIGlmICh0cmVlIHR5cGVf c2l6ZSA9IFRZUEVfU0laRV9VTklUICh0eXBlKSkNCj4+ICsgICAgICBpZiAoKGludGVnZXJfemVy b3AgKHR5cGVfc2l6ZSkpDQo+PiArCSAgICYmIFRZUEVfRE9NQUlOICh0eXBlKSAhPSBOVUxMX1RS RUUNCj4+ICsJICAgJiYgVFlQRV9NQVhfVkFMVUUgKFRZUEVfRE9NQUlOICh0eXBlKSkgPT0gTlVM TF9UUkVFKQ0KPj4gKwlyZXR1cm4gdHJ1ZTsNCj4+ICsgIHJldHVybiBmYWxzZTsNCj4+ICt9DQo+ PiArDQo+PiAvKiBJTklUIGlzIGEgY29uc3RydWN0b3IgdGhhdCBmb3JtcyBERUNMJ3MgaW5pdGlh bGl6ZXIuICBJZiB0aGUgZmluYWwNCj4+ICAgIGVsZW1lbnQgaW5pdGlhbGl6ZXMgYSBmbGV4aWJs ZSBhcnJheSBmaWVsZCwgYWRkIHRoZSBzaXplIG9mIHRoYXQNCj4+ICAgIGluaXRpYWxpemVyIHRv IERFQ0wncyBzaXplLiAgKi8NCj4+IEBAIC01MDEzLDEwICs1MDQ4LDcgQEAgYWRkX2ZsZXhpYmxl X2FycmF5X2VsdHNfdG9fc2l6ZSAodHJlZSBkZWNsLCB0cmVlIGluaXQpDQo+PiANCj4+ICAgZWx0 ID0gQ09OU1RSVUNUT1JfRUxUUyAoaW5pdCktPmxhc3QgKCkudmFsdWU7DQo+PiAgIHR5cGUgPSBU UkVFX1RZUEUgKGVsdCk7DQo+PiAtICBpZiAoVFJFRV9DT0RFICh0eXBlKSA9PSBBUlJBWV9UWVBF DQo+PiAtICAgICAgJiYgVFlQRV9TSVpFICh0eXBlKSA9PSBOVUxMX1RSRUUNCj4+IC0gICAgICAm JiBUWVBFX0RPTUFJTiAodHlwZSkgIT0gTlVMTF9UUkVFDQo+PiAtICAgICAgJiYgVFlQRV9NQVhf VkFMVUUgKFRZUEVfRE9NQUlOICh0eXBlKSkgPT0gTlVMTF9UUkVFKQ0KPj4gKyAgaWYgKGZsZXhp YmxlX2FycmF5X21lbWJlcl90eXBlX3AgKHR5cGUpKQ0KPj4gICAgIHsNCj4+ICAgICAgIGNvbXBs ZXRlX2FycmF5X3R5cGUgKCZ0eXBlLCBlbHQsIGZhbHNlKTsNCj4+ICAgICAgIERFQ0xfU0laRSAo ZGVjbCkNCj4+IEBAIC04NzIwLDYgKzg3NTIsODEgQEAgZmluaXNoX2luY29tcGxldGVfdmFycyAo dHJlZSBpbmNvbXBsZXRlX3ZhcnMsIGJvb2wgdG9wbGV2ZWwpDQo+PiAgICAgfQ0KPj4gfQ0KPj4g DQo+PiArDQo+PiArLyogRGV0ZXJtaW5lIHdoZXRoZXIgdGhlIEZJRUxEX0RFQ0wgWCBpcyBhIGZs ZXhpYmxlIGFycmF5IG1lbWJlciBhY2NvcmRpbmcgdG8NCj4+ICsgICB0aGUgZm9sbG93aW5nIGlu Zm86DQo+PiArICBBLiB3aGV0aGVyIHRoZSBGSUVMRF9ERUNMIFggaXMgdGhlIGxhc3QgZmllbGQg b2YgdGhlIERFQ0xfQ09OVEVYVDsNCj4+ICsgIEIuIHdoZXRoZXIgdGhlIEZJRUxEX0RFQ0wgaXMg YW4gYXJyYXkgdGhhdCBpcyBkZWNsYXJlZCBhcyAiW10iLCAiWzBdIiwNCj4+ICsgICAgIG9yICJb MV0iOw0KPj4gKyAgQy4gZmxhZ19zdHJpY3RfZmxleF9hcnJheXM7DQo+PiArICBELiB0aGUgYXR0 cmlidXRlIHN0cmljdF9mbGV4X2FycmF5IHRoYXQgaXMgYXR0YWNoZWQgdG8gdGhlIGZpZWxkDQo+ PiArICAgICBpZiBwcmVzZW50aW5nLg0KPj4gKyAgUmV0dXJuIFRSVUUgd2hlbiBpdCdzIGEgZmxl eGlibGUgYXJyYXkgbWVtYmVyLCBGQUxTRSBvdGhlcndpc2UuICAqLw0KPj4gKw0KPj4gK3N0YXRp YyBib29sDQo+PiAraXNfZmxleGlibGVfYXJyYXlfbWVtYmVyX3AgKGJvb2wgaXNfbGFzdF9maWVs ZCwNCj4+ICsJCQkgICAgdHJlZSB4KQ0KPj4gK3sNCj4+ICsgIC8qIGlmIG5vdCB0aGUgbGFzdCBm aWVsZCwgcmV0dXJuIGZhbHNlLiAgKi8NCj4+ICsgIGlmICghaXNfbGFzdF9maWVsZCkNCj4+ICsg ICAgcmV0dXJuIGZhbHNlOw0KPj4gKw0KPj4gKyAgLyogaWYgbm90IGFuIGFycmF5IGZpZWxkLCBy ZXR1cm4gZmFsc2UuICAqLw0KPj4gKyAgaWYgKFRSRUVfQ09ERSAoVFJFRV9UWVBFICh4KSkgIT0g QVJSQVlfVFlQRSkNCj4+ICsgICAgcmV0dXJuIGZhbHNlOw0KPj4gKw0KPj4gKyAgYm9vbCBpc196 ZXJvX2xlbmd0aF9hcnJheSA9IHplcm9fbGVuZ3RoX2FycmF5X3R5cGVfcCAoVFJFRV9UWVBFICh4 KSk7DQo+PiArICBib29sIGlzX29uZV9lbGVtZW50X2FycmF5ID0gb25lX2VsZW1lbnRfYXJyYXlf dHlwZV9wIChUUkVFX1RZUEUgKHgpKTsNCj4+ICsgIGJvb2wgaXNfZmxleGlibGVfYXJyYXkgPSBm bGV4aWJsZV9hcnJheV9tZW1iZXJfdHlwZV9wIChUUkVFX1RZUEUgKHgpKTsNCj4+ICsNCj4+ICsg IHVuc2lnbmVkIGludCBzdHJpY3RfZmxleF9hcnJheV9sZXZlbCA9IGZsYWdfc3RyaWN0X2ZsZXhf YXJyYXlzOw0KPj4gKw0KPj4gKyAgdHJlZSBhdHRyX3N0cmljdF9mbGV4X2FycmF5ID0gbG9va3Vw X2F0dHJpYnV0ZSAoInN0cmljdF9mbGV4X2FycmF5cyIsDQo+PiArCQkJCQkJICBERUNMX0FUVFJJ QlVURVMgKHgpKTsNCj4+ICsgIC8qIGlmIHRoZXJlIGlzIGEgc3RyaWN0X2ZsZXhfYXJyYXkgYXR0 cmlidXRlIGF0dGFjaGVkIHRvIHRoZSBmaWVsZCwNCj4+ICsgICAgIG92ZXJyaWRlIHRoZSBmbGFn X3N0cmljdF9mbGV4X2FycmF5cy4gICovDQo+PiArICBpZiAoYXR0cl9zdHJpY3RfZmxleF9hcnJh eSkNCj4+ICsgICAgew0KPj4gKyAgICAgIC8qIGdldCB0aGUgdmFsdWUgb2YgdGhlIGxldmVsIGZp cnN0IGZyb20gdGhlIGF0dHJpYnV0ZS4gICovDQo+PiArICAgICAgdW5zaWduZWQgSE9TVF9XSURF X0lOVCBhdHRyX3N0cmljdF9mbGV4X2FycmF5X2xldmVsID0gMDsNCj4+ICsgICAgICBnY2NfYXNz ZXJ0IChUUkVFX1ZBTFVFIChhdHRyX3N0cmljdF9mbGV4X2FycmF5KSAhPSBOVUxMX1RSRUUpOw0K Pj4gKyAgICAgIGF0dHJfc3RyaWN0X2ZsZXhfYXJyYXkgPSBUUkVFX1ZBTFVFIChhdHRyX3N0cmlj dF9mbGV4X2FycmF5KTsNCj4+ICsgICAgICBnY2NfYXNzZXJ0IChUUkVFX1ZBTFVFIChhdHRyX3N0 cmljdF9mbGV4X2FycmF5KSAhPSBOVUxMX1RSRUUpOw0KPj4gKyAgICAgIGF0dHJfc3RyaWN0X2Zs ZXhfYXJyYXkgPSBUUkVFX1ZBTFVFIChhdHRyX3N0cmljdF9mbGV4X2FycmF5KTsNCj4+ICsgICAg ICBnY2NfYXNzZXJ0ICh0cmVlX2ZpdHNfdWh3aV9wIChhdHRyX3N0cmljdF9mbGV4X2FycmF5KSk7 DQo+PiArICAgICAgYXR0cl9zdHJpY3RfZmxleF9hcnJheV9sZXZlbCA9IHRyZWVfdG9fdWh3aSAo YXR0cl9zdHJpY3RfZmxleF9hcnJheSk7DQo+PiArDQo+PiArICAgICAgLyogdGhlIGF0dHJpYnV0 ZSBoYXMgaGlnaGVyIHByaW9yaXR5IHRoYW4gZmxhZ19zdHJ1Y3RfZmxleF9hcnJheS4gICovDQo+ PiArICAgICAgc3RyaWN0X2ZsZXhfYXJyYXlfbGV2ZWwgPSBhdHRyX3N0cmljdF9mbGV4X2FycmF5 X2xldmVsOw0KPj4gKyAgICB9DQo+PiArDQo+PiArICBzd2l0Y2ggKHN0cmljdF9mbGV4X2FycmF5 X2xldmVsKQ0KPj4gKyAgICB7DQo+PiArICAgICAgY2FzZSAwOg0KPj4gKwkvKiBkZWZhdWx0LCBh bGwgdHJhaWxpbmcgYXJyYXlzIGFyZSBmbGV4aWFibGUgYXJyYXkgbWVtYmVycy4gICovDQo+PiAr CXJldHVybiB0cnVlOw0KPj4gKyAgICAgIGNhc2UgMToNCj4+ICsJLyogTGV2ZWwgMTogYWxsICJb MV0iLCAiWzBdIiwgYW5kICJbXSIgYXJlIGZsZXhpYWJsZSBhcnJheSBtZW1iZXJzLiAgKi8NCj4+ ICsJaWYgKGlzX29uZV9lbGVtZW50X2FycmF5KQ0KPj4gKwkgIHJldHVybiB0cnVlOw0KPj4gKwkv KiBGQUxMVEhST1VHSC4gICovDQo+PiArICAgICAgY2FzZSAyOg0KPj4gKwkvKiBMZXZlbCAyOiBh bGwgIlswXSIsIGFuZCAiW10iIGFyZSBmbGV4aWFibGUgYXJyYXkgbWVtYmVycy4gICovDQo+PiAr CWlmIChpc196ZXJvX2xlbmd0aF9hcnJheSkNCj4+ICsJICByZXR1cm4gdHJ1ZTsNCj4+ICsJLyog RkFMTFRIUk9VR0guICAqLw0KPj4gKyAgICAgIGNhc2UgMzoNCj4+ICsJLyogTGV2ZWwgMzogT25s eSAiW10iIGFyZSBmbGV4aWJsZSBhcnJheSBtZW1iZXJzLiAgKi8NCj4+ICsJaWYgKGlzX2ZsZXhp YmxlX2FycmF5KQ0KPj4gKwkgIHJldHVybiB0cnVlOw0KPj4gKwlicmVhazsNCj4+ICsgICAgICBk ZWZhdWx0Og0KPj4gKwlnY2NfdW5yZWFjaGFibGUgKCk7DQo+PiArICAgIH0NCj4+ICsgIHJldHVy biBmYWxzZTsNCj4+ICt9DQo+PiArDQo+PiArDQo+PiAvKiBGaWxsIGluIHRoZSBmaWVsZHMgb2Yg YSBSRUNPUkRfVFlQRSBvciBVTklPTl9UWVBFIG5vZGUsIFQuDQo+PiAgICBMT0MgaXMgdGhlIGxv Y2F0aW9uIG9mIHRoZSBSRUNPUkRfVFlQRSBvciBVTklPTl9UWVBFJ3MgZGVmaW5pdGlvbi4NCj4+ ICAgIEZJRUxETElTVCBpcyBhIGNoYWluIG9mIEZJRUxEX0RFQ0wgbm9kZXMgZm9yIHRoZSBmaWVs ZHMuDQo+PiBAQCAtODc4MSw2ICs4ODg4LDExIEBAIGZpbmlzaF9zdHJ1Y3QgKGxvY2F0aW9uX3Qg bG9jLCB0cmVlIHQsIHRyZWUgZmllbGRsaXN0LCB0cmVlIGF0dHJpYnV0ZXMsDQo+PiAgIGJvb2wg c2F3X25hbWVkX2ZpZWxkID0gZmFsc2U7DQo+PiAgIGZvciAoeCA9IGZpZWxkbGlzdDsgeDsgeCA9 IERFQ0xfQ0hBSU4gKHgpKQ0KPj4gICAgIHsNCj4+ICsgICAgICAvKiB3aGV0aGVyIHRoaXMgZmll bGQgaXMgdGhlIGxhc3QgZmllbGQgb2YgdGhlIHN0cnVjdHVyZSBvciB1bmlvbi4NCj4+ICsJIGZv ciBVTklPTiwgYW55IGZpZWxkIGlzIHRoZSBsYXN0IGZpZWxkIG9mIGl0LiAgKi8NCj4+ICsgICAg ICBib29sIGlzX2xhc3RfZmllbGQgPSAoREVDTF9DSEFJTiAoeCkgPT0gTlVMTF9UUkVFKQ0KPj4g KwkJCSAgICB8fCAoVFJFRV9DT0RFICh0KSA9PSBVTklPTl9UWVBFKTsNCj4+ICsNCj4+ICAgICAg IGlmIChUUkVFX1RZUEUgKHgpID09IGVycm9yX21hcmtfbm9kZSkNCj4+IAljb250aW51ZTsNCj4+ IA0KPj4gQEAgLTg4MTksMTAgKzg5MzEsNyBAQCBmaW5pc2hfc3RydWN0IChsb2NhdGlvbl90IGxv YywgdHJlZSB0LCB0cmVlIGZpZWxkbGlzdCwgdHJlZSBhdHRyaWJ1dGVzLA0KPj4gCURFQ0xfUEFD S0VEICh4KSA9IDE7DQo+PiANCj4+ICAgICAgIC8qIERldGVjdCBmbGV4aWJsZSBhcnJheSBtZW1i ZXIgaW4gYW4gaW52YWxpZCBjb250ZXh0LiAgKi8NCj4+IC0gICAgICBpZiAoVFJFRV9DT0RFIChU UkVFX1RZUEUgKHgpKSA9PSBBUlJBWV9UWVBFDQo+PiAtCSAgJiYgVFlQRV9TSVpFIChUUkVFX1RZ UEUgKHgpKSA9PSBOVUxMX1RSRUUNCj4+IC0JICAmJiBUWVBFX0RPTUFJTiAoVFJFRV9UWVBFICh4 KSkgIT0gTlVMTF9UUkVFDQo+PiAtCSAgJiYgVFlQRV9NQVhfVkFMVUUgKFRZUEVfRE9NQUlOIChU UkVFX1RZUEUgKHgpKSkgPT0gTlVMTF9UUkVFKQ0KPj4gKyAgICAgIGlmIChmbGV4aWJsZV9hcnJh eV9tZW1iZXJfdHlwZV9wIChUUkVFX1RZUEUgKHgpKSkNCj4+IAl7DQo+PiAJICBpZiAoVFJFRV9D T0RFICh0KSA9PSBVTklPTl9UWVBFKQ0KPj4gCSAgICB7DQo+PiBAQCAtODgzMCw3ICs4OTM5LDcg QEAgZmluaXNoX3N0cnVjdCAobG9jYXRpb25fdCBsb2MsIHRyZWUgdCwgdHJlZSBmaWVsZGxpc3Qs IHRyZWUgYXR0cmlidXRlcywNCj4+IAkJCSJmbGV4aWJsZSBhcnJheSBtZW1iZXIgaW4gdW5pb24i KTsNCj4+IAkgICAgICBUUkVFX1RZUEUgKHgpID0gZXJyb3JfbWFya19ub2RlOw0KPj4gCSAgICB9 DQo+PiAtCSAgZWxzZSBpZiAoREVDTF9DSEFJTiAoeCkgIT0gTlVMTF9UUkVFKQ0KPj4gKwkgIGVs c2UgaWYgKCFpc19sYXN0X2ZpZWxkKQ0KPj4gCSAgICB7DQo+PiAJICAgICAgZXJyb3JfYXQgKERF Q0xfU09VUkNFX0xPQ0FUSU9OICh4KSwNCj4+IAkJCSJmbGV4aWJsZSBhcnJheSBtZW1iZXIgbm90 IGF0IGVuZCBvZiBzdHJ1Y3QiKTsNCj4+IEBAIC04ODUwLDYgKzg5NTksOSBAQCBmaW5pc2hfc3Ry dWN0IChsb2NhdGlvbl90IGxvYywgdHJlZSB0LCB0cmVlIGZpZWxkbGlzdCwgdHJlZSBhdHRyaWJ1 dGVzLA0KPj4gCXBlZHdhcm4gKERFQ0xfU09VUkNFX0xPQ0FUSU9OICh4KSwgT1BUX1dwZWRhbnRp YywNCj4+IAkJICJpbnZhbGlkIHVzZSBvZiBzdHJ1Y3R1cmUgd2l0aCBmbGV4aWJsZSBhcnJheSBt ZW1iZXIiKTsNCj4+IA0KPj4gKyAgICAgIC8qIFNldCBERUNMX05PVF9GTEVYQVJSQVkgZmxhZyBm b3IgRklFTERfREVDTCB4LiAgKi8NCj4+ICsgICAgICBERUNMX05PVF9GTEVYQVJSQVkgKHgpID0g IWlzX2ZsZXhpYmxlX2FycmF5X21lbWJlcl9wIChpc19sYXN0X2ZpZWxkLCB4KTsNCj4+ICsNCj4+ ICAgICAgIGlmIChERUNMX05BTUUgKHgpDQo+PiAJICB8fCBSRUNPUkRfT1JfVU5JT05fVFlQRV9Q IChUUkVFX1RZUEUgKHgpKSkNCj4+IAlzYXdfbmFtZWRfZmllbGQgPSB0cnVlOw0KPj4gZGlmZiAt LWdpdCBhL2djYy9jcC9tb2R1bGUuY2MgYi9nY2MvY3AvbW9kdWxlLmNjDQo+PiBpbmRleCBmMjdm NGQwOTFlNWUuLjc1ZWUyNTE0ZjY2YiAxMDA2NDQNCj4+IC0tLSBhL2djYy9jcC9tb2R1bGUuY2MN Cj4+ICsrKyBiL2djYy9jcC9tb2R1bGUuY2MNCj4+IEBAIC01NDE0LDYgKzU0MTQsNyBAQCB0cmVl c19vdXQ6OmNvcmVfYm9vbHMgKHRyZWUgdCkNCj4+ICAgICAgIFdCICh0LT5kZWNsX2NvbW1vbi5k ZWNsX2J5X3JlZmVyZW5jZV9mbGFnKTsNCj4+ICAgICAgIFdCICh0LT5kZWNsX2NvbW1vbi5kZWNs X3JlYWRfZmxhZyk7DQo+PiAgICAgICBXQiAodC0+ZGVjbF9jb21tb24uZGVjbF9ub25zaGFyZWFi bGVfZmxhZyk7DQo+PiArICAgICAgV0IgKHQtPmRlY2xfY29tbW9uLmRlY2xfbm90X2ZsZXhhcnJh eSk7DQo+PiAgICAgfQ0KPj4gDQo+PiAgIGlmIChDT0RFX0NPTlRBSU5TX1NUUlVDVCAoY29kZSwg VFNfREVDTF9XSVRIX1ZJUykpDQo+PiBAQCAtNTU1OCw2ICs1NTU5LDcgQEAgdHJlZXNfaW46OmNv cmVfYm9vbHMgKHRyZWUgdCkNCj4+ICAgICAgIFJCICh0LT5kZWNsX2NvbW1vbi5kZWNsX2J5X3Jl ZmVyZW5jZV9mbGFnKTsNCj4+ICAgICAgIFJCICh0LT5kZWNsX2NvbW1vbi5kZWNsX3JlYWRfZmxh Zyk7DQo+PiAgICAgICBSQiAodC0+ZGVjbF9jb21tb24uZGVjbF9ub25zaGFyZWFibGVfZmxhZyk7 DQo+PiArICAgICAgUkIgKHQtPmRlY2xfY29tbW9uLmRlY2xfbm90X2ZsZXhhcnJheSk7DQo+PiAg ICAgfQ0KPj4gDQo+PiAgIGlmIChDT0RFX0NPTlRBSU5TX1NUUlVDVCAoY29kZSwgVFNfREVDTF9X SVRIX1ZJUykpDQo+PiBkaWZmIC0tZ2l0IGEvZ2NjL2RvYy9leHRlbmQudGV4aSBiL2djYy9kb2Mv ZXh0ZW5kLnRleGkNCj4+IGluZGV4IDdmZTdmODgxN2NkZC4uOTliNDNlZDM4NTJjIDEwMDY0NA0K Pj4gLS0tIGEvZ2NjL2RvYy9leHRlbmQudGV4aQ0KPj4gKysrIGIvZ2NjL2RvYy9leHRlbmQudGV4 aQ0KPj4gQEAgLTc0NzMsNiArNzQ3MywzOSBAQCBUaGlzIHdhcm5pbmcgY2FuIGJlIGRpc2FibGVk IGJ5IEBvcHRpb257LVduby1pZi1ub3QtYWxpZ25lZH0uDQo+PiBUaGUgQGNvZGV7d2Fybl9pZl9u b3RfYWxpZ25lZH0gYXR0cmlidXRlIGNhbiBhbHNvIGJlIHVzZWQgZm9yIHR5cGVzDQo+PiAoQHB4 cmVme0NvbW1vbiBUeXBlIEF0dHJpYnV0ZXN9LikNCj4+IA0KPj4gK0BjaW5kZXggQGNvZGV7c3Ry aWN0X2ZsZXhfYXJyYXlzfSB2YXJpYWJsZSBhdHRyaWJ1dGUNCj4+ICtAaXRlbSBzdHJpY3RfZmxl eF9hcnJheXMgKEB2YXJ7bGV2ZWx9KQ0KPj4gK1RoZSBAY29kZXtzdHJpY3RfZmxleF9hcnJheXN9 IGF0dHJpYnV0ZSBzaG91bGQgYmUgYXR0YWNoZWQgdG8gdGhlIHRyYWlsaW5nDQo+PiArYXJyYXkg ZmllbGQgb2YgYSBzdHJ1Y3R1cmUuICBJdCBzcGVjaWZpZXMgdGhlIGxldmVsIG9mIHN0cmljdG5l c3Mgb2YNCj4+ICt0cmVhdGluZyB0aGUgdHJhaWxpbmcgYXJyYXkgZmllbGQgb2YgYSBzdHJ1Y3R1 cmUgYXMgYSBmbGV4aWJsZSBhcnJheQ0KPj4gK21lbWJlci4gQHZhcntsZXZlbH0gbXVzdCBiZSBh biBpbnRlZ2VyIGJldHdlbiAwIHRvIDMuDQo+PiArDQo+PiArQHZhcntsZXZlbH09MCBpcyB0aGUg bGVhc3Qgc3RyaWN0IGxldmVsLCBhbGwgdHJhaWxpbmcgYXJyYXlzIG9mIHN0cnVjdHVyZXMNCj4+ ICthcmUgdHJlYXRlZCBhcyBmbGV4aWJsZSBhcnJheSBtZW1iZXJzLiBAdmFye2xldmVsfT0zIGlz IHRoZSBzdHJpY3Rlc3QgbGV2ZWwsDQo+PiArb25seSB3aGVuIHRoZSB0cmFpbGluZyBhcnJheSBp cyBkZWNsYXJlZCBhcyBhIGZsZXhpYmxlIGFycmF5IG1lbWJlciBwZXIgQzk5DQo+PiArc3RhbmRh cmQgb253YXJkcyAoW10pLCBpdCBpcyB0cmVhdGVkIGFzIGEgZmxleGlibGUgYXJyYXkgbWVtYmVy Lg0KPj4gKw0KPj4gK1RoZXJlIGFyZSB0d28gbW9yZSBsZXZlbHMgaW4gYmV0d2VlbiAwIGFuZCAz LCB3aGljaCBhcmUgcHJvdmlkZWQgdG8gc3VwcG9ydA0KPj4gK29sZGVyIGNvZGVzIHRoYXQgdXNl IEdDQyB6ZXJvLWxlbmd0aCBhcnJheSBleHRlbnNpb24gKFswXSkgb3Igb25lLXNpemUgYXJyYXkN Cj4+ICthcyBmbGV4aWJsZSBhcnJheSBtZW1iZXIgKFsxXSk6DQo+PiArV2hlbiBAdmFye2xldmVs fSBpcyAxLCB0aGUgdHJhaWxpbmcgYXJyYXkgaXMgdHJlYXRlZCBhcyBhIGZsZXhpYmxlIGFycmF5 IG1lbWJlcg0KPj4gK3doZW4gaXQgaXMgZGVjbGFyZWQgYXMgZWl0aGVyICJbXSIsICJbMF0iLCBv ciAiWzFdIjsNCj4+ICtXaGVuIEB2YXJ7bGV2ZWx9IGlzIDIsIHRoZSB0cmFpbGluZyBhcnJheSBp cyB0cmVhdGVkIGFzIGEgZmxleGlibGUgYXJyYXkgbWVtYmVyDQo+PiArd2hlbiBpdCBpcyBkZWNs YXJlZCBhcyBlaXRoZXIgIltdIiwgb3IgIlswXSIuDQo+PiArDQo+PiArVGhpcyBhdHRyaWJ1dGUg Y2FuIGJlIHVzZWQgd2l0aCBvciB3aXRob3V0IHRoZSBAb3B0aW9uey1mc3RyaWN0LWZsZXgtYXJy YXlzfS4NCj4+ICtXaGVuIGJvdGggdGhlIGF0dHJpYnV0ZSBhbmQgdGhlIG9wdGlvbiBwcmVzZW50 IGF0IHRoZSBzYW1lIHRpbWUsIHRoZSBsZXZlbCBvZg0KPj4gK3RoZSBzdHJpY3RuZXNzIGZvciB0 aGUgc3BlY2lmaWMgdHJhaWxpbmcgYXJyYXkgZmllbGQgaXMgZGV0ZXJtaW5lZCBieSB0aGUNCj4+ ICthdHRyaWJ1dGUuDQo+PiArDQo+PiArVGhpcyBhdHRyaWJ1dGUgaXMgb25seSB2YWxpZCB3aGVu IGZsZXhpYmxlIGFycmF5IG1lbWJlciBpcyBzdXBwb3J0ZWQgaW4gdGhlDQo+PiArbGFuZ3VhZ2Uu IEZvciBJU08gQyBiZWZvcmUgQzk5IGFuZCBJU08gQysrLCBubyBsYW5ndWFnZSBzdXBwb3J0IGZv ciB0aGUgZmxleGlibGUNCj4+ICthcnJheSBtZW1iZXIgYXQgYWxsLCB0aGlzIGF0dHJpYnV0ZSB3 aWxsIGJlIGludmFsaWQgYW5kIGEgd2FybmluZyBpcyBpc3N1ZWQuDQo+PiArV2hlbiAtc3RkPWdu dTg5IGlzIHNwZWNpZmllZCBvciBDKysgd2l0aCBHTlUgZXh0ZW5zaW9uLCBvbmx5IHplcm8tbGVu Z3RoIGFycmF5DQo+PiArZXh0ZW5zaW9uIGFuZCBvbmUtc2l6ZSBhcnJheSBhcmUgc3VwcG9ydGVk LCBhcyBhIHJlc3VsdCwgQHZhcntsZXZlbH09MyB3aWxsIGJlDQo+PiAraW52YWxpZCBhbmQgYSB3 YXJuaW5nIGlzIGlzc3VlZC4NCj4+ICsNCj4+ICsNCj4+IEBpdGVtIGFsbG9jX3NpemUgKEB2YXJ7 cG9zaXRpb259KQ0KPj4gQGl0ZW14IGFsbG9jX3NpemUgKEB2YXJ7cG9zaXRpb24tMX0sIEB2YXJ7 cG9zaXRpb24tMn0pDQo+PiBAY2luZGV4IEBjb2Rle2FsbG9jX3NpemV9IHZhcmlhYmxlIGF0dHJp YnV0ZQ0KPj4gZGlmZiAtLWdpdCBhL2djYy9kb2MvaW52b2tlLnRleGkgYi9nY2MvZG9jL2ludm9r ZS50ZXhpDQo+PiBpbmRleCA4NjM1ODBiMzcxMGEuLjJhMGEzY2YzZGUxMCAxMDA2NDQNCj4+IC0t LSBhL2djYy9kb2MvaW52b2tlLnRleGkNCj4+ICsrKyBiL2djYy9kb2MvaW52b2tlLnRleGkNCj4+ IEBAIC0yMDcsNyArMjA3LDggQEAgaW4gdGhlIGZvbGxvd2luZyBzZWN0aW9ucy4NCj4+IC1mb3Bl bm1wICAtZm9wZW5tcC1zaW1kIEBnb2wNCj4+IC1mcGVybWl0dGVkLWZsdC1ldmFsLW1ldGhvZHM9 QHZhcntzdGFuZGFyZH0gQGdvbA0KPj4gLWZwbGFuOS1leHRlbnNpb25zICAtZnNpZ25lZC1iaXRm aWVsZHMgIC1mdW5zaWduZWQtYml0ZmllbGRzIEBnb2wNCj4+IC0tZnNpZ25lZC1jaGFyICAtZnVu c2lnbmVkLWNoYXIgIC1mc3NvLXN0cnVjdD1AdmFye2VuZGlhbm5lc3N9fQ0KPj4gKy1mc2lnbmVk LWNoYXIgIC1mdW5zaWduZWQtY2hhciAtZnN0cmljdC1mbGV4LWFycmF5c1s9QHZhcntufV0gQGdv bA0KPj4gKy1mc3NvLXN0cnVjdD1AdmFye2VuZGlhbm5lc3N9fQ0KPj4gDQo+PiBAaXRlbSBDKysg TGFuZ3VhZ2UgT3B0aW9ucw0KPj4gQHhyZWZ7QysrIERpYWxlY3QgT3B0aW9ucywsT3B0aW9ucyBD b250cm9sbGluZyBDKysgRGlhbGVjdH0uDQo+PiBAQCAtMjgyNiw2ICsyODI3LDM3IEBAIFRoZSB0 eXBlIEBjb2Rle2NoYXJ9IGlzIGFsd2F5cyBhIGRpc3RpbmN0IHR5cGUgZnJvbSBlYWNoIG9mDQo+ PiBAY29kZXtzaWduZWQgY2hhcn0gb3IgQGNvZGV7dW5zaWduZWQgY2hhcn0sIGV2ZW4gdGhvdWdo IGl0cyBiZWhhdmlvcg0KPj4gaXMgYWx3YXlzIGp1c3QgbGlrZSBvbmUgb2YgdGhvc2UgdHdvLg0K Pj4gDQo+PiArQGl0ZW0gLWZzdHJpY3QtZmxleC1hcnJheXMNCj4+ICtAb3BpbmRleCBmc3RyaWN0 LWZsZXgtYXJyYXlzDQo+PiArQG9waW5kZXggZm5vLXN0cmljdC1mbGV4LWFycmF5cw0KPj4gK1Ry ZWF0IHRoZSB0cmFpbGluZyBhcnJheSBvZiBhIHN0cnVjdHVyZSBhcyBhIGZsZXhpYmxlIGFycmF5 IG1lbWJlciBpbiBhDQo+PiArc3RyaWN0ZXIgd2F5Lg0KPj4gK1RoZSBwb3NpdGl2ZSBmb3JtIGlz IGVxdWl2YWxlbnQgdG8gQG9wdGlvbnstZnN0cmljdC1mbGV4LWFycmF5cz0zfSwgd2hpY2ggaXMg dGhlDQo+PiArc3RyaWN0ZXN0LiAgQSB0cmFpbGluZyBhcnJheSBpcyB0cmVhdGVkIGFzIGEgZmxl eGlibGUgYXJyYXkgbWVtYmVyIG9ubHkgd2hlbiBpdA0KPj4gK2lzIGRlY2xhcmVkIGFzIGEgZmxl eGlibGUgYXJyYXkgbWVtYmVyIHBlciBDOTkgc3RhbmRhcmQgb253YXJkcy4NCj4+ICtUaGUgbmVn YXRpdmUgZm9ybSBpcyBlcXVpdmFsZW50IHRvIEBvcHRpb257LWZzdHJpY3QtZmxleC1hcnJheXM9 MH0sIHdoaWNoIGlzIHRoZQ0KPj4gK2xlYXN0IHN0cmljdC4gIEFsbCB0cmFpbGluZyBhcnJheXMg b2Ygc3RydWN0dXJlcyBhcmUgdHJlYXRlZCBhcyBmbGV4aWJsZSBhcnJheQ0KPj4gK21lbWJlcnMu DQo+PiArDQo+PiArQGl0ZW0gLWZzdHJpY3QtZmxleC1hcnJheXM9QHZhcntsZXZlbH0NCj4+ICtA b3BpbmRleCBmc3RyaWN0LWZsZXgtYXJyYXlzPUB2YXJ7bGV2ZWx9DQo+PiArVHJlYXQgdGhlIHRy YWlsaW5nIGFycmF5IG9mIGEgc3RydWN0dXJlIGFzIGEgZmxleGlibGUgYXJyYXkgbWVtYmVyIGlu IGENCj4+ICtzdHJpY3RlciB3YXkuICBUaGUgdmFsdWUgb2YgQHZhcntsZXZlbH0gY29udHJvbHMg dGhlIGxldmVsIG9mIHN0cmljdG5lc3MuDQo+PiArDQo+PiArVGhlIHBvc3NpYmxlIHZhbHVlcyBv ZiBAdmFye2xldmVsfSBhcmUgdGhlIHNhbWUgYXMgZm9yIHRoZQ0KPj4gK0Bjb2Rle3N0cmljdF9m bGV4X2FycmF5fSBhdHRyaWJ1dGUgKEBweHJlZntWYXJpYWJsZSBBdHRyaWJ1dGVzfSkuDQo+PiAr DQo+PiArWW91IGNhbiBjb250cm9sIHRoaXMgYmVoYXZpb3IgZm9yIGEgc3BlY2lmaWMgdHJhaWxp bmcgYXJyYXkgZmllbGQgb2YgYQ0KPj4gK3N0cnVjdHVyZSBieSB1c2luZyB0aGUgdmFyaWFibGUg YXR0cmlidXRlIEBjb2Rle3N0cmljdF9mbGV4X2FycmF5fSBhdHRyaWJ1dGUNCj4+ICsoQHB4cmVm e1ZhcmlhYmxlIEF0dHJpYnV0ZXN9KS4NCj4+ICsNCj4+ICtUaGlzIG9wdGlvbiBpcyBvbmx5IHZh bGlkIHdoZW4gZmxleGlibGUgYXJyYXkgbWVtYmVyIGlzIHN1cHBvcnRlZCBpbiB0aGUNCj4+ICts YW5ndWFnZS4gRk9SIElTTyBDIGJlZm9yZSBDOTkgYW5kIElTTyBDKyssIG5vIGxhbmd1YWdlIHN1 cHBvcnQgZm9yIHRoZSBmbGV4aWJsZQ0KPj4gK2FycmF5IG1lbWJlciBhdCBhbGwsIHRoaXMgb3B0 aW9uIHdpbGwgYmUgaW52YWxpZCBhbmQgYSB3YXJuaW5nIHdpbGwgYmUgaXNzdWVkLg0KPj4gK1do ZW4gLXN0ZD1nbnU4OSBpcyBzcGVjaWZpZWQgb3IgQysrIHdpdGggR05VIGV4dGVuc2lvbiwgb25s eSB6ZXJvLWxlbmd0aCBhcnJheQ0KPj4gK2V4dGVuc2lvbiBhbmQgb25lLXNpemUgYXJyYXkgYXJl IHN1cHBvcnRlZCwgYXMgYSByZXN1bHQsIEB2YXJ7bGV2ZWx9PTMgd2lsbCBiZQ0KPj4gK2ludmFs aWQgYW5kIGEgd2FybmluZyB3aWxsIGJlIGlzc3VlZC4NCj4+ICsNCj4+IEBpdGVtIC1mc3NvLXN0 cnVjdD1AdmFye2VuZGlhbm5lc3N9DQo+PiBAb3BpbmRleCBmc3NvLXN0cnVjdA0KPj4gU2V0IHRo ZSBkZWZhdWx0IHNjYWxhciBzdG9yYWdlIG9yZGVyIG9mIHN0cnVjdHVyZXMgYW5kIHVuaW9ucyB0 byB0aGUNCj4+IGRpZmYgLS1naXQgYS9nY2MvcHJpbnQtdHJlZS5jYyBiL2djYy9wcmludC10cmVl LmNjDQo+PiBpbmRleCA2ZDQ1YTRhNTk2NjkuLjU4YTk4MjUwY2M0ZiAxMDA2NDQNCj4+IC0tLSBh L2djYy9wcmludC10cmVlLmNjDQo+PiArKysgYi9nY2MvcHJpbnQtdHJlZS5jYw0KPj4gQEAgLTUx Nyw4ICs1MTcsMTIgQEAgcHJpbnRfbm9kZSAoRklMRSAqZmlsZSwgY29uc3QgY2hhciAqcHJlZml4 LCB0cmVlIG5vZGUsIGludCBpbmRlbnQsDQo+PiAJICBmcHJpbnRmIChmaWxlLCAiIGFsaWduOiVk IHdhcm5faWZfbm90X2FsaWduOiVkIiwNCj4+IAkJICAgREVDTF9BTElHTiAobm9kZSksIERFQ0xf V0FSTl9JRl9OT1RfQUxJR04gKG5vZGUpKTsNCj4+IAkgIGlmIChjb2RlID09IEZJRUxEX0RFQ0wp DQo+PiAtCSAgICBmcHJpbnRmIChmaWxlLCAiIG9mZnNldF9hbGlnbiAiIEhPU1RfV0lERV9JTlRf UFJJTlRfVU5TSUdORUQsDQo+PiAtCQkgICAgIERFQ0xfT0ZGU0VUX0FMSUdOIChub2RlKSk7DQo+ PiArCSAgICB7DQo+PiArCSAgICAgIGZwcmludGYgKGZpbGUsICIgb2Zmc2V0X2FsaWduICIgSE9T VF9XSURFX0lOVF9QUklOVF9VTlNJR05FRCwNCj4+ICsJCSAgICAgICBERUNMX09GRlNFVF9BTElH TiAobm9kZSkpOw0KPj4gKwkgICAgICBmcHJpbnRmIChmaWxlLCAiIGRlY2xfbm90X2ZsZXhhcnJh eTogJWQiLA0KPj4gKwkJICAgICAgIERFQ0xfTk9UX0ZMRVhBUlJBWSAobm9kZSkpOw0KPj4gKwkg ICAgfQ0KPj4gDQo+PiAJICBpZiAoY29kZSA9PSBGVU5DVElPTl9ERUNMICYmIGZuZGVjbF9idWls dF9pbl9wIChub2RlKSkNCj4+IAkgICAgew0KPj4gZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUv ZysrLmRnL3N0cmljdC1mbGV4LWFycmF5LTEuQyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL3N0cmlj dC1mbGV4LWFycmF5LTEuQw0KPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4+IGluZGV4IDAwMDAw MDAwMDAwMC4uNDdhZGFmN2JhYzRhDQo+PiAtLS0gL2Rldi9udWxsDQo+PiArKysgYi9nY2MvdGVz dHN1aXRlL2crKy5kZy9zdHJpY3QtZmxleC1hcnJheS0xLkMNCj4+IEBAIC0wLDAgKzEsMzEgQEAN Cj4+ICsvKiB0ZXN0aW5nIHRoZSBjb3JyZWN0IHVzYWdlIG9mIGF0dHJpYnV0ZSBzdHJpY3RfZmxl eF9hcnJheS4gICovICAgDQo+PiArLyogeyBkZy1kbyBjb21waWxlIH0gKi8NCj4+ICsvKiB7IGRn LW9wdGlvbnMgIi1PMiIgfSAqLw0KPj4gKw0KPj4gKw0KPj4gK2ludCB4IF9fYXR0cmlidXRlX18g KChzdHJpY3RfZmxleF9hcnJheXMgKDEpKSk7IC8qIHsgZGctZXJyb3IgIidzdHJpY3RfZmxleF9h cnJheXMnIGF0dHJpYnV0ZSBtYXkgbm90IGJlIHNwZWNpZmllZCBmb3IgJ3gnIiB9ICovDQo+PiAr DQo+PiArc3RydWN0IHRyYWlsaW5nIHsNCj4+ICsgICAgaW50IGE7DQo+PiArICAgIGludCBjIF9f YXR0cmlidXRlICgoc3RyaWN0X2ZsZXhfYXJyYXlzKSk7IC8qIHsgZGctZXJyb3IgIndyb25nIG51 bWJlciBvZiBhcmd1bWVudHMgc3BlY2lmaWVkIGZvciAnc3RyaWN0X2ZsZXhfYXJyYXlzJyBhdHRy aWJ1dGUiIH0gKi8NCj4+ICt9Ow0KPj4gKw0KPj4gK3N0cnVjdCB0cmFpbGluZ18xIHsNCj4+ICsg ICAgaW50IGE7DQo+PiArICAgIGludCBiOw0KPj4gKyAgICBpbnQgYyBfX2F0dHJpYnV0ZSAoKHN0 cmljdF9mbGV4X2FycmF5cyAoMikpKTsgLyogeyBkZy1lcnJvciAiJ3N0cmljdF9mbGV4X2FycmF5 cycgYXR0cmlidXRlIG1heSBub3QgYmUgc3BlY2lmaWVkIGZvciBhIG5vbiBhcnJheSBmaWVsZCIg fSAqLw0KPj4gK307DQo+PiArDQo+PiArZXh0ZXJuIGludCBkOw0KPj4gKw0KPj4gK3N0cnVjdCB0 cmFpbGluZ19hcnJheV8yIHsNCj4+ICsgICAgaW50IGE7DQo+PiArICAgIGludCBiOw0KPj4gKyAg ICBpbnQgY1sxXSBfX2F0dHJpYnV0ZSAoKHN0cmljdF9mbGV4X2FycmF5cyAoZCkpKTsgLyogeyBk Zy1lcnJvciAiJ3N0cmljdF9mbGV4X2FycmF5cycgYXR0cmlidXRlIGFyZ3VtZW50IG5vdCBhbiBp bnRlZ2VyIiB9ICovDQo+PiArfTsNCj4+ICsNCj4+ICtzdHJ1Y3QgdHJhaWxpbmdfYXJyYXlfMyB7 DQo+PiArICAgIGludCBhOw0KPj4gKyAgICBpbnQgYjsNCj4+ICsgICAgaW50IGNbMF0gX19hdHRy aWJ1dGUgKChzdHJpY3RfZmxleF9hcnJheXMgKDUpKSk7IC8qIHsgZGctZXJyb3IgIidzdHJpY3Rf ZmxleF9hcnJheXMnIGF0dHJpYnV0ZSBhcmd1bWVudCAnNScgaXMgbm90IGFuIGludGVnZXIgY29u c3RhbnQgYmV0d2VlbiAwIGFuZCAzIiB9ICovDQo+PiArfTsNCj4+IGRpZmYgLS1naXQgYS9nY2Mv dGVzdHN1aXRlL2crKy5kZy9zdHJpY3QtZmxleC1hcnJheS0yLkMgYi9nY2MvdGVzdHN1aXRlL2cr Ky5kZy9zdHJpY3QtZmxleC1hcnJheS0yLkMNCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+PiBp bmRleCAwMDAwMDAwMDAwMDAuLjI0NWY4ZmUwYmM3Mw0KPj4gLS0tIC9kZXYvbnVsbA0KPj4gKysr IGIvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvc3RyaWN0LWZsZXgtYXJyYXktMi5DDQo+PiBAQCAtMCww ICsxLDE2IEBADQo+PiArLyogdGVzdGluZyB0aGUgY29ycmVjdCB1c2FnZSBvZiBmbGFnIC1mc3Ry aWN0X2ZsZXhfYXJyYXkgZm9yIEMrKy4gICovICAgDQo+PiArLyogeyBkZy1kbyBjb21waWxlIH0g Ki8NCj4+ICsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtZnN0cmljdC1mbGV4LWFycmF5cyAtc3RkPWMr Kzk4IiB9ICovDQo+PiArDQo+PiArc3RydWN0IHRyYWlsaW5nX2FycmF5IHsNCj4+ICsgICAgaW50 IGE7DQo+PiArICAgIGludCBiOw0KPj4gKyAgICBpbnQgY1swXSBfX2F0dHJpYnV0ZSAoKHN0cmlj dF9mbGV4X2FycmF5cyAoMykpKTsgLyogeyBkZy13YXJuaW5nICJhdHRyaWJ1dGUgaWdub3JlZCBz aW5jZSBpdCBpcyBub3Qgc3VwcG9ydGVkIHdpdGggYSBJU08gQ1xcK1xcKyIgfSAqLw0KPj4gK307 DQo+PiArDQo+PiAraW50IGZvbyhpbnQgYSkNCj4+ICt7DQo+PiArICByZXR1cm4gMDsNCj4+ICt9 DQo+PiArDQo+PiArLyogeyBkZy13YXJuaW5nICJpcyBub3Qgc3VwcG9ydGVkIHdpdGggYSBJU08g Q1xcK1xcKywgaWdub3JlZCIgIiIgIHsgdGFyZ2V0ICotKi0qIH0gMCB9ICovDQo+PiBkaWZmIC0t Z2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nKysuZGcvc3RyaWN0LWZsZXgtYXJyYXktMy5DIGIvZ2NjL3Rl c3RzdWl0ZS9nKysuZGcvc3RyaWN0LWZsZXgtYXJyYXktMy5DDQo+PiBuZXcgZmlsZSBtb2RlIDEw MDY0NA0KPj4gaW5kZXggMDAwMDAwMDAwMDAwLi4yYTczM2E1YmNjZjQNCj4+IC0tLSAvZGV2L251 bGwNCj4+ICsrKyBiL2djYy90ZXN0c3VpdGUvZysrLmRnL3N0cmljdC1mbGV4LWFycmF5LTMuQw0K Pj4gQEAgLTAsMCArMSwyMSBAQA0KPj4gKy8qIHRlc3RpbmcgdGhlIGNvcnJlY3QgdXNhZ2Ugb2Yg ZmxhZyAtZnN0cmljdF9mbGV4X2FycmF5IGZvciBDKysuICAqLyAgIA0KPj4gKy8qIHsgZGctZG8g Y29tcGlsZSB9ICovDQo+PiArLyogeyBkZy1vcHRpb25zICItTzIgLWZzdHJpY3QtZmxleC1hcnJh eXMgLXN0ZD1nbnUrKzk4IiB9ICovDQo+PiArLyogeyBkZy13YXJuaW5nICInLWZzdHJpY3QtZmxl eC1hcnJheXM9MycgaXMgbm90IHN1cHBvcnRlZCBmb3IgQ1xcK1xcKyB3aXRoIEdOVSBleHRlbnNp b24sIGlnbm9yZWQiICIiICB7IHRhcmdldCAqLSotKiB9IDAgfSAqLw0KPj4gKw0KPj4gK3N0cnVj dCB0cmFpbGluZ19hcnJheSB7DQo+PiArICAgIGludCBhOw0KPj4gKyAgICBpbnQgYjsNCj4+ICsg ICAgaW50IGNbMF0gX19hdHRyaWJ1dGUgKChzdHJpY3RfZmxleF9hcnJheXMgKDMpKSk7IC8qIHsg ZGctd2FybmluZyAiJ3N0cmljdF9mbGV4X2FycmF5cycgPSAzIGF0dHJpYnV0ZSBpZ25vcmVkIHNp bmNlIGl0IGlzIG5vdCBzdXBwb3J0ZWQgZm9yIENcXCtcXCsgd2l0aCBHTlUgZXh0ZW5zaW9uIiB9 ICovDQo+PiArfTsNCj4+ICsNCj4+ICtzdHJ1Y3QgdHJhaWxpbmdfYXJyYXlfMSB7DQo+PiArICAg IGludCBhOw0KPj4gKyAgICBpbnQgYjsNCj4+ICsgICAgaW50IGNbMF0gX19hdHRyaWJ1dGUgKChz dHJpY3RfZmxleF9hcnJheXMgKDIpKSk7IC8qIHsgZGctYm9ndXMgIidzdHJpY3RfZmxleF9hcnJh eXMnID0gMyBhdHRyaWJ1dGUgaWdub3JlZCBzaW5jZSBpdCBpcyBub3Qgc3VwcG9ydGVkIGZvciBD XFwrXFwrIHdpdGggR05VIGV4dGVuc2lvbiIgfSAqLw0KPj4gK307DQo+PiArDQo+PiAraW50IGZv byhpbnQgYSkNCj4+ICt7DQo+PiArICByZXR1cm4gYSArIDI7DQo+PiArfQ0KPj4gZGlmZiAtLWdp dCBhL2djYy90ZXN0c3VpdGUvZysrLmRnL3N0cmljdC1mbGV4LWFycmF5LTQuQyBiL2djYy90ZXN0 c3VpdGUvZysrLmRnL3N0cmljdC1mbGV4LWFycmF5LTQuQw0KPj4gbmV3IGZpbGUgbW9kZSAxMDA2 NDQNCj4+IGluZGV4IDAwMDAwMDAwMDAwMC4uODA0ZTRjZjQ1OWVmDQo+PiAtLS0gL2Rldi9udWxs DQo+PiArKysgYi9nY2MvdGVzdHN1aXRlL2crKy5kZy9zdHJpY3QtZmxleC1hcnJheS00LkMNCj4+ IEBAIC0wLDAgKzEsOSBAQA0KPj4gKy8qIHRlc3RpbmcgdGhlIGNvcnJlY3QgdXNhZ2Ugb2YgZmxh ZyAtZnN0cmljdF9mbGV4X2FycmF5LiAgKi8gICANCj4+ICsvKiB7IGRnLWRvIGNvbXBpbGUgfSAq Lw0KPj4gKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1mc3RyaWN0LWZsZXgtYXJyYXlzPTIgLXN0ZD1n bnUrKzk4IiB9ICovDQo+PiArLyogeyBkZy1ib2d1cyAiaXMgbm90IHN1cHBvcnRlZCBmb3IgQ1xc K1xcKyB3aXRoIEdOVSBleHRlbnNpb24sIGlnbm9yZWQiICIiICB7IHRhcmdldCAqLSotKiB9IDAg fSAqLw0KPj4gKw0KPj4gK2ludCBmb28oaW50IGEpDQo+PiArew0KPj4gKyAgcmV0dXJuIGEgKyAy Ow0KPj4gK30NCj4+IGRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9zdHJpY3QtZmxl eC1hcnJheS0xLmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9zdHJpY3QtZmxleC1hcnJheS0xLmMN Cj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+PiBpbmRleCAwMDAwMDAwMDAwMDAuLjQ3YWRhZjdi YWM0YQ0KPj4gLS0tIC9kZXYvbnVsbA0KPj4gKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvc3Ry aWN0LWZsZXgtYXJyYXktMS5jDQo+PiBAQCAtMCwwICsxLDMxIEBADQo+PiArLyogdGVzdGluZyB0 aGUgY29ycmVjdCB1c2FnZSBvZiBhdHRyaWJ1dGUgc3RyaWN0X2ZsZXhfYXJyYXkuICAqLyAgIA0K Pj4gKy8qIHsgZGctZG8gY29tcGlsZSB9ICovDQo+PiArLyogeyBkZy1vcHRpb25zICItTzIiIH0g Ki8NCj4+ICsNCj4+ICsNCj4+ICtpbnQgeCBfX2F0dHJpYnV0ZV9fICgoc3RyaWN0X2ZsZXhfYXJy YXlzICgxKSkpOyAvKiB7IGRnLWVycm9yICInc3RyaWN0X2ZsZXhfYXJyYXlzJyBhdHRyaWJ1dGUg bWF5IG5vdCBiZSBzcGVjaWZpZWQgZm9yICd4JyIgfSAqLw0KPj4gKw0KPj4gK3N0cnVjdCB0cmFp bGluZyB7DQo+PiArICAgIGludCBhOw0KPj4gKyAgICBpbnQgYyBfX2F0dHJpYnV0ZSAoKHN0cmlj dF9mbGV4X2FycmF5cykpOyAvKiB7IGRnLWVycm9yICJ3cm9uZyBudW1iZXIgb2YgYXJndW1lbnRz IHNwZWNpZmllZCBmb3IgJ3N0cmljdF9mbGV4X2FycmF5cycgYXR0cmlidXRlIiB9ICovDQo+PiAr fTsNCj4+ICsNCj4+ICtzdHJ1Y3QgdHJhaWxpbmdfMSB7DQo+PiArICAgIGludCBhOw0KPj4gKyAg ICBpbnQgYjsNCj4+ICsgICAgaW50IGMgX19hdHRyaWJ1dGUgKChzdHJpY3RfZmxleF9hcnJheXMg KDIpKSk7IC8qIHsgZGctZXJyb3IgIidzdHJpY3RfZmxleF9hcnJheXMnIGF0dHJpYnV0ZSBtYXkg bm90IGJlIHNwZWNpZmllZCBmb3IgYSBub24gYXJyYXkgZmllbGQiIH0gKi8NCj4+ICt9Ow0KPj4g Kw0KPj4gK2V4dGVybiBpbnQgZDsNCj4+ICsNCj4+ICtzdHJ1Y3QgdHJhaWxpbmdfYXJyYXlfMiB7 DQo+PiArICAgIGludCBhOw0KPj4gKyAgICBpbnQgYjsNCj4+ICsgICAgaW50IGNbMV0gX19hdHRy aWJ1dGUgKChzdHJpY3RfZmxleF9hcnJheXMgKGQpKSk7IC8qIHsgZGctZXJyb3IgIidzdHJpY3Rf ZmxleF9hcnJheXMnIGF0dHJpYnV0ZSBhcmd1bWVudCBub3QgYW4gaW50ZWdlciIgfSAqLw0KPj4g K307DQo+PiArDQo+PiArc3RydWN0IHRyYWlsaW5nX2FycmF5XzMgew0KPj4gKyAgICBpbnQgYTsN Cj4+ICsgICAgaW50IGI7DQo+PiArICAgIGludCBjWzBdIF9fYXR0cmlidXRlICgoc3RyaWN0X2Zs ZXhfYXJyYXlzICg1KSkpOyAvKiB7IGRnLWVycm9yICInc3RyaWN0X2ZsZXhfYXJyYXlzJyBhdHRy aWJ1dGUgYXJndW1lbnQgJzUnIGlzIG5vdCBhbiBpbnRlZ2VyIGNvbnN0YW50IGJldHdlZW4gMCBh bmQgMyIgfSAqLw0KPj4gK307DQo+PiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcv c3RyaWN0LWZsZXgtYXJyYXktMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvc3RyaWN0LWZsZXgt YXJyYXktMi5jDQo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPj4gaW5kZXggMDAwMDAwMDAwMDAw Li45NjdhMjQwMDQwZGMNCj4+IC0tLSAvZGV2L251bGwNCj4+ICsrKyBiL2djYy90ZXN0c3VpdGUv Z2NjLmRnL3N0cmljdC1mbGV4LWFycmF5LTIuYw0KPj4gQEAgLTAsMCArMSwxNSBAQA0KPj4gKy8q IHRlc3RpbmcgdGhlIGNvcnJlY3QgdXNhZ2Ugb2YgZmxhZyAtZnN0cmljdF9mbGV4X2FycmF5LiAg Ki8gICANCj4+ICsvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLw0KPj4gKy8qIHsgZGctb3B0aW9ucyAi LU8yIC1mc3RyaWN0LWZsZXgtYXJyYXlzIC1zdGQ9Yzg5IiB9ICovDQo+PiArLyogeyBkZy13YXJu aW5nICInLWZzdHJpY3QtZmxleC1hcnJheXMnIGlzIG5vdCBzdXBwb3J0ZWQgd2l0aCBhIElTTyBD IGJlZm9yZSBDOTksIGlnbm9yZWQiICIiICB7IHRhcmdldCAqLSotKiB9IDAgfSAqLw0KPj4gKw0K Pj4gK3N0cnVjdCB0cmFpbGluZ19hcnJheSB7DQo+PiArICAgIGludCBhOw0KPj4gKyAgICBpbnQg YjsNCj4+ICsgICAgaW50IGNbMF0gX19hdHRyaWJ1dGUgKChzdHJpY3RfZmxleF9hcnJheXMgKDMp KSk7IC8qIHsgZGctd2FybmluZyAiJ3N0cmljdF9mbGV4X2FycmF5cycgYXR0cmlidXRlIGlnbm9y ZWQgc2luY2UgaXQgaXMgbm90IHN1cHBvcnRlZCB3aXRoIGEgSVNPIEMgYmVmb3JlIEM5OSIgfSAq Lw0KPj4gK307DQo+PiArDQo+PiAraW50IGZvbyhpbnQgYSkNCj4+ICt7DQo+PiArICByZXR1cm4g YSArIDI7DQo+PiArfQ0KPj4gZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3N0cmlj dC1mbGV4LWFycmF5LTMuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3N0cmljdC1mbGV4LWFycmF5 LTMuYw0KPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4+IGluZGV4IDAwMDAwMDAwMDAwMC4uODc5 ZGU3ZjIwM2M4DQo+PiAtLS0gL2Rldi9udWxsDQo+PiArKysgYi9nY2MvdGVzdHN1aXRlL2djYy5k Zy9zdHJpY3QtZmxleC1hcnJheS0zLmMNCj4+IEBAIC0wLDAgKzEsMjEgQEANCj4+ICsvKiB0ZXN0 aW5nIHRoZSBjb3JyZWN0IHVzYWdlIG9mIGZsYWcgLWZzdHJpY3RfZmxleF9hcnJheS4gICovICAg DQo+PiArLyogeyBkZy1kbyBjb21waWxlIH0gKi8NCj4+ICsvKiB7IGRnLW9wdGlvbnMgIi1PMiAt ZnN0cmljdC1mbGV4LWFycmF5cyAtc3RkPWdudTg5IiB9ICovDQo+PiArLyogeyBkZy13YXJuaW5n ICInLWZzdHJpY3QtZmxleC1hcnJheXM9MycgaXMgbm90IHN1cHBvcnRlZCB3aXRoIGEgR05VIGV4 dGVuc2lvbiBHTlU4OSwgaWdub3JlZCIgIiIgIHsgdGFyZ2V0ICotKi0qIH0gMCB9ICovDQo+PiAr DQo+PiArc3RydWN0IHRyYWlsaW5nX2FycmF5IHsNCj4+ICsgICAgaW50IGE7DQo+PiArICAgIGlu dCBiOw0KPj4gKyAgICBpbnQgY1swXSBfX2F0dHJpYnV0ZSAoKHN0cmljdF9mbGV4X2FycmF5cyAo MykpKTsgLyogeyBkZy13YXJuaW5nICInc3RyaWN0X2ZsZXhfYXJyYXlzJyA9IDMgYXR0cmlidXRl IGlnbm9yZWQgc2luY2UgaXQgaXMgbm90IHN1cHBvcnRlZCB3aXRoIGEgR05VIGV4dGVuc2lvbiBH TlU4OSIgfSAqLw0KPj4gK307DQo+PiArDQo+PiArc3RydWN0IHRyYWlsaW5nX2FycmF5XzEgew0K Pj4gKyAgICBpbnQgYTsNCj4+ICsgICAgaW50IGI7DQo+PiArICAgIGludCBjWzBdIF9fYXR0cmli dXRlICgoc3RyaWN0X2ZsZXhfYXJyYXlzICgyKSkpOyAvKiB7IGRnLWJvZ3VzICInc3RyaWN0X2Zs ZXhfYXJyYXlzJyA9IDMgYXR0cmlidXRlIGlnbm9yZWQgc2luY2UgaXQgaXMgbm90IHN1cHBvcnRl ZCB3aXRoIGEgR05VIGV4dGVuc2lvbiBHTlU4OSIgfSAqLw0KPj4gK307DQo+PiArDQo+PiAraW50 IGZvbyhpbnQgYSkNCj4+ICt7DQo+PiArICByZXR1cm4gYSArIDI7DQo+PiArfQ0KPj4gZGlmZiAt LWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3N0cmljdC1mbGV4LWFycmF5LTQuYyBiL2djYy90 ZXN0c3VpdGUvZ2NjLmRnL3N0cmljdC1mbGV4LWFycmF5LTQuYw0KPj4gbmV3IGZpbGUgbW9kZSAx MDA2NDQNCj4+IGluZGV4IDAwMDAwMDAwMDAwMC4uY2U2NGMyNGRiMzAxDQo+PiAtLS0gL2Rldi9u dWxsDQo+PiArKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9zdHJpY3QtZmxleC1hcnJheS00LmMN Cj4+IEBAIC0wLDAgKzEsMTAgQEANCj4+ICsvKiB0ZXN0aW5nIHRoZSBjb3JyZWN0IHVzYWdlIG9m IGZsYWcgLWZzdHJpY3RfZmxleF9hcnJheS4gICovICAgDQo+PiArLyogeyBkZy1kbyBjb21waWxl IH0gKi8NCj4+ICsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtZnN0cmljdC1mbGV4LWFycmF5cz0yIC1z dGQ9Z251ODkiIH0gKi8NCj4+ICsvKiB7IGRnLWJvZ3VzICJpcyBub3Qgc3VwcG9ydGVkIHdpdGgg YSBHTlUgZXh0ZW5zaW9uIEdOVTg5LCBpZ25vcmVkIiAiIiAgeyB0YXJnZXQgKi0qLSogfSAwIH0g Ki8NCj4+ICsNCj4+ICsNCj4+ICtpbnQgZm9vKGludCBhKQ0KPj4gK3sNCj4+ICsgIHJldHVybiBh ICsgMjsNCj4+ICt9DQo+PiBkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUtY29yZS5oIGIvZ2NjL3RyZWUt Y29yZS5oDQo+PiBpbmRleCA4NmEwN2MyODJhZjIuLmY4MjJjYjUzOWRkMCAxMDA2NDQNCj4+IC0t LSBhL2djYy90cmVlLWNvcmUuaA0KPj4gKysrIGIvZ2NjL3RyZWUtY29yZS5oDQo+PiBAQCAtMTgx Myw3ICsxODEzLDEwIEBAIHN0cnVjdCBHVFkoKCkpIHRyZWVfZGVjbF9jb21tb24gew0KPj4gICAg ICBUWVBFX1dBUk5fSUZfTk9UX0FMSUdOLiAgKi8NCj4+ICAgdW5zaWduZWQgaW50IHdhcm5faWZf bm90X2FsaWduIDogNjsNCj4+IA0KPj4gLSAgLyogMTQgYml0cyB1bnVzZWQuICAqLw0KPj4gKyAg LyogSW4gRklFTERfREVDTCwgdGhpcyBpcyBERUNMX05PVF9GTEVYQVJSQVkuICAqLw0KPj4gKyAg dW5zaWduZWQgaW50IGRlY2xfbm90X2ZsZXhhcnJheSA6IDE7DQo+PiArDQo+PiArICAvKiAxMyBi aXRzIHVudXNlZC4gICovDQo+PiANCj4+ICAgLyogVUlEIGZvciBwb2ludHMtdG8gc2V0cywgc3Rh YmxlIG92ZXIgY29weWluZyBmcm9tIGlubGluaW5nLiAgKi8NCj4+ICAgdW5zaWduZWQgaW50IHB0 X3VpZDsNCj4+IGRpZmYgLS1naXQgYS9nY2MvdHJlZS1zdHJlYW1lci1pbi5jYyBiL2djYy90cmVl LXN0cmVhbWVyLWluLmNjDQo+PiBpbmRleCAxOTZmMTljNzU5ZjIuLjIxZTZlOGViMWMwYSAxMDA2 NDQNCj4+IC0tLSBhL2djYy90cmVlLXN0cmVhbWVyLWluLmNjDQo+PiArKysgYi9nY2MvdHJlZS1z dHJlYW1lci1pbi5jYw0KPj4gQEAgLTI2MSw2ICsyNjEsNyBAQCB1bnBhY2tfdHNfZGVjbF9jb21t b25fdmFsdWVfZmllbGRzIChzdHJ1Y3QgYml0cGFja19kICpicCwgdHJlZSBleHByKQ0KPj4gICAg ICAgZWxzZQ0KPj4gCVNFVF9ERUNMX0ZJRUxEX0FCSV9JR05PUkVEIChleHByLCB2YWwpOw0KPj4g ICAgICAgZXhwci0+ZGVjbF9jb21tb24ub2ZmX2FsaWduID0gYnBfdW5wYWNrX3ZhbHVlIChicCwg OCk7DQo+PiArICAgICAgREVDTF9OT1RfRkxFWEFSUkFZIChleHByKSA9ICh1bnNpZ25lZCkgYnBf dW5wYWNrX3ZhbHVlIChicCwgMSk7DQo+PiAgICAgfQ0KPj4gDQo+PiAgIGVsc2UgaWYgKFZBUl9Q IChleHByKSkNCj4+IGRpZmYgLS1naXQgYS9nY2MvdHJlZS1zdHJlYW1lci1vdXQuY2MgYi9nY2Mv dHJlZS1zdHJlYW1lci1vdXQuY2MNCj4+IGluZGV4IGQzOWRjMTU4YTQ2NS4uNjhlNDBkYmRiOGYy IDEwMDY0NA0KPj4gLS0tIGEvZ2NjL3RyZWUtc3RyZWFtZXItb3V0LmNjDQo+PiArKysgYi9nY2Mv dHJlZS1zdHJlYW1lci1vdXQuY2MNCj4+IEBAIC0yMjksNiArMjI5LDcgQEAgcGFja190c19kZWNs X2NvbW1vbl92YWx1ZV9maWVsZHMgKHN0cnVjdCBiaXRwYWNrX2QgKmJwLCB0cmVlIGV4cHIpDQo+ PiAgICAgICBlbHNlDQo+PiAJYnBfcGFja192YWx1ZSAoYnAsIERFQ0xfRklFTERfQUJJX0lHTk9S RUQgKGV4cHIpLCAxKTsNCj4+ICAgICAgIGJwX3BhY2tfdmFsdWUgKGJwLCBleHByLT5kZWNsX2Nv bW1vbi5vZmZfYWxpZ24sIDgpOw0KPj4gKyAgICAgIGJwX3BhY2tfdmFsdWUgKGJwLCBERUNMX05P VF9GTEVYQVJSQVkgKGV4cHIpLCAxKTsNCj4+ICAgICB9DQo+PiANCj4+ICAgZWxzZSBpZiAoVkFS X1AgKGV4cHIpKQ0KPj4gZGlmZiAtLWdpdCBhL2djYy90cmVlLmNjIGIvZ2NjL3RyZWUuY2MNCj4+ IGluZGV4IGZlZDE0MzRkMTQxZC4uZDY5OGU4YzljMjEzIDEwMDY0NA0KPj4gLS0tIGEvZ2NjL3Ry ZWUuY2MNCj4+ICsrKyBiL2djYy90cmVlLmNjDQo+PiBAQCAtMTI2NzgsMTQgKzEyNjc4LDMwIEBA IGFycmF5X3JlZl91cF9ib3VuZCAodHJlZSBleHApDQo+PiB9DQo+PiANCj4+IC8qIFJldHVybnMg dHJ1ZSBpZiBSRUYgaXMgYW4gYXJyYXkgcmVmZXJlbmNlLCBjb21wb25lbnQgcmVmZXJlbmNlLA0K Pj4gLSAgIG9yIG1lbW9yeSByZWZlcmVuY2UgdG8gYW4gYXJyYXkgYXQgdGhlIGVuZCBvZiBhIHN0 cnVjdHVyZS4NCj4+IC0gICBJZiB0aGlzIGlzIHRoZSBjYXNlLCB0aGUgYXJyYXkgbWF5IGJlIGFs bG9jYXRlZCBsYXJnZXINCj4+IC0gICB0aGFuIGl0cyB1cHBlciBib3VuZCBpbXBsaWVzLiAgKi8N Cj4+ICsgICBvciBtZW1vcnkgcmVmZXJlbmNlIHRvIGFuIGFycmF5IHdob3NlIGFjdHVhbCBzaXpl IG1pZ2h0IGJlIGxhcmdlcg0KPj4gKyAgIHRoYW4gaXRzIHVwcGVyIGJvdW5kIGltcGxpZXMsIHRo ZXJlIGFyZSBtdWx0aXBsZSBjYXNlczoNCj4+ICsgICBBLiBhIHJlZiB0byBhIGZsZXhpYmxlIGFy cmF5IG1lbWJlciBhdCB0aGUgZW5kIG9mIGEgc3RydWN0dXJlOw0KPj4gKyAgIEIuIGEgcmVmIHRv IGFuIGFycmF5IHdpdGggYSBkaWZmZXJlbnQgdHlwZSBhZ2FpbnN0IHRoZSBvcmlnaW5hbCBkZWNs Ow0KPj4gKyAgICAgIGZvciBleGFtcGxlOg0KPj4gDQo+PiArICAgc2hvcnQgYVsxNl0gPSB7IDAs IDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2IH07 DQo+PiArICAgKCooKGNoYXIoKilbMTZdKSZhWzBdKSlbaSs4XQ0KPj4gKw0KPj4gKyAgIEMuIGEg cmVmIHRvIGFuIGFycmF5IHRoYXQgd2FzIHBhc3NlZCBhcyBhIHBhcmFtZXRlcjsNCj4+ICsgICAg ICBmb3IgZXhhbXBsZToNCj4+ICsNCj4+ICsgICBpbnQgdGVzdCAodWludDhfdCAqcCwgdWludDMy X3QgdFsxXVsxXSwgaW50IG4pIHsNCj4+ICsgICBmb3IgKGludCBpID0gMDsgaSA8IDQ7IGkrKywg cCsrKQ0KPj4gKyAgICAgdFtpXVswXSA9IC4uLjsNCj4+ICsNCj4+ICsgICBGSVhNRSwgdGhlIG5h bWUgb2YgdGhpcyByb3V0aW5lIG5lZWQgdG8gYmUgY2hhbmdlZCB0byBiZSBtb3JlIGFjY3VyYXRl LiAgKi8NCj4+IGJvb2wNCj4+IGFycmF5X2F0X3N0cnVjdF9lbmRfcCAodHJlZSByZWYpDQo+PiB7 DQo+PiAtICB0cmVlIGF0eXBlOw0KPj4gKyAgLyogdGhlIFRZUEUgZm9yIHRoaXMgYXJyYXkgcmVm ZXJlY2UuICAqLw0KPj4gKyAgdHJlZSBhdHlwZSA9IE5VTExfVFJFRTsNCj4+ICsgIC8qIHRoZSBG SUVMRF9ERUNMIGZvciB0aGUgYXJyYXkgZmllbGQgaW4gdGhlIGNvbnRhaW5pbmcgc3RydWN0dXJl LiAgKi8NCj4+ICsgIHRyZWUgYWZpZWxkX2RlY2wgPSBOVUxMX1RSRUU7DQo+PiANCj4+ICAgaWYg KFRSRUVfQ09ERSAocmVmKSA9PSBBUlJBWV9SRUYNCj4+ICAgICAgIHx8IFRSRUVfQ09ERSAocmVm KSA9PSBBUlJBWV9SQU5HRV9SRUYpDQo+PiBAQCAtMTI2OTUsNyArMTI3MTEsMTAgQEAgYXJyYXlf YXRfc3RydWN0X2VuZF9wICh0cmVlIHJlZikNCj4+ICAgICB9DQo+PiAgIGVsc2UgaWYgKFRSRUVf Q09ERSAocmVmKSA9PSBDT01QT05FTlRfUkVGDQo+PiAJICAgJiYgVFJFRV9DT0RFIChUUkVFX1RZ UEUgKFRSRUVfT1BFUkFORCAocmVmLCAxKSkpID09IEFSUkFZX1RZUEUpDQo+PiAtICAgIGF0eXBl ID0gVFJFRV9UWVBFIChUUkVFX09QRVJBTkQgKHJlZiwgMSkpOw0KPj4gKyAgICB7DQo+PiArICAg ICAgYXR5cGUgPSBUUkVFX1RZUEUgKFRSRUVfT1BFUkFORCAocmVmLCAxKSk7DQo+PiArICAgICAg YWZpZWxkX2RlY2wgPSBUUkVFX09QRVJBTkQgKHJlZiwgMSk7DQo+PiArICAgIH0NCj4+ICAgZWxz ZSBpZiAoVFJFRV9DT0RFIChyZWYpID09IE1FTV9SRUYpDQo+PiAgICAgew0KPj4gICAgICAgdHJl ZSBhcmcgPSBUUkVFX09QRVJBTkQgKHJlZiwgMCk7DQo+PiBAQCAtMTI3MDcsNiArMTI3MjYsNyBA QCBhcnJheV9hdF9zdHJ1Y3RfZW5kX3AgKHRyZWUgcmVmKQ0KPj4gCSAgaWYgKHRyZWUgZmxkID0g bGFzdF9maWVsZCAoYXJndHlwZSkpDQo+PiAJICAgIHsNCj4+IAkgICAgICBhdHlwZSA9IFRSRUVf VFlQRSAoZmxkKTsNCj4+ICsJICAgICAgYWZpZWxkX2RlY2wgPSBmbGQ7DQo+PiAJICAgICAgaWYg KFRSRUVfQ09ERSAoYXR5cGUpICE9IEFSUkFZX1RZUEUpDQo+PiAJCXJldHVybiBmYWxzZTsNCj4+ IAkgICAgICBpZiAoVkFSX1AgKGFyZykgJiYgREVDTF9TSVpFIChmbGQpKQ0KPj4gQEAgLTEyNzYw LDEzICsxMjc4MCwxNiBAQCBhcnJheV9hdF9zdHJ1Y3RfZW5kX3AgKHRyZWUgcmVmKQ0KPj4gICAg ICAgcmVmID0gVFJFRV9PUEVSQU5EIChyZWYsIDApOw0KPj4gICAgIH0NCj4+IA0KPj4gLSAgLyog VGhlIGFycmF5IG5vdyBpcyBhdCBzdHJ1Y3QgZW5kLiAgVHJlYXQgZmxleGlibGUgYXJyYXlzIGFz DQo+PiArICBnY2NfYXNzZXJ0ICghYWZpZWxkX2RlY2wNCj4+ICsJICAgICAgfHwgKGFmaWVsZF9k ZWNsICYmIFRSRUVfQ09ERSAoYWZpZWxkX2RlY2wpID09IEZJRUxEX0RFQ0wpKTsNCj4+ICsNCj4+ ICsgIC8qIFRoZSBhcnJheSBub3cgaXMgYXQgc3RydWN0IGVuZC4gIFRyZWF0IGZsZXhpYmxlIGFy cmF5IG1lbWJlciBhcw0KPj4gICAgICBhbHdheXMgc3ViamVjdCB0byBleHRlbmQsIGV2ZW4gaW50 byBqdXN0IHBhZGRpbmcgY29uc3RyYWluZWQgYnkNCj4+ICAgICAgYW4gdW5kZXJseWluZyBkZWNs LiAgKi8NCj4+ICAgaWYgKCEgVFlQRV9TSVpFIChhdHlwZSkNCj4+ICAgICAgIHx8ICEgVFlQRV9E T01BSU4gKGF0eXBlKQ0KPj4gICAgICAgfHwgISBUWVBFX01BWF9WQUxVRSAoVFlQRV9ET01BSU4g KGF0eXBlKSkpDQo+PiAtICAgIHJldHVybiB0cnVlOw0KPj4gKyAgICByZXR1cm4gYWZpZWxkX2Rl Y2wgPyAhREVDTF9OT1RfRkxFWEFSUkFZIChhZmllbGRfZGVjbCkgOiB0cnVlOw0KPj4gDQo+PiAg IC8qIElmIHRoZSByZWZlcmVuY2UgaXMgYmFzZWQgb24gYSBkZWNsYXJlZCBlbnRpdHksIHRoZSBz aXplIG9mIHRoZSBhcnJheQ0KPj4gICAgICBpcyBjb25zdHJhaW5lZCBieSBpdHMgZ2l2ZW4gZG9t YWluLiAgKERvIG5vdCB0cnVzdCBjb21tb25zIFBSLzY5MzY4KS4gICovDQo+PiBAQCAtMTI3ODgs OSArMTI4MTEsOSBAQCBhcnJheV9hdF9zdHJ1Y3RfZW5kX3AgKHRyZWUgcmVmKQ0KPj4gICAgICAg aWYgKFRSRUVfQ09ERSAoVFlQRV9TSVpFX1VOSVQgKFRSRUVfVFlQRSAoYXR5cGUpKSkgIT0gSU5U RUdFUl9DU1QNCj4+IAkgIHx8IFRSRUVfQ09ERSAoVFlQRV9NQVhfVkFMVUUgKFRZUEVfRE9NQUlO IChhdHlwZSkpKSAhPSBJTlRFR0VSX0NTVA0KPj4gICAgICAgICAgIHx8IFRSRUVfQ09ERSAoVFlQ RV9NSU5fVkFMVUUgKFRZUEVfRE9NQUlOIChhdHlwZSkpKSAhPSBJTlRFR0VSX0NTVCkNCj4+IC0J cmV0dXJuIHRydWU7DQo+PiArCXJldHVybiBhZmllbGRfZGVjbCA/ICFERUNMX05PVF9GTEVYQVJS QVkgKGFmaWVsZF9kZWNsKSA6IHRydWU7DQo+PiAgICAgICBpZiAoISBnZXRfYWRkcl9iYXNlX2Fu ZF91bml0X29mZnNldCAocmVmX3RvX2FycmF5LCAmb2Zmc2V0KSkNCj4+IC0JcmV0dXJuIHRydWU7 DQo+PiArCXJldHVybiBhZmllbGRfZGVjbCA/ICFERUNMX05PVF9GTEVYQVJSQVkgKGFmaWVsZF9k ZWNsKSA6IHRydWU7DQo+PiANCj4+ICAgICAgIC8qIElmIGF0IGxlYXN0IG9uZSBleHRyYSBlbGVt ZW50IGZpdHMgaXQgaXMgYSBmbGV4YXJyYXkuICAqLw0KPj4gICAgICAgaWYgKGtub3duX2xlICgo d2k6OnRvX29mZnNldCAoVFlQRV9NQVhfVkFMVUUgKFRZUEVfRE9NQUlOIChhdHlwZSkpKQ0KPj4g QEAgLTEyNzk4LDEyICsxMjgyMSwxMiBAQCBhcnJheV9hdF9zdHJ1Y3RfZW5kX3AgKHRyZWUgcmVm KQ0KPj4gCQkgICAgICsgMikNCj4+IAkJICAgICogd2k6OnRvX29mZnNldCAoVFlQRV9TSVpFX1VO SVQgKFRSRUVfVFlQRSAoYXR5cGUpKSksDQo+PiAJCSAgICB3aTo6dG9fb2Zmc2V0IChERUNMX1NJ WkVfVU5JVCAocmVmKSkgLSBvZmZzZXQpKQ0KPj4gLQlyZXR1cm4gdHJ1ZTsNCj4+ICsJcmV0dXJu IGFmaWVsZF9kZWNsID8gIURFQ0xfTk9UX0ZMRVhBUlJBWSAoYWZpZWxkX2RlY2wpIDogdHJ1ZTsN Cj4+IA0KPj4gICAgICAgcmV0dXJuIGZhbHNlOw0KPj4gICAgIH0NCj4+IA0KPj4gLSAgcmV0dXJu IHRydWU7DQo+PiArICByZXR1cm4gYWZpZWxkX2RlY2wgPyAhREVDTF9OT1RfRkxFWEFSUkFZIChh ZmllbGRfZGVjbCkgOiB0cnVlOw0KPj4gfQ0KPj4gDQo+PiAvKiBSZXR1cm4gYSB0cmVlIHJlcHJl c2VudGluZyB0aGUgb2Zmc2V0LCBpbiBieXRlcywgb2YgdGhlIGZpZWxkIHJlZmVyZW5jZWQNCj4+ IGRpZmYgLS1naXQgYS9nY2MvdHJlZS5oIGIvZ2NjL3RyZWUuaA0KPj4gaW5kZXggZTY1NjRhYWNj YjdiLi5mOTExYzBhNDZlNjkgMTAwNjQ0DQo+PiAtLS0gYS9nY2MvdHJlZS5oDQo+PiArKysgYi9n Y2MvdHJlZS5oDQo+PiBAQCAtMjk5Myw2ICsyOTkzLDEyIEBAIGV4dGVybiB2b2lkIGRlY2xfdmFs dWVfZXhwcl9pbnNlcnQgKHRyZWUsIHRyZWUpOw0KPj4gI2RlZmluZSBERUNMX1BBRERJTkdfUChO T0RFKSBcDQo+PiAgIChGSUVMRF9ERUNMX0NIRUNLIChOT0RFKS0+ZGVjbF9jb21tb24uZGVjbF9m bGFnXzMpDQo+PiANCj4+ICsvKiBVc2VkIGluIGEgRklFTERfREVDTCB0byBpbmRpY2F0ZSB3aGV0 aGVyIHRoaXMgZmllbGQgaXMgbm90IGEgZmxleGlibGUNCj4+ICsgICBhcnJheSBtZW1iZXIuIFRo aXMgaXMgb25seSB2YWxpZCBmb3IgdGhlIGxhc3QgYXJyYXkgdHlwZSBmaWVsZCBvZiBhDQo+PiAr ICAgc3RydWN0dXJlLiAgKi8NCj4+ICsjZGVmaW5lIERFQ0xfTk9UX0ZMRVhBUlJBWShOT0RFKSBc DQo+PiArICAoRklFTERfREVDTF9DSEVDSyAoTk9ERSktPmRlY2xfY29tbW9uLmRlY2xfbm90X2Zs ZXhhcnJheSkNCj4+ICsNCj4+IC8qIEEgbnVtZXJpYyB1bmlxdWUgaWRlbnRpZmllciBmb3IgYSBM QUJFTF9ERUNMLiAgVGhlIFVJRCBhbGxvY2F0aW9uIGlzDQo+PiAgICBkZW5zZSwgdW5pcXVlIHdp dGhpbiBhbnkgb25lIGZ1bmN0aW9uLCBhbmQgbWF5IGJlIHVzZWQgdG8gaW5kZXggYXJyYXlzLg0K Pj4gICAgSWYgdGhlIHZhbHVlIGlzIC0xLCB0aGVuIG5vIFVJRCBoYXMgYmVlbiBhc3NpZ25lZC4g ICovDQo+PiBAQCAtNTUzMSwxMCArNTUzNywxMCBAQCBleHRlcm4gdHJlZSBjb21wb25lbnRfcmVm X2ZpZWxkX29mZnNldCAodHJlZSk7DQo+PiAgICByZXR1cm5zIG51bGwuICAqLw0KPj4gZW51bSBz dHJ1Y3Qgc3BlY2lhbF9hcnJheV9tZW1iZXINCj4+ICAgew0KPj4gLSAgIG5vbmUsICAgICAgLyog Tm90IGEgc3BlY2lhbCBhcnJheSBtZW1iZXIuICAqLw0KPj4gLSAgIGludF8wLCAgICAgLyogSW50 ZXJpb3IgYXJyYXkgbWVtYmVyIHdpdGggc2l6ZSB6ZXJvLiAgKi8NCj4+IC0gICB0cmFpbF8wLCAg IC8qIFRyYWlsaW5nIGFycmF5IG1lbWJlciB3aXRoIHNpemUgemVyby4gICovDQo+PiAtICAgdHJh aWxfMSAgICAvKiBUcmFpbGluZyBhcnJheSBtZW1iZXIgd2l0aCBvbmUgZWxlbWVudC4gICovDQo+ PiArICAgIG5vbmUsCS8qIE5vdCBhIHNwZWNpYWwgYXJyYXkgbWVtYmVyLiAgKi8NCj4+ICsgICAg aW50XzAsCS8qIEludGVyaW9yIGFycmF5IG1lbWJlciB3aXRoIHNpemUgemVyby4gICovDQo+PiAr ICAgIHRyYWlsXzAsCS8qIFRyYWlsaW5nIGFycmF5IG1lbWJlciB3aXRoIHNpemUgemVyby4gICov DQo+PiArICAgIHRyYWlsXzEJLyogVHJhaWxpbmcgYXJyYXkgbWVtYmVyIHdpdGggb25lIGVsZW1l bnQuICAqLw0KPj4gICB9Ow0KPj4gDQo+PiAvKiBSZXR1cm4gdGhlIHNpemUgb2YgdGhlIG1lbWJl ciByZWZlcmVuY2VkIGJ5IHRoZSBDT01QT05FTlRfUkVGLCB1c2luZw0KPj4gDQo+IA0KPiAtLSAN Cj4gUmljaGFyZCBCaWVuZXIgPHJndWVudGhlckBzdXNlLmRlPg0KPiBTVVNFIFNvZnR3YXJlIFNv bHV0aW9ucyBHZXJtYW55IEdtYkgsIEZyYW5rZW5zdHJhc3NlIDE0NiwgOTA0NjEgTnVlcm5iZXJn LA0KPiBHZXJtYW55OyBHRjogSXZvIFRvdGV2LCBBbmRyZXcgTXllcnMsIEFuZHJldyBNY0RvbmFs ZCwgQm91ZGllbiBNb2VybWFuOw0KPiBIUkIgMzY4MDkgKEFHIE51ZXJuYmVyZykNCg0K