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 DFA8D385741A for ; Fri, 29 Jul 2022 14:23:24 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org DFA8D385741A Received: from pps.filterd (m0246632.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 26TEK0QD016871; Fri, 29 Jul 2022 14:23:18 GMT Received: from iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta03.appoci.oracle.com [130.35.103.27]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3hg9a9qg1e-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 29 Jul 2022 14:23:17 +0000 Received: from pps.filterd (iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 26TBG2oh019849; Fri, 29 Jul 2022 14:23:17 GMT Received: from nam02-dm3-obe.outbound.protection.outlook.com (mail-dm3nam02lp2043.outbound.protection.outlook.com [104.47.56.43]) by iadpaimrmta03.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3hh63bmvvt-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 29 Jul 2022 14:23:16 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=VXeqnMAcx7oIUQf1emP7sDVp+nDV0UmaUZ3ggWyTsHugt9uA1+6qVT2DuMxi1MeYKCGWiXPhiCFSai3AwGvnDQJ4uyUsfN6jO8mpUL32kxDoDlTL90vqUE2xt036DY/09r5ATg1dJHNOfMy6N6oYGMxZPK9fF6HeB1Xr/bb17d8VKPD0B6WFWZK4wgqmzcSDr7+8ez/a6VEt3EnV3yMvIOirIlCsFHbWVrBIekNASpXaatTIS6FiEQfYioWscZR6n5z7HYto380DGghkcl+TY49SA9thGjasTRVFUmapmBylj3jLCTWCQoQ2wRj03kglwiaQxb1ZDf7Xv4982V0o3w== 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=DjnuEfzQX8qFPOZdMgnMx/V/UWmub2aOrhTkBZf+uGY=; b=Z7Fm4n55rdMbvGeprC1ziUSwTRrFpXn7Smn1XIIHEo8G7gu3GnEus9LHS8OKwIPAKULdDhi752xUdAk2v4Er5EJ7yOQs18nuAsjKm0AZ7zm3YgLs+N3HUP/+JSGFy/6Rr7b56NwE6t2ZKmHYUERrqgH3SCVwtsXpNOuinkqry9EvbvQNxcHQc4m1jfncASw0LhsHpMI1ZMDPOPDpDGCK2m9Q1gpXxyTrQT5E7djDTukrnLLeO2NZ40HcmORc3dMsZBZee+ypYLAGJh1cx7z6FsX2RR24rR5bb2aPHYPLAqASdX0NGJkrUB2Mfe4e+WfPvp3vKxNzoUfuYqXDkxa4vQ== 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 Received: from CH2PR10MB4344.namprd10.prod.outlook.com (2603:10b6:610:af::19) by MN2PR10MB3470.namprd10.prod.outlook.com (2603:10b6:208:10d::29) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5458.19; Fri, 29 Jul 2022 14:23:09 +0000 Received: from CH2PR10MB4344.namprd10.prod.outlook.com ([fe80::84af:9275:f1d7:de1]) by CH2PR10MB4344.namprd10.prod.outlook.com ([fe80::84af:9275:f1d7:de1%5]) with mapi id 15.20.5482.012; Fri, 29 Jul 2022 14:23:08 +0000 From: Qing Zhao To: Richard Biener CC: gcc-patches Paul A Clarke via , jakub Jelinek , martin Sebor , kees Cook , "joseph@codesourcery.com" Subject: Re: [GCC13][Patch][V2][2/2]Add a new option -fstrict-flex-array[=n] and attribute strict_flex_array(n) and use it in PR101836 Thread-Topic: [GCC13][Patch][V2][2/2]Add a new option -fstrict-flex-array[=n] and attribute strict_flex_array(n) and use it in PR101836 Thread-Index: AQHYm3lrLL8dpSTuU0ybKJ2+MOZ/uq2TcGuAgAIGFAA= Date: Fri, 29 Jul 2022 14:23:08 +0000 Message-ID: <89AFBA07-674A-451A-9D63-BE398AC7B3EF@oracle.com> References: <1D72918C-4D6A-4583-AF14-288757C04DD0@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: 3f95fdbf-0950-408f-fe9b-08da716ddc61 x-ms-traffictypediagnostic: MN2PR10MB3470:EE_ x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: 0GZ37KJriQRbfbA75GxRxe1ggydvXrRVBKVqCktD3PLSrpqN73J5JL3KoIGf/NT4fE8bSTCePS8OauvIDHor/dLizsbdmQivM584mGNvS1ItXCxlt/P1ro/Jdzt66/+kmyGDqutr54AyRRisLYBkpB8khs5xSmmfhOw4aLLRIubqrfnexIQS9NNLGuFUO4gW4C2b2NIiUBHPAPVgi8pF1AfKcVsZhfUgYtkE8bSjnN33QI//ZkC03kQa8fJAki1mwmFIWxfWopfN+8k379BwQku32b7SGn1iQNXwOr2CB3LZNGj4bZCACqVeMDloeR+blUrIpzIV+wXRi1+s0DCgAUR3qylYQwT5lMPNFqzu5SJAg4RMzI4kTTVc2m5b5THRRQwVDdIZzNMQTXqPucE3KLVJLz8a1Rzmula7UDKuF6XBfa+knTXirHL2D33MhOrGQ6kXgA5t4GIdD9pLpQ+fTO6tNfMY1wyqCg53b5oI5cF5MIWzQVzNcpN1w5soBryMHRPfAQK/bcUwbVGl+SmSuPHjZlwWe9jYLonCm6X5uc08kr0BLioJEUJphGUgRHWL1koWO4VBGOLXwJWGi3dS9bSbEsAaQs8Wj4+jnqu7n+RFntNGY/5PEnC5l4eLdQnR80NC1tZTSeNeu4huiyFX5OakidUeM5nJOYC8R+AVvTQkCYRMTwLgZldNTlFZM+wvorqlBVx//BFiwnZUuw364q9J6JazUy/eYgIMA3DVzcXOCuRfwa3UDaHuoPtzDfwuPuzHyM1WzUNoRg/yEpAJeiHNIyz0nBq6Qvm7YT0m5klfFqg1fvIv793mNxWFEVGyM+QBRsW/f3zL9QLPaWEbWkwHHpyNSDTkWJEE3GwsigA= 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)(136003)(396003)(39860400002)(376002)(346002)(366004)(53546011)(66476007)(91956017)(76116006)(66556008)(478600001)(4326008)(64756008)(30864003)(66446008)(44832011)(6512007)(33656002)(71200400001)(8676002)(26005)(5660300002)(84970400001)(8936002)(6916009)(54906003)(41300700001)(6486002)(38070700005)(38100700002)(36756003)(66946007)(186003)(316002)(122000001)(2616005)(6506007)(83380400001)(2906002)(86362001)(45980500001)(579004); DIR:OUT; SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?ZzJjVlIweWZxdk45bE9teEtxZFlCMUluRXBiNzhSZ0lDMG9HZ2twUUl1MGRq?= =?utf-8?B?aFkvM3lSU1dkUWM0bDlIVzMxRzN0cWpha0JidG9BckE2SXhsMG1nK3pNV25P?= =?utf-8?B?aHp1YURFMGNjZmVjSm1vQVB0VzRHV3lOL1BzVzBlMHNJaHFtK2xsNHhOUCsw?= =?utf-8?B?ODRrSkk2UzV0eGJsby9xR0QwWUg5MXlJcmNhVHNQcWhPOENWWkFEMVUwQUFZ?= =?utf-8?B?d3AwWDZBNE1FeHpscG1GK1N5VkVZZnhVdlhqQ1pKSVlEaklDSEUzd0gzNzdB?= =?utf-8?B?SXJMM1ZTbHZlUllDZDJlNjdYc2N4RTd2NWNoUjV4UW1MMnd5SnRQTnFydUF2?= =?utf-8?B?WHFORkVZOHZKay9qWG8xYmI3Wk5jSzdzQlpRUDdOZnVKb1dTcEJ6cjZmN0FG?= =?utf-8?B?cG9iVTZ5bGhBUTBWWmZtQ3JoTFBGeGdLU2RlVzYrK1B3SFgwdWcxaEVZTFlR?= =?utf-8?B?UW9EQnZxbjBuTnIwZkF3dEJPYjg0TkFsV29zZVV4RnhrVlBnMWMrOHkwVUdh?= =?utf-8?B?UmVGTEo4eE1MNlpVeS9la1JsZUJqTVZzdGt6VXB5eWkvVk1mR2Z5dEZhdVFq?= =?utf-8?B?R1UwUUJqeEtiREl3b2QzUm9iS3crMklzcFBKVGNrMUlwcUlpMmtNZTVsRW1z?= =?utf-8?B?d1dXM20xbitqd3NsVElyMkF3RlNaNHo2ZUpHRXZBQzY5VFgwYUVsd1RsUEtG?= =?utf-8?B?cjRMZ2tVTlNRTmVTbzJGQ2hZTTZ4WWgwRUVYUSs5aVlUOXFISDhlUmhXaEkz?= =?utf-8?B?ZU5WR1c0RG94dyt0c0diZGRiYnhJdEdwTXFFem1YZEt3QjlHZjh5ZlRNWG8x?= =?utf-8?B?eFYzQTNUbFhSMS9vcFo0RDdiVUlIc21QUDAwTStZaGMzU0tGQnFWVlFSNzRW?= =?utf-8?B?dHE2NEdCMi9JYmF1SU5QRVpiZ2pXSkg3UlFvU2NhRWlHV3dYbGRLSy9hTlps?= =?utf-8?B?eUJIR3JyaFc3T056V0dOS3dDTU9TT1BVVUxycjNSaW5kVTVMZis0ZXlRcjha?= =?utf-8?B?cXQ4RzhiT0t2ZER2a01VQ2RJRm9KL1ZYZldaZDFuSFJxYjdHd2JORkIrZjZy?= =?utf-8?B?WExLQ2hVaHpBT0dPdWdxU3pYUEMvK1d2OG5SV3VVd2hNb0E2RmlnRlBsekZY?= =?utf-8?B?OVFsQ1g1NEFKQ2xCZTJGNzJkcUtqTmZJSC9KMjBNd2cvN243VGZWTTkxT3JM?= =?utf-8?B?NHpndnJURU0wZmp2MVNLa1ZjNXp4cEk3aWZsTmZSbk9MMkUzd3EwYWZFTWUz?= =?utf-8?B?MlZlS1lkVjNIcThua2J0dmNvQ3pZTm9ZNGhjck41UVF6V01PQ0RKNlkxaURq?= =?utf-8?B?bFVnaEdNZnNsQ0wrd29lTjgwZ1JjWUdoZnNwTHBnbnBnMXoyMUtTWmc3MUNZ?= =?utf-8?B?ZEdoOVZWa1VkWklTbzlUaVRiM1hjME0rRlFTbXFreGxsRmFWNEdjbldoRVY1?= =?utf-8?B?N0ZZeFdFVDIwZFd0UVI0YnhQcU83ZWJsRFZMSlRWdExzOHVnWmZqNERNTlYz?= =?utf-8?B?TXJwK1Ard09PTWV2M2IyWmdzSDJFV2VFREtTS0JTVE5EMnhFZ3h1QjRvdXZy?= =?utf-8?B?c3lsc1JDendkTDQrNzB2dUFTZUR6RllUUVJWN1ordTVHUTlpU2w2UnV2bjVN?= =?utf-8?B?LzVGNmVHVjM3b2ZOcVJUVHZkSFhNTkxscUhnMFIrNDZhMDNwQlVoRHVabnBj?= =?utf-8?B?WlN0Sk1KZ1lHOTVjbk5xNGJ3eHIxM09ieS9DMjlNR3NuZmNoYUJMMy9XcDMw?= =?utf-8?B?MVVkaFZpZUwyU0t6NVBudEk5K1VTajJocUdMQ2tuVVFqY3J3YUZFL0JzaDhw?= =?utf-8?B?dkpEU09lb2k0RjRtZVhETllWaG9NZnBxaDlZV0NxMnBxTUNSRk5aeTRLaEdh?= =?utf-8?B?TVhqaXZRUTJVSDlqaUtLaCtVZVFTMVFPWFNnQlR0MGdsUDR5TUhDQkFlS3lo?= =?utf-8?B?eVE0MFhSVm5DTDZhY0lDc1hsL3ZrczdURDhhdE1VOHlZK05XeEZOMCt1TXBX?= =?utf-8?B?VlIzanhtZzVJNm5lYStvVkY4alVOZGJmYW84bThtMlJ6OS83V3F0RU96aGlY?= =?utf-8?B?TmZoOVVZVjh3REpqcmlhMlJ4UG91MjZCbmJnVU5NeHpNa1lmSU1zSm5hVmJU?= =?utf-8?B?eGlhUnpXR1dqbDhvWjQ3QXJhRkljZElFRHNEMzZVOGYycUdDcmw5WUtzK3R5?= =?utf-8?B?OVE9PQ==?= Content-Type: text/plain; charset="utf-8" Content-ID: <04237FFC43E9DD40ABFFB6E00A364388@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: 3f95fdbf-0950-408f-fe9b-08da716ddc61 X-MS-Exchange-CrossTenant-originalarrivaltime: 29 Jul 2022 14:23:08.8660 (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: WpjkZZFTyCr9J520Ezezpbc3e+EO7FcGWeyWBI27ojjRS1D/i+PHVWkd+B7jRB9UOF9cDR+3ympMpSv2LtWiHA== X-MS-Exchange-Transport-CrossTenantHeadersStamped: MN2PR10MB3470 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.883,Hydra:6.0.517,FMLib:17.11.122.1 definitions=2022-07-29_16,2022-07-28_02,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 malwarescore=0 suspectscore=0 mlxscore=0 bulkscore=0 adultscore=0 spamscore=0 phishscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2206140000 definitions=main-2207290064 X-Proofpoint-GUID: 4p_PrmyCId4BcDv2iAquNe0QO5dBGnII X-Proofpoint-ORIG-GUID: 4p_PrmyCId4BcDv2iAquNe0QO5dBGnII X-Spam-Status: No, score=-11.1 required=5.0 tests=BAYES_00, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, KAM_NUMSUBJECT, 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 X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 29 Jul 2022 14:23:27 -0000 DQoNCj4gT24gSnVsIDI4LCAyMDIyLCBhdCAzOjI4IEFNLCBSaWNoYXJkIEJpZW5lciA8cmd1ZW50 aGVyQHN1c2UuZGU+IHdyb3RlOg0KPiANCj4gT24gVHVlLCAxOSBKdWwgMjAyMiwgUWluZyBaaGFv IHdyb3RlOg0KPiANCj4+IEZyb20gYTA5ZjM5ZGVkNDYyNjExMjg2YTQ0ZDllODI3M2RlODM0MjY3 M2JhMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDENCj4+IEZyb206IFFpbmcgWmhhbyA8cWluZy56 aGFvQG9yYWNsZS5jb20+DQo+PiBEYXRlOiBNb24sIDE4IEp1bCAyMDIyIDE4OjEyOjI2ICswMDAw DQo+PiBTdWJqZWN0OiBbUEFUQ0ggMi8yXSBVc2UgbmV3IGZsYWcgREVDTF9OT1RfRkxFWEFSUkFZ IGluIF9fYnVpbHRpbl9vYmplY3Rfc2l6ZQ0KPj4gW1BSMTAxODM2XQ0KPj4gDQo+PiBVc2UgbmV3 IGZsYWcgREVDTF9OT1RfRkxFWEFSUkFZIHRvIGRldGVybWluZSB3aGV0aGVyIHRoZSB0cmFpbGlu ZyBhcnJheQ0KPj4gb2YgYSBzdHJ1Y3R1cmUgaXMgZmxleGlibGUgYXJyYXkgbWVtYmVyIGluIF9f YnVpbHRpbl9vYmplY3Rfc2l6ZS4NCj4+IA0KPj4gZ2NjL0NoYW5nZUxvZzoNCj4+IA0KPj4gCVBS IHRyZWUtb3B0aW1pemF0aW9uLzEwMTgzNg0KPj4gCSogdHJlZS1vYmplY3Qtc2l6ZS5jYyAoYWRk cl9vYmplY3Rfc2l6ZSk6IFVzZSBhcnJheV9hdF9zdHJ1Y3RfZW5kX3ANCj4+IAlhbmQgREVDTF9O T1RfRkxFWEFSUkFZIHRvIGRldGVybWluZSBhIGZsZXhpYmxlIGFycmF5IG1lbWJlciByZWZlcmVu Y2UuDQo+PiANCj4+IGdjYy90ZXN0c3VpdGUvQ2hhbmdlTG9nOg0KPj4gDQo+PiAJUFIgdHJlZS1v cHRpbWl6YXRpb24vMTAxODM2DQo+PiAJKiBnY2MuZGcvcHIxMDE4MzYuYzogTmV3IHRlc3QuDQo+ PiAJKiBnY2MuZGcvcHIxMDE4MzZfMS5jOiBOZXcgdGVzdC4NCj4+IAkqIGdjYy5kZy9wcjEwMTgz Nl8yLmM6IE5ldyB0ZXN0Lg0KPj4gCSogZ2NjLmRnL3ByMTAxODM2XzMuYzogTmV3IHRlc3QuDQo+ PiAJKiBnY2MuZGcvcHIxMDE4MzZfNC5jOiBOZXcgdGVzdC4NCj4+IAkqIGdjYy5kZy9wcjEwMTgz Nl81LmM6IE5ldyB0ZXN0Lg0KPj4gCSogZ2NjLmRnL3N0cmljdC1mbGV4LWFycmF5LTIuYzogTmV3 IHRlc3QuDQo+PiAJKiBnY2MuZGcvc3RyaWN0LWZsZXgtYXJyYXktMy5jOiBOZXcgdGVzdC4NCj4+ IC0tLQ0KPj4gZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHIxMDE4MzYuYyAgICAgICAgICAgIHwgNjAg KysrKysrKysrKysrKysrKysrKysrKw0KPj4gZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHIxMDE4MzZf MS5jICAgICAgICAgIHwgNjAgKysrKysrKysrKysrKysrKysrKysrKw0KPj4gZ2NjL3Rlc3RzdWl0 ZS9nY2MuZGcvcHIxMDE4MzZfMi5jICAgICAgICAgIHwgNjAgKysrKysrKysrKysrKysrKysrKysr Kw0KPj4gZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHIxMDE4MzZfMy5jICAgICAgICAgIHwgNjAgKysr KysrKysrKysrKysrKysrKysrKw0KPj4gZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHIxMDE4MzZfNC5j ICAgICAgICAgIHwgNjAgKysrKysrKysrKysrKysrKysrKysrKw0KPj4gZ2NjL3Rlc3RzdWl0ZS9n Y2MuZGcvcHIxMDE4MzZfNS5jICAgICAgICAgIHwgNjAgKysrKysrKysrKysrKysrKysrKysrKw0K Pj4gZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvc3RyaWN0LWZsZXgtYXJyYXktMi5jIHwgNjAgKysrKysr KysrKysrKysrKysrKysrKw0KPj4gZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvc3RyaWN0LWZsZXgtYXJy YXktMy5jIHwgNjAgKysrKysrKysrKysrKysrKysrKysrKw0KPj4gZ2NjL3RyZWUtb2JqZWN0LXNp emUuY2MgICAgICAgICAgICAgICAgICAgIHwgMTggKysrLS0tLQ0KPj4gOSBmaWxlcyBjaGFuZ2Vk LCA0ODkgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkNCj4+IGNyZWF0ZSBtb2RlIDEwMDY0 NCBnY2MvdGVzdHN1aXRlL2djYy5kZy9wcjEwMTgzNi5jDQo+PiBjcmVhdGUgbW9kZSAxMDA2NDQg Z2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHIxMDE4MzZfMS5jDQo+PiBjcmVhdGUgbW9kZSAxMDA2NDQg Z2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHIxMDE4MzZfMi5jDQo+PiBjcmVhdGUgbW9kZSAxMDA2NDQg Z2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHIxMDE4MzZfMy5jDQo+PiBjcmVhdGUgbW9kZSAxMDA2NDQg Z2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHIxMDE4MzZfNC5jDQo+PiBjcmVhdGUgbW9kZSAxMDA2NDQg Z2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHIxMDE4MzZfNS5jDQo+PiBjcmVhdGUgbW9kZSAxMDA2NDQg Z2NjL3Rlc3RzdWl0ZS9nY2MuZGcvc3RyaWN0LWZsZXgtYXJyYXktMi5jDQo+PiBjcmVhdGUgbW9k ZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvc3RyaWN0LWZsZXgtYXJyYXktMy5jDQo+PiAN Cj4+IGRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjEwMTgzNi5jIGIvZ2NjL3Rl c3RzdWl0ZS9nY2MuZGcvcHIxMDE4MzYuYw0KPj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4+IGlu ZGV4IDAwMDAwMDAwMDAwLi5lNWI0ZTUxNjBhNA0KPj4gLS0tIC9kZXYvbnVsbA0KPj4gKysrIGIv Z2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHIxMDE4MzYuYw0KPj4gQEAgLTAsMCArMSw2MCBAQA0KPj4g Ky8qIC1mc3RyaWN0LWZsZXgtYXJyYXkgaXMgYWxpYXNlZCB3aXRoIC1mdHJpY3QtZmxleC1hcnJh eT0zLCB3aGljaCBpcyB0aGUNCj4+ICsgICBzdHJpY3Rlc3QsIG9ubHkgW10gaXMgdHJlYXRlZCBh cyBmbGV4aWJsZSBhcnJheS4gICovIA0KPj4gKy8qIFBSIHRyZWUtb3B0aW1pemF0aW9uLzEwMTgz NiAqLw0KPj4gKy8qIHsgZGctZG8gcnVuIH0gKi8NCj4+ICsvKiB7IGRnLW9wdGlvbnMgIi1PMiAt ZnN0cmljdC1mbGV4LWFycmF5IiB9ICovDQo+PiArDQo+PiArI2luY2x1ZGUgPHN0ZGlvLmg+DQo+ PiArDQo+PiArI2RlZmluZSBleHBlY3QocCwgX3YpIGRvIHsgXA0KPj4gKyAgICBzaXplX3QgdiA9 IF92OyBcDQo+PiArICAgIGlmIChwID09IHYpIFwNCj4+ICsgICAgICAgIHByaW50Zigib2s6ICAl cyA9PSAlemRcbiIsICNwLCBwKTsgXA0KPj4gKyAgICBlbHNlIFwNCj4+ICsJeyAgXA0KPj4gKyAg ICAgICAgICBwcmludGYoIldBVDogJXMgPT0gJXpkIChleHBlY3RlZCAlemQpXG4iLCAjcCwgcCwg dik7IFwNCj4+ICsJICBfX2J1aWx0aW5fYWJvcnQgKCk7IFwNCj4+ICsJfSBcDQo+PiArfSB3aGls ZSAoMCk7DQo+PiArDQo+PiArc3RydWN0IHRyYWlsaW5nX2FycmF5XzEgew0KPj4gKyAgICBpbnQg YTsNCj4+ICsgICAgaW50IGI7DQo+PiArICAgIGludCBjWzRdOw0KPj4gK307DQo+PiArDQo+PiAr c3RydWN0IHRyYWlsaW5nX2FycmF5XzIgew0KPj4gKyAgICBpbnQgYTsNCj4+ICsgICAgaW50IGI7 DQo+PiArICAgIGludCBjWzFdOw0KPj4gK307DQo+PiArDQo+PiArc3RydWN0IHRyYWlsaW5nX2Fy cmF5XzMgew0KPj4gKyAgICBpbnQgYTsNCj4+ICsgICAgaW50IGI7DQo+PiArICAgIGludCBjWzBd Ow0KPj4gK307DQo+PiArc3RydWN0IHRyYWlsaW5nX2FycmF5XzQgew0KPj4gKyAgICBpbnQgYTsN Cj4+ICsgICAgaW50IGI7DQo+PiArICAgIGludCBjW107DQo+PiArfTsNCj4+ICsNCj4+ICt2b2lk IF9fYXR0cmlidXRlX18oKF9fbm9pbmxpbmVfXykpIHN0dWZmKA0KPj4gKyAgICBzdHJ1Y3QgdHJh aWxpbmdfYXJyYXlfMSAqbm9ybWFsLA0KPj4gKyAgICBzdHJ1Y3QgdHJhaWxpbmdfYXJyYXlfMiAq dHJhaWxpbmdfMSwNCj4+ICsgICAgc3RydWN0IHRyYWlsaW5nX2FycmF5XzMgKnRyYWlsaW5nXzAs DQo+PiArICAgIHN0cnVjdCB0cmFpbGluZ19hcnJheV80ICp0cmFpbGluZ19mbGV4KQ0KPj4gK3sN Cj4+ICsgICAgZXhwZWN0KF9fYnVpbHRpbl9vYmplY3Rfc2l6ZShub3JtYWwtPmMsIDEpLCAxNik7 DQo+PiArICAgIGV4cGVjdChfX2J1aWx0aW5fb2JqZWN0X3NpemUodHJhaWxpbmdfMS0+YywgMSks IDQpOw0KPj4gKyAgICBleHBlY3QoX19idWlsdGluX29iamVjdF9zaXplKHRyYWlsaW5nXzAtPmMs IDEpLCAwKTsNCj4+ICsgICAgZXhwZWN0KF9fYnVpbHRpbl9vYmplY3Rfc2l6ZSh0cmFpbGluZ19m bGV4LT5jLCAxKSwgLTEpOw0KPj4gK30NCj4+ICsNCj4+ICtpbnQgbWFpbihpbnQgYXJnYywgY2hh ciAqYXJndltdKQ0KPj4gK3sNCj4+ICsgICAgc3R1ZmYoKHZvaWQgKilhcmd2WzBdLCAodm9pZCAq KWFyZ3ZbMF0sICh2b2lkICopYXJndlswXSwgKHZvaWQgKilhcmd2WzBdKTsNCj4+ICsNCj4+ICsg ICAgcmV0dXJuIDA7DQo+PiArfQ0KPj4gZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRn L3ByMTAxODM2XzEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByMTAxODM2XzEuYw0KPj4gbmV3 IGZpbGUgbW9kZSAxMDA2NDQNCj4+IGluZGV4IDAwMDAwMDAwMDAwLi4zMGVhMjA0MjdhNQ0KPj4g LS0tIC9kZXYvbnVsbA0KPj4gKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHIxMDE4MzZfMS5j DQo+PiBAQCAtMCwwICsxLDYwIEBADQo+PiArLyogLWZzdHJpY3QtZmxleC1hcnJheT0zIGlzIHRo ZSBzdHJpY3Rlc3QsIG9ubHkgW10gaXMgdHJlYXRlZCBhcw0KPj4gKyAgIGZsZXhpYmxlIGFycmF5 LiAgKi8gDQo+PiArLyogUFIgdHJlZS1vcHRpbWl6YXRpb24vMTAxODM2ICovDQo+PiArLyogeyBk Zy1kbyBydW4gfSAqLw0KPj4gKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1mc3RyaWN0LWZsZXgtYXJy YXk9MyIgfSAqLw0KPj4gKw0KPj4gKyNpbmNsdWRlIDxzdGRpby5oPg0KPj4gKw0KPj4gKyNkZWZp bmUgZXhwZWN0KHAsIF92KSBkbyB7IFwNCj4+ICsgICAgc2l6ZV90IHYgPSBfdjsgXA0KPj4gKyAg ICBpZiAocCA9PSB2KSBcDQo+PiArICAgICAgICBwcmludGYoIm9rOiAgJXMgPT0gJXpkXG4iLCAj cCwgcCk7IFwNCj4+ICsgICAgZWxzZSBcDQo+PiArCXsgIFwNCj4+ICsgICAgICAgICAgcHJpbnRm KCJXQVQ6ICVzID09ICV6ZCAoZXhwZWN0ZWQgJXpkKVxuIiwgI3AsIHAsIHYpOyBcDQo+PiArCSAg X19idWlsdGluX2Fib3J0ICgpOyBcDQo+PiArCX0gXA0KPj4gK30gd2hpbGUgKDApOw0KPj4gKw0K Pj4gK3N0cnVjdCB0cmFpbGluZ19hcnJheV8xIHsNCj4+ICsgICAgaW50IGE7DQo+PiArICAgIGlu dCBiOw0KPj4gKyAgICBpbnQgY1s0XTsNCj4+ICt9Ow0KPj4gKw0KPj4gK3N0cnVjdCB0cmFpbGlu Z19hcnJheV8yIHsNCj4+ICsgICAgaW50IGE7DQo+PiArICAgIGludCBiOw0KPj4gKyAgICBpbnQg Y1sxXTsNCj4+ICt9Ow0KPj4gKw0KPj4gK3N0cnVjdCB0cmFpbGluZ19hcnJheV8zIHsNCj4+ICsg ICAgaW50IGE7DQo+PiArICAgIGludCBiOw0KPj4gKyAgICBpbnQgY1swXTsNCj4+ICt9Ow0KPj4g K3N0cnVjdCB0cmFpbGluZ19hcnJheV80IHsNCj4+ICsgICAgaW50IGE7DQo+PiArICAgIGludCBi Ow0KPj4gKyAgICBpbnQgY1tdOw0KPj4gK307DQo+PiArDQo+PiArdm9pZCBfX2F0dHJpYnV0ZV9f KChfX25vaW5saW5lX18pKSBzdHVmZigNCj4+ICsgICAgc3RydWN0IHRyYWlsaW5nX2FycmF5XzEg Km5vcm1hbCwNCj4+ICsgICAgc3RydWN0IHRyYWlsaW5nX2FycmF5XzIgKnRyYWlsaW5nXzEsDQo+ PiArICAgIHN0cnVjdCB0cmFpbGluZ19hcnJheV8zICp0cmFpbGluZ18wLA0KPj4gKyAgICBzdHJ1 Y3QgdHJhaWxpbmdfYXJyYXlfNCAqdHJhaWxpbmdfZmxleCkNCj4+ICt7DQo+PiArICAgIGV4cGVj dChfX2J1aWx0aW5fb2JqZWN0X3NpemUobm9ybWFsLT5jLCAxKSwgMTYpOw0KPj4gKyAgICBleHBl Y3QoX19idWlsdGluX29iamVjdF9zaXplKHRyYWlsaW5nXzEtPmMsIDEpLCA0KTsNCj4+ICsgICAg ZXhwZWN0KF9fYnVpbHRpbl9vYmplY3Rfc2l6ZSh0cmFpbGluZ18wLT5jLCAxKSwgMCk7DQo+PiAr ICAgIGV4cGVjdChfX2J1aWx0aW5fb2JqZWN0X3NpemUodHJhaWxpbmdfZmxleC0+YywgMSksIC0x KTsNCj4+ICt9DQo+PiArDQo+PiAraW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkNCj4+ ICt7DQo+PiArICAgIHN0dWZmKCh2b2lkICopYXJndlswXSwgKHZvaWQgKilhcmd2WzBdLCAodm9p ZCAqKWFyZ3ZbMF0sICh2b2lkICopYXJndlswXSk7DQo+PiArDQo+PiArICAgIHJldHVybiAwOw0K Pj4gK30NCj4+IGRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjEwMTgzNl8yLmMg Yi9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjEwMTgzNl8yLmMNCj4+IG5ldyBmaWxlIG1vZGUgMTAw NjQ0DQo+PiBpbmRleCAwMDAwMDAwMDAwMC4uZWJiZTg4ZjQzM2MNCj4+IC0tLSAvZGV2L251bGwN Cj4+ICsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByMTAxODM2XzIuYw0KPj4gQEAgLTAsMCAr MSw2MCBAQA0KPj4gKy8qIFdoZW4gLWZzdHJpY3QtZmxleC1hcnJheT0yLCBvbmx5IFtdIGFuZCBb MF0gYXJlIHRyZWF0ZWQgYXMgZmxleGlhYmxlDQo+PiArICAgYXJyYXlzLiAgKi8NCj4+ICsvKiBQ UiB0cmVlLW9wdGltaXphdGlvbi8xMDE4MzYgKi8NCj4+ICsvKiB7IGRnLWRvIHJ1biB9ICovDQo+ PiArLyogeyBkZy1vcHRpb25zICItTzIgLWZzdHJpY3QtZmxleC1hcnJheT0yIiB9ICovDQo+PiAr DQo+PiArI2luY2x1ZGUgPHN0ZGlvLmg+DQo+PiArDQo+PiArI2RlZmluZSBleHBlY3QocCwgX3Yp IGRvIHsgXA0KPj4gKyAgICBzaXplX3QgdiA9IF92OyBcDQo+PiArICAgIGlmIChwID09IHYpIFwN Cj4+ICsgICAgICAgIHByaW50Zigib2s6ICAlcyA9PSAlemRcbiIsICNwLCBwKTsgXA0KPj4gKyAg ICBlbHNlIFwNCj4+ICsJeyAgXA0KPj4gKyAgICAgICAgICBwcmludGYoIldBVDogJXMgPT0gJXpk IChleHBlY3RlZCAlemQpXG4iLCAjcCwgcCwgdik7IFwNCj4+ICsJICBfX2J1aWx0aW5fYWJvcnQg KCk7IFwNCj4+ICsJfSBcDQo+PiArfSB3aGlsZSAoMCk7DQo+PiArDQo+PiArc3RydWN0IHRyYWls aW5nX2FycmF5XzEgew0KPj4gKyAgICBpbnQgYTsNCj4+ICsgICAgaW50IGI7DQo+PiArICAgIGlu dCBjWzRdOw0KPj4gK307DQo+PiArDQo+PiArc3RydWN0IHRyYWlsaW5nX2FycmF5XzIgew0KPj4g KyAgICBpbnQgYTsNCj4+ICsgICAgaW50IGI7DQo+PiArICAgIGludCBjWzFdOw0KPj4gK307DQo+ PiArDQo+PiArc3RydWN0IHRyYWlsaW5nX2FycmF5XzMgew0KPj4gKyAgICBpbnQgYTsNCj4+ICsg ICAgaW50IGI7DQo+PiArICAgIGludCBjWzBdOw0KPj4gK307DQo+PiArc3RydWN0IHRyYWlsaW5n X2FycmF5XzQgew0KPj4gKyAgICBpbnQgYTsNCj4+ICsgICAgaW50IGI7DQo+PiArICAgIGludCBj W107DQo+PiArfTsNCj4+ICsNCj4+ICt2b2lkIF9fYXR0cmlidXRlX18oKF9fbm9pbmxpbmVfXykp IHN0dWZmKA0KPj4gKyAgICBzdHJ1Y3QgdHJhaWxpbmdfYXJyYXlfMSAqbm9ybWFsLA0KPj4gKyAg ICBzdHJ1Y3QgdHJhaWxpbmdfYXJyYXlfMiAqdHJhaWxpbmdfMSwNCj4+ICsgICAgc3RydWN0IHRy YWlsaW5nX2FycmF5XzMgKnRyYWlsaW5nXzAsDQo+PiArICAgIHN0cnVjdCB0cmFpbGluZ19hcnJh eV80ICp0cmFpbGluZ19mbGV4KQ0KPj4gK3sNCj4+ICsgICAgZXhwZWN0KF9fYnVpbHRpbl9vYmpl Y3Rfc2l6ZShub3JtYWwtPmMsIDEpLCAxNik7DQo+PiArICAgIGV4cGVjdChfX2J1aWx0aW5fb2Jq ZWN0X3NpemUodHJhaWxpbmdfMS0+YywgMSksIDQpOw0KPj4gKyAgICBleHBlY3QoX19idWlsdGlu X29iamVjdF9zaXplKHRyYWlsaW5nXzAtPmMsIDEpLCAtMSk7DQo+PiArICAgIGV4cGVjdChfX2J1 aWx0aW5fb2JqZWN0X3NpemUodHJhaWxpbmdfZmxleC0+YywgMSksIC0xKTsNCj4+ICt9DQo+PiAr DQo+PiAraW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkNCj4+ICt7DQo+PiArICAgIHN0 dWZmKCh2b2lkICopYXJndlswXSwgKHZvaWQgKilhcmd2WzBdLCAodm9pZCAqKWFyZ3ZbMF0sICh2 b2lkICopYXJndlswXSk7DQo+PiArDQo+PiArICAgIHJldHVybiAwOw0KPj4gK30NCj4+IGRpZmYg LS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjEwMTgzNl8zLmMgYi9nY2MvdGVzdHN1aXRl L2djYy5kZy9wcjEwMTgzNl8zLmMNCj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+PiBpbmRleCAw MDAwMDAwMDAwMC4uZDRiYTBhZmU1YmMNCj4+IC0tLSAvZGV2L251bGwNCj4+ICsrKyBiL2djYy90 ZXN0c3VpdGUvZ2NjLmRnL3ByMTAxODM2XzMuYw0KPj4gQEAgLTAsMCArMSw2MCBAQA0KPj4gKy8q IFdoZW4gLWZzdHJpY3QtZmxleC1hcnJheT0xLCBbXSwgWzBdLCBhbmQgWzFdIGFyZSB0cmVhdGVk IGFzIGZsZXhpYmxlDQo+PiArICAgYXJyYXlzLiAgKi8NCj4+ICsvKiBQUiB0cmVlLW9wdGltaXph dGlvbi8xMDE4MzYgKi8NCj4+ICsvKiB7IGRnLWRvIHJ1biB9ICovDQo+PiArLyogeyBkZy1vcHRp b25zICItTzIgLWZzdHJpY3QtZmxleC1hcnJheT0xIiB9ICovDQo+PiArDQo+PiArI2luY2x1ZGUg PHN0ZGlvLmg+DQo+PiArDQo+PiArI2RlZmluZSBleHBlY3QocCwgX3YpIGRvIHsgXA0KPj4gKyAg ICBzaXplX3QgdiA9IF92OyBcDQo+PiArICAgIGlmIChwID09IHYpIFwNCj4+ICsgICAgICAgIHBy aW50Zigib2s6ICAlcyA9PSAlemRcbiIsICNwLCBwKTsgXA0KPj4gKyAgICBlbHNlIFwNCj4+ICsJ eyAgXA0KPj4gKyAgICAgICAgICBwcmludGYoIldBVDogJXMgPT0gJXpkIChleHBlY3RlZCAlemQp XG4iLCAjcCwgcCwgdik7IFwNCj4+ICsJICBfX2J1aWx0aW5fYWJvcnQgKCk7IFwNCj4+ICsJfSBc DQo+PiArfSB3aGlsZSAoMCk7DQo+PiArDQo+PiArc3RydWN0IHRyYWlsaW5nX2FycmF5XzEgew0K Pj4gKyAgICBpbnQgYTsNCj4+ICsgICAgaW50IGI7DQo+PiArICAgIGludCBjWzRdOw0KPj4gK307 DQo+PiArDQo+PiArc3RydWN0IHRyYWlsaW5nX2FycmF5XzIgew0KPj4gKyAgICBpbnQgYTsNCj4+ ICsgICAgaW50IGI7DQo+PiArICAgIGludCBjWzFdOw0KPj4gK307DQo+PiArDQo+PiArc3RydWN0 IHRyYWlsaW5nX2FycmF5XzMgew0KPj4gKyAgICBpbnQgYTsNCj4+ICsgICAgaW50IGI7DQo+PiAr ICAgIGludCBjWzBdOw0KPj4gK307DQo+PiArc3RydWN0IHRyYWlsaW5nX2FycmF5XzQgew0KPj4g KyAgICBpbnQgYTsNCj4+ICsgICAgaW50IGI7DQo+PiArICAgIGludCBjW107DQo+PiArfTsNCj4+ ICsNCj4+ICt2b2lkIF9fYXR0cmlidXRlX18oKF9fbm9pbmxpbmVfXykpIHN0dWZmKA0KPj4gKyAg ICBzdHJ1Y3QgdHJhaWxpbmdfYXJyYXlfMSAqbm9ybWFsLA0KPj4gKyAgICBzdHJ1Y3QgdHJhaWxp bmdfYXJyYXlfMiAqdHJhaWxpbmdfMSwNCj4+ICsgICAgc3RydWN0IHRyYWlsaW5nX2FycmF5XzMg KnRyYWlsaW5nXzAsDQo+PiArICAgIHN0cnVjdCB0cmFpbGluZ19hcnJheV80ICp0cmFpbGluZ19m bGV4KQ0KPj4gK3sNCj4+ICsgICAgZXhwZWN0KF9fYnVpbHRpbl9vYmplY3Rfc2l6ZShub3JtYWwt PmMsIDEpLCAxNik7DQo+PiArICAgIGV4cGVjdChfX2J1aWx0aW5fb2JqZWN0X3NpemUodHJhaWxp bmdfMS0+YywgMSksIC0xKTsNCj4+ICsgICAgZXhwZWN0KF9fYnVpbHRpbl9vYmplY3Rfc2l6ZSh0 cmFpbGluZ18wLT5jLCAxKSwgLTEpOw0KPj4gKyAgICBleHBlY3QoX19idWlsdGluX29iamVjdF9z aXplKHRyYWlsaW5nX2ZsZXgtPmMsIDEpLCAtMSk7DQo+PiArfQ0KPj4gKw0KPj4gK2ludCBtYWlu KGludCBhcmdjLCBjaGFyICphcmd2W10pDQo+PiArew0KPj4gKyAgICBzdHVmZigodm9pZCAqKWFy Z3ZbMF0sICh2b2lkICopYXJndlswXSwgKHZvaWQgKilhcmd2WzBdLCAodm9pZCAqKWFyZ3ZbMF0p Ow0KPj4gKw0KPj4gKyAgICByZXR1cm4gMDsNCj4+ICt9DQo+PiBkaWZmIC0tZ2l0IGEvZ2NjL3Rl c3RzdWl0ZS9nY2MuZGcvcHIxMDE4MzZfNC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHIxMDE4 MzZfNC5jDQo+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPj4gaW5kZXggMDAwMDAwMDAwMDAuLmIx MGQzY2UzMTJkDQo+PiAtLS0gL2Rldi9udWxsDQo+PiArKysgYi9nY2MvdGVzdHN1aXRlL2djYy5k Zy9wcjEwMTgzNl80LmMNCj4+IEBAIC0wLDAgKzEsNjAgQEANCj4+ICsvKiB3aGVuIC1mc3RyaWN0 LWZsZXgtYXJyYXk9MCwgYWxsIHRyYWlsaW5nIGFycmF5cyBhcmUgdHJlYXRlZCBhcw0KPj4gKyAg IGZsZXhpYmxlIGFycmF5cy4gICovDQo+PiArLyogUFIgdHJlZS1vcHRpbWl6YXRpb24vMTAxODM2 ICovDQo+PiArLyogeyBkZy1kbyBydW4gfSAqLw0KPj4gKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1m c3RyaWN0LWZsZXgtYXJyYXk9MCIgfSAqLw0KPj4gKw0KPj4gKyNpbmNsdWRlIDxzdGRpby5oPg0K Pj4gKw0KPj4gKyNkZWZpbmUgZXhwZWN0KHAsIF92KSBkbyB7IFwNCj4+ICsgICAgc2l6ZV90IHYg PSBfdjsgXA0KPj4gKyAgICBpZiAocCA9PSB2KSBcDQo+PiArICAgICAgICBwcmludGYoIm9rOiAg JXMgPT0gJXpkXG4iLCAjcCwgcCk7IFwNCj4+ICsgICAgZWxzZSBcDQo+PiArCXsgIFwNCj4+ICsg ICAgICAgICAgcHJpbnRmKCJXQVQ6ICVzID09ICV6ZCAoZXhwZWN0ZWQgJXpkKVxuIiwgI3AsIHAs IHYpOyBcDQo+PiArCSAgX19idWlsdGluX2Fib3J0ICgpOyBcDQo+PiArCX0gXA0KPj4gK30gd2hp bGUgKDApOw0KPj4gKw0KPj4gK3N0cnVjdCB0cmFpbGluZ19hcnJheV8xIHsNCj4+ICsgICAgaW50 IGE7DQo+PiArICAgIGludCBiOw0KPj4gKyAgICBpbnQgY1s0XTsNCj4+ICt9Ow0KPj4gKw0KPj4g K3N0cnVjdCB0cmFpbGluZ19hcnJheV8yIHsNCj4+ICsgICAgaW50IGE7DQo+PiArICAgIGludCBi Ow0KPj4gKyAgICBpbnQgY1sxXTsNCj4+ICt9Ow0KPj4gKw0KPj4gK3N0cnVjdCB0cmFpbGluZ19h cnJheV8zIHsNCj4+ICsgICAgaW50IGE7DQo+PiArICAgIGludCBiOw0KPj4gKyAgICBpbnQgY1sw XTsNCj4+ICt9Ow0KPj4gK3N0cnVjdCB0cmFpbGluZ19hcnJheV80IHsNCj4+ICsgICAgaW50IGE7 DQo+PiArICAgIGludCBiOw0KPj4gKyAgICBpbnQgY1tdOw0KPj4gK307DQo+PiArDQo+PiArdm9p ZCBfX2F0dHJpYnV0ZV9fKChfX25vaW5saW5lX18pKSBzdHVmZigNCj4+ICsgICAgc3RydWN0IHRy YWlsaW5nX2FycmF5XzEgKm5vcm1hbCwNCj4+ICsgICAgc3RydWN0IHRyYWlsaW5nX2FycmF5XzIg KnRyYWlsaW5nXzEsDQo+PiArICAgIHN0cnVjdCB0cmFpbGluZ19hcnJheV8zICp0cmFpbGluZ18w LA0KPj4gKyAgICBzdHJ1Y3QgdHJhaWxpbmdfYXJyYXlfNCAqdHJhaWxpbmdfZmxleCkNCj4+ICt7 DQo+PiArICAgIGV4cGVjdChfX2J1aWx0aW5fb2JqZWN0X3NpemUobm9ybWFsLT5jLCAxKSwgLTEp Ow0KPj4gKyAgICBleHBlY3QoX19idWlsdGluX29iamVjdF9zaXplKHRyYWlsaW5nXzEtPmMsIDEp LCAtMSk7DQo+PiArICAgIGV4cGVjdChfX2J1aWx0aW5fb2JqZWN0X3NpemUodHJhaWxpbmdfMC0+ YywgMSksIC0xKTsNCj4+ICsgICAgZXhwZWN0KF9fYnVpbHRpbl9vYmplY3Rfc2l6ZSh0cmFpbGlu Z19mbGV4LT5jLCAxKSwgLTEpOw0KPj4gK30NCj4+ICsNCj4+ICtpbnQgbWFpbihpbnQgYXJnYywg Y2hhciAqYXJndltdKQ0KPj4gK3sNCj4+ICsgICAgc3R1ZmYoKHZvaWQgKilhcmd2WzBdLCAodm9p ZCAqKWFyZ3ZbMF0sICh2b2lkICopYXJndlswXSwgKHZvaWQgKilhcmd2WzBdKTsNCj4+ICsNCj4+ ICsgICAgcmV0dXJuIDA7DQo+PiArfQ0KPj4gZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2Nj LmRnL3ByMTAxODM2XzUuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByMTAxODM2XzUuYw0KPj4g bmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4+IGluZGV4IDAwMDAwMDAwMDAwLi4yZjZiNWY3YWUxZg0K Pj4gLS0tIC9kZXYvbnVsbA0KPj4gKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHIxMDE4MzZf NS5jDQo+PiBAQCAtMCwwICsxLDYwIEBADQo+PiArLyogLWZuby1zdHJpY3QtZmxleC1hcnJheSBp cyBhbGlhc2VkIHRvIC1mc3RyaWN0LWZsZXgtYXJyYXk9MCwNCj4+ICsgICBhbGwgdHJhaWxpbmcg YXJyYXlzIGFyZSB0cmVhdGVkIGFzIGZsZXhpYmxlIGFycmF5LiAgKi8NCj4+ICsvKiBQUiB0cmVl LW9wdGltaXphdGlvbi8xMDE4MzYgKi8NCj4+ICsvKiB7IGRnLWRvIHJ1biB9ICovDQo+PiArLyog eyBkZy1vcHRpb25zICItTzIgLWZuby1zdHJpY3QtZmxleC1hcnJheSIgfSAqLw0KPj4gKw0KPj4g KyNpbmNsdWRlIDxzdGRpby5oPg0KPj4gKw0KPj4gKyNkZWZpbmUgZXhwZWN0KHAsIF92KSBkbyB7 IFwNCj4+ICsgICAgc2l6ZV90IHYgPSBfdjsgXA0KPj4gKyAgICBpZiAocCA9PSB2KSBcDQo+PiAr ICAgICAgICBwcmludGYoIm9rOiAgJXMgPT0gJXpkXG4iLCAjcCwgcCk7IFwNCj4+ICsgICAgZWxz ZSBcDQo+PiArCXsgIFwNCj4+ICsgICAgICAgICAgcHJpbnRmKCJXQVQ6ICVzID09ICV6ZCAoZXhw ZWN0ZWQgJXpkKVxuIiwgI3AsIHAsIHYpOyBcDQo+PiArCSAgX19idWlsdGluX2Fib3J0ICgpOyBc DQo+PiArCX0gXA0KPj4gK30gd2hpbGUgKDApOw0KPj4gKw0KPj4gK3N0cnVjdCB0cmFpbGluZ19h cnJheV8xIHsNCj4+ICsgICAgaW50IGE7DQo+PiArICAgIGludCBiOw0KPj4gKyAgICBpbnQgY1s0 XTsNCj4+ICt9Ow0KPj4gKw0KPj4gK3N0cnVjdCB0cmFpbGluZ19hcnJheV8yIHsNCj4+ICsgICAg aW50IGE7DQo+PiArICAgIGludCBiOw0KPj4gKyAgICBpbnQgY1sxXTsNCj4+ICt9Ow0KPj4gKw0K Pj4gK3N0cnVjdCB0cmFpbGluZ19hcnJheV8zIHsNCj4+ICsgICAgaW50IGE7DQo+PiArICAgIGlu dCBiOw0KPj4gKyAgICBpbnQgY1swXTsNCj4+ICt9Ow0KPj4gK3N0cnVjdCB0cmFpbGluZ19hcnJh eV80IHsNCj4+ICsgICAgaW50IGE7DQo+PiArICAgIGludCBiOw0KPj4gKyAgICBpbnQgY1tdOw0K Pj4gK307DQo+PiArDQo+PiArdm9pZCBfX2F0dHJpYnV0ZV9fKChfX25vaW5saW5lX18pKSBzdHVm ZigNCj4+ICsgICAgc3RydWN0IHRyYWlsaW5nX2FycmF5XzEgKm5vcm1hbCwNCj4+ICsgICAgc3Ry dWN0IHRyYWlsaW5nX2FycmF5XzIgKnRyYWlsaW5nXzEsDQo+PiArICAgIHN0cnVjdCB0cmFpbGlu Z19hcnJheV8zICp0cmFpbGluZ18wLA0KPj4gKyAgICBzdHJ1Y3QgdHJhaWxpbmdfYXJyYXlfNCAq dHJhaWxpbmdfZmxleCkNCj4+ICt7DQo+PiArICAgIGV4cGVjdChfX2J1aWx0aW5fb2JqZWN0X3Np emUobm9ybWFsLT5jLCAxKSwgLTEpOw0KPj4gKyAgICBleHBlY3QoX19idWlsdGluX29iamVjdF9z aXplKHRyYWlsaW5nXzEtPmMsIDEpLCAtMSk7DQo+PiArICAgIGV4cGVjdChfX2J1aWx0aW5fb2Jq ZWN0X3NpemUodHJhaWxpbmdfMC0+YywgMSksIC0xKTsNCj4+ICsgICAgZXhwZWN0KF9fYnVpbHRp bl9vYmplY3Rfc2l6ZSh0cmFpbGluZ19mbGV4LT5jLCAxKSwgLTEpOw0KPj4gK30NCj4+ICsNCj4+ ICtpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQ0KPj4gK3sNCj4+ICsgICAgc3R1ZmYo KHZvaWQgKilhcmd2WzBdLCAodm9pZCAqKWFyZ3ZbMF0sICh2b2lkICopYXJndlswXSwgKHZvaWQg Kilhcmd2WzBdKTsNCj4+ICsNCj4+ICsgICAgcmV0dXJuIDA7DQo+PiArfQ0KPj4gZGlmZiAtLWdp dCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3N0cmljdC1mbGV4LWFycmF5LTIuYyBiL2djYy90ZXN0 c3VpdGUvZ2NjLmRnL3N0cmljdC1mbGV4LWFycmF5LTIuYw0KPj4gbmV3IGZpbGUgbW9kZSAxMDA2 NDQNCj4+IGluZGV4IDAwMDAwMDAwMDAwLi4zMjZkZGNmZWRhNQ0KPj4gLS0tIC9kZXYvbnVsbA0K Pj4gKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvc3RyaWN0LWZsZXgtYXJyYXktMi5jDQo+PiBA QCAtMCwwICsxLDYwIEBADQo+PiArLyogdGVzdCB0aGUgY29tYmluYXRpb24gb2YgYXR0cmlidXRl IHN0cmljdF9mbGV4X2FycmF5IGFuZCBvcHRpb24NCj4+ICsgICAtZnN0cmljdC1mbGV4LWFycmF5 OiB3aGVuIGJvdGggYXR0cmlidXRlIGFuZCBvcHRpb24gc3BlY2lmaWVkLA0KPj4gKyAgIGF0dHJp YnV0ZSB3aWxsIGhhdmUgaGlnaGVyIHByaW9yaXR5LiAgKi8NCj4+ICsvKiB7IGRnLWRvIHJ1biB9 ICovDQo+PiArLyogeyBkZy1vcHRpb25zICItTzIgLWZzdHJpY3QtZmxleC1hcnJheT0zIiB9ICov DQo+PiArDQo+PiArI2luY2x1ZGUgPHN0ZGlvLmg+DQo+PiArDQo+PiArI2RlZmluZSBleHBlY3Qo cCwgX3YpIGRvIHsgXA0KPj4gKyAgICBzaXplX3QgdiA9IF92OyBcDQo+PiArICAgIGlmIChwID09 IHYpIFwNCj4+ICsgICAgICAgIHByaW50Zigib2s6ICAlcyA9PSAlemRcbiIsICNwLCBwKTsgXA0K Pj4gKyAgICBlbHNlIFwNCj4+ICsJeyAgXA0KPj4gKyAgICAgICAgICBwcmludGYoIldBVDogJXMg PT0gJXpkIChleHBlY3RlZCAlemQpXG4iLCAjcCwgcCwgdik7IFwNCj4+ICsJICBfX2J1aWx0aW5f YWJvcnQgKCk7IFwNCj4+ICsJfSBcDQo+PiArfSB3aGlsZSAoMCk7DQo+PiArDQo+PiArc3RydWN0 IHRyYWlsaW5nX2FycmF5XzEgew0KPj4gKyAgICBpbnQgYTsNCj4+ICsgICAgaW50IGI7DQo+PiAr ICAgIGludCBjWzRdIF9fYXR0cmlidXRlX18gKChzdHJpY3RfZmxleF9hcnJheSAoMCkpKTsNCj4+ ICt9Ow0KPj4gKw0KPj4gK3N0cnVjdCB0cmFpbGluZ19hcnJheV8yIHsNCj4+ICsgICAgaW50IGE7 DQo+PiArICAgIGludCBiOw0KPj4gKyAgICBpbnQgY1sxXSBfX2F0dHJpYnV0ZV9fICgoc3RyaWN0 X2ZsZXhfYXJyYXkgKDEpKSk7DQo+PiArfTsNCj4+ICsNCj4+ICtzdHJ1Y3QgdHJhaWxpbmdfYXJy YXlfMyB7DQo+PiArICAgIGludCBhOw0KPj4gKyAgICBpbnQgYjsNCj4+ICsgICAgaW50IGNbMF0g X19hdHRyaWJ1dGVfXyAoKHN0cmljdF9mbGV4X2FycmF5ICgyKSkpOw0KPj4gK307DQo+PiArc3Ry dWN0IHRyYWlsaW5nX2FycmF5XzQgew0KPj4gKyAgICBpbnQgYTsNCj4+ICsgICAgaW50IGI7DQo+ PiArICAgIGludCBjW107DQo+PiArfTsNCj4+ICsNCj4+ICt2b2lkIF9fYXR0cmlidXRlX18oKF9f bm9pbmxpbmVfXykpIHN0dWZmKA0KPj4gKyAgICBzdHJ1Y3QgdHJhaWxpbmdfYXJyYXlfMSAqbm9y bWFsLA0KPj4gKyAgICBzdHJ1Y3QgdHJhaWxpbmdfYXJyYXlfMiAqdHJhaWxpbmdfMSwNCj4+ICsg ICAgc3RydWN0IHRyYWlsaW5nX2FycmF5XzMgKnRyYWlsaW5nXzAsDQo+PiArICAgIHN0cnVjdCB0 cmFpbGluZ19hcnJheV80ICp0cmFpbGluZ19mbGV4KQ0KPj4gK3sNCj4+ICsgICAgZXhwZWN0KF9f YnVpbHRpbl9vYmplY3Rfc2l6ZShub3JtYWwtPmMsIDEpLCAtMSk7DQo+PiArICAgIGV4cGVjdChf X2J1aWx0aW5fb2JqZWN0X3NpemUodHJhaWxpbmdfMS0+YywgMSksIC0xKTsNCj4+ICsgICAgZXhw ZWN0KF9fYnVpbHRpbl9vYmplY3Rfc2l6ZSh0cmFpbGluZ18wLT5jLCAxKSwgLTEpOw0KPj4gKyAg ICBleHBlY3QoX19idWlsdGluX29iamVjdF9zaXplKHRyYWlsaW5nX2ZsZXgtPmMsIDEpLCAtMSk7 DQo+PiArfQ0KPj4gKw0KPj4gK2ludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pDQo+PiAr ew0KPj4gKyAgICBzdHVmZigodm9pZCAqKWFyZ3ZbMF0sICh2b2lkICopYXJndlswXSwgKHZvaWQg Kilhcmd2WzBdLCAodm9pZCAqKWFyZ3ZbMF0pOw0KPj4gKw0KPj4gKyAgICByZXR1cm4gMDsNCj4+ ICt9DQo+PiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvc3RyaWN0LWZsZXgtYXJy YXktMy5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvc3RyaWN0LWZsZXgtYXJyYXktMy5jDQo+PiBu ZXcgZmlsZSBtb2RlIDEwMDY0NA0KPj4gaW5kZXggMDAwMDAwMDAwMDAuLjk5MGM1YmI2MjIzDQo+ PiAtLS0gL2Rldi9udWxsDQo+PiArKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9zdHJpY3QtZmxl eC1hcnJheS0zLmMNCj4+IEBAIC0wLDAgKzEsNjAgQEANCj4+ICsvKiB0ZXN0IHRoZSBjb21iaW5h dGlvbiBvZiBhdHRyaWJ1dGUgc3RyaWN0X2ZsZXhfYXJyYXkgYW5kIG9wdGlvbg0KPj4gKyAgIC1m c3RyaWN0LWZsZXgtYXJyYXk6IHdoZW4gYm90aCBhdHRyaWJ1dGUgYW5kIG9wdGlvbiBzcGVjaWZp ZWQsDQo+PiArICAgYXR0cmlidXRlIHdpbGwgaGF2ZSBoaWdoZXIgcHJpb3JpdHkuICAqLw0KPj4g Ky8qIHsgZGctZG8gcnVuIH0gKi8NCj4+ICsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtZnN0cmljdC1m bGV4LWFycmF5PTAiIH0gKi8NCj4+ICsNCj4+ICsjaW5jbHVkZSA8c3RkaW8uaD4NCj4+ICsNCj4+ ICsjZGVmaW5lIGV4cGVjdChwLCBfdikgZG8geyBcDQo+PiArICAgIHNpemVfdCB2ID0gX3Y7IFwN Cj4+ICsgICAgaWYgKHAgPT0gdikgXA0KPj4gKyAgICAgICAgcHJpbnRmKCJvazogICVzID09ICV6 ZFxuIiwgI3AsIHApOyBcDQo+PiArICAgIGVsc2UgXA0KPj4gKwl7ICBcDQo+PiArICAgICAgICAg IHByaW50ZigiV0FUOiAlcyA9PSAlemQgKGV4cGVjdGVkICV6ZClcbiIsICNwLCBwLCB2KTsgXA0K Pj4gKwkgIF9fYnVpbHRpbl9hYm9ydCAoKTsgXA0KPj4gKwl9IFwNCj4+ICt9IHdoaWxlICgwKTsN Cj4+ICsNCj4+ICtzdHJ1Y3QgdHJhaWxpbmdfYXJyYXlfMSB7DQo+PiArICAgIGludCBhOw0KPj4g KyAgICBpbnQgYjsNCj4+ICsgICAgaW50IGNbNF0gX19hdHRyaWJ1dGVfXyAoKHN0cmljdF9mbGV4 X2FycmF5ICgxKSkpOw0KPj4gK307DQo+PiArDQo+PiArc3RydWN0IHRyYWlsaW5nX2FycmF5XzIg ew0KPj4gKyAgICBpbnQgYTsNCj4+ICsgICAgaW50IGI7DQo+PiArICAgIGludCBjWzFdIF9fYXR0 cmlidXRlX18gKChzdHJpY3RfZmxleF9hcnJheSAoMikpKTsNCj4+ICt9Ow0KPj4gKw0KPj4gK3N0 cnVjdCB0cmFpbGluZ19hcnJheV8zIHsNCj4+ICsgICAgaW50IGE7DQo+PiArICAgIGludCBiOw0K Pj4gKyAgICBpbnQgY1swXSBfX2F0dHJpYnV0ZV9fICgoc3RyaWN0X2ZsZXhfYXJyYXkgKDMpKSk7 DQo+PiArfTsNCj4+ICtzdHJ1Y3QgdHJhaWxpbmdfYXJyYXlfNCB7DQo+PiArICAgIGludCBhOw0K Pj4gKyAgICBpbnQgYjsNCj4+ICsgICAgaW50IGNbXTsNCj4+ICt9Ow0KPj4gKw0KPj4gK3ZvaWQg X19hdHRyaWJ1dGVfXygoX19ub2lubGluZV9fKSkgc3R1ZmYoDQo+PiArICAgIHN0cnVjdCB0cmFp bGluZ19hcnJheV8xICpub3JtYWwsDQo+PiArICAgIHN0cnVjdCB0cmFpbGluZ19hcnJheV8yICp0 cmFpbGluZ18xLA0KPj4gKyAgICBzdHJ1Y3QgdHJhaWxpbmdfYXJyYXlfMyAqdHJhaWxpbmdfMCwN Cj4+ICsgICAgc3RydWN0IHRyYWlsaW5nX2FycmF5XzQgKnRyYWlsaW5nX2ZsZXgpDQo+PiArew0K Pj4gKyAgICBleHBlY3QoX19idWlsdGluX29iamVjdF9zaXplKG5vcm1hbC0+YywgMSksIDE2KTsN Cj4+ICsgICAgZXhwZWN0KF9fYnVpbHRpbl9vYmplY3Rfc2l6ZSh0cmFpbGluZ18xLT5jLCAxKSwg NCk7DQo+PiArICAgIGV4cGVjdChfX2J1aWx0aW5fb2JqZWN0X3NpemUodHJhaWxpbmdfMC0+Yywg MSksIDApOw0KPj4gKyAgICBleHBlY3QoX19idWlsdGluX29iamVjdF9zaXplKHRyYWlsaW5nX2Zs ZXgtPmMsIDEpLCAtMSk7DQo+PiArfQ0KPj4gKw0KPj4gK2ludCBtYWluKGludCBhcmdjLCBjaGFy ICphcmd2W10pDQo+PiArew0KPj4gKyAgICBzdHVmZigodm9pZCAqKWFyZ3ZbMF0sICh2b2lkICop YXJndlswXSwgKHZvaWQgKilhcmd2WzBdLCAodm9pZCAqKWFyZ3ZbMF0pOw0KPj4gKw0KPj4gKyAg ICByZXR1cm4gMDsNCj4+ICt9DQo+PiBkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUtb2JqZWN0LXNpemUu Y2MgYi9nY2MvdHJlZS1vYmplY3Qtc2l6ZS5jYw0KPj4gaW5kZXggNGViNDU0YTRhMzMuLjkwNzEw ZWNiYTcyIDEwMDY0NA0KPj4gLS0tIGEvZ2NjL3RyZWUtb2JqZWN0LXNpemUuY2MNCj4+ICsrKyBi L2djYy90cmVlLW9iamVjdC1zaXplLmNjDQo+PiBAQCAtNjA0LDkgKzYwNCw5IEBAIGFkZHJfb2Jq ZWN0X3NpemUgKHN0cnVjdCBvYmplY3Rfc2l6ZV9pbmZvICpvc2ksIGNvbnN0X3RyZWUgcHRyLA0K Pj4gCSAgZWxzZSBpZiAodmFyICE9IHB0X3ZhciAmJiBUUkVFX0NPREUgKHB0X3ZhcikgPT0gTUVN X1JFRikNCj4+IAkgICAgew0KPj4gCSAgICAgIHRyZWUgdiA9IHZhcjsNCj4+IC0JICAgICAgLyog Rm9yICZYLT5mbGQsIGNvbXB1dGUgb2JqZWN0IHNpemUgb25seSBpZiBmbGQgaXNuJ3QgdGhlIGxh c3QNCj4+IC0JCSBmaWVsZCwgYXMgc3RydWN0IHsgaW50IGk7IGNoYXIgY1sxXTsgfSBpcyBvZnRl biB1c2VkIGluc3RlYWQNCj4+IC0JCSBvZiBmbGV4aWJsZSBhcnJheSBtZW1iZXIuICAqLw0KPj4g KwkgICAgICBib29sIGlzX2ZsZXhpYmxlX2FycmF5X21lbV9yZWYgPSBmYWxzZTsNCj4+ICsJICAg ICAgLyogRm9yICZYLT5mbGQsIGNvbXB1dGUgb2JqZWN0IHNpemUgaWYgZmxkIGlzbid0IGEgZmxl eGlibGUgYXJyYXkNCj4+ICsJCSBtZW1iZXIuICAqLw0KPj4gCSAgICAgIHdoaWxlICh2ICYmIHYg IT0gcHRfdmFyKQ0KPj4gCQlzd2l0Y2ggKFRSRUVfQ09ERSAodikpDQo+PiAJCSAgew0KPj4gQEAg LTYzMyw2ICs2MzMsOSBAQCBhZGRyX29iamVjdF9zaXplIChzdHJ1Y3Qgb2JqZWN0X3NpemVfaW5m byAqb3NpLCBjb25zdF90cmVlIHB0ciwNCj4+IAkJCXYgPSBOVUxMX1RSRUU7DQo+PiAJCQlicmVh azsNCj4+IAkJICAgICAgfQ0KPj4gKwkJICAgIGlzX2ZsZXhpYmxlX2FycmF5X21lbV9yZWYNCj4+ ICsJCSAgICAgID0gYXJyYXlfYXRfc3RydWN0X2VuZF9wICh2KQ0KPj4gKwkJCSYmICFERUNMX05P VF9GTEVYQVJSQVkgKFRSRUVfT1BFUkFORCAodiwgMSkpOw0KPiANCj4gQXMgc2FpZCBpbiB0aGUg cmV2aWV3IGZvciB0aGUgZmlyc3QgcGF0Y2ggYXJyYXlfYXRfc3RydWN0X2VuZF9wIHNob3VsZA0K PiBjaGVjayBERUNMX05PVF9GTEVYQVJSQVkuDQpPa2F5Lg0KDQpUaGVuLCAgc2hvdWxkIHdlIGNo YW5nZSB0aGUgbmFtZSBvZiDigJxhcnJheV9hdF9zdHJ1Y3RfZW5kX3DigJ0gdG8gYSBtb3JlIGRl c2NyaXB0aXZlIG5hbWUsIGZvciBleGFtcGxlLOKAnWZsZXhpYmxlX2FycmF5X21lbWJlcl9w4oCd PyBPdGhlcndpc2UsDQpJdOKAmXMgcmVhbGx5IGNvbmZ1c2luZy4NCg0KDQo+IA0KPiBPSyB3aXRo IHJlbW92aW5nIHRoZSBleHRyYSBjaGVjayBoZXJlLg0KDQpPa2F5Lg0KDQoNCnRoYW5rcy4NCg0K UWluZw0KPiANCj4+IAkJICAgIHdoaWxlICh2ICE9IHB0X3ZhciAmJiBUUkVFX0NPREUgKHYpID09 IENPTVBPTkVOVF9SRUYpDQo+PiAJCSAgICAgIGlmIChUUkVFX0NPREUgKFRSRUVfVFlQRSAoVFJF RV9PUEVSQU5EICh2LCAwKSkpDQo+PiAJCQkgICE9IFVOSU9OX1RZUEUNCj4+IEBAIC02NDUsMTIg KzY0OCw5IEBAIGFkZHJfb2JqZWN0X3NpemUgKHN0cnVjdCBvYmplY3Rfc2l6ZV9pbmZvICpvc2ks IGNvbnN0X3RyZWUgcHRyLA0KPj4gCQkJJiYgVFJFRV9DT0RFIChUUkVFX1RZUEUgKFRSRUVfT1BF UkFORCAodiwgMCkpKQ0KPj4gCQkJICAgPT0gUkVDT1JEX1RZUEUpDQo+PiAJCSAgICAgIHsNCj4+ IC0JCQl0cmVlIGZsZF9jaGFpbiA9IERFQ0xfQ0hBSU4gKFRSRUVfT1BFUkFORCAodiwgMSkpOw0K Pj4gLQkJCWZvciAoOyBmbGRfY2hhaW47IGZsZF9jaGFpbiA9IERFQ0xfQ0hBSU4gKGZsZF9jaGFp bikpDQo+PiAtCQkJICBpZiAoVFJFRV9DT0RFIChmbGRfY2hhaW4pID09IEZJRUxEX0RFQ0wpDQo+ PiAtCQkJICAgIGJyZWFrOw0KPj4gLQ0KPj4gLQkJCWlmIChmbGRfY2hhaW4pDQo+PiArCQkJLyog Y29tcHV0ZSBvYmplY3Qgc2l6ZSBvbmx5IGlmIHYgaXMgbm90IGENCj4+ICsJCQkgICBmbGV4aWJs ZSBhcnJheSBtZW1iZXIuICAqLw0KPj4gKwkJCWlmICghaXNfZmxleGlibGVfYXJyYXlfbWVtX3Jl ZikNCj4+IAkJCSAgew0KPj4gCQkJICAgIHYgPSBOVUxMX1RSRUU7DQo+PiAJCQkgICAgYnJlYWs7 DQo+PiANCj4gDQo+IC0tIA0KPiBSaWNoYXJkIEJpZW5lciA8cmd1ZW50aGVyQHN1c2UuZGU+DQo+ IFNVU0UgU29mdHdhcmUgU29sdXRpb25zIEdlcm1hbnkgR21iSCwgRnJhbmtlbnN0cmFzc2UgMTQ2 LCA5MDQ2MSBOdWVybmJlcmcsDQo+IEdlcm1hbnk7IEdGOiBJdm8gVG90ZXYsIEFuZHJldyBNeWVy cywgQW5kcmV3IE1jRG9uYWxkLCBCb3VkaWVuIE1vZXJtYW47DQo+IEhSQiAzNjgwOSAoQUcgTnVl cm5iZXJnKQ0KDQo=