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 07248C04A95 for ; Fri, 23 Sep 2022 23:53:38 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S232939AbiIWXxf (ORCPT ); Fri, 23 Sep 2022 19:53:35 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:43072 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231387AbiIWXxd (ORCPT ); Fri, 23 Sep 2022 19:53:33 -0400 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 3ED96137E4D for ; Fri, 23 Sep 2022 16:53:31 -0700 (PDT) Received: from pps.filterd (m0246631.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.5/8.17.1.5) with ESMTP id 28NJEG3C012724; Fri, 23 Sep 2022 23:53:26 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=iO31PbvZqWWQgli0AqMqOU6w2oikZnMNMfad8SMTvgg=; b=rQXVNdlwA9mwpE8dkCKXO6HsPRgjvSAu+voxvfLviD/4pVJKCRtzcGWx+R+vyeHR4CWu P/fSpQky2Y3D67YFjx8l8uUrpXOqIPmkzJKVEbNarrklAvUdhTFCNwoVvhmqed/ryfQq PU9l6qgqYjbwdfbg63AOj+V52ntNihmzZgSwSeysx06QBQ93a6e2XbU2SNXb5r+eeplj tsMifQpJ5CqxUT92pcHl1jxlsp9xLApQlbSFVJDTFCbds+6W/DZks5cfvHNcspf2zbd2 JVbOV6wJ5H+fnyLIFtLf1n6NsvYGNE0OJSHNe/nPwYaZXRPl9eIvQ0MWpQ5Q0XNRXiWT rA== Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (phxpaimrmta02.appoci.oracle.com [147.154.114.232]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3jn69m20vj-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 23 Sep 2022 23:53:25 +0000 Received: from pps.filterd (phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 28NMsarN001906; Fri, 23 Sep 2022 23:53:24 GMT Received: from nam12-dm6-obe.outbound.protection.outlook.com (mail-dm6nam12lp2177.outbound.protection.outlook.com [104.47.59.177]) by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id 3jp39ub7tf-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 23 Sep 2022 23:53:24 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=JsQvwJz2mBo+0WT7a0BdDmmgjRHNcE8DhNiGH5QOHU/I4qu8WTuShe3yulMUIQBdMDSbBP6TeOtu6nehzCYvq7L4ALfQ37Gug+r+78uKSNyLvctw6xlX/MZJ5jEV2OZR/0fc5LTfq4ffZsEox6PXSFDi6bYBB/XvLKLW1x0iwKcLvfmaj6ugdZvfgQz74PMqNMq1ZL11awNHn7iG+SjrgI12tWIoyVg43LPPpsYdFupgmQ49pB+G/WTQVmJjtpuItTdBtu1WsMMS8l7pTCq5t0d97su4YQBmDgYx2jgDBvftOpBI7iHD+LJ+VJLuoXCjNMe9F7IZHaFN1Z5z2GMDiw== 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=iO31PbvZqWWQgli0AqMqOU6w2oikZnMNMfad8SMTvgg=; b=CKEC+TAImJ9ZHUhP2vCh1sFmHb6uogBBX7oMvxbcIHuHzHl9w332x5mHxq1CYTA2jwzHRB4zINwLcsmuvFy3lU7pe5/WHEsAhanbCiCaenIocKo1mf47q5RpUYjLgOwRgo/PaN2XYz9WHdU9Q29nIdltee21fIEb+BcJal4KG409YPu4U2BHjmmRHRvlxE+VKg3iAoTTJVAOTVArHEE+0f+CnjfHMmor4iJv8WuyAa2sMLDeHwcFabPEPZjQ6UVSjrgbuLL6qCXnfFd/yt8sONcvDjkHBDX+WWcLpRWDp/WdhGEvBhWjaWVDIlk1IZjpks4lCJg1CjNtK6BXWat/iw== 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=iO31PbvZqWWQgli0AqMqOU6w2oikZnMNMfad8SMTvgg=; b=l4BJyayww4UdBOYT1pwKzssQkyZcPekHAVx15ZBGdYw781/7Gji1FOyUPWCW8HBs8EzNMfY4Jk1Uai2/RGcLZiQ8LuxZqsUYTVt5cHaoUxGJLPILYHpfWL63bxgzF1+33mAPrU/Nl2no0bcgf5BCs9mW21+WNkQiEzKsp7ohdgY= Received: from BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) by DS7PR10MB4877.namprd10.prod.outlook.com (2603:10b6:5:3a3::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5654.20; Fri, 23 Sep 2022 23:53:22 +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.020; Fri, 23 Sep 2022 23:53:22 +0000 From: Allison Henderson To: "djwong@kernel.org" CC: "linux-xfs@vger.kernel.org" Subject: Re: [PATCH v3 13/26] xfs: extend transaction reservations for parent attributes Thread-Topic: [PATCH v3 13/26] xfs: extend transaction reservations for parent attributes Thread-Index: AQHYzkZ/ko3Skan5wEGiO8fXOW9tpK3tdpSAgAA8MgA= Date: Fri, 23 Sep 2022 23:53:22 +0000 Message-ID: <56e66827346fcc5ba40805a34abffc95f16c740b.camel@oracle.com> References: <20220922054458.40826-1-allison.henderson@oracle.com> <20220922054458.40826-14-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_|DS7PR10MB4877:EE_ x-ms-office365-filtering-correlation-id: 37d4bdc1-a82e-43c9-342b-08da9dbecca5 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: hXwAAx6PbZP2zftinyuPx5jLpmgU2Os4TLTgDiIu2W9sHBbC8MNRS7rzsUkydS4EKbIDy/3DzFXz3NyekQayeR8S8tbjIyIihrKakyAbkLNPNEJlBURYLIgJFeyV/+duKHJBBmmcjDOS8bscNbsF1qF8AVyKB5p11pttdoFcPOfj2nPowUrQa1ey5gngGb3pSvr1IdgyhNVupfaByiPQyd/B0wS561NFqEUCz1oMd3181hMVh6TZTsOqXPiaZ9/2bHDiVIPwiwo30R/v2rtnYR83EXTcU+JHsHlw2BIIvyiO9LLsrMWKf8sjL7ZJTeV5sN6Hl8nmd3T//I1S7Nnfm2/Zefky5Ego35+WiJJT3W5HJ0uBV1srRw/3xZjJmse6uyhM67eto7x3hraTBqK7bLqCnkeXOmYRv1E8B/0SCWF0u/vdJU0X+FigQg9mcXBbbQjyIyqMq8lqhwbenS8cts5zonRJpTgXdQyt12LIHiQiQ+79ss9Ut2oP6jTFnFtCjIY7/dzVH9R0194d2IgoTXviYRF5yvDHwUiNpgqkK5wLu54IMo2qGU407Rx05ZOYilvdYzqJAeWETmdm7VWziOF+lhK31xZF3nOdwD9GYAsmnZUptUz4EcHf5mdyt1f9eFooPcCvPig0FXiDImm79cJSN80l2IY8YBHq9G25UpWMABRG9AacUYQAm2KW5rw0M+Jz/wSdwqZjCYgyn+oiKpP7uWqaYLdzLaWAGfoFG+8SV2EWioona2DEMeehhHhV 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)(346002)(396003)(39860400002)(366004)(136003)(376002)(451199015)(6486002)(71200400001)(66446008)(66946007)(36756003)(6916009)(64756008)(478600001)(66476007)(66556008)(4326008)(8676002)(76116006)(8936002)(41300700001)(316002)(38070700005)(186003)(2616005)(122000001)(86362001)(38100700002)(6512007)(26005)(6506007)(83380400001)(2906002)(5660300002)(30864003)(44832011);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?aG40emZReFcwT1psSDJxNWI0RXRySlBsdW5Ud3IrRkxkKzdxVEZkYnVRTEdX?= =?utf-8?B?ckVSdzdUL1B2VXVWUnBERWJzUmpQSGV6VjRyU0JmRlhYTTVvMjBFbm53Wnc4?= =?utf-8?B?N2syaUpJMGYySURXa2xkWTE2RFRrQzJvSVptR2hMbnZpTTZneTl1dmJtWElR?= =?utf-8?B?WE9KN2pyQWVIUzBkSnJ1SmcwTk5CZ0p4VVhuSzFnMnN0QlVHdTI2MFJzaXh3?= =?utf-8?B?b0RJa1dad2lpNm1VRGtEYWVaMnF0MzhhSWQrNmhYUS8rNVdQRTR6VzN6eG9X?= =?utf-8?B?akI4QXQydkNPcXlLQ1hiRnNOcU1kS2k0OGh5ejJ2TXJONjhGK3pETXVBd2VT?= =?utf-8?B?VTNOVVNCMW5YQW1VT1pWOFhmYWVKUmhDN2theFRFOEtpOFBPb0lVQ21hR0JL?= =?utf-8?B?UUFiL1hNSWtaUVJpaWVGZTFkWW5uZGtyQ1FGU3JwSU5CczdPREVBY0JBNnhq?= =?utf-8?B?eStJeDBtQmt3QkprenVYc2tyV1VPYnVXMnlDTVNQcWt2ZStvTWQxYitoVUtZ?= =?utf-8?B?NjRTT05LNE1rbG1LZTNtUVQvc0djT3B1eTJ3cmVBV0huNnRUQzlkZ2l0blUy?= =?utf-8?B?NDB5eU1qNzl0Sm5yYkc1bU02NTdUZDVCbEgzSGd6YXlvaDYxMnZpRkRJdTR4?= =?utf-8?B?TTk4WDVLV0FWdXNyaXpoV2c2YzluZ1laWkQwMGc4RS9MQUxGL2VXZ09mOThI?= =?utf-8?B?aUF6djFXWkZOM3NkRVlDSmtTbkJRV0huM2JzNiticzJsNHB3YTNpYXRRRTZK?= =?utf-8?B?UUsyODZkQVhMemxWa0NERHVPUHpIdHRlaHZqQmMxUEVoMUtsRzgvbFdIY0FK?= =?utf-8?B?MzVqL052ck5qM2ZxKzZHeGhKYVhBYTZmV25xWGN4Q1lTZEM0dXNaK1hJV2oy?= =?utf-8?B?Zlp3TWUxY0tBZm9peHpLb2JBajNlNzBEQVozb2dEQmhsQXY4K0hHTTNBcmRF?= =?utf-8?B?WDQ5M2l0K3k1QjhiczMveHlHMnhsZUhFRTE5V1U4NUVCVDQ0cUxmUmQ4ci9t?= =?utf-8?B?ODNMZzJoT0llcUY4a3lNbk0vUFh3QURBM1lma2FMNnBvejd0VXVkQ01RRFZn?= =?utf-8?B?QnVHeE1jQkVaZDRkWkJ1cHFJU1RSNXlmVkwxbXBFajFwOTJUbmtyb0phQ0JF?= =?utf-8?B?ZEIwUDhLQUxPTUYwaTdYb0xLRXhXaGI4VXRuQk4xVmlFUnp2UnJ0bUFnNndl?= =?utf-8?B?a2pOZzV0OUhzQ00yb1lvMm1ObE4zeEMzOXlJZFlqSFBQZ0pDUWpmbVhYREth?= =?utf-8?B?THNCcmx2Tmt1M2NuaDlhNEkvbHFiMnd2NWJBbkdEamsrUDRUR2Qvb0RHM3dG?= =?utf-8?B?MjM3aFNudHVLUS8rV3hLYVZaTkZuV2U4c1V3NjVLQ2xQWG9rM3Jqc3BWTktI?= =?utf-8?B?cUx2Q3N4ekxUZEd3N2hxeStoS21RcVpDckxDeGZzUVdSQVRHdFdYREZtcko3?= =?utf-8?B?TlVsOFZ1QlZkNXllRmlrTjY4R3lOVm0xRmFmZVVNSXI4TUNXM1JrMUtZUk0x?= =?utf-8?B?bzJDSzFPWEVncDg1R2NQS09XR2FlOVVpa0QyZFhGekloVnBxU2RwT1VKZjRZ?= =?utf-8?B?OXNYL2JzVy9Ta0xra2c2OFFFS0J4bnFsOHVtR0REM3p0WUdvTGdiSkdQOVNs?= =?utf-8?B?bGJEclNDVm85a2t3TE82K3lIcElIYVk2SEQvYjNhZVlYMUk0SnVNOHZSQk01?= =?utf-8?B?ZzF3SkQxdTNEaUJLN3h2SXY1WlVicGIyUUFaRDBSY2hGWFdGZ0RjbFRqNnpD?= =?utf-8?B?ZklTQjlhc2kzMi9wbWVWanRza3NRcmpIOTVNT2RFK3BzYlZXZ2pOZnhaSklY?= =?utf-8?B?d2YwdlRnMHVZUlZtSEFBL2haWFErQldaMm1UOXh6aEFQenN3d1JHRVhzS1Vy?= =?utf-8?B?QUhteHNhaWl6K3orakRJdE1qa01LR292UjE0TkwreEpmbWNGZzhGa1ZBekhM?= =?utf-8?B?eU1KTmJ3NlNSRHNxVkJEV0pXQzMxT1pqNUJOTzBSVTJML0xqYm5rdVBOdVJm?= =?utf-8?B?WGhBZm9TckFBZmMzcUhqVW1pVFY2UVFrbk44YmdHd3VXWHN6MVhZVzhDbUV0?= =?utf-8?B?Rzd5YnNDanlBMnZ1Wm5pMHQzeHJzY1V5SXBvQ1BFV1NFaDZXOHRvOGZ5SUp1?= =?utf-8?B?Qmw3N0ViUEtPMDJxN2JZR1g1L2FodjFJalpORGl4YndkMnNLVkZyQUFQSFNj?= =?utf-8?B?VXc9PQ==?= 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: 37d4bdc1-a82e-43c9-342b-08da9dbecca5 X-MS-Exchange-CrossTenant-originalarrivaltime: 23 Sep 2022 23:53:22.8447 (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: k9D6tQzne6m9YfB7dTd6tPHbYFQ2hrCXGykedVZ7g7TD4t6qAjByefVua5V3LFRQqWMhHY+aiiSivKUBRpzGQwzGmObWmpFakgF3tYsb21Y= X-MS-Exchange-Transport-CrossTenantHeadersStamped: DS7PR10MB4877 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-23_10,2022-09-22_02,2022-06-22_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 adultscore=0 phishscore=0 bulkscore=0 malwarescore=0 spamscore=0 suspectscore=0 mlxscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2209130000 definitions=main-2209230154 X-Proofpoint-ORIG-GUID: NIZO6o7r7Ui0_nvxrVfufKRlWRMWjMU3 X-Proofpoint-GUID: NIZO6o7r7Ui0_nvxrVfufKRlWRMWjMU3 Precedence: bulk List-ID: X-Mailing-List: linux-xfs@vger.kernel.org T24gRnJpLCAyMDIyLTA5LTIzIGF0IDEzOjE3IC0wNzAwLCBEYXJyaWNrIEouIFdvbmcgd3JvdGU6 Cj4gT24gV2VkLCBTZXAgMjEsIDIwMjIgYXQgMTA6NDQ6NDVQTSAtMDcwMCwKPiBhbGxpc29uLmhl bmRlcnNvbkBvcmFjbGUuY29twqB3cm90ZToKPiA+IEZyb206IEFsbGlzb24gSGVuZGVyc29uIDxh bGxpc29uLmhlbmRlcnNvbkBvcmFjbGUuY29tPgo+ID4gCj4gPiBXZSBuZWVkIHRvIGFkZCwgcmVt b3ZlIG9yIG1vZGlmeSBwYXJlbnQgcG9pbnRlciBhdHRyaWJ1dGVzIGR1cmluZwo+ID4gY3JlYXRl L2xpbmsvdW5saW5rL3JlbmFtZSBvcGVyYXRpb25zIGF0b21pY2FsbHkgd2l0aCB0aGUgZGlyZW50 cyBpbgo+ID4gdGhlCj4gPiBwYXJlbnQgZGlyZWN0b3JpZXMgYmVpbmcgbW9kaWZpZWQuIFRoaXMg bWVhbnMgdGhleSBuZWVkIHRvIGJlCj4gPiBtb2RpZmllZAo+ID4gaW4gdGhlIHNhbWUgdHJhbnNh Y3Rpb24gYXMgdGhlIHBhcmVudCBkaXJlY3RvcmllcywgYW5kIHNvIHdlIG5lZWQKPiA+IHRvIGFk ZAo+ID4gdGhlIHJlcXVpcmVkIHNwYWNlIGZvciB0aGUgYXR0cmlidXRlIG1vZGlmaWNhdGlvbnMg dG8gdGhlCj4gPiB0cmFuc2FjdGlvbgo+ID4gcmVzZXJ2YXRpb25zLgo+ID4gCj4gPiBTaWduZWQt b2ZmLWJ5OiBEYXZlIENoaW5uZXIgPGRjaGlubmVyQHJlZGhhdC5jb20+Cj4gPiBTaWduZWQtb2Zm LWJ5OiBBbGxpc29uIEhlbmRlcnNvbiA8YWxsaXNvbi5oZW5kZXJzb25Ab3JhY2xlLmNvbT4KPiA+ IC0tLQo+ID4gwqBmcy94ZnMvbGlieGZzL3hmc190cmFuc19yZXN2LmMgfCAxMzUgKysrKysrKysr KysrKysrKysrKysrKysrKystLS0KPiA+IC0tLS0KPiA+IMKgMSBmaWxlIGNoYW5nZWQsIDEwNiBp bnNlcnRpb25zKCspLCAyOSBkZWxldGlvbnMoLSkKPiA+IAo+ID4gZGlmZiAtLWdpdCBhL2ZzL3hm cy9saWJ4ZnMveGZzX3RyYW5zX3Jlc3YuYwo+ID4gYi9mcy94ZnMvbGlieGZzL3hmc190cmFuc19y ZXN2LmMKPiA+IGluZGV4IDJjNGFkNmU0YmIxNC4uZjc3OTk4MDBkNTU2IDEwMDY0NAo+ID4gLS0t IGEvZnMveGZzL2xpYnhmcy94ZnNfdHJhbnNfcmVzdi5jCj4gPiArKysgYi9mcy94ZnMvbGlieGZz L3hmc190cmFuc19yZXN2LmMKPiA+IEBAIC0xOSw2ICsxOSw3IEBACj4gPiDCoCNpbmNsdWRlICJ4 ZnNfdHJhbnMuaCIKPiA+IMKgI2luY2x1ZGUgInhmc19xbS5oIgo+ID4gwqAjaW5jbHVkZSAieGZz X3RyYW5zX3NwYWNlLmgiCj4gPiArI2luY2x1ZGUgInhmc19hdHRyX2l0ZW0uaCIKPiA+IMKgCj4g PiDCoCNkZWZpbmUgX0FMTE9DwqB0cnVlCj4gPiDCoCNkZWZpbmUgX0ZSRUXCoMKgZmFsc2UKPiA+ IEBAIC00MjEsMjggKzQyMiw0NSBAQCB4ZnNfY2FsY19pdHJ1bmNhdGVfcmVzZXJ2YXRpb25fbWlu bG9nc2l6ZSgKPiA+IMKgfQo+ID4gwqAKPiA+IMKgLyoKPiA+IC0gKiBJbiByZW5hbWluZyBhIGZp bGVzIHdlIGNhbiBtb2RpZnk6Cj4gPiAtICrCoMKgwqAgdGhlIGZvdXIgaW5vZGVzIGludm9sdmVk OiA0ICogaW5vZGUgc2l6ZQo+ID4gKyAqIEluIHJlbmFtaW5nIGEgZmlsZXMgd2UgY2FuIG1vZGlm eSAodDEpOgo+ID4gKyAqwqDCoMKgIHRoZSBmb3VyIGlub2RlcyBpbnZvbHZlZDogNSAqIGlub2Rl IHNpemUKPiAKPiAuLi50aGUgKmZpdmUqIGlub2RlcyBpbnZvbHZlZC4uLgo+IAo+IEFsc28gLS0g ZXZlbiBiZWZvcmUgcGFyZW50IHBvaW50ZXJzIHdlIGNvdWxkIGhhdmUgZml2ZSBpbm9kZXMKPiBp bnZvbHZlZAo+IGluIGEgcmVuYW1lIHRyYW5zYWN0aW9uLCBzbyBJIHRoaW5rIHRoaXMgY2hhbmdl IG5lZWRzIHRvIGJlIGEKPiBzZXBhcmF0ZQo+IGJ1Z2ZpeCBhdCB0aGUgc3RhcnQgb2YgdGhlIHNl cmllcy7CoCBSZW5hbWUgaXNuJ3QgZXhwZXJpbWVudGFsLCBzbyBJCj4gY2FuJ3QgbGV0IHRoaXMg b25lIHNsaWRlLiA6LwpJIHNlZSwgb2sgSSB3aWxsIHNwbGl0IHRoaXMgb25lIG91dCB0aGVuCgo+ IAo+ID4gwqAgKsKgwqDCoCB0aGUgdHdvIGRpcmVjdG9yeSBidHJlZXM6IDIgKiAobWF4IGRlcHRo ICsgdjIpICogZGlyIGJsb2NrCj4gPiBzaXplCj4gPiDCoCAqwqDCoMKgIHRoZSB0d28gZGlyZWN0 b3J5IGJtYXAgYnRyZWVzOiAyICogbWF4IGRlcHRoICogYmxvY2sgc2l6ZQo+ID4gwqAgKiBBbmQg dGhlIGJtYXBfZmluaXNoIHRyYW5zYWN0aW9uIGNhbiBmcmVlIGRpciBhbmQgYm1hcCBibG9ja3MK PiA+ICh0d28gc2V0cwo+ID4gLSAqwqDCoMKgwqDCoG9mIGJtYXAgYmxvY2tzKSBnaXZpbmc6Cj4g PiArICrCoMKgwqDCoMKgb2YgYm1hcCBibG9ja3MpIGdpdmluZyAodDIpOgo+ID4gwqAgKsKgwqDC oCB0aGUgYWdmIGZvciB0aGUgYWdzIGluIHdoaWNoIHRoZSBibG9ja3MgbGl2ZTogMyAqIHNlY3Rv cgo+ID4gc2l6ZQo+ID4gwqAgKsKgwqDCoCB0aGUgYWdmbCBmb3IgdGhlIGFncyBpbiB3aGljaCB0 aGUgYmxvY2tzIGxpdmU6IDMgKiBzZWN0b3IKPiA+IHNpemUKPiA+IMKgICrCoMKgwqAgdGhlIHN1 cGVyYmxvY2sgZm9yIHRoZSBmcmVlIGJsb2NrIGNvdW50OiBzZWN0b3Igc2l6ZQo+ID4gwqAgKsKg wqDCoCB0aGUgYWxsb2NhdGlvbiBidHJlZXM6IDMgZXh0cyAqIDIgdHJlZXMgKiAoMiAqIG1heCBk ZXB0aCAtCj4gPiAxKSAqIGJsb2NrIHNpemUKPiA+ICsgKiBJZiBwYXJlbnQgcG9pbnRlcnMgYXJl IGVuYWJsZWQgKHQzKSwgdGhlbiBlYWNoIHRyYW5zYWN0aW9uIGluCj4gPiB0aGUgY2hhaW4KPiA+ ICsgKsKgwqDCoCBtdXN0IGJlIGNhcGFibGUgb2Ygc2V0dGluZyBvciByZW1vdmluZyB0aGUgZXh0 ZW5kZWQKPiA+IGF0dHJpYnV0ZQo+ID4gKyAqwqDCoMKgIGNvbnRhaW5pbmcgdGhlIHBhcmVudCBp bmZvcm1hdGlvbi7CoCBJdCBtdXN0IGFsc28gYmUgYWJsZSB0bwo+ID4gaGFuZGxlCj4gPiArICrC oMKgwqAgdGhlIHRocmVlIHhhdHRyIGludGVudCBpdGVtcyB0aGF0IHRyYWNrIHRoZSBwcm9ncmVz cyBvZiB0aGUKPiA+IHBhcmVudAo+ID4gKyAqwqDCoMKgIHBvaW50ZXIgdXBkYXRlLgo+ID4gwqAg Ki8KPiA+IMKgU1RBVElDIHVpbnQKPiA+IMKgeGZzX2NhbGNfcmVuYW1lX3Jlc2VydmF0aW9uKAo+ ID4gwqDCoMKgwqDCoMKgwqDCoHN0cnVjdCB4ZnNfbW91bnTCoMKgwqDCoMKgwqDCoMKgKm1wKQo+ ID4gwqB7Cj4gPiAtwqDCoMKgwqDCoMKgwqByZXR1cm4gWEZTX0RRVU9UX0xPR1JFUyhtcCkgKwo+ ID4gLcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG1heCgoeGZzX2NhbGNfaW5vZGVfcmVz KG1wLCA0KSArCj4gPiAtwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgeGZz X2NhbGNfYnVmX3JlcygyICogWEZTX0RJUk9QX0xPR19DT1VOVChtcCksCj4gPiAtwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIFhGU19GU0JfVE9fQihtcCwgMSkpKSwKPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgKHhmc19jYWxjX2J1Zl9yZXMoNywgbXAtPm1fc2Iuc2Jfc2VjdHNpemUp ICsKPiA+IC3CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB4ZnNfY2FsY19i dWZfcmVzKHhmc19hbGxvY2ZyZWVfYmxvY2tfY291bnQobXAsCj4gPiAzKSwKPiA+IC3CoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgWEZTX0ZTQl9UT19CKG1wLCAxKSkpKTsKPiA+ICvCoMKgwqDCoMKgwqDCoHVuc2ln bmVkIGludMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoG92ZXJoZWFkID0gWEZTX0RRVU9UX0xPR1JF UyhtcCk7Cj4gPiArwqDCoMKgwqDCoMKgwqBzdHJ1Y3QgeGZzX3RyYW5zX3Jlc3bCoMKgwqAqcmVz cCA9IE1fUkVTKG1wKTsKPiA+ICvCoMKgwqDCoMKgwqDCoHVuc2lnbmVkIGludMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoHQxLCB0MiwgdDMgPSAwOwo+ID4gKwo+ID4gK8KgwqDCoMKgwqDCoMKgdDEg PSB4ZnNfY2FsY19pbm9kZV9yZXMobXAsIDUpICsKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHhmc19jYWxjX2J1Zl9yZXMoMiAqIFhGU19ESVJPUF9MT0dfQ09VTlQobXApLAo+ID4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBYRlNfRlNCX1RPX0IobXAs IDEpKTsKPiA+ICsKPiA+ICvCoMKgwqDCoMKgwqDCoHQyID0geGZzX2NhbGNfYnVmX3Jlcyg3LCBt cC0+bV9zYi5zYl9zZWN0c2l6ZSkgKwo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgeGZzX2Nh bGNfYnVmX3Jlcyh4ZnNfYWxsb2NmcmVlX2Jsb2NrX2NvdW50KG1wLCAzKSwKPiA+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgWEZTX0ZTQl9UT19CKG1wLCAx KSk7Cj4gPiArCj4gPiArwqDCoMKgwqDCoMKgwqBpZiAoeGZzX2hhc19wYXJlbnQobXApKSB7Cj4g PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgdDMgPSBtYXgocmVzcC0+dHJfYXR0cnNl dG0udHJfbG9ncmVzLAo+ID4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgcmVzcC0+dHJfYXR0cnJtLnRyX2xvZ3Jlcyk7Cj4gCj4g T29oIEkgbGlrZSB0aGlzIHJlZmFjdG9yaW5nIG9mIHhmc19jYWxjX3JlbmFtZV9yZXNlcnZhdGlv bi4gOikKPiAKPiBJIGd1ZXNzIHdlIG5vdyB0cl9hdHRye3NldG0scm19IGJlZm9yZSBjb21wdXRp bmcgdGhlIHJlbmFtZQo+IHJlc2VydmF0aW9uCj4gc28gdGhpcyBpcyBvay4KPiAKPiA+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqBvdmVyaGVhZCArPSAzICogKHNpemVvZihzdHJ1Y3QK PiA+IHhmc19hdHRyaV9sb2dfaXRlbSkpOwo+IAo+IFNob3VsZCB0aGUgc2l6ZSBvZiB0aGUgbmFt ZSwgbmV3bmFtZSwgYW5kIHZhbHVlIGJ1ZmZlcnMgYmUgYWRkZWQgaW50bwo+IG92ZXJoZWFkP8Kg IFRoZXkgdGFrZSB1cCBsb2cgc3BhY2UgdG9vLgpUaGF0IHdvdWxkIG1ha2Ugc2Vuc2UsIGJ1dCB3 ZSBjYW50IHJlYWxseSBjYWxjdWxhdGUgdGhhdCBhaGVhZCBvZiB0aW1lCndpdGggb3V0IGp1c3Qg YXNzdW1pbmcgdGhlIG1heCBzaXplIHdoaWNoIGlzIHVwIHRvIDY0ayBmb3IgdGhlIHZhbHVlLiAK TWF5YmUgdGhvc2Ugc2l6ZXMgc2hvdWxkIGJlIGFkZGVkIG9uIGFmdGVyIHdlIGtub3cgd2hhdCB0 aGV5IGFyZT8KCj4gCj4gPiArwqDCoMKgwqDCoMKgwqB9Cj4gPiArCj4gPiArwqDCoMKgwqDCoMKg wqByZXR1cm4gb3ZlcmhlYWQgKyBtYXgzKHQxLCB0MiwgdDMpOwo+ID4gwqB9Cj4gPiDCoAo+ID4g wqAvKgo+ID4gQEAgLTkwOSwyNCArOTI3LDU5IEBAIHhmc19jYWxjX3NiX3Jlc2VydmF0aW9uKAo+ ID4gwqDCoMKgwqDCoMKgwqDCoHJldHVybiB4ZnNfY2FsY19idWZfcmVzKDEsIG1wLT5tX3NiLnNi X3NlY3RzaXplKTsKPiA+IMKgfQo+ID4gwqAKPiA+IC12b2lkCj4gPiAteGZzX3RyYW5zX3Jlc3Zf Y2FsYygKPiA+IC3CoMKgwqDCoMKgwqDCoHN0cnVjdCB4ZnNfbW91bnTCoMKgwqDCoMKgwqDCoMKg Km1wLAo+ID4gLcKgwqDCoMKgwqDCoMKgc3RydWN0IHhmc190cmFuc19yZXN2wqDCoMKgKnJlc3Ap Cj4gPiArLyoKPiA+ICsgKiBDYWxjdWxhdGUgZXh0cmEgc3BhY2UgbmVlZGVkIGZvciBwYXJlbnQg cG9pbnRlciBhdHRyaWJ1dGVzCj4gPiArICovCj4gPiArU1RBVElDIHZvaWQKPiA+ICt4ZnNfY2Fs Y19wYXJlbnRfcHRyX3Jlc2VydmF0aW9ucygKPiA+ICvCoMKgwqDCoMKgwqDCoHN0cnVjdCB4ZnNf bW91bnTCoMKgwqDCoCAqbXApCj4gPiDCoHsKPiA+IC3CoMKgwqDCoMKgwqDCoGludMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoGxvZ2NvdW50X2FkaiA9IDA7Cj4gPiAr wqDCoMKgwqDCoMKgwqBzdHJ1Y3QgeGZzX3RyYW5zX3Jlc3bCoMKgICpyZXNwID0gTV9SRVMobXAp Owo+ID4gwqAKPiA+IC3CoMKgwqDCoMKgwqDCoC8qCj4gPiAtwqDCoMKgwqDCoMKgwqAgKiBUaGUg Zm9sbG93aW5nIHRyYW5zYWN0aW9ucyBhcmUgbG9nZ2VkIGluIHBoeXNpY2FsIGZvcm1hdAo+ID4g YW5kCj4gPiAtwqDCoMKgwqDCoMKgwqAgKiByZXF1aXJlIGEgcGVybWFuZW50IHJlc2VydmF0aW9u IG9uIHNwYWNlLgo+ID4gLcKgwqDCoMKgwqDCoMKgICovCj4gPiAtwqDCoMKgwqDCoMKgwqByZXNw LT50cl93cml0ZS50cl9sb2dyZXMgPSB4ZnNfY2FsY193cml0ZV9yZXNlcnZhdGlvbihtcCwKPiA+ IGZhbHNlKTsKPiA+IC3CoMKgwqDCoMKgwqDCoHJlc3AtPnRyX3dyaXRlLnRyX2xvZ2NvdW50ID0g WEZTX1dSSVRFX0xPR19DT1VOVDsKPiA+IC3CoMKgwqDCoMKgwqDCoHJlc3AtPnRyX3dyaXRlLnRy X2xvZ2ZsYWdzIHw9IFhGU19UUkFOU19QRVJNX0xPR19SRVM7Cj4gPiArwqDCoMKgwqDCoMKgwqBp ZiAoIXhmc19oYXNfcGFyZW50KG1wKSkKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqByZXR1cm47Cj4gPiDCoAo+ID4gLcKgwqDCoMKgwqDCoMKgcmVzcC0+dHJfaXRydW5jYXRlLnRy X2xvZ3JlcyA9Cj4gPiB4ZnNfY2FsY19pdHJ1bmNhdGVfcmVzZXJ2YXRpb24obXAsIGZhbHNlKTsK PiA+IC3CoMKgwqDCoMKgwqDCoHJlc3AtPnRyX2l0cnVuY2F0ZS50cl9sb2djb3VudCA9IFhGU19J VFJVTkNBVEVfTE9HX0NPVU5UOwo+ID4gLcKgwqDCoMKgwqDCoMKgcmVzcC0+dHJfaXRydW5jYXRl LnRyX2xvZ2ZsYWdzIHw9IFhGU19UUkFOU19QRVJNX0xPR19SRVM7Cj4gPiArwqDCoMKgwqDCoMKg wqByZXNwLT50cl9yZW5hbWUudHJfbG9ncmVzICs9IG1heChyZXNwLQo+ID4gPnRyX2F0dHJzZXRt LnRyX2xvZ3JlcywKPiA+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmVzcC0KPiA+ID50cl9hdHRy cm0udHJfbG9ncmVzKTsKPiA+ICvCoMKgwqDCoMKgwqDCoHJlc3AtPnRyX3JlbmFtZS50cl9sb2dj b3VudCArPSBtYXgocmVzcC0KPiA+ID50cl9hdHRyc2V0bS50cl9sb2djb3VudCwKPiA+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJlc3AtCj4gPiA+dHJfYXR0cnJtLnRyX2xvZ2NvdW50KTsK PiAKPiBEb2Vzbid0IHhmc19jYWxjX3JlbmFtZV9yZXNlcnZhdGlvbiBhZGQgdGhpcyB0byB0cl9y ZW5hbWUgYWxyZWFkeT8KT2gsIEkgdGhpbmsgd2UgY2FuIHJlbW92ZSB0aGUgdHJfcmVuYW1lLnRy X2xvZ3JlcyB1cGRhdGUuICBCdXQgbm90IHRoZQpsb2djb3VudCB1cGRhdGUgcmlnaHQ/Cgp4ZnNf Y2FsY19yZW5hbWVfcmVzZXJ2YXRpb24ganVzdCBjYWxjdWxhdGVzIHdoYXQgdHJfcmVuYW1lLnRy X2xvZ3JlcwpzaG91bGQgYmUsIGJ1dCBpdCBkb2VzbnQgbWFrZSBhbnkgYWRkaXRpb25zLiAgSXQn cyB0aGF0J3MgdXNlZCBvdmVyIGluCnhmc19jYWxjX25hbWVzcGFjZV9yZXNlcnZhdGlvbnMsIGJ1 dCB3ZSBzdGlsbCBuZWVkIHRvIHVwZGF0ZQp0cl9yZW5hbWUudHJfbG9nY291bnQgd2hpY2ggaXMg c2VwYXJhdGUgZmllbGQgZnJvbSB0cl9yZW5hbWUudHJfbG9ncmVzLgoKCj4gCj4gPiArCj4gPiAr wqDCoMKgwqDCoMKgwqByZXNwLT50cl9jcmVhdGUudHJfbG9ncmVzICs9IHJlc3AtPnRyX2F0dHJz ZXRtLnRyX2xvZ3JlczsKPiA+ICvCoMKgwqDCoMKgwqDCoHJlc3AtPnRyX2NyZWF0ZS50cl9sb2dj b3VudCArPSByZXNwLQo+ID4gPnRyX2F0dHJzZXRtLnRyX2xvZ2NvdW50Owo+ID4gKwo+ID4gK8Kg wqDCoMKgwqDCoMKgcmVzcC0+dHJfbWtkaXIudHJfbG9ncmVzICs9IHJlc3AtPnRyX2F0dHJzZXRt LnRyX2xvZ3JlczsKPiA+ICvCoMKgwqDCoMKgwqDCoHJlc3AtPnRyX21rZGlyLnRyX2xvZ2NvdW50 ICs9IHJlc3AtCj4gPiA+dHJfYXR0cnNldG0udHJfbG9nY291bnQ7Cj4gPiArCj4gPiArwqDCoMKg wqDCoMKgwqByZXNwLT50cl9saW5rLnRyX2xvZ3JlcyArPSByZXNwLT50cl9hdHRyc2V0bS50cl9s b2dyZXM7Cj4gPiArwqDCoMKgwqDCoMKgwqByZXNwLT50cl9saW5rLnRyX2xvZ2NvdW50ICs9IHJl c3AtPnRyX2F0dHJzZXRtLnRyX2xvZ2NvdW50Owo+ID4gKwo+ID4gK8KgwqDCoMKgwqDCoMKgcmVz cC0+dHJfc3ltbGluay50cl9sb2dyZXMgKz0gcmVzcC0+dHJfYXR0cnNldG0udHJfbG9ncmVzOwo+ ID4gK8KgwqDCoMKgwqDCoMKgcmVzcC0+dHJfc3ltbGluay50cl9sb2djb3VudCArPSByZXNwLQo+ ID4gPnRyX2F0dHJzZXRtLnRyX2xvZ2NvdW50Owo+ID4gKwo+ID4gK8KgwqDCoMKgwqDCoMKgcmVz cC0+dHJfcmVtb3ZlLnRyX2xvZ3JlcyArPSByZXNwLT50cl9hdHRycm0udHJfbG9ncmVzOwo+ID4g K8KgwqDCoMKgwqDCoMKgcmVzcC0+dHJfcmVtb3ZlLnRyX2xvZ2NvdW50ICs9IHJlc3AtPnRyX2F0 dHJybS50cl9sb2djb3VudDsKPiAKPiBTaG91bGRuJ3QgZWFjaCBvZiB0aGVzZSArPSBhZGRpdGlv bnMgYmUgbWFkZSB0bwo+IHhmc19jYWxjX3tpY3JlYXRlLG1rZGlyLGxpbmssc3ltbGluayxyZW1v dmV9X3Jlc2VydmF0aW9uLAo+IHJlc3BlY3RpdmVseT8KPiAKCkkgc3VwcG9zZSB3ZSBjb3VsZCBy ZWRvIGl0IHRoYXQgd2F5PyAgQnV0IHRoZW4gbm90IGFsbCBvZiB0aGUgIis9Igp3b3VsZCBkaXNh cHBlYXIgaWYgdGhleSB3b3JrZWQgbGlrZSB4ZnNfY2FsY19yZW5hbWVfcmVzZXJ2YXRpb24uICBK dXN0CnRoZSAqLnRyX2xvZ3Jlcy4gIERvIHdlIHJlYWxseSB3YW50IHNlcGFyYXRlIHdyYXBwZXJz IGZvciBqdXN0IHRoZXNlCm9uZWxpbmVycyB0aG91Z2g/CgpBbGxpc29uCgo+IC0tRAo+IAo+ID4g K30KPiA+ICsKPiA+ICsvKgo+ID4gKyAqIE5hbWVzcGFjZSByZXNlcnZhdGlvbnMuCj4gPiArICoK PiA+ICsgKiBUaGVzZSBnZXQgdHJpY2t5IHdoZW4gcGFyZW50IHBvaW50ZXJzIGFyZSBlbmFibGVk IGFzIHdlIGhhdmUKPiA+IGF0dHJpYnV0ZQo+ID4gKyAqIG1vZGlmaWNhdGlvbnMgb2NjdXJyaW5n IGZyb20gd2l0aGluIHRoZXNlIHRyYW5zYWN0aW9ucy4gUmF0aGVyCj4gPiB0aGFuIGNvbmZ1c2UK PiA+ICsgKiBlYWNoIG9mIHRoZXNlIHJlc2VydmF0aW9uIGNhbGN1bGF0aW9ucyB3aXRoIHRoZSBj b25kaXRpb25hbAo+ID4gYXR0cmlidXRlCj4gPiArICogcmVzZXJ2YXRpb25zLCBhZGQgdGhlbSBo ZXJlIGluIGEgY2xlYXIgYW5kIGNvbmNpc2UgbWFubmVyLiBUaGlzCj4gPiBhc3N1bWVzIHRoYXQK PiA+ICsgKiB0aGUgYXR0cmlidXRlIHJlc2VydmF0aW9ucyBoYXZlIGFscmVhZHkgYmVlbiBjYWxj dWxhdGVkLgo+ID4gKyAqCj4gPiArICogTm90ZSB0aGF0IHdlIG9ubHkgaW5jbHVkZSB0aGUgc3Rh dGljIGF0dHJpYnV0ZSByZXNlcnZhdGlvbgo+ID4gaGVyZTsgdGhlIHJ1bnRpbWUKPiA+ICsgKiBy ZXNlcnZhdGlvbiB3aWxsIGhhdmUgdG8gYmUgbW9kaWZpZWQgYnkgdGhlIHNpemUgb2YgdGhlCj4g PiBhdHRyaWJ1dGVzIGJlaW5nCj4gPiArICogYWRkZWQvcmVtb3ZlZC9tb2RpZmllZC4gU2VlIHRo ZSBjb21tZW50cyBvbiB0aGUgYXR0cmlidXRlCj4gPiByZXNlcnZhdGlvbgo+ID4gKyAqIGNhbGN1 bGF0aW9ucyBmb3IgbW9yZSBkZXRhaWxzLgo+ID4gKyAqLwo+ID4gK1NUQVRJQyB2b2lkCj4gPiAr eGZzX2NhbGNfbmFtZXNwYWNlX3Jlc2VydmF0aW9ucygKPiA+ICvCoMKgwqDCoMKgwqDCoHN0cnVj dCB4ZnNfbW91bnTCoMKgwqDCoMKgwqDCoMKgKm1wLAo+ID4gK8KgwqDCoMKgwqDCoMKgc3RydWN0 IHhmc190cmFuc19yZXN2wqDCoMKgKnJlc3ApCj4gPiArewo+ID4gK8KgwqDCoMKgwqDCoMKgQVNT RVJUKHJlc3AtPnRyX2F0dHJzZXRtLnRyX2xvZ3JlcyA+IDApOwo+ID4gwqAKPiA+IMKgwqDCoMKg wqDCoMKgwqByZXNwLT50cl9yZW5hbWUudHJfbG9ncmVzID0KPiA+IHhmc19jYWxjX3JlbmFtZV9y ZXNlcnZhdGlvbihtcCk7Cj4gPiDCoMKgwqDCoMKgwqDCoMKgcmVzcC0+dHJfcmVuYW1lLnRyX2xv Z2NvdW50ID0gWEZTX1JFTkFNRV9MT0dfQ09VTlQ7Cj4gPiBAQCAtOTQ4LDE1ICsxMDAxLDM3IEBA IHhmc190cmFuc19yZXN2X2NhbGMoCj4gPiDCoMKgwqDCoMKgwqDCoMKgcmVzcC0+dHJfY3JlYXRl LnRyX2xvZ2NvdW50ID0gWEZTX0NSRUFURV9MT0dfQ09VTlQ7Cj4gPiDCoMKgwqDCoMKgwqDCoMKg cmVzcC0+dHJfY3JlYXRlLnRyX2xvZ2ZsYWdzIHw9IFhGU19UUkFOU19QRVJNX0xPR19SRVM7Cj4g PiDCoAo+ID4gK8KgwqDCoMKgwqDCoMKgcmVzcC0+dHJfbWtkaXIudHJfbG9ncmVzID0geGZzX2Nh bGNfbWtkaXJfcmVzZXJ2YXRpb24obXApOwo+ID4gK8KgwqDCoMKgwqDCoMKgcmVzcC0+dHJfbWtk aXIudHJfbG9nY291bnQgPSBYRlNfTUtESVJfTE9HX0NPVU5UOwo+ID4gK8KgwqDCoMKgwqDCoMKg cmVzcC0+dHJfbWtkaXIudHJfbG9nZmxhZ3MgfD0gWEZTX1RSQU5TX1BFUk1fTE9HX1JFUzsKPiA+ ICsKPiA+ICvCoMKgwqDCoMKgwqDCoHhmc19jYWxjX3BhcmVudF9wdHJfcmVzZXJ2YXRpb25zKG1w KTsKPiA+ICt9Cj4gPiArCj4gPiArdm9pZAo+ID4gK3hmc190cmFuc19yZXN2X2NhbGMoCj4gPiAr wqDCoMKgwqDCoMKgwqBzdHJ1Y3QgeGZzX21vdW50wqDCoMKgwqDCoMKgwqDCoCptcCwKPiA+ICvC oMKgwqDCoMKgwqDCoHN0cnVjdCB4ZnNfdHJhbnNfcmVzdsKgwqDCoCpyZXNwKQo+ID4gK3sKPiA+ ICvCoMKgwqDCoMKgwqDCoGludMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoGxvZ2NvdW50X2FkaiA9IDA7Cj4gPiArCj4gPiArwqDCoMKgwqDCoMKgwqAvKgo+ID4gK8Kg wqDCoMKgwqDCoMKgICogVGhlIGZvbGxvd2luZyB0cmFuc2FjdGlvbnMgYXJlIGxvZ2dlZCBpbiBw aHlzaWNhbCBmb3JtYXQKPiA+IGFuZAo+ID4gK8KgwqDCoMKgwqDCoMKgICogcmVxdWlyZSBhIHBl cm1hbmVudCByZXNlcnZhdGlvbiBvbiBzcGFjZS4KPiA+ICvCoMKgwqDCoMKgwqDCoCAqLwo+ID4g K8KgwqDCoMKgwqDCoMKgcmVzcC0+dHJfd3JpdGUudHJfbG9ncmVzID0geGZzX2NhbGNfd3JpdGVf cmVzZXJ2YXRpb24obXAsCj4gPiBmYWxzZSk7Cj4gPiArwqDCoMKgwqDCoMKgwqByZXNwLT50cl93 cml0ZS50cl9sb2djb3VudCA9IFhGU19XUklURV9MT0dfQ09VTlQ7Cj4gPiArwqDCoMKgwqDCoMKg wqByZXNwLT50cl93cml0ZS50cl9sb2dmbGFncyB8PSBYRlNfVFJBTlNfUEVSTV9MT0dfUkVTOwo+ ID4gKwo+ID4gK8KgwqDCoMKgwqDCoMKgcmVzcC0+dHJfaXRydW5jYXRlLnRyX2xvZ3JlcyA9Cj4g PiB4ZnNfY2FsY19pdHJ1bmNhdGVfcmVzZXJ2YXRpb24obXAsIGZhbHNlKTsKPiA+ICvCoMKgwqDC oMKgwqDCoHJlc3AtPnRyX2l0cnVuY2F0ZS50cl9sb2djb3VudCA9IFhGU19JVFJVTkNBVEVfTE9H X0NPVU5UOwo+ID4gK8KgwqDCoMKgwqDCoMKgcmVzcC0+dHJfaXRydW5jYXRlLnRyX2xvZ2ZsYWdz IHw9IFhGU19UUkFOU19QRVJNX0xPR19SRVM7Cj4gPiArCj4gPiDCoMKgwqDCoMKgwqDCoMKgcmVz cC0+dHJfY3JlYXRlX3RtcGZpbGUudHJfbG9ncmVzID0KPiA+IMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoHhmc19jYWxjX2NyZWF0ZV90bXBmaWxlX3Jlc2Vy dmF0aW9uKG1wKTsKPiA+IMKgwqDCoMKgwqDCoMKgwqByZXNwLT50cl9jcmVhdGVfdG1wZmlsZS50 cl9sb2djb3VudCA9Cj4gPiBYRlNfQ1JFQVRFX1RNUEZJTEVfTE9HX0NPVU5UOwo+ID4gwqDCoMKg wqDCoMKgwqDCoHJlc3AtPnRyX2NyZWF0ZV90bXBmaWxlLnRyX2xvZ2ZsYWdzIHw9Cj4gPiBYRlNf VFJBTlNfUEVSTV9MT0dfUkVTOwo+ID4gwqAKPiA+IC3CoMKgwqDCoMKgwqDCoHJlc3AtPnRyX21r ZGlyLnRyX2xvZ3JlcyA9IHhmc19jYWxjX21rZGlyX3Jlc2VydmF0aW9uKG1wKTsKPiA+IC3CoMKg wqDCoMKgwqDCoHJlc3AtPnRyX21rZGlyLnRyX2xvZ2NvdW50ID0gWEZTX01LRElSX0xPR19DT1VO VDsKPiA+IC3CoMKgwqDCoMKgwqDCoHJlc3AtPnRyX21rZGlyLnRyX2xvZ2ZsYWdzIHw9IFhGU19U UkFOU19QRVJNX0xPR19SRVM7Cj4gPiAtCj4gPiDCoMKgwqDCoMKgwqDCoMKgcmVzcC0+dHJfaWZy ZWUudHJfbG9ncmVzID0geGZzX2NhbGNfaWZyZWVfcmVzZXJ2YXRpb24obXApOwo+ID4gwqDCoMKg wqDCoMKgwqDCoHJlc3AtPnRyX2lmcmVlLnRyX2xvZ2NvdW50ID0gWEZTX0lOQUNUSVZFX0xPR19D T1VOVDsKPiA+IMKgwqDCoMKgwqDCoMKgwqByZXNwLT50cl9pZnJlZS50cl9sb2dmbGFncyB8PSBY RlNfVFJBTlNfUEVSTV9MT0dfUkVTOwo+ID4gQEAgLTk4Niw2ICsxMDYxLDggQEAgeGZzX3RyYW5z X3Jlc3ZfY2FsYygKPiA+IMKgwqDCoMKgwqDCoMKgwqByZXNwLT50cl9xbV9kcWFsbG9jLnRyX2xv Z2NvdW50ID0gWEZTX1dSSVRFX0xPR19DT1VOVDsKPiA+IMKgwqDCoMKgwqDCoMKgwqByZXNwLT50 cl9xbV9kcWFsbG9jLnRyX2xvZ2ZsYWdzIHw9IFhGU19UUkFOU19QRVJNX0xPR19SRVM7Cj4gPiDC oAo+ID4gK8KgwqDCoMKgwqDCoMKgeGZzX2NhbGNfbmFtZXNwYWNlX3Jlc2VydmF0aW9ucyhtcCwg cmVzcCk7Cj4gPiArCj4gPiDCoMKgwqDCoMKgwqDCoMKgLyoKPiA+IMKgwqDCoMKgwqDCoMKgwqAg KiBUaGUgZm9sbG93aW5nIHRyYW5zYWN0aW9ucyBhcmUgbG9nZ2VkIGluIGxvZ2ljYWwgZm9ybWF0 Cj4gPiB3aXRoCj4gPiDCoMKgwqDCoMKgwqDCoMKgICogYSBkZWZhdWx0IGxvZyBjb3VudC4KPiA+ IC0tIAo+ID4gMi4yNS4xCj4gPiAKCg==