From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by sourceware.org (Postfix) with ESMTPS id 30C9E3858D1E for ; Mon, 13 Mar 2023 22:42:47 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 30C9E3858D1E 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 (m0246632.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 32DLf4kM008147; Mon, 13 Mar 2023 22:42:44 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=FkZUsRnNxENaoATh9JZT9RelFJunnXsKgXw9HjzUiLA=; b=2Lj31nBULxWnrba5Yxnb/zNmkWrFg7K9RdJswvySI3HZJ6gNCZ5mFlwNTk44cCdQmdlX hbs2XjbtpMrlXyHVBYvLCHAWX8mrOegtamoW7e8nylVI0EVUiaucPqLsitz5qp/yuyHi vNUq0zEfvdE7GlYKV88HcaqVQeVF2D6CLQVArvuwIcmLfehao0/uc5XS7+TANTB5hdc2 vs76whpJm2T+ATjHtrFv+Fl1lP5KQjBejJHfg0q3QcwF8VKo1Cm9LIbvHEB6TsqDQQum Hm2Ja8A/tXqWjEPDpRmD4QELOOEpOBJ+ICeWoYdDwbuEf6a/L9NJVknnUuGdxg1ie6iU ag== Received: from phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta01.appoci.oracle.com [138.1.114.2]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3p8h8td1rh-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 13 Mar 2023 22:42:44 +0000 Received: from pps.filterd (phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 32DMSvFi033500; Mon, 13 Mar 2023 22:42:43 GMT Received: from nam12-bn8-obe.outbound.protection.outlook.com (mail-bn8nam12lp2177.outbound.protection.outlook.com [104.47.55.177]) by phxpaimrmta01.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3p8g3525fs-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 13 Mar 2023 22:42:42 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=CK8E21qeUyTcdkmDOgkbEn5FuESuL3QxoI7Oz8UNMApos4vPPNL3ZVG7/TDDF/+xsGVITkcbvVSx6d1Ub7heLOegf1H5MKXoS9slSl8KVIpdvGEOMNjvDhbmheNdywXSNr66UMar7TtZ1lVAYdA7c1c0gR0cLe9FD8DNO+DaZa4JpZdlQAZJTmA2A2Aiv+f4c93TqeyreJlhZmwTf3sizUDQAVcct+7Xo9GWg2sl6RbINNCvLKpz6nCrHQz3ojWyWX486K1JU/pMk8kM4HDfFMDu2jPnnfePX3xSkBwkiXWgYMl5D1/5PsF3hdxoxIOboBtFljqvLqNaUbeOrWJmyg== 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=FkZUsRnNxENaoATh9JZT9RelFJunnXsKgXw9HjzUiLA=; b=jxGQYwlKyM1F0ehRz8htTOWEYM+C2bHpcIB/3M/6Dvz3axEcvdb6hNA1tqkfwt6jQrzC7TRpYrFZIvwxf/5bYGUsg0bIA26dTbpNE5kETr5/+dXX6MCLqxNkwTuEc9a6gq3wkh4AXEKEimKlDm/4Gt/FNnCUmOtCuPs+PpukK4bXJZfPSRAMPpf+9EebdX4eVTUU/j+d4cLq5MqbouTnK15eNzuVJJDuHaP6L9DFvx+EFyenOnm7nCrafLOEukDPUcNxaxY/euc3WV6DxDNyoaG0ZjGZJkh5EgITuClOXEMUePC6dbsfL1juNxsUaM7433NOSAb5a0QIeE/VQGnaoA== 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=FkZUsRnNxENaoATh9JZT9RelFJunnXsKgXw9HjzUiLA=; b=fZh1xIBkyesc2L9f9Oxaq65TadU/28dKkgfexcArWbQTbW8OJ1xlQi4P3qXKzz6Ko6lKLijxlFlKZ9nJ+lk+YODscDiTWEKNhMZldP3xdquxQODhln4wtP8grodWC2lkCPAAK1bplbXxCFK2b95EYETX6A+KKLfeJ4esdyjbHDA= Received: from CH2PR10MB4344.namprd10.prod.outlook.com (2603:10b6:610:af::19) by CY8PR10MB6609.namprd10.prod.outlook.com (2603:10b6:930:57::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.24; Mon, 13 Mar 2023 22:42:40 +0000 Received: from CH2PR10MB4344.namprd10.prod.outlook.com ([fe80::7030:ed2e:20d0:cd5b]) by CH2PR10MB4344.namprd10.prod.outlook.com ([fe80::7030:ed2e:20d0:cd5b%8]) with mapi id 15.20.6178.024; Mon, 13 Mar 2023 22:42:39 +0000 From: Qing Zhao To: Richard Biener CC: "joseph@codesourcery.com" , "siddhesh@gotplt.org" , "keescook@chromium.org" , "gcc-patches@gcc.gnu.org" Subject: Re: [v4][PATCH 1/2] Handle component_ref to a structre/union field including C99 FAM [PR101832] Thread-Topic: [v4][PATCH 1/2] Handle component_ref to a structre/union field including C99 FAM [PR101832] Thread-Index: AQHZSH697Ixa1oBBJk+QPQNZSvEShq7ycf2AgABAfwCAAQeYAIAAYwIAgAVMJ4A= Date: Mon, 13 Mar 2023 22:42:39 +0000 Message-ID: References: <20230224183505.4112295-1-qing.zhao@oracle.com> <20230224183505.4112295-2-qing.zhao@oracle.com> <24706421-0026-49D6-ADB6-04F8C70DA1BA@oracle.com> <64CDC3E9-D2DB-4BF5-85AC-3BFD5E90F631@oracle.com> In-Reply-To: <64CDC3E9-D2DB-4BF5-85AC-3BFD5E90F631@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.2) x-ms-publictraffictype: Email x-ms-traffictypediagnostic: CH2PR10MB4344:EE_|CY8PR10MB6609:EE_ x-ms-office365-filtering-correlation-id: 53ef593a-1728-41c5-0e74-08db24144034 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: yvfSOKW08eWe8FHXlnAkrj+n/wd2qwHaUYWxyqyKWkwmv1KgfzszADM1ZjkEh99f8dPqcE+7txZYA7YncAm2GD0cUcary0kbzb42MOshmR20eT0an3F8gtcKDIKOQ5Kc5jkEPVvqiVIBBOaLurLFQstMtZhzLsBuwoI7dw/dQxVpEr+Q0e94d1DErf8FlZ1UmNLOp0861SOpAtkbXuVWFvWcx0y3DEnfVZ8VKeeTis3R9zroJIbatuhuOpJgWCxs4SZpURRsUDRqQP0mzt2VBz8uHklDdxfLyGmH0/NQD0FsCc6+5Cl5T2RH3zIQq+4e2V1KqGO5XKT+29yV/ADf4+XYmLasLV9qUDkYn1igPgh/CBK6AzPtr8pBHa2ESzcRsOPWEEaM/Lx2Wsuldp7SeSQZzLiAg7RVjS2MTkyqOdBl6QmPH7da7siw8dgRhKMvYdMzTDX68WvZ7jGBYNXtUEXfpiv2GIUDhs34R0myOzhNbuBNS5pxgeg5YJlH7EYlpqKr7WrNeYsv8qx9CTjQv1UhNw0mgQGf0bT4UVLSDBeW0b7/W6+ImMdoeEcCuVtcIX0lWWQIeNrZiObh/dxREzvHEKrM5gKSyRHsNvSJnG4okcXeew5hwF2LQvIpk6dk39GVU5mhCRmoM9gI/x1ZH9wMefo5MHyFMIQoCSxTSivCA+1mTtPybQP55FfkFvATae4LZHThYZwWBD1B/WhQPocszQtDmYFjUk3fMHTjX90= 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:(13230025)(136003)(39860400002)(396003)(376002)(346002)(366004)(451199018)(83380400001)(38100700002)(316002)(122000001)(478600001)(54906003)(8936002)(186003)(33656002)(6512007)(8676002)(71200400001)(6506007)(36756003)(5660300002)(6916009)(66446008)(53546011)(4326008)(66946007)(66476007)(66556008)(64756008)(76116006)(91956017)(86362001)(41300700001)(44832011)(38070700005)(2616005)(30864003)(6486002)(2906002)(84970400001)(45980500001)(579004);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?QXozbGJ0MEV3bmZVSElTb0VWRWFNRjBvYXRiS2QxOGJxdTdqWElMaDUwZERt?= =?utf-8?B?Tk9FS2ZpcXNuWjBVYlZnUnExb1pIRkswK1NQbStqNkZZWStubExBU3NwSHlk?= =?utf-8?B?NkZhVVdjZUxESFN4YnM0OXR5M1VHY2JZdit2ZTBlUmhadG5BM0xJeXFJV0dl?= =?utf-8?B?QTBXWitDdGh2VHU5REtGS3Q3dXRtY2J3d2hOTXprWUpBN3JGb0dGM1dlVjNl?= =?utf-8?B?ZWVaYWhFOGZqOWtObHlWYkVDditJbHVQd0dDb0ZjTzhOQkN1M1dwZFFzdGJv?= =?utf-8?B?V3I1WW05MHhSYWNDS3RYY05sb2V4ekpXa1BmSFZnejkrMnQ4MFlNa3ZIc3dT?= =?utf-8?B?UTF5VWpBTUpHWWtQSDJDTFFNdTcwdG1UcisyQmVkZFNGbGlLVExSTDZpa1R4?= =?utf-8?B?bDVnWW9DcUs5R3ZjVTZENk9xMG5ZUUJtODJGemFmTVZHOGcyWi9SUUZNK3hT?= =?utf-8?B?bUFEVHlLMTFXQ2hsV3J4MDZpS21KYXYxcC9RY2FuS01XMXVWRXlVcWdRbjA2?= =?utf-8?B?TFN6RU1VSU5vbUdSVUE4M1RFMWI2Y3FOU1Zxck5memxGYjBrVjU4UzdkdnlN?= =?utf-8?B?aElWZXlTcG8rdEl0aG9vZkVTNnFMaUJVTE51eEZmNHVpTDR5VWNHejcvby9B?= =?utf-8?B?Qlhxa0tZQ0FBckE4aklWalZic3ZrbmxDOGM0bG83NU5uemtBT3BVdysvaGl4?= =?utf-8?B?N0xzM1ZDN2tpbHl5WGhxNE1qMzBuM212RVdGQVBPUG9MM0VNdDZRbFdTK2pG?= =?utf-8?B?UXhtTEVGTDdxZ3dOeGhxNjNYeFByUTMyL1FIcXZPcC9xcVVscUVhV21nVGkz?= =?utf-8?B?YWlwdHZITVdqb1Z4bUlnNVNyanhFbnhDYVBxZHJMb0RuK1hYTXdyVVExMHJk?= =?utf-8?B?Z3dONHRHa3hFN0VPd21Zb2lmd0xseGVEcmU2c1E0MXJIQktoVStPZ3NpNlZ1?= =?utf-8?B?ajg5SVVqb1VVTFUyejhtNDRnSGNEdnNGRnNKZ2lTdXNuUG5tSVpnWmVoU2gw?= =?utf-8?B?ZDMzclY0K3l6Uk1Fb2Q3UVNDdTJVY0ZqWldjcFRzN3hwbTZVR3k1aTgwZngv?= =?utf-8?B?ZmZYd2htbWo5TEhJRVRpUHRTbzNZT0ZHZXlGUzgzODZaSXozaVJ5NFU5MVNp?= =?utf-8?B?bVAzMmNJR2lwaVBmUTloenpUa0ZKVXREUHFaT1hucUNKYUdiUHlxZlA0eXVU?= =?utf-8?B?ODFtcXUwZElLL3BRRUJxa0l5dllBdDdaR1BEenFQMGwrZzFqa0I5VHMyWUJy?= =?utf-8?B?d2hBTXUrM2x2YUsxeUFVOWh0Z0p5UTB1NVIyMWRCZ0ZaT3pjVlV3TUw0VTVS?= =?utf-8?B?QWZPYjF1TE9WSFM0Y0trcWNmeTF6UzBoaGpYejBuZnhjbWpUUmEzbDNSUVYz?= =?utf-8?B?cEUwRitLY1o1ZTBjTWtTRTdoUjd5RXorL2Jpd1V3T1ZRYVN5NUxpbnpvaXJX?= =?utf-8?B?N28yVFdaTkFjNWcxRWZHcFdtVzgxQmM5MFlJU1VpU1Y4OEZGcWFUZERBYXJs?= =?utf-8?B?eERadXhjRXo4aTBPOTRFYWdaRnNEeG1sbTU1K2UrTWs0ZDhXQWRabUliSVRj?= =?utf-8?B?NE01R1ErWGxNYkU4NVRKK1BUYkNlT0ZaNmMzMFRWUnVCM3E5TmU2Y2I5ako4?= =?utf-8?B?eVBNYW5iSE9NYkNjZHB3bENQNWpFNy9DWUNGaUtDaExmeEJnZzF5OG85Um5T?= =?utf-8?B?aVFkTW1pbjZZTTdGTnpieFAyYk1XaXBvbVZlaHcwcWVKbS9HVzNzUUVNb2o0?= =?utf-8?B?Ykg1TDYvZzYvd3owdFhyeDZRN3Y4bWQ0RnFOZDhlbnZqR3VuWGpjT3R0YnhW?= =?utf-8?B?TWh2Wmx5V0JwOEhLS2s0NTUweWx6ejFsV3JZSjFVUjh3RlZKbUtHMytuQmsx?= =?utf-8?B?QzJUVmhMVW1DMVh6K2pvS2FtbGUxdVc0WisvbTk0QWFvbjQ1OUZLYnlzdWM0?= =?utf-8?B?TjBmZWpMUXlIUG11cFhjRTJyT01GNzNYSmxyTFhhajJkazNWYmdNZlhyRTNH?= =?utf-8?B?c0UxN3RhQmZhY3FiMDI5aGk4S01hcktCWU8rSUR6ZTdvaFhEMkcxSW5KdExT?= =?utf-8?B?M0FWQ1c0WjdZNzN6TlVIMW80SkRFOVpEWFk4cG5QaWliSGkvNjNuSXFhRXV1?= =?utf-8?B?YXBZWlR5eXpFcTJPZUJoakxUN1VxQnIrRG9DUVJGb0E3cjVxelRKV0pWSWJm?= =?utf-8?Q?0O/49o30Z0xGuQ/P6IyauwU=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: <50EE68044F55974C8332E2F8206167CA@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: OQWb45hNDvo+Sy5lMBVgBqzpsyaEcSbT/QKi+tfom+KgqD5q9FVPI9wkXTQtPFJIYYmzQ7RBsdd1UWEjXGIOw+4M9anRbCkQ3r78rrvqJ/6xZLAY+rw1acxN8EMxIu0m6vtoGj4soKzYvWjGgDrb4Xt3etkaqrP+fcgYp3+eSRqHcyKH/EN7jy5w3NNciqk9v6g9AGaoBcFdoNbvoRLTF0qPhItC2nzcnyce7CqLkOGgPfhgRXWhtALB1+3RrCZtFBH2By+UVkN6+yHS+YxXrBYbjvf+dqjN55C++9CX54kAh2hg6C2P+mIcVPMVm5e6Rwc459HM/nLIpERHhCSpjsZ83O6lewc3F8x2qjn4MXRleLFN1kQRjKAvCnDYBr9J8iVcvi6Z0NOkeHH9nXf1Q5TiF6BF88FmuVs0exrRnjFta/NA3zAQN9v3jlBRo+cphOxWyY1KtfGIhri6FrCbPoh674rqKf/vg8E8UqyZZPXHQ/HBz8RzZiBQslF8YMdumbMpD+BFTmvdmZu25bPDsQhBA1Mq3ZpMvtSSdnJfn/3aRMxQTlJKLcrWXXuf4dZynvCD6dztowbaHAohRFd/Ltj2FLOuSBGy/vutwCIpmjoy57aAhs2knYMUBc+poRUsoyHz0b9p6V3djDvfKk1uWklFrgSqt7i6P3ADTB7HpjgpKKTS/1MH++2jerKq7KsaMdhPiowDmIuBl99ThmmrOeuhEoul+ub76vK92s9JjXv83Ys3mgbXzrosytRgHJNw0ajro3y3T9QT/JtpgOlKlukpfSL/I0PNrzjfmDeBLAk5MGNAelljaYViAIsind/HwFo1VuDuaHVJHBVLmTiEhade8QS/mJeYoPYfsp69oyH73aNmFMqWxw5fr4RH0mcD 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: 53ef593a-1728-41c5-0e74-08db24144034 X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Mar 2023 22:42:39.7531 (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: kU0oEeMEGlbYFSpO0TRvkTlsItFUifAV/uzGPb/mIYpJcibeJBUZrkJRzuPqYkkrwinBOI/5ZwVSLBtE4c2KJQ== X-MS-Exchange-Transport-CrossTenantHeadersStamped: CY8PR10MB6609 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.254,Aquarius:18.0.942,Hydra:6.0.573,FMLib:17.11.170.22 definitions=2023-03-13_11,2023-03-13_03,2023-02-09_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 spamscore=0 malwarescore=0 mlxscore=0 phishscore=0 suspectscore=0 adultscore=0 mlxlogscore=999 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2303130178 X-Proofpoint-ORIG-GUID: xB6uYQLlYYgkHZDyL6cqhAwjPoUB0USW X-Proofpoint-GUID: xB6uYQLlYYgkHZDyL6cqhAwjPoUB0USW 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 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: SGksIFJpY2hhcmQsDQoNCkRvIHlvdSBoYXZlIG1vcmUgY29tbWVudHMgb24gbXkgcmVzcG9uZHMg dG8geW91ciBwcmV2aW91cyBxdWVzdGlvbnM/DQoNCnRoYW5rcy4NCg0KUWluZw0KDQo+IE9uIE1h ciAxMCwgMjAyMywgYXQgODo0OCBBTSwgUWluZyBaaGFvIHZpYSBHY2MtcGF0Y2hlcyA8Z2NjLXBh dGNoZXNAZ2NjLmdudS5vcmc+IHdyb3RlOg0KPiANCj4gDQo+IA0KPj4gT24gTWFyIDEwLCAyMDIz LCBhdCAyOjU0IEFNLCBSaWNoYXJkIEJpZW5lciA8cmd1ZW50aGVyQHN1c2UuZGU+IHdyb3RlOg0K Pj4gDQo+PiBPbiBUaHUsIDkgTWFyIDIwMjMsIFFpbmcgWmhhbyB3cm90ZToNCj4+IA0KPj4+IA0K Pj4+IA0KPj4+PiBPbiBNYXIgOSwgMjAyMywgYXQgNzoyMCBBTSwgUmljaGFyZCBCaWVuZXIgPHJn dWVudGhlckBzdXNlLmRlPiB3cm90ZToNCj4+Pj4gDQo+Pj4+IE9uIEZyaSwgMjQgRmViIDIwMjMs IFFpbmcgWmhhbyB3cm90ZToNCj4+Pj4gDQo+Pj4+PiBHQ0MgZXh0ZW5zaW9uIGFjY2VwdHMgdGhl IGNhc2Ugd2hlbiBhIHN0cnVjdCB3aXRoIGEgQzk5IGZsZXhpYmxlIGFycmF5IG1lbWJlcg0KPj4+ Pj4gaXMgZW1iZWRkZWQgaW50byBhbm90aGVyIHN0cnVjdCBvciB1bmlvbiAocG9zc2libHkgcmVj dXJzaXZlbHkpLg0KPj4+Pj4gX19idWlsdGluX29iamVjdF9zaXplIHNob3VsZCB0cmVhdCBzdWNo IHN0cnVjdCBhcyBmbGV4aWJsZSBzaXplLg0KPj4+Pj4gDQo+Pj4+PiBnY2MvYy9DaGFuZ2VMb2c6 DQo+Pj4+PiANCj4+Pj4+IAlQUiB0cmVlLW9wdGltaXphdGlvbi8xMDE4MzINCj4+Pj4+IAkqIGMt ZGVjbC5jYyAoZmluaXNoX3N0cnVjdCk6IFNldCBUWVBFX0lOQ0xVREVfRkxFWEFSUkFZIGZvcg0K Pj4+Pj4gCXN0cnVjdC91bmlvbiB0eXBlLg0KPj4+PiANCj4+Pj4gSSBjYW4ndCByZWFsbHkgY29t bWVudCBvbiB0aGUgY29ycmVjdG5lc3Mgb2YgdGhpcyBwYXJ0IGJ1dCBzaW5jZQ0KPj4+PiBvbmx5 IHRoZSBDIGZyb250ZW5kIHdpbGwgZXZlciBzZXQgdGhpcyBhbmQgeW91IGFyZSB1c2luZyBpdCBm cm9tDQo+Pj4+IGFkZHJfb2JqZWN0X3NpemUgd2hpY2ggaXMgYWxzbyB1c2VkIGZvciBvdGhlciBD IGZhbWlseSBsYW5ndWFnZXMNCj4+Pj4gKGF0IGxlYXN0KSwgSSB3b25kZXIgaWYgeW91IGNhbiBy ZWFsbHkgdGVzdA0KPj4+PiANCj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFUWVBF X0lOQ0xVREVfRkxFWEFSUkFZIChUUkVFX1RZUEUgKHYpKSkNCj4+Pj4gDQo+Pj4+IHRoZXJlLg0K Pj4+IA0KPj4+IFlvdSBtZWFuIGZvciBDKysgYW5kIGFsc28gb3RoZXIgQyBmYW1pbHkgbGFuZ3Vh Z2VzIChvdGhlciB0aGFuIEMpLCB0aGUgYWJvdmUgYml0IGNhbm5vdCBiZSBzZXQ/DQo+Pj4gWWVz LCB0aGF04oCZcyB0cnVlLiBUaGUgYml0IGlzIG9ubHkgc2V0IGZvciBDLiBTbyBpcyB0aGUgYml0 IERFQ0xfTk9UX0ZMRVhBUlJBWSwgd2hpY2ggaXMgb25seSBzZXQgZm9yIEMgdG9vLiANCj4+PiBT bywgSSBhbSB3b25kZXJpbmcgd2hldGhlciB0aGUgYml0IERFQ0xfTk9UX0ZMRVhBUlJBWSBzaG91 bGQgYmUgYWxzbyBzZXQgaW4gbWlkZGxlIGVuZD8gT3Igd2UgY2FuIHNldCBERUNMX05PVF9GTEVY QVJSQVkgaW4gQysrIEZFIHRvbz8gQW5kIHRoZW4gd2UgY2FuIHNldCBUWVBFX0lOQ0xVREVfRkxF WEFSUkFZIGFsc28gaW4gQysrIEZFPw0KPj4+IFdoYXTigJlzIHlvdXIgc3VnZ2VzdGlvbj8NCj4+ PiANCj4+PiAoSSBwZXJzb25hbGx5IGZlZWwgdGhhdCBERUNMX05PVF9GTEVYQVJSQVkgYW5kIFRZ UEVfSU5DTFVERV9GTEVYQVJSQVkgc2hvdWxkIGJlIHNldCBpbiB0aGUgc2FtZSBwbGFjZXMpLg0K Pj4gDQo+PiBJIHdhcyB3b25kZXJpbmcgaWYgdGhlIGFib3ZlIHRlc3QgZXJyb3JzIG9uIHRoZSBj b25zZXJ2YXRpdmUgc2lkZQ0KPj4gY29ycmVjdGx5IC0gaXQgd2lsbCBub3csIGZvciBhbGwgYnV0 IEMsIGN1dCBvZmYgc29tZSB0aGluZyB3aGVyZSBpdA0KPj4gZGlkbid0IGJlZm9yZT8NCj4gDQo+ IEFzIGxvbmcgYXMgdGhlIGRlZmF1bHQgdmFsdWUgb2YgVFlQRV9JTkNMVURFX0ZMRVhBUlJBWSBy ZWZsZWN0cyB0aGUgY29ycmVjdCBjb25zZXJ2YXRpdmUgIGJlaGF2aW9yLCB0aGVuIHRoZSB0ZXN0 aW5nIHNob3VsZCBiZSBjb3JyZWN0LCByaWdodD8NCj4gDQo+IFRoZSBkZWZhdWx0IHZhbHVlIG9m IFRZUEVfSU5DTFVERV9GTEVYQVJSQVkgaXMgMCwgaS5lLCBGQUxTRSwgbWVhbnMgdGhhdCB0aGUg VFlQRSBkb2VzIG5vdCBpbmNsdWRlIGEgZmxleCBhcnJheSBieSBkZWZhdWx0LCB0aGlzIGlzIHRo ZSBjb3JyZWN0IGJlaGF2aW9yLiBPbmx5IHdoZW4gdGhlIFRZUEUgZG9lcyBpbmNsdWRlIGEgZmxl eGlhcnJheSwgaXQgd2lsbCBiZSBzZXQgdG8gVFJVRS4gU28sIEkgdGhpbmsgaXTigJlzIGNvcnJl Y3QuDQo+IA0KPiBUaGlzIGlzIGEgZGlmZmVyZW50IHNpdHVhdGlvbiBmb3IgREVDTF9OT1RfRkxF WEFSUkFZLCBieSBkZWZhdWx0LCB0aGUgY29tcGlsZXIgd2lsbCB0cmVhdCBBTEwgdHJhaWxpbmcg YXJyYXlzIGFzIEZNQSwgc28gaW4gb3JkZXIgdG8ga2VlcCB0aGUgY29ycmVjdCBjb25zZXJ2YXRp dmUgYmVoYXZpb3IsIHdlIHNob3VsZCBrZWVwIHRoZSBkZWZhdWx0IHZhbHVlIGZvciBERUNMX05P VF9GTEVYQVJSQVkgYXMgaXTigJlzIGEgRk1BLCBpLmUsIERFQ0xfTk9UX0ZMRVhBUlJBWSBiZWlu ZyBGQUxTRSwgYnkgZGVmYXVsdC4gT25seSB3aGVuIHRoZSBhcnJheSBpcyBOT1QgYSBGTUEsIHdl IHNldCBpdCB0byB0cnVlLiANCj4gDQo+IFNvLCB0aGUgZGVmYXVsdCB2YWx1ZSBmb3IgVFlQRV9J TkNMVURFX0ZMRVhBUlJBWSBpcyBjb3JyZWN0LiANCj4+IA0KPj4+PiANCj4+Pj4gT3JpZ2luYWxs eSBJIHdhcyBzdWdnZXN0aW5nIHRvIHNldCB0aGlzIGZsYWcgaW4gc3Rvci1sYXlvdXQuY2MNCj4+ Pj4gd2hpY2ggZXZlbnR1YWxseSBhbGwgbGFuZ3VhZ2VzIGZ1bm5lbCB0aGVpciB0eXBlcyB0aHJv dWdoIGFuZA0KPj4+PiBpZiB0aGVyZSdzIGxhbmd1YWdlIHNwZWNpZmljIGhhbmRsaW5nIHVzZSBh IGxhbmdob29rICh3aXRoIHRoZQ0KPj4+PiBkZWZhdWx0IGltcGxlbWVudGF0aW9uIHByZXNlcnZp bmcgdGhlIHN0YXR1cyBxdW8pLg0KPj4+IA0KPj4+IElmIHdlIGRlY2lkZSB0byBzZXQgdGhlIGJp dHMgaW4gc3Rvci1sYXlvdXQuY2MsIHdoZXJlIGlzIHRoZSBiZXN0IHBsYWNlIHRvIGRvIGl0PyBJ IGNoZWNrZWQgdGhlIHN0YXItbGF5b3V0LmNjIGNvZGUsIGxvb2tzIGxpa2Ug4oCcbGF5b3V0X3R5 cGXigJ0gbWlnaHQgYmUgdGhlIHBsYWNlIHdoZXJlIHdlIGNhbiBzZXQgdGhlc2UgYml0cyBmb3Ig UkVDT1JEX1RZUEUsIFVOSU9OX1RZUEU/IA0KPj4gDQo+PiBZZXMsIGl0IHdvdWxkIGJlIGxheW91 dF90eXBlLg0KPj4gDQo+Pj4+IA0KPj4+PiBTb21lIG1vcmUgY29tbWVudHMgYmVsb3cgLi4uDQo+ Pj4+IA0KPj4+Pj4gZ2NjL2NwL0NoYW5nZUxvZzoNCj4+Pj4+IA0KPj4+Pj4gCVBSIHRyZWUtb3B0 aW1pemF0aW9uLzEwMTgzMg0KPj4+Pj4gCSogbW9kdWxlLmNjICh0cmVlc19vdXQ6OmNvcmVfYm9v bHMpOiBTdHJlYW0gb3V0IG5ldyBiaXQNCj4+Pj4+IAl0eXBlX2luY2x1ZGVfZmxleGFycmF5Lg0K Pj4+Pj4gCSh0cmVlc19pbjo6Y29yZV9ib29scyk6IFN0cmVhbSBpbiBuZXcgYml0IHR5cGVfaW5j bHVkZV9mbGV4YXJyYXkuDQo+Pj4+PiANCj4+Pj4+IGdjYy9DaGFuZ2VMb2c6DQo+Pj4+PiANCj4+ Pj4+IAlQUiB0cmVlLW9wdGltaXphdGlvbi8xMDE4MzINCj4+Pj4+IAkqIHByaW50LXRyZWUuY2Mg KHByaW50X25vZGUpOiBQcmludCBuZXcgYml0IHR5cGVfaW5jbHVkZV9mbGV4YXJyYXkuDQo+Pj4+ PiAJKiB0cmVlLWNvcmUuaCAoc3RydWN0IHRyZWVfdHlwZV9jb21tb24pOiBOZXcgYml0DQo+Pj4+ PiAJdHlwZV9pbmNsdWRlX2ZsZXhhcnJheS4NCj4+Pj4+IAkqIHRyZWUtb2JqZWN0LXNpemUuY2Mg KGFkZHJfb2JqZWN0X3NpemUpOiBIYW5kbGUgc3RydWN0dXJlL3VuaW9uIHR5cGUNCj4+Pj4+IAl3 aGVuIGl0IGhhcyBmbGV4aWJsZSBzaXplLg0KPj4+Pj4gCSogdHJlZS1zdHJlYW1lci1pbi5jYyAo dW5wYWNrX3RzX3R5cGVfY29tbW9uX3ZhbHVlX2ZpZWxkcyk6IFN0cmVhbQ0KPj4+Pj4gCWluIG5l dyBiaXQgdHlwZV9pbmNsdWRlX2ZsZXhhcnJheS4NCj4+Pj4+IAkqIHRyZWUtc3RyZWFtZXItb3V0 LmNjIChwYWNrX3RzX3R5cGVfY29tbW9uX3ZhbHVlX2ZpZWxkcyk6IFN0cmVhbQ0KPj4+Pj4gCW91 dCBuZXcgYml0IHR5cGVfaW5jbHVkZV9mbGV4YXJyYXkuDQo+Pj4+PiAJKiB0cmVlLmggKFRZUEVf SU5DTFVERV9GTEVYQVJSQVkpOiBOZXcgbWFjcm8NCj4+Pj4+IAlUWVBFX0lOQ0xVREVfRkxFWEFS UkFZLg0KPj4+Pj4gDQo+Pj4+PiBnY2MvdGVzdHN1aXRlL0NoYW5nZUxvZzoNCj4+Pj4+IA0KPj4+ Pj4gCVBSIHRyZWUtb3B0aW1pemF0aW9uLzEwMTgzMg0KPj4+Pj4gCSogZ2NjLmRnL2J1aWx0aW4t b2JqZWN0LXNpemUtcHIxMDE4MzIuYzogTmV3IHRlc3QuDQo+Pj4+PiAtLS0NCj4+Pj4+IGdjYy9j L2MtZGVjbC5jYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxMiArKw0KPj4+Pj4g Z2NjL2NwL21vZHVsZS5jYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAyICsNCj4+ Pj4+IGdjYy9wcmludC10cmVlLmNjICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgNSAr DQo+Pj4+PiAuLi4vZ2NjLmRnL2J1aWx0aW4tb2JqZWN0LXNpemUtcHIxMDE4MzIuYyAgICAgfCAx MzQgKysrKysrKysrKysrKysrKysrDQo+Pj4+PiBnY2MvdHJlZS1jb3JlLmggICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfCAgIDQgKy0NCj4+Pj4+IGdjYy90cmVlLW9iamVjdC1zaXplLmNj ICAgICAgICAgICAgICAgICAgICAgICB8ICA3OSArKysrKysrLS0tLQ0KPj4+Pj4gZ2NjL3RyZWUt c3RyZWFtZXItaW4uY2MgICAgICAgICAgICAgICAgICAgICAgIHwgICAxICsNCj4+Pj4+IGdjYy90 cmVlLXN0cmVhbWVyLW91dC5jYyAgICAgICAgICAgICAgICAgICAgICB8ICAgMSArDQo+Pj4+PiBn Y2MvdHJlZS5oICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDYgKw0KPj4+ Pj4gOSBmaWxlcyBjaGFuZ2VkLCAyMTUgaW5zZXJ0aW9ucygrKSwgMjkgZGVsZXRpb25zKC0pDQo+ Pj4+PiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvYnVpbHRpbi1vYmpl Y3Qtc2l6ZS1wcjEwMTgzMi5jDQo+Pj4+PiANCj4+Pj4+IGRpZmYgLS1naXQgYS9nY2MvYy9jLWRl Y2wuY2MgYi9nY2MvYy9jLWRlY2wuY2MNCj4+Pj4+IGluZGV4IDA4MDc4ZWFkZWI4Li5mNTg5YTJm NTE5MiAxMDA2NDQNCj4+Pj4+IC0tLSBhL2djYy9jL2MtZGVjbC5jYw0KPj4+Pj4gKysrIGIvZ2Nj L2MvYy1kZWNsLmNjDQo+Pj4+PiBAQCAtOTI4NCw2ICs5Mjg0LDE4IEBAIGZpbmlzaF9zdHJ1Y3Qg KGxvY2F0aW9uX3QgbG9jLCB0cmVlIHQsIHRyZWUgZmllbGRsaXN0LCB0cmVlIGF0dHJpYnV0ZXMs DQo+Pj4+PiAgICAgLyogU2V0IERFQ0xfTk9UX0ZMRVhBUlJBWSBmbGFnIGZvciBGSUVMRF9ERUNM IHguICAqLw0KPj4+Pj4gICAgIERFQ0xfTk9UX0ZMRVhBUlJBWSAoeCkgPSAhaXNfZmxleGlibGVf YXJyYXlfbWVtYmVyX3AgKGlzX2xhc3RfZmllbGQsIHgpOw0KPj4+Pj4gDQo+Pj4+PiArICAgICAg LyogU2V0IFRZUEVfSU5DTFVERV9GTEVYQVJSQVkgZm9yIHRoZSBjb250ZXh0IG9mIHgsIHQNCj4+ Pj4+ICsgICAgICAgKiB3aGVuIHggaXMgYW4gYXJyYXkuICAqLw0KPj4+Pj4gKyAgICAgIGlmIChU UkVFX0NPREUgKFRSRUVfVFlQRSAoeCkpID09IEFSUkFZX1RZUEUpDQo+Pj4+PiArCVRZUEVfSU5D TFVERV9GTEVYQVJSQVkgKHQpID0gZmxleGlibGVfYXJyYXlfbWVtYmVyX3R5cGVfcCAoVFJFRV9U WVBFICh4KSkgOw0KPj4+Pj4gKyAgICAgIC8qIFJlY3Vyc2l2ZWx5IHNldCBUWVBFX0lOQ0xVREVf RkxFWEFSUkFZIGZvciB0aGUgY29udGV4dCBvZiB4LCB0DQo+Pj4+PiArCSB3aGVuIHggaXMgdGhl IGxhc3QgZmllbGQuICAqLw0KPj4+Pj4gKyAgICAgIGVsc2UgaWYgKChUUkVFX0NPREUgKFRSRUVf VFlQRSAoeCkpID09IFJFQ09SRF9UWVBFDQo+Pj4+PiArCQl8fCBUUkVFX0NPREUgKFRSRUVfVFlQ RSAoeCkpID09IFVOSU9OX1RZUEUpDQo+Pj4+PiArCSAgICAgICAmJiBUWVBFX0lOQ0xVREVfRkxF WEFSUkFZIChUUkVFX1RZUEUgKHgpKQ0KPj4+Pj4gKwkgICAgICAgJiYgaXNfbGFzdF9maWVsZCkN Cj4+Pj4+ICsJVFlQRV9JTkNMVURFX0ZMRVhBUlJBWSAodCkgPSB0cnVlOw0KPj4+Pj4gKw0KPj4+ Pj4gICAgIGlmIChERUNMX05BTUUgKHgpDQo+Pj4+PiAJICB8fCBSRUNPUkRfT1JfVU5JT05fVFlQ RV9QIChUUkVFX1RZUEUgKHgpKSkNCj4+Pj4+IAlzYXdfbmFtZWRfZmllbGQgPSB0cnVlOw0KPj4+ Pj4gZGlmZiAtLWdpdCBhL2djYy9jcC9tb2R1bGUuY2MgYi9nY2MvY3AvbW9kdWxlLmNjDQo+Pj4+ PiBpbmRleCBhYzJmZTY2YjA4MC4uYzc1MDM2MWI3MDQgMTAwNjQ0DQo+Pj4+PiAtLS0gYS9nY2Mv Y3AvbW9kdWxlLmNjDQo+Pj4+PiArKysgYi9nY2MvY3AvbW9kdWxlLmNjDQo+Pj4+PiBAQCAtNTM3 MSw2ICs1MzcxLDcgQEAgdHJlZXNfb3V0Ojpjb3JlX2Jvb2xzICh0cmVlIHQpDQo+Pj4+PiAgICAg V0IgKHQtPnR5cGVfY29tbW9uLmxhbmdfZmxhZ181KTsNCj4+Pj4+ICAgICBXQiAodC0+dHlwZV9j b21tb24ubGFuZ19mbGFnXzYpOw0KPj4+Pj4gICAgIFdCICh0LT50eXBlX2NvbW1vbi50eXBlbGVz c19zdG9yYWdlKTsNCj4+Pj4+ICsgICAgICBXQiAodC0+dHlwZV9jb21tb24udHlwZV9pbmNsdWRl X2ZsZXhhcnJheSk7DQo+Pj4+PiAgIH0NCj4+Pj4+IA0KPj4+Pj4gaWYgKENPREVfQ09OVEFJTlNf U1RSVUNUIChjb2RlLCBUU19ERUNMX0NPTU1PTikpDQo+Pj4+PiBAQCAtNTU1MSw2ICs1NTUyLDcg QEAgdHJlZXNfaW46OmNvcmVfYm9vbHMgKHRyZWUgdCkNCj4+Pj4+ICAgICBSQiAodC0+dHlwZV9j b21tb24ubGFuZ19mbGFnXzUpOw0KPj4+Pj4gICAgIFJCICh0LT50eXBlX2NvbW1vbi5sYW5nX2Zs YWdfNik7DQo+Pj4+PiAgICAgUkIgKHQtPnR5cGVfY29tbW9uLnR5cGVsZXNzX3N0b3JhZ2UpOw0K Pj4+Pj4gKyAgICAgIFJCICh0LT50eXBlX2NvbW1vbi50eXBlX2luY2x1ZGVfZmxleGFycmF5KTsN Cj4+Pj4+ICAgfQ0KPj4+Pj4gDQo+Pj4+PiBpZiAoQ09ERV9DT05UQUlOU19TVFJVQ1QgKGNvZGUs IFRTX0RFQ0xfQ09NTU9OKSkNCj4+Pj4+IGRpZmYgLS1naXQgYS9nY2MvcHJpbnQtdHJlZS5jYyBi L2djYy9wcmludC10cmVlLmNjDQo+Pj4+PiBpbmRleCAxZjNhZmNiYmM4Ni4uZWZhY2RiNzY4NmYg MTAwNjQ0DQo+Pj4+PiAtLS0gYS9nY2MvcHJpbnQtdHJlZS5jYw0KPj4+Pj4gKysrIGIvZ2NjL3By aW50LXRyZWUuY2MNCj4+Pj4+IEBAIC02MzEsNiArNjMxLDExIEBAIHByaW50X25vZGUgKEZJTEUg KmZpbGUsIGNvbnN0IGNoYXIgKnByZWZpeCwgdHJlZSBub2RlLCBpbnQgaW5kZW50LA0KPj4+Pj4g CSAgJiYgVFlQRV9DWFhfT0RSX1AgKG5vZGUpKQ0KPj4+Pj4gCWZwdXRzICgiIGN4eC1vZHItcCIs IGZpbGUpOw0KPj4+Pj4gDQo+Pj4+PiArICAgICAgaWYgKChjb2RlID09IFJFQ09SRF9UWVBFDQo+ Pj4+PiArCSAgIHx8IGNvZGUgPT0gVU5JT05fVFlQRSkNCj4+Pj4+ICsJICAmJiBUWVBFX0lOQ0xV REVfRkxFWEFSUkFZIChub2RlKSkNCj4+Pj4+ICsJZnB1dHMgKCIgaW5jbHVkZS1mbGV4YXJyYXki LCBmaWxlKTsNCj4+Pj4+ICsNCj4+Pj4+ICAgICAvKiBUaGUgdHJhbnNwYXJlbnQtdW5pb24gZmxh ZyBpcyB1c2VkIGZvciBkaWZmZXJlbnQgdGhpbmdzIGluDQo+Pj4+PiAJIGRpZmZlcmVudCBub2Rl cy4gICovDQo+Pj4+PiAgICAgaWYgKChjb2RlID09IFVOSU9OX1RZUEUgfHwgY29kZSA9PSBSRUNP UkRfVFlQRSkNCj4+Pj4+IGRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9idWlsdGlu LW9iamVjdC1zaXplLXByMTAxODMyLmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9idWlsdGluLW9i amVjdC1zaXplLXByMTAxODMyLmMNCj4+Pj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+Pj4+PiBp bmRleCAwMDAwMDAwMDAwMC4uNjAwNzhlMTE2MzQNCj4+Pj4+IC0tLSAvZGV2L251bGwNCj4+Pj4+ ICsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL2J1aWx0aW4tb2JqZWN0LXNpemUtcHIxMDE4MzIu Yw0KPj4+Pj4gQEAgLTAsMCArMSwxMzQgQEANCj4+Pj4+ICsvKiBQUiAxMDE4MzI6IA0KPj4+Pj4g KyAgIEdDQyBleHRlbnNpb24gYWNjZXB0cyB0aGUgY2FzZSB3aGVuIGEgc3RydWN0IHdpdGggYSBD OTkgZmxleGlibGUgYXJyYXkNCj4+Pj4+ICsgICBtZW1iZXIgaXMgZW1iZWRkZWQgaW50byBhbm90 aGVyIHN0cnVjdCAocG9zc2libHkgcmVjdXJzaXZlbHkpLg0KPj4+Pj4gKyAgIF9fYnVpbHRpbl9v YmplY3Rfc2l6ZSB3aWxsIHRyZWF0IHN1Y2ggc3RydWN0IGFzIGZsZXhpYmxlIHNpemUuDQo+Pj4+ PiArICAgSG93ZXZlciwgd2hlbiBhIHN0cnVjdHVyZSB3aXRoIG5vbi1DOTkgZmxleGlibGUgYXJy YXkgbWVtYmVyLCBpLmUsIHRyYWlsaW5nDQo+Pj4+PiArICAgWzBdLCBbMV0sIG9yIFs0XSwgaXMg ZW1iZWRkZWQgaW50byBhbnRoZXIgc3RydWN0LCB0aGUgc3R1Y3R1cmUgd2lsbCBub3QNCj4+Pj4+ ICsgICBiZSB0cmVhdGVkIGFzIGZsZXhpYmxlIHNpemUuICAqLyANCj4+Pj4+ICsvKiB7IGRnLWRv IHJ1biB9ICovDQo+Pj4+PiArLyogeyBkZy1vcHRpb25zICItTzIiIH0gKi8NCj4+Pj4+ICsNCj4+ Pj4+ICsjaW5jbHVkZSAiYnVpbHRpbi1vYmplY3Qtc2l6ZS1jb21tb24uaCINCj4+Pj4+ICsNCj4+ Pj4+ICsjZGVmaW5lIGV4cGVjdChwLCBfdikgZG8geyBcDQo+Pj4+PiArICBzaXplX3QgdiA9IF92 OyBcDQo+Pj4+PiArICBpZiAocCA9PSB2KSBcDQo+Pj4+PiArICAgIF9fYnVpbHRpbl9wcmludGYg KCJvazogICVzID09ICV6ZFxuIiwgI3AsIHApOyBcDQo+Pj4+PiArICBlbHNlIHtcDQo+Pj4+PiAr ICAgIF9fYnVpbHRpbl9wcmludGYgKCJXQVQ6ICVzID09ICV6ZCAoZXhwZWN0ZWQgJXpkKVxuIiwg I3AsIHAsIHYpOyBcDQo+Pj4+PiArICAgIEZBSUwgKCk7IFwNCj4+Pj4+ICsgIH0gXA0KPj4+Pj4g K30gd2hpbGUgKDApOw0KPj4+Pj4gKw0KPj4+Pj4gKw0KPj4+Pj4gK3N0cnVjdCBBIHsNCj4+Pj4+ ICsgIGludCBuOw0KPj4+Pj4gKyAgY2hhciBkYXRhW107DQo+Pj4+PiArfTsNCj4+Pj4+ICsNCj4+ Pj4+ICtzdHJ1Y3QgQiB7DQo+Pj4+PiArICBpbnQgbTsNCj4+Pj4+ICsgIHN0cnVjdCBBIGE7DQo+ Pj4+PiArfTsNCj4+Pj4+ICsNCj4+Pj4+ICtzdHJ1Y3QgQyB7DQo+Pj4+PiArICBpbnQgcTsNCj4+ Pj4+ICsgIHN0cnVjdCBCIGI7DQo+Pj4+PiArfTsNCj4+Pj4+ICsNCj4+Pj4+ICtzdHJ1Y3QgQTAg ew0KPj4+Pj4gKyAgaW50IG47DQo+Pj4+PiArICBjaGFyIGRhdGFbMF07DQo+Pj4+PiArfTsNCj4+ Pj4+ICsNCj4+Pj4+ICtzdHJ1Y3QgQjAgew0KPj4+Pj4gKyAgaW50IG07DQo+Pj4+PiArICBzdHJ1 Y3QgQTAgYTsNCj4+Pj4+ICt9Ow0KPj4+Pj4gKw0KPj4+Pj4gK3N0cnVjdCBDMCB7DQo+Pj4+PiAr ICBpbnQgcTsNCj4+Pj4+ICsgIHN0cnVjdCBCMCBiOw0KPj4+Pj4gK307DQo+Pj4+PiArDQo+Pj4+ PiArc3RydWN0IEExIHsNCj4+Pj4+ICsgIGludCBuOw0KPj4+Pj4gKyAgY2hhciBkYXRhWzFdOw0K Pj4+Pj4gK307DQo+Pj4+PiArDQo+Pj4+PiArc3RydWN0IEIxIHsNCj4+Pj4+ICsgIGludCBtOw0K Pj4+Pj4gKyAgc3RydWN0IEExIGE7DQo+Pj4+PiArfTsNCj4+Pj4+ICsNCj4+Pj4+ICtzdHJ1Y3Qg QzEgew0KPj4+Pj4gKyAgaW50IHE7DQo+Pj4+PiArICBzdHJ1Y3QgQjEgYjsNCj4+Pj4+ICt9Ow0K Pj4+Pj4gKw0KPj4+Pj4gK3N0cnVjdCBBbiB7DQo+Pj4+PiArICBpbnQgbjsNCj4+Pj4+ICsgIGNo YXIgZGF0YVs4XTsNCj4+Pj4+ICt9Ow0KPj4+Pj4gKw0KPj4+Pj4gK3N0cnVjdCBCbiB7DQo+Pj4+ PiArICBpbnQgbTsNCj4+Pj4+ICsgIHN0cnVjdCBBbiBhOw0KPj4+Pj4gK307DQo+Pj4+PiArDQo+ Pj4+PiArc3RydWN0IENuIHsNCj4+Pj4+ICsgIGludCBxOw0KPj4+Pj4gKyAgc3RydWN0IEJuIGI7 DQo+Pj4+PiArfTsNCj4+Pj4+ICsNCj4+Pj4+ICt2b2xhdGlsZSB2b2lkICptYWdpYzEsICptYWdp YzI7DQo+Pj4+PiArDQo+Pj4+PiAraW50IG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pDQo+ Pj4+PiArew0KPj4+Pj4gKyAgc3RydWN0IEIgKm91dGVyOw0KPj4+Pj4gKyAgc3RydWN0IEMgKm91 dGVzdDsNCj4+Pj4+ICsNCj4+Pj4+ICsgIC8qIE1ha2Ugc3VyZSBvcHRpbWl6YXRpb24gY2FuJ3Qg ZmluZCBzb21lIG90aGVyIG9iamVjdCBzaXplLiAqLw0KPj4+Pj4gKyAgb3V0ZXIgPSAodm9pZCAq KW1hZ2ljMTsNCj4+Pj4+ICsgIG91dGVzdCA9ICh2b2lkICopbWFnaWMyOw0KPj4+Pj4gKw0KPj4+ Pj4gKyAgZXhwZWN0IChfX2J1aWx0aW5fb2JqZWN0X3NpemUgKCZvdXRlci0+YSwgMSksIC0xKTsN Cj4+Pj4+ICsgIGV4cGVjdCAoX19idWlsdGluX29iamVjdF9zaXplICgmb3V0ZXN0LT5iLCAxKSwg LTEpOw0KPj4+Pj4gKyAgZXhwZWN0IChfX2J1aWx0aW5fb2JqZWN0X3NpemUgKCZvdXRlc3QtPmIu YSwgMSksIC0xKTsNCj4+Pj4+ICsNCj4+Pj4+ICsgIHN0cnVjdCBCMCAqb3V0ZXIwOw0KPj4+Pj4g KyAgc3RydWN0IEMwICpvdXRlc3QwOw0KPj4+Pj4gKw0KPj4+Pj4gKyAgLyogTWFrZSBzdXJlIG9w dGltaXphdGlvbiBjYW4ndCBmaW5kIHNvbWUgb3RoZXIgb2JqZWN0IHNpemUuICovDQo+Pj4+PiAr ICBvdXRlcjAgPSAodm9pZCAqKW1hZ2ljMTsNCj4+Pj4+ICsgIG91dGVzdDAgPSAodm9pZCAqKW1h Z2ljMjsNCj4+Pj4+ICsNCj4+Pj4+ICsgIGV4cGVjdCAoX19idWlsdGluX29iamVjdF9zaXplICgm b3V0ZXIwLT5hLCAxKSwgc2l6ZW9mIChvdXRlcjAtPmEpKTsNCj4+Pj4+ICsgIGV4cGVjdCAoX19i dWlsdGluX29iamVjdF9zaXplICgmb3V0ZXN0MC0+YiwgMSksIHNpemVvZiAob3V0ZXN0MC0+Yikp Ow0KPj4+Pj4gKyAgZXhwZWN0IChfX2J1aWx0aW5fb2JqZWN0X3NpemUgKCZvdXRlc3QwLT5iLmEs IDEpLCBzaXplb2YgKG91dGVzdDAtPmIuYSkpOw0KPj4+Pj4gKw0KPj4+Pj4gKyAgc3RydWN0IEIx ICpvdXRlcjE7DQo+Pj4+PiArICBzdHJ1Y3QgQzEgKm91dGVzdDE7DQo+Pj4+PiArDQo+Pj4+PiAr ICAvKiBNYWtlIHN1cmUgb3B0aW1pemF0aW9uIGNhbid0IGZpbmQgc29tZSBvdGhlciBvYmplY3Qg c2l6ZS4gKi8NCj4+Pj4+ICsgIG91dGVyMSA9ICh2b2lkICopbWFnaWMxOw0KPj4+Pj4gKyAgb3V0 ZXN0MSA9ICh2b2lkICopbWFnaWMyOw0KPj4+Pj4gKw0KPj4+Pj4gKyAgZXhwZWN0IChfX2J1aWx0 aW5fb2JqZWN0X3NpemUgKCZvdXRlcjEtPmEsIDEpLCBzaXplb2YgKG91dGVyMS0+YSkpOw0KPj4+ Pj4gKyAgZXhwZWN0IChfX2J1aWx0aW5fb2JqZWN0X3NpemUgKCZvdXRlc3QxLT5iLCAxKSwgc2l6 ZW9mIChvdXRlc3QxLT5iKSk7DQo+Pj4+PiArICBleHBlY3QgKF9fYnVpbHRpbl9vYmplY3Rfc2l6 ZSAoJm91dGVzdDEtPmIuYSwgMSksIHNpemVvZiAob3V0ZXN0MS0+Yi5hKSk7DQo+Pj4+PiArDQo+ Pj4+PiArICBzdHJ1Y3QgQm4gKm91dGVybjsNCj4+Pj4+ICsgIHN0cnVjdCBDbiAqb3V0ZXN0bjsN Cj4+Pj4+ICsNCj4+Pj4+ICsgIC8qIE1ha2Ugc3VyZSBvcHRpbWl6YXRpb24gY2FuJ3QgZmluZCBz b21lIG90aGVyIG9iamVjdCBzaXplLiAqLw0KPj4+Pj4gKyAgb3V0ZXJuID0gKHZvaWQgKiltYWdp YzE7DQo+Pj4+PiArICBvdXRlc3RuID0gKHZvaWQgKiltYWdpYzI7DQo+Pj4+PiArDQo+Pj4+PiAr ICBleHBlY3QgKF9fYnVpbHRpbl9vYmplY3Rfc2l6ZSAoJm91dGVybi0+YSwgMSksIHNpemVvZiAo b3V0ZXJuLT5hKSk7DQo+Pj4+PiArICBleHBlY3QgKF9fYnVpbHRpbl9vYmplY3Rfc2l6ZSAoJm91 dGVzdG4tPmIsIDEpLCBzaXplb2YgKG91dGVzdG4tPmIpKTsNCj4+Pj4+ICsgIGV4cGVjdCAoX19i dWlsdGluX29iamVjdF9zaXplICgmb3V0ZXN0bi0+Yi5hLCAxKSwgc2l6ZW9mIChvdXRlc3RuLT5i LmEpKTsNCj4+Pj4+ICsNCj4+Pj4+ICsgIERPTkUgKCk7DQo+Pj4+PiArICByZXR1cm4gMDsNCj4+ Pj4+ICt9DQo+Pj4+PiBkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUtY29yZS5oIGIvZ2NjL3RyZWUtY29y ZS5oDQo+Pj4+PiBpbmRleCBhY2Q4ZGVlYTM0ZS4uNzA1ZDU3MDJiOWMgMTAwNjQ0DQo+Pj4+PiAt LS0gYS9nY2MvdHJlZS1jb3JlLmgNCj4+Pj4+ICsrKyBiL2djYy90cmVlLWNvcmUuaA0KPj4+Pj4g QEAgLTE3MTgsNyArMTcxOCw5IEBAIHN0cnVjdCBHVFkoKCkpIHRyZWVfdHlwZV9jb21tb24gew0K Pj4+Pj4gdW5zaWduZWQgZW1wdHlfZmxhZyA6IDE7DQo+Pj4+PiB1bnNpZ25lZCBpbmRpdmlzaWJs ZV9wIDogMTsNCj4+Pj4+IFJFQ09SRF9PUl9VTklPTl9DSEVDSw0KPj4+PiANCj4+Pj4gaXQgbG9v a3MgbGlrZSB0aGUgYml0IGNvdWxkIGJlIGV2ZW50dWFsbHkgc2hhcmVkIHdpdGgNCj4+Pj4gbm9f bmFtZWRfYXJnc19zdGRhcmdfcCAoYnV0IGl0cyBhY2Nlc3NvciBkb2Vzbid0IHVzZQ0KPj4+PiBG VU5DX09SX01FVEhPRF9DSEVDSykNCj4+PiBZb3UgbWVhbiB0byBsZXQg4oCcdHlwZV9pbmNsdWRl X2ZsZXhhcnJheeKAnSBzaGFyZSB0aGUgc2FtZSBiaXQgd2l0aCDigJxub19uYW1lZF9hcmdzX3N0 ZGFyZ19w4oCdIGluIG9yZGVyIHRvIHNhdmUgMS1iaXQgc3BhY2UgaW4gSVI/DQo+Pj4gVGhlbiBj aGFuZ2UgdGhlIA0KPj4+IA0KPj4+IC8qIFRydWUgaWYgdGhpcyBpcyBhIHN0ZGFyZyBmdW5jdGlv biB3aXRoIG5vIG5hbWVkIGFyZ3VtZW50cyAoQzJ4DQo+Pj4gICguLi4pIHByb3RvdHlwZSwgd2hl cmUgYXJndW1lbnRzIGNhbiBiZSBhY2Nlc3NlZCB3aXRoIHZhX3N0YXJ0IGFuZA0KPj4+ICB2YV9h cmcpLCBhcyBvcHBvc2VkIHRvIGFuIHVucHJvdG90eXBlZCBmdW5jdGlvbi4gICovDQo+Pj4gI2Rl ZmluZSBUWVBFX05PX05BTUVEX0FSR1NfU1REQVJHX1AoTk9ERSkgXA0KPj4+IChUWVBFX0NIRUNL IChOT0RFKS0+dHlwZV9jb21tb24ubm9fbmFtZWRfYXJnc19zdGRhcmdfcCkNCj4+PiANCj4+PiAv KiBUcnVlIGlmIHRoaXMgUkVDT1JEX1RZUEUgb3IgVU5JT05fVFlQRSBpbmNsdWRlcyBhIGZsZXhp YmxlIGFycmF5IG1lbWJlcg0KPj4+ICBhdCB0aGUgbGFzdCBmaWVsZCByZWN1cnNpdmVseS4gICov DQo+Pj4gI2RlZmluZSBUWVBFX0lOQ0xVREVfRkxFWEFSUkFZKE5PREUpIFwNCj4+PiAoVFlQRV9D SEVDSyAoTk9ERSktPnR5cGVfY29tbW9uLnR5cGVfaW5jbHVkZV9mbGV4YXJyYXkpDQo+Pj4gDQo+ Pj4gVG86DQo+Pj4gDQo+Pj4gdW5pb24gew0KPj4+ICAgdW5zaWduZWQgbm9fbmFtZWRfYXJnc19z dGRhcmdfcCA6IDE7DQo+Pj4gICAvKiBUWVBFX0lOQ0xVREVfRkxFWEFSUkFZIGZsYWcgZm9yIFJF Q09SRF9UWVBFIGFuZCBVTklPTl9UWVBFLiAgKi8NCj4+PiAgIHVuc2lnbmVkIGludCB0eXBlX2lu Y2x1ZGVfZmxleGFycmF5IDogMTsNCj4+PiB9IHNoYXJlZF9iaXQ7DQo+Pj4gdW5zaWduZWQgc3Bh cmUgOiAxNTsNCj4+PiANCj4+PiAvKiBUcnVlIGlmIHRoaXMgaXMgYSBzdGRhcmcgZnVuY3Rpb24g d2l0aCBubyBuYW1lZCBhcmd1bWVudHMgKEMyeA0KPj4+ICAoLi4uKSBwcm90b3R5cGUsIHdoZXJl IGFyZ3VtZW50cyBjYW4gYmUgYWNjZXNzZWQgd2l0aCB2YV9zdGFydCBhbmQNCj4+PiAgdmFfYXJn KSwgYXMgb3Bwb3NlZCB0byBhbiB1bnByb3RvdHlwZWQgZnVuY3Rpb24uICAqLw0KPj4+ICNkZWZp bmUgVFlQRV9OT19OQU1FRF9BUkdTX1NUREFSR19QKE5PREUpIFwNCj4+PiAoRlVOQ19PUl9NRVRI T0RfQ0hFQ0sgKE5PREUpLT50eXBlX2NvbW1vbi5zaGFyZWRfYml0Lm5vX25hbWVkX2FyZ3Nfc3Rk YXJnX3ApDQo+Pj4gDQo+Pj4gLyogVHJ1ZSBpZiB0aGlzIFJFQ09SRF9UWVBFIG9yIFVOSU9OX1RZ UEUgaW5jbHVkZXMgYSBmbGV4aWJsZSBhcnJheSBtZW1iZXINCj4+PiAgYXQgdGhlIGxhc3QgZmll bGQgcmVjdXJzaXZlbHkuICAqLw0KPj4+ICNkZWZpbmUgVFlQRV9JTkNMVURFX0ZMRVhBUlJBWShO T0RFKSBcDQo+Pj4gKFJFQ09SRF9PUl9VTklPTl9DSEVDSyhOT0RFKS0+dHlwZV9jb21tb24uc2hh cmVkX2JpdC50eXBlX2luY2x1ZGVfZmxleGFycmF5KQ0KPj4gDQo+PiBObywgd2UncmUganVzdCBv dmVybG9hZGluZyBiaXRzIGJ5IHVzaW5nIHRoZSBzYW1lIG5hbWUgZm9yIGRpZmZlcmVudA0KPj4g cHVycG9zZXMuICBJIGRvbid0IHRoaW5rIHN1Y2ggYSB1bmlvbiB3b3VsZCBwYWNrIG5pY2VseS4g IFdlIG92ZXJsb2FkDQo+PiBieSBkb2N1bWVudGluZyB0aGUgdXNlcywgaW4gdGhlIGFib3ZlIGNh c2VzIHRoZSB1c2VzIGFyZSBzZXBhcmF0ZWQNCj4+IGJ5IHRoZSBraW5kIG9mIHRoZSB0cmVlIG5v ZGUsIFJFQ09SRC9VTklPTl9UWVBFIHZzLiBGVU5DVElPTi9NRVRIT0RfVFlQRQ0KPj4gYW5kIHRo ZSBhY2Nlc3NvciBtYWNyb3Mgc2hvdWxkIGJlIHVwZGF0ZWQgdG8gdXNlIHRoZSBhcHByb3ByaWF0 ZQ0KPj4gdHJlZSBjaGVjayBtYWNyb3MgY292ZXJpbmcgdGhhdCBzbyB3ZSBkb24ndCB0cnkgdG8g aW5zcGVjdCB0aGUNCj4+ICJ3cm9uZyBiaXTigJ0uDQo+IE9rYXksIEkgc2VlLiBUaGVuIHNob3Vs ZCBJIGNoYW5nZSB0aGUgbmFtZSBvZiB0aGF0IGJpdCB0byBvbmUgdGhhdCByZWZsZWN0IHR3byB1 c2FnZXM/DQo+PiANCj4+Pj4gDQo+Pj4+PiBhbGlhc19zZXRfdHlwZSBhbGlhc19zZXQ7DQo+Pj4+ PiB0cmVlIHBvaW50ZXJfdG87DQo+Pj4+PiBkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUtb2JqZWN0LXNp emUuY2MgYi9nY2MvdHJlZS1vYmplY3Qtc2l6ZS5jYw0KPj4+Pj4gaW5kZXggOWE5MzZhOTE5ODMu LjIyYjNjNzJlYTZlIDEwMDY0NA0KPj4+Pj4gLS0tIGEvZ2NjL3RyZWUtb2JqZWN0LXNpemUuY2MN Cj4+Pj4+ICsrKyBiL2djYy90cmVlLW9iamVjdC1zaXplLmNjDQo+Pj4+PiBAQCAtNjMzLDQ1ICs2 MzMsNjggQEAgYWRkcl9vYmplY3Rfc2l6ZSAoc3RydWN0IG9iamVjdF9zaXplX2luZm8gKm9zaSwg Y29uc3RfdHJlZSBwdHIsDQo+Pj4+PiAJCSAgICB2ID0gTlVMTF9UUkVFOw0KPj4+Pj4gCQkgICAg YnJlYWs7DQo+Pj4+PiAJCSAgY2FzZSBDT01QT05FTlRfUkVGOg0KPj4+Pj4gLQkJICAgIGlmIChU UkVFX0NPREUgKFRSRUVfVFlQRSAodikpICE9IEFSUkFZX1RZUEUpDQo+Pj4+PiArCQkgICAgLyog V2hlbiB0aGUgcmVmIGlzIG5vdCB0byBhbiBhcnJheSwgYSByZWNvcmQgb3IgYSB1bmlvbiwgaXQN Cj4+Pj4+ICsJCSAgICAgICB3aWxsIG5vdCBoYXZlIGZsZXhpYmxlIHNpemUsIGNvbXB1dGUgdGhl IG9iamVjdCBzaXplDQo+Pj4+PiArCQkgICAgICAgZGlyZWN0bHkuICAqLw0KPj4+Pj4gKwkJICAg IGlmICgoVFJFRV9DT0RFIChUUkVFX1RZUEUgKHYpKSAhPSBBUlJBWV9UWVBFKQ0KPj4+Pj4gKwkJ CSYmIChUUkVFX0NPREUgKFRSRUVfVFlQRSAodikpICE9IFJFQ09SRF9UWVBFKQ0KPj4+Pj4gKwkJ CSYmIChUUkVFX0NPREUgKFRSRUVfVFlQRSAodikpICE9IFVOSU9OX1RZUEUpKQ0KPj4+Pj4gCQkg ICAgICB7DQo+Pj4+PiAJCQl2ID0gTlVMTF9UUkVFOw0KPj4+Pj4gCQkJYnJlYWs7DQo+Pj4+PiAJ CSAgICAgIH0NCj4+Pj4+IC0JCSAgICBpc19mbGV4aWJsZV9hcnJheV9tZW1fcmVmID0gYXJyYXlf cmVmX2ZsZXhpYmxlX3NpemVfcCAodik7DQo+Pj4+PiAtCQkgICAgd2hpbGUgKHYgIT0gcHRfdmFy ICYmIFRSRUVfQ09ERSAodikgPT0gQ09NUE9ORU5UX1JFRikNCj4+Pj4+IC0JCSAgICAgIGlmIChU UkVFX0NPREUgKFRSRUVfVFlQRSAoVFJFRV9PUEVSQU5EICh2LCAwKSkpDQo+Pj4+PiAtCQkJICAh PSBVTklPTl9UWVBFDQo+Pj4+PiAtCQkJICAmJiBUUkVFX0NPREUgKFRSRUVfVFlQRSAoVFJFRV9P UEVSQU5EICh2LCAwKSkpDQo+Pj4+PiAtCQkJICAhPSBRVUFMX1VOSU9OX1RZUEUpDQo+Pj4+PiAt CQkJYnJlYWs7DQo+Pj4+PiAtCQkgICAgICBlbHNlDQo+Pj4+PiAtCQkJdiA9IFRSRUVfT1BFUkFO RCAodiwgMCk7DQo+Pj4+PiAtCQkgICAgaWYgKFRSRUVfQ09ERSAodikgPT0gQ09NUE9ORU5UX1JF Rg0KPj4+Pj4gLQkJCSYmIFRSRUVfQ09ERSAoVFJFRV9UWVBFIChUUkVFX09QRVJBTkQgKHYsIDAp KSkNCj4+Pj4+IC0JCQkgICA9PSBSRUNPUkRfVFlQRSkNCj4+Pj4+ICsJCSAgICBpZiAoVFJFRV9D T0RFIChUUkVFX1RZUEUgKHYpKSA9PSBSRUNPUkRfVFlQRQ0KPj4+Pj4gKwkJCXx8IFRSRUVfQ09E RSAoVFJFRV9UWVBFICh2KSkgPT0gVU5JT05fVFlQRSkNCj4+Pj4+ICsJCSAgICAvKiBpZiB0aGUg cmVjb3JkIG9yIHVuaW9uIGRvZXMgbm90IGluY2x1ZGUgYSBmbGV4aWJsZSBhcnJheQ0KPj4+Pj4g KwkJICAgICAgIHJlY3Vyc2l2ZWx5LCBjb21wdXRlIHRoZSBvYmplY3Qgc2l6ZSBkaXJlY3RseS4g ICovDQo+Pj4+PiAJCSAgICAgIHsNCj4+Pj4+IC0JCQkvKiBjb21wdXRlIG9iamVjdCBzaXplIG9u bHkgaWYgdiBpcyBub3QgYQ0KPj4+Pj4gLQkJCSAgIGZsZXhpYmxlIGFycmF5IG1lbWJlci4gICov DQo+Pj4+PiAtCQkJaWYgKCFpc19mbGV4aWJsZV9hcnJheV9tZW1fcmVmKQ0KPj4+Pj4gKwkJCWlm ICghVFlQRV9JTkNMVURFX0ZMRVhBUlJBWSAoVFJFRV9UWVBFICh2KSkpDQo+Pj4+PiAJCQkgIHsN Cj4+Pj4+IAkJCSAgICB2ID0gTlVMTF9UUkVFOw0KPj4+Pj4gCQkJICAgIGJyZWFrOw0KPj4+Pj4g CQkJICB9DQo+Pj4+PiAtCQkJdiA9IFRSRUVfT1BFUkFORCAodiwgMCk7DQo+Pj4+PiArCQkJZWxz ZQ0KPj4+Pj4gKwkJCSAgdiA9IFRSRUVfT1BFUkFORCAodiwgMCk7DQo+Pj4+PiAJCSAgICAgIH0N Cj4+Pj4+IC0JCSAgICB3aGlsZSAodiAhPSBwdF92YXIgJiYgVFJFRV9DT0RFICh2KSA9PSBDT01Q T05FTlRfUkVGKQ0KPj4+Pj4gLQkJICAgICAgaWYgKFRSRUVfQ09ERSAoVFJFRV9UWVBFIChUUkVF X09QRVJBTkQgKHYsIDApKSkNCj4+Pj4+IC0JCQkgICE9IFVOSU9OX1RZUEUNCj4+Pj4+IC0JCQkg ICYmIFRSRUVfQ09ERSAoVFJFRV9UWVBFIChUUkVFX09QRVJBTkQgKHYsIDApKSkNCj4+Pj4+IC0J CQkgICE9IFFVQUxfVU5JT05fVFlQRSkNCj4+Pj4+IC0JCQlicmVhazsNCj4+Pj4+IC0JCSAgICAg IGVsc2UNCj4+Pj4+IC0JCQl2ID0gVFJFRV9PUEVSQU5EICh2LCAwKTsNCj4+Pj4+IC0JCSAgICBp ZiAodiAhPSBwdF92YXIpDQo+Pj4+PiAtCQkgICAgICB2ID0gTlVMTF9UUkVFOw0KPj4+Pj4gCQkg ICAgZWxzZQ0KPj4+Pj4gLQkJICAgICAgdiA9IHB0X3ZhcjsNCj4+Pj4+ICsJCSAgICAgIHsNCj4+ Pj4+ICsJCQkvKiBOb3cgdGhlIHJlZiBpcyB0byBhbiBhcnJheSB0eXBlLiAgKi8NCj4+Pj4+ICsJ CQlpc19mbGV4aWJsZV9hcnJheV9tZW1fcmVmDQo+Pj4+PiArCQkJICA9IGFycmF5X3JlZl9mbGV4 aWJsZV9zaXplX3AgKHYpOw0KPj4+Pj4gKwkJCXdoaWxlICh2ICE9IHB0X3ZhciAmJiBUUkVFX0NP REUgKHYpID09IENPTVBPTkVOVF9SRUYpDQo+Pj4+PiArCQkJaWYgKFRSRUVfQ09ERSAoVFJFRV9U WVBFIChUUkVFX09QRVJBTkQgKHYsIDApKSkNCj4+Pj4+ICsJCQkgICAgICAhPSBVTklPTl9UWVBF DQo+Pj4+PiArCQkJICAgICYmIFRSRUVfQ09ERSAoVFJFRV9UWVBFIChUUkVFX09QRVJBTkQgKHYs IDApKSkNCj4+Pj4+ICsJCQkJICE9IFFVQUxfVU5JT05fVFlQRSkNCj4+Pj4+ICsJCQkgIGJyZWFr Ow0KPj4+Pj4gKwkJCWVsc2UNCj4+Pj4+ICsJCQkgIHYgPSBUUkVFX09QRVJBTkQgKHYsIDApOw0K Pj4+Pj4gKwkJCWlmIChUUkVFX0NPREUgKHYpID09IENPTVBPTkVOVF9SRUYNCj4+Pj4+ICsJCQkg ICAgJiYgVFJFRV9DT0RFIChUUkVFX1RZUEUgKFRSRUVfT1BFUkFORCAodiwgMCkpKQ0KPj4+Pj4g KwkJCQkgPT0gUkVDT1JEX1RZUEUpDQo+Pj4+PiArCQkJICB7DQo+Pj4+PiArCQkJICAgIC8qIGNv bXB1dGUgb2JqZWN0IHNpemUgb25seSBpZiB2IGlzIG5vdCBhDQo+Pj4+PiArCQkJICAgICAgIGZs ZXhpYmxlIGFycmF5IG1lbWJlci4gICovDQo+Pj4+PiArCQkJICAgIGlmICghaXNfZmxleGlibGVf YXJyYXlfbWVtX3JlZikNCj4+Pj4+ICsJCQkgICAgICB7DQo+Pj4+PiArCQkJCXYgPSBOVUxMX1RS RUU7DQo+Pj4+PiArCQkJCWJyZWFrOw0KPj4+Pj4gKwkJCSAgICAgIH0NCj4+Pj4+ICsJCQkgICAg diA9IFRSRUVfT1BFUkFORCAodiwgMCk7DQo+Pj4+PiArCQkJICB9DQo+Pj4+PiArCQkJd2hpbGUg KHYgIT0gcHRfdmFyICYmIFRSRUVfQ09ERSAodikgPT0gQ09NUE9ORU5UX1JFRikNCj4+Pj4+ICsJ CQkgIGlmIChUUkVFX0NPREUgKFRSRUVfVFlQRSAoVFJFRV9PUEVSQU5EICh2LCAwKSkpDQo+Pj4+ PiArCQkJCSE9IFVOSU9OX1RZUEUNCj4+Pj4+ICsJCQkgICAgICAmJiBUUkVFX0NPREUgKFRSRUVf VFlQRSAoVFJFRV9PUEVSQU5EICh2LCAwKSkpDQo+Pj4+PiArCQkJCSAgICE9IFFVQUxfVU5JT05f VFlQRSkNCj4+Pj4+ICsJCQkgICAgYnJlYWs7DQo+Pj4+PiArCQkJICBlbHNlDQo+Pj4+PiArCQkJ ICAgIHYgPSBUUkVFX09QRVJBTkQgKHYsIDApOw0KPj4+Pj4gKwkJCWlmICh2ICE9IHB0X3ZhcikN Cj4+Pj4+ICsJCQkgIHYgPSBOVUxMX1RSRUU7DQo+Pj4+PiArCQkJZWxzZQ0KPj4+Pj4gKwkJCSAg diA9IHB0X3ZhcjsNCj4+Pj4+ICsJCSAgICAgIH0NCj4+Pj4+IAkJICAgIGJyZWFrOw0KPj4+Pj4g CQkgIGRlZmF1bHQ6DQo+Pj4+PiAJCSAgICB2ID0gcHRfdmFyOw0KPj4+Pj4gZGlmZiAtLWdpdCBh L2djYy90cmVlLXN0cmVhbWVyLWluLmNjIGIvZ2NjL3RyZWUtc3RyZWFtZXItaW4uY2MNCj4+Pj4+ IGluZGV4IGQ0ZGMzMGYwNDhmLi5jMTllZGUwNjMxZCAxMDA2NDQNCj4+Pj4+IC0tLSBhL2djYy90 cmVlLXN0cmVhbWVyLWluLmNjDQo+Pj4+PiArKysgYi9nY2MvdHJlZS1zdHJlYW1lci1pbi5jYw0K Pj4+Pj4gQEAgLTM5MCw2ICszOTAsNyBAQCB1bnBhY2tfdHNfdHlwZV9jb21tb25fdmFsdWVfZmll bGRzIChzdHJ1Y3QgYml0cGFja19kICpicCwgdHJlZSBleHByKQ0KPj4+Pj4gICAgIFRZUEVfVFJB TlNQQVJFTlRfQUdHUiAoZXhwcikgPSAodW5zaWduZWQpIGJwX3VucGFja192YWx1ZSAoYnAsIDEp Ow0KPj4+Pj4gICAgIFRZUEVfRklOQUxfUCAoZXhwcikgPSAodW5zaWduZWQpIGJwX3VucGFja192 YWx1ZSAoYnAsIDEpOw0KPj4+Pj4gICAgIFRZUEVfQ1hYX09EUl9QIChleHByKSA9ICh1bnNpZ25l ZCkgYnBfdW5wYWNrX3ZhbHVlIChicCwgMSk7DQo+Pj4+PiArICAgICAgVFlQRV9JTkNMVURFX0ZM RVhBUlJBWSAoZXhwcikgPSAodW5zaWduZWQpIGJwX3VucGFja192YWx1ZSAoYnAsIDEpOw0KPj4+ Pj4gICB9DQo+Pj4+PiBlbHNlIGlmIChUUkVFX0NPREUgKGV4cHIpID09IEFSUkFZX1RZUEUpDQo+ Pj4+PiAgIFRZUEVfTk9OQUxJQVNFRF9DT01QT05FTlQgKGV4cHIpID0gKHVuc2lnbmVkKSBicF91 bnBhY2tfdmFsdWUgKGJwLCAxKTsNCj4+Pj4+IGRpZmYgLS1naXQgYS9nY2MvdHJlZS1zdHJlYW1l ci1vdXQuY2MgYi9nY2MvdHJlZS1zdHJlYW1lci1vdXQuY2MNCj4+Pj4+IGluZGV4IGQxMDcyMjlk YTVjLi43M2U0YjRlNTQ3YyAxMDA2NDQNCj4+Pj4+IC0tLSBhL2djYy90cmVlLXN0cmVhbWVyLW91 dC5jYw0KPj4+Pj4gKysrIGIvZ2NjL3RyZWUtc3RyZWFtZXItb3V0LmNjDQo+Pj4+PiBAQCAtMzU3 LDYgKzM1Nyw3IEBAIHBhY2tfdHNfdHlwZV9jb21tb25fdmFsdWVfZmllbGRzIChzdHJ1Y3QgYml0 cGFja19kICpicCwgdHJlZSBleHByKQ0KPj4+Pj4gICAgIGJwX3BhY2tfdmFsdWUgKGJwLCBmbGFn X3dwYSAmJiBUWVBFX0NBTk9OSUNBTCAoZXhwcikNCj4+Pj4+IAkJCSA/IFRZUEVfQ1hYX09EUl9Q IChUWVBFX0NBTk9OSUNBTCAoZXhwcikpDQo+Pj4+PiAJCQkgOiBUWVBFX0NYWF9PRFJfUCAoZXhw ciksIDEpOw0KPj4+Pj4gKyAgICAgIGJwX3BhY2tfdmFsdWUgKGJwLCBUWVBFX0lOQ0xVREVfRkxF WEFSUkFZIChleHByKSwgMSk7DQo+Pj4+PiAgIH0NCj4+Pj4+IGVsc2UgaWYgKFRSRUVfQ09ERSAo ZXhwcikgPT0gQVJSQVlfVFlQRSkNCj4+Pj4+ICAgYnBfcGFja192YWx1ZSAoYnAsIFRZUEVfTk9O QUxJQVNFRF9DT01QT05FTlQgKGV4cHIpLCAxKTsNCj4+Pj4+IGRpZmYgLS1naXQgYS9nY2MvdHJl ZS5oIGIvZ2NjL3RyZWUuaA0KPj4+Pj4gaW5kZXggOTJhYzBlNmEyMTQuLmFiMWNkYzNkYzg1IDEw MDY0NA0KPj4+Pj4gLS0tIGEvZ2NjL3RyZWUuaA0KPj4+Pj4gKysrIGIvZ2NjL3RyZWUuaA0KPj4+ Pj4gQEAgLTc3OCw2ICs3NzgsMTIgQEAgZXh0ZXJuIHZvaWQgb21wX2NsYXVzZV9yYW5nZV9jaGVj a19mYWlsZWQgKGNvbnN0X3RyZWUsIGNvbnN0IGNoYXIgKiwgaW50LA0KPj4+Pj4gI2RlZmluZSBU WVBFX05PX05BTUVEX0FSR1NfU1REQVJHX1AoTk9ERSkgXA0KPj4+Pj4gKFRZUEVfQ0hFQ0sgKE5P REUpLT50eXBlX2NvbW1vbi5ub19uYW1lZF9hcmdzX3N0ZGFyZ19wKQ0KPj4+Pj4gDQo+Pj4+PiAr LyogVHJ1ZSBpZiB0aGlzIFJFQ09SRF9UWVBFIG9yIFVOSU9OX1RZUEUgaW5jbHVkZXMgYSBmbGV4 aWJsZSBhcnJheSBtZW1iZXINCj4+Pj4+ICsgICBhdCB0aGUgbGFzdCBmaWVsZCByZWN1cnNpdmVs eS4gICovDQo+Pj4+PiArI2RlZmluZSBUWVBFX0lOQ0xVREVfRkxFWEFSUkFZKE5PREUpIFwNCj4+ Pj4+ICsgIChUWVBFX0NIRUNLIChOT0RFKS0+dHlwZV9jb21tb24udHlwZV9pbmNsdWRlX2ZsZXhh cnJheSkNCj4+Pj4gDQo+Pj4+IFBsZWFzZSB1c2UgUkVDT1JEX09SX1VOSU9OX0NIRUNLLiAgDQo+ Pj4gT2theS4gDQo+Pj4+IFRoZSBjb21tZW50ICJhdCB0aGUgbGFzdCBmaWVsZCINCj4+Pj4gZG9l c24ndCBzZWVtIHRvIG1hdGNoIGltcGxlbWVudGF0aW9uPyAoYXQgbGVhc3Qgbm90IG9idmlvdXNs eSkNCj4+PiBUaGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiAoaW4gZ2NjL2MvYy1kZWNsLmNjKSBn dWFyYW50ZWVzIHRoYXQgaXTigJlzIGF0IHRoZSBsYXN0IGZpZWxkLiAoQW5kIHJlY3Vyc2l2ZWx5 KS4gDQo+Pj4+IEdpdmVuIHRoaXMgaXMgYSBnZW5lcmljIGhlYWRlciBleHBhbmRpbmcgb24gd2hh dCBhICJmbGV4aWJsZSBhcnJheSBtZW1iZXIiDQo+Pj4+IGlzIHRvIHRoZSBtaWRkbGUtZW5kIGhl cmUgd291bGQgYmUgZ29vZC4gIEVzcGVjaWFsbHkgdGhlIGd1YXJhbnRlZXMNCj4+Pj4gbWFkZSB3 aGVuIHRoZSBiaXQgaXMgX25vdF8gc2V0ICh3ZSd2ZSBldmFkZWQgdGhhdCB3aXRoIERFQ0xfTk9U X0ZMRVhBUlJBWQ0KPj4+PiB2cy4gREVDTF9GTEVYQVJSQVkpLg0KPj4+IA0KPj4+IFRoZSBiaXQg VFlQRV9JTkNMVURFX0ZMRVhBUlJBWSBkZWZhdWx0IGlzIEZBTFNFLCBpLmUsIG5vdCBpbmNsdWRp bmcgYSBmbGV4IGFycmF5IGJ5IGRlZmF1bHQuDQo+Pj4gSXTigJlzIG9ubHkgc2V0IHRvIFRSVUUg d2hlbiB0aGUgc3RydWN0L3VuaW9uIGluY2x1ZGVzIGEgZmxleCBhcnJheSBhdCB0aGUgbGFzdCBm aWVsZCAoYW5kIHJlY3Vyc2l2ZWx5KS4gU28sIEkgdGhpbmsgaXQgc2hvdWxkIGJlIGNvcnJlY3Qu IA0KPj4+IExldCBtZSBrbm93IGlmIEkgbWlzc2VkIGFueXRoaW5nIGhlcmUuDQo+PiANCj4+IFNl ZSBhYm92ZSAtIEkgd2FzIGxvb2tpbmcgYXQgdGhlIHVzZSAoYnV0IEknbSBub3QgZmFtaWxpYXIg d2l0aCB0aGF0IA0KPj4gY29kZSksIGFuZCB3b25kZXJlZCBob3cgdGhlIGNoYW5nZSBhZmZlY3Rz IHVzZXMgZnJvbSBvdGhlciBmcm9udGVuZHMuDQo+IA0KPiBQbGVhc2Ugc2VlIG15IGV4cGxhbmF0 aW9uIGFib3ZlLCBJIHRoaW5rIHRoZSBkZWZhdWx0IGJlaGF2aW9yIGZyb20gb3RoZXIgRkUgc2hv dWxkIGJlIGtlcHQgY29ycmVjdGx5IHdpdGggdGhpcyBwYXRjaC4NCj4gDQo+IHRoYW5rcy4NCj4g DQo+IFFpbmcNCj4+IA0KPj4gUmljaGFyZC4NCg0K