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 9D51A385842C for ; Wed, 20 Sep 2023 13:45:24 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 9D51A385842C 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.19/8.17.1.19) with ESMTP id 38K9sMpu004493; Wed, 20 Sep 2023 13:45:19 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=R0FW9td9Kc1tyCxma8U6QsP/qUonpDiSV+YeJ/Wsmco=; b=P//Zg9kcYvQhwOKpl8c69czKrzfChrCjNo3QT1920xfWaE16gFiGWX5Nk+StUotCOEIy Jjci1PUW5sIdO+R1i7LUbRUFneOJJUy/G+WzphDYGVl6caAKS03/FNR1ZYjrSWs9K1Zn UjuFUxEb2hnGHLIA6IoSWQJ9MPoSqeSka2ystihrS9d2uWp2pJ0uF34Kvcp68O7Qa5ab AL0iQTtijoVizj+zgBoj/3tGrBUbtRyFKFJLpZUVeHnn1FTCq91h1HxTIoeIsLSgxBGi 1gjexzwsATIm1cP8uIIR9GN5s1ScI3x2DpcR2uMun4C7rqGGM5TNR3YuER54+oO4mDV4 9Q== Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3t52y1ycuw-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 20 Sep 2023 13:45:19 +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 38KCj7nO030843; Wed, 20 Sep 2023 13:45:18 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 3t52t73tne-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 20 Sep 2023 13:45:18 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=B8v4fxPsijuwukSprPuAxfdJcuMxktrWwDqP3Je8iFsaUr+ybxtJNIvj9ghgx6XbES6cWtTR7ItSy2nmGgA/+W/8z3rBJkkL8mp6D/c98l0xORsRiI+Zjc+ZNGgUUjL/eVoin7m1sakHb3bPrzJnNb/U0dIonYCgL8gy/Ruc/vxwiQJQwPLj3fJjnT/18dWilDOUxHw5tthL2WrluAnWtBIBXMIKmOoCRjSxG5K8rqBtOHp0ZKidlUSq84ZY+PoR4f+vWVgf9QK2UOSw2qGI+vMRWeGZJpG4SRO5t7SD48J6bqlmh1WalSR2jleDKMEWOqD7OzmH+UZsIVwc9N/SQA== 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=R0FW9td9Kc1tyCxma8U6QsP/qUonpDiSV+YeJ/Wsmco=; b=na0W3uO3/eGu47MW9KVQZ+V9YereLWNlD3psCNEFTPnJeU/Cj7oQWp4/Tc9EVyHPYNRt0qlLASfJcwNZkGT9lMf86G33o/xmfSUceK0IqSanZIR4vpb+lMU/Jzk8vd29FeDZKNioSA1mtektPUB9wCGxeMkpbN5DlggBcg9yfn80Hdcw42S8lYlMdreB8TlgGK1QXQ7uA/GmIoLHRwFZ0pveGAvpxg0hvaQ4Ui9Uk4jNo6XJeGNxFNs2OSwwclsDsKIlWsvROALF1kdCOV9z1WX46Kyoz4tcmoTbUvWWBzSdce2ANwovKf/E7VcaBBLZuxl0BKs0pmaYuXRjGR2pcg== 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=R0FW9td9Kc1tyCxma8U6QsP/qUonpDiSV+YeJ/Wsmco=; b=fioV5OnRZR76r6A3PJdKFIIYYtm6n8ioqhs8kNyGr9SUr4LtXO3Ey+6tKyIqaZ0deZyRvAKlrmLGLYzQ7ky95lvRmAbktUcTUzb5t9guBMW47ZzKvbXBbQSWDYy+LhBkHp0q0zCI7eU5iuVD4oTiKWmYcmf51HVJ9+nDxroGdpI= 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:55 +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:55 +0000 From: Qing Zhao To: Joseph Myers , "richard.guenther@gmail.com" , "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 2/3] Use the counted_by atribute info in builtin object size [PR108896] Thread-Topic: PING *2: [V3][PATCH 2/3] Use the counted_by atribute info in builtin object size [PR108896] Thread-Index: AQHZ12hD/pjqZRPtiUSxFdbyfbHYILAj4nQA Date: Wed, 20 Sep 2023 13:44:55 +0000 Message-ID: <8587389F-8F4B-4483-827A-F86CA9B19173@oracle.com> References: <20230825152425.2417656-1-qing.zhao@oracle.com> <20230825152425.2417656-3-qing.zhao@oracle.com> In-Reply-To: <20230825152425.2417656-3-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: 387439d6-8f6e-48b0-b175-08dbb9dfc5e6 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: cAxkOlwJP7MFWFtbkzl89NJeCDkYe33azyJqVby15HHjyGVodH4OJ1d7MkKk09LHD/tePU3YwYWlnvcTG6LbUokpnCbYKilVSeJbGgfd2tdklIIUCFHWFhTKkmSIaTTPGKvVs4HYgvJ5yHy3o8iFZoS4uABCveh+lg3tM7lTzhdntYJQE1O5Oy4jWvtQQoIpXF6myMNdNQJMyUpxckUNzC2YWY9it6ULUrWMTdtkizFUoABBqxowK9HvI/ujcI25wUl/D6VtpttE7hZCOn0junRbV5TkZD8sAvF5snWLZqYo05mEe6phTj55Ibrx1iNbty7LSxSYPJKCsMZFzckIpIruTsoAggUWxdBxWjeBrtrrrq5KeMOJh98vNgIkp05fvzSg6DSEh4J6D8/l43txSdUAtWI0+HPZBwjKrs+idX3HH7OnQx+497MGh1hu7rhxujJZ1WF2i1NwZ4Yt38RQDzhDcFZudzo5RUoBNpZAMjKjba1gOfVnN+HbpXv8KfcuOgaTmousmNFyFfrJbyObV9vFGMHiULZVwP2oVF4JB6qN6lqSr29sDJ7c7lijb81935amhQoSSq8wkSOcZoFN3SxvOyH62V9Qq/fFq0ZEbalUQOUAG1uuoUTI8w78DXRQNbC8B8reXWoAUHhzg7aIAgEuNnMSMfMDC603akYut2I= 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)(966005)(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?SjBBajhiQlRJcHNtdFpNZWhCNlVDc3pFMkRZSFBvQVZnT2ZQYWNmTko5WDBp?= =?utf-8?B?Mmh0VHk2KzIzczJqVDdDS0xLcmwySE0zZld6bFpTbGVSbVZHUVlTZG8ySStu?= =?utf-8?B?d0VlYi80TS9ELzlLRkwybU54aUhhVG1qYks3T016dE1MZkFTbUZ5elNmMnFT?= =?utf-8?B?Q3FMUStNdzUvNFZ4c1JtU3owKzUyVUNVM1ArYWVFU3lsZGdaWG1zR3g2L0xH?= =?utf-8?B?ZmJIaGZwT3lsUDYrcWJlY2dJS09yNHUyZkZ3NjJqcFk3SEM3eGx6TlcvYXF3?= =?utf-8?B?NnhZRDZNQUlwaVRTYXRQS0VRL0JUQ05WUGpKTjlwSS9wU1RTU2hjN2JjQ3dG?= =?utf-8?B?bTZXOW83UmFBTkw1cGRNcFNRZTJOenliNVJYWnlMWWsxN243bEROQTZyM0pt?= =?utf-8?B?WlNwTGVPbXp4TDhDU3YxRlR2RGNIYkNqRlc3SWFWZnFUOHd6dzhXdEp2Ujll?= =?utf-8?B?TlBSeCtaWDdETy9ZT0x6bU1WZ2t1NDVOM0R1T3AreUpLa0xTT3JlVTVHeVpk?= =?utf-8?B?eDFtK0JiZTZMSkV5VmpFcWdwOUhjci9DbVpJdXRaY2tZTkpUN21ZWGQ1RDc4?= =?utf-8?B?SEgzY0FxOVZwQXdYcUFUMFQrTUZVd0QrSkhFaDRJbzFOeFZNYXlCRXlPSjZr?= =?utf-8?B?d3hpcVZPOWxpYnU4VmVzVmxWUTM3cXhYdTdlWHpIdDJkQnR3S2ZOcVhWVHRi?= =?utf-8?B?aXI1WUJyMUU3WG50NzRSYStGUHFnWk1FZDB6ZnNLWGg0ZWJITUQzWTAxc1hC?= =?utf-8?B?Q0lSOHlqKy9lU3AraVU3d3IyYU42M2FBdWdqRElLVjJuMFM1MEhSdnFJbmlW?= =?utf-8?B?Wm5OMHp4UWhlamtyVmpUZkZVb0lXMnRKUUZTVDZkUmw5c0JSY25laXBkaE5P?= =?utf-8?B?SGphNGNKM0M2MWtoTVpKZ2hOcktXTXkvTy9rS0pRTk05cGFMMGZPeTMvRHRW?= =?utf-8?B?d2lNNTNvUmpENURvM1lROU83TTkyVmVCM0lOT29nVHFHY0J0ZktZNVJmTU9Y?= =?utf-8?B?dTV1bXluMGd4aUdFSENIaGUvVC9QYkN2NVRMSkFlUnJwRVhJK3dkdTJ4aklN?= =?utf-8?B?bW9aTXp0bGczNFRURXZWaDNxYTJHTzJielNlWnNIejIyTnRoZEtLVjk4dWJv?= =?utf-8?B?dVozN2lid3Fna0p6UHNTemZuaTNDcGJ1TnpnbkpLVjZaK0tZeUxKSDJiVUN6?= =?utf-8?B?ODhwZzh0RkJndngrK3FOZDEwNlFjVlAweHBOQUtBeUMvSENmNjBjM2FlSmY3?= =?utf-8?B?Rlp4NU8yaGxKeHd6MUFEdDNnOGVoQjZybnFpd3BObFEyZDF1ZEJOUENOWjFG?= =?utf-8?B?aTZoN2dDS3c2c2tmWjNMUGo1V3hrUWxaWGI1TlNTQkdHOWU1YXVVNmFOclR0?= =?utf-8?B?b3lyWjNtUlFrZGxidEQ2d3RxbmVOeHF0UExFM1U5enZzVW9MMDBsUHRNYnh1?= =?utf-8?B?UjU3VUsxUW85S0I3S1FqQ3E5ZTY1cFhvdFkzWXpoVkNnalNiUzU5YmM1MkdV?= =?utf-8?B?UHEzbTNMWkNvYVAxdlEveVBMbzBmaFpSY3NhVG96MWt6OGhidHhvdzFIcEZP?= =?utf-8?B?Yy92SmdrVGJ0OFpEYnVpZk56bXFWVXdBN2QvZldXOFpPajBLUjdEM0NLQ2Z6?= =?utf-8?B?amhzOG1Qam1uNmlZdFh5N1VJKzJUdzB0eGdJQ2xURkNjTjJxQUVhbEh1bTZ5?= =?utf-8?B?a1ZjZGpjWmprSksrdzhMQVhFbmJWNUcyOEZIOXJKbGI3K05qVlFSVjJNVkhj?= =?utf-8?B?d01sa09KaThiL0JWN2lURWM2QlhCaVpSNmV0dlFIdUZ6a0xZRTFoSmovbVpU?= =?utf-8?B?aWVFQUVnUTlyb0YzdkpDVmZyUmVyNkh2QUx2M1F3QUVYQXZTbWJqbThoNHhE?= =?utf-8?B?dVBRNUJsZGs4eHJVRHlZMHEwb0JDeHhlTEpaS2NTZENhVHRaZ1ZWNHkyNzJx?= =?utf-8?B?SnA2cnExb1ZPUTJsSHFwZjdXcjd1VGJxY0huRXZXTEkrWVlhaTNSb0VLdWZZ?= =?utf-8?B?OEsvWkU3UkUwVlpoRit1WWNPcnUrVmZjaFVsSDU0MzFCSXREdUdaS2Vyandi?= =?utf-8?B?SDdhUUQ4Ui9SYXFCRElhcGdhdTIySnNwbllxMGpsS3FERDNKcU9Ca0ZQcGQy?= =?utf-8?B?alRObHZ4K3dZTmdkLzl2MXA2KzI3MUxoY1dFRW1IY3kvRjhZWDFHMlRVQlVO?= =?utf-8?B?eVE9PQ==?= Content-Type: text/plain; charset="utf-8" Content-ID: <7B61D1275C49CE40B4CB0E3907DF8377@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?Z1h1Z0F0VkxPK1VYbmUxWTZkcktScXNPVDkrMksyVzRySmwwa2o5andwSnFz?= =?utf-8?B?TEYzM3Y5WFQvWDJnNWRhSUR3cU1xajhUOXBjVHd2aStXNmNUQTY5bmNlZUR3?= =?utf-8?B?cUV3RGlER2lwbnBtN1JEclRISWN4cUljVnBmWXBPYmp5bVY1TTMrR0lKL2lS?= =?utf-8?B?a0VsRWhSbmtrUDZ2dnRnbmlEc0Q2SVE4cGVjdmkwQkIyd0RVRTlOQkFGdnZ1?= =?utf-8?B?SFhJa1JGZHU3WktXVzZnWUErNWxRMm5Nb3ljVmFLUkdxYnVnRkRoQ1YvSGp5?= =?utf-8?B?SVJxeE9ZSlhJQndPWjUrdHcwV0hLOUN2blVDSkJ0Y05Tb3BKaTg3Smwxa25u?= =?utf-8?B?aDJURjA1aWhQSlNoTlBVUUJZK1dXSTZVQ2VRZkUyQVF5czBzVWRnU2FUcisr?= =?utf-8?B?VWpmOHZHVU9wdjhJU05Wb1VMUUVpeUw2WUJGYkt2d0tvOWVJTGRIT1UxN2tH?= =?utf-8?B?SC9obnFaamQvTTZ0REJWZGQ1UHFGa0VVVDZOaDRuT1REdTExaGNSRFdsZFds?= =?utf-8?B?dEgvMEFaQXUzOXBaRHIwazgrUFVhWkNGWmkwYVRGVzFGR1lodmNuNjhVcDlm?= =?utf-8?B?dDdFQVJOQTBLT2M2Q2F0d0p4TjdZVjV0c1NLMUZRRmladVJOSDBtL3RTUE9U?= =?utf-8?B?aUE1Q2UyY0wzOTlscVliSGQrbDZhci9lUThEc245RG9CV2Z4LzdrdE8xWGFZ?= =?utf-8?B?VFpXSjhIUk5aL0VrVEV6ZXdsbTRaRjZOaUtIU3RHR0wzVFFLWkU2YngzTzQw?= =?utf-8?B?ek43UkI0empuQ0ROL01mTHBFNDNNVXdkd3BQanpGelRGL09YbEs1NDlQNG5v?= =?utf-8?B?Z3R0T2F1cTd6U1lDN1dPMVBsWnFTS1BNa2grcjZrRlptZmE2SFlKY21aQXJj?= =?utf-8?B?RXBGVjFJektrT0dhb05DNU50OWQybTFLaHdOS3BRVS8zenh6d2NkS3hsZ05T?= =?utf-8?B?QUl5Vm5KNllZTHVPMzBSOG9tdFd5d09ydjhkMVpiQXRJb2Y2VjVZRkZHTGNl?= =?utf-8?B?WE4yWTNtUUhMQzJYOVNvL0N1eHhRVkhuZ2QyUFRib1RXRVVBbEZzVlNaR0cr?= =?utf-8?B?aTNodXB2S0d5Zmlkc0F2TjlRTUpQN0ViaWFBR055MzAvbEZsYUZRamtjek56?= =?utf-8?B?Q0h0c3k3eEdWdmQ5UmFmVGd2TmJGQUpDVjZxOWUrM1k0NEFvcFAxWG93UFhq?= =?utf-8?B?T29EU0VsbGtFRndiSTBxWFI0bHNndmZ3alJ4TkJ2bDdpTGt4Vy8ybzlBODBh?= =?utf-8?Q?HdopjK2WRlqFqRT?= 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: 387439d6-8f6e-48b0-b175-08dbb9dfc5e6 X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Sep 2023 13:44:55.1951 (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: rahJF3gnUkKxTj7nTrcLHIUjgG7aDrB/erZbuImAwjCUgdFS78mT52Z9Mb1OxkgMrFaYQda9GubeX/u/r1/mWw== 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: 7ganL3-XAQlFrULCYa2VGE17BdaftP_n X-Proofpoint-ORIG-GUID: 7ganL3-XAQlFrULCYa2VGE17BdaftP_n 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,KAM_SHORT,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+IFVzZSB0aGUgY291bnRl ZF9ieSBhdHJpYnV0ZSBpbmZvIGluIGJ1aWx0aW4gb2JqZWN0IHNpemUgdG8gY29tcHV0ZSB0aGUN Cj4gc3Vib2JqZWN0IHNpemUgZm9yIGZsZXhpYmxlIGFycmF5IG1lbWJlcnMuDQo+IA0KPiBnY2Mv Q2hhbmdlTG9nOg0KPiANCj4gCVBSIEMvMTA4ODk2DQo+IAkqIHRyZWUtb2JqZWN0LXNpemUuY2Mg KGFkZHJfb2JqZWN0X3NpemUpOiBVc2UgdGhlIGNvdW50ZWRfYnkNCj4gCWF0dHJpYnV0ZSBpbmZv Lg0KPiAJKiB0cmVlLmNjIChjb21wb25lbnRfcmVmX2hhc19jb3VudGVkX2J5X3ApOiBOZXcgZnVu Y3Rpb24uDQo+IAkoY29tcG9uZW50X3JlZl9nZXRfY291bnRlZF9ieSk6IE5ldyBmdW5jdGlvbi4N Cj4gCSogdHJlZS5oIChjb21wb25lbnRfcmVmX2hhc19jb3VudGVkX2J5X3ApOiBOZXcgcHJvdG90 eXBlLg0KPiAJKGNvbXBvbmVudF9yZWZfZ2V0X2NvdW50ZWRfYnkpOiBOZXcgcHJvdG90eXBlLg0K PiANCj4gZ2NjL3Rlc3RzdWl0ZS9DaGFuZ2VMb2c6DQo+IA0KPiAJUFIgQy8xMDg4OTYNCj4gCSog Z2NjLmRnL2ZsZXgtYXJyYXktY291bnRlZC1ieS0yLmM6IE5ldyB0ZXN0Lg0KPiAJKiBnY2MuZGcv ZmxleC1hcnJheS1jb3VudGVkLWJ5LTMuYzogTmV3IHRlc3QuDQo+IC0tLQ0KPiAuLi4vZ2NjLmRn L2ZsZXgtYXJyYXktY291bnRlZC1ieS0yLmMgICAgICAgICAgfCAgNzQgKysrKysrDQo+IC4uLi9n Y2MuZGcvZmxleC1hcnJheS1jb3VudGVkLWJ5LTMuYyAgICAgICAgICB8IDIxMCArKysrKysrKysr KysrKysrKysNCj4gZ2NjL3RyZWUtb2JqZWN0LXNpemUuY2MgICAgICAgICAgICAgICAgICAgICAg IHwgIDM3ICsrLQ0KPiBnY2MvdHJlZS5jYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgfCAgOTUgKysrKysrKy0NCj4gZ2NjL3RyZWUuaCAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgIDEwICsNCj4gNSBmaWxlcyBjaGFuZ2VkLCA0MTggaW5zZXJ0aW9ucygrKSwg OCBkZWxldGlvbnMoLSkNCj4gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLmRn L2ZsZXgtYXJyYXktY291bnRlZC1ieS0yLmMNCj4gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0 c3VpdGUvZ2NjLmRnL2ZsZXgtYXJyYXktY291bnRlZC1ieS0zLmMNCj4gDQo+IGRpZmYgLS1naXQg YS9nY2MvdGVzdHN1aXRlL2djYy5kZy9mbGV4LWFycmF5LWNvdW50ZWQtYnktMi5jIGIvZ2NjL3Rl c3RzdWl0ZS9nY2MuZGcvZmxleC1hcnJheS1jb3VudGVkLWJ5LTIuYw0KPiBuZXcgZmlsZSBtb2Rl IDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMDAuLmVjNTgwYzFmMWYwMQ0KPiAtLS0gL2Rldi9u dWxsDQo+ICsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2ZsZXgtYXJyYXktY291bnRlZC1ieS0y LmMNCj4gQEAgLTAsMCArMSw3NCBAQA0KPiArLyogdGVzdCB0aGUgYXR0cmlidXRlIGNvdW50ZWRf YnkgYW5kIGl0cyB1c2FnZSBpbg0KPiArICogX19idWlsdGluX2R5bmFtaWNfb2JqZWN0X3NpemUu ICAqLyANCj4gKy8qIHsgZGctZG8gcnVuIH0gKi8NCj4gKy8qIHsgZGctb3B0aW9ucyAiLU8yIiB9 ICovDQo+ICsNCj4gKyNpbmNsdWRlICJidWlsdGluLW9iamVjdC1zaXplLWNvbW1vbi5oIg0KPiAr DQo+ICsjZGVmaW5lIGV4cGVjdChwLCBfdikgZG8geyBcDQo+ICsgICAgc2l6ZV90IHYgPSBfdjsg XA0KPiArICAgIGlmIChwID09IHYpIFwNCj4gKwlfX2J1aWx0aW5fcHJpbnRmICgib2s6ICAlcyA9 PSAlemRcbiIsICNwLCBwKTsgXA0KPiArICAgIGVsc2UgXA0KPiArCXsgIFwNCj4gKwkgIF9fYnVp bHRpbl9wcmludGYgKCJXQVQ6ICVzID09ICV6ZCAoZXhwZWN0ZWQgJXpkKVxuIiwgI3AsIHAsIHYp OyBcDQo+ICsJICBGQUlMICgpOyBcDQo+ICsJfSBcDQo+ICt9IHdoaWxlICgwKTsNCj4gKw0KPiAr c3RydWN0IGZsZXggew0KPiArICBpbnQgYjsNCj4gKyAgaW50IGNbXTsNCj4gK30gKmFycmF5X2Zs ZXg7DQo+ICsNCj4gK3N0cnVjdCBhbm5vdGF0ZWQgew0KPiArICBpbnQgYjsNCj4gKyAgaW50IGNb XSBfX2F0dHJpYnV0ZV9fICgoY291bnRlZF9ieSAoYikpKTsNCj4gK30gKmFycmF5X2Fubm90YXRl ZDsNCj4gKw0KPiArc3RydWN0IG5lc3RlZF9hbm5vdGF0ZWQgew0KPiArICBzdHJ1Y3Qgew0KPiAr ICAgIHVuaW9uIHsNCj4gKyAgICAgIGludCBiOw0KPiArICAgICAgZmxvYXQgZjsJDQo+ICsgICAg fTsNCj4gKyAgICBpbnQgbjsNCj4gKyAgfTsNCj4gKyAgaW50IGNbXSBfX2F0dHJpYnV0ZV9fICgo Y291bnRlZF9ieSAoYikpKTsNCj4gK30gKmFycmF5X25lc3RlZF9hbm5vdGF0ZWQ7DQo+ICsNCj4g K3ZvaWQgX19hdHRyaWJ1dGVfXygoX19ub2lubGluZV9fKSkgc2V0dXAgKGludCBub3JtYWxfY291 bnQsIGludCBhdHRyX2NvdW50KQ0KPiArew0KPiArICBhcnJheV9mbGV4DQo+ICsgICAgPSAoc3Ry dWN0IGZsZXggKiltYWxsb2MgKHNpemVvZiAoc3RydWN0IGZsZXgpDQo+ICsJCQkgICAgICsgbm9y bWFsX2NvdW50ICogIHNpemVvZiAoaW50KSk7DQo+ICsgIGFycmF5X2ZsZXgtPmIgPSBub3JtYWxf Y291bnQ7DQo+ICsNCj4gKyAgYXJyYXlfYW5ub3RhdGVkDQo+ICsgICAgPSAoc3RydWN0IGFubm90 YXRlZCAqKW1hbGxvYyAoc2l6ZW9mIChzdHJ1Y3QgYW5ub3RhdGVkKQ0KPiArCQkJCSAgKyBhdHRy X2NvdW50ICogIHNpemVvZiAoaW50KSk7DQo+ICsgIGFycmF5X2Fubm90YXRlZC0+YiA9IGF0dHJf Y291bnQ7DQo+ICsNCj4gKyAgYXJyYXlfbmVzdGVkX2Fubm90YXRlZA0KPiArICAgID0gKHN0cnVj dCBuZXN0ZWRfYW5ub3RhdGVkICopbWFsbG9jIChzaXplb2YgKHN0cnVjdCBuZXN0ZWRfYW5ub3Rh dGVkKQ0KPiArCQkJCQkgKyBhdHRyX2NvdW50ICogIHNpemVvZiAoaW50KSk7DQo+ICsgIGFycmF5 X25lc3RlZF9hbm5vdGF0ZWQtPmIgPSBhdHRyX2NvdW50Ow0KPiArDQo+ICsgIHJldHVybjsNCj4g K30NCj4gKw0KPiArdm9pZCBfX2F0dHJpYnV0ZV9fKChfX25vaW5saW5lX18pKSB0ZXN0ICgpDQo+ ICt7DQo+ICsgICAgZXhwZWN0KF9fYnVpbHRpbl9keW5hbWljX29iamVjdF9zaXplKGFycmF5X2Zs ZXgtPmMsIDEpLCAtMSk7DQo+ICsgICAgZXhwZWN0KF9fYnVpbHRpbl9keW5hbWljX29iamVjdF9z aXplKGFycmF5X2Fubm90YXRlZC0+YywgMSksDQo+ICsJICAgYXJyYXlfYW5ub3RhdGVkLT5iICog c2l6ZW9mIChpbnQpKTsNCj4gKyAgICBleHBlY3QoX19idWlsdGluX2R5bmFtaWNfb2JqZWN0X3Np emUoYXJyYXlfbmVzdGVkX2Fubm90YXRlZC0+YywgMSksDQo+ICsJICAgYXJyYXlfbmVzdGVkX2Fu bm90YXRlZC0+YiAqIHNpemVvZiAoaW50KSk7DQo+ICt9DQo+ICsNCj4gK2ludCBtYWluKGludCBh cmdjLCBjaGFyICphcmd2W10pDQo+ICt7DQo+ICsgIHNldHVwICgxMCwxMCk7ICAgDQo+ICsgIHRl c3QgKCk7DQo+ICsgIERPTkUgKCk7DQo+ICt9DQo+IGRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRl L2djYy5kZy9mbGV4LWFycmF5LWNvdW50ZWQtYnktMy5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcv ZmxleC1hcnJheS1jb3VudGVkLWJ5LTMuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRl eCAwMDAwMDAwMDAwMDAuLmEwYzNjYjg4ZWM3MQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL2dj Yy90ZXN0c3VpdGUvZ2NjLmRnL2ZsZXgtYXJyYXktY291bnRlZC1ieS0zLmMNCj4gQEAgLTAsMCAr MSwyMTAgQEANCj4gKy8qIHRlc3QgdGhlIGF0dHJpYnV0ZSBjb3VudGVkX2J5IGFuZCBpdHMgdXNh Z2UgaW4NCj4gK19fYnVpbHRpbl9keW5hbWljX29iamVjdF9zaXplOiB3aGF0J3MgdGhlIGNvcnJl Y3QgYmVoYXZpb3Igd2hlbiB0aGUNCj4gK2FsbG9jYXRpb24gc2l6ZSBtaXNtYXRjaGVkIHdpdGgg dGhlIHZhbHVlIG9mIGNvdW50ZWRfYnkgYXR0cmlidXRlPyAgKi8NCj4gKy8qIHsgZGctZG8gcnVu IH0gKi8NCj4gKy8qIHsgZGctb3B0aW9ucyAiLU8gLWZzdHJpY3QtZmxleC1hcnJheXM9MyIgfSAq Lw0KPiArDQo+ICsjaW5jbHVkZSAiYnVpbHRpbi1vYmplY3Qtc2l6ZS1jb21tb24uaCINCj4gKw0K PiArc3RydWN0IGFubm90YXRlZCB7DQo+ICsgIHNpemVfdCBmb287DQo+ICsgIGNoYXIgb3RoZXJz Ow0KPiArICBjaGFyIGFycmF5W10gX19hdHRyaWJ1dGVfXygoY291bnRlZF9ieSAoZm9vKSkpOw0K PiArfTsNCj4gKw0KPiArI2RlZmluZSBleHBlY3QocCwgX3YpIGRvIHsgXA0KPiArICAgIHNpemVf dCB2ID0gX3Y7IFwNCj4gKyAgICBpZiAocCA9PSB2KSBcDQo+ICsgICAgICAgIF9fYnVpbHRpbl9w cmludGYgKCJvazogICVzID09ICV6ZFxuIiwgI3AsIHApOyBcDQo+ICsgICAgZWxzZSBcDQo+ICsg ICAgICAgIHsgIFwNCj4gKyAgICAgICAgICBfX2J1aWx0aW5fcHJpbnRmICgiV0FUOiAlcyA9PSAl emQgKGV4cGVjdGVkICV6ZClcbiIsICNwLCBwLCB2KTsgXA0KPiArCSAgRkFJTCAoKTsgXA0KPiAr ICAgICAgICB9IFwNCj4gK30gd2hpbGUgKDApOw0KPiArDQo+ICsjZGVmaW5lIG5vaW5saW5lIF9f YXR0cmlidXRlX18oKF9fbm9pbmxpbmVfXykpDQo+ICsjZGVmaW5lIFNJWkVfQlVNUCAxMCANCj4g KyNkZWZpbmUgTUFYKGEsIGIpICgoYSkgPiAoYikgPyAoYSkgOiAoYikpDQo+ICsjZGVmaW5lIE1J TihhLCBiKSAoKGEpIDwgKGIpID8gKGEpIDogKGIpKQ0KPiArDQo+ICsvKiBJbiBnZW5lcmFsLCBE dWUgdG8gdHlwZSBjYXN0aW5nLCB0aGUgdHlwZSBmb3IgdGhlIHBvaW50ZWUgb2YgYSBwb2ludGVy DQo+ICsgICBkb2VzIG5vdCBzYXkgYW55dGhpbmcgYWJvdXQgdGhlIG9iamVjdCBpdCBwb2ludHMg dG8sDQo+ICsgICBTbywgX19idWlsdGluX29iamVjdF9zaXplIGNhbiBub3QgZGlyZWN0bHkgdXNl IHRoZSB0eXBlIG9mIHRoZSBwb2ludGVlDQo+ICsgICB0byBkZWNpZGUgdGhlIHNpemUgb2YgdGhl IG9iamVjdCB0aGUgcG9pbnRlciBwb2ludHMgdG8uDQo+ICsNCj4gKyAgIHRoZXJlIGFyZSBvbmx5 IHR3byByZWxpYWJsZSB3YXlzOg0KPiArICAgQS4gb2JzZXJ2ZWQgYWxsb2NhdGlvbnMgIChjYWxs IHRvIHRoZSBhbGxvY2F0aW9uIGZ1bmN0aW9ucyBpbiB0aGUgcm91dGluZSkNCj4gKyAgIEIuIG9i c2VydmVkIGFjY2Vzc2VzICAgICAocmVhZCBvciB3cml0ZSBhY2Nlc3MgdG8gdGhlIGxvY2F0aW9u IG9mIHRoZQ0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2ludGVyIHBvaW50cyB0 bykNCj4gKw0KPiArICAgdGhhdCBwcm92aWRlIGluZm9ybWF0aW9uIGFib3V0IHRoZSB0eXBlL2V4 aXN0ZW5jZSBvZiBhbiBvYmplY3QgYXQNCj4gKyAgIHRoZSBjb3JyZXNwb25kaW5nIGFkZHJlc3Mu DQo+ICsNCj4gKyAgIGZvciBBLCB3ZSB1c2UgdGhlICJhbGxvY19zaXplIiBhdHRyaWJ1dGUgZm9y IHRoZSBjb3JyZXNwb25kaW5nIGFsbG9jYXRpb24NCj4gKyAgIGZ1bmN0aW9ucyB0byBkZXRlcm1p bmUgdGhlIG9iamVjdCBzaXplOw0KPiArDQo+ICsgICBGb3IgQiwgd2UgdXNlIHRoZSBTSVpFIGlu Zm8gb2YgdGhlIFRZUEUgYXR0YWNoZWQgdG8gdGhlIGNvcnJlc3BvbmRpbmcgYWNjZXNzLg0KPiAr ICAgKFdlIHRyZWF0IGNvdW50ZWRfYnkgYXR0cmlidXRlIGFzIGEgY29tcGxlbWVudCB0byB0aGUg U0laRSBpbmZvIG9mIHRoZSBUWVBFDQo+ICsgICAgZm9yIEZNQSkNCj4gKw0KPiArICAgVGhlIG9u bHkgb3RoZXIgd2F5IGluIEMgd2hpY2ggZW5zdXJlcyB0aGF0IGEgcG9pbnRlciBhY3R1YWxseSBw b2ludHMNCj4gKyAgIHRvIGFuIG9iamVjdCBvZiB0aGUgY29ycmVjdCB0eXBlIGlzICdzdGF0aWMn Og0KPiArDQo+ICsgICB2b2lkIGZvbyhzdHJ1Y3QgUCAqcFtzdGF0aWMgMV0pOw0KPiArDQo+ICsg ICBTZWUgaHR0cHM6Ly9nY2MuZ251Lm9yZy9waXBlcm1haWwvZ2NjLXBhdGNoZXMvMjAyMy1KdWx5 LzYyNDgxNC5odG1sDQo+ICsgICBmb3IgbW9yZSBkZXRhaWxzLiAgKi8NCj4gKw0KPiArLyogaW4g dGhlIGZvbGxvd2luZyBmdW5jdGlvbiwgbWFsbG9jIGFsbG9jYXRlZCBtb3JlIHNwYWNlIHRoYW4g dGhlIHZhbHVlDQo+ICsgICBvZiBjb3VudGVkX2J5IGF0dHJpYnV0ZS4gIFRoZW4gd2hhdCdzIHRo ZSBjb3JyZWN0IGJlaGF2aW9yIHdlIGV4cGVjdA0KPiArICAgdGhlIF9fYnVpbHRpbl9keW5hbWlj X29iamVjdF9zaXplIHNob3VsZCBoYXZlIGZvciBlYWNoIG9mIHRoZSBjYXNlcz8gICovDQo+ICsN Cj4gK3N0YXRpYyBzdHJ1Y3QgYW5ub3RhdGVkICogbm9pbmxpbmUgYWxsb2NfYnVmX21vcmUgKHNp emVfdCBpbmRleCkNCj4gK3sNCj4gKyAgc3RydWN0IGFubm90YXRlZCAqcDsNCj4gKyAgc2l6ZV90 IGFsbG9jYXRlZF9zaXplDQo+ICsgICAgPSBNQVggKHNpemVvZiAoc3RydWN0IGFubm90YXRlZCks DQo+ICsJICAgKF9fYnVpbHRpbl9vZmZzZXRvZiAoc3RydWN0IGFubm90YXRlZCwgYXJyYXlbMF0p DQo+ICsJICAgICsgKGluZGV4ICsgU0laRV9CVU1QKSAqIHNpemVvZiAoY2hhcikpKTsNCj4gKyAg cCA9IChzdHJ1Y3QgYW5ub3RhdGVkICopIG1hbGxvYyAoYWxsb2NhdGVkX3NpemUpOw0KPiArDQo+ ICsgIHAtPmZvbyA9IGluZGV4Ow0KPiArDQo+ICsgIC8qd2hlbiBjaGVja2luZyB0aGUgb2JzZXJ2 ZWQgYWNjZXNzIHAtPmFycmF5LCB3ZSBoYXZlIGluZm8gb24gYm90aA0KPiArICAgIG9ic2VydmVy ZWQgYWxsb2NhdGlvbiBhbmQgb2JzZXJ2ZWQgYWNjZXNzLA0KPiArICAgIEEuIGZyb20gb2JzZXJ2 ZWQgYWxsb2NhdGlvbjogDQo+ICsgICAgCWFsbG9jYXRlZF9zaXplIC0gb2Zmc2V0b2YgKHN0cnVj dCBhbm5vdGF0ZWQsIGFycmF5WzBdKQ0KPiArICAgIEIuIGZyb20gb2JzZXJ2ZWQgYWNjZXNzOiBw LT5mb28gKiBzaXplb2YgKGNoYXIpDQo+ICsgICAqLw0KPiArDQo+ICsgIC8qIGZvciBzaXplIGlu IHRoZSB3aG9sZSBvYmplY3Q6IGFsd2F5cyB1c2VzIEEuICAqLw0KPiArICAvKiBmb3Igc2l6ZSBp biB0aGUgc3ViLW9iamVjdDogY2hvc2UgdGhlIHNtYWxsZXIgb2YgQSBhbmQgQi4NCj4gKyAgICog UGxlYXNlIHNlZSBodHRwczovL2djYy5nbnUub3JnL3BpcGVybWFpbC9nY2MtcGF0Y2hlcy8yMDIz LUp1bHkvNjI1ODkxLmh0bWwNCj4gKyAgICogZm9yIGRldGFpbHMgb24gd2h5LiAgKi8NCj4gKw0K PiArICAvKiBmb3IgTUFYSU1VTSBzaXplIGluIHRoZSB3aG9sZSBvYmplY3Q6IHVzZSB0aGUgYWxs b2NhdGlvbiBzaXplDQo+ICsgICAgIGZvciB0aGUgd2hvbGUgb2JqZWN0LiAgKi8NCj4gKyAgZXhw ZWN0KF9fYnVpbHRpbl9keW5hbWljX29iamVjdF9zaXplKHAtPmFycmF5LCAwKSwNCj4gKwkgYWxs b2NhdGVkX3NpemUgLSBfX2J1aWx0aW5fb2Zmc2V0b2YgKHN0cnVjdCBhbm5vdGF0ZWQsIGFycmF5 WzBdKSk7DQo+ICsNCj4gKyAgLyogZm9yIE1BWElNVU0gc2l6ZSBpbiB0aGUgc3ViLW9iamVjdC4g dXNlIHRoZSBzbWFsbGVyIG9mIEEgYW5kIEIuICAqLw0KPiArICBleHBlY3QoX19idWlsdGluX2R5 bmFtaWNfb2JqZWN0X3NpemUocC0+YXJyYXksIDEpLA0KPiArCSBNSU4gKGFsbG9jYXRlZF9zaXpl IC0gX19idWlsdGluX29mZnNldG9mIChzdHJ1Y3QgYW5ub3RhdGVkLCBhcnJheVswXSksDQo+ICsJ ICAgICAgKHAtPmZvbykgKiBzaXplb2YoY2hhcikpKTsNCj4gKw0KPiArICAvKiBmb3IgTUlOSU1V TSBzaXplIGluIHRoZSB3aG9sZSBvYmplY3Q6IHVzZSB0aGUgYWxsb2NhdGlvbiBzaXplDQo+ICsg ICAgIGZvciB0aGUgd2hvbGUgb2JqZWN0LiAgKi8NCj4gKyAgZXhwZWN0KF9fYnVpbHRpbl9keW5h bWljX29iamVjdF9zaXplKHAtPmFycmF5LCAyKSwNCj4gKwkgYWxsb2NhdGVkX3NpemUgLSBfX2J1 aWx0aW5fb2Zmc2V0b2YgKHN0cnVjdCBhbm5vdGF0ZWQsIGFycmF5WzBdKSk7DQo+ICsNCj4gKyAg LyogZm9yIE1JTklNVU0gc2l6ZSBpbiB0aGUgc3ViLW9iamVjdDogdXNlIHRoZSBzbWFsbGVyIG9m IEEgYW5kIEIuICAqLw0KPiArICBleHBlY3QoX19idWlsdGluX2R5bmFtaWNfb2JqZWN0X3NpemUo cC0+YXJyYXksIDMpLA0KPiArCSBNSU4gKGFsbG9jYXRlZF9zaXplIC0gX19idWlsdGluX29mZnNl dG9mIChzdHJ1Y3QgYW5ub3RhdGVkLCBhcnJheVswXSksDQo+ICsJICAgICAgKHAtPmZvbykgKiBz aXplb2YoY2hhcikpKTsNCj4gKw0KPiArICAvKndoZW4gY2hlY2tpbmcgdGhlIHBvaW50ZXIgcCwg d2Ugb25seSBoYXZlIGluZm8gb24gdGhlIG9ic2VydmVkIGFsbG9jYXRpb24uDQo+ICsgICAgU28s IHRoZSBvYmplY3Qgc2l6ZSBpbmZvIGNhbiBvbmx5IGJlZW4gb2J0YWluZWQgZnJvbSB0aGUgY2Fs bCB0byBtYWxsb2MuDQo+ICsgICAgZm9yIGJvdGggTUFYSU1VTSBhbmQgTUlOSU1VTTogQSA9IChp bmRleCArIFNJWkVfQlVNUCkgKiBzaXplb2YgKGNoYXIpICAqLw0KPiArICBleHBlY3QoX19idWls dGluX2R5bmFtaWNfb2JqZWN0X3NpemUocCwgMCksIGFsbG9jYXRlZF9zaXplKTsNCj4gKyAgZXhw ZWN0KF9fYnVpbHRpbl9keW5hbWljX29iamVjdF9zaXplKHAsIDEpLCBhbGxvY2F0ZWRfc2l6ZSk7 DQo+ICsgIGV4cGVjdChfX2J1aWx0aW5fZHluYW1pY19vYmplY3Rfc2l6ZShwLCAyKSwgYWxsb2Nh dGVkX3NpemUpOw0KPiArICBleHBlY3QoX19idWlsdGluX2R5bmFtaWNfb2JqZWN0X3NpemUocCwg MyksIGFsbG9jYXRlZF9zaXplKTsNCj4gKyAgcmV0dXJuIHA7DQo+ICt9DQo+ICsNCj4gKy8qIGlu IHRoZSBmb2xsb3dpbmcgZnVuY3Rpb24sIG1hbGxvYyBhbGxvY2F0ZWQgbGVzcyBzcGFjZSB0aGFu IHRoZSB2YWx1ZQ0KPiArICAgb2YgY291bnRlZF9ieSBhdHRyaWJ1dGUuICBUaGVuIHdoYXQncyB0 aGUgY29ycmVjdCBiZWhhdmlvciB3ZSBleHBlY3QNCj4gKyAgIHRoZSBfX2J1aWx0aW5fZHluYW1p Y19vYmplY3Rfc2l6ZSBzaG91bGQgaGF2ZSBmb3IgZWFjaCBvZiB0aGUgY2FzZXM/DQo+ICsgICBO T1RFOiB0aGlzIGlzIGFuIHVzZXIgZXJyb3IsIEdDQyBzaG91bGQgaXNzdWUgd2FybmluZ3MgZm9y IHN1Y2ggY2FzZS4NCj4gKyAgIHRoaXMgaXMgYSBzZXBlcmF0ZSBpc3N1ZSB3ZSBzaG91bGQgYWRk cmVzcyBsYXRlci4gICovDQo+ICsNCj4gK3N0YXRpYyBzdHJ1Y3QgYW5ub3RhdGVkICogbm9pbmxp bmUgYWxsb2NfYnVmX2xlc3MgKHNpemVfdCBpbmRleCkNCj4gK3sNCj4gKyAgc3RydWN0IGFubm90 YXRlZCAqcDsNCj4gKyAgc2l6ZV90IGFsbG9jYXRlZF9zaXplDQo+ICsgICAgPSBNQVggKHNpemVv ZiAoc3RydWN0IGFubm90YXRlZCksDQo+ICsJICAgKF9fYnVpbHRpbl9vZmZzZXRvZiAoc3RydWN0 IGFubm90YXRlZCwgYXJyYXlbMF0pDQo+ICsJICAgICsgKGluZGV4KSAqIHNpemVvZiAoY2hhcikp KTsNCj4gKyAgcCA9IChzdHJ1Y3QgYW5ub3RhdGVkICopIG1hbGxvYyAoYWxsb2NhdGVkX3NpemUp Ow0KPiArDQo+ICsgIHAtPmZvbyA9IGluZGV4ICsgU0laRV9CVU1QOw0KPiArDQo+ICsgIC8qd2hl biBjaGVja2luZyB0aGUgb2JzZXJ2ZWQgYWNjZXNzIHAtPmFycmF5LCB3ZSBoYXZlIGluZm8gb24g Ym90aA0KPiArICAgIG9ic2VydmVyZWQgYWxsb2NhdGlvbiBhbmQgb2JzZXJ2ZWQgYWNjZXNzLA0K PiArICAgIEEuIGZyb20gb2JzZXJ2ZWQgYWxsb2NhdGlvbjoNCj4gKyAgICAJYWxsb2NhdGVkX3Np emUgLSBvZmZzZXRvZiAoc3RydWN0IGFubm90YXRlZCwgYXJyYXlbMF0pDQo+ICsgICAgQi4gZnJv bSBvYnNlcnZlZCBhY2Nlc3M6IHAtPmZvbyAqIHNpemVvZiAoY2hhcikNCj4gKyAgICovDQo+ICsN Cj4gKyAgLyogZm9yIHNpemUgaW4gdGhlIHdob2xlIG9iamVjdDogYWx3YXlzIHVzZXMgQS4gICov DQo+ICsgIC8qIGZvciBzaXplIGluIHRoZSBzdWItb2JqZWN0OiBjaG9zZSB0aGUgc21hbGxlciBv ZiBBIGFuZCBCLg0KPiArICAgKiBQbGVhc2Ugc2VlIGh0dHBzOi8vZ2NjLmdudS5vcmcvcGlwZXJt YWlsL2djYy1wYXRjaGVzLzIwMjMtSnVseS82MjU4OTEuaHRtbA0KPiArICAgKiBmb3IgZGV0YWls cyBvbiB3aHkuICAqLw0KPiArDQo+ICsgIC8qIGZvciBNQVhJTVVNIHNpemUgaW4gdGhlIHdob2xl IG9iamVjdDogdXNlIHRoZSBhbGxvY2F0aW9uIHNpemUNCj4gKyAgICAgZm9yIHRoZSB3aG9sZSBv YmplY3QuICAqLw0KPiArICBleHBlY3QoX19idWlsdGluX2R5bmFtaWNfb2JqZWN0X3NpemUocC0+ YXJyYXksIDApLA0KPiArCSBhbGxvY2F0ZWRfc2l6ZSAtIF9fYnVpbHRpbl9vZmZzZXRvZiAoc3Ry dWN0IGFubm90YXRlZCwgYXJyYXlbMF0pKTsNCj4gKw0KPiArICAvKiBmb3IgTUFYSU1VTSBzaXpl IGluIHRoZSBzdWItb2JqZWN0LiB1c2UgdGhlIHNtYWxsZXIgb2YgQSBhbmQgQi4gICovDQo+ICsg IGV4cGVjdChfX2J1aWx0aW5fZHluYW1pY19vYmplY3Rfc2l6ZShwLT5hcnJheSwgMSksDQo+ICsJ IE1JTiAoYWxsb2NhdGVkX3NpemUgLSBfX2J1aWx0aW5fb2Zmc2V0b2YgKHN0cnVjdCBhbm5vdGF0 ZWQsIGFycmF5WzBdKSwNCj4gKwkgICAgICAocC0+Zm9vKSAqIHNpemVvZihjaGFyKSkpOw0KPiAr DQo+ICsgIC8qIGZvciBNSU5JTVVNIHNpemUgaW4gdGhlIHdob2xlIG9iamVjdDogdXNlIHRoZSBh bGxvY2F0aW9uIHNpemUNCj4gKyAgICAgZm9yIHRoZSB3aG9sZSBvYmplY3QuICAqLw0KPiArICBl eHBlY3QoX19idWlsdGluX2R5bmFtaWNfb2JqZWN0X3NpemUocC0+YXJyYXksIDIpLA0KPiArCSBh bGxvY2F0ZWRfc2l6ZSAtIF9fYnVpbHRpbl9vZmZzZXRvZiAoc3RydWN0IGFubm90YXRlZCwgYXJy YXlbMF0pKTsNCj4gKw0KPiArICAvKiBmb3IgTUlOSU1VTSBzaXplIGluIHRoZSBzdWItb2JqZWN0 OiB1c2UgdGhlIHNtYWxsZXIgb2YgQSBhbmQgQi4gICovDQo+ICsgIGV4cGVjdChfX2J1aWx0aW5f ZHluYW1pY19vYmplY3Rfc2l6ZShwLT5hcnJheSwgMyksDQo+ICsJIE1JTiAoYWxsb2NhdGVkX3Np emUgLSBfX2J1aWx0aW5fb2Zmc2V0b2YgKHN0cnVjdCBhbm5vdGF0ZWQsIGFycmF5WzBdKSwNCj4g KwkgICAgICAocC0+Zm9vKSAqIHNpemVvZihjaGFyKSkpOw0KPiArDQo+ICsgIC8qd2hlbiBjaGVj a2luZyB0aGUgcG9pbnRlciBwLCB3ZSBvbmx5IGhhdmUgaW5mbyBvbiB0aGUgb2JzZXJ2ZWQNCj4g KyAgICBhbGxvY2F0aW9uLiBTbywgdGhlIG9iamVjdCBzaXplIGluZm8gY2FuIG9ubHkgYmVlbiBv YnRhaW5lZCBmcm9tDQo+ICsgICAgdGhlIGNhbGwgdG8gbWFsbG9jLiAgKi8NCj4gKyAgZXhwZWN0 KF9fYnVpbHRpbl9keW5hbWljX29iamVjdF9zaXplKHAsIDApLCBhbGxvY2F0ZWRfc2l6ZSk7DQo+ ICsgIGV4cGVjdChfX2J1aWx0aW5fZHluYW1pY19vYmplY3Rfc2l6ZShwLCAxKSwgYWxsb2NhdGVk X3NpemUpOw0KPiArICBleHBlY3QoX19idWlsdGluX2R5bmFtaWNfb2JqZWN0X3NpemUocCwgMiks IGFsbG9jYXRlZF9zaXplKTsNCj4gKyAgZXhwZWN0KF9fYnVpbHRpbl9keW5hbWljX29iamVjdF9z aXplKHAsIDMpLCBhbGxvY2F0ZWRfc2l6ZSk7DQo+ICsgIHJldHVybiBwOw0KPiArfQ0KPiArDQo+ ICtpbnQgbWFpbiAoKQ0KPiArew0KPiArICBzdHJ1Y3QgYW5ub3RhdGVkICpwLCAqcTsNCj4gKyAg cCA9IGFsbG9jX2J1Zl9tb3JlICgxMCk7DQo+ICsgIHEgPSBhbGxvY19idWZfbGVzcyAoMTApOw0K PiArDQo+ICsgIC8qd2hlbiBjaGVja2luZyB0aGUgb2JzZXJ2ZWQgYWNjZXNzIHAtPmFycmF5LCB3 ZSBvbmx5IGhhdmUgaW5mbyBvbiB0aGUNCj4gKyAgICBvYnNlcnZlZCBhY2Nlc3MsIGkuZSwgdGhl IFRZUEVfU0laRSBpbmZvIGZyb20gdGhlIGFjY2Vzcy4gV2UgZG9uJ3QgaGF2ZQ0KPiArICAgIGlu Zm8gb24gdGhlIHdob2xlIG9iamVjdC4gICovDQo+ICsgIGV4cGVjdChfX2J1aWx0aW5fZHluYW1p Y19vYmplY3Rfc2l6ZShwLT5hcnJheSwgMCksIC0xKTsNCj4gKyAgZXhwZWN0KF9fYnVpbHRpbl9k eW5hbWljX29iamVjdF9zaXplKHAtPmFycmF5LCAxKSwgcC0+Zm9vICogc2l6ZW9mKGNoYXIpKTsN Cj4gKyAgZXhwZWN0KF9fYnVpbHRpbl9keW5hbWljX29iamVjdF9zaXplKHAtPmFycmF5LCAyKSwg MCk7DQo+ICsgIGV4cGVjdChfX2J1aWx0aW5fZHluYW1pY19vYmplY3Rfc2l6ZShwLT5hcnJheSwg MyksIHAtPmZvbyAqIHNpemVvZihjaGFyKSk7DQo+ICsgIC8qd2hlbiBjaGVja2luZyB0aGUgcG9p bnRlciBwLCB3ZSBoYXZlIG5vIG9ic2VydmVkIGFsbG9jYXRpb24gbm9yIG9ic2VydmVkDQo+ICsg ICAgYWNjZXNzLCB0aGVyZWZvcmUsIHdlIGNhbm5vdCBkZXRlcm1pbmUgdGhlIHNpemUgaW5mbyBo ZXJlLiAgKi8NCj4gKyAgZXhwZWN0KF9fYnVpbHRpbl9keW5hbWljX29iamVjdF9zaXplKHAsIDAp LCAtMSk7DQo+ICsgIGV4cGVjdChfX2J1aWx0aW5fZHluYW1pY19vYmplY3Rfc2l6ZShwLCAxKSwg LTEpOw0KPiArICBleHBlY3QoX19idWlsdGluX2R5bmFtaWNfb2JqZWN0X3NpemUocCwgMiksIDAp Ow0KPiArICBleHBlY3QoX19idWlsdGluX2R5bmFtaWNfb2JqZWN0X3NpemUocCwgMyksIDApOw0K PiArDQo+ICsgIC8qd2hlbiBjaGVja2luZyB0aGUgb2JzZXJ2ZWQgYWNjZXNzIHAtPmFycmF5LCB3 ZSBvbmx5IGhhdmUgaW5mbyBvbiB0aGUNCj4gKyAgICBvYnNlcnZlZCBhY2Nlc3MsIGkuZSwgdGhl IFRZUEVfU0laRSBpbmZvIGZyb20gdGhlIGFjY2Vzcy4gV2UgZG9uJ3QgaGF2ZQ0KPiArICAgIGlu Zm8gb24gdGhlIHdob2xlIG9iamVjdC4gICovDQo+ICsgIGV4cGVjdChfX2J1aWx0aW5fZHluYW1p Y19vYmplY3Rfc2l6ZShxLT5hcnJheSwgMCksIC0xKTsNCj4gKyAgZXhwZWN0KF9fYnVpbHRpbl9k eW5hbWljX29iamVjdF9zaXplKHEtPmFycmF5LCAxKSwgcS0+Zm9vICogc2l6ZW9mKGNoYXIpKTsN Cj4gKyAgZXhwZWN0KF9fYnVpbHRpbl9keW5hbWljX29iamVjdF9zaXplKHEtPmFycmF5LCAyKSwg MCk7DQo+ICsgIGV4cGVjdChfX2J1aWx0aW5fZHluYW1pY19vYmplY3Rfc2l6ZShxLT5hcnJheSwg MyksIHEtPmZvbyAqIHNpemVvZihjaGFyKSk7DQo+ICsgIC8qd2hlbiBjaGVja2luZyB0aGUgcG9p bnRlciBwLCB3ZSBoYXZlIG5vIG9ic2VydmVkIGFsbG9jYXRpb24gbm9yIG9ic2VydmVkDQo+ICsg ICAgYWNjZXNzLCB0aGVyZWZvcmUsIHdlIGNhbm5vdCBkZXRlcm1pbmUgdGhlIHNpemUgaW5mbyBo ZXJlLiAgKi8NCj4gKyAgZXhwZWN0KF9fYnVpbHRpbl9keW5hbWljX29iamVjdF9zaXplKHEsIDAp LCAtMSk7DQo+ICsgIGV4cGVjdChfX2J1aWx0aW5fZHluYW1pY19vYmplY3Rfc2l6ZShxLCAxKSwg LTEpOw0KPiArICBleHBlY3QoX19idWlsdGluX2R5bmFtaWNfb2JqZWN0X3NpemUocSwgMiksIDAp Ow0KPiArICBleHBlY3QoX19idWlsdGluX2R5bmFtaWNfb2JqZWN0X3NpemUocSwgMyksIDApOw0K PiArDQo+ICsgIERPTkUgKCk7DQo+ICt9DQo+IGRpZmYgLS1naXQgYS9nY2MvdHJlZS1vYmplY3Qt c2l6ZS5jYyBiL2djYy90cmVlLW9iamVjdC1zaXplLmNjDQo+IGluZGV4IGE2MmFmMDUwMDU2My4u Y2Y3ODQzYzU2ODRiIDEwMDY0NA0KPiAtLS0gYS9nY2MvdHJlZS1vYmplY3Qtc2l6ZS5jYw0KPiAr KysgYi9nY2MvdHJlZS1vYmplY3Qtc2l6ZS5jYw0KPiBAQCAtNTg1LDYgKzU4NSw3IEBAIGFkZHJf b2JqZWN0X3NpemUgKHN0cnVjdCBvYmplY3Rfc2l6ZV9pbmZvICpvc2ksIGNvbnN0X3RyZWUgcHRy LA0KPiAgIGlmIChwdF92YXIgIT0gVFJFRV9PUEVSQU5EIChwdHIsIDApKQ0KPiAgICAgew0KPiAg ICAgICB0cmVlIHZhcjsNCj4gKyAgICAgIHRyZWUgY291bnRlZF9ieV9yZWYgPSBOVUxMX1RSRUU7 DQo+IA0KPiAgICAgICBpZiAob2JqZWN0X3NpemVfdHlwZSAmIE9TVF9TVUJPQkpFQ1QpDQo+IAl7 DQo+IEBAIC02MDAsMTEgKzYwMSwxMiBAQCBhZGRyX29iamVjdF9zaXplIChzdHJ1Y3Qgb2JqZWN0 X3NpemVfaW5mbyAqb3NpLCBjb25zdF90cmVlIHB0ciwNCj4gCSAgICB2YXIgPSBUUkVFX09QRVJB TkQgKHZhciwgMCk7DQo+IAkgIGlmICh2YXIgIT0gcHRfdmFyICYmIFRSRUVfQ09ERSAodmFyKSA9 PSBBUlJBWV9SRUYpDQo+IAkgICAgdmFyID0gVFJFRV9PUEVSQU5EICh2YXIsIDApOw0KPiAtCSAg aWYgKCEgVFlQRV9TSVpFX1VOSVQgKFRSRUVfVFlQRSAodmFyKSkNCj4gKwkgIGlmICghIGNvbXBv bmVudF9yZWZfaGFzX2NvdW50ZWRfYnlfcCAodmFyKQ0KPiArCSAgICAgJiYgKCghIFRZUEVfU0la RV9VTklUIChUUkVFX1RZUEUgKHZhcikpDQo+IAkgICAgICB8fCAhIHRyZWVfZml0c191aHdpX3Ag KFRZUEVfU0laRV9VTklUIChUUkVFX1RZUEUgKHZhcikpKQ0KPiAJICAgICAgfHwgKHB0X3Zhcl9z aXplICYmIFRSRUVfQ09ERSAocHRfdmFyX3NpemUpID09IElOVEVHRVJfQ1NUDQo+IAkJICAmJiB0 cmVlX2ludF9jc3RfbHQgKHB0X3Zhcl9zaXplLA0KPiAtCQkJCSAgICAgIFRZUEVfU0laRV9VTklU IChUUkVFX1RZUEUgKHZhcikpKSkpDQo+ICsJCQkJICAgICAgVFlQRV9TSVpFX1VOSVQgKFRSRUVf VFlQRSAodmFyKSkpKSkpKQ0KPiAJICAgIHZhciA9IHB0X3ZhcjsNCj4gCSAgZWxzZSBpZiAodmFy ICE9IHB0X3ZhciAmJiBUUkVFX0NPREUgKHB0X3ZhcikgPT0gTUVNX1JFRikNCj4gCSAgICB7DQo+ IEBAIC02MTIsNiArNjE0LDcgQEAgYWRkcl9vYmplY3Rfc2l6ZSAoc3RydWN0IG9iamVjdF9zaXpl X2luZm8gKm9zaSwgY29uc3RfdHJlZSBwdHIsDQo+IAkgICAgICAvKiBGb3IgJlgtPmZsZCwgY29t cHV0ZSBvYmplY3Qgc2l6ZSBpZiBmbGQgaXNuJ3QgYSBmbGV4aWJsZSBhcnJheQ0KPiAJCSBtZW1i ZXIuICAqLw0KPiAJICAgICAgYm9vbCBpc19mbGV4aWJsZV9hcnJheV9tZW1fcmVmID0gZmFsc2U7 DQo+ICsNCj4gCSAgICAgIHdoaWxlICh2ICYmIHYgIT0gcHRfdmFyKQ0KPiAJCXN3aXRjaCAoVFJF RV9DT0RFICh2KSkNCj4gCQkgIHsNCj4gQEAgLTY2MCw2ICs2NjMsOCBAQCBhZGRyX29iamVjdF9z aXplIChzdHJ1Y3Qgb2JqZWN0X3NpemVfaW5mbyAqb3NpLCBjb25zdF90cmVlIHB0ciwNCj4gCQkg ICAgLyogTm93IHRoZSByZWYgaXMgdG8gYW4gYXJyYXkgdHlwZS4gICovDQo+IAkJICAgIGdjY19h c3NlcnQgKFRSRUVfQ09ERSAoVFJFRV9UWVBFICh2KSkgPT0gQVJSQVlfVFlQRSk7DQo+IAkJICAg IGlzX2ZsZXhpYmxlX2FycmF5X21lbV9yZWYgPSBhcnJheV9yZWZfZmxleGlibGVfc2l6ZV9wICh2 KTsNCj4gKwkJICAgIGNvdW50ZWRfYnlfcmVmID0gY29tcG9uZW50X3JlZl9nZXRfY291bnRlZF9i eSAodik7DQo+ICsNCj4gCQkgICAgd2hpbGUgKHYgIT0gcHRfdmFyICYmIFRSRUVfQ09ERSAodikg PT0gQ09NUE9ORU5UX1JFRikNCj4gCQkgICAgICBpZiAoVFJFRV9DT0RFIChUUkVFX1RZUEUgKFRS RUVfT1BFUkFORCAodiwgMCkpKQ0KPiAJCQkgICE9IFVOSU9OX1RZUEUNCj4gQEAgLTY3Myw4ICs2 NzgsMTEgQEAgYWRkcl9vYmplY3Rfc2l6ZSAoc3RydWN0IG9iamVjdF9zaXplX2luZm8gKm9zaSwg Y29uc3RfdHJlZSBwdHIsDQo+IAkJCSAgID09IFJFQ09SRF9UWVBFKQ0KPiAJCSAgICAgIHsNCj4g CQkJLyogY29tcHV0ZSBvYmplY3Qgc2l6ZSBvbmx5IGlmIHYgaXMgbm90IGENCj4gLQkJCSAgIGZs ZXhpYmxlIGFycmF5IG1lbWJlci4gICovDQo+IC0JCQlpZiAoIWlzX2ZsZXhpYmxlX2FycmF5X21l bV9yZWYpDQo+ICsJCQkgICBmbGV4aWJsZSBhcnJheSBtZW1iZXIgb3IgdGhlIGZsZXhpYmxlIGFy cmF5IG1lbWJlcg0KPiArCQkJICAgaGFzIGEga25vd24gZWxlbWVudCBjb3VudCBpbmRpY2F0ZWQg YnkgdGhlIHVzZXINCj4gKwkJCSAgIHRocm91Z2ggYXR0cmlidXRlIGNvdW50ZWRfYnkuICAqLw0K PiArCQkJaWYgKCFpc19mbGV4aWJsZV9hcnJheV9tZW1fcmVmDQo+ICsJCQkgICAgfHwgY291bnRl ZF9ieV9yZWYpDQo+IAkJCSAgew0KPiAJCQkgICAgdiA9IE5VTExfVFJFRTsNCj4gCQkJICAgIGJy ZWFrOw0KPiBAQCAtNzA3LDkgKzcxNSwyNCBAQCBhZGRyX29iamVjdF9zaXplIChzdHJ1Y3Qgb2Jq ZWN0X3NpemVfaW5mbyAqb3NpLCBjb25zdF90cmVlIHB0ciwNCj4gDQo+ICAgICAgIGlmICh2YXIg IT0gcHRfdmFyKQ0KPiAJew0KPiAtCSAgdmFyX3NpemUgPSBUWVBFX1NJWkVfVU5JVCAoVFJFRV9U WVBFICh2YXIpKTsNCj4gLQkgIGlmICghVFJFRV9DT05TVEFOVCAodmFyX3NpemUpKQ0KPiAtCSAg ICB2YXJfc2l6ZSA9IGdldF9vcl9jcmVhdGVfc3NhX2RlZmF1bHRfZGVmIChjZnVuLCB2YXJfc2l6 ZSk7DQo+ICsJICBpZiAoIWNvdW50ZWRfYnlfcmVmKQ0KPiArCSAgICB7DQo+ICsJICAgICAgdmFy X3NpemUgPSBUWVBFX1NJWkVfVU5JVCAoVFJFRV9UWVBFICh2YXIpKTsNCj4gKwkgICAgICBpZiAo IVRSRUVfQ09OU1RBTlQgKHZhcl9zaXplKSkNCj4gKwkJdmFyX3NpemUgPSBnZXRfb3JfY3JlYXRl X3NzYV9kZWZhdWx0X2RlZiAoY2Z1biwgdmFyX3NpemUpOw0KPiArCSAgICB9DQo+ICsJICBlbHNl DQo+ICsJICAgIHsNCj4gKwkgICAgICBnY2NfYXNzZXJ0IChUUkVFX0NPREUgKHZhcikgPT0gQ09N UE9ORU5UX1JFRg0KPiArCQkJICAmJiBUUkVFX0NPREUgKFRSRUVfVFlQRSAodmFyKSkgPT0gQVJS QVlfVFlQRSk7DQo+ICsJICAgICAgdHJlZSBlbGVtZW50X3NpemUgPSBUWVBFX1NJWkVfVU5JVCAo VFJFRV9UWVBFIChUUkVFX1RZUEUgKHZhcikpKTsNCj4gKwkgICAgICB2YXJfc2l6ZQ0KPiArCQk9 IHNpemVfYmlub3AgKE1VTFRfRVhQUiwNCj4gKwkJCSAgICAgIGZvbGRfY29udmVydCAoc2l6ZXR5 cGUsIGNvdW50ZWRfYnlfcmVmKSwNCj4gKwkJCSAgICAgIGZvbGRfY29udmVydCAoc2l6ZXR5cGUs IGVsZW1lbnRfc2l6ZSkpOw0KPiArCSAgICAgIGlmICghdG9kbykNCj4gKwkJdG9kbyA9IFRPRE9f dXBkYXRlX3NzYV9vbmx5X3ZpcnR1YWxzOw0KPiArCSAgICB9DQo+IAkgIGlmICghdmFyX3NpemUp DQo+IAkgICAgcmV0dXJuIGZhbHNlOw0KPiAJfQ0KPiBkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUuY2Mg Yi9nY2MvdHJlZS5jYw0KPiBpbmRleCBmY2QzNmFlMGNkNzQuLjNiNmRkY2JkY2JmOCAxMDA2NDQN Cj4gLS0tIGEvZ2NjL3RyZWUuY2MNCj4gKysrIGIvZ2NjL3RyZWUuY2MNCj4gQEAgLTEyNzQ1LDYg KzEyNzQ1LDMyIEBAIGFycmF5X3JlZl9lbGVtZW50X3NpemUgKHRyZWUgZXhwKQ0KPiAgICAgcmV0 dXJuIFNVQlNUSVRVVEVfUExBQ0VIT0xERVJfSU5fRVhQUiAoVFlQRV9TSVpFX1VOSVQgKGVsbXRf dHlwZSksIGV4cCk7DQo+IH0NCj4gDQo+ICsvKiAgRm9yIGEgY29tcG9uZW50X3JlZiB0aGF0IGhh cyBhbiBhcnJheSB0eXBlIEFSUkFZX1JFRiwgcmV0dXJuIFRSVUUgd2hlbg0KPiArICAgIGFuIGNv dW50ZWRfYnkgYXR0cmlidXRlIGF0dGFjaGVkIHRvIHRoZSBjb3JyZXNwb25kaW5nIEZJRUxEX0RF Q0wuDQo+ICsgICAgcmV0dXJuIEZBTFNFIG90aGVyd2lzZS4gICovDQo+ICtib29sDQo+ICtjb21w b25lbnRfcmVmX2hhc19jb3VudGVkX2J5X3AgKHRyZWUgYXJyYXlfcmVmKQ0KPiArew0KPiArICBp ZiAoVFJFRV9DT0RFIChhcnJheV9yZWYpICE9IENPTVBPTkVOVF9SRUYpDQo+ICsgICAgcmV0dXJu IGZhbHNlOw0KPiArDQo+ICsgIGlmIChUUkVFX0NPREUgKFRSRUVfVFlQRSAoYXJyYXlfcmVmKSkg IT0gQVJSQVlfVFlQRSkNCj4gKyAgICByZXR1cm4gZmFsc2U7DQo+ICsNCj4gKyAgdHJlZSBzdHJ1 Y3Rfb2JqZWN0ID0gVFJFRV9PUEVSQU5EIChhcnJheV9yZWYsIDApOw0KPiArICB0cmVlIHN0cnVj dF90eXBlID0gVFJFRV9UWVBFIChzdHJ1Y3Rfb2JqZWN0KTsNCj4gKw0KPiArICBpZiAoIVJFQ09S RF9PUl9VTklPTl9UWVBFX1AgKHN0cnVjdF90eXBlKSkNCj4gKyAgICByZXR1cm4gZmFsc2U7DQo+ ICsgIHRyZWUgZmllbGRfZGVjbCA9IFRSRUVfT1BFUkFORCAoYXJyYXlfcmVmLCAxKTsNCj4gKyAg dHJlZSBhdHRyX2NvdW50ZWRfYnkgPSBsb29rdXBfYXR0cmlidXRlICgiY291bnRlZF9ieSIsDQo+ ICsJCQkJCSAgICAgIERFQ0xfQVRUUklCVVRFUyAoZmllbGRfZGVjbCkpOw0KPiArDQo+ICsgIGlm ICghYXR0cl9jb3VudGVkX2J5KQ0KPiArICAgIHJldHVybiBmYWxzZTsNCj4gKyAgcmV0dXJuIHRy dWU7DQo+ICt9DQo+ICsNCj4gLyogR2l2ZW4gYSBmaWVsZCBsaXN0LCBGSUVMRExJU1QsIG9mIGEg c3RydWN0dXJlL3VuaW9uLCByZXR1cm4gYSBUUkVFX0xJU1QsDQo+ICAgIHdpdGggZWFjaCBUUkVF X1ZBTFVFIGEgRklFTERfREVDTCBzdGVwcGluZyBkb3duIHRoZSBjaGFpbiB0byB0aGUgRklFTEQN Cj4gICAgd2hvc2UgbmFtZSBpcyBGSUVMRE5BTUUsIHdoaWNoIGlzIHRoZSBsYXN0IFRSRUVfVkFM VUUgb2YgdGhlIGxpc3QuDQo+IEBAIC0xMjc3MSw3ICsxMjc5Nyw3IEBAIGdldF9uYW1lZF9maWVs ZCAodHJlZSBmaWVsZGxpc3QsIGNvbnN0IGNoYXIgKmZpZWxkbmFtZSkNCj4gCSBmaWVsZHMgaW5z aWRlIGl0IHJlY3Vyc2l2ZWx5LiAgKi8NCj4gICAgICAgZWxzZSBpZiAoUkVDT1JEX09SX1VOSU9O X1RZUEVfUCAoVFJFRV9UWVBFIChmaWVsZCkpKQ0KPiAJICBpZiAoKG5hbWVkX2ZpZWxkID0gZ2V0 X25hbWVkX2ZpZWxkIChUWVBFX0ZJRUxEUyAoVFJFRV9UWVBFIChmaWVsZCkpLA0KPiAtCQkJCQkJ ICBmaWVsZG5hbWUpKSAhPSBOVUxMX1RSRUUpDQo+ICsJCQkJCSAgICAgZmllbGRuYW1lKSkgIT0g TlVMTF9UUkVFKQ0KPiAJICAgIHsNCj4gCSAgICAgIG5hbWVkX2ZpZWxkID0gdHJlZV9jb25zIChO VUxMX1RSRUUsIGZpZWxkLCBuYW1lZF9maWVsZCk7DQo+IAkgICAgICBicmVhazsNCj4gQEAgLTEy Nzg0LDYgKzEyODEwLDczIEBAIGdldF9uYW1lZF9maWVsZCAodHJlZSBmaWVsZGxpc3QsIGNvbnN0 IGNoYXIgKmZpZWxkbmFtZSkNCj4gICByZXR1cm4gbmFtZWRfZmllbGQ7DQo+IH0NCj4gDQo+ICsv KiBGb3IgYSBjb21wb25lbnRfcmVmIHRoYXQgaGFzIGFuIGFycmF5IHR5cGUgQVJSQVlfUkVGLCBn ZXQgdGhlIG9iamVjdCB0aGF0DQo+ICsgICByZXByZXNlbnRzIGl0cyBjb3VudGVkX2J5IHBlciB0 aGUgYXR0cmlidXRlIGNvdW50ZWRfYnkgYXR0YWNoZWQgdG8NCj4gKyAgIHRoZSBjb3JyZXNwb25k aW5nIEZJRUxEX0RFQ0wuICByZXR1cm4gTlVMTF9UUkVFIHdoZW4gY2Fubm90IGZpbmQgc3VjaA0K PiArICAgb2JqZWN0Lg0KPiArICAgRm9yIGV4YW1wbGUsIGlmOg0KPiArDQo+ICsgICAgc3RydWN0 IFAgew0KPiArICAgICAgaW50IGs7DQo+ICsgICAgICBpbnQgeFtdIF9fYXR0cmlidXRlX18gKChj b3VudGVkX2J5IChrKSkpOw0KPiArICAgIH0gKnA7DQo+ICsNCj4gKyAgICBmb3IgdGhlIGZvbGxv d2luZyByZWZlcmVuY2U6DQo+ICsNCj4gKyAgICBwLT54W2JdDQo+ICsNCj4gKyAgICB0aGUgb2Jq ZWN0IHRoYXQgcmVwcmVzZW50cyBpdHMgZWxlbWVudCBjb3VudCB3aWxsIGJlOg0KPiArDQo+ICsg ICAgcC0+aw0KPiArDQo+ICsgICAgU28sIHdoZW4gY29tcG9uZW50X3JlZl9nZXRfY291bnRlZF9i eSAocC0+eFtiXSkgaXMgY2FsbGVkLCBwLT5rIHNob3VsZCBiZQ0KPiArICAgIHJldHVybmVkLg0K PiArKi8NCj4gKw0KPiArdHJlZQ0KPiArY29tcG9uZW50X3JlZl9nZXRfY291bnRlZF9ieSAodHJl ZSBhcnJheV9yZWYpDQo+ICt7DQo+ICsgIGlmICghIGNvbXBvbmVudF9yZWZfaGFzX2NvdW50ZWRf YnlfcCAoYXJyYXlfcmVmKSkNCj4gKyAgICByZXR1cm4gTlVMTF9UUkVFOw0KPiArDQo+ICsgIHRy ZWUgc3RydWN0X29iamVjdCA9IFRSRUVfT1BFUkFORCAoYXJyYXlfcmVmLCAwKTsNCj4gKyAgdHJl ZSBzdHJ1Y3RfdHlwZSA9IFRSRUVfVFlQRSAoc3RydWN0X29iamVjdCk7DQo+ICsgIHRyZWUgZmll bGRfZGVjbCA9IFRSRUVfT1BFUkFORCAoYXJyYXlfcmVmLCAxKTsNCj4gKyAgdHJlZSBhdHRyX2Nv dW50ZWRfYnkgPSBsb29rdXBfYXR0cmlidXRlICgiY291bnRlZF9ieSIsDQo+ICsJCQkJCSAgIERF Q0xfQVRUUklCVVRFUyAoZmllbGRfZGVjbCkpOw0KPiArICBnY2NfYXNzZXJ0IChhdHRyX2NvdW50 ZWRfYnkpOw0KPiArDQo+ICsgIC8qIElmIHRoZXJlIGlzIGFuIGNvdW50ZWRfYnkgYXR0cmlidXRl IGF0dGFjaGVkIHRvIHRoZSBmaWVsZCwNCj4gKyAgICAgZ2V0IHRoZSBmaWVsZCB0aGF0IG1hcHMg dG8gdGhlIGNvdW50ZWRfYnkuICAqLw0KPiArDQo+ICsgIGNvbnN0IGNoYXIgKmZpZWxkbmFtZQ0K PiArICAgID0gSURFTlRJRklFUl9QT0lOVEVSIChUUkVFX1ZBTFVFIChUUkVFX1ZBTFVFIChhdHRy X2NvdW50ZWRfYnkpKSk7DQo+ICsNCj4gKyAgdHJlZSBjb3VudGVkX2J5X2ZpZWxkID0gZ2V0X25h bWVkX2ZpZWxkIChUWVBFX0ZJRUxEUyAoc3RydWN0X3R5cGUpLA0KPiArCQkJCQkgICBmaWVsZG5h bWUpOw0KPiArDQo+ICsgIGdjY19hc3NlcnQgKGNvdW50ZWRfYnlfZmllbGQpOw0KPiArDQo+ICsg IC8qIGdlbmVyYXRlIHRoZSB0cmVlIG5vZGUgdGhhdCByZXByZXNlbnQgdGhlIGNvdW50ZWRfYnkg b2YgdGhpcyBhcnJheQ0KPiArICAgICByZWYuICBUaGlzIGlzIGEgKHBvc3NpYmxlIG5lc3RlZCkg Q09NUE9ORU5UX1JFRiB0byB0aGUgY291bnRlZF9ieV9maWVsZA0KPiArICAgICBvZiB0aGUgY29u dGFpbmluZyBzdHJ1Y3R1cmUuICAqLw0KPiArDQo+ICsgIHRyZWUgY291bnRlZF9ieV9yZWYgPSBO VUxMX1RSRUU7DQo+ICsgIHRyZWUgb2JqZWN0ID0gc3RydWN0X29iamVjdDsNCj4gKyAgZG8NCj4g KyAgICB7DQo+ICsgICAgICB0cmVlIGZpZWxkID0gVFJFRV9WQUxVRSAoY291bnRlZF9ieV9maWVs ZCk7DQo+ICsNCj4gKyAgICAgIGNvdW50ZWRfYnlfcmVmID0gYnVpbGQzIChDT01QT05FTlRfUkVG LA0KPiArCQkJICAgICAgIFRSRUVfVFlQRSAoZmllbGQpLA0KPiArCQkJICAgICAgIHVuc2hhcmVf ZXhwciAob2JqZWN0KSwgZmllbGQsDQo+ICsJCQkgICAgICAgTlVMTF9UUkVFKTsNCj4gKyAgICAg IG9iamVjdCA9IGNvdW50ZWRfYnlfcmVmOw0KPiArICAgICAgY291bnRlZF9ieV9maWVsZCA9IFRS RUVfQ0hBSU4gKGNvdW50ZWRfYnlfZmllbGQpOw0KPiArICAgIH0NCj4gKyAgd2hpbGUgKGNvdW50 ZWRfYnlfZmllbGQpOw0KPiArICByZXR1cm4gY291bnRlZF9ieV9yZWY7DQo+ICt9DQo+IA0KPiAv KiBSZXR1cm4gYSB0cmVlIHJlcHJlc2VudGluZyB0aGUgbG93ZXIgYm91bmQgb2YgdGhlIGFycmF5 IG1lbnRpb25lZCBpbg0KPiAgICBFWFAsIGFuIEFSUkFZX1JFRiBvciBhbiBBUlJBWV9SQU5HRV9S RUYuICAqLw0KPiBkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUuaCBiL2djYy90cmVlLmgNCj4gaW5kZXgg NDg1OWJlY2FhMWU3Li4wN2VlZDcyMTk4MzUgMTAwNjQ0DQo+IC0tLSBhL2djYy90cmVlLmgNCj4g KysrIGIvZ2NjL3RyZWUuaA0KPiBAQCAtNTYxOSwxMSArNTYxOSwyMSBAQCBleHRlcm4gdHJlZSBn ZXRfYmFzZV9hZGRyZXNzICh0cmVlIHQpOw0KPiAgICBvZiBFWFAsIGFuIEFSUkFZX1JFRiBvciBh biBBUlJBWV9SQU5HRV9SRUYuICAqLw0KPiBleHRlcm4gdHJlZSBhcnJheV9yZWZfZWxlbWVudF9z aXplICh0cmVlKTsNCj4gDQo+ICsvKiBHaXZlIGEgY29tcG9uZW50X3JlZiB0aGF0IGhhcyBhbiBh cnJheSB0eXBlLCByZXR1cm4gdHJ1ZSB3aGVuIGFuDQo+ICsgICBhdHRyaWJ1dGUgY291bnRlZF9i eSBhdHRhY2hlZCB0byB0aGUgY29ycmVzcG9uZGluZyBGSUVMRF9ERUNMLiAgKi8NCj4gK2V4dGVy biBib29sIGNvbXBvbmVudF9yZWZfaGFzX2NvdW50ZWRfYnlfcCAodHJlZSk7DQo+ICsNCj4gLyog R2l2ZW4gYSBmaWVsZCBsaXN0LCBGSUVMRExJU1QsIG9mIGEgc3RydWN0dXJlL3VuaW9uLCByZXR1 cm4gdGhlIEZJRUxEIHdob3NlDQo+ICAgIG5hbWUgaXMgRklFTEROQU1FLCByZXR1cm4gTlVMTF9U UkVFIGlmIHN1Y2ggZmllbGQgaXMgbm90IGZvdW5kLg0KPiAgICBzZWFyY2hpbmcgbmVzdGVkIGFu b255bW91cyBzdHJ1Y3R1cmUvdW5pb24gcmVjdXJzaXZlbHkuICAqLw0KPiBleHRlcm4gdHJlZSBn ZXRfbmFtZWRfZmllbGQgKHRyZWUsIGNvbnN0IGNoYXIgKik7DQo+IA0KPiArLyogR2l2ZSBhIGNv bXBvbmVudF9yZWYgdGhhdCBoYXMgYW4gYXJyYXkgdHlwZSwgcmV0dXJuIHRoZSBvYmplY3QgdGhh dA0KPiArICAgcmVwcmVzZW50cyBpdHMgY291bnRlZF9ieSBwZXIgdGhlIGF0dHJpYnV0ZSBjb3Vu dGVkX2J5IGF0dGFjaGVkIHRvDQo+ICsgICB0aGUgY29ycmVzcG9uZGluZyBGSUVMRF9ERUNMLiAg cmV0dXJuIE5VTExfVFJFRSB3aGVuIGNhbm5vdCBmaW5kIHN1Y2gNCj4gKyAgIG9iamVjdC4gICov DQo+ICtleHRlcm4gdHJlZSBjb21wb25lbnRfcmVmX2dldF9jb3VudGVkX2J5ICh0cmVlKTsNCj4g Kw0KPiAvKiBSZXR1cm4gYSB0eXBlbm9kZSBmb3IgdGhlICJzdGFuZGFyZCIgQyB0eXBlIHdpdGgg YSBnaXZlbiBuYW1lLiAgKi8NCj4gZXh0ZXJuIHRyZWUgZ2V0X3R5cGVub2RlX2Zyb21fbmFtZSAo Y29uc3QgY2hhciAqKTsNCj4gDQo+IC0tIA0KPiAyLjMxLjENCj4gDQoNCg==