From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id C37F1C07E9D for ; Mon, 26 Sep 2022 21:50:56 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230411AbiIZVuy (ORCPT ); Mon, 26 Sep 2022 17:50:54 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:37724 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S230393AbiIZVux (ORCPT ); Mon, 26 Sep 2022 17:50:53 -0400 Received: from mx0a-00069f02.pphosted.com (mx0a-00069f02.pphosted.com [205.220.165.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id BE880AF4B3 for ; Mon, 26 Sep 2022 14:50:51 -0700 (PDT) Received: from pps.filterd (m0246629.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 28QKmw7I005424; Mon, 26 Sep 2022 21:50:49 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=7qwaXUXy90PpagO1LPcGWUjxcnGyHEcYQbzFIS4Ky5s=; b=SXmTPToT9RuUoNzqaMsqgn0Bm+hycm3C0Mj9Z6e6ati/yU0E7c4oUUaLnNg1nvJWqduV Y/riNfeBw/KCkF9XtteL/BTfcS0EuGwW10j0Bcj9Hrg/aOqxMpz4ar8cWM4H7A0nMRzH lUmjGWIY38Aw5lRxitAsmc0+QyhT2EJ14q5fwXQmj6iNDS2qjsvxv7t8+TrXn+H2+W7x NX/hoWVorO2wP3kW1aLQhkCIq6h9YDsXpRP2KAkMrYKMCEfFRFduQSuUoI/oiRdHb1Jg 8MLf6P4cSUKo9eo4QmWXiTNtW26WmtoyXtIBZ0KA1HROqWcdfnAl7pUwYVnieiHfGGwl gQ== Received: from phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta03.appoci.oracle.com [138.1.37.129]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3jst0kmuvu-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 26 Sep 2022 21:50:48 +0000 Received: from pps.filterd (phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 28QJFG0V001501; Mon, 26 Sep 2022 21:50:48 GMT Received: from nam11-dm6-obe.outbound.protection.outlook.com (mail-dm6nam11lp2168.outbound.protection.outlook.com [104.47.57.168]) by phxpaimrmta03.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3jtpuyw1b3-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Mon, 26 Sep 2022 21:50:48 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=G+St5FjkeRNhw3lVn2paBrxXOwy2jLXnshmffbn2OSKYwp22zLdbZzcgFTJF0OdqmZ7XjgCsjAtyvePXtv/WUUgWGhTa+4MpM4jGJkpwyR8WxB9cfgOl8JWum3uOEs/CBmv/Piz17V2lJb35U+pEuZcWAukK5bjjiOpsLEvReNdEgTW2P6/QLKV1GDph1ltpLq0OC945Yqst/ygLjeSnACSeSZEgcKtjnbKQP2nnMEYGghU8RTLQH+xEjIrKqqR6p7Q/6b4/KqHsGxvfPwuGtRUxff1DwLiE37tvrbTksxm3yFrka9rl1tsepKp1gQ00Jgk9xbKm/PqikWlp4/Z6fQ== 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=7qwaXUXy90PpagO1LPcGWUjxcnGyHEcYQbzFIS4Ky5s=; b=PpSoDkzsVHxXCT6khHwO2q1NtllJYuz8a3LZCIc/Rax3aTRKavxoKqVx4YdmNRNWLPtycAFU1uvL3DtEkUKd5Ivtict3v1xLyIlbzPPO219V4L2MUsc1/AYCf8KgqlNOMVKo3LFvIef2dIQba6Ya9vbxqcIpNBv4zUgk238Lh+vlfe7+tsWizA8iVy3CBOhguncHWtNzPRWj+VPNaZ6/Z9qpGbTZS/DKkLOYCl3TOgigDmlMNjEkyg5KDxLbyz9aXmfuFeMZvs5/nImGVN/y3D4Y9tCiFDju6hsnYKcbjDMgkpWr5Dnvp+OhMQMN47ylATf3Wi7mQemHfLMUdbTHjg== 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=7qwaXUXy90PpagO1LPcGWUjxcnGyHEcYQbzFIS4Ky5s=; b=tzQXe751Zrwy6FpR72Wez3w4J4IBA8DzFnTY/i+fj40dcqFKBHMbDKtpOni0CWkhQTfdzOqVcAPoYATdvdJH9Yo7zQ8DCIb739JjEPYKNuEu3rMs3qgOc5ziLhlNFgxdvLz7mpl8aqJi5Z5+1rxQ+cBi63GDhuEbxI1W39oKCQc= Received: from BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) by CO6PR10MB5554.namprd10.prod.outlook.com (2603:10b6:303:141::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5654.26; Mon, 26 Sep 2022 21:50:46 +0000 Received: from BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::1c59:e718:73e3:f1f9]) by BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::1c59:e718:73e3:f1f9%3]) with mapi id 15.20.5654.025; Mon, 26 Sep 2022 21:50:46 +0000 From: Allison Henderson To: "djwong@kernel.org" CC: "linux-xfs@vger.kernel.org" Subject: Re: [PATCH v3 20/26] xfs: Add parent pointers to rename Thread-Topic: [PATCH v3 20/26] xfs: Add parent pointers to rename Thread-Index: AQHYzkaFW8xFp7hf0U+UqF94B6MqV63tlYoAgASx+IA= Date: Mon, 26 Sep 2022 21:50:46 +0000 Message-ID: References: <20220922054458.40826-1-allison.henderson@oracle.com> <20220922054458.40826-21-allison.henderson@oracle.com> In-Reply-To: Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Evolution 3.44.1-0ubuntu1 x-ms-publictraffictype: Email x-ms-traffictypediagnostic: BY5PR10MB4306:EE_|CO6PR10MB5554:EE_ x-ms-office365-filtering-correlation-id: 31aaccf6-64dc-493f-acae-08daa0092ae4 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: LZTVR8VAG5r1EMhRfYnZDPb9G6fFj7e0tk+mJpPidGIFH85uFpkYtFNJrDURPCoCCyBdLl3f19MsevlU9Wv/sbenFfgANqeZxsU2e0bhcrVZzXZ5WIMQ3QxFXMpRfc06Aeg10+doJRyR47fcIiWI+7KuapcJOwYZ2FvDA0OYQMkMeimO/DdB8UFMlyoQQE5mWRXiezCM2XzhHVOcszRMlL2GnaO9DxDtkRAWAxnBhZnBmhXjoooSmv9K9fBlHiydT76/6V7bawOH3+2A8n3upcaPWUh/kOJbwWKbfMelZvLY5HnIWOz38WpE2S5HYz8ix4C4rF51PGkCaKWahumxl3vOlFKEhyTBEv1OwF8UQzhgn5vwJieEM2o0/LdylqBd1AjE/Y18G/H0/k1c9bwQ84sncnbMH+o57IoWITLqJJUveU2zn1Gyq4DFTM6UhEXj1fOi6iPMSJUdWia2EGQoZTzVDtKXZyEsE3gbpRoQFT6aUJ0j6BFbM+1OAbhsed76no4n7/1DSHkWrp9keRP0l71y78n3xHmfR5LOL01cp8aTfs4rAuIYf45FN+odXC0iP5iUtj4/NbGcRV5NRuqOHfrgyHg9G+UnHF/h43vgrod+YnpTG7H5rENN74FVHAIgt9ul+6SPyClZU/33EuHyFIL963djPEq5l9xJ55LbedA7JbVux10ZzOi0k3/SSTT5HTKAzNkC6dDSFJ57wF5cHx8Nz2twmWnQFLio0q05VEjq31dAj99HoWHnZyJP6iHOuojOFhSWlFq4klMCo37uAg== x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:BY5PR10MB4306.namprd10.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230022)(366004)(346002)(396003)(39860400002)(136003)(376002)(451199015)(5660300002)(66556008)(478600001)(6512007)(44832011)(71200400001)(6486002)(26005)(8936002)(38070700005)(36756003)(38100700002)(6506007)(66946007)(83380400001)(41300700001)(76116006)(66446008)(64756008)(8676002)(4326008)(66476007)(316002)(2616005)(186003)(6916009)(86362001)(122000001)(2906002)(21314003);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?VjJGQVdLUFVYNDVqQ1lOeUQrNFVhVUNjb21oSkc1bzQ1NzdZRDYrbFgwNnds?= =?utf-8?B?T1cvUGxubTdPM25sdEJvNlJTY01xRXlnZ01tTnlYcEVaQlY3bmFwWkpxR3Fq?= =?utf-8?B?UHV4aUdkN1EvSGdrcE03MitPUEw4NDVJMjFGRDl3M0lGSUNuWW1tRzVMMnlE?= =?utf-8?B?cGN4N25hNHNuUzBzN2N3VWJDN0YyQVRseHdhRUhJZEwxWHh0OHNqSkhoQ01U?= =?utf-8?B?eGRCRVNoa2cyY0VNU3pqMzNzYURKSFMwRmM2d2pNdGx2WHhlU3B0eTBZeGdV?= =?utf-8?B?WlVmekRLOUFSdk96VmFkTlU4MlIzSlRTM0dZb1M3bnkrR0lzenc1Ujh0ZC84?= =?utf-8?B?eVQyakg5MjZJamJQYVQzRzFxOVpOUEFsdCtRbEJaL3lCVEloTC9PUzIvU2F6?= =?utf-8?B?T1VZcGV1Tkw0YmhHRXB3WmNxQmZvRGZva0QzTCtOaHNHb2llazhNTTBBMkxL?= =?utf-8?B?REg2anI3c002a2ROeDFTckxqb3doTThNblhhRVpPVkczT1luUUI5UzdYblZr?= =?utf-8?B?YVR1SituQ01FRURMdHl4Z3lMUjZsc1M2djY4d3dXTTJkK3ZSQUlqeFFBazBj?= =?utf-8?B?MlRUTG1MV3JJcmZla0xZaVRXTmJmL0pwRFdDRk5qRlpzeUtCUzNjOVhrRlBH?= =?utf-8?B?NmowNGlWVndhSWZnWHAvY0V2NjJ4T1NPblR4dDlTQ1BRUnQzbDd1QzJqa3R6?= =?utf-8?B?TkVwWVFsSGFYbTBzMkdSYzBqQWl2SHl2d2VUanEwc052eHFJSTQrL0NUSzVw?= =?utf-8?B?RHJKeWFWTXplOVpGdDViWHhZSHdiZnZZK0NyWjcyL2ErUXNhcmhyeFlzVXhD?= =?utf-8?B?ZmlIVWw3YWFCOXowZFh4TE5meVJScHlTd3RQVUErZGJUMzNqdkt6YnNSdE5X?= =?utf-8?B?b2VNaGVoQkQ2clFZOExXRWl5MGw5Mnl3Q09JYXpHQnhyNncvbE54aDRkYUJH?= =?utf-8?B?dzN5SlVlRlNTQ3pzWFcwaHlwbjBuZ2dqbnhJZmo2aVBrMEpoanZVQWNZNEpr?= =?utf-8?B?YXphV3hDZ1JoYnZ5cjUvbnVFeGV6L3pzN2M4bFJVOC9QYzF1TGloNE5yRXk5?= =?utf-8?B?eUVzNEVOaC9XUEJRNElxbG9YS3hpWkhDWWNtY3JSSkJFSm1YR1hacXpyVTNz?= =?utf-8?B?VGhic2x2TE5GVXlGaTZuSytadDJGOW9ORWdDM29YaTM3WElSb2hQYWVlU1VG?= =?utf-8?B?WngzZWdKTFJWTFpjd3hIVld4RnVMNTc1ZTkvQ0VqdlgrMU1oRUxHRkxMUm5C?= =?utf-8?B?SG52b0hldXNMYVkzRjJuTWZKQU4yZEN6SEY4NHJFa2kra3dVYm1QZEgvWkxD?= =?utf-8?B?aDVwZWRaeHNJOFZQdXRUbkZra0loaHhnWHJjNVZMejQxNG9uVUREMURiTkNU?= =?utf-8?B?WFo1UktLTFBpeWg0dm9rMnVDcGorUkVnVXcvRlIxc2dPUWZmeFZpdmthcDJj?= =?utf-8?B?QWtURXZlcFhWSE5uTHFLalJqMVZvTElDY0NidGs2YkFYdFhHdGZXYmljK0gv?= =?utf-8?B?V2t4TllaNEdXck9Wdzd6UmtyOU9CN3p3LzRhQlJnV3VuVm9xcVU5eUxWaldU?= =?utf-8?B?anZDcjhvQkdIdVVobEFLN3p1MUdNdFRNK0locHJmN0p3ZHpOWGRNQ2VjSjdQ?= =?utf-8?B?WTZydkNPL2RuTThGNHNHdkk0TkoxekIxcUhRa3c3MXZXSzRzQlIwaGw0ZDRQ?= =?utf-8?B?aElSN2xQZ2JORmNnY05tai9vY01GMzB5RkNOMCtxb1FCRmthdnNvclUxNkR5?= =?utf-8?B?T1ZUeStFRWQ5QWk3RzBlSGxxT1psdzhIRE0wNHNDUmxOMTNqa3ZjdDhvRDJv?= =?utf-8?B?ZlpvT251YnpMdDBTekQyNHB3VVNVZ0dTa3NYOWlNVEI1WjRGMUJCQTJHcHFo?= =?utf-8?B?YkZxRU9wcDNyT3grSGRPeWZ4K0RsVkxwOXZSNENmc3lhcWNzN3k1ZnFXTjY4?= =?utf-8?B?c0lYSThVS0UxTkp2citySHdud3U3NE5UUzdpQjVJVjdqOXlJMHd6UXFIeTQy?= =?utf-8?B?K2M2NjdQSVpxdVYzWHpmT2xkRUJIcXFhOG5LTDVzbEFFdWNFMXMrMlhmYTc1?= =?utf-8?B?RGdjbjJYMkZHUlFVTTRxVytsYWhpVkdFRVI4cys3VnBkV3FxKzQyUWZqcy9z?= =?utf-8?B?KzNBNU9IeTdWMkJJUDlzMzBpTUlLRmdqRXF5TUZDejZla2RPSFhjOXBZaFhR?= =?utf-8?B?alE9PQ==?= Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-OriginatorOrg: oracle.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BY5PR10MB4306.namprd10.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 31aaccf6-64dc-493f-acae-08daa0092ae4 X-MS-Exchange-CrossTenant-originalarrivaltime: 26 Sep 2022 21:50:46.0969 (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: tOMop2Fb+ZZowlDMN7JKrkgBB6DmDOBx6elHW8gra6SQ/A+sYr4diH3z+oUsawnDn/Dv0aE5kssNOmqGSqwnrpcVKF8k70clbnykYZFaMdI= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CO6PR10MB5554 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.205,Aquarius:18.0.895,Hydra:6.0.528,FMLib:17.11.122.1 definitions=2022-09-26_10,2022-09-22_02,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 malwarescore=0 bulkscore=0 phishscore=0 mlxscore=0 mlxlogscore=999 adultscore=0 spamscore=0 suspectscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2209130000 definitions=main-2209260134 X-Proofpoint-GUID: uVWT92H91Zg-7XWxlgUVfefYuv8j5Oqm X-Proofpoint-ORIG-GUID: uVWT92H91Zg-7XWxlgUVfefYuv8j5Oqm Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org T24gRnJpLCAyMDIyLTA5LTIzIGF0IDE1OjA4IC0wNzAwLCBEYXJyaWNrIEouIFdvbmcgd3JvdGU6 Cj4gT24gV2VkLCBTZXAgMjEsIDIwMjIgYXQgMTA6NDQ6NTJQTSAtMDcwMCwKPiBhbGxpc29uLmhl bmRlcnNvbkBvcmFjbGUuY29twqB3cm90ZToKPiA+IEZyb206IEFsbGlzb24gSGVuZGVyc29uIDxh bGxpc29uLmhlbmRlcnNvbkBvcmFjbGUuY29tPgo+ID4gCj4gPiBUaGlzIHBhdGNoIHJlbW92ZXMg dGhlIG9sZCBwYXJlbnQgcG9pbnRlciBhdHRyaWJ1dGUgZHVyaW5nIHRoZQo+ID4gcmVuYW1lCj4g PiBvcGVyYXRpb24sIGFuZCByZS1hZGRzIHRoZSB1cGRhdGVkIHBhcmVudCBwb2ludGVyLsKgIElu IHRoZSBjYXNlIG9mCj4gPiB4ZnNfY3Jvc3NfcmVuYW1lLCB3ZSBtb2RpZnkgdGhlIHJvdXRpbmUg bm90IHRvIHJvbGwgdGhlIHRyYW5zYWN0aW9uCj4gPiBqdXN0Cj4gPiB5ZXQuwqAgV2Ugd2lsbCBk byB0aGlzIGFmdGVyIHRoZSBwYXJlbnQgcG9pbnRlciBpcyBhZGRlZCBpbiB0aGUKPiA+IGNhbGxp bmcKPiA+IHhmc19yZW5hbWUgZnVuY3Rpb24uCj4gPiAKPiA+IFNpZ25lZC1vZmYtYnk6IEFsbGlz b24gSGVuZGVyc29uIDxhbGxpc29uLmhlbmRlcnNvbkBvcmFjbGUuY29tPgo+ID4gLS0tCj4gPiDC oGZzL3hmcy9saWJ4ZnMveGZzX2F0dHIuY8KgwqAgfMKgIDIgKy0KPiA+IMKgZnMveGZzL2xpYnhm cy94ZnNfYXR0ci5owqDCoCB8wqAgMSArCj4gPiDCoGZzL3hmcy9saWJ4ZnMveGZzX3BhcmVudC5j IHwgMzEgKysrKysrKysrKysrKysrKysKPiA+IMKgZnMveGZzL2xpYnhmcy94ZnNfcGFyZW50Lmgg fMKgIDcgKysrKwo+ID4gwqBmcy94ZnMveGZzX2lub2RlLmPCoMKgwqDCoMKgwqDCoMKgIHwgNjkK PiA+ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tCj4gPiDCoDUgZmlsZXMg Y2hhbmdlZCwgMTA0IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCj4gPiAKPiA+IGRpZmYg LS1naXQgYS9mcy94ZnMvbGlieGZzL3hmc19hdHRyLmMgYi9mcy94ZnMvbGlieGZzL3hmc19hdHRy LmMKPiA+IGluZGV4IGU5Njc3MjhkMWVlNy4uM2Y5YmQ4NDAxZjMzIDEwMDY0NAo+ID4gLS0tIGEv ZnMveGZzL2xpYnhmcy94ZnNfYXR0ci5jCj4gPiArKysgYi9mcy94ZnMvbGlieGZzL3hmc19hdHRy LmMKPiA+IEBAIC05MjMsNyArOTIzLDcgQEAgeGZzX2F0dHJfZGVmZXJfYWRkKAo+ID4gwqB9Cj4g PiDCoAo+ID4gwqAvKiBTZXRzIGFuIGF0dHJpYnV0ZSBmb3IgYW4gaW5vZGUgYXMgYSBkZWZlcnJl ZCBvcGVyYXRpb24gKi8KPiA+IC1zdGF0aWMgaW50Cj4gPiAraW50Cj4gPiDCoHhmc19hdHRyX2Rl ZmVyX3JlcGxhY2UoCj4gPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHhmc19kYV9hcmdzwqDCoMKg wqDCoMKgKmFyZ3MpCj4gPiDCoHsKPiA+IGRpZmYgLS1naXQgYS9mcy94ZnMvbGlieGZzL3hmc19h dHRyLmggYi9mcy94ZnMvbGlieGZzL3hmc19hdHRyLmgKPiA+IGluZGV4IDAzMzAwNTU0MmI5ZS4u OTg1NzYxMjY0ZDFmIDEwMDY0NAo+ID4gLS0tIGEvZnMveGZzL2xpYnhmcy94ZnNfYXR0ci5oCj4g PiArKysgYi9mcy94ZnMvbGlieGZzL3hmc19hdHRyLmgKPiA+IEBAIC01NDYsNiArNTQ2LDcgQEAg aW50IHhmc19hdHRyX2dldF9pbG9ja2VkKHN0cnVjdCB4ZnNfZGFfYXJncwo+ID4gKmFyZ3MpOwo+ ID4gwqBpbnQgeGZzX2F0dHJfZ2V0KHN0cnVjdCB4ZnNfZGFfYXJncyAqYXJncyk7Cj4gPiDCoGlu dCB4ZnNfYXR0cl9kZWZlcl9hZGQoc3RydWN0IHhmc19kYV9hcmdzICphcmdzKTsKPiA+IMKgaW50 IHhmc19hdHRyX2RlZmVyX3JlbW92ZShzdHJ1Y3QgeGZzX2RhX2FyZ3MgKmFyZ3MpOwo+ID4gK2lu dCB4ZnNfYXR0cl9kZWZlcl9yZXBsYWNlKHN0cnVjdCB4ZnNfZGFfYXJncyAqYXJncyk7Cj4gPiDC oGludCB4ZnNfYXR0cl9zZXQoc3RydWN0IHhmc19kYV9hcmdzICphcmdzKTsKPiA+IMKgaW50IHhm c19hdHRyX3NldF9pdGVyKHN0cnVjdCB4ZnNfYXR0cl9pbnRlbnQgKmF0dHIpOwo+ID4gwqBpbnQg eGZzX2F0dHJfcmVtb3ZlX2l0ZXIoc3RydWN0IHhmc19hdHRyX2ludGVudCAqYXR0cik7Cj4gPiBk aWZmIC0tZ2l0IGEvZnMveGZzL2xpYnhmcy94ZnNfcGFyZW50LmMKPiA+IGIvZnMveGZzL2xpYnhm cy94ZnNfcGFyZW50LmMKPiA+IGluZGV4IDM3OGZhMjI3Yjg3Zi4uN2RiMTU3MGUxODQxIDEwMDY0 NAo+ID4gLS0tIGEvZnMveGZzL2xpYnhmcy94ZnNfcGFyZW50LmMKPiA+ICsrKyBiL2ZzL3hmcy9s aWJ4ZnMveGZzX3BhcmVudC5jCj4gPiBAQCAtMTQxLDYgKzE0MSwzNyBAQCB4ZnNfcGFyZW50X2Rl ZmVyX3JlbW92ZSgKPiA+IMKgwqDCoMKgwqDCoMKgwqByZXR1cm4geGZzX2F0dHJfZGVmZXJfcmVt b3ZlKGFyZ3MpOwo+ID4gwqB9Cj4gPiDCoAo+ID4gKwo+ID4gK2ludAo+ID4gK3hmc19wYXJlbnRf ZGVmZXJfcmVwbGFjZSgKPiA+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCB4ZnNfdHJhbnPCoMKgwqDC oMKgwqDCoMKgKnRwLAo+ID4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IHhmc19pbm9kZcKgwqDCoMKg wqDCoMKgwqAqb2xkX2lwLAo+ID4gK8KgwqDCoMKgwqDCoMKgc3RydWN0IHhmc19wYXJlbnRfZGVm ZXLCoCpvbGRfcGFyZW50LAo+ID4gK8KgwqDCoMKgwqDCoMKgeGZzX2RpcjJfZGF0YXB0cl90wqDC oMKgwqDCoMKgb2xkX2Rpcm9mZnNldCwKPiA+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCB4ZnNfbmFt ZcKgwqDCoMKgwqDCoMKgwqDCoCpwYXJlbnRfbmFtZSwKPiA+ICvCoMKgwqDCoMKgwqDCoHN0cnVj dCB4ZnNfaW5vZGXCoMKgwqDCoMKgwqDCoMKgKm5ld19pcCwKPiA+ICvCoMKgwqDCoMKgwqDCoHN0 cnVjdCB4ZnNfcGFyZW50X2RlZmVywqAqbmV3X3BhcmVudCwKPiA+ICvCoMKgwqDCoMKgwqDCoHhm c19kaXIyX2RhdGFwdHJfdMKgwqDCoMKgwqDCoG5ld19kaXJvZmZzZXQsCj4gPiArwqDCoMKgwqDC oMKgwqBzdHJ1Y3QgeGZzX2lub2RlwqDCoMKgwqDCoMKgwqDCoCpjaGlsZCkKPiA+ICt7Cj4gPiAr wqDCoMKgwqDCoMKgwqBzdHJ1Y3QgeGZzX2RhX2FyZ3PCoMKgwqDCoMKgwqAqYXJncyA9ICZuZXdf cGFyZW50LT5hcmdzOwo+ID4gKwo+ID4gK8KgwqDCoMKgwqDCoMKgeGZzX2luaXRfcGFyZW50X25h bWVfcmVjKCZvbGRfcGFyZW50LT5yZWMsIG9sZF9pcCwKPiA+IG9sZF9kaXJvZmZzZXQpOwo+ID4g K8KgwqDCoMKgwqDCoMKgeGZzX2luaXRfcGFyZW50X25hbWVfcmVjKCZuZXdfcGFyZW50LT5yZWMs IG5ld19pcCwKPiA+IG5ld19kaXJvZmZzZXQpOwo+ID4gK8KgwqDCoMKgwqDCoMKgbmV3X3BhcmVu dC0+YXJncy5uYW1lID0gKGNvbnN0IHVpbnQ4X3QgKikmb2xkX3BhcmVudC0+cmVjOwo+ID4gK8Kg wqDCoMKgwqDCoMKgbmV3X3BhcmVudC0+YXJncy5uYW1lbGVuID0gc2l6ZW9mKHN0cnVjdAo+ID4g eGZzX3BhcmVudF9uYW1lX3JlYyk7Cj4gPiArwqDCoMKgwqDCoMKgwqBuZXdfcGFyZW50LT5hcmdz Lm5ld19uYW1lID0gKGNvbnN0IHVpbnQ4X3QgKikmbmV3X3BhcmVudC0KPiA+ID5yZWM7Cj4gPiAr wqDCoMKgwqDCoMKgwqBuZXdfcGFyZW50LT5hcmdzLm5ld19uYW1lbGVuID0gc2l6ZW9mKHN0cnVj dAo+ID4geGZzX3BhcmVudF9uYW1lX3JlYyk7Cj4gPiArwqDCoMKgwqDCoMKgwqBhcmdzLT50cmFu cyA9IHRwOwo+ID4gK8KgwqDCoMKgwqDCoMKgYXJncy0+ZHAgPSBjaGlsZDsKPiA+ICvCoMKgwqDC oMKgwqDCoGlmIChwYXJlbnRfbmFtZSkgewo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoG5ld19wYXJlbnQtPmFyZ3MudmFsdWUgPSAodm9pZCAqKXBhcmVudF9uYW1lLT5uYW1lOwo+ ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG5ld19wYXJlbnQtPmFyZ3MudmFsdWVs ZW4gPSBwYXJlbnRfbmFtZS0+bGVuOwo+ID4gK8KgwqDCoMKgwqDCoMKgfQo+ID4gK8KgwqDCoMKg wqDCoMKgYXJncy0+aGFzaHZhbCA9IHhmc19kYV9oYXNobmFtZShhcmdzLT5uYW1lLCBhcmdzLT5u YW1lbGVuKTsKPiA+ICvCoMKgwqDCoMKgwqDCoHJldHVybiB4ZnNfYXR0cl9kZWZlcl9yZXBsYWNl KGFyZ3MpOwo+ID4gK30KPiA+ICsKPiA+IMKgdm9pZAo+ID4gwqB4ZnNfcGFyZW50X2NhbmNlbCgK PiA+IMKgwqDCoMKgwqDCoMKgwqB4ZnNfbW91bnRfdMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg Km1wLAo+ID4gZGlmZiAtLWdpdCBhL2ZzL3hmcy9saWJ4ZnMveGZzX3BhcmVudC5oCj4gPiBiL2Zz L3hmcy9saWJ4ZnMveGZzX3BhcmVudC5oCj4gPiBpbmRleCA3OWQzZmFiYjVlNTYuLmIyZWQ0ZjM3 Mzc5OSAxMDA2NDQKPiA+IC0tLSBhL2ZzL3hmcy9saWJ4ZnMveGZzX3BhcmVudC5oCj4gPiArKysg Yi9mcy94ZnMvbGlieGZzL3hmc19wYXJlbnQuaAo+ID4gQEAgLTI3LDYgKzI3LDEzIEBAIGludCB4 ZnNfcGFyZW50X2luaXQoeGZzX21vdW50X3QgKm1wLCBzdHJ1Y3QKPiA+IHhmc19wYXJlbnRfZGVm ZXIgKipwYXJlbnRwKTsKPiA+IMKgaW50IHhmc19wYXJlbnRfZGVmZXJfYWRkKHN0cnVjdCB4ZnNf dHJhbnMgKnRwLCBzdHJ1Y3QKPiA+IHhmc19wYXJlbnRfZGVmZXIgKnBhcmVudCwKPiA+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgeGZzX2lu b2RlICpkcCwgc3RydWN0IHhmc19uYW1lCj4gPiAqcGFyZW50X25hbWUsCj4gPiDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgeGZzX2RpcjJfZGF0YXB0cl90 IGRpcm9mZnNldCwgc3RydWN0Cj4gPiB4ZnNfaW5vZGUgKmNoaWxkKTsKPiA+ICtpbnQgeGZzX3Bh cmVudF9kZWZlcl9yZXBsYWNlKHN0cnVjdCB4ZnNfdHJhbnMgKnRwLCBzdHJ1Y3QKPiA+IHhmc19p bm9kZSAqb2xkX2lwLAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgc3RydWN0IHhmc19wYXJlbnRfZGVmZXIgKm9sZF9wYXJlbnQsCj4gPiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB4ZnNfZGlyMl9kYXRhcHRy X3Qgb2xkX2Rpcm9mZnNldCwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHN0cnVjdCB4ZnNfbmFtZSAqcGFyZW50X25hbWUsIHN0cnVjdAo+ID4geGZz X2lub2RlICpuZXdfaXAsCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBzdHJ1Y3QgeGZzX3BhcmVudF9kZWZlciAqbmV3X3BhcmVudCwKPiA+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHhmc19kaXIyX2RhdGFw dHJfdCBuZXdfZGlyb2Zmc2V0LAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgc3RydWN0IHhmc19pbm9kZSAqY2hpbGQpOwo+ID4gwqBpbnQgeGZzX3Bh cmVudF9kZWZlcl9yZW1vdmUoc3RydWN0IHhmc190cmFucyAqdHAsIHN0cnVjdCB4ZnNfaW5vZGUK PiA+ICpkcCwKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBzdHJ1Y3QgeGZzX3BhcmVudF9kZWZlciAqcGFyZW50LAo+ID4gwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHhmc19kaXIyX2Rh dGFwdHJfdCBkaXJvZmZzZXQsCj4gPiBkaWZmIC0tZ2l0IGEvZnMveGZzL3hmc19pbm9kZS5jIGIv ZnMveGZzL3hmc19pbm9kZS5jCj4gPiBpbmRleCA0YTgzOTlkMzViMTcuLjNhMmJlYzRiYTIyOCAx MDA2NDQKPiA+IC0tLSBhL2ZzL3hmcy94ZnNfaW5vZGUuYwo+ID4gKysrIGIvZnMveGZzL3hmc19p bm9kZS5jCj4gPiBAQCAtMjkxMiw2ICsyOTEyLDEyIEBAIHhmc19yZW5hbWUoCj4gPiDCoMKgwqDC oMKgwqDCoMKgaW50wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoHNwYWNlcmVzOwo+ID4gwqDCoMKgwqDCoMKgwqDCoGJvb2zCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldHJpZWQgPSBm YWxzZTsKPiA+IMKgwqDCoMKgwqDCoMKgwqBpbnTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZXJyb3IsIG5vc3BhY2VfZXJyb3IgPSAwOwo+ ID4gK8KgwqDCoMKgwqDCoMKgeGZzX2RpcjJfZGF0YXB0cl90wqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoG5ld19kaXJvZmZzZXQ7Cj4gPiArwqDCoMKgwqDCoMKgwqB4ZnNfZGlyMl9kYXRhcHRy X3TCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgb2xkX2Rpcm9mZnNldDsKPiA+ICvCoMKgwqDC oMKgwqDCoHN0cnVjdCB4ZnNfcGFyZW50X2RlZmVywqDCoMKgwqDCoMKgwqDCoMKgKm9sZF9wYXJl bnRfcHRyID0gTlVMTDsKPiA+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCB4ZnNfcGFyZW50X2RlZmVy wqDCoMKgwqDCoMKgwqDCoMKgKm5ld19wYXJlbnRfcHRyID0gTlVMTDsKPiA+ICvCoMKgwqDCoMKg wqDCoHN0cnVjdCB4ZnNfcGFyZW50X2RlZmVywqDCoMKgwqDCoMKgwqDCoMKgKnRhcmdldF9wYXJl bnRfcHRyID0gTlVMTDsKPiA+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCB4ZnNfcGFyZW50X2RlZmVy wqDCoMKgwqDCoMKgwqDCoMKgKndpcF9wYXJlbnRfcHRyID0gTlVMTDsKPiA+IMKgCj4gPiDCoMKg wqDCoMKgwqDCoMKgdHJhY2VfeGZzX3JlbmFtZShzcmNfZHAsIHRhcmdldF9kcCwgc3JjX25hbWUs IHRhcmdldF9uYW1lKTsKPiA+IMKgCj4gPiBAQCAtMjkyNSw3ICsyOTMxLDggQEAgeGZzX3JlbmFt ZSgKPiA+IMKgwqDCoMKgwqDCoMKgwqAgKi8KPiA+IMKgwqDCoMKgwqDCoMKgwqBpZiAoZmxhZ3Mg JiBSRU5BTUVfV0hJVEVPVVQpIHsKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg ZXJyb3IgPSB4ZnNfcmVuYW1lX2FsbG9jX3doaXRlb3V0KG1udF91c2VybnMsCj4gPiBzcmNfbmFt ZSwKPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdGFyZ2V0X2Rw LCBmYWxzZSwKPiA+ICZ3aXApOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCB0YXJnZXRfZHAsCj4gPiB4ZnNfaGFzX3BhcmVudChtcCksCj4gPiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICZ3aXApOwo+ID4gwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBpZiAoZXJyb3IpCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXR1cm4gZXJyb3I7Cj4gPiDCoAo+ID4gQEAgLTI5MzUs NiArMjk0MiwyNCBAQCB4ZnNfcmVuYW1lKAo+ID4gwqAKPiA+IMKgwqDCoMKgwqDCoMKgwqB4ZnNf c29ydF9mb3JfcmVuYW1lKHNyY19kcCwgdGFyZ2V0X2RwLCBzcmNfaXAsIHRhcmdldF9pcCwKPiA+ IHdpcCwKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqBpbm9kZXMsICZudW1faW5vZGVzKTsKPiA+ICvCoMKgwqDCoMKgwqDC oGlmICh4ZnNfaGFzX3BhcmVudChtcCkpIHsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqBlcnJvciA9IHhmc19wYXJlbnRfaW5pdChtcCwgJm9sZF9wYXJlbnRfcHRyKTsKPiA+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoZXJyb3IpCj4gPiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGdvdG8gb3V0X3JlbGVhc2Vfd2lwOwo+ ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGVycm9yID0geGZzX3BhcmVudF9pbml0 KG1wLCAmbmV3X3BhcmVudF9wdHIpOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oGlmIChlcnJvcikKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgZ290byBvdXRfcmVsZWFzZV93aXA7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgaWYgKHdpcCkgewo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBlcnJvciA9IHhmc19wYXJlbnRfaW5pdChtcCwKPiA+ICZ3aXBfcGFyZW50X3B0 cik7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlm IChlcnJvcikKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoGdvdG8gb3V0X3JlbGVhc2Vfd2lwOwo+ID4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoH0KPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBp ZiAodGFyZ2V0X2lwICE9IE5VTEwpIHsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgZXJyb3IgPSB4ZnNfcGFyZW50X2luaXQobXAsCj4gPiAmdGFyZ2V0 X3BhcmVudF9wdHIpOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqBpZiAoZXJyb3IpCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBnb3RvIG91dF9yZWxlYXNlX3dpcDsKPiA+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB9Cj4gPiArwqDCoMKgwqDCoMKgwqB9Cj4gPiDC oAo+ID4gwqByZXRyeToKPiA+IMKgwqDCoMKgwqDCoMKgwqBub3NwYWNlX2Vycm9yID0gMDsKPiAK PiBTYW1lIGJsb2NrIHJlc2VydmF0aW9uIGNvbW1lbnQgYXMgbW9zdCBvZiB0aGUgcHJldmlvdXMg b25lcywgZXhjZXB0Cj4gdGhpcwo+IG9uZSBpcyBzdXBlciBuYXN0eToKPiAKPiB1bnNpZ25lZCBp bnQKPiB4ZnNfcmVuYW1lX3NwYWNlX3JlcygKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHhmc19t b3VudMKgwqDCoMKgwqDCoMKgwqAqbXAsCj4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB4ZnNfbmFt ZcKgwqDCoMKgwqDCoMKgwqDCoCpzcmNfbmFtZSwKPiDCoMKgwqDCoMKgwqDCoMKgc3RydWN0IHhm c19wYXJlbnRfZGVmZXLCoCp0YXJnZXRfcGFyZW50X3B0ciwKPiDCoMKgwqDCoMKgwqDCoMKgc3Ry dWN0IHhmc19uYW1lwqDCoMKgwqDCoMKgwqDCoMKgKnRhcmdldF9uYW1lLAo+IMKgwqDCoMKgwqDC oMKgwqBzdHJ1Y3QgeGZzX3BhcmVudF9kZWZlcsKgKm5ld19wYXJlbnRfcHRyLAo+IMKgwqDCoMKg wqDCoMKgwqBzdHJ1Y3QgeGZzX2lub2RlwqDCoMKgwqDCoMKgwqDCoCp3aXApCj4gewo+IMKgwqDC oMKgwqDCoMKgwqB1bnNpZ25lZCBpbnTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqByZXQ7Cj4gCj4g wqDCoMKgwqDCoMKgwqDCoC8qIFhYWCBpcyB0aGUgdGFyZ2V0X25hbWUtPmxlbiB1c2FnZSBiZWxv dyBjb3JyZWN0PyAqLwo+IMKgwqDCoMKgwqDCoMKgwqByZXQgPSBYRlNfRElSUkVNT1ZFX1NQQUNF X1JFUyhtcCkgKwo+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoFhGU19ESVJFTlRFUl9TUEFDRV9SRVMobXAsIHRhcmdldF9uYW1lLT5sZW4pOwo+IAo+IMKg wqDCoMKgwqDCoMKgwqBpZiAobmV3X3BhcmVudF9wdHIpIHsKPiDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoGlmICh3aXApCj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgcmV0ICs9IHhmc19wcHRyX2NhbGNfc3BhY2VfcmVzKG1wLCBzcmNfbmFt ZS0KPiA+bGVuKTsKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldCArPSAyICog eGZzX3BwdHJfY2FsY19zcGFjZV9yZXMobXAsIHRhcmdldF9uYW1lLQo+ID5sZW4pOwo+IMKgwqDC oMKgwqDCoMKgwqB9Cj4gwqDCoMKgwqDCoMKgwqDCoGlmICh0YXJnZXRfcGFyZW50X3B0cikKPiDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHJldCArPSB4ZnNfcHB0cl9jYWxjX3NwYWNl X3JlcyhtcCwgdGFyZ2V0X25hbWUtPmxlbik7Cj4gCj4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiBy ZXQ7Cj4gfQo+IAo+IHhmc19yZW5hbWUoLi4uKQo+IHsKPiDCoMKgwqDCoMKgwqDCoMKgc3BhY3Jl cyA9IHhmc19yZW5hbWVfc3BhY2VfcmVzKG1wLCBzcmNfbmFtZSwKPiB0YXJnZXRfcGFyZW50X3B0 ciwKPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB0YXJn ZXRfbmFtZSwgbmV3X3BhcmVudF9wdHIsIHdpcCk7Cj4gwqDCoMKgwqDCoMKgwqDCoGVycm9yID0g eGZzX3RyYW5zX2FsbG9jKG1wLCAmTV9SRVMobXApLT50cl9yZW5hbWUsIHNwYWNlcmVzLAo+IDAs Cj4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgMCwgJnRw KTsKPiDCoMKgwqDCoMKgwqDCoMKgLyogLi4uICovCj4gfQo+IApPaywgd2lsbCBhZGQgdGhlc2Ug aGVscGVycyB0byB0aGUgeGZzXypfc3BhY2VfcmVzIGNvbGxlY3Rpb24uClRoYW5rcyEKCkFsbGlz b24KCj4gKFRoZSByZXN0IG9mIHRoZSBsb2dpYyBsb29rcyBvayBub3cuKQo+IAo+IC0tRAo+IAo+ ID4gQEAgLTMxMTAsNyArMzEzNSw3IEBAIHhmc19yZW5hbWUoCj4gPiDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAqIHRvIGFjY291bnQgZm9yIHRoZSAiLi4iIHJlZmVyZW5jZSBmcm9t IHRoZSBuZXcKPiA+IGVudHJ5Lgo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg Ki8KPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZXJyb3IgPSB4ZnNfZGlyX2Ny ZWF0ZW5hbWUodHAsIHRhcmdldF9kcCwKPiA+IHRhcmdldF9uYW1lLAo+ID4gLcKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgc3JjX2lwLT5pX2lubywgc3BhY2VyZXMsCj4gPiBOVUxMKTsKPiA+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNyY19pcC0+aV9pbm8sIHNwYWNlcmVzLAo+ID4gJm5l d19kaXJvZmZzZXQpOwo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBpZiAoZXJy b3IpCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBn b3RvIG91dF90cmFuc19jYW5jZWw7Cj4gPiDCoAo+ID4gQEAgLTMxMzEsNyArMzE1Niw3IEBAIHhm c19yZW5hbWUoCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqIG5hbWUgYXQg dGhlIGRlc3RpbmF0aW9uIGRpcmVjdG9yeSwgcmVtb3ZlIGl0Cj4gPiBmaXJzdC4KPiA+IMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICovCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGVycm9yID0geGZzX2Rpcl9yZXBsYWNlKHRwLCB0YXJnZXRfZHAsIHRhcmdldF9u YW1lLAo+ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHNyY19pcC0+aV9pbm8sIHNwYWNlcmVzLAo+ ID4gTlVMTCk7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3JjX2lwLT5pX2lubywgc3BhY2Vy ZXMsCj4gPiAmbmV3X2Rpcm9mZnNldCk7Cj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGlmIChlcnJvcikKPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoGdvdG8gb3V0X3RyYW5zX2NhbmNlbDsKPiA+IMKgCj4gPiBAQCAtMzIwNCwxNCAr MzIyOSwzOSBAQCB4ZnNfcmVuYW1lKAo+ID4gwqDCoMKgwqDCoMKgwqDCoCAqLwo+ID4gwqDCoMKg wqDCoMKgwqDCoGlmICh3aXApCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGVy cm9yID0geGZzX2Rpcl9yZXBsYWNlKHRwLCBzcmNfZHAsIHNyY19uYW1lLCB3aXAtCj4gPiA+aV9p bm8sCj4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgc3BhY2VyZXMsIE5VTEwpOwo+ID4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoHNwYWNlcmVzLCAmb2xkX2Rpcm9mZnNldCk7Cj4gPiDCoMKgwqDCoMKg wqDCoMKgZWxzZQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBlcnJvciA9IHhm c19kaXJfcmVtb3ZlbmFtZSh0cCwgc3JjX2RwLCBzcmNfbmFtZSwKPiA+IHNyY19pcC0+aV9pbm8s Cj4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzcGFjZXJlcywgTlVMTCk7Cj4gPiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzcGFjZXJlcywKPiA+ICZvbGRfZGlyb2Zmc2V0KTsKPiA+ IMKgCj4gPiDCoMKgwqDCoMKgwqDCoMKgaWYgKGVycm9yKQo+ID4gwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqBnb3RvIG91dF90cmFuc19jYW5jZWw7Cj4gPiDCoAo+ID4gK8KgwqDCoMKg wqDCoMKgaWYgKG5ld19wYXJlbnRfcHRyKSB7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgaWYgKHdpcCkgewo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqBlcnJvciA9IHhmc19wYXJlbnRfZGVmZXJfYWRkKHRwLAo+ID4gd2lwX3BhcmVu dF9wdHIsCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHNyY19kcCwKPiA+IHNyY19uYW1lLAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBvbGRfZGlyb2Zmc2V0LAo+ID4gd2lwKTsKPiA+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKGVycm9yKQo+ID4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg Z290byBvdXRfdHJhbnNfY2FuY2VsOwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oH0KPiA+ICsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBlcnJvciA9IHhmc19w YXJlbnRfZGVmZXJfcmVwbGFjZSh0cCwgc3JjX2RwLAo+ID4gb2xkX3BhcmVudF9wdHIsCj4gPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBvbGRfZGlyb2Zmc2V0LAo+ID4g dGFyZ2V0X25hbWUsCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB0 YXJnZXRfZHAsCj4gPiBuZXdfcGFyZW50X3B0ciwKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIG5ld19kaXJvZmZzZXQsCj4gPiBzcmNfaXApOwo+ID4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoGlmIChlcnJvcikKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZ290byBvdXRfdHJhbnNfY2FuY2VsOwo+ID4gK8Kg wqDCoMKgwqDCoMKgfQo+ID4gKwo+ID4gK8KgwqDCoMKgwqDCoMKgaWYgKHRhcmdldF9wYXJlbnRf cHRyKSB7Cj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgZXJyb3IgPSB4ZnNfcGFy ZW50X2RlZmVyX3JlbW92ZSh0cCwgdGFyZ2V0X2RwLAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqB0YXJnZXRfcGFyZW50X3B0ciwKPiA+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgbmV3X2Rpcm9mZnNldCwKPiA+IHRhcmdldF9pcCk7Cj4gPiAr wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgaWYgKGVycm9yKQo+ID4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBnb3RvIG91dF90cmFuc19jYW5jZWw7 Cj4gPiArwqDCoMKgwqDCoMKgwqB9Cj4gPiArCj4gPiDCoMKgwqDCoMKgwqDCoMKgeGZzX3RyYW5z X2ljaGd0aW1lKHRwLCBzcmNfZHAsIFhGU19JQ0hHVElNRV9NT0QgfAo+ID4gWEZTX0lDSEdUSU1F X0NIRyk7Cj4gPiDCoMKgwqDCoMKgwqDCoMKgeGZzX3RyYW5zX2xvZ19pbm9kZSh0cCwgc3JjX2Rw LCBYRlNfSUxPR19DT1JFKTsKPiA+IMKgwqDCoMKgwqDCoMKgwqBpZiAobmV3X3BhcmVudCkKPiA+ IEBAIC0zMjM0LDYgKzMyODQsMTUgQEAgeGZzX3JlbmFtZSgKPiA+IMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGktLTsKPiA+IMKgwqDCoMKgwqDCoMKgwqB9 Cj4gPiDCoG91dF9yZWxlYXNlX3dpcDoKPiA+ICvCoMKgwqDCoMKgwqDCoGlmIChuZXdfcGFyZW50 X3B0cikKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB4ZnNfcGFyZW50X2NhbmNl bChtcCwgbmV3X3BhcmVudF9wdHIpOwo+ID4gK8KgwqDCoMKgwqDCoMKgaWYgKG9sZF9wYXJlbnRf cHRyKQo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHhmc19wYXJlbnRfY2FuY2Vs KG1wLCBvbGRfcGFyZW50X3B0cik7Cj4gPiArwqDCoMKgwqDCoMKgwqBpZiAodGFyZ2V0X3BhcmVu dF9wdHIpCj4gPiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgeGZzX3BhcmVudF9jYW5j ZWwobXAsIHRhcmdldF9wYXJlbnRfcHRyKTsKPiA+ICvCoMKgwqDCoMKgwqDCoGlmICh3aXBfcGFy ZW50X3B0cikKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqB4ZnNfcGFyZW50X2Nh bmNlbChtcCwgd2lwX3BhcmVudF9wdHIpOwo+ID4gKwo+ID4gwqDCoMKgwqDCoMKgwqDCoGlmICh3 aXApCj4gPiDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHhmc19pcmVsZSh3aXApOwo+ ID4gwqDCoMKgwqDCoMKgwqDCoGlmIChlcnJvciA9PSAtRU5PU1BDICYmIG5vc3BhY2VfZXJyb3Ip Cj4gPiAtLSAKPiA+IDIuMjUuMQo+ID4gCgo=