From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from EUR05-DB8-obe.outbound.protection.outlook.com (EUR05-DB8-obe.outbound.protection.outlook.com [40.107.20.46]) by mx.groups.io with SMTP id smtpd.web11.480.1617905175736967370 for ; Thu, 08 Apr 2021 11:06:16 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@armh.onmicrosoft.com header.s=selector2-armh-onmicrosoft-com header.b=64diC2m2; spf=pass (domain: arm.com, ip: 40.107.20.46, mailfrom: sami.mujawar@arm.com) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=3cg2nlVGXsYwQSJ4bL8IKIgIDJ45+oMLkCFdrErDAVw=; b=64diC2m2s0mF7CyJhjElQ9HArPFBO2/M+7zrMYS9OIaiN/La4oqDQcaee0NjWxlqhGScNvzqzSnNZJ+o4x5cX/ncTrZ076LNRuyFAAMVhM37CZ83OukPICBHPBtIeL7Fv4S1xNDbHQcVcs68rJB95WMu2sj46srWrM/Ry6PVyIk= Received: from MR2P264CA0061.FRAP264.PROD.OUTLOOK.COM (2603:10a6:500:31::25) by DBBPR08MB4556.eurprd08.prod.outlook.com (2603:10a6:10:c8::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.3999.28; Thu, 8 Apr 2021 18:06:10 +0000 Received: from VE1EUR03FT057.eop-EUR03.prod.protection.outlook.com (2603:10a6:500:31:cafe::9a) by MR2P264CA0061.outlook.office365.com (2603:10a6:500:31::25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4020.17 via Frontend Transport; Thu, 8 Apr 2021 18:06:10 +0000 X-MS-Exchange-Authentication-Results: spf=pass (sender IP is 63.35.35.123) smtp.mailfrom=arm.com; edk2.groups.io; dkim=pass (signature was verified) header.d=armh.onmicrosoft.com;edk2.groups.io; dmarc=pass action=none header.from=arm.com; Received-SPF: Pass (protection.outlook.com: domain of arm.com designates 63.35.35.123 as permitted sender) receiver=protection.outlook.com; client-ip=63.35.35.123; helo=64aa7808-outbound-1.mta.getcheckrecipient.com; Received: from 64aa7808-outbound-1.mta.getcheckrecipient.com (63.35.35.123) by VE1EUR03FT057.mail.protection.outlook.com (10.152.19.123) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4020.17 via Frontend Transport; Thu, 8 Apr 2021 18:06:09 +0000 Received: ("Tessian outbound 81a4524e9a48:v90"); Thu, 08 Apr 2021 18:06:09 +0000 X-CheckRecipientChecked: true X-CR-MTA-CID: 9189bdc4978f4142 X-CR-MTA-TID: 64aa7808 Received: from f9ac4116ab5c.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 80F381E0-9969-49CD-A114-EC23B217B872.1; Thu, 08 Apr 2021 18:06:03 +0000 Received: from EUR04-HE1-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id f9ac4116ab5c.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Thu, 08 Apr 2021 18:06:03 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=BOSL2sRhbs39CeyqFsosAkmEUp1YGzwRSUANS57lnvy9JNtCos8HP9D0AxYn95Mxvj96C0jcs/UTLVfQCkcUr1UnFV/nnuM5EiItLX7fzBsZXfMEd01OifvxiAIPXO4kPwLahyK7jzXZ9JNk/W9x5SxYu9F/mwdQheC7vtpxZlAmlwKacJe5+6vjyhkdNZp9ye0TBvG2T7sF3P4JtG4OHs6WdDwyz/ruzaaabHwIHcDUxDHJi3J+1q7r2cp4B/Iu3Xy48NLk4pyyHte877wpHPmSzR1oOenVBS1H+XaUBbbsZgqrNUhkhRytV0NJbHN0zqGsUi+0V5vaEgN0Ol2gfw== 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-SenderADCheck; bh=3cg2nlVGXsYwQSJ4bL8IKIgIDJ45+oMLkCFdrErDAVw=; b=VttxQ31DjWfVH1ZXcLYc+WfXkQ+UjgZd0V2UtvZrJNrlEC3/Wt6yG7Dl6dH2A0o4ELy/nP22gbG+0Zt/s+kXc6GNu6IVvB/lhEwhJtwsB4eDpgZmhCPA1/T+1qbdvjEW+0/cwT/nj3deAEuPoQp16cyRQQEYLdJveBgvNr432gBB+J50pusxBVdnWF4YVTSiYy7VczawwSxdLj7SqS/13F3Gq67TUQHFhOuJk3AaNm6LlR0vmYq5wczK2hyUmekcRzRHar5EzXBKLHvrMGhb2deyOhwkQmNxmaVniTO98Zozl11iWxFM/vDnxWcNWbJv2EV4vJaXTLjg17/N+DLM7w== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=arm.com; dmarc=pass action=none header.from=arm.com; dkim=pass header.d=arm.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=armh.onmicrosoft.com; s=selector2-armh-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=3cg2nlVGXsYwQSJ4bL8IKIgIDJ45+oMLkCFdrErDAVw=; b=64diC2m2s0mF7CyJhjElQ9HArPFBO2/M+7zrMYS9OIaiN/La4oqDQcaee0NjWxlqhGScNvzqzSnNZJ+o4x5cX/ncTrZ076LNRuyFAAMVhM37CZ83OukPICBHPBtIeL7Fv4S1xNDbHQcVcs68rJB95WMu2sj46srWrM/Ry6PVyIk= Received: from AM6PR08MB3784.eurprd08.prod.outlook.com (2603:10a6:20b:85::25) by AS8PR08MB6725.eurprd08.prod.outlook.com (2603:10a6:20b:394::24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4020.17; Thu, 8 Apr 2021 18:06:01 +0000 Received: from AM6PR08MB3784.eurprd08.prod.outlook.com ([fe80::253a:c74d:3408:25ce]) by AM6PR08MB3784.eurprd08.prod.outlook.com ([fe80::253a:c74d:3408:25ce%6]) with mapi id 15.20.3999.034; Thu, 8 Apr 2021 18:06:01 +0000 From: "Sami Mujawar" To: Chandni Cherukuri , "devel@edk2.groups.io" CC: Ard Biesheuvel , Leif Lindholm , nd Subject: Re: [edk2-platforms][PATCH V2 2/7] Platform/ARM/Morello: Add support for PciHostBridgeLib Thread-Topic: [edk2-platforms][PATCH V2 2/7] Platform/ARM/Morello: Add support for PciHostBridgeLib Thread-Index: AQHXJwRkdraO/dR4E0W4ZrsL3lEBf6qrBmQA Date: Thu, 8 Apr 2021 18:06:01 +0000 Message-ID: <53C88837-7211-4DF4-81AD-892AE04BF3AF@arm.com> References: <20210401143537.4799-1-chandni.cherukuri@arm.com> <20210401143537.4799-3-chandni.cherukuri@arm.com> In-Reply-To: <20210401143537.4799-3-chandni.cherukuri@arm.com> Accept-Language: en-GB, en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: user-agent: Microsoft-MacOutlook/16.47.21031401 Authentication-Results-Original: arm.com; dkim=none (message not signed) header.d=none;arm.com; dmarc=none action=none header.from=arm.com; x-originating-ip: [81.131.179.80] x-ms-publictraffictype: Email X-MS-Office365-Filtering-Correlation-Id: 1d40fc9c-b638-4d49-ce1e-08d8fab8fd0b x-ms-traffictypediagnostic: AS8PR08MB6725:|DBBPR08MB4556: x-ms-exchange-transport-forked: True X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true x-ms-oob-tlc-oobclassifiers: OLM:1443;OLM:1443; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: 6RPc6T6ERKUAlDND7f7RBZI9X9LWi/JPIaTptRdOcUXsWJtW5+xSwLjUjWETq74+AK6sP7cjWDNVH7Phgh+DzCKrq0WYC1JjuqCsIyBG5jNunLoPxiAkci4Tk9wvbYY5fTFvH1eLItOQlw1a+O9RRPaCkcBPzNmYv97q5ynW+m8ukc7lKwYReSvWNrtvvAOF/QXyFeNkhsfJQN5aU+r+RIdky50JTWm5/TgwbNFwyqvs2GYURb0SBnEjxkpZ40x23b+JumQKlWmGBJU3PsqWwldUlGqeiPRFeCKMmvLYlRZa8ugbViK5x+EovMin/bGUl12qe9lJ2PNyaozJdbu9T/e8BtR6t6ywVttdkcFNTC2znf5/83+w9GzlenLdAHwu/+kEz+ULx89qs8Cfo9h0+l9VvMg0KK/HWqnQnngLI8av+hCwu6x8XmbbmQBfcRNMBj/PzeEFgedEJtWn/5+OjW1AURl14cW1dHiICcJT7YzaaPLvUPDF50g3KqPQQMvfBlshcuS6HrmThD3mqzYSqeQ/tFZpa79v/MJt0+Kppg93CxowD38mL/tdp43abWToWaSiX+4hnpIA4Tn4jPN6ffUurqd9pUy+2qSRJfNXNOyqg/9bMM4J/KpCOBDcIU2sjzNmlD/Jb+oWbMGkoitXXWk/kldu3QH4Bd1pWuT1vYLbhxH6C2TcELE0kj0FFUEd X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM6PR08MB3784.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(366004)(376002)(39850400004)(346002)(136003)(396003)(8676002)(8936002)(6486002)(2906002)(71200400001)(19627235002)(478600001)(76116006)(91956017)(86362001)(33656002)(66556008)(66476007)(66446008)(64756008)(26005)(36756003)(5660300002)(186003)(66946007)(2616005)(316002)(6512007)(4326008)(54906003)(83380400001)(110136005)(6506007)(38100700001)(45980500001);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata: =?utf-8?B?RmVLOVdwQkxIcmZsK2tGamdXQ0U3UUQ5VHptWG5hYkEyZVJBbEowL2IwcE44?= =?utf-8?B?S2RqK2tEYlJyeDFOSE5iRXl3QWJDVG9ycmdRSDk4VlhxQnQ1TWJQQzREUkwy?= =?utf-8?B?dUFqeXlPWGxPY1oyUzhiZ3E4WWpkaTVIVEFRenZjK0tDY216cVVLNnRrUi9N?= =?utf-8?B?ZGZiWE43ZEFmRHdmZFJiYTRGZzZDZFVDOGFhTC9ocUVkTlZqM2FXaUhSSWp0?= =?utf-8?B?cWQ4UTZrSEZVNDdOWXVzRTdLcnpEU09vQ25DY1Y1Uk5ZSFUvRk4zZks3ajFl?= =?utf-8?B?V2NCK3BuR0tYaWlDTTkzcHpKOVdsNGpHeGRreVdMTVN0ejhocDJKK2Z6U1R6?= =?utf-8?B?TzdLeklrWER5L2JVRjd4eXBiRUpodW9DQm5QbDRjTFI3NFRua1g0cVRkVE9t?= =?utf-8?B?NXM0eldOcWhOVGxOd2JuSzAwQkJWenlGOTVNNWkrekxFMVlJQkEzRzBMZEN3?= =?utf-8?B?V2N6SW84K1MycnBxNGFvVjdOcGc5N3NYT2lhWDY2NFlrL28vSTFnT0JlaDAw?= =?utf-8?B?cnVucEVtNzFiK2VGZ1NpVXpuZVp5ZTRiZSt0RHNuU2N1U2pkcjdRWlVQRWc5?= =?utf-8?B?SE04WDFybnBiRXMza1pZRXc3M3FjWXZmS2h1R2VUOUFSclZUYTVvQUJUUjdu?= =?utf-8?B?azBkQnRwUzcrYUwyODM0QlNwa0NZSkRpMFNNUVVMNGpsemZvWDl0cEhKZy9k?= =?utf-8?B?ODRUVEZ6cWJNU1pQVUpSYUwrbmcyWnYxOGpXU041cjVWejZ1ZElOd2NQMlha?= =?utf-8?B?MlZJR3hRWjZaYjZnZWhTczR0TjlvRVNIa3A5clBHdlFHNDZZOW1OM2MwSHQx?= =?utf-8?B?aFpYZHpsL3JCallaQ1dZUStuVGJMVUplMTdDS2FvWWx0Y3ZKRSs0eEg3SXFj?= =?utf-8?B?ak5ZeVMxUXg2ckY2VUtPdFRGaGt0dE1KdXQyNzhKOXNaWjVwOU9Hb1JrNnB1?= =?utf-8?B?cE1yMmJ2NnZ6ZEdSTUtRK3JyR0dLSWJtVi93WHY0dHJqOXJjNm1sNTdjclJD?= =?utf-8?B?VUcvalZhRzN0TGRRZFcvd0pub1phVGpuSnpPQTFka3FnbnZNMzZ4VnFRQjVZ?= =?utf-8?B?aUZBeGRwNnJxL2Y0UHpMUG9WUGxzbVQzL2ZicXBieHhSRWN3VUVpRWprM1do?= =?utf-8?B?UWRRYnVGdVRUN1FieDNyb1ZkWW5WejVNVE9JVDdPV1I1QnJJb0dod1pEc284?= =?utf-8?B?Qjk3cmdmRkZxaDZNS0JJVytZTHRMOXpZaEFYMFdYVnh0NGtNZHhpbERmQ1hs?= =?utf-8?B?Q1hCNWNQY1dndXVtSDk1UDJoUWxTajgwZUo1dGRzWmprZDgyQWN1d0VueXpx?= =?utf-8?B?cVpVK1ZhVHNnbThQUC84dGM3TFBUZUU3OWRrNmtkMFFQaS92Mnp5Ty81RTU1?= =?utf-8?B?cmFra1N3c2JocEVncThBbC9XZm1YR3JoY3ZiNm5UTkNMYTVnbGlwWExxYk90?= =?utf-8?B?TkIrK3ppdUQvRlJwZHlRUTV4VXYxeXlwZzV3b3Fic2RKTFdXQmZaTmFROEdr?= =?utf-8?B?Z1Awd2w4MUw2clVkbnNOZXl4OVpweVhYZXlUQ1hBc2crQ0IvcCtNSXFPcFNi?= =?utf-8?B?RzFabWFRYnRQNjdkMHYwcEdJVlNyTGYxNFFkcnFMWUFja1pQdmhQZnhDV1BY?= =?utf-8?B?MlVQVTVDMGg4dUhpdWdDbFIrZmtWcVpxUDk1VzNwQjdDc3ZSUEsxWjBQeDBx?= =?utf-8?B?U3NBRDdEQU9BSmdXejZPVCtXYlY3MjNHWlRGaGdWSUxua3lDdnBXSWJhRlFM?= =?utf-8?Q?8+YUNk/tqg9D7km529wCbMEcvtjYMlXa6SQfLAU?= MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS8PR08MB6725 Original-Authentication-Results: arm.com; dkim=none (message not signed) header.d=none;arm.com; dmarc=none action=none header.from=arm.com; Return-Path: Sami.Mujawar@arm.com X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: VE1EUR03FT057.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: 0bc9a860-9292-4087-7377-08d8fab8f82c X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 9jLiJ1GNuPT/7Uhw7SzLvs1UNZ4E7ITbYsAuBCyK0LQNuk1khSI+Qw8iONXY8mLe2wI7FmZabNFIUE8nsJHRzYAFdO0KC6lr82bAU9xhH4YXwbVm0PDqvQ5IJTwJi6f9PMVAhOKuHAk2sx8Yxgt3I/canDSEyR7QUU2o19HfAy8hcDU8Ci83FKAQE7E8Fqpi7BeMdsTKWB9j3lEQmF0jiY9Qp8UA3okW56lFVCT+QFFBzxHNHuTVowcfu0AFUvetHQoBZfA7M6J0PhdejXB3ckUFoQKYfF+iQW4kJuG2ga7PtHXWXG3UjbiJzkq8M7LxDNx0VAkDHr2JCbwEYIqm4GK+Oj02Y/wuULcBBGea23ydFvu6LbODXOE/db4OSN0c0hkzkRKrO7hg6lBkBPCCpwAP1ADRBm7ZiCKYfVyY20c2XjcBXi3dLbMCkw4VVBn2oSbF3HoB7U6BA52Ok6wvhMuehe5D3/uvd4tW2XgMBibyCKI8Ho7xD2y9WjPbWyXJFrBTHoTaffo2Wr8CG7EDk6HKud21Tou53Q7f2kpm0VLYfAAOHJWLwwmLRPsK0wA7E3xe7Fzv9O4nHfLV/rxuPdS2/U7OdKO5xsQoaruNHEx17vGYZ0C1MTnIqqTFunBjtO8UKNL1fo0FlGZODFNuIiyJTJfC6LsfF+z9oRAbrbA= X-Forefront-Antispam-Report: CIP:63.35.35.123;CTRY:IE;LANG:en;SCL:1;SRV:;IPV:CAL;SFV:NSPM;H:64aa7808-outbound-1.mta.getcheckrecipient.com;PTR:ec2-63-35-35-123.eu-west-1.compute.amazonaws.com;CAT:NONE;SFS:(4636009)(346002)(376002)(136003)(39850400004)(396003)(46966006)(36840700001)(110136005)(36860700001)(86362001)(8936002)(54906003)(4326008)(26005)(82310400003)(316002)(70206006)(8676002)(82740400003)(83380400001)(33656002)(81166007)(5660300002)(36756003)(2616005)(6486002)(19627235002)(70586007)(478600001)(6512007)(2906002)(186003)(47076005)(6506007)(356005)(336012);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 08 Apr 2021 18:06:09.7571 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 1d40fc9c-b638-4d49-ce1e-08d8fab8fd0b X-MS-Exchange-CrossTenant-Id: f34e5979-57d9-4aaa-ad4d-b122a662184d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=f34e5979-57d9-4aaa-ad4d-b122a662184d;Ip=[63.35.35.123];Helo=[64aa7808-outbound-1.mta.getcheckrecipient.com] X-MS-Exchange-CrossTenant-AuthSource: VE1EUR03FT057.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR08MB4556 Content-Language: en-GB Content-Type: text/plain; charset="utf-8" Content-ID: Content-Transfer-Encoding: base64 SGkgQ2hhbmRuaSwNCg0KVGhpcyBwYXRjaCBsb29rcyBnb29kIHRvIG1lLg0KDQpSZXZpZXdlZC1i eTogU2FtaSBNdWphd2FyIDxzYW1pLm11amF3YXJAYXJtLmNvbT4NCg0KUmVnYXJkcywNCg0KU2Ft aSBNdWphd2FyDQoNCu+7v09uIDAxLzA0LzIwMjEsIDE1OjM2LCAiQ2hhbmRuaSBDaGVydWt1cmki IDxjaGFuZG5pLmNoZXJ1a3VyaUBhcm0uY29tPiB3cm90ZToNCg0KICAgIE1vcmVsbG8gRlZQIHBs YXRmb3JtIHN1cHBvcnRzIGEgUENJZSByb290IGNvbXBsZXguDQogICAgVGhpcyBwYXRjaCBpbXBs ZW1lbnRzIFBjaUhvc3RCcmlkZ2VMaWIgdG8gc3VwcG9ydCBQQ0llLg0KDQogICAgU2lnbmVkLW9m Zi1ieTogQ2hhbmRuaSBDaGVydWt1cmkgPGNoYW5kbmkuY2hlcnVrdXJpQGFybS5jb20+DQogICAg LS0tDQogICAgIFBsYXRmb3JtL0FSTS9Nb3JlbGxvL0xpYnJhcnkvUGNpSG9zdEJyaWRnZUxpYi9Q Y2lIb3N0QnJpZGdlTGliRnZwLmluZiB8ICA0OCArKysrKysNCiAgICAgUGxhdGZvcm0vQVJNL01v cmVsbG8vTGlicmFyeS9QY2lIb3N0QnJpZGdlTGliL1BjaUhvc3RCcmlkZ2VMaWJGdnAuYyAgIHwg MTgwICsrKysrKysrKysrKysrKysrKysrDQogICAgIDIgZmlsZXMgY2hhbmdlZCwgMjI4IGluc2Vy dGlvbnMoKykNCg0KICAgIGRpZmYgLS1naXQgYS9QbGF0Zm9ybS9BUk0vTW9yZWxsby9MaWJyYXJ5 L1BjaUhvc3RCcmlkZ2VMaWIvUGNpSG9zdEJyaWRnZUxpYkZ2cC5pbmYgYi9QbGF0Zm9ybS9BUk0v TW9yZWxsby9MaWJyYXJ5L1BjaUhvc3RCcmlkZ2VMaWIvUGNpSG9zdEJyaWRnZUxpYkZ2cC5pbmYN CiAgICBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KICAgIGluZGV4IDAwMDAwMDAwMDAwMC4uMWQ2YzVi MDFkMTNkDQogICAgLS0tIC9kZXYvbnVsbA0KICAgICsrKyBiL1BsYXRmb3JtL0FSTS9Nb3JlbGxv L0xpYnJhcnkvUGNpSG9zdEJyaWRnZUxpYi9QY2lIb3N0QnJpZGdlTGliRnZwLmluZg0KICAgIEBA IC0wLDAgKzEsNDggQEANCiAgICArIyMgQGZpbGUNCiAgICArIyAgUENJIEhvc3QgQnJpZGdlIExp YnJhcnkgaW5zdGFuY2UgZm9yIEFSTSBNb3JlbGxvIEZWUCBwbGF0Zm9ybS4NCiAgICArIw0KICAg ICsjICBDb3B5cmlnaHQgKGMpIDIwMjEsIEFSTSBMaW1pdGVkLiBBbGwgcmlnaHRzIHJlc2VydmVk LjxCUj4NCiAgICArIw0KICAgICsjICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xh dXNlLVBhdGVudA0KICAgICsjDQogICAgKyMjDQogICAgKw0KICAgICtbRGVmaW5lc10NCiAgICAr ICBJTkZfVkVSU0lPTiAgICAgICAgICAgICAgICAgICAgPSAweDAwMDEwMDFCDQogICAgKyAgQkFT RV9OQU1FICAgICAgICAgICAgICAgICAgICAgID0gUGNpSG9zdEJyaWRnZUxpYg0KICAgICsgIEZJ TEVfR1VJRCAgICAgICAgICAgICAgICAgICAgICA9IDY4NzlDRUFELURDOTQtNDJFQi04OTVDLTA5 NkQzNkI4MDgzQw0KICAgICsgIE1PRFVMRV9UWVBFICAgICAgICAgICAgICAgICAgICA9IERYRV9E UklWRVINCiAgICArICBWRVJTSU9OX1NUUklORyAgICAgICAgICAgICAgICAgPSAxLjANCiAgICAr ICBMSUJSQVJZX0NMQVNTICAgICAgICAgICAgICAgICAgPSBQY2lIb3N0QnJpZGdlTGlifERYRV9E UklWRVINCiAgICArDQogICAgKyMNCiAgICArIyBUaGUgZm9sbG93aW5nIGluZm9ybWF0aW9uIGlz IGZvciByZWZlcmVuY2Ugb25seSBhbmQgbm90IHJlcXVpcmVkIGJ5IHRoZSBidWlsZA0KICAgICsj IHRvb2xzLg0KICAgICsjDQogICAgKyMgIFZBTElEX0FSQ0hJVEVDVFVSRVMgICAgICAgICAgID0g QUFSQ0g2NA0KICAgICsjDQogICAgKw0KICAgICtbU291cmNlc10NCiAgICArICBQY2lIb3N0QnJp ZGdlTGliRnZwLmMNCiAgICArDQogICAgK1tQYWNrYWdlc10NCiAgICArICBBcm1Qa2cvQXJtUGtn LmRlYw0KICAgICsgIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQogICAgKyAgTWRlUGtn L01kZVBrZy5kZWMNCiAgICArICBQbGF0Zm9ybS9BUk0vTW9yZWxsby9Nb3JlbGxvUGxhdGZvcm0u ZGVjDQogICAgKw0KICAgICtbRml4ZWRQY2RdDQogICAgKyAgZ0FybU1vcmVsbG9Ub2tlblNwYWNl R3VpZC5QY2RQY2lCdXNNYXgNCiAgICArICBnQXJtTW9yZWxsb1Rva2VuU3BhY2VHdWlkLlBjZFBj aUJ1c01pbg0KICAgICsgIGdBcm1Nb3JlbGxvVG9rZW5TcGFjZUd1aWQuUGNkUGNpSW9CYXNlDQog ICAgKyAgZ0FybU1vcmVsbG9Ub2tlblNwYWNlR3VpZC5QY2RQY2lJb1NpemUNCiAgICArICBnQXJt TW9yZWxsb1Rva2VuU3BhY2VHdWlkLlBjZFBjaU1taW8zMkJhc2UNCiAgICArICBnQXJtTW9yZWxs b1Rva2VuU3BhY2VHdWlkLlBjZFBjaU1taW8zMlNpemUNCiAgICArICBnQXJtTW9yZWxsb1Rva2Vu U3BhY2VHdWlkLlBjZFBjaU1taW82NEJhc2UNCiAgICArICBnQXJtTW9yZWxsb1Rva2VuU3BhY2VH dWlkLlBjZFBjaU1taW82NFNpemUNCiAgICArDQogICAgK1tQcm90b2NvbHNdDQogICAgKyAgZ0Vm aUNwdUlvMlByb3RvY29sR3VpZCAgICAgICAgICAjIyBDT05TVU1FUw0KICAgICsNCiAgICArW0Rl cGV4XQ0KICAgICsgIGdFZmlDcHVJbzJQcm90b2NvbEd1aWQNCiAgICBkaWZmIC0tZ2l0IGEvUGxh dGZvcm0vQVJNL01vcmVsbG8vTGlicmFyeS9QY2lIb3N0QnJpZGdlTGliL1BjaUhvc3RCcmlkZ2VM aWJGdnAuYyBiL1BsYXRmb3JtL0FSTS9Nb3JlbGxvL0xpYnJhcnkvUGNpSG9zdEJyaWRnZUxpYi9Q Y2lIb3N0QnJpZGdlTGliRnZwLmMNCiAgICBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KICAgIGluZGV4 IDAwMDAwMDAwMDAwMC4uMDQyY2JiZGNhMjAyDQogICAgLS0tIC9kZXYvbnVsbA0KICAgICsrKyBi L1BsYXRmb3JtL0FSTS9Nb3JlbGxvL0xpYnJhcnkvUGNpSG9zdEJyaWRnZUxpYi9QY2lIb3N0QnJp ZGdlTGliRnZwLmMNCiAgICBAQCAtMCwwICsxLDE4MCBAQA0KICAgICsvKiogQGZpbGUNCiAgICAr ICBQQ0kgSG9zdCBCcmlkZ2UgTGlicmFyeSBpbnN0YW5jZSBmb3IgQVJNIE1vcmVsbG8gRlZQIHBs YXRmb3JtLg0KICAgICsNCiAgICArICBDb3B5cmlnaHQgKGMpIDIwMjEsIEFSTSBMaW1pdGVkLiBB bGwgcmlnaHRzIHJlc2VydmVkLjxCUj4NCiAgICArDQogICAgKyAgU1BEWC1MaWNlbnNlLUlkZW50 aWZpZXI6IEJTRC0yLUNsYXVzZS1QYXRlbnQNCiAgICArKiovDQogICAgKw0KICAgICsjaW5jbHVk ZSA8TGlicmFyeS9EZWJ1Z0xpYi5oPg0KICAgICsjaW5jbHVkZSA8TGlicmFyeS9EZXZpY2VQYXRo TGliLmg+DQogICAgKyNpbmNsdWRlIDxMaWJyYXJ5L1BjaUhvc3RCcmlkZ2VMaWIuaD4NCiAgICAr I2luY2x1ZGUgPFByb3RvY29sL1BjaUhvc3RCcmlkZ2VSZXNvdXJjZUFsbG9jYXRpb24uaD4NCiAg ICArDQogICAgKyNkZWZpbmUgUk9PVF9DT01QTEVYX05VTSAxDQogICAgKw0KICAgICtHTE9CQUxf UkVNT1ZFX0lGX1VOUkVGRVJFTkNFRA0KICAgICtTVEFUSUMgQ0hBUjE2IENPTlNUICogQ09OU1Qg bVBjaUhvc3RCcmlkZ2VMaWJBY3BpQWRkcmVzc1NwYWNlVHlwZVN0cltdID0gew0KICAgICsgIEwi TWVtIiwgTCJJL08iLCBMIkJ1cyINCiAgICArfTsNCiAgICArDQogICAgKyNwcmFnbWEgcGFjaygx KQ0KICAgICt0eXBlZGVmIHN0cnVjdCB7DQogICAgKyAgQUNQSV9ISURfREVWSUNFX1BBVEggICAg IEFjcGlEZXZpY2VQYXRoOw0KICAgICsgIEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCBFbmREZXZp Y2VQYXRoOw0KICAgICt9IEVGSV9QQ0lfUk9PVF9CUklER0VfREVWSUNFX1BBVEg7DQogICAgKyNw cmFnbWEgcGFjayAoKQ0KICAgICsNCiAgICArU1RBVElDIEVGSV9QQ0lfUk9PVF9CUklER0VfREVW SUNFX1BBVEggbUVmaVBjaVJvb3RCcmlkZ2VEZXZpY2VQYXRoW1JPT1RfQ09NUExFWF9OVU1dID0g ew0KICAgICsgIHsNCiAgICArICAgIHsNCiAgICArICAgICAgew0KICAgICsgICAgICAgIEFDUElf REVWSUNFX1BBVEgsDQogICAgKyAgICAgICAgQUNQSV9EUCwNCiAgICArICAgICAgICB7DQogICAg KyAgICAgICAgICAoVUlOVDgpc2l6ZW9mIChBQ1BJX0hJRF9ERVZJQ0VfUEFUSCksDQogICAgKyAg ICAgICAgICAoVUlOVDgpKHNpemVvZiAoQUNQSV9ISURfREVWSUNFX1BBVEgpID4+IDgpDQogICAg KyAgICAgICAgfQ0KICAgICsgICAgICB9LA0KICAgICsgICAgICBFSVNBX1BOUF9JRCgweDBBMDgp LA0KICAgICsgICAgICAwDQogICAgKyAgICB9LA0KICAgICsgICAgew0KICAgICsgICAgICBFTkRf REVWSUNFX1BBVEhfVFlQRSwNCiAgICArICAgICAgRU5EX0VOVElSRV9ERVZJQ0VfUEFUSF9TVUJU WVBFLA0KICAgICsgICAgICB7DQogICAgKyAgICAgICAgRU5EX0RFVklDRV9QQVRIX0xFTkdUSCwN CiAgICArICAgICAgICAwDQogICAgKyAgICAgIH0NCiAgICArICAgIH0NCiAgICArICB9LA0KICAg ICt9Ow0KICAgICsNCiAgICArU1RBVElDIFBDSV9ST09UX0JSSURHRSBtUGNpUm9vdEJyaWRnZVtS T09UX0NPTVBMRVhfTlVNXSA9IHsNCiAgICArICB7DQogICAgKyAgICAwLCAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTZWdtZW50DQogICAgKyAgICAwLCAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBTdXBwb3J0cw0K ICAgICsgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg Ly8gQXR0cmlidXRlcw0KICAgICsgICAgVFJVRSwgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgLy8gRG1hQWJvdmU0Rw0KICAgICsgICAgRkFMU0UsICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gTm9FeHRlbmRlZENvbmZpZ1NwYWNlDQog ICAgKyAgICBGQUxTRSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv LyBSZXNvdXJjZUFzc2lnbmVkDQogICAgKyAgICBFRklfUENJX0hPU1RfQlJJREdFX0NPTUJJTkVf TUVNX1BNRU0gfCAgICAgICAgICAvLyBBbGxvY2F0aW9uQXR0cmlidXRlcw0KICAgICsgICAgRUZJ X1BDSV9IT1NUX0JSSURHRV9NRU02NF9ERUNPREUsDQogICAgKyAgICB7DQogICAgKyAgICAgIC8v IEJ1cw0KICAgICsgICAgICBGaXhlZFBjZEdldDMyIChQY2RQY2lCdXNNaW4pLA0KICAgICsgICAg ICBGaXhlZFBjZEdldDMyIChQY2RQY2lCdXNNYXgpDQogICAgKyAgICB9LCB7DQogICAgKyAgICAg IC8vIElvDQogICAgKyAgICAgIEZpeGVkUGNkR2V0NjQgKFBjZFBjaUlvQmFzZSksDQogICAgKyAg ICAgIEZpeGVkUGNkR2V0NjQgKFBjZFBjaUlvQmFzZSkgKyBGaXhlZFBjZEdldDY0IChQY2RQY2lJ b1NpemUpIC0gMQ0KICAgICsgICAgfSwgew0KICAgICsgICAgICAvLyBNZW0NCiAgICArICAgICAg Rml4ZWRQY2RHZXQzMiAoUGNkUGNpTW1pbzMyQmFzZSksDQogICAgKyAgICAgIEZpeGVkUGNkR2V0 MzIgKFBjZFBjaU1taW8zMkJhc2UpICsgRml4ZWRQY2RHZXQzMiAoUGNkUGNpTW1pbzMyU2l6ZSkg LSAxDQogICAgKyAgICB9LCB7DQogICAgKyAgICAgIC8vIE1lbUFib3ZlNEcNCiAgICArICAgICAg Rml4ZWRQY2RHZXQ2NCAoUGNkUGNpTW1pbzY0QmFzZSksDQogICAgKyAgICAgIEZpeGVkUGNkR2V0 NjQgKFBjZFBjaU1taW82NEJhc2UpICsgRml4ZWRQY2RHZXQ2NCAoUGNkUGNpTW1pbzY0U2l6ZSkg LSAxDQogICAgKyAgICB9LCB7DQogICAgKyAgICAgIC8vIFBNZW0NCiAgICArICAgICAgTUFYX1VJ TlQ2NCwNCiAgICArICAgICAgMA0KICAgICsgICAgfSwgew0KICAgICsgICAgICAvLyBQTWVtQWJv dmU0Rw0KICAgICsgICAgICBNQVhfVUlOVDY0LA0KICAgICsgICAgICAwDQogICAgKyAgICB9LA0K ICAgICsgICAgKEVGSV9ERVZJQ0VfUEFUSF9QUk9UT0NPTCAqKSZtRWZpUGNpUm9vdEJyaWRnZURl dmljZVBhdGhbMF0NCiAgICArICB9LA0KICAgICt9Ow0KICAgICsNCiAgICArLyoqDQogICAgKyAg UmV0dXJuIGFsbCB0aGUgcm9vdCBicmlkZ2UgaW5zdGFuY2VzIGluIGFuIGFycmF5Lg0KICAgICsN CiAgICArICBAcGFyYW0gQ291bnQgIFJldHVybiB0aGUgY291bnQgb2Ygcm9vdCBicmlkZ2UgaW5z dGFuY2VzLg0KICAgICsNCiAgICArICBAcmV0dXJuIEFsbCB0aGUgcm9vdCBicmlkZ2UgaW5zdGFu Y2VzIGluIGFuIGFycmF5Lg0KICAgICsgICAgICAgICAgVGhlIGFycmF5IHNob3VsZCBiZSBwYXNz ZWQgaW50byBQY2lIb3N0QnJpZGdlRnJlZVJvb3RCcmlkZ2VzKCkNCiAgICArICAgICAgICAgIHdo ZW4gaXQncyBub3QgdXNlZC4NCiAgICArKiovDQogICAgK1BDSV9ST09UX0JSSURHRSAqDQogICAg K0VGSUFQSQ0KICAgICtQY2lIb3N0QnJpZGdlR2V0Um9vdEJyaWRnZXMgKA0KICAgICsgIFVJTlRO ICpDb3VudA0KICAgICsgICkNCiAgICArew0KICAgICsgICpDb3VudCA9IEFSUkFZX1NJWkUgKG1Q Y2lSb290QnJpZGdlKTsNCiAgICArICByZXR1cm4gbVBjaVJvb3RCcmlkZ2U7DQogICAgK30NCiAg ICArDQogICAgKy8qKg0KICAgICsgIEZyZWUgdGhlIHJvb3QgYnJpZGdlIGluc3RhbmNlcyBhcnJh eSByZXR1cm5lZCBmcm9tIFBjaUhvc3RCcmlkZ2VHZXRSb290QnJpZGdlcygpLg0KICAgICsNCiAg ICArICBAcGFyYW0gQnJpZGdlcyBUaGUgcm9vdCBicmlkZ2UgaW5zdGFuY2VzIGFycmF5Lg0KICAg ICsgIEBwYXJhbSBDb3VudCAgIFRoZSBjb3VudCBvZiB0aGUgYXJyYXkuDQogICAgKyoqLw0KICAg ICtWT0lEDQogICAgK0VGSUFQSQ0KICAgICtQY2lIb3N0QnJpZGdlRnJlZVJvb3RCcmlkZ2VzICgN CiAgICArICBQQ0lfUk9PVF9CUklER0UgKkJyaWRnZXMsDQogICAgKyAgVUlOVE4gICAgICAgICAg IENvdW50DQogICAgKyAgKQ0KICAgICt7DQogICAgK30NCiAgICArDQogICAgKy8qKg0KICAgICsg IEluZm9ybSB0aGUgcGxhdGZvcm0gdGhhdCB0aGUgcmVzb3VyY2UgY29uZmxpY3QgaGFwcGVucy4N CiAgICArDQogICAgKyAgQHBhcmFtIEhvc3RCcmlkZ2VIYW5kbGUgSGFuZGxlIG9mIHRoZSBIb3N0 IEJyaWRnZS4NCiAgICArICBAcGFyYW0gQ29uZmlndXJhdGlvbiAgICBQb2ludGVyIHRvIFBDSSBJ L08gYW5kIFBDSSBtZW1vcnkgcmVzb3VyY2UNCiAgICArICAgICAgICAgICAgICAgICAgICAgICAg ICBkZXNjcmlwdG9ycy4gVGhlIENvbmZpZ3VyYXRpb24gY29udGFpbnMgdGhlIHJlc291cmNlcw0K ICAgICsgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBhbGwgdGhlIHJvb3QgYnJpZGdlcy4g VGhlIHJlc291cmNlIGZvciBlYWNoIHJvb3QNCiAgICArICAgICAgICAgICAgICAgICAgICAgICAg ICBicmlkZ2UgaXMgdGVybWluYXRlZCB3aXRoIEVORCBkZXNjcmlwdG9yIGFuZCBhbg0KICAgICsg ICAgICAgICAgICAgICAgICAgICAgICAgIGFkZGl0aW9uYWwgRU5EIGlzIGFwcGVuZGVkIGluZGlj YXRpbmcgdGhlIGVuZCBvZiB0aGUNCiAgICArICAgICAgICAgICAgICAgICAgICAgICAgICBlbnRp cmUgcmVzb3VyY2VzLiBUaGUgcmVzb3VyY2UgZGVzY3JpcHRvciBmaWVsZA0KICAgICsgICAgICAg ICAgICAgICAgICAgICAgICAgIHZhbHVlcyBmb2xsb3cgdGhlIGRlc2NyaXB0aW9uIGluDQogICAg KyAgICAgICAgICAgICAgICAgICAgICAgICAgRUZJX1BDSV9IT1NUX0JSSURHRV9SRVNPVVJDRV9B TExPQ0FUSU9OX1BST1RPQ09MDQogICAgKyAgICAgICAgICAgICAgICAgICAgICAgICAgLlN1Ym1p dFJlc291cmNlcygpLg0KICAgICsqKi8NCiAgICArVk9JRA0KICAgICtFRklBUEkNCiAgICArUGNp SG9zdEJyaWRnZVJlc291cmNlQ29uZmxpY3QgKA0KICAgICsgIEVGSV9IQU5ETEUgICAgICAgICAg ICAgICAgICAgICAgICBIb3N0QnJpZGdlSGFuZGxlLA0KICAgICsgIFZPSUQgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAqQ29uZmlndXJhdGlvbg0KICAgICsgICkNCiAgICArew0KICAgICsg IEVGSV9BQ1BJX0FERFJFU1NfU1BBQ0VfREVTQ1JJUFRPUiAqRGVzY3JpcHRvcjsNCiAgICArICBV SU5UTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUm9vdEJyaWRnZUluZGV4Ow0KICAgICsg IERFQlVHICgoREVCVUdfRVJST1IsICJQY2lIb3N0QnJpZGdlOiBSZXNvdXJjZSBjb25mbGljdCBo YXBwZW5zIVxuIikpOw0KICAgICsNCiAgICArICBSb290QnJpZGdlSW5kZXggPSAwOw0KICAgICsg IERlc2NyaXB0b3IgPSAoRUZJX0FDUElfQUREUkVTU19TUEFDRV9ERVNDUklQVE9SICopIENvbmZp Z3VyYXRpb247DQogICAgKyAgd2hpbGUgKERlc2NyaXB0b3ItPkRlc2MgPT0gQUNQSV9BRERSRVNT X1NQQUNFX0RFU0NSSVBUT1IpIHsNCiAgICArICAgIERFQlVHICgoREVCVUdfRVJST1IsICJSb290 QnJpZGdlWyVkXTpcbiIsIFJvb3RCcmlkZ2VJbmRleCsrKSk7DQogICAgKyAgICBmb3IgKDsgRGVz Y3JpcHRvci0+RGVzYyA9PSBBQ1BJX0FERFJFU1NfU1BBQ0VfREVTQ1JJUFRPUjsgRGVzY3JpcHRv cisrKSB7DQogICAgKyAgICAgIEFTU0VSVCAoRGVzY3JpcHRvci0+UmVzVHlwZSA8DQogICAgKyAg ICAgICAgICAgICAgKEFSUkFZX1NJWkUgKG1QY2lIb3N0QnJpZGdlTGliQWNwaUFkZHJlc3NTcGFj ZVR5cGVTdHIpKQ0KICAgICsgICAgICAgICAgICAgICk7DQogICAgKyAgICAgIERFQlVHICgoREVC VUdfRVJST1IsICIlczogTGVuZ3RoL0FsaWdubWVudCA9IDB4JWx4IC8gMHglbHhcbiIsDQogICAg KyAgICAgICAgICAgICAgbVBjaUhvc3RCcmlkZ2VMaWJBY3BpQWRkcmVzc1NwYWNlVHlwZVN0cltE ZXNjcmlwdG9yLT5SZXNUeXBlXSwNCiAgICArICAgICAgICAgICAgICBEZXNjcmlwdG9yLT5BZGRy TGVuLCBEZXNjcmlwdG9yLT5BZGRyUmFuZ2VNYXgNCiAgICArICAgICAgICAgICAgICApKTsNCiAg ICArICAgICAgaWYgKERlc2NyaXB0b3ItPlJlc1R5cGUgPT0gQUNQSV9BRERSRVNTX1NQQUNFX1RZ UEVfTUVNKSB7DQogICAgKyAgICAgICAgREVCVUcgKChERUJVR19FUlJPUiwgIkdyYW51bGFyaXR5 L1NwZWNpZmljRmxhZyA9ICVsZCAvICUwMnglc1xuIiwNCiAgICArICAgICAgICAgICAgICAgIERl c2NyaXB0b3ItPkFkZHJTcGFjZUdyYW51bGFyaXR5LCBEZXNjcmlwdG9yLT5TcGVjaWZpY0ZsYWcs DQogICAgKyAgICAgICAgICAgICAgICAoKERlc2NyaXB0b3ItPlNwZWNpZmljRmxhZyAmDQogICAg KyAgICAgICAgICAgICAgICAgIEVGSV9BQ1BJX01FTU9SWV9SRVNPVVJDRV9TUEVDSUZJQ19GTEFH X0NBQ0hFQUJMRV9QUkVGRVRDSEFCTEUNCiAgICArICAgICAgICAgICAgICAgICAgKSAhPSAwKSA/ IEwiIChQcmVmZXRjaGFibGUpIiA6IEwiIg0KICAgICsgICAgICAgICAgICAgICAgKSk7DQogICAg KyAgICAgIH0NCiAgICArICAgIH0NCiAgICArICAgIC8vDQogICAgKyAgICAvLyBTa2lwIHRoZSBF TkQgZGVzY3JpcHRvciBmb3Igcm9vdCBicmlkZ2UNCiAgICArICAgIC8vDQogICAgKyAgICBBU1NF UlQgKERlc2NyaXB0b3ItPkRlc2MgPT0gQUNQSV9FTkRfVEFHX0RFU0NSSVBUT1IpOw0KICAgICsg ICAgRGVzY3JpcHRvciA9IChFRklfQUNQSV9BRERSRVNTX1NQQUNFX0RFU0NSSVBUT1IgKikoDQog ICAgKyAgICAgICAgICAgICAgICAgICAoRUZJX0FDUElfRU5EX1RBR19ERVNDUklQVE9SICopRGVz Y3JpcHRvciArIDENCiAgICArICAgICAgICAgICAgICAgICAgICk7DQogICAgKyAgfQ0KICAgICt9 DQogICAgLS0gDQogICAgMi4xNy4xDQoNCg0K