From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from EUR01-HE1-obe.outbound.protection.outlook.com (EUR01-HE1-obe.outbound.protection.outlook.com [40.107.13.57]) by mx.groups.io with SMTP id smtpd.web12.1731.1622081925360340574 for ; Wed, 26 May 2021 19:18:46 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@armh.onmicrosoft.com header.s=selector2-armh-onmicrosoft-com header.b=4PsPLfac; spf=pass (domain: arm.com, ip: 40.107.13.57, mailfrom: jianyong.wu@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=zHQvLHjmL8rJDqpuuEgFuxPLvqdQ6d5w9Xyi+4+hdmY=; b=4PsPLfacoOQPLjokddxv0z2l/AC00GNoU6+MOxyRDUiTfmPpXBpOry7pnN2/VTIuWu64QHRzdtSmyLsfkH87sow4MuVrZ60Ix5VMhE4SyhWe9i7n9b8m7C+e5pq88wa1ijn9Gr5plpmA+8rhHBrkKP4a533L1u4j1mGN7Re9BfI= Received: from DB6PR07CA0008.eurprd07.prod.outlook.com (2603:10a6:6:2d::18) by PA4PR08MB6112.eurprd08.prod.outlook.com (2603:10a6:102:f1::20) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4150.26; Thu, 27 May 2021 02:18:42 +0000 Received: from DB5EUR03FT043.eop-EUR03.prod.protection.outlook.com (2603:10a6:6:2d::4) by DB6PR07CA0008.outlook.office365.com (2603:10a6:6:2d::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4173.12 via Frontend Transport; Thu, 27 May 2021 02:18:42 +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 DB5EUR03FT043.mail.protection.outlook.com (10.152.20.236) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4129.25 via Frontend Transport; Thu, 27 May 2021 02:18:42 +0000 Received: ("Tessian outbound 0f1e4509c199:v92"); Thu, 27 May 2021 02:18:42 +0000 X-CR-MTA-TID: 64aa7808 Received: from bb3d96bf1828.3 by 64aa7808-outbound-1.mta.getcheckrecipient.com id 8A0569AF-C8E3-4939-B9AE-7B4BB2641A3F.1; Thu, 27 May 2021 02:18:32 +0000 Received: from EUR05-AM6-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id bb3d96bf1828.3 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Thu, 27 May 2021 02:18:32 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=Zc0ur0SnYiH5sMqxnRODWipGzaekIlCCqSlfymLX676/gj7bX8zcgji9gwm8knVOm1JeP+wBtzjNz3oRFXagmikC6quN3D4rf8AAtCaFZ8NpO+wSiJKkbmlx6D3n8prQxVCl+8PxvUeg6MD9y3dq2xYsmg5ixau4l+kvt91DA8nOwM9rV21T+r4FDcYfMjdnL+33O0gvzNFCgrlZB2I6vlK6GJtkcPoLKrUCXEM7dSLE2ETTtSOtja8t4yj4GAk45rmTnfKTfgODFG4cUKwkIbRV6ogQCNJolGWYuop+p4+zNjprlksFhrozyVLAoTitgoFW95fFvTS7Gbd9jR6OrA== 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=zHQvLHjmL8rJDqpuuEgFuxPLvqdQ6d5w9Xyi+4+hdmY=; b=QrEwVPptLNTowKZxnBBg6sawqXDF1paPs1YR+shiSUwtLNXxnE/mFWgHTf+WRNAvMJsvkMWoaTFPwWJEhaJevAWJzCtPDj8S6dsq7nEe3g1HGuEnMXUmWvaOiW8fSR2ryXLadVTRKYEotnr3BzWXKpUsVjnOwtliOBlBtS3SG6cvar5e7L2wVA+obUMJXPmr+w+foXMbJCrsjXZyN1OHASj7EtkKJKkg6ciP6c5rnw1y+wv/xYIPPz3m3bQ95k3LMPEjG5yc+/e0WK5Yu85nHBLYM+n53HRTXwYMvYGZbE6BIH1XlFRrkzRgVU1uJOm89XsulaE2ZrflWYh80uW0pQ== 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=zHQvLHjmL8rJDqpuuEgFuxPLvqdQ6d5w9Xyi+4+hdmY=; b=4PsPLfacoOQPLjokddxv0z2l/AC00GNoU6+MOxyRDUiTfmPpXBpOry7pnN2/VTIuWu64QHRzdtSmyLsfkH87sow4MuVrZ60Ix5VMhE4SyhWe9i7n9b8m7C+e5pq88wa1ijn9Gr5plpmA+8rhHBrkKP4a533L1u4j1mGN7Re9BfI= Received: from AM9PR08MB7055.eurprd08.prod.outlook.com (2603:10a6:20b:412::16) by AM9PR08MB7103.eurprd08.prod.outlook.com (2603:10a6:20b:41d::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4173.21; Thu, 27 May 2021 02:18:30 +0000 Received: from AM9PR08MB7055.eurprd08.prod.outlook.com ([fe80::593d:6e97:777c:a586]) by AM9PR08MB7055.eurprd08.prod.outlook.com ([fe80::593d:6e97:777c:a586%5]) with mapi id 15.20.4173.022; Thu, 27 May 2021 02:18:30 +0000 From: "Jianyong Wu" To: Sami Mujawar , "devel@edk2.groups.io" , "lersek@redhat.com" , "ardb+tianocore@kernel.org" CC: "hao.a.wu@intel.com" , Justin He , Leif Lindholm , nd Subject: Re: [PATCH v2 1/5] ArmVirtPkg: Library: Memory initialization for Cloud Hypervisor Thread-Topic: [PATCH v2 1/5] ArmVirtPkg: Library: Memory initialization for Cloud Hypervisor Thread-Index: AQHXSuj+TL7t5CWK5kGAPeBz3jIDJ6rpsL0AgAzxm4A= Date: Thu, 27 May 2021 02:18:30 +0000 Message-ID: References: <20210517065032.82423-1-jianyong.wu@arm.com> <20210517065032.82423-2-jianyong.wu@arm.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: C1A3EC7A91120A4FBE1DF0519BF87B02.0 x-checkrecipientchecked: true 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: [203.126.0.111] x-ms-publictraffictype: Email X-MS-Office365-Filtering-Correlation-Id: 59e55b3b-5010-450f-98c0-08d920b5bf7f x-ms-traffictypediagnostic: AM9PR08MB7103:|PA4PR08MB6112: x-ms-exchange-transport-forked: True X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true x-ms-oob-tlc-oobclassifiers: OLM:8273;OLM:8273; X-MS-Exchange-SenderADCheck: 1 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: nrlNJApCP5EnQ5IW9N4ukXXZF0IgPbZclKhKnluz5iUTkuk5LkTsqZh/gbQG8+JiN9h7RxII9UVeCjoEJMQo4+X0tARCJIIuykUiIHA2obp2Q358zgf9UwzXPHG53RCSkpWC97kmR+5KF6ph8akEt8fKQ+kzUWn0xp0zxXiB82aWL3n9X6WgodbQGHjMZPJAZxf2ZEyhbWRgnXn9oj/dHKi7YUFqNVQ5+P7aM1xTSUf3Jw+KHYcFshNUUzI8CplrOjOQPrbllAafmyPijNxqrW/rqonDYp13ldf8Q7ij3vwW6qAsmN4QGPlnRKMuzNihdFGmrGhWAxHPYXqLt5YdvZRSjkfnjNDCUtMwFSHnoNR3rcAYAJ5yiyNYEoc4KWvjvQWYQQ/JyxovFtGeRDpC8rohI05wx0V9D2YYIi/UYui/xKikdYcFJMZsiu4BTgt8VZAnvXEr43xxflDZJLAh16+OMLJ4jeJ859znmvewkwh81Px0ddMYFpPyHxin1toZDIynKDbLAUFhn+a+UyR5fVRECiYpUGdA5gkxENw6KR2uOSsZFOmft7+VfQK5SNDPgBrszgVCOznMokK7eKc54p9d27gNHHJmWJBOjwmu4ok= X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM9PR08MB7055.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(4636009)(396003)(39850400004)(136003)(366004)(376002)(346002)(66946007)(55016002)(2906002)(52536014)(66476007)(86362001)(54906003)(316002)(83380400001)(38100700002)(8936002)(76116006)(122000001)(110136005)(4326008)(8676002)(6506007)(53546011)(9686003)(186003)(71200400001)(66446008)(30864003)(26005)(33656002)(66556008)(478600001)(7696005)(5660300002)(64756008);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata: =?utf-8?B?eGhLOHo3VkhWa3dMankzclJRYUUvMld5VnU2NDg1VXdwMzlBQXQyQlNISGsv?= =?utf-8?B?RW01M1dGa2dLanlMd1QzQ0duQnMwMjdSNHdGNGRhYmFtUGdvMUVmM3JSVkk1?= =?utf-8?B?SmxyWXVMc1FMSzdFYWVmekpWc1dPM2wzWDBCQTF5ZmdYYkp3bXNwVlg3S20r?= =?utf-8?B?S25IWEg0SUJKN2ZFS2U5dm51OW5NTm4xaDM1RkIvZjNsTnd4aCtjd2NNL2VL?= =?utf-8?B?ckdkZnMvcHpqNkJ3YVowajVHVzVycjRIK2pCQ2F6T0NjanRvYm5XNW50OW9K?= =?utf-8?B?aFJFWW45VUFRT0NTckhsU09Nb1pIQWQvZjFIZ3VCTm5rNjcvSDJQc0hPVURn?= =?utf-8?B?OEU1bHRTdHhXTHRoc0lYR2x0MGs1ZU5vMi8raFA0b3I3N1dzcFhUQlBaNXNt?= =?utf-8?B?dys2Ui9aM2JHdG5WaXA5S0htRVRTZXllbFdOZHV6L3QyMHJxU0cvaTVuQ25S?= =?utf-8?B?bm9UQS9jWHdXaTlmeVhBMFZXMXdiMnczZXlaQjYyeWRRdEhUd0o2R25xTnoy?= =?utf-8?B?TytuN2Y2UlRpV3B2SDVWMTBkV1J0K2NHRFBlVVFobW5ERW05dmxEZzA2cUpZ?= =?utf-8?B?R3dnVndoU05RUldhajU0NzVYV2tLL2RJSksyZi90YUNIYjdFRHZJUytMVTlq?= =?utf-8?B?NmhFZ2ZlSXd0Vi9mOXdoQ21FdjhXRE9ScEo3Vml3TlV5L09VMFcwbm11VmRS?= =?utf-8?B?RTZqdjhZb0NZTUxuUHpLbHFPc2lydDEwMmtPNnRSWXR0MEprZktmcHRXbnZ4?= =?utf-8?B?cWpqZkNhMHJTTzJrNk93UjE0bWUrRFZSalp5LzJOVXUyUG53enA0SldlYU1H?= =?utf-8?B?YmhEMmE3WlBVaEpKVHhKa1JqYXZKWkxDbURZbWh1SjY5QUREZ0w2Wk9YZ00r?= =?utf-8?B?VlJQWDZhditYYmRqck0wL084UHppVm56Z1RKeDVEdnJjOVc5bDFuS2EyQmEx?= =?utf-8?B?MS9IelBOYks3M1lJQzkvVnBIbHdkVlFnbWgyL3cvSmVORzJYODlvWHhKeDJ3?= =?utf-8?B?RVU0bHp4SkhnQXR3ZFRpc2VGVUNDZk1NQkVHdkdEdkRDYVVadlBVa2pNVkNV?= =?utf-8?B?RlNiTTBzbjlLa1pJb1VoUzUxNVY5Y2dyKzFnWHBjOENnYW9YMDBoVGNsLzE1?= =?utf-8?B?SnQwSlZTYXVBMHNXZWU1YlZ6NzhxR1pldTg1bnRkMm5iT0JyeDdieUoxZ1Rv?= =?utf-8?B?SFlxT0NqN0dFOFBUdXlucDZLRTdpZU1WUUswYUVpc2lUUmpMbzE3cUpWT3Bq?= =?utf-8?B?N2g2QkdDS3lCK0tTamJITjZraitZdXp6NFBwSTdVdUNGdDFLSWdJM3R4ZHhC?= =?utf-8?B?ODczN3dlbFRBLzZPOWtGVFRIanNBRzJOTlZiYWwzMWlsWGMycHpzR1NrZW1E?= =?utf-8?B?S2p5anFab2hiMk1PTmZpdmlzMXgwQzNmdGdsS3g3dnA1a3luVlppc29YQmJr?= =?utf-8?B?RUNycEd4Mm80UUloaDlpQXV1ODFwQmNGSU1vTmdoa1NXeUUrWGwrbFNaZURJ?= =?utf-8?B?Mmc5UndjRVp4b2VhdDZBYXpOMlJkOXpZSUZGL2ZqVkhBN0hnK0gzTmJLSy9n?= =?utf-8?B?VEV1Mlp4UUhqQWNvdzRkM2hwTW1SUkxpbHZKTFdDRGFIalprSm9sbUxKdnhU?= =?utf-8?B?NmFFLzlQdG5JL3RFR2VONnpmbXQ2WE5sLzJlQ21RblU5RUptUHNwVmpZMVFy?= =?utf-8?B?eUIzWDRYRTJGY3VOZWgybFgvU0F4WkYrLzV3cHNiWnhNNWliQk0vaEdwM1B1?= =?utf-8?Q?eqOeBLK7QzkyXxRtGNbhv6d+sL8mvjdZqxvKX+k?= MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AM9PR08MB7103 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: Jianyong.Wu@arm.com X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB5EUR03FT043.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: f65bef50-748c-4c5a-2efd-08d920b5b871 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: NbVl8CmrbaMvttKotEWX1fPPfPEX7pYOTWTLgyPmnG58PrEkpSPJUWc4p29cSaV6f52PxSY2aC6ASZW9u58bVuzJpPVbG+DCGvBo8gsIir21PpPQEC1WGpnFboNw7o627bLYfOPlruf0HHBfeoojwc+3PVaFSAegeduBA5YI17bUcPBxVFG/eyaIZmEPG7v22P3c8N+bbJLK3O4iNSQdMbxYxvwQtvl+uXHJWlmHilwbfzPcNhYJA44t1Za56RH0UZ8so+ioW020O1538OIKg0rGBTClmprUbbNEdyJ6ldWorlnC9soEpL/lSyyCh3mzsoP2ZhUKlmLNvvMhu7K7Ilti9Xsso5ihr5xqwwCKYt3BukkSSWazJL4AxSdMTVhbioV4BPLikmWL2oeEZI/aAjDLMhbZgc/Q/u/fTeSZl4bW4zNMIORgc+00WE4IsGJfacVbjxR/9Ww7m5m0qw+XLksAuqhxmWIdQJUSjJm1xjajI7UaeRFZrt+pX7u+9n55uSm3Go529z3gTwDujrZoA4UT3El3mfdfxKsWuPDL7/Kf9+ikAnWyb+1ks5g2P+2UcmV3gb/L4io1AZr9IkG64pTtjWdcyT0Za2ZhijdB8yJq8iSO+7Hk0bWCAIZ+Nkhk6xYRgDY+YUVIycnnwKd5Um3uGBxMP92YKr0jf9zmPkg= 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)(136003)(376002)(346002)(396003)(39850400004)(36840700001)(46966006)(47076005)(30864003)(478600001)(9686003)(70586007)(52536014)(33656002)(54906003)(2906002)(86362001)(36860700001)(70206006)(55016002)(82740400003)(336012)(356005)(83380400001)(8676002)(8936002)(5660300002)(81166007)(110136005)(53546011)(4326008)(186003)(7696005)(82310400003)(26005)(316002)(6506007);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 27 May 2021 02:18:42.3535 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 59e55b3b-5010-450f-98c0-08d920b5bf7f 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: DB5EUR03FT043.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: PA4PR08MB6112 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgU2FtaSwNCg0KPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiBGcm9tOiBTYW1pIE11 amF3YXIgPFNhbWkuTXVqYXdhckBhcm0uY29tPg0KPiBTZW50OiBXZWRuZXNkYXksIE1heSAxOSwg MjAyMSA0OjIxIEFNDQo+IFRvOiBKaWFueW9uZyBXdSA8SmlhbnlvbmcuV3VAYXJtLmNvbT47IGRl dmVsQGVkazIuZ3JvdXBzLmlvOw0KPiBsZXJzZWtAcmVkaGF0LmNvbTsgYXJkYit0aWFub2NvcmVA a2VybmVsLm9yZw0KPiBDYzogaGFvLmEud3VAaW50ZWwuY29tOyBKdXN0aW4gSGUgPEp1c3Rpbi5I ZUBhcm0uY29tPjsgTGVpZiBMaW5kaG9sbQ0KPiA8bGVpZkBudXZpYWluYy5jb20+OyBuZCA8bmRA YXJtLmNvbT4NCj4gU3ViamVjdDogUmU6IFtQQVRDSCB2MiAxLzVdIEFybVZpcnRQa2c6IExpYnJh cnk6IE1lbW9yeSBpbml0aWFsaXphdGlvbiBmb3INCj4gQ2xvdWQgSHlwZXJ2aXNvcg0KPiANCj4g SGkgSmlhbnlvbiwNCj4gDQo+IFRoYW5rIHlvdSBmb3IgdGhpcyBwYXRjaC4NCj4gDQo+IFBsZWFz ZSBmaW5kIG15IHJlc3BvbnNlIGlubGluZSBtYXJrZWQgW1NBTUldLg0KPiANCj4gUmVnYXJkcywN Cj4gDQo+IFNhbWkgTXVqYXdhcg0KPiANCj4gT24gMTcvMDUvMjAyMSAwNzo1MCBBTSwgSmlhbnlv bmcgV3Ugd3JvdGU6DQo+ID4gQ2xvdWQgSHlwZXJ2aXNvciBpcyBrdm0gYmFzZWQgVk1NIGltcGxl bWVudGVkIGluIHJ1c3QuDQo+ID4NCj4gPiBUaGlzIGxpYnJhcnkgcG9wdWxhdGVzIHRoZSBzeXN0 ZW0gbWVtb3J5IG1hcCBmb3IgdGhlIENsb3VkIEh5cGVydmlzb3INCj4gPiB2aXJ0dWFsIHBsYXRm b3JtLg0KPiA+DQo+ID4gQ2M6IExhc3psbyBFcnNlayA8bGVyc2VrQHJlZGhhdC5jb20+DQo+ID4g Q2M6IEFyZCBCaWVzaGV1dmVsIDxhcmRiK3RpYW5vY29yZUBrZXJuZWwub3JnPg0KPiA+IENjOiBM ZWlmIExpbmRob2xtIDxsZWlmQG51dmlhaW5jLmNvbT4NCj4gPiBTaWduZWQtb2ZmLWJ5OiBKaWFu eW9uZyBXdSA8amlhbnlvbmcud3VAYXJtLmNvbT4NCj4gPiAtLS0NCj4gPiAgIC4uLi9DbG91ZEh2 VmlydE1lbUluZm9QZWlMaWIuaW5mICAgICAgICAgICAgICB8ICA0NyArKysrKysrKw0KPiA+ICAg Li4uL0Nsb3VkSHZWaXJ0TWVtSW5mb0xpYi5jICAgICAgICAgICAgICAgICAgIHwgIDk0ICsrKysr KysrKysrKysrKysNCj4gPiAgIC4uLi9DbG91ZEh2VmlydE1lbUluZm9QZWlMaWJDb25zdHJ1Y3Rv ci5jICAgICB8IDEwMA0KPiArKysrKysrKysrKysrKysrKysNCj4gPiAgIDMgZmlsZXMgY2hhbmdl ZCwgMjQxIGluc2VydGlvbnMoKykNCj4gPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiBBcm1WaXJ0 UGtnL0xpYnJhcnkvQ2xvdWRIdlZpcnRNZW1JbmZvTGliL0Nsb3VkSHZWaXJ0TWVtSW5mb1BlaUxp Yi5pbmYNCj4gPiAgIGNyZWF0ZSBtb2RlIDEwMDY0NA0KPiBBcm1WaXJ0UGtnL0xpYnJhcnkvQ2xv dWRIdlZpcnRNZW1JbmZvTGliL0Nsb3VkSHZWaXJ0TWVtSW5mb0xpYi5jDQo+ID4gICBjcmVhdGUg bW9kZSAxMDA2NDQNCj4gPg0KPiBBcm1WaXJ0UGtnL0xpYnJhcnkvQ2xvdWRIdlZpcnRNZW1JbmZv TGliL0Nsb3VkSHZWaXJ0TWVtSW5mb1BlaUxpYkNvbg0KPiBzdA0KPiA+IHJ1Y3Rvci5jDQo+ID4N Cj4gPiBkaWZmIC0tZ2l0DQo+ID4NCj4gYS9Bcm1WaXJ0UGtnL0xpYnJhcnkvQ2xvdWRIdlZpcnRN ZW1JbmZvTGliL0Nsb3VkSHZWaXJ0TWVtSW5mb1BlaUxpYi5pDQo+IG4NCj4gPiBmDQo+ID4NCj4g Yi9Bcm1WaXJ0UGtnL0xpYnJhcnkvQ2xvdWRIdlZpcnRNZW1JbmZvTGliL0Nsb3VkSHZWaXJ0TWVt SW5mb1BlaUxpYi5pDQo+IG4NCj4gPiBmDQo+ID4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPiBp bmRleCAwMDAwMDAwMDAwMDAuLjcxZGJmOWMwNmNjYw0KPiA+IC0tLSAvZGV2L251bGwNCj4gPiAr KysNCj4gYi9Bcm1WaXJ0UGtnL0xpYnJhcnkvQ2xvdWRIdlZpcnRNZW1JbmZvTGliL0Nsb3VkSHZW aXJ0TWVtSW5mb1BlaUxpDQo+ID4gKysrIGIuaW5mDQo+ID4gQEAgLTAsMCArMSw0NyBAQA0KPiA+ ICsjLyogQGZpbGUNCj4gPiArIw0KPiA+ICsjICBDb3B5cmlnaHQgKGMpIDIwMTEtMjAxNSwgQVJN IExpbWl0ZWQuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQo+ID4gKyMgIENvcHlyaWdodCAoYykgMjAx NC0yMDE3LCBMaW5hcm8gTGltaXRlZC4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCj4gPiArIw0KPiA+ ICsjICBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogQlNELTItQ2xhdXNlLVBhdGVudCAjICMqLw0K PiA+ICsNCj4gPiArW0RlZmluZXNdDQo+ID4gKyAgSU5GX1ZFUlNJT04gICAgICAgICAgICAgICAg ICAgID0gMHgwMDAxMDAxQQ0KPiA+ICsgIEJBU0VfTkFNRSAgICAgICAgICAgICAgICAgICAgICA9 IENsaFZpcnRNZW1JbmZvUGVpTGliDQo+ID4gKyAgRklMRV9HVUlEICAgICAgICAgICAgICAgICAg ICAgID0gM0UyOUQ5NDAtMDU5MS1FRTZBLUNBRDQtMjIzQTlDRjU1RTc1DQo+ID4gKyAgTU9EVUxF X1RZUEUgICAgICAgICAgICAgICAgICAgID0gQkFTRQ0KPiA+ICsgIFZFUlNJT05fU1RSSU5HICAg ICAgICAgICAgICAgICA9IDEuMA0KPiA+ICsgIExJQlJBUllfQ0xBU1MgICAgICAgICAgICAgICAg ICA9IEFybVZpcnRNZW1JbmZvTGlifFBFSU0NCj4gPiArICBDT05TVFJVQ1RPUiAgICAgICAgICAg ICAgICAgICAgPSBDbG91ZEh2VmlydE1lbUluZm9QZWlMaWJDb25zdHJ1Y3Rvcg0KPiA+ICsNCj4g PiArW1NvdXJjZXNdDQo+ID4gKyAgQ2xvdWRIdlZpcnRNZW1JbmZvTGliLmMNCj4gPiArICBDbG91 ZEh2VmlydE1lbUluZm9QZWlMaWJDb25zdHJ1Y3Rvci5jDQo+ID4gKw0KPiA+ICtbUGFja2FnZXNd DQo+ID4gKyAgQXJtUGtnL0FybVBrZy5kZWMNCj4gPiArICBBcm1WaXJ0UGtnL0FybVZpcnRQa2cu ZGVjDQo+ID4gKyAgRW1iZWRkZWRQa2cvRW1iZWRkZWRQa2cuZGVjDQo+ID4gKyAgTWRlTW9kdWxl UGtnL01kZU1vZHVsZVBrZy5kZWMNCj4gPiArICBNZGVQa2cvTWRlUGtnLmRlYw0KPiA+ICsNCj4g PiArW0xpYnJhcnlDbGFzc2VzXQ0KPiA+ICsgIEFybUxpYg0KPiA+ICsgIEJhc2VNZW1vcnlMaWIN Cj4gPiArICBEZWJ1Z0xpYg0KPiA+ICsgIEZkdExpYg0KPiA+ICsgIFBjZExpYg0KPiA+ICsgIE1l bW9yeUFsbG9jYXRpb25MaWINCj4gPiArDQo+ID4gK1tQY2RdDQo+ID4gKyAgZ0FybVRva2VuU3Bh Y2VHdWlkLlBjZEZkQmFzZUFkZHJlc3MNCj4gPiArICBnQXJtVG9rZW5TcGFjZUd1aWQuUGNkRnZC YXNlQWRkcmVzcw0KPiA+ICsgIGdBcm1Ub2tlblNwYWNlR3VpZC5QY2RTeXN0ZW1NZW1vcnlCYXNl DQo+ID4gKyAgZ0FybVRva2VuU3BhY2VHdWlkLlBjZFN5c3RlbU1lbW9yeVNpemUNCj4gPiArDQo+ ID4gK1tGaXhlZFBjZF0NCj4gPiArICBnQXJtVG9rZW5TcGFjZUd1aWQuUGNkRmRTaXplDQo+ID4g KyAgZ0FybVRva2VuU3BhY2VHdWlkLlBjZEZ2U2l6ZQ0KPiA+ICsgIGdBcm1WaXJ0VG9rZW5TcGFj ZUd1aWQuUGNkRGV2aWNlVHJlZUluaXRpYWxCYXNlQWRkcmVzcw0KPiA+IGRpZmYgLS1naXQNCj4g PiBhL0FybVZpcnRQa2cvTGlicmFyeS9DbG91ZEh2VmlydE1lbUluZm9MaWIvQ2xvdWRIdlZpcnRN ZW1JbmZvTGliLmMNCj4gPiBiL0FybVZpcnRQa2cvTGlicmFyeS9DbG91ZEh2VmlydE1lbUluZm9M aWIvQ2xvdWRIdlZpcnRNZW1JbmZvTGliLmMNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+ IGluZGV4IDAwMDAwMDAwMDAwMC4uNjlmNGU2YWI2Y2M0DQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ ICsrKw0KPiBiL0FybVZpcnRQa2cvTGlicmFyeS9DbG91ZEh2VmlydE1lbUluZm9MaWIvQ2xvdWRI dlZpcnRNZW1JbmZvTGliLmMNCj4gPiBAQCAtMCwwICsxLDk0IEBADQo+ID4gKy8qKiBAZmlsZQ0K PiA+ICsNCj4gPiArICBDb3B5cmlnaHQgKGMpIDIwMTQtMjAxNywgTGluYXJvIExpbWl0ZWQuIEFs bCByaWdodHMgcmVzZXJ2ZWQuDQo+ID4gKw0KPiA+ICsgIFNQRFgtTGljZW5zZS1JZGVudGlmaWVy OiBCU0QtMi1DbGF1c2UtUGF0ZW50DQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArDQo+ID4gKyNpbmNs dWRlIDxCYXNlLmg+DQo+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L0FybUxpYi5oPg0KPiA+ICsjaW5j bHVkZSA8TGlicmFyeS9CYXNlTWVtb3J5TGliLmg+DQo+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L0Rl YnVnTGliLmg+DQo+ID4gKyNpbmNsdWRlIDxMaWJyYXJ5L01lbW9yeUFsbG9jYXRpb25MaWIuaD4N Cj4gPiArDQo+ID4gKy8vIE51bWJlciBvZiBWaXJ0dWFsIE1lbW9yeSBNYXAgRGVzY3JpcHRvcnMN Cj4gPiArI2RlZmluZSBNQVhfVklSVFVBTF9NRU1PUllfTUFQX0RFU0NSSVBUT1JTICAgICAgICAg IDUNCj4gPiArDQo+ID4gKy8vDQo+ID4gKy8vIG1hY2gtdmlydCdzIGNvcmUgcGVyaXBoZXJhbHMg c3VjaCBhcyB0aGUgVUFSVCwgdGhlIEdJQyBhbmQgdGhlIFJUQw0KPiA+ICthcmUgLy8gYWxsIG1h cHBlZCBpbiB0aGUgJ21pc2NlbGxhbmVvdXMgZGV2aWNlIEkvTycgcmVnaW9uLCB3aGljaCB3ZQ0K PiA+ICtqdXN0IG1hcCAvLyBpbiBpdHMgZW50aXJldHkgcmF0aGVyIHRoYW4gZGV2aWNlIGJ5IGRl dmljZS4gTm90ZSB0aGF0DQo+ID4gK2l0IGRvZXMgbm90IC8vIGNvdmVyIGFueSBvZiB0aGUgTk9S IGZsYXNoIGJhbmtzIG9yIFBDSSByZXNvdXJjZSB3aW5kb3dzLg0KPiA+ICsvLw0KPiA+ICsjZGVm aW5lIE1BQ0hfVklSVF9QRVJJUEhfQkFTRSAgICAgICAweDA4MDAwMDAwDQo+ID4gKyNkZWZpbmUg TUFDSF9WSVJUX1BFUklQSF9TSVpFICAgICAgIFNJWkVfMTI4TUINCj4gPiArDQo+ID4gKy8vDQo+ ID4gKy8vIGluIGNsb3VkLWh5cGVydmlzb3IsIDB4MCB+IDB4ODAwMDAwMCBpcyByZXNlcnZlZCBh cyBub3JtYWwgbWVtb3J5DQo+ID4gK2ZvciBVRUZJIC8vDQo+ID4gKyNkZWZpbmUgQ0xPVURIVl9V RUZJX01FTV9CQVNFICAgICAgIDB4MA0KPiA+ICsjZGVmaW5lIENMT1VESFZfVUVGSV9NRU1fU0la RSAgICAgICAweDA4MDAwMDAwDQo+IFtTQU1JXSBUaGUgYWJvdmUgbWFjcm9zIGFyZSBub3QgdXNl ZCBhbnl3aGVyZS4gQ2FuIHRoZXNlIGJlIHJlbW92ZWQ/DQo+IElmIHNvLCB0aGUgY29kZSBpbiB0 aGlzIHBhdGNoIHdvdWxkIGJlIHZlcnkgc2ltaWxhciB0bw0KPiBBcm1WaXJ0UGtnXExpYnJhcnlc UWVtdVZpcnRNZW1JbmZvTGliLiBUbyBhdm9pZCBjb2RlIGR1cGxpY2F0aW9uLCB3b3VsZA0KPiBp dCBiZSBwb3NzaWJsZSB0byB1c2UgUWVtdVZpcnRNZW1JbmZvUGVpTGliLmluZiBpbnN0ZWFkPw0K PiBbL1NBTUldDQoNClllYWgsIHRoZXNlIDIgbGluZXMgb2YgY29kZSBzaG91bGQgYmUgcmVtb3Zl ZCBhbmQgdGhpcyBmaWxlIGlzIGNvcGllZCBmcm9tIHFlbXUgcGFydC4NCldlIGNoYW5nZWQgQ2xv dWQgSHlwZXJ2aXNvciBhbmQgaXRzIG1lbW9yeSBsYXlvdXQgaXMgdmVyeSBzaW1pbGFyIHdpdGgg cWVtdSBub3cuDQpNYXliZSB3ZSBjYW4gcmV1c2UgdGhlIHFlbXUgY29kZSBmb3Igbm93IGFuZCBy ZWJ1aWxkIGl0IGlmIG5lZWQgaW4gdGhlIGZ1dHVyZSwgYXMgdGhlIENsb3VkIEh5cGVydmlzb3IN CmFyZSBpbiBmYXN0IGRldmVsb3BpbmcuDQoNCnRoYW5rcw0KSmlhbnlvbmcNCg0KPiA+ICsNCj4g PiArLyoqDQo+ID4gKyAgUmV0dXJuIHRoZSBWaXJ0dWFsIE1lbW9yeSBNYXAgb2YgeW91ciBwbGF0 Zm9ybQ0KPiA+ICsNCj4gPiArICBUaGlzIFZpcnR1YWwgTWVtb3J5IE1hcCBpcyB1c2VkIGJ5IE1l bW9yeUluaXRQZWkgTW9kdWxlIHRvDQo+ID4gKyBpbml0aWFsaXplIHRoZSBNTVUgIG9uIHlvdXIg cGxhdGZvcm0uDQo+ID4gKw0KPiA+ICsgIEBwYXJhbVtvdXRdICAgVmlydHVhbE1lbW9yeU1hcCAg ICBBcnJheSBvZg0KPiBBUk1fTUVNT1JZX1JFR0lPTl9ERVNDUklQVE9SDQo+ID4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc2NyaWJpbmcgYSBQaHlzaWNhbC10by1WaXJ0 dWFsIE1lbW9yeQ0KPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBw aW5nLiBUaGlzIGFycmF5IG11c3QgYmUgZW5kZWQgYnkgYQ0KPiA+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB6ZXJvLWZpbGxlZCBlbnRyeS4gVGhlIGFsbG9jYXRlZCBtZW1v cnkNCj4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lsbCBub3QgYmUg ZnJlZWQuDQo+ID4gKw0KPiA+ICsqKi8NCj4gPiArVk9JRA0KPiA+ICtBcm1WaXJ0R2V0TWVtb3J5 TWFwICgNCj4gPiArICBPVVQgQVJNX01FTU9SWV9SRUdJT05fREVTQ1JJUFRPUiAgICoqVmlydHVh bE1lbW9yeU1hcA0KPiA+ICsgICkNCj4gPiArew0KPiA+ICsgIEFSTV9NRU1PUllfUkVHSU9OX0RF U0NSSVBUT1IgICpWaXJ0dWFsTWVtb3J5VGFibGU7DQo+ID4gKw0KPiA+ICsgIEFTU0VSVCAoVmly dHVhbE1lbW9yeU1hcCAhPSBOVUxMKTsNCj4gPiArDQo+ID4gKyAgVmlydHVhbE1lbW9yeVRhYmxl ID0gQWxsb2NhdGVQb29sIChzaXplb2YNCj4gKEFSTV9NRU1PUllfUkVHSU9OX0RFU0NSSVBUT1Ip ICoNCj4gPiArDQo+ID4gKyBNQVhfVklSVFVBTF9NRU1PUllfTUFQX0RFU0NSSVBUT1JTKTsNCj4g PiArDQo+ID4gKyAgaWYgKFZpcnR1YWxNZW1vcnlUYWJsZSA9PSBOVUxMKSB7DQo+ID4gKyAgICBE RUJVRyAoKERFQlVHX0VSUk9SLCAiJWE6IEVycm9yOiBGYWlsZWQgQWxsb2NhdGVQb29sKClcbiIs DQo+IF9fRlVOQ1RJT05fXykpOw0KPiA+ICsgICAgcmV0dXJuOw0KPiA+ICsgIH0NCj4gPiArDQo+ ID4gKyAgLy8gU3lzdGVtIERSQU0NCj4gPiArICBWaXJ0dWFsTWVtb3J5VGFibGVbMF0uUGh5c2lj YWxCYXNlID0gUGNkR2V0NjQNCj4gPiArIChQY2RTeXN0ZW1NZW1vcnlCYXNlKTsgIFZpcnR1YWxN ZW1vcnlUYWJsZVswXS5WaXJ0dWFsQmFzZSAgPQ0KPiBWaXJ0dWFsTWVtb3J5VGFibGVbMF0uUGh5 c2ljYWxCYXNlOw0KPiA+ICsgIFZpcnR1YWxNZW1vcnlUYWJsZVswXS5MZW5ndGggICAgICAgPSBQ Y2RHZXQ2NCAoUGNkU3lzdGVtTWVtb3J5U2l6ZSk7DQo+ID4gKyAgVmlydHVhbE1lbW9yeVRhYmxl WzBdLkF0dHJpYnV0ZXMgICA9DQo+IEFSTV9NRU1PUllfUkVHSU9OX0FUVFJJQlVURV9XUklURV9C QUNLOw0KPiA+ICsNCj4gPiArICBERUJVRyAoKERFQlVHX0lORk8sICIlYTogRHVtcGluZyBTeXN0 ZW0gRFJBTSBNZW1vcnkgTWFwOlxuIg0KPiA+ICsgICAgICAiXHRQaHlzaWNhbEJhc2U6IDB4JWxY XG4iDQo+ID4gKyAgICAgICJcdFZpcnR1YWxCYXNlOiAweCVsWFxuIg0KPiA+ICsgICAgICAiXHRM ZW5ndGg6IDB4JWxYXG4iLA0KPiA+ICsgICAgICBfX0ZVTkNUSU9OX18sDQo+ID4gKyAgICAgIFZp cnR1YWxNZW1vcnlUYWJsZVswXS5QaHlzaWNhbEJhc2UsDQo+ID4gKyAgICAgIFZpcnR1YWxNZW1v cnlUYWJsZVswXS5WaXJ0dWFsQmFzZSwNCj4gPiArICAgICAgVmlydHVhbE1lbW9yeVRhYmxlWzBd Lkxlbmd0aCkpOw0KPiA+ICsNCj4gPiArICAvLyBNZW1vcnkgbWFwcGVkIHBlcmlwaGVyYWxzIChV QVJULCBSVEMsIEdJQywgdmlydGlvLW1taW8sIGV0YykNCj4gPiArIFZpcnR1YWxNZW1vcnlUYWJs ZVsxXS5QaHlzaWNhbEJhc2UgPSBNQUNIX1ZJUlRfUEVSSVBIX0JBU0U7DQo+ID4gKyBWaXJ0dWFs TWVtb3J5VGFibGVbMV0uVmlydHVhbEJhc2UgID0gTUFDSF9WSVJUX1BFUklQSF9CQVNFOw0KPiA+ ICsgIFZpcnR1YWxNZW1vcnlUYWJsZVsxXS5MZW5ndGggICAgICAgPSBNQUNIX1ZJUlRfUEVSSVBI X1NJWkU7DQo+ID4gKyAgVmlydHVhbE1lbW9yeVRhYmxlWzFdLkF0dHJpYnV0ZXMgICA9DQo+IEFS TV9NRU1PUllfUkVHSU9OX0FUVFJJQlVURV9ERVZJQ0U7DQo+ID4gKw0KPiA+ICsgIC8vIE1hcCB0 aGUgRlYgcmVnaW9uIGFzIG5vcm1hbCBleGVjdXRhYmxlIG1lbW9yeQ0KPiA+ICsgVmlydHVhbE1l bW9yeVRhYmxlWzJdLlBoeXNpY2FsQmFzZSA9IFBjZEdldDY0IChQY2RGdkJhc2VBZGRyZXNzKTsN Cj4gPiArIFZpcnR1YWxNZW1vcnlUYWJsZVsyXS5WaXJ0dWFsQmFzZSAgPQ0KPiBWaXJ0dWFsTWVt b3J5VGFibGVbMl0uUGh5c2ljYWxCYXNlOw0KPiA+ICsgIFZpcnR1YWxNZW1vcnlUYWJsZVsyXS5M ZW5ndGggICAgICAgPSBGaXhlZFBjZEdldDMyIChQY2RGdlNpemUpOw0KPiA+ICsgIFZpcnR1YWxN ZW1vcnlUYWJsZVsyXS5BdHRyaWJ1dGVzICAgPQ0KPiBBUk1fTUVNT1JZX1JFR0lPTl9BVFRSSUJV VEVfV1JJVEVfQkFDSzsNCj4gPiArDQo+ID4gKyAgLy8gRW5kIG9mIFRhYmxlDQo+ID4gKyAgWmVy b01lbSAoJlZpcnR1YWxNZW1vcnlUYWJsZVszXSwgc2l6ZW9mDQo+ID4gKyAoQVJNX01FTU9SWV9S RUdJT05fREVTQ1JJUFRPUikpOw0KPiA+ICsNCj4gPiArICAqVmlydHVhbE1lbW9yeU1hcCA9IFZp cnR1YWxNZW1vcnlUYWJsZTsgfQ0KPiA+IGRpZmYgLS1naXQNCj4gPg0KPiBhL0FybVZpcnRQa2cv TGlicmFyeS9DbG91ZEh2VmlydE1lbUluZm9MaWIvQ2xvdWRIdlZpcnRNZW1JbmZvUGVpTGliQw0K PiBvbg0KPiA+IHN0cnVjdG9yLmMNCj4gPg0KPiBiL0FybVZpcnRQa2cvTGlicmFyeS9DbG91ZEh2 VmlydE1lbUluZm9MaWIvQ2xvdWRIdlZpcnRNZW1JbmZvUGVpTGliQw0KPiBvbg0KPiA+IHN0cnVj dG9yLmMNCj4gPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiA+IGluZGV4IDAwMDAwMDAwMDAwMC4u MDYyZGZjZWUxZDY2DQo+ID4gLS0tIC9kZXYvbnVsbA0KPiA+ICsrKw0KPiBiL0FybVZpcnRQa2cv TGlicmFyeS9DbG91ZEh2VmlydE1lbUluZm9MaWIvQ2xvdWRIdlZpcnRNZW1JbmZvUGVpTGkNCj4g PiArKysgYkNvbnN0cnVjdG9yLmMNCj4gPiBAQCAtMCwwICsxLDEwMCBAQA0KPiA+ICsvKiogQGZp bGUNCj4gPiArDQo+ID4gKyAgQ29weXJpZ2h0IChjKSAyMDE0LTIwMTcsIExpbmFybyBMaW1pdGVk LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KPiA+ICsNCj4gPiArICBTUERYLUxpY2Vuc2UtSWRlbnRp ZmllcjogQlNELTItQ2xhdXNlLVBhdGVudA0KPiA+ICsNCj4gPiArKiovDQo+ID4gKw0KPiA+ICsj aW5jbHVkZSA8QmFzZS5oPg0KPiA+ICsjaW5jbHVkZSA8TGlicmFyeS9EZWJ1Z0xpYi5oPg0KPiA+ ICsjaW5jbHVkZSA8TGlicmFyeS9QY2RMaWIuaD4NCj4gPiArI2luY2x1ZGUgPGxpYmZkdC5oPg0K PiA+ICsNCj4gPiArUkVUVVJOX1NUQVRVUw0KPiA+ICtFRklBUEkNCj4gPiArQ2xvdWRIdlZpcnRN ZW1JbmZvUGVpTGliQ29uc3RydWN0b3IgKA0KPiA+ICsgIFZPSUQNCj4gPiArICApDQo+ID4gK3sN Cj4gPiArICBWT0lEICAgICAgICAgICpEZXZpY2VUcmVlQmFzZTsNCj4gPiArICBJTlQzMiAgICAg ICAgIE5vZGUsIFByZXY7DQo+ID4gKyAgVUlOVDY0ICAgICAgICBOZXdCYXNlLCBDdXJCYXNlOw0K PiA+ICsgIFVJTlQ2NCAgICAgICAgTmV3U2l6ZSwgQ3VyU2l6ZTsNCj4gPiArICBDT05TVCBDSEFS OCAgICpUeXBlOw0KPiA+ICsgIElOVDMyICAgICAgICAgTGVuOw0KPiA+ICsgIENPTlNUIFVJTlQ2 NCAgKlJlZ1Byb3A7DQo+ID4gKyAgUkVUVVJOX1NUQVRVUyBQY2RTdGF0dXM7DQo+ID4gKw0KPiA+ ICsgIE5ld0Jhc2UgPSAwOw0KPiA+ICsgIE5ld1NpemUgPSAwOw0KPiA+ICsNCj4gPiArICBEZXZp Y2VUcmVlQmFzZSA9IChWT0lEICopKFVJTlROKVBjZEdldDY0DQo+ID4gKyAoUGNkRGV2aWNlVHJl ZUluaXRpYWxCYXNlQWRkcmVzcyk7DQo+ID4gKyAgQVNTRVJUIChEZXZpY2VUcmVlQmFzZSAhPSBO VUxMKTsNCj4gPiArDQo+ID4gKyAgLy8NCj4gPiArICAvLyBNYWtlIHN1cmUgd2UgaGF2ZSBhIHZh bGlkIGRldmljZSB0cmVlIGJsb2IgIC8vICBBU1NFUlQNCj4gPiArIChmZHRfY2hlY2tfaGVhZGVy IChEZXZpY2VUcmVlQmFzZSkgPT0gMCk7DQo+ID4gKw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gTG9v ayBmb3IgdGhlIGxvd2VzdCBtZW1vcnkgbm9kZQ0KPiA+ICsgIC8vDQo+ID4gKyAgZm9yIChQcmV2 ID0gMDs7IFByZXYgPSBOb2RlKSB7DQo+ID4gKyAgICBOb2RlID0gZmR0X25leHRfbm9kZSAoRGV2 aWNlVHJlZUJhc2UsIFByZXYsIE5VTEwpOw0KPiA+ICsgICAgaWYgKE5vZGUgPCAwKSB7DQo+ID4g KyAgICAgIGJyZWFrOw0KPiA+ICsgICAgfQ0KPiA+ICsNCj4gPiArICAgIC8vDQo+ID4gKyAgICAv LyBDaGVjayBmb3IgbWVtb3J5IG5vZGUNCj4gPiArICAgIC8vDQo+ID4gKyAgICBUeXBlID0gZmR0 X2dldHByb3AgKERldmljZVRyZWVCYXNlLCBOb2RlLCAiZGV2aWNlX3R5cGUiLCAmTGVuKTsNCj4g PiArICAgIGlmIChUeXBlICYmIEFzY2lpU3RybkNtcCAoVHlwZSwgIm1lbW9yeSIsIExlbikgPT0g MCkgew0KPiA+ICsgICAgICAvLw0KPiA+ICsgICAgICAvLyBHZXQgdGhlICdyZWcnIHByb3BlcnR5 IG9mIHRoaXMgbm9kZS4gRm9yIG5vdywgd2Ugd2lsbCBhc3N1bWUNCj4gPiArICAgICAgLy8gdHdv IDggYnl0ZSBxdWFudGl0aWVzIGZvciBiYXNlIGFuZCBzaXplLCByZXNwZWN0aXZlbHkuDQo+ID4g KyAgICAgIC8vDQo+ID4gKyAgICAgIFJlZ1Byb3AgPSBmZHRfZ2V0cHJvcCAoRGV2aWNlVHJlZUJh c2UsIE5vZGUsICJyZWciLCAmTGVuKTsNCj4gPiArICAgICAgaWYgKFJlZ1Byb3AgIT0gMCAmJiBM ZW4gPT0gKDIgKiBzaXplb2YgKFVJTlQ2NCkpKSB7DQo+ID4gKw0KPiA+ICsgICAgICAgIEN1ckJh c2UgPSBmZHQ2NF90b19jcHUgKFJlYWRVbmFsaWduZWQ2NCAoUmVnUHJvcCkpOw0KPiA+ICsgICAg ICAgIEN1clNpemUgPSBmZHQ2NF90b19jcHUgKFJlYWRVbmFsaWduZWQ2NCAoUmVnUHJvcCArIDEp KTsNCj4gPiArDQo+ID4gKyAgICAgICAgREVCVUcgKChERUJVR19JTkZPLCAiJWE6IFN5c3RlbSBS QU0gQCAweCVseCAtIDB4JWx4XG4iLA0KPiA+ICsgICAgICAgICAgX19GVU5DVElPTl9fLCBDdXJC YXNlLCBDdXJCYXNlICsgQ3VyU2l6ZSAtIDEpKTsNCj4gPiArDQo+ID4gKyAgICAgICAgaWYgKE5l d0Jhc2UgPiBDdXJCYXNlIHx8IE5ld0Jhc2UgPT0gMCkgew0KPiA+ICsgICAgICAgICAgTmV3QmFz ZSA9IEN1ckJhc2U7DQo+ID4gKyAgICAgICAgICBOZXdTaXplID0gQ3VyU2l6ZTsNCj4gPiArICAg ICAgICB9DQo+ID4gKyAgICAgIH0gZWxzZSB7DQo+ID4gKyAgICAgICAgREVCVUcgKChERUJVR19F UlJPUiwgIiVhOiBGYWlsZWQgdG8gcGFyc2UgRkRUIG1lbW9yeSBub2RlXG4iLA0KPiA+ICsgICAg ICAgICAgX19GVU5DVElPTl9fKSk7DQo+ID4gKyAgICAgIH0NCj4gPiArICAgIH0NCj4gPiArICB9 DQo+ID4gKw0KPiA+ICsgIC8vDQo+ID4gKyAgLy8gTWFrZSBzdXJlIHRoZSBzdGFydCBvZiBEUkFN IG1hdGNoZXMgb3VyIGV4cGVjdGF0aW9uICAvLyAgQVNTRVJUDQo+ID4gKyAoRml4ZWRQY2RHZXQ2 NCAoUGNkU3lzdGVtTWVtb3J5QmFzZSkgPT0gTmV3QmFzZSk7ICBQY2RTdGF0dXMgPQ0KPiA+ICsg UGNkU2V0NjRTIChQY2RTeXN0ZW1NZW1vcnlTaXplLCBOZXdTaXplKTsgIEFTU0VSVF9SRVRVUk5f RVJST1INCj4gPiArIChQY2RTdGF0dXMpOw0KPiA+ICsNCj4gPiArICAvLw0KPiA+ICsgIC8vIFdl IG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIG1hY2hpbmUgd2UgYXJlIHJ1bm5pbmcgb24gaGFz IGF0DQo+ID4gKyBsZWFzdCAgLy8gMTI4IE1CIG9mIG1lbW9yeSBjb25maWd1cmVkLCBhbmQgaXMg Y3VycmVudGx5IGV4ZWN1dGluZw0KPiA+ICsgdGhpcyBiaW5hcnkgZnJvbSAgLy8gTk9SIGZsYXNo LiBUaGlzIHByZXZlbnRzIGEgZGV2aWNlIHRyZWUgaW1hZ2UgaW4NCj4gPiArIERSQU0gZnJvbSBn ZXR0aW5nICAvLyBjbG9iYmVyZWQgd2hlbiBvdXIgY2FsbGVyIGluc3RhbGxzIHBlcm1hbmVudA0K PiA+ICsgUEVJIFJBTSwgYmVmb3JlIHdlIGhhdmUgYSAgLy8gY2hhbmNlIG9mIG1hcmtpbmcgaXRz IGxvY2F0aW9uIGFzDQo+ID4gKyByZXNlcnZlZCBvciBjb3B5IGl0IHRvIGEgZnJlc2hseSAgLy8g YWxsb2NhdGVkIGJsb2NrIGluIHRoZSBwZXJtYW5lbnQgUEVJDQo+IFJBTSBpbiB0aGUgcGxhdGZv cm0gUEVJTS4NCj4gPiArICAvLw0KPiA+ICsgIEFTU0VSVCAoTmV3U2l6ZSA+PSBTSVpFXzEyOE1C KTsNCj4gPiArICBBU1NFUlQgKA0KPiA+ICsgICAgKCgoVUlOVDY0KVBjZEdldDY0IChQY2RGZEJh c2VBZGRyZXNzKSArDQo+ID4gKyAgICAgIChVSU5UNjQpUGNkR2V0MzIgKFBjZEZkU2l6ZSkpIDw9 IE5ld0Jhc2UpIHx8DQo+ID4gKyAgICAoKFVJTlQ2NClQY2RHZXQ2NCAoUGNkRmRCYXNlQWRkcmVz cykgPj0gKE5ld0Jhc2UgKyBOZXdTaXplKSkpOw0KPiA+ICsNCj4gPiArICByZXR1cm4gUkVUVVJO X1NVQ0NFU1M7DQo+ID4gK30NCg0K