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 87CDAC7EE23 for ; Wed, 1 Mar 2023 05:43:32 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229632AbjCAFnb (ORCPT ); Wed, 1 Mar 2023 00:43:31 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:33452 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229480AbjCAFna (ORCPT ); Wed, 1 Mar 2023 00:43:30 -0500 Received: from mx0b-00069f02.pphosted.com (mx0b-00069f02.pphosted.com [205.220.177.32]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 64E9013526; Tue, 28 Feb 2023 21:43:27 -0800 (PST) Received: from pps.filterd (m0246631.ppops.net [127.0.0.1]) by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id 31SNDn3P023344; Wed, 1 Mar 2023 05:43:14 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=a8U+1w4cTC2Buszx3l7gC0nYuRLd3r3rRVCUll0ksJI=; b=ZyTEmkniW9+ohnL3+kRBmzrzhg8np0sCqRJCyDYrfEiSq1rQKt5rc6CevRLVrcibfE4r UQ3y4M+QGDMqPCFzTgNEWzjW5mO3W95pxv4nw04sTrW3rQIZVJtkVHH8mcTBx2wcttqA H17y0ev7FBsa47iEpEnAmrWyP9L2hGXGyV89tyqSeE654q/SK/8RjKmD1MV+5GRcsKI+ ZpnO04Zkgn3cZTyzFNM2YvkJfYXi1xuma2HU3EPwXrE6BrOFFw/6apexYtb78H8sdW7B upnZg6nK2pPBi82ADRKwI6akrbLl9gQFKV0p10RjFtT10bHdO91oBEljx8ESP1AIDgZV tg== Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (iadpaimrmta01.appoci.oracle.com [130.35.100.223]) by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3nybakr51g-2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 01 Mar 2023 05:43:14 +0000 Received: from pps.filterd (iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.5/8.17.1.5) with ESMTP id 32148bg9028676; Wed, 1 Mar 2023 05:37:02 GMT Received: from nam02-bn1-obe.outbound.protection.outlook.com (mail-bn1nam02lp2040.outbound.protection.outlook.com [104.47.51.40]) by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id 3ny8se0p49-1 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Wed, 01 Mar 2023 05:37:02 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=WfAMZC+TJeDUFOhJbUAvt7QMqrBr4/W5VCCJ5RLA4KAl7SiV0XBCZaYVdVDad+KYtGg3ZgNUOOZWgv2/gonEDLa9i+RRUOD9kbA7lpDTp6sWcOSIRd/cnT7B8MO6TTu7WUh4NS5NrSLDMShAsVZH7iHzrJrYPUAzG8tkH8+9Vv2u2qaDGZ9R60W49w/iYHqHIkfIHRXqi7dYDll+89lThVirX+5RNOaW5tZ3eTHYbXcB5/13tlHTbvLLiqi83dG2Wd453HM5Txm4zgIfaK5R/SrDvspq8rdMc1xJIK0OSEPF7fFpvgml0kO8Y+VXr4NfIZm67ExL6uCFadwt+6Ojfg== 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=a8U+1w4cTC2Buszx3l7gC0nYuRLd3r3rRVCUll0ksJI=; b=GVf1pmwcrAZtZxfbkY9GN4jft3ZFp9Q7ThTU0TkXFSNcVz2zzTS57UBzbgQRrEhq8KNX+9jsgqTN1gqP6ARPBKE0xuQwM1JxqU3AOsOgahMXK0fjmsEkVwRq4QUQyEV69xphl7kyGIHTAOapPI3tG8eX44WcGaI4uN9V1a4cAcwT6f+2cPPNBzhjjgKN1cBBNNI4ldQ+Ij8jo/SARGrxtFGFyOiaThMwedfbaeEHwgLd4CCoZda8U/2Oh+6wFEJvsfOyp+DDxhqrE72tVG+xDTThqjzlXffR/6s8be9Q+ePbTfOywQvMxQkt6z8xHiOa1D0v5M7ALOIuxihpY340aQ== 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=a8U+1w4cTC2Buszx3l7gC0nYuRLd3r3rRVCUll0ksJI=; b=k2luB3RDcOxMJW6ufp1OvUA2lIaMO8ynV+lwMHNFBWrzXOYHX9ZdxJfTNWkWn85SSkUUnfd2O3xxA6NIGLKfbBnokFu7NkziBWkQfLgpzG3/VIoFvySBbDc734wgmrtMnbNzrTjA+b4CFncIUUS2Xg9qVqHPHk3Li39+nO+Itmk= Received: from BY5PR10MB4306.namprd10.prod.outlook.com (2603:10b6:a03:211::7) by CH0PR10MB5226.namprd10.prod.outlook.com (2603:10b6:610:da::23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6156.18; Wed, 1 Mar 2023 05:37:00 +0000 Received: from BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::2a7c:497e:b785:dc06]) by BY5PR10MB4306.namprd10.prod.outlook.com ([fe80::2a7c:497e:b785:dc06%8]) with mapi id 15.20.6156.017; Wed, 1 Mar 2023 05:37:00 +0000 From: Allison Henderson To: "djwong@kernel.org" CC: Catherine Hoang , "david@fromorbit.com" , "willy@infradead.org" , "linux-xfs@vger.kernel.org" , Chandan Babu , "linux-fsdevel@vger.kernel.org" , "hch@infradead.org" Subject: Re: [PATCH 13/14] xfs: document the userspace fsck driver program Thread-Topic: [PATCH 13/14] xfs: document the userspace fsck driver program Thread-Index: AQHZHJ6jpSSNNtoX1Eu7P0FMXG5Ija7lxnGA Date: Wed, 1 Mar 2023 05:36:59 +0000 Message-ID: References: <167243825144.682859.12802259329489258661.stgit@magnolia> <167243825345.682859.840912842203682928.stgit@magnolia> In-Reply-To: <167243825345.682859.840912842203682928.stgit@magnolia> Accept-Language: en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Evolution 3.44.4-0ubuntu1 x-ms-publictraffictype: Email x-ms-traffictypediagnostic: BY5PR10MB4306:EE_|CH0PR10MB5226:EE_ x-ms-office365-filtering-correlation-id: 0639bf57-c3f0-4c54-a080-08db1a16fab6 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: AJGWsVfdUIpgHTrBD4eb83ASCwPbPCIsRq6bqCGvqyBGOl/4g0LxjO/cRo5jpeQZHzx0j7F/bnYwM1L2ZGz/NwVeor8fQH1FtMULqwuwd6c0DRNFcfaM0zrPuItehoO4TUZuEKhS+ZD0CjL7BvI2VQ2tPU5w1bU4Ksqtbrr1D9w8HDnko1SiHM8u1RI+SbkXt/LUv9/NSFmLnVMHtjMUTbtXu+NNWjahG7ztbOYTzdFtk5RBsJHdiZ3UNgKWmENvA/Op8FEwACOwbk2dEy62GQABTRr3S7+cHFebYW470ZbaPV/kpPa+plCU1sH92J33DdwaX/nMXkY5GCfQiaR8BH/Ugz5Y0WxlmWRJiXsZwSQDNOfm1FgXE4mOlqPMeBJEDK+qmc2ww7ExTcHSYroJJUJF60NwYYmhDdq65kU5GnGWUu1gvyMykLmGfgVqYH1STMKzupLX6jKeRDRhRMpzxErF2m1BD+6trzfltXK/5ZU/eNswIQAOwFeXI6LnouAiDQOrpnqTtGf9Zb3oeMXppCAehCjujr6jjJ5EH+BEWf8dWcaVwKPQ1KtLr53+cWVmqr6tKixkVx62QFRy/B4x0jGidkJju+SA1ZsEB3LSr6vqv2K4pJD6jaQwjeQJ27RXBwC6ahjptLvqDZhmgdW4sNdXFxQCnn5LIKlVShKGQVzSY7AdDaHnN6XkBYlMOMZK4ysk17KMsOIUOaH4/3cCIQiHxaAFF6J+woeL2sftw04= 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:(13230025)(346002)(396003)(376002)(136003)(39860400002)(366004)(451199018)(30864003)(5660300002)(44832011)(4001150100001)(41300700001)(38100700002)(8676002)(64756008)(83380400001)(66899018)(4326008)(6916009)(8936002)(66446008)(66476007)(66556008)(66946007)(76116006)(36756003)(66574015)(2906002)(2616005)(122000001)(6486002)(86362001)(966005)(478600001)(71200400001)(316002)(54906003)(38070700005)(186003)(6506007)(26005)(6512007);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?aytNQ1ZrTWtiY0svYmVreHZWd2pHMEViUlZHS1FJOFlITUVWSzNYMlZhd0ZK?= =?utf-8?B?UVlXRkhhMGx5QnU3c1Z2eFd5TU5zOCtwRFR6SXBiYzZHK004Y1A1QXNqTXJq?= =?utf-8?B?STA4R2p1TjdPUkdPT2ZuZzF6MzZMQkhieExpS2c3K3pZS2ZCYkdEUGFTMkV1?= =?utf-8?B?Nm5lRm95TkRtQndPZkpQTy8xNlgxcEdybEpwWkg1V3RGWHBpTTBROVBBY05v?= =?utf-8?B?bDZCOUFPbjZXL1o0b2x4MThpb1JBeEVBOWJONEJlQmxrUkR3TW5pUlJQL1My?= =?utf-8?B?QXgwVlB1SXI2TUl1blBncEFHYTE4dndobzNhSEVKWTZLL0dqMUxTUUNqeVNn?= =?utf-8?B?b0cvQ2ZGSmo4dVJGOG01Uk9GQVlqQzlyWXJqWXZuSlloMm9YNHB1MlRTWE5Y?= =?utf-8?B?SFpZeTFLS2ZFWnMzNklzRnFESjZ2RVdwUlJOZ1haOUpubUVkWFZLbG1Pc3F5?= =?utf-8?B?VExOemRhVk13eDNBNnJ6QjI1SnIyNFZWVUcxaXNiNkhIREdUOVNRSTFRQjZD?= =?utf-8?B?TitjdFJGTU9USmxhNlBhcTlVVjNTc0g1Sk5MaDVtWDhsdGNWd0RYdFNJdnow?= =?utf-8?B?dUcvcE5adnVnNjJVcHpjSG9SU0kxT3dadmJuUUpDMHE0TjJQWldOYTRPS29H?= =?utf-8?B?L0NETHp5Q2IrNHpMZ2s1WlgzbWFGVVlRN2Y2WkdaaUNVRjhhKy9wTzRQVzBL?= =?utf-8?B?R1pGTmVXR29tOXJlRlFsTkRFNi95SkdVTnpGTlIrTjJDb1g0V1R4cStmeTlz?= =?utf-8?B?NFI2K29Rc2VLaVRCZWt4YnExaENHVmdsakZmaHBkY1FscytUTjQ1UXdpL09N?= =?utf-8?B?QW5Gc3pUWDVKL05LUDAvT1h1dWY0Ky93ZEpNaTZDL1F6T1QzZ1pVQkVSamhP?= =?utf-8?B?ajNud04zNEQrblQrN1VsVVkyWTdqVHcwK2VDdkc3a1BXTXNpTDdaV1RBdXI1?= =?utf-8?B?a0NXRytQSWU3MFBzMmlhN2l5dS95NWZxOUpjN1VEWE9nbHlKQ1VLZFdxaUdo?= =?utf-8?B?SVRraUs1WG5JNndIVXdrUHpoNkIrNnkzVmh3SmVSTnpLdjRXNUZCbHdjL2Qz?= =?utf-8?B?UzhUMjBPMFhDY0xqSTZwRS8zV2tHUUNvNTVpbXNUYW1OY2w3aEVaWENpWEwy?= =?utf-8?B?ak9yRjBnbFRJN04yTURudXQ1T2xSdzg1ZUxQQVlhWXI3bDBNVUREODBpc21q?= =?utf-8?B?dXE1TENJcmkxcE5hUmtlVDBNbjBHMGRiSTFTdGZFRWhsZm5ybzdmOExEeUwr?= =?utf-8?B?MUpVL044MFdEeGpQVGRmVi8rUUpyTGNkbkpPWElmLzMzd1BwSGxMYnMxazVN?= =?utf-8?B?SjNQcnNqVW95WWlwTXB6N3pXaEd3SXkyak5EZWhuY3g5b1ZVaVRuVlJGby81?= =?utf-8?B?YTlpV3h1WkZnSU8wUWtJalp0NVQzMW5oZU9KZ2ZYR0luV001dUxOdEdKc0pF?= =?utf-8?B?YWNXNjI2dkpFT2gyZGFvbVVvQXU0emt0aFNzVFg3MTFyZktuLzZUYVhhS05D?= =?utf-8?B?WlMySGlCN2hnd3B2d2xFOVYwcWxVbjMzZ1R1UnhUMWlHQjFtNE1LRTB6NnJB?= =?utf-8?B?Z3Y3dnpZbjVqMjFWN2hjTXY3TlFZdWx6ZWUzTzFKRDZKWGxaTDBxVzQzWEUy?= =?utf-8?B?UU8waEFZZWhpc3BLUHBYTVZDT0NpUVhYVVM2c2hhbXBmOXdsUnJITnFFOEs2?= =?utf-8?B?ZE1NNzBodXZsWGE1aWxYcUZFakE4V1pSbHUvRzFVRHRPdlVkL2FlMGFTbWxK?= =?utf-8?B?QUR6V2ovNHpENXppWDV6Qy9FUGhrazdtbm13OXBTUFhma013bFRzbUUvd3k5?= =?utf-8?B?WCtxNkorL1BlZ05vZ0xtZWp1bjRIUncyNFdQeUZCRGdDVDVPRk1lZnFwSmh1?= =?utf-8?B?c096ZnhKT0tTUExaeHdMbXBmR05jVFo4MkdHbi9uV1V0Skw4cWw2b0J0QXVm?= =?utf-8?B?cWx0V0VTRmlTWjh5YkQ3WE93UnBHbUtocW1Pa2VBMkJ1aTVDdE1VMEoreTZn?= =?utf-8?B?dUtDQWVvSTIrc3FEcmdLSjJ2bDQzVkF1aDVjL1h3b2lKMDZEU3YyZ2FiUXJ4?= =?utf-8?B?ekJvaTcvN3draGNyQ1VoWWplS2JqVVFiemdobnFvSU9YUWxVSldSWE1wY2RD?= =?utf-8?B?RzNwWm1Xazd2MFU1OUFNZTNOcTkvQjZxNUZ2OEV6NnpjdmhQdzZYT09xWkZy?= =?utf-8?Q?4WH8bNOkYcQpdcg10f7HOAg=3D?= Content-Type: text/plain; charset="utf-8" Content-ID: <38D2D9A713B47741882FF9E4F5F39B91@namprd10.prod.outlook.com> Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: 0wabzIjNqkPpunB6wcp9J+Mg4U+c7Ea/f7UQQd40W+zoNlptvufaQCF6VO3Y7S+CR4O+jR160IHaA3iPF0113wlIJnlFz/2tf7wgT2+VJX+0qr8u/RIHqXs0Cbz0GMwuQljaNlhejDRLKhf63deV4nks/uyw7K9xRlca0avTAI1qNddmXVldXXDQ2HK1CVKHyHAfJ0NE82/03nLi5ppGUii6G4dYjEg1xP19MM8VMShwih4oU+tTOOszoueEDHgqaQJaGOiJAgQC678LipmL/Rbt2Zwvu1Jj0qspRQMZaCCIJAPgASYVnlTlkiDwh6Yz9QD828k7FFzmfDtoPXzPVu8uXmvZMbFkNE+0P85Va52/POXQh40KFYGOwE5e52ubNQ+0DgHE8rw+AjnGZf4LfmR/vuwWq95gGa4sTJay3E23TZzwLKLCoJKqwL3PpNlTPYxJkMTNLm5rAn0UH8vCx8hVTyJ1HfSLaAn+WAoBu9K5AZFykth04Ieb9Ioc7zMqsrt319qFLr6exgvB8KIGcDNml+i7OLxXBpEbFp9myLuhgzHFYvAuHiTxTleLjep7PREIe3NIGWzJ7UXJ3JSfJ/BFMloEmk67R6RElLJu4mBhbPWKdwPmsgS8UZzO07OZ4krkaI42ptKPdBRMYSGvuNiC7MO6NLMYDhXpmWZYwxaBbg2GPnOZylJAl3JWhEFWViFccnMiwedXSKUyga7v5dCqWhTiJDSndBtVWHanFNRkesMJk5vtEW9MxC1enGzl8VsrNvxggmXO1iqa30g4PB/PjTDjDKl9v9/4Zx24gwSTH+qhvFWWMTBrXJ0f2yhY1WhNVmzv/AOM6rqT2mQhb9+p5jg7i9lOil8fMFiVQFI= 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: 0639bf57-c3f0-4c54-a080-08db1a16fab6 X-MS-Exchange-CrossTenant-originalarrivaltime: 01 Mar 2023 05:37:00.0308 (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: ucncp277Zoj6/QSvOHch7SomH3Bo9wndKtLxpXesa3FZ4b1OllOB2ut007cODC1jEx/owFSvRhkpxJBuzM2xY6n2RAwz+7mqI6x3ri8DbdA= X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR10MB5226 X-Proofpoint-Virus-Version: vendor=baseguard engine=ICAP:2.0.219,Aquarius:18.0.942,Hydra:6.0.573,FMLib:17.11.170.22 definitions=2023-03-01_02,2023-02-28_03,2023-02-09_01 X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxlogscore=999 mlxscore=0 suspectscore=0 spamscore=0 adultscore=0 phishscore=0 malwarescore=0 bulkscore=0 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000 definitions=main-2303010042 X-Proofpoint-GUID: aRSPf4He2KfNcUOXAas4zycgGCtPvBq8 X-Proofpoint-ORIG-GUID: aRSPf4He2KfNcUOXAas4zycgGCtPvBq8 Precedence: bulk List-ID: X-Mailing-List: linux-fsdevel@vger.kernel.org T24gRnJpLCAyMDIyLTEyLTMwIGF0IDE0OjEwIC0wODAwLCBEYXJyaWNrIEouIFdvbmcgd3JvdGU6 DQo+IEZyb206IERhcnJpY2sgSi4gV29uZyA8ZGp3b25nQGtlcm5lbC5vcmc+DQo+IA0KPiBBZGQg dGhlIHNpeHRoIGNoYXB0ZXIgb2YgdGhlIG9ubGluZSBmc2NrIGRlc2lnbiBkb2N1bWVudGF0aW9u LCB3aGVyZQ0KPiB3ZSBkaXNjdXNzIHRoZSBkZXRhaWxzIG9mIHRoZSBkYXRhIHN0cnVjdHVyZXMg YW5kIGFsZ29yaXRobXMgdXNlZCBieQ0KPiB0aGUNCj4gZHJpdmVyIHByb2dyYW0geGZzX3NjcnVi Lg0KPiANCj4gU2lnbmVkLW9mZi1ieTogRGFycmljayBKLiBXb25nIDxkandvbmdAa2VybmVsLm9y Zz4NCj4gLS0tDQo+IMKgLi4uL2ZpbGVzeXN0ZW1zL3hmcy1vbmxpbmUtZnNjay1kZXNpZ24ucnN0 wqDCoMKgwqDCoMKgwqDCoCB8wqAgMzEzDQo+ICsrKysrKysrKysrKysrKysrKysrDQo+IMKgMSBm aWxlIGNoYW5nZWQsIDMxMyBpbnNlcnRpb25zKCspDQo+IA0KPiANCj4gZGlmZiAtLWdpdCBhL0Rv Y3VtZW50YXRpb24vZmlsZXN5c3RlbXMveGZzLW9ubGluZS1mc2NrLWRlc2lnbi5yc3QNCj4gYi9E b2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL3hmcy1vbmxpbmUtZnNjay1kZXNpZ24ucnN0DQo+IGlu ZGV4IDJlMjAzMTRmMTgzMS4uMDViOTQxMWZhYzdmIDEwMDY0NA0KPiAtLS0gYS9Eb2N1bWVudGF0 aW9uL2ZpbGVzeXN0ZW1zL3hmcy1vbmxpbmUtZnNjay1kZXNpZ24ucnN0DQo+ICsrKyBiL0RvY3Vt ZW50YXRpb24vZmlsZXN5c3RlbXMveGZzLW9ubGluZS1mc2NrLWRlc2lnbi5yc3QNCj4gQEAgLTMw MCw2ICszMDAsOSBAQCBUaGUgc2V2ZW4gcGhhc2VzIGFyZSBhcyBmb2xsb3dzOg0KPiDCoDcuIFJl LWNoZWNrIHRoZSBzdW1tYXJ5IGNvdW50ZXJzIGFuZCBwcmVzZW50cyB0aGUgY2FsbGVyIHdpdGgg YQ0KPiBzdW1tYXJ5IG9mDQo+IMKgwqDCoCBzcGFjZSB1c2FnZSBhbmQgZmlsZSBjb3VudHMuDQo+ IMKgDQo+ICtUaGlzIGFsbG9jYXRpb24gb2YgcmVzcG9uc2liaWxpdGllcyB3aWxsIGJlIDpyZWY6 YHJldmlzaXRlZA0KPiA8c2NydWJjaGVjaz5gDQo+ICtsYXRlciBpbiB0aGlzIGRvY3VtZW50Lg0K PiArDQo+IMKgU3RlcHMgZm9yIEVhY2ggU2NydWIgSXRlbQ0KPiDCoC0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0NCj4gwqANCj4gQEAgLTQ1MDUsMyArNDUwOCwzMTMgQEAgVGhlIHByb3Bvc2VkIHBh dGNoZXMgYXJlIGluIHRoZQ0KPiDCoGBvcnBoYW5hZ2UgYWRvcHRpb24NCj4gwqA8DQo+IGh0dHBz Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2Rqd29uZy94ZnMtbGlu dXguZ2l0Lw0KPiBsb2cvP2g9cmVwYWlyLW9ycGhhbmFnZT5gXw0KPiDCoHNlcmllcy4NCj4gKw0K PiArNi4gVXNlcnNwYWNlIEFsZ29yaXRobXMgYW5kIERhdGEgU3RydWN0dXJlcw0KPiArPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KPiArDQo+ICtUaGlzIHNlY3Rp b24gZGlzY3Vzc2VzIHRoZSBrZXkgYWxnb3JpdGhtcyBhbmQgZGF0YSBzdHJ1Y3R1cmVzIG9mIHRo ZQ0KPiB1c2Vyc3BhY2UNCj4gK3Byb2dyYW0sIGBgeGZzX3NjcnViYGAsIHRoYXQgcHJvdmlkZSB0 aGUgYWJpbGl0eSB0byBkcml2ZSBtZXRhZGF0YQ0KPiBjaGVja3MgYW5kDQo+ICtyZXBhaXJzIGlu IHRoZSBrZXJuZWwsIHZlcmlmeSBmaWxlIGRhdGEsIGFuZCBsb29rIGZvciBvdGhlcg0KPiBwb3Rl bnRpYWwgcHJvYmxlbXMuDQo+ICsNCj4gKy4uIF9zY3J1YmNoZWNrOg0KPiArDQo+ICtDaGVja2lu ZyBNZXRhZGF0YQ0KPiArLS0tLS0tLS0tLS0tLS0tLS0NCj4gKw0KPiArUmVjYWxsIHRoZSA6cmVm OmBwaGFzZXMgb2YgZnNjayB3b3JrPHNjcnVicGhhc2VzPmAgb3V0bGluZWQgZWFybGllci4NCj4g K1RoYXQgc3RydWN0dXJlIGZvbGxvd3MgbmF0dXJhbGx5IGZyb20gdGhlIGRhdGEgZGVwZW5kZW5j aWVzIGRlc2lnbmVkDQo+IGludG8gdGhlDQo+ICtmaWxlc3lzdGVtIGZyb20gaXRzIGJlZ2lubmlu Z3MgaW4gMTk5My4NCj4gK0luIFhGUywgdGhlcmUgYXJlIHNldmVyYWwgZ3JvdXBzIG9mIG1ldGFk YXRhIGRlcGVuZGVuY2llczoNCj4gKw0KPiArYS4gRmlsZXN5c3RlbSBzdW1tYXJ5IGNvdW50cyBk ZXBlbmQgb24gY29uc2lzdGVuY3kgd2l0aGluIHRoZSBpbm9kZQ0KPiBpbmRpY2VzLA0KPiArwqDC oCB0aGUgYWxsb2NhdGlvbiBncm91cCBzcGFjZSBidHJlZXMsIGFuZCB0aGUgcmVhbHRpbWUgdm9s dW1lIHNwYWNlDQo+ICvCoMKgIGluZm9ybWF0aW9uLg0KPiArDQo+ICtiLiBRdW90YSByZXNvdXJj ZSBjb3VudHMgZGVwZW5kIG9uIGNvbnNpc3RlbmN5IHdpdGhpbiB0aGUgcXVvdGEgZmlsZQ0KPiBk YXRhDQo+ICvCoMKgIGZvcmtzLCBpbm9kZSBpbmRpY2VzLCBpbm9kZSByZWNvcmRzLCBhbmQgdGhl IGZvcmtzIG9mIGV2ZXJ5IGZpbGUNCj4gb24gdGhlDQo+ICvCoMKgIHN5c3RlbS4NCj4gKw0KPiAr Yy4gVGhlIG5hbWluZyBoaWVyYXJjaHkgZGVwZW5kcyBvbiBjb25zaXN0ZW5jeSB3aXRoaW4gdGhl IGRpcmVjdG9yeQ0KPiBhbmQNCj4gK8KgwqAgZXh0ZW5kZWQgYXR0cmlidXRlIHN0cnVjdHVyZXMu DQo+ICvCoMKgIFRoaXMgaW5jbHVkZXMgZmlsZSBsaW5rIGNvdW50cy4NCj4gKw0KPiArZC4gRGly ZWN0b3JpZXMsIGV4dGVuZGVkIGF0dHJpYnV0ZXMsIGFuZCBmaWxlIGRhdGEgZGVwZW5kIG9uDQo+ IGNvbnNpc3RlbmN5IHdpdGhpbg0KPiArwqDCoCB0aGUgZmlsZSBmb3JrcyB0aGF0IG1hcCBkaXJl Y3RvcnkgYW5kIGV4dGVuZGVkIGF0dHJpYnV0ZSBkYXRhIHRvDQo+IHBoeXNpY2FsDQo+ICvCoMKg IHN0b3JhZ2UgbWVkaWEuDQo+ICsNCj4gK2UuIFRoZSBmaWxlIGZvcmtzIGRlcGVuZHMgb24gY29u c2lzdGVuY3kgd2l0aGluIGlub2RlIHJlY29yZHMgYW5kDQo+IHRoZSBzcGFjZQ0KPiArwqDCoCBt ZXRhZGF0YSBpbmRpY2VzIG9mIHRoZSBhbGxvY2F0aW9uIGdyb3VwcyBhbmQgdGhlIHJlYWx0aW1l DQo+IHZvbHVtZS4NCj4gK8KgwqAgVGhpcyBpbmNsdWRlcyBxdW90YSBhbmQgcmVhbHRpbWUgbWV0 YWRhdGEgZmlsZXMuDQo+ICsNCj4gK2YuIElub2RlIHJlY29yZHMgZGVwZW5kcyBvbiBjb25zaXN0 ZW5jeSB3aXRoaW4gdGhlIGlub2RlIG1ldGFkYXRhDQo+IGluZGljZXMuDQo+ICsNCj4gK2cuIFJl YWx0aW1lIHNwYWNlIG1ldGFkYXRhIGRlcGVuZCBvbiB0aGUgaW5vZGUgcmVjb3JkcyBhbmQgZGF0 YQ0KPiBmb3JrcyBvZiB0aGUNCj4gK8KgwqAgcmVhbHRpbWUgbWV0YWRhdGEgaW5vZGVzLg0KPiAr DQo+ICtoLiBUaGUgYWxsb2NhdGlvbiBncm91cCBtZXRhZGF0YSBpbmRpY2VzIChmcmVlIHNwYWNl LCBpbm9kZXMsDQo+IHJlZmVyZW5jZSBjb3VudCwNCj4gK8KgwqAgYW5kIHJldmVyc2UgbWFwcGlu ZyBidHJlZXMpIGRlcGVuZCBvbiBjb25zaXN0ZW5jeSB3aXRoaW4gdGhlIEFHDQo+IGhlYWRlcnMg YW5kDQo+ICvCoMKgIGJldHdlZW4gYWxsIHRoZSBBRyBtZXRhZGF0YSBidHJlZXMuDQo+ICsNCj4g K2kuIGBgeGZzX3NjcnViYGAgZGVwZW5kcyBvbiB0aGUgZmlsZXN5c3RlbSBiZWluZyBtb3VudGVk IGFuZCBrZXJuZWwNCj4gc3VwcG9ydA0KPiArwqDCoCBmb3Igb25saW5lIGZzY2sgZnVuY3Rpb25h bGl0eS4NCj4gKw0KPiArVGhlcmVmb3JlLCBhIG1ldGFkYXRhIGRlcGVuZGVuY3kgZ3JhcGggaXMg YSBjb252ZW5pZW50IHdheSB0bw0KPiBzY2hlZHVsZSBjaGVja2luZw0KPiArb3BlcmF0aW9ucyBp biB0aGUgYGB4ZnNfc2NydWJgYCBwcm9ncmFtOg0KPiArDQo+ICstIFBoYXNlIDEgY2hlY2tzIHRo YXQgdGhlIHByb3ZpZGVkIHBhdGggbWFwcyB0byBhbiBYRlMgZmlsZXN5c3RlbQ0KPiBhbmQgZGV0 ZWN0DQo+ICvCoCB0aGUga2VybmVsJ3Mgc2NydWJiaW5nIGFiaWxpdGllcywgd2hpY2ggdmFsaWRh dGVzIGdyb3VwIChpKS4NCj4gKw0KPiArLSBQaGFzZSAyIHNjcnVicyBncm91cHMgKGcpIGFuZCAo aCkgaW4gcGFyYWxsZWwgdXNpbmcgYSB0aHJlYWRlZA0KPiB3b3JrcXVldWUuDQo+ICsNCj4gKy0g UGhhc2UgMyBjaGVja3MgZ3JvdXBzIChmKSwgKGUpLCBhbmQgKGQpLCBpbiB0aGF0IG9yZGVyLg0K PiArwqAgVGhlc2UgZ3JvdXBzIGFyZSBhbGwgZmlsZSBtZXRhZGF0YSwgd2hpY2ggbWVhbnMgdGhh dCBpbm9kZXMgYXJlDQo+IHNjYW5uZWQgaW4NCj4gK8KgIHBhcmFsbGVsLg0KLi4uV2hlbiB0aGlu Z3MgYXJlIGRvbmUgaW4gb3JkZXIsIHRoZW4gdGhleSBhcmUgZG9uZSBpbiBzZXJpYWwgcmlnaHQ/ DQpUaGluZ3MgZG9uZSBpbiBwYXJhbGxlbCBhcmUgZG9uZSBhdCB0aGUgc2FtZSB0aW1lLiAgRWl0 aGVyIHRoZSBwaHJhc2UNCiJpbiB0aGF0IG9yZGVyIiBuZWVkcyB0byBnbyBhd2F5LCBvciB0aGUg bGFzdCBsaW5lIG5lZWRzIHRvIGRyb3ANCg0KPiArDQo+ICstIFBoYXNlIDQgcmVwYWlycyBldmVy eXRoaW5nIGluIGdyb3VwcyAoaSkgdGhyb3VnaCAoZCkgc28gdGhhdA0KPiBwaGFzZXMgNSBhbmQg Ng0KPiArwqAgbWF5IHJ1biByZWxpYWJseS4NCj4gKw0KPiArLSBQaGFzZSA1IHN0YXJ0cyBieSBj aGVja2luZyBncm91cHMgKGIpIGFuZCAoYykgaW4gcGFyYWxsZWwgYmVmb3JlDQo+IG1vdmluZyBv bg0KPiArwqAgdG8gY2hlY2tpbmcgbmFtZXMuDQo+ICsNCj4gKy0gUGhhc2UgNiBkZXBlbmRzIG9u IGdyb3VwcyAoaSkgdGhyb3VnaCAoYikgdG8gZmluZCBmaWxlIGRhdGEgYmxvY2tzDQo+IHRvIHZl cmlmeSwNCj4gK8KgIHRvIHJlYWQgdGhlbSwgYW5kIHRvIHJlcG9ydCB3aGljaCBibG9ja3Mgb2Yg d2hpY2ggZmlsZXMgYXJlDQo+IGFmZmVjdGVkLg0KPiArDQo+ICstIFBoYXNlIDcgY2hlY2tzIGdy b3VwIChhKSwgaGF2aW5nIHZhbGlkYXRlZCBldmVyeXRoaW5nIGVsc2UuDQo+ICsNCj4gK05vdGlj ZSB0aGF0IHRoZSBkYXRhIGRlcGVuZGVuY2llcyBiZXR3ZWVuIGdyb3VwcyBhcmUgZW5mb3JjZWQg YnkgdGhlDQo+IHN0cnVjdHVyZQ0KPiArb2YgdGhlIHByb2dyYW0gZmxvdy4NCj4gKw0KPiArUGFy YWxsZWwgSW5vZGUgU2NhbnMNCj4gKy0tLS0tLS0tLS0tLS0tLS0tLS0tDQo+ICsNCj4gK0FuIFhG UyBmaWxlc3lzdGVtIGNhbiBlYXNpbHkgY29udGFpbiBodW5kcmVkcyBvZiBtaWxsaW9ucyBvZiBp bm9kZXMuDQo+ICtHaXZlbiB0aGF0IFhGUyB0YXJnZXRzIGluc3RhbGxhdGlvbnMgd2l0aCBsYXJn ZSBoaWdoLXBlcmZvcm1hbmNlDQo+IHN0b3JhZ2UsDQo+ICtpdCBpcyBkZXNpcmFibGUgdG8gc2Ny dWIgaW5vZGVzIGluIHBhcmFsbGVsIHRvIG1pbmltaXplIHJ1bnRpbWUsDQo+IHBhcnRpY3VsYXJs eQ0KPiAraWYgdGhlIHByb2dyYW0gaGFzIGJlZW4gaW52b2tlZCBtYW51YWxseSBmcm9tIGEgY29t bWFuZCBsaW5lLg0KPiArVGhpcyByZXF1aXJlcyBjYXJlZnVsIHNjaGVkdWxpbmcgdG8ga2VlcCB0 aGUgdGhyZWFkcyBhcyBldmVubHkNCj4gbG9hZGVkIGFzDQo+ICtwb3NzaWJsZS4NCj4gKw0KPiAr RWFybHkgaXRlcmF0aW9ucyBvZiB0aGUgYGB4ZnNfc2NydWJgYCBpbm9kZSBzY2FubmVyIG5hw692 ZWx5IGNyZWF0ZWQNCj4gYSBzaW5nbGUNCj4gK3dvcmtxdWV1ZSBhbmQgc2NoZWR1bGVkIGEgc2lu Z2xlIHdvcmtxdWV1ZSBpdGVtIHBlciBBRy4NCj4gK0VhY2ggd29ya3F1ZXVlIGl0ZW0gd2Fsa2Vk IHRoZSBpbm9kZSBidHJlZSAod2l0aA0KPiBgYFhGU19JT0NfSU5VTUJFUlNgYCkgdG8gZmluZA0K PiAraW5vZGUgY2h1bmtzIGFuZCB0aGVuIGNhbGxlZCBidWxrc3RhdCAoYGBYRlNfSU9DX0JVTEtT VEFUYGApIHRvDQo+IGdhdGhlciBlbm91Z2gNCj4gK2luZm9ybWF0aW9uIHRvIGNvbnN0cnVjdCBm aWxlIGhhbmRsZXMuDQo+ICtUaGUgZmlsZSBoYW5kbGUgd2FzIHRoZW4gcGFzc2VkIHRvIGEgZnVu Y3Rpb24gdG8gZ2VuZXJhdGUgc2NydWINCj4gaXRlbXMgZm9yIGVhY2gNCj4gK21ldGFkYXRhIG9i amVjdCBvZiBlYWNoIGlub2RlLg0KPiArVGhpcyBzaW1wbGUgYWxnb3JpdGhtIGxlYWRzIHRvIHRo cmVhZCBiYWxhbmNpbmcgcHJvYmxlbXMgaW4gcGhhc2UgMw0KPiBpZiB0aGUNCj4gK2ZpbGVzeXN0 ZW0gY29udGFpbnMgb25lIEFHIHdpdGggYSBmZXcgbGFyZ2Ugc3BhcnNlIGZpbGVzIGFuZCB0aGUN Cj4gcmVzdCBvZiB0aGUNCj4gK0FHcyBjb250YWluIG1hbnkgc21hbGxlciBmaWxlcy4NCj4gK1Ro ZSBpbm9kZSBzY2FuIGRpc3BhdGNoIGZ1bmN0aW9uIHdhcyBub3Qgc3VmZmljaWVudGx5IGdyYW51 bGFyOyBpdA0KPiBzaG91bGQgaGF2ZQ0KPiArYmVlbiBkaXNwYXRjaGluZyBhdCB0aGUgbGV2ZWwg b2YgaW5kaXZpZHVhbCBpbm9kZXMsIG9yLCB0byBjb25zdHJhaW4NCj4gbWVtb3J5DQo+ICtjb25z dW1wdGlvbiwgaW5vZGUgYnRyZWUgcmVjb3Jkcy4NCj4gKw0KPiArVGhhbmtzIHRvIERhdmUgQ2hp bm5lciwgYm91bmRlZCB3b3JrcXVldWVzIGluIHVzZXJzcGFjZSBlbmFibGUNCj4gYGB4ZnNfc2Ny dWJgYCB0bw0KPiArYXZvaWQgdGhpcyBwcm9ibGVtIHdpdGggZWFzZSBieSBhZGRpbmcgYSBzZWNv bmQgd29ya3F1ZXVlLg0KPiArSnVzdCBsaWtlIGJlZm9yZSwgdGhlIGZpcnN0IHdvcmtxdWV1ZSBp cyBzZWVkZWQgd2l0aCBvbmUgd29ya3F1ZXVlDQo+IGl0ZW0gcGVyIEFHLA0KPiArYW5kIGl0IHVz ZXMgSU5VTUJFUlMgdG8gZmluZCBpbm9kZSBidHJlZSBjaHVua3MuDQo+ICtUaGUgc2Vjb25kIHdv cmtxdWV1ZSwgaG93ZXZlciwgaXMgY29uZmlndXJlZCB3aXRoIGFuIHVwcGVyIGJvdW5kIG9uDQo+ IHRoZSBudW1iZXINCj4gK29mIGl0ZW1zIHRoYXQgY2FuIGJlIHdhaXRpbmcgdG8gYmUgcnVuLg0K PiArRWFjaCBpbm9kZSBidHJlZSBjaHVuayBmb3VuZCBieSB0aGUgZmlyc3Qgd29ya3F1ZXVlJ3Mg d29ya2VycyBhcmUNCj4gcXVldWVkIHRvIHRoZQ0KPiArc2Vjb25kIHdvcmtxdWV1ZSwgYW5kIGl0 IGlzIHRoaXMgc2Vjb25kIHdvcmtxdWV1ZSB0aGF0IHF1ZXJpZXMNCj4gQlVMS1NUQVQsDQo+ICtj cmVhdGVzIGEgZmlsZSBoYW5kbGUsIGFuZCBwYXNzZXMgaXQgdG8gYSBmdW5jdGlvbiB0byBnZW5l cmF0ZSBzY3J1Yg0KPiBpdGVtcyBmb3INCj4gK2VhY2ggbWV0YWRhdGEgb2JqZWN0IG9mIGVhY2gg aW5vZGUuDQo+ICtJZiB0aGUgc2Vjb25kIHdvcmtxdWV1ZSBpcyB0b28gZnVsbCwgdGhlIHdvcmtx dWV1ZSBhZGQgZnVuY3Rpb24NCj4gYmxvY2tzIHRoZQ0KPiArZmlyc3Qgd29ya3F1ZXVlJ3Mgd29y a2VycyB1bnRpbCB0aGUgYmFja2xvZyBlYXNlcy4NCj4gK1RoaXMgZG9lc24ndCBjb21wbGV0ZWx5 IHNvbHZlIHRoZSBiYWxhbmNpbmcgcHJvYmxlbSwgYnV0IHJlZHVjZXMgaXQNCj4gZW5vdWdoIHRv DQo+ICttb3ZlIG9uIHRvIG1vcmUgcHJlc3NpbmcgaXNzdWVzLg0KPiArDQo+ICtUaGUgcHJvcG9z ZWQgcGF0Y2hzZXRzIGFyZSB0aGUgc2NydWINCj4gK2BwZXJmb3JtYW5jZSB0d2Vha3MNCj4gKzwN Cj4gaHR0cHM6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvZGp3b25n L3hmc3Byb2dzLWRldi5nDQo+IGl0L2xvZy8/aD1zY3J1Yi1wZXJmb3JtYW5jZS10d2Vha3M+YF8N Cj4gK2FuZCB0aGUNCj4gK2Bpbm9kZSBzY2FuIHJlYmFsYW5jZQ0KPiArPA0KPiBodHRwczovL2dp dC5rZXJuZWwub3JnL3B1Yi9zY20vbGludXgva2VybmVsL2dpdC9kandvbmcveGZzcHJvZ3MtZGV2 LmcNCj4gaXQvbG9nLz9oPXNjcnViLWlzY2FuLXJlYmFsYW5jZT5gXw0KPiArc2VyaWVzLg0KPiAr DQo+ICsuLiBfc2NydWJyZXBhaXI6DQo+ICsNCj4gK1NjaGVkdWxpbmcgUmVwYWlycw0KPiArLS0t LS0tLS0tLS0tLS0tLS0tDQo+ICsNCj4gK0R1cmluZyBwaGFzZSAyLCBjb3JydXB0aW9ucyBhbmQg aW5jb25zaXN0ZW5jaWVzIHJlcG9ydGVkIGluIGFueSBBR0kNCj4gaGVhZGVyIG9yDQo+ICtpbm9k ZSBidHJlZSBhcmUgcmVwYWlyZWQgaW1tZWRpYXRlbHksIGJlY2F1c2UgcGhhc2UgMyByZWxpZXMg b24NCj4gcHJvcGVyDQo+ICtmdW5jdGlvbmluZyBvZiB0aGUgaW5vZGUgaW5kaWNlcyB0byBmaW5k IGlub2RlcyB0byBzY2FuLg0KPiArRmFpbGVkIHJlcGFpcnMgYXJlIHJlc2NoZWR1bGVkIHRvIHBo YXNlIDQuDQo+ICtQcm9ibGVtcyByZXBvcnRlZCBpbiBhbnkgb3RoZXIgc3BhY2UgbWV0YWRhdGEg YXJlIGRlZmVycmVkIHRvIHBoYXNlDQo+IDQuDQo+ICtPcHRpbWl6YXRpb24gb3Bwb3J0dW5pdGll cyBhcmUgYWx3YXlzIGRlZmVycmVkIHRvIHBoYXNlIDQsIG5vIG1hdHRlcg0KPiB0aGVpcg0KPiAr b3JpZ2luLg0KPiArDQo+ICtEdXJpbmcgcGhhc2UgMywgY29ycnVwdGlvbnMgYW5kIGluY29uc2lz dGVuY2llcyByZXBvcnRlZCBpbiBhbnkgcGFydA0KPiBvZiBhDQo+ICtmaWxlJ3MgbWV0YWRhdGEg YXJlIHJlcGFpcmVkIGltbWVkaWF0ZWx5IGlmIGFsbCBzcGFjZSBtZXRhZGF0YSB3ZXJlDQo+IHZh bGlkYXRlZA0KPiArZHVyaW5nIHBoYXNlIDIuDQo+ICtSZXBhaXJzIHRoYXQgZmFpbCBvciBjYW5u b3QgYmUgcmVwYWlyZWQgaW1tZWRpYXRlbHkgYXJlIHNjaGVkdWxlZA0KPiBmb3IgcGhhc2UgNC4N Cj4gKw0KPiArSW4gdGhlIG9yaWdpbmFsIGRlc2lnbiBvZiBgYHhmc19zY3J1YmBgLCBpdCB3YXMg dGhvdWdodCB0aGF0IHJlcGFpcnMNCj4gd291bGQgYmUNCj4gK3NvIGluZnJlcXVlbnQgdGhhdCB0 aGUgYGBzdHJ1Y3QgeGZzX3NjcnViX21ldGFkYXRhYGAgb2JqZWN0cyB1c2VkIHRvDQo+ICtjb21t dW5pY2F0ZSB3aXRoIHRoZSBrZXJuZWwgY291bGQgYWxzbyBiZSB1c2VkIGFzIHRoZSBwcmltYXJ5 IG9iamVjdA0KPiB0bw0KPiArc2NoZWR1bGUgcmVwYWlycy4NCj4gK1dpdGggcmVjZW50IGluY3Jl YXNlcyBpbiB0aGUgbnVtYmVyIG9mIG9wdGltaXphdGlvbnMgcG9zc2libGUgZm9yIGENCj4gZ2l2 ZW4NCj4gK2ZpbGVzeXN0ZW0gb2JqZWN0LCBpdCBiZWNhbWUgbXVjaCBtb3JlIG1lbW9yeS1lZmZp Y2llbnQgdG8gdHJhY2sgYWxsDQo+IGVsaWdpYmxlDQo+ICtyZXBhaXJzIGZvciBhIGdpdmVuIGZp bGVzeXN0ZW0gb2JqZWN0IHdpdGggYSBzaW5nbGUgcmVwYWlyIGl0ZW0uDQo+ICtFYWNoIHJlcGFp ciBpdGVtIHJlcHJlc2VudHMgYSBzaW5nbGUgbG9ja2FibGUgb2JqZWN0IC0tIEFHcywNCj4gbWV0 YWRhdGEgZmlsZXMsDQo+ICtpbmRpdmlkdWFsIGlub2Rlcywgb3IgYSBjbGFzcyBvZiBzdW1tYXJ5 IGluZm9ybWF0aW9uLg0KPiArDQo+ICtQaGFzZSA0IGlzIHJlc3BvbnNpYmxlIGZvciBzY2hlZHVs aW5nIGEgbG90IG9mIHJlcGFpciB3b3JrIGluIGFzDQo+IHF1aWNrIGENCj4gK21hbm5lciBhcyBp cyBwcmFjdGljYWwuDQo+ICtUaGUgOnJlZjpgZGF0YSBkZXBlbmRlbmNpZXMgPHNjcnViY2hlY2s+ YCBvdXRsaW5lZCBlYXJsaWVyIHN0aWxsDQo+IGFwcGx5LCB3aGljaA0KPiArbWVhbnMgdGhhdCBg YHhmc19zY3J1YmBgIG11c3QgdHJ5IHRvIGNvbXBsZXRlIHRoZSByZXBhaXIgd29yaw0KPiBzY2hl ZHVsZWQgYnkNCj4gK3BoYXNlIDIgYmVmb3JlIHRyeWluZyByZXBhaXIgd29yayBzY2hlZHVsZWQg YnkgcGhhc2UgMy4NCj4gK1RoZSByZXBhaXIgcHJvY2VzcyBpcyBhcyBmb2xsb3dzOg0KPiArDQo+ ICsxLiBTdGFydCBhIHJvdW5kIG9mIHJlcGFpciB3aXRoIGEgd29ya3F1ZXVlIGFuZCBlbm91Z2gg d29ya2VycyB0bw0KPiBrZWVwIHRoZSBDUFVzDQo+ICvCoMKgIGFzIGJ1c3kgYXMgdGhlIHVzZXIg ZGVzaXJlcy4NCj4gKw0KPiArwqDCoCBhLiBGb3IgZWFjaCByZXBhaXIgaXRlbSBxdWV1ZWQgYnkg cGhhc2UgMiwNCj4gKw0KPiArwqDCoMKgwqDCoCBpLsKgwqAgQXNrIHRoZSBrZXJuZWwgdG8gcmVw YWlyIGV2ZXJ5dGhpbmcgbGlzdGVkIGluIHRoZSByZXBhaXINCj4gaXRlbSBmb3IgYQ0KPiArwqDC oMKgwqDCoMKgwqDCoMKgwqAgZ2l2ZW4gZmlsZXN5c3RlbSBvYmplY3QuDQo+ICsNCj4gK8KgwqDC oMKgwqAgaWkuwqAgTWFrZSBhIG5vdGUgaWYgdGhlIGtlcm5lbCBtYWRlIGFueSBwcm9ncmVzcyBp biByZWR1Y2luZw0KPiB0aGUgbnVtYmVyDQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBvZiByZXBh aXJzIG5lZWRlZCBmb3IgdGhpcyBvYmplY3QuDQo+ICsNCj4gK8KgwqDCoMKgwqAgaWlpLiBJZiB0 aGUgb2JqZWN0IG5vIGxvbmdlciByZXF1aXJlcyByZXBhaXJzLCByZXZhbGlkYXRlIGFsbA0KPiBt ZXRhZGF0YQ0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgYXNzb2NpYXRlZCB3aXRoIHRoaXMgb2Jq ZWN0Lg0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgSWYgdGhlIHJldmFsaWRhdGlvbiBzdWNjZWVk cywgZHJvcCB0aGUgcmVwYWlyIGl0ZW0uDQo+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBJZiBub3Qs IHJlcXVldWUgdGhlIGl0ZW0gZm9yIG1vcmUgcmVwYWlycy4NCj4gKw0KPiArwqDCoCBiLiBJZiBh bnkgcmVwYWlycyB3ZXJlIG1hZGUsIGp1bXAgYmFjayB0byAxYSB0byByZXRyeSBhbGwgdGhlDQo+ IHBoYXNlIDIgaXRlbXMuDQo+ICsNCj4gK8KgwqAgYy4gRm9yIGVhY2ggcmVwYWlyIGl0ZW0gcXVl dWVkIGJ5IHBoYXNlIDMsDQo+ICsNCj4gK8KgwqDCoMKgwqAgaS7CoMKgIEFzayB0aGUga2VybmVs IHRvIHJlcGFpciBldmVyeXRoaW5nIGxpc3RlZCBpbiB0aGUgcmVwYWlyDQo+IGl0ZW0gZm9yIGEN Cj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGdpdmVuIGZpbGVzeXN0ZW0gb2JqZWN0Lg0KPiArDQo+ ICvCoMKgwqDCoMKgIGlpLsKgIE1ha2UgYSBub3RlIGlmIHRoZSBrZXJuZWwgbWFkZSBhbnkgcHJv Z3Jlc3MgaW4gcmVkdWNpbmcNCj4gdGhlIG51bWJlcg0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqAg b2YgcmVwYWlycyBuZWVkZWQgZm9yIHRoaXMgb2JqZWN0Lg0KPiArDQo+ICvCoMKgwqDCoMKgIGlp aS4gSWYgdGhlIG9iamVjdCBubyBsb25nZXIgcmVxdWlyZXMgcmVwYWlycywgcmV2YWxpZGF0ZSBh bGwNCj4gbWV0YWRhdGENCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGFzc29jaWF0ZWQgd2l0aCB0 aGlzIG9iamVjdC4NCj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIElmIHRoZSByZXZhbGlkYXRpb24g c3VjY2VlZHMsIGRyb3AgdGhlIHJlcGFpciBpdGVtLg0KPiArwqDCoMKgwqDCoMKgwqDCoMKgwqAg SWYgbm90LCByZXF1ZXVlIHRoZSBpdGVtIGZvciBtb3JlIHJlcGFpcnMuDQo+ICsNCj4gK8KgwqAg ZC4gSWYgYW55IHJlcGFpcnMgd2VyZSBtYWRlLCBqdW1wIGJhY2sgdG8gMWMgdG8gcmV0cnkgYWxs IHRoZQ0KPiBwaGFzZSAzIGl0ZW1zLg0KPiArDQo+ICsyLiBJZiBzdGVwIDEgbWFkZSBhbnkgcmVw YWlyIHByb2dyZXNzIG9mIGFueSBraW5kLCBqdW1wIGJhY2sgdG8gc3RlcA0KPiAxIHRvIHN0YXJ0 DQo+ICvCoMKgIGFub3RoZXIgcm91bmQgb2YgcmVwYWlyLg0KPiArDQo+ICszLiBJZiB0aGVyZSBh cmUgaXRlbXMgbGVmdCB0byByZXBhaXIsIHJ1biB0aGVtIGFsbCBzZXJpYWxseSBvbmUgbW9yZQ0K PiB0aW1lLg0KPiArwqDCoCBDb21wbGFpbiBpZiB0aGUgcmVwYWlycyB3ZXJlIG5vdCBzdWNjZXNz ZnVsLCBzaW5jZSB0aGlzIGlzIHRoZQ0KPiBsYXN0IGNoYW5jZQ0KPiArwqDCoCB0byByZXBhaXIg YW55dGhpbmcuDQo+ICsNCj4gK0NvcnJ1cHRpb25zIGFuZCBpbmNvbnNpc3RlbmNpZXMgZW5jb3Vu dGVyZWQgZHVyaW5nIHBoYXNlcyA1IGFuZCA3DQo+IGFyZSByZXBhaXJlZA0KPiAraW1tZWRpYXRl bHkuDQo+ICtDb3JydXB0IGZpbGUgZGF0YSBibG9ja3MgcmVwb3J0ZWQgYnkgcGhhc2UgNiBjYW5u b3QgYmUgcmVjb3ZlcmVkIGJ5DQo+IHRoZQ0KPiArZmlsZXN5c3RlbS4NCj4gKw0KPiArVGhlIHBy b3Bvc2VkIHBhdGNoc2V0cyBhcmUgdGhlDQo+ICtgcmVwYWlyIHdhcm5pbmcgaW1wcm92ZW1lbnRz DQo+ICs8DQo+IGh0dHBzOi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0 L2Rqd29uZy94ZnNwcm9ncy1kZXYuZw0KPiBpdC9sb2cvP2g9c2NydWItYmV0dGVyLXJlcGFpci13 YXJuaW5ncz5gXywNCj4gK3JlZmFjdG9yaW5nIG9mIHRoZQ0KPiArYHJlcGFpciBkYXRhIGRlcGVu ZGVuY3kNCj4gKzwNCj4gaHR0cHM6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5l bC9naXQvZGp3b25nL3hmc3Byb2dzLWRldi5nDQo+IGl0L2xvZy8/aD1zY3J1Yi1yZXBhaXItZGF0 YS1kZXBzPmBfDQo+ICthbmQNCj4gK2BvYmplY3QgdHJhY2tpbmcNCj4gKzwNCj4gaHR0cHM6Ly9n aXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvZGp3b25nL3hmc3Byb2dzLWRl di5nDQo+IGl0L2xvZy8/aD1zY3J1Yi1vYmplY3QtdHJhY2tpbmc+YF8sDQo+ICthbmQgdGhlDQo+ ICtgcmVwYWlyIHNjaGVkdWxpbmcNCj4gKzwNCj4gaHR0cHM6Ly9naXQua2VybmVsLm9yZy9wdWIv c2NtL2xpbnV4L2tlcm5lbC9naXQvZGp3b25nL3hmc3Byb2dzLWRldi5nDQo+IGl0L2xvZy8/aD1z Y3J1Yi1yZXBhaXItc2NoZWR1bGluZz5gXw0KPiAraW1wcm92ZW1lbnQgc2VyaWVzLg0KPiArDQo+ ICtDaGVja2luZyBOYW1lcyBmb3IgQ29uZnVzYWJsZSBVbmljb2RlIFNlcXVlbmNlcw0KPiArLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gKw0KPiArSWYg YGB4ZnNfc2NydWJgYCBzdWNjZWVkcyBpbiB2YWxpZGF0aW5nIHRoZSBmaWxlc3lzdGVtIG1ldGFk YXRhIGJ5DQo+IHRoZSBlbmQgb2YNCj4gK3BoYXNlIDQsIGl0IG1vdmVzIG9uIHRvIHBoYXNlIDUs IHdoaWNoIGNoZWNrcyBmb3Igc3VzcGljaW91cyBsb29raW5nDQo+IG5hbWVzIGluDQo+ICt0aGUg ZmlsZXN5c3RlbS4NCj4gK1RoZXNlIG5hbWVzIGNvbnNpc3Qgb2YgdGhlIGZpbGVzeXN0ZW0gbGFi ZWwsIG5hbWVzIGluIGRpcmVjdG9yeQ0KPiBlbnRyaWVzLCBhbmQNCj4gK3RoZSBuYW1lcyBvZiBl eHRlbmRlZCBhdHRyaWJ1dGVzLg0KPiArTGlrZSBtb3N0IFVuaXggZmlsZXN5c3RlbXMsIFhGUyBp bXBvc2VzIHRoZSBzcGFyZXN0IG9mIGNvbnN0cmFpbnRzDQo+IG9uIHRoZQ0KPiArY29udGVudHMg b2YgYSBuYW1lIC0tIHNsYXNoZXMgYW5kIG51bGwgYnl0ZXMgYXJlIG5vdCBhbGxvd2VkIGluDQo+ IGRpcmVjdG9yeQ0KPiArZW50cmllczsgYW5kIG51bGwgYnl0ZXMgYXJlIG5vdCBhbGxvd2VkIGlu IGV4dGVuZGVkIGF0dHJpYnV0ZXMgYW5kDQptYXliZSBzYXkgInN0YW5kYXJkIHVzZXIgYWNjZXNz aWJsZSBleHRlbmRlZCBhdHRyaWJ1dGVzIg0KPiB0aGUNCj4gK2ZpbGVzeXN0ZW0gbGFiZWwuDQo+ ICtEaXJlY3RvcnkgZW50cmllcyBhbmQgYXR0cmlidXRlIGtleXMgc3RvcmUgdGhlIGxlbmd0aCBv ZiB0aGUgbmFtZQ0KPiBleHBsaWNpdGx5DQo+ICtvbmRpc2ssIHdoaWNoIG1lYW5zIHRoYXQgbnVs bHMgYXJlIG5vdCBuYW1lIHRlcm1pbmF0b3JzLg0KPiArRm9yIHRoaXMgc2VjdGlvbiwgdGhlIHRl cm0gIm5hbWluZyBkb21haW4iIHJlZmVycyB0byBhbnkgcGxhY2Ugd2hlcmUNCj4gbmFtZXMgYXJl DQo+ICtwcmVzZW50ZWQgdG9nZXRoZXIgLS0gYWxsIHRoZSBuYW1lcyBpbiBhIGRpcmVjdG9yeSwg b3IgYWxsIHRoZQ0KPiBhdHRyaWJ1dGVzIG9mIGENCj4gK2ZpbGUuDQo+ICsNCj4gK0FsdGhvdWdo IHRoZSBVbml4IG5hbWluZyBjb25zdHJhaW50cyBhcmUgdmVyeSBwZXJtaXNzaXZlLCB0aGUNCj4g cmVhbGl0eSBvZiBtb3N0DQo+ICttb2Rlcm4tZGF5IExpbnV4IHN5c3RlbXMgaXMgdGhhdCBwcm9n cmFtcyB3b3JrIHdpdGggVW5pY29kZQ0KPiBjaGFyYWN0ZXIgY29kZQ0KPiArcG9pbnRzIHRvIHN1 cHBvcnQgaW50ZXJuYXRpb25hbCBsYW5ndWFnZXMuDQo+ICtUaGVzZSBwcm9ncmFtcyB0eXBpY2Fs bHkgZW5jb2RlIHRob3NlIGNvZGUgcG9pbnRzIGluIFVURi04IHdoZW4NCj4gaW50ZXJmYWNpbmcN Cj4gK3dpdGggdGhlIEMgbGlicmFyeSBiZWNhdXNlIHRoZSBrZXJuZWwgZXhwZWN0cyBudWxsLXRl cm1pbmF0ZWQgbmFtZXMuDQo+ICtJbiB0aGUgY29tbW9uIGNhc2UsIHRoZXJlZm9yZSwgbmFtZXMg Zm91bmQgaW4gYW4gWEZTIGZpbGVzeXN0ZW0gYXJlDQo+IGFjdHVhbGx5DQo+ICtVVEYtOCBlbmNv ZGVkIFVuaWNvZGUgZGF0YS4NCj4gKw0KPiArVG8gbWF4aW1pemUgaXRzIGV4cHJlc3NpdmVuZXNz LCB0aGUgVW5pY29kZSBzdGFuZGFyZCBkZWZpbmVzDQo+IHNlcGFyYXRlIGNvbnRyb2wNCj4gK3Bv aW50cyBmb3IgdmFyaW91cyBjaGFyYWN0ZXJzIHRoYXQgcmVuZGVyIHNpbWlsYXJseSBvciBpZGVu dGljYWxseQ0KPiBpbiB3cml0aW5nDQo+ICtzeXN0ZW1zIGFyb3VuZCB0aGUgd29ybGQuDQo+ICtG b3IgZXhhbXBsZSwgdGhlIGNoYXJhY3RlciAiQ3lyaWxsaWMgU21hbGwgTGV0dGVyIEEiIFUrMDQz MCAi0LAiDQo+IG9mdGVuIHJlbmRlcnMNCj4gK2lkZW50aWNhbGx5IHRvICJMYXRpbiBTbWFsbCBM ZXR0ZXIgQSIgVSswMDYxICJhIi4NCg0KDQo+ICsNCj4gK1RoZSBzdGFuZGFyZCBhbHNvIHBlcm1p dHMgY2hhcmFjdGVycyB0byBiZSBjb25zdHJ1Y3RlZCBpbiBtdWx0aXBsZQ0KPiB3YXlzIC0tDQo+ ICtlaXRoZXIgYnkgdXNpbmcgYSBkZWZpbmVkIGNvZGUgcG9pbnQsIG9yIGJ5IGNvbWJpbmluZyBv bmUgY29kZSBwb2ludA0KPiB3aXRoDQo+ICt2YXJpb3VzIGNvbWJpbmluZyBtYXJrcy4NCj4gK0Zv ciBleGFtcGxlLCB0aGUgY2hhcmFjdGVyICJBbmdzdHJvbSBTaWduIFUrMjEyQiAi4oSrIiBjYW4g YWxzbyBiZQ0KPiBleHByZXNzZWQNCj4gK2FzICJMYXRpbiBDYXBpdGFsIExldHRlciBBIiBVKzAw NDEgIkEiIGZvbGxvd2VkIGJ5ICJDb21iaW5pbmcgUmluZw0KPiBBYm92ZSINCj4gK1UrMDMwQSAi 4peMzIoiLg0KPiArQm90aCBzZXF1ZW5jZXMgcmVuZGVyIGlkZW50aWNhbGx5Lg0KPiArDQo+ICtM aWtlIHRoZSBzdGFuZGFyZHMgdGhhdCBwcmVjZWRlZCBpdCwgVW5pY29kZSBhbHNvIGRlZmluZXMg dmFyaW91cw0KPiBjb250cm9sDQo+ICtjaGFyYWN0ZXJzIHRvIGFsdGVyIHRoZSBwcmVzZW50YXRp b24gb2YgdGV4dC4NCj4gK0ZvciBleGFtcGxlLCB0aGUgY2hhcmFjdGVyICJSaWdodC10by1MZWZ0 IE92ZXJyaWRlIiBVKzIwMkUgY2FuIHRyaWNrDQo+IHNvbWUNCj4gK3Byb2dyYW1zIGludG8gcmVu ZGVyaW5nICJtb29cXHhlMlxceDgwXFx4YWVnbnAudHh0IiBhcyAibW9vdHh0LnBuZyIuDQo+ICtB IHNlY29uZCBjYXRlZ29yeSBvZiByZW5kZXJpbmcgcHJvYmxlbXMgaW52b2x2ZXMgd2hpdGVzcGFj ZQ0KPiBjaGFyYWN0ZXJzLg0KPiArSWYgdGhlIGNoYXJhY3RlciAiWmVybyBXaWR0aCBTcGFjZSIg VSsyMDBCIGlzIGVuY291bnRlcmVkIGluIGEgZmlsZQ0KPiBuYW1lLCB0aGUNCj4gK25hbWUgd2ls bCByZW5kZXIgaWRlbnRpY2FsbHkgdG8gYSBuYW1lIHRoYXQgZG9lcyBub3QgaGF2ZSB0aGUgemVy bw0KPiB3aWR0aA0KPiArc3BhY2UuDQo+ICsNCj4gK0lmIHR3byBuYW1lcyB3aXRoaW4gYSBuYW1p bmcgZG9tYWluIGhhdmUgZGlmZmVyZW50IGJ5dGUgc2VxdWVuY2VzDQo+IGJ1dCByZW5kZXINCj4g K2lkZW50aWNhbGx5LCBhIHVzZXIgbWF5IGJlIGNvbmZ1c2VkIGJ5IGl0Lg0KPiArVGhlIGtlcm5l bCwgaW4gaXRzIGluZGlmZmVyZW5jZSB0byB1cHBlciBsZXZlbCBlbmNvZGluZyBzY2hlbWVzLA0K PiBwZXJtaXRzIHRoaXMuDQo+ICtNb3N0IGZpbGVzeXN0ZW0gZHJpdmVycyBwZXJzaXN0IHRoZSBi eXRlIHNlcXVlbmNlIG5hbWVzIHRoYXQgYXJlDQo+IGdpdmVuIHRvIHRoZW0NCj4gK2J5IHRoZSBW RlMuDQo+ICsNCj4gK1RlY2huaXF1ZXMgZm9yIGRldGVjdGluZyBjb25mdXNhYmxlIG5hbWVzIGFy ZSBleHBsYWluZWQgaW4gZ3JlYXQNCj4gZGV0YWlsIGluDQo+ICtzZWN0aW9ucyA0IGFuZCA1IG9m IHRoZQ0KPiArYFVuaWNvZGUgU2VjdXJpdHkgTWVjaGFuaXNtcyA8aHR0cHM6Ly91bmljb2RlLm9y Zy9yZXBvcnRzL3RyMzkvPmBfDQo+ICtkb2N1bWVudC4NCkkgZG9uJ3Qga25vdyB0aGF0IHdlIG5l ZWQgdGhpcyBtdWNoIGRldGFpbCBvbiBjaGFyYWN0ZXIgcmVuZGVyaW5nLiAgSQ0KdGhpbmsgdGhl IGV4YW1wbGUgYWJvdmUgaXMgZW5vdWdoIHRvIG1ha2UgdGhlIHBvaW50IHRoYXQgY2hhcmFjdGVy DQpzdHJpbmdzIGNhbiBkaWZmZXIgaW4gYmluYXJ5LCBidXQgcmVuZGVyIHRoZSBzYW1lLCBzbyB3 ZSBuZWVkIHRvIGRlYWwNCndpdGggdGhhdC4gIFNvIEkgdGhpbmsgdGhhdCdzIHJlYWxseSBhbGwg dGhlIGp1c3RpZmljYXRpb24gd2UgbmVlZCBmb3INCnRoZSBORkQgdXNhZ2UNCg0KPiArYGB4ZnNf c2NydWJgYCwgd2hlbiBpdCBkZXRlY3RzIFVURi04IGVuY29kaW5nIGluIHVzZSBvbiBhIHN5c3Rl bSwNCj4gdXNlcyB0aGUNCldoZW4gYGB4ZnNfc2NydWJgYCBkZXRlY3RzIFVURi04IGVuY29kaW5n LCBpdCB1c2VzIHRoZS4uLg0KDQo+ICtVbmljb2RlIG5vcm1hbGl6YXRpb24gZm9ybSBORkQgaW4g Y29uanVuY3Rpb24gd2l0aCB0aGUgY29uZnVzYWJsZQ0KPiBuYW1lDQo+ICtkZXRlY3Rpb24gY29t cG9uZW50IG9mDQo+ICtgbGliaWN1IDxodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1 PmBfDQo+ICt0byBpZGVudGlmeSBuYW1lcyB3aXRoIGEgZGlyZWN0b3J5IG9yIHdpdGhpbiBhIGZp bGUncyBleHRlbmRlZA0KPiBhdHRyaWJ1dGVzIHRoYXQNCj4gK2NvdWxkIGJlIGNvbmZ1c2VkIGZv ciBlYWNoIG90aGVyLg0KPiArTmFtZXMgYXJlIGFsc28gY2hlY2tlZCBmb3IgY29udHJvbCBjaGFy YWN0ZXJzLCBub24tcmVuZGVyaW5nDQo+IGNoYXJhY3RlcnMsIGFuZA0KPiArbWl4aW5nIG9mIGJp ZGlyZWN0aW9uYWwgY2hhcmFjdGVycy4NCj4gK0FsbCBvZiB0aGVzZSBwb3RlbnRpYWwgaXNzdWVz IGFyZSByZXBvcnRlZCB0byB0aGUgc3lzdGVtDQo+IGFkbWluaXN0cmF0b3IgZHVyaW5nDQo+ICtw aGFzZSA1Lg0KPiArDQo+ICtNZWRpYSBWZXJpZmljYXRpb24gb2YgRmlsZSBEYXRhIEV4dGVudHMN Cj4gKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KPiArDQo+ICtUaGUg c3lzdGVtIGFkbWluaXN0cmF0b3IgY2FuIGVsZWN0IHRvIGluaXRpYXRlIGEgbWVkaWEgc2NhbiBv ZiBhbGwNCj4gZmlsZSBkYXRhDQo+ICtibG9ja3MuDQo+ICtUaGlzIHNjYW4gYWZ0ZXIgdmFsaWRh dGlvbiBvZiBhbGwgZmlsZXN5c3RlbSBtZXRhZGF0YSAoZXhjZXB0IGZvcg0KPiB0aGUgc3VtbWFy eQ0KPiArY291bnRlcnMpIGFzIHBoYXNlIDYuDQo+ICtUaGUgc2NhbiBzdGFydHMgYnkgY2FsbGlu ZyBgYEZTX0lPQ19HRVRGU01BUGBgIHRvIHNjYW4gdGhlDQo+IGZpbGVzeXN0ZW0gc3BhY2UgbWFw DQo+ICt0byBmaW5kIGFyZWFzIHRoYXQgYXJlIGFsbG9jYXRlZCB0byBmaWxlIGRhdGEgZm9yayBl eHRlbnRzLg0KPiArR2FwcyBiZXR3ZWVlbiBkYXRhIGZvcmsgZXh0ZW50cyB0aGF0IGFyZSBzbWFs bGVyIHRoYW4gNjRrIGFyZQ0KPiB0cmVhdGVkIGFzIGlmDQo+ICt0aGV5IHdlcmUgZGF0YSBmb3Jr IGV4dGVudHMgdG8gcmVkdWNlIHRoZSBjb21tYW5kIHNldHVwIG92ZXJoZWFkLg0KPiArV2hlbiB0 aGUgc3BhY2UgbWFwIHNjYW4gYWNjdW11bGF0ZXMgYSByZWdpb24gbGFyZ2VyIHRoYW4gMzJNQiwg YQ0KPiBtZWRpYQ0KPiArdmVyaWZpY2F0aW9uIHJlcXVlc3QgaXMgc2VudCB0byB0aGUgZGlzayBh cyBhIGRpcmVjdGlvIHJlYWQgb2YgdGhlDQo+IHJhdyBibG9jaw0KPiArZGV2aWNlLg0KPiArDQo+ ICtJZiB0aGUgdmVyaWZpY2F0aW9uIHJlYWQgZmFpbHMsIGBgeGZzX3NjcnViYGAgcmV0cmllcyB3 aXRoIHNpbmdsZS0NCj4gYmxvY2sgcmVhZHMNCj4gK3RvIG5hcnJvdyBkb3duIHRoZSBmYWlsdXJl IHRvIHRoZSBzcGVjaWZpYyByZWdpb24gb2YgdGhlIG1lZGlhIGFuZA0KPiByZWNvcmRlZC4NCj4g K1doZW4gaXQgaGFzIGZpbmlzaGVkIGlzc3VpbmcgdmVyaWZpY2F0aW9uIHJlcXVlc3RzLCBpdCBh Z2FpbiB1c2VzDQo+IHRoZSBzcGFjZQ0KPiArbWFwcGluZyBpb2N0bCB0byBtYXAgdGhlIHJlY29y ZGVkIG1lZGlhIGVycm9ycyBiYWNrIHRvIG1ldGFkYXRhDQo+IHN0cnVjdHVyZXMNCj4gK2FuZCBy ZXBvcnQgd2hhdCBoYXMgYmVlbiBsb3N0Lg0KPiArRm9yIG1lZGlhIGVycm9ycyBpbiBibG9ja3Mg b3duZWQgYnkgZmlsZXMsIHRoZSBsYWNrIG9mIHBhcmVudA0KPiBwb2ludGVycyBtZWFucw0KPiAr dGhhdCB0aGUgZW50aXJlIGZpbGVzeXN0ZW0gbXVzdCBiZSB3YWxrZWQgdG8gcmVwb3J0IHRoZSBm aWxlIHBhdGhzDQo+IGFuZCBvZmZzZXRzDQo+ICtjb3JyZXNwb25kaW5nIHRvIHRoZSBtZWRpYSBl cnJvci4NCj4gDQpUaGlzIGxhc3QgYml0IHdpbGwgbmVlZCB0byBiZSB1cGRhdGVkIGFmdGVyIHdl IGNvbWUgdG8gYSBkZWNpc2lvbiB3aXRoDQp0aGUgcmZjDQoNCk90aGVyIHRoYW4gdGhhdCwgSSB0 aGluayBpdCBsb29rcyBwcmV0dHkgZ29vZC4NCg0KQWxsaXNvbg0KDQo=