From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from EUR04-VI1-obe.outbound.protection.outlook.com (EUR04-VI1-obe.outbound.protection.outlook.com [40.107.8.71]) by mx.groups.io with SMTP id smtpd.web12.1854.1628011828966487080 for ; Tue, 03 Aug 2021 10:30:30 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@armh.onmicrosoft.com header.s=selector2-armh-onmicrosoft-com header.b=h48MPuLd; spf=pass (domain: arm.com, ip: 40.107.8.71, mailfrom: sayanta.pattanayak@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=UWwHwfONgw6o0SmyvOI3C4pLGDJdWXZ4vWEq6ZErtEQ=; b=h48MPuLdMj4FdGgHaGqVzhVQbJD3x4D8tEkOT64N4wAfurljgU8s5pQDrFWooT41StsOdnfVL3irZMyIt1XHnegdI+4csQt5cNjAngZz8rau4A5AA0W/I2JY6B0QIMANVM/Fr4uabN7dcGXbjmMghsayjnTrbmbwNSv4fG2mw/o= Received: from DU2PR04CA0235.eurprd04.prod.outlook.com (2603:10a6:10:2b1::30) by DBBPR08MB4647.eurprd08.prod.outlook.com (2603:10a6:10:f1::18) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4373.23; Tue, 3 Aug 2021 17:30:25 +0000 Received: from DB5EUR03FT019.eop-EUR03.prod.protection.outlook.com (2603:10a6:10:2b1:cafe::a) by DU2PR04CA0235.outlook.office365.com (2603:10a6:10:2b1::30) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4373.18 via Frontend Transport; Tue, 3 Aug 2021 17:30:25 +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 DB5EUR03FT019.mail.protection.outlook.com (10.152.20.163) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4373.18 via Frontend Transport; Tue, 3 Aug 2021 17:30:24 +0000 Received: ("Tessian outbound 077ab11054bf:v101"); Tue, 03 Aug 2021 17:30:24 +0000 X-CR-MTA-TID: 64aa7808 Received: from 6e7e501d5ca2.2 by 64aa7808-outbound-1.mta.getcheckrecipient.com id D9CA19C0-B87A-40ED-903D-ACD053A8E3B5.1; Tue, 03 Aug 2021 17:30:18 +0000 Received: from EUR04-DB3-obe.outbound.protection.outlook.com by 64aa7808-outbound-1.mta.getcheckrecipient.com with ESMTPS id 6e7e501d5ca2.2 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384); Tue, 03 Aug 2021 17:30:18 +0000 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=eSwXGoqfJFhsnskA9GlFUyoCEY3+ivh3CkgLhiDkWv7CRaA1sAv6wRrtMXwLh89C1HVSFrVHMTLWEMYWqBumkl3Tu6Q/428NvnPi495B+Y2AHPLpZs5cG8y/u9n0vBYXA26xV0yyVHyYCi0lIaCCL6KWSlUfiRpyVjCbPlNhCoLkAWlEOU6sS0qk/JzrTvN/nrrfbEt+JJhnkOnvQER20IuEIIFbPWkQH2Gr8//2IHn3hRvwi1D8lWDVXYw2MFJKRO60FUlJ0oqKcSYJ+qdVyFQFcwCbCRuuc48Rskp+qUUE1KK23FDpKhK6XzB3sq0XHKmF8S/o4uLg+gPGB/ODDw== 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=UWwHwfONgw6o0SmyvOI3C4pLGDJdWXZ4vWEq6ZErtEQ=; b=h6ZRANwBC4VJeBGbuNKuTd4FxDzQGvWe6sa20sQL5oOnT3byKXr/P84OIa3WrF/N1dG9vTF5g/GO2Mv+SsyF1nsJ3o5/mDAlKOJxRfrngcHjZhykUlfmHwLftK2ZW/FQDMhTOA4KsJf4UP28g2uwxwyv/+LWdemP9ubxJg3M8LiDcgnNxorkZg6RUFV3RcoL0sEm0VcMKENmOqc7dw8vfgum+w2wiIOkzpq5CMKE7zXGTzE/eFEfacVbN+cM8SpXev7PareYKpqLxYlPBES2I2UGF62kv4sQM0Fx6gPBhyw3LajVoPMlsWrKdoZmEUVj6+uwG1hg+e5QYs1wohumJQ== 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=UWwHwfONgw6o0SmyvOI3C4pLGDJdWXZ4vWEq6ZErtEQ=; b=h48MPuLdMj4FdGgHaGqVzhVQbJD3x4D8tEkOT64N4wAfurljgU8s5pQDrFWooT41StsOdnfVL3irZMyIt1XHnegdI+4csQt5cNjAngZz8rau4A5AA0W/I2JY6B0QIMANVM/Fr4uabN7dcGXbjmMghsayjnTrbmbwNSv4fG2mw/o= Received: from VI1PR08MB4477.eurprd08.prod.outlook.com (2603:10a6:803:fb::22) by VI1PR08MB2975.eurprd08.prod.outlook.com (2603:10a6:803:44::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4373.25; Tue, 3 Aug 2021 17:30:07 +0000 Received: from VI1PR08MB4477.eurprd08.prod.outlook.com ([fe80::880a:c057:37d4:2774]) by VI1PR08MB4477.eurprd08.prod.outlook.com ([fe80::880a:c057:37d4:2774%4]) with mapi id 15.20.4373.026; Tue, 3 Aug 2021 17:30:06 +0000 From: "Sayanta Pattanayak" To: Ard Biesheuvel CC: edk2-devel-groups-io , Sami Mujawar , Achin Gupta , Bret Barkelew , Jiewen Yao , Andrew Fish Subject: Re: [edk2][PATCH v1 1/1] StandaloneMmPkg: add support to populate StMM boot data from device tree Thread-Topic: [edk2][PATCH v1 1/1] StandaloneMmPkg: add support to populate StMM boot data from device tree Thread-Index: AQHXhvNxzbyz8H2+MkqaRM/1OqrcEate2VuAgAMw5fA= Date: Tue, 3 Aug 2021 17:30:05 +0000 Message-ID: References: <20210730173510.24235-1-sayanta.pattanayak@arm.com> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-ts-tracking-id: 61D29DC737F2B741A599807EFFC8710A.0 x-checkrecipientchecked: true Authentication-Results-Original: kernel.org; dkim=none (message not signed) header.d=none;kernel.org; dmarc=none action=none header.from=arm.com; x-ms-publictraffictype: Email X-MS-Office365-Filtering-Correlation-Id: 6ff33e85-05ac-4f91-6fed-08d956a460c8 x-ms-traffictypediagnostic: VI1PR08MB2975:|DBBPR08MB4647: x-ms-exchange-transport-forked: True X-Microsoft-Antispam-PRVS: x-checkrecipientrouted: true nodisclaimer: true x-ms-oob-tlc-oobclassifiers: OLM:10000;OLM:10000; X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam-Untrusted: BCL:0; X-Microsoft-Antispam-Message-Info-Original: RoQQRqatXfwdLObhvq83lSfpgYVGGqcq81Misaoa6RkGsVnVGS7RAkgWweFgS2WvpBRR8Hb/wkd/NM0wvgRl3bjzZjMS8supgWqUHIi02OCiWpoQC2OTYrIJpiRKXeI1XOtXuN9EetzVs0iwbaGYOTPiLHvAj4ce6ON/QXGDhicAf+nGhXCAFet3DK64H4rbg1kQQxffDzQTqzFflc0z5tgOgeSI3l5N9JjkkFRaxiuciVGAKHJ4A4tjP+SN2uGR+IE06CaYqDi2s6R4h+93Y0XSEwzjRt35uxO3ElmwiWTQCC8oNY1LU/zlOUZH22u/QBnGjR+LZ/rEIjk0UAbqOAikN9rbfvMG97xFV0u0GjiMadHkmceZEbO7PIByODY3ZE6oIp4aiwFfkvdx8dYDRbcgmXXA09hifdHx6O2SP906b0uaorUlRIX4Zaiye93WK/R3HJLV/l3yaoMg/c3ax27oSrs/nHkI9py4r3rddwyo1TUVecJg9No3a+4SLYmbOMF5XDVI4p6PFokWXkLARM6iRe1/lmMTL9tSa9+fFPOc03K7vQMjF4LyAtxK8KLEZdWfIugvE9OfTMdjZ9X0nPbBFMS9qv8sn92GXfQWhoYA7NTT7BDm0GXM3uPP7YvMpzlwvQOT9jSKs2CKSNYXtqBwAR5Ox+Kf42C+TwsBj6mwt9yFKwr8SpQeo1qqILFdTHz5l86Gi6Qe72fG2Hh+9/Mp9Rn71oKjLh9RNfM6CfpTqjrCUn3U0MqrvxO/2oOCNip69K9b4wKcu2YLh7IzXw== X-Forefront-Antispam-Report-Untrusted: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:VI1PR08MB4477.eurprd08.prod.outlook.com;PTR:;CAT:NONE;SFS:(6029001)(4636009)(366004)(38070700005)(2906002)(83380400001)(316002)(19627235002)(5660300002)(66556008)(9686003)(66946007)(8936002)(55016002)(186003)(966005)(66446008)(64756008)(66476007)(52536014)(8676002)(508600001)(54906003)(71200400001)(55236004)(4326008)(86362001)(76116006)(30864003)(7696005)(26005)(6506007)(33656002)(6916009)(122000001)(38100700002);DIR:OUT;SFP:1101; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?MThURWFSZDJZWmFQUHlPbDFHTXJkQWlwbm4yNjY1eXRrVUFnZnpRSW5jV3Vm?= =?utf-8?B?QjBhaUlzOUQ2TmxncXc2dERxWDd5ZnUzTDVPRGhCUy9JY1RWZ1crTzg2aGs3?= =?utf-8?B?dGlta0k4WTJlQktTWmRXNS9NL2JYK2IvNCtPV2JFbVJRZXlycnkrZEMzRDBl?= =?utf-8?B?SmFtdjdlYXRkenRvZEthSnF3RXlOS2dmN0FhS1Ntb3hyOEtMOHJlZDRtdmpQ?= =?utf-8?B?Z0ppVk1pMFJScVFQZHlyUjVUelEyMjBFcDk0bTRobUw4OWJ4amttTkgyaEVt?= =?utf-8?B?Ky95R0lDZXdUU3U1Zk5XNG1hcTNyTVZlVGJ4T3ZONExTZ0VaSWRIQVAvRUFU?= =?utf-8?B?MDRXZ1BOa2JPcU5ZaGRLTVM2SzNjcUp1ajZ6RFF4VDhvYm5qdEVSSWNwVnk4?= =?utf-8?B?enBDSDRkQWlzZkNUbXR1d2xwZ2lmUklLd2k3aHFsWVRNa1R6ajkxcUZJNXN3?= =?utf-8?B?SDkxelRqMG5lU1hoeXJSV2M5NDF0RUkvbnFhS1FyaEN6SUZSblg2a1p5Ylht?= =?utf-8?B?cGk2OGR4bVdhM3d4UHROVzV4Vm00UkNZb1lyYXRxbjdtbitocFpubmNJbXpE?= =?utf-8?B?YXNweTkxMmpxVDE2dTRNN1ZEVzhzRi9CVlBqQmZpc3dXdnEzS2F4RFFYaEF0?= =?utf-8?B?TGJ0TW0rRlJiVXRsY01hUHBaV0Q3U0ZRVHVuUEt4dDltV3kvZVEvb2RPNGFk?= =?utf-8?B?SHJUL0xPNmFqTURxdmJ2OWI3bE5sNGJKWUtsUkRHU2RDWjk1SjlPbmFGYzha?= =?utf-8?B?ai9GUEhyZU1ZR1BkVXhpOWZqQ0xqdEhkSXBnTHdwajJqWjdTY3JkR2RCZVZj?= =?utf-8?B?dzVHWGtnaVo1QVQ0V0RlY2p6QjBMSVc4YUtVOGI0TGlwbUMrUW1HZkRnc1cr?= =?utf-8?B?eTVndythQWxJSEY0Njd6S3UyRkpSRFZ2eHd0WXM3bzJMV3pFRlg3MFBpYnIw?= =?utf-8?B?RjVVcHpFRGVOUnFBR1Q1Y2lBOHd2MGUvc2VWeUloT2ZMblNOdjN4UURDMzd6?= =?utf-8?B?OWwrY0F5UXl4Zm1YbHo4YUtlZHppeU5aV1NyeWxSdVJtbkJYUXh6MWt3N2VB?= =?utf-8?B?U3dtaDZGWFN1V2FxUmI0UDF6Y2ttdGtvUmxobEw2amVQN2RRTjg0eElFNHp1?= =?utf-8?B?UFFKTVdhYitIb0hmK1Vqd0syTm1Vbm52QUg3cDhHNjBTL0JNc1NvVmJUaElE?= =?utf-8?B?b2NSdTVsVGc4ZzI5MVBNajh2WnhDNkl0enlFQ3hEWjJjNG9jc1lJZ3lPUzNH?= =?utf-8?B?K09vL1dSbUlVSkROZnhPQkpnMkFQejRUUk9hVzVYVEtNMnQ4MmV0TUp1Q2tC?= =?utf-8?B?aW5kR3NpcW1RN25OQmhkTWZRN2V0RDcweEpmcTFadlFCZjh0WjRTd3VUcWNy?= =?utf-8?B?MjF5NEpwN2dzRkJ4VUE3aEZhWFdOWjVVQ3lCWEZQdTJaMU42Q05vWlFFemdn?= =?utf-8?B?bmw0cGZVdHdQVDNoOFN2VTE3T1BkcndWWTU4QkdUdW5yQ0wrc2FmMVZUTzBY?= =?utf-8?B?RGp5Q0tXbWNqVnpTekhnYlBXZUV6ZEZOTGNFUGxHYkZ4S0srbmR3cGREcDhG?= =?utf-8?B?anpPQ0M4NXpOUzFKbi9uQmY3Q2ZrYm0zYWhQUzFZMTRUdFV3dTlYY245bXFW?= =?utf-8?B?OStoMzlHTTY2Mk1pZ2VoamNmKzBPUTJzUFg1T1haMHFLUlNSeVpWOGNNa01Z?= =?utf-8?B?dzk5WWh0TFZnbTZidmpoRFBYQWM4dnJpVDlRZjFaeksrOUYwd3dvNEZMaFhv?= =?utf-8?Q?03zbQGwOvjlcJtJUDk=3D?= MIME-Version: 1.0 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VI1PR08MB2975 Original-Authentication-Results: kernel.org; dkim=none (message not signed) header.d=none;kernel.org; dmarc=none action=none header.from=arm.com; Return-Path: Sayanta.Pattanayak@arm.com X-EOPAttributedMessage: 0 X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB5EUR03FT019.eop-EUR03.prod.protection.outlook.com X-MS-Office365-Filtering-Correlation-Id-Prvs: 6a39c762-96a1-4138-7b89-08d956a4559d X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: UPIw9/33oEqp5FUo3pTLjrGaDYvNWSvYIkLViNnb8O/TaEyitsVgd0RHgbmn/ds42oXYvLbHQD69yEpBLDYafLFNHEQhE1DFWCsapslVS/VhNCBa5bELTlRvBeCl437nP62F8KTOLVWoIkWOv45yQIbcBQjUhiM7oPH4NXSNMWcNyOsTC/Ad2WHwYuZ1NCF261Fw8IdVM/sCvxADtR28NeDHI3EynU+2FCDTnJnyzhJTiZVTv1B/j544ZG/K5usjOrrx/7OWaiLxPLRsmyF8GydUjNkMUz9ABEDTm8WLHeMn20UinOtq3Qwpup7bT/+GTX6IAcznhSZ2h14fIBo+THiQYzI8SC1KAOz7VeKBxratfLw8IwlPo8rrqXHW4eYlU/fpajUMJcX+JJA9NTF24y3DYVYqtUZiRzTlwLMBKdwU9XV6E6I60WT7SOoMV4GD0Vp3D1vuSVvGyyo/WIOb37PP25oVSORNVmjW2QPF3EylN6eGfCw8jt37sDbtRahGBNToiyJADo71ksVKs25YvF4IVIN1CvxB03+ld87d7VeW8JdYj6il5bbkpNUMlbUHMPUQM7HoAGO29P/kLT/KfcW7KbSHCarSn5aCLVXf/9FQTg7or2W0FRHYc3BkjU+MRK7GGxT7KAcwU2DHZDRTmz/E5VFirGOwrMWDmYu5SJaqpdcoYTkr8drf++uZpgD8GnboqYeZmJX4U8zKurPhykN0D47ePnFrjC/zisHUC/7CV3KE8mc+ToTEzGBRY4YasT6Vp6jibs88HLHeWLeOWHQAzo19kDTHH3eQ7fywRAA= 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:(6029001)(4636009)(376002)(39850400004)(346002)(396003)(136003)(46966006)(36840700001)(19627235002)(966005)(478600001)(33656002)(52536014)(7696005)(54906003)(36860700001)(45080400002)(86362001)(47076005)(70586007)(70206006)(316002)(81166007)(2906002)(6506007)(356005)(186003)(82310400003)(8936002)(8676002)(26005)(4326008)(55016002)(83380400001)(9686003)(30864003)(107886003)(6862004)(336012)(5660300002)(82740400003);DIR:OUT;SFP:1101; X-OriginatorOrg: arm.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Aug 2021 17:30:24.7939 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: 6ff33e85-05ac-4f91-6fed-08d956a460c8 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: DB5EUR03FT019.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DBBPR08MB4647 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGksDQoNClBsZWFzZSBmaW5kIG15IHJlc3BvbnNlIGlubGluZS4NCg0KUmVnYXJkcywNClNheWFu dGENCg0KPi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+RnJvbTogQXJkIEJpZXNoZXV2ZWwg PGFyZGJAa2VybmVsLm9yZz4NCj5TZW50OiBTdW5kYXksIEF1Z3VzdCAxLCAyMDIxIDEwOjA4IFBN DQo+VG86IFNheWFudGEgUGF0dGFuYXlhayA8U2F5YW50YS5QYXR0YW5heWFrQGFybS5jb20+DQo+ Q2M6IGVkazItZGV2ZWwtZ3JvdXBzLWlvIDxkZXZlbEBlZGsyLmdyb3Vwcy5pbz47IFNhbWkgTXVq YXdhcg0KPjxTYW1pLk11amF3YXJAYXJtLmNvbT47IEFjaGluIEd1cHRhIDxBY2hpbi5HdXB0YUBh cm0uY29tPjsgQnJldA0KPkJhcmtlbGV3IDxCcmV0LkJhcmtlbGV3QG1pY3Jvc29mdC5jb20+OyBK aWV3ZW4gWWFvDQo+PGppZXdlbi55YW9AaW50ZWwuY29tPjsgQW5kcmV3IEZpc2ggPGFmaXNoQGFw cGxlLmNvbT4NCj5TdWJqZWN0OiBSZTogW2VkazJdW1BBVENIIHYxIDEvMV0gU3RhbmRhbG9uZU1t UGtnOiBhZGQgc3VwcG9ydCB0bw0KPnBvcHVsYXRlIFN0TU0gYm9vdCBkYXRhIGZyb20gZGV2aWNl IHRyZWUNCj4NCj4oY29ycmVjdCBBY2hpbidzIGVtYWlsIGFkZHJlc3MsIGNjIG90aGVyIHJlcGx5 ZXJzKQ0KPg0KPk9uIFN1biwgMSBBdWcgMjAyMSBhdCAxODozNiwgQXJkIEJpZXNoZXV2ZWwgPGFy ZGJAa2VybmVsLm9yZz4gd3JvdGU6DQo+Pg0KPj4gT24gRnJpLCAzMCBKdWwgMjAyMSBhdCAxOToz NSwgU2F5YW50YSBQYXR0YW5heWFrDQo+PiA8c2F5YW50YS5wYXR0YW5heWFrQGFybS5jb20+IHdy b3RlOg0KPj4gPg0KPj4gPiBJbnRyb2R1Y2Ugc3VwcG9ydCB0byBwb3B1bGF0ZSBTdE1NIGJvb3Qg ZGF0YSB2aWEgRFRTIHBhcnNpbmcuDQo+Pg0KPj4gV2h5PyBEb24ndCB3ZSBoYXZlIEZGLUEgbWFu aWZlc3RzIGZvciB0aGlzPyBJIHdvdWxkIGV4cGVjdCB0aGUgc2VjdXJlDQo+PiBwYXJ0aXRpb24g bWFuYWdlciB0byBtYXJzaGFsIHRoaXMgZGF0YSBpbnRvIHRoZSBhcHByb3ByaWF0ZSBmb3JtYXQN Cj4+IHdoZW4gbmVjZXNzYXJ5Lg0KPj4NCg0KSSBtYXkgbm90IGhhdmUgcHJlc2VudGVkIHRoaXMg cGF0Y2ggcHJvcGVybHkuDQpUaGUga2V5IG9iamVjdGl2ZSBvZiB0aGlzIHBhdGNoIGlzIHRoYXQg aW4gYSBGRi1BIFNlY3VyZSBwYXJ0aXRpb24gbWFuYWdlciB3aGljaCBoYXMgU3RhbmRhbG9uZU1N IGFzIFMtRUwwIHBhcnRpdGlvbiwgdGhlIFN0TU0gYm9vdCBkYXRhIGNvdWxkIGJlIHBhc3NlZCBi eSBwYXJ0aXRpb24gbWFuYWdlciB0aHJvdWdoIERUIGFuZCBTdE1NIHByZXBhcmVzIHRoZSBib290 IGRhdGEgYnkgcGFyc2luZyB0aGUgRFQuDQpJbiBleGlzdGluZyBzb2x1dGlvbiwgc2VjdXJlIHBh cnRpdGlvbiBtYW5hZ2VyIGhhcyBTdE1NIHNwZWNpZmljIGxvZ2ljIHRvIGZldGNoIHRoZSBTdE1N IGJvb3QgZGF0YSBhbmQgcGFzcyBpdCBvbiB0byBTdE1NIHRocm91Z2ggc2hhcmVkYnVmZmVyLiBI YXZpbmcgRkYtQSBtYW5pZmVzdCBmb3Igc2VjdXJlIHBhcnRpdGlvbiwgRFQgaW4gdGhpcyBjYXNl LCB3aWxsIGFsbG93IFNlY3VyZSBwYXJ0aXRpb24gbWFuYWdlciB0byBub3QgaGF2ZSBTdE1NIG9y IGFueSBvdGhlciBzZWN1cmUgcGFydGl0aW9uIHNwZWNpZmljIGxvZ2ljIHRvIGNvbnNvbGlkYXRl IGJvb3QgZGF0YSBhbmQgcGFzcyBvbi4NCkluIHRoZSBjb250ZXh0IG9mIHRoaXMgcGF0Y2gsIHNl Y3VyZSBwYXJ0aXRpb24gbWFuYWdlcihmcm9tIEVMMykgcGFzc2VzIHRoZSBtYW5pZmVzdCBvciBE VCBhZGRyZXNzIGFzIGJvb3RpbmcgYXJndW1lbnQgdG8gU3RNTS4gU3RNTSB3aWxsIGp1c3QgaGF2 ZSB0aGUgbG9naWMgdG8gcGFyc2UgdGhlIERUIGFuZCBwcmVwYXJlIGJvb3QgZGF0YSBzdHJ1Y3R1 cmUsIHNvIHRoZSBtYW5pZmVzdCBpcyBhY3R1YWxseSBwYXJ0IG9mIHBhcnRpdGlvbiBtYW5hZ2Vy IGNvZGViYXNlLg0KU3RNTSBhcyBzZWN1cmUgcGFydGl0aW9uIGNhbiBiZSB1c2VkIGFjcm9zcyB2 YXJpb3VzIHR5cGVzIG9mIFNlY3VyZSBwYXJ0aXRpb24gbWFuYWdlciwgc28gc29tZSBhbW91bnQg b2YgdW5pZm9ybWl0eSBpcyBuZWVkZWQgdG8gZm9sbG93IHNhbWUgRFQgcHJvcGVydGllcyBmb3Ig U3RNTSBhY3Jvc3MgYWxsIGtpbmQgb2YgU2VjdXJlIHBhcnRpdGlvbiBtYW5hZ2Vycy4NCg0KPj4g PiBUaGUgRFRCIGlzDQo+PiA+IHBhc3NlZCBhcyBhIGJvb3QgYXJndW1lbnQgYnkgYSBiaW5hcnkg b2YgaGlnZXIgZXhjZXB0aW9uIGxldmVsLg0KPj4gPiBQcmV2aW91c2x5IGl0IHdhcyBhY2hpZXZl ZCBieSBwbGFjaW5nIHRoZSBib290IGRhdGEgc3RydWN0dXJlIGluIGENCj4+ID4gc2hhcmVkIGJ1 ZmZlciBhbmQgdGhlIGFkZHJlc3Mgb2YgdGhpcyBzaGFyZWQgYnVmZmVyIHdhcyBwYXNzZWQgYnkN Cj4+ID4gdGhlIGJpbmFyeSBvZiBoaWdoZXIgZXhjZXB0aW9uIGxldmVsLiBOb3cgZWl0aGVyIG9m IHRoZSBvcHRpb24gY2FuDQo+PiA+IGJlIHVzZWQgZm9yIHBvcHVsYXRpbmcgU3RNTSBib290IGlu Zm8uDQo+PiA+DQo+PiA+IFN0TU0gYm9vdCBpbmZvcm1hdGlvbiBzdHJ1Y3R1cmUgYmluZGluZyBp biBkZXZpY2UgdHJlZSBjYW4gYmUgb2YNCj4+ID4gZm9sbG93aW5nIHByb3RvdHlwZS4gUHJvcGVy dHkgdmFsdWVzIGFyZSBub3QgbWVudGlvbmVkIGhlcmUuDQo+PiA+DQo+PiA+IGJvb3Rhcmcgew0K Pj4gPiAgIGNvbXBhdGlibGUgPSAiYm9vdGFyZ3MiOw0KPj4gPiAgIGhfdHlwZSAgPSA8Li4+Ow0K Pj4gPiAgIGhfdmVyc2lvbiA9IDwuLj47DQo+PiA+ICAgaF9zaXplICAgID0gPC4uPjsNCj4+ID4g ICBoX2F0dHIgICAgPSA8Li4+Ow0KPj4gPiAgIHNwX21lbV9iYXNlICAgICAgICAgPSA8Li4+Ow0K Pj4gPiAgIHNwX21lbV9saW1pdCAgICAgICAgPSA8Li4+Ow0KPj4gPiAgIHNwX2ltYWdlX2Jhc2Ug ICAgICAgPSA8Li4+Ow0KPj4gPiAgIHNwX3N0YWNrX2Jhc2UgICAgICAgPSA8Li4+Ow0KPj4gPiAg IHNwX2hlYXBfYmFzZSAgICAgICAgPSA8Li4+Ow0KPj4gPiAgIHNwX25zX2NvbW1fYnVmX2Jhc2Ug PSA8Li4+Ow0KPj4gPiAgIHNwX3NoYXJlZF9idWZfYmFzZSAgPSA8Li4+Ow0KPj4gPiAgIHNwX2lt YWdlX3NpemUgICAgICAgPSA8Li4+Ow0KPj4gPiAgIHNwX3BjcHVfc3RhY2tfc2l6ZSAgPSA8Li4+ Ow0KPj4gPiAgIHNwX2hlYXBfc2l6ZSAgICAgICAgPSA8Li4+Ow0KPj4gPiAgIHNwX25zX2NvbW1f YnVmX3NpemUgPSA8Li4+Ow0KPj4gPiAgIHNwX3NoYXJlZF9idWZfc2l6ZSAgPSA8Li4+Ow0KPj4g PiAgIG51bV9zcF9tZW1fcmVnaW9ucyAgPSA8Li4+Ow0KPj4gPiAgIG51bV9jcHVzICAgICAgICAg ICAgPSA8Li4+Ow0KPj4gPiB9Ow0KPj4gPg0KPj4gPiBBZGRpdGlvbiBvZiBEVFMgc3Vwb29ydCBp bnZvbHZlcyBhIGRlcGVuZGVuY3kgb24gRmR0TGliIGZyb20NCj5FbWJlZGRlZFBrZy4NCj4+ID4N Cj4+ID4gU2lnbmVkLW9mZi1ieTogU2F5YW50YSBQYXR0YW5heWFrIDxzYXlhbnRhLnBhdHRhbmF5 YWtAYXJtLmNvbT4NCj4+DQo+PiBJIGRvbid0IHRoaW5rIHdlIHNob3VsZCBhcHBseSB0aGlzIGNo YW5nZS4gRFQgaXMgbm90IHBhcnQgb2YgdGhlDQo+PiBvcmlnaW5hbCBTUE0gb3IgY3VycmVudCBG Ri1BIHNwZWMsIHJpZ2h0PyBTbyBwbGVhc2UgZml4IHRoaXMgaW4gdGhlDQo+PiBTLUVMMSBjb21w b25lbnQgaW5zdGVhZC4NCj4+DQo+Pg0KPj4gPiAtLS0NCj4+ID4gIExpbmsgdG8gZ2l0aHViIGJy YW5jaCB3aXRoIHRoaXMgcGF0Y2ggLQ0KPj4gPiBodHRwczovL2dpdGh1Yi5jb20vU2F5YW50YVAt YXJtL2VkazIvdHJlZS9zdG1tLWR0cw0KPj4gPg0KPj4gPiAgU3RhbmRhbG9uZU1tUGtnL1N0YW5k YWxvbmVNbVBrZy5kc2MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHwgICAxDQo+Kw0KPj4gPg0KPlN0YW5kYWxvbmVNbVBrZy9MaWJyYXJ5L1N0YW5k YWxvbmVNbUNvcmVFbnRyeVBvaW50L1N0YW5kYWxvbmVNbUNvDQo+cmVFbnRyeVBvaW50LmluZiAg ICAgICB8ICAgMyArDQo+PiA+DQo+PiA+DQo+U3RhbmRhbG9uZU1tUGtnL0xpYnJhcnkvU3RhbmRh bG9uZU1tQ29yZUVudHJ5UG9pbnQvQUFyY2g2NC9TdGFuZGFsbw0KPm4NCj4+ID4gZU1tQ29yZUVu dHJ5UG9pbnQuYyB8IDE1MyArKysrKysrKysrKysrKysrKystLQ0KPj4gPiAgMyBmaWxlcyBjaGFu Z2VkLCAxNDMgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pDQo+PiA+DQo+PiA+IGRpZmYg LS1naXQgYS9TdGFuZGFsb25lTW1Qa2cvU3RhbmRhbG9uZU1tUGtnLmRzYw0KPj4gPiBiL1N0YW5k YWxvbmVNbVBrZy9TdGFuZGFsb25lTW1Qa2cuZHNjDQo+PiA+IGluZGV4IDBjNDVkZjk1ZTJkZC4u ZTNhM2E2ZWUzYmExIDEwMDY0NA0KPj4gPiAtLS0gYS9TdGFuZGFsb25lTW1Qa2cvU3RhbmRhbG9u ZU1tUGtnLmRzYw0KPj4gPiArKysgYi9TdGFuZGFsb25lTW1Qa2cvU3RhbmRhbG9uZU1tUGtnLmRz Yw0KPj4gPiBAQCAtNDksNiArNDksNyBAQA0KPj4gPg0KPkhvYkxpYnxTdGFuZGFsb25lTW1Qa2cv TGlicmFyeS9TdGFuZGFsb25lTW1Ib2JMaWIvU3RhbmRhbG9uZU1tSG8NCj5iTGliLmluZg0KPj4g PiAgICBJb0xpYnxNZGVQa2cvTGlicmFyeS9CYXNlSW9MaWJJbnRyaW5zaWMvQmFzZUlvTGliSW50 cmluc2ljLmluZg0KPj4gPg0KPj4gPg0KPk1lbUxpYnxTdGFuZGFsb25lTW1Qa2cvTGlicmFyeS9T dGFuZGFsb25lTW1NZW1MaWIvU3RhbmRhbG9uZU1tDQo+TWVtTGliDQo+PiA+IC5pbmYNCj4+ID4g KyAgRmR0TGlifEVtYmVkZGVkUGtnL0xpYnJhcnkvRmR0TGliL0ZkdExpYi5pbmYNCj4+ID4NCj5N ZW1vcnlBbGxvY2F0aW9uTGlifFN0YW5kYWxvbmVNbVBrZy9MaWJyYXJ5L1N0YW5kYWxvbmVNbUNv cmVNZW1vcg0KPnlBbGxvY2F0aW9uTGliL1N0YW5kYWxvbmVNbUNvcmVNZW1vcnlBbGxvY2F0aW9u TGliLmluZg0KPj4gPg0KPk1tU2VydmljZXNUYWJsZUxpYnxNZGVQa2cvTGlicmFyeS9TdGFuZGFs b25lTW1TZXJ2aWNlc1RhYmxlTGliL1N0YW5kDQo+YWxvbmVNbVNlcnZpY2VzVGFibGVMaWIuaW5m DQo+PiA+ICAgIFBjZExpYnxNZGVQa2cvTGlicmFyeS9CYXNlUGNkTGliTnVsbC9CYXNlUGNkTGli TnVsbC5pbmYNCj4+ID4gZGlmZiAtLWdpdA0KPj4gPg0KPmEvU3RhbmRhbG9uZU1tUGtnL0xpYnJh cnkvU3RhbmRhbG9uZU1tQ29yZUVudHJ5UG9pbnQvU3RhbmRhbG9uZU1tDQo+Q29yDQo+PiA+IGVF bnRyeVBvaW50LmluZg0KPj4gPg0KPmIvU3RhbmRhbG9uZU1tUGtnL0xpYnJhcnkvU3RhbmRhbG9u ZU1tQ29yZUVudHJ5UG9pbnQvU3RhbmRhbG9uZU1tDQo+Q29yDQo+PiA+IGVFbnRyeVBvaW50Lmlu ZiBpbmRleCA0ZmE0MjZmNThlZjQuLjBhMmU1MTlkZDY2NCAxMDA2NDQNCj4+ID4gLS0tDQo+PiA+ DQo+YS9TdGFuZGFsb25lTW1Qa2cvTGlicmFyeS9TdGFuZGFsb25lTW1Db3JlRW50cnlQb2ludC9T dGFuZGFsb25lTW0NCj5Db3INCj4+ID4gZUVudHJ5UG9pbnQuaW5mDQo+PiA+ICsrKw0KPmIvU3Rh bmRhbG9uZU1tUGtnL0xpYnJhcnkvU3RhbmRhbG9uZU1tQ29yZUVudHJ5UG9pbnQvU3RhbmRhbG9u ZU0NCj4+ID4gKysrIG1Db3JlRW50cnlQb2ludC5pbmYNCj4+ID4gQEAgLTMwLDYgKzMwLDcgQEAN Cj4+ID4gICAgWDY0L1N0YW5kYWxvbmVNbUNvcmVFbnRyeVBvaW50LmMNCj4+ID4NCj4+ID4gIFtQ YWNrYWdlc10NCj4+ID4gKyAgRW1iZWRkZWRQa2cvRW1iZWRkZWRQa2cuZGVjDQo+PiA+ICAgIE1k ZVBrZy9NZGVQa2cuZGVjDQo+PiA+ICAgIE1kZU1vZHVsZVBrZy9NZGVNb2R1bGVQa2cuZGVjDQo+ PiA+ICAgIFN0YW5kYWxvbmVNbVBrZy9TdGFuZGFsb25lTW1Qa2cuZGVjDQo+PiA+IEBAIC00MCwx MCArNDEsMTIgQEANCj4+ID4gIFtMaWJyYXJ5Q2xhc3Nlc10NCj4+ID4gICAgQmFzZUxpYg0KPj4g PiAgICBEZWJ1Z0xpYg0KPj4gPiArICBGZHRMaWINCj4+ID4NCj4+ID4gIFtMaWJyYXJ5Q2xhc3Nl cy5BQVJDSDY0XQ0KPj4gPiAgICBTdGFuZGFsb25lTW1NbXVMaWINCj4+ID4gICAgQXJtU3ZjTGli DQo+PiA+ICsgIEZkdExpYg0KPj4gPg0KPj4gPiAgW0d1aWRzXQ0KPj4gPiAgICBnTXBJbmZvcm1h dGlvbkhvYkd1aWQNCj4+ID4gZGlmZiAtLWdpdA0KPj4gPg0KPmEvU3RhbmRhbG9uZU1tUGtnL0xp YnJhcnkvU3RhbmRhbG9uZU1tQ29yZUVudHJ5UG9pbnQvQUFyY2g2NC9TdGFuZGENCj5sDQo+PiA+ IG9uZU1tQ29yZUVudHJ5UG9pbnQuYw0KPj4gPg0KPmIvU3RhbmRhbG9uZU1tUGtnL0xpYnJhcnkv U3RhbmRhbG9uZU1tQ29yZUVudHJ5UG9pbnQvQUFyY2g2NC9TdGFuZGENCj5sDQo+PiA+IG9uZU1t Q29yZUVudHJ5UG9pbnQuYyBpbmRleCA2YzUwZjQ3MGFhMzUuLmNjMDlkNzVkYWMzNiAxMDA2NDQN Cj4+ID4gLS0tDQo+PiA+DQo+YS9TdGFuZGFsb25lTW1Qa2cvTGlicmFyeS9TdGFuZGFsb25lTW1D b3JlRW50cnlQb2ludC9BQXJjaDY0L1N0YW5kYQ0KPmwNCj4+ID4gb25lTW1Db3JlRW50cnlQb2lu dC5jDQo+PiA+ICsrKw0KPmIvU3RhbmRhbG9uZU1tUGtnL0xpYnJhcnkvU3RhbmRhbG9uZU1tQ29y ZUVudHJ5UG9pbnQvQUFyY2g2NC9TdGENCj4+ID4gKysrIG5kYWxvbmVNbUNvcmVFbnRyeVBvaW50 LmMNCj4+ID4gQEAgLTE2LDYgKzE2LDcgQEAgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEJTRC0y LUNsYXVzZS1QYXRlbnQNCj4+ID4gI2luY2x1ZGUgPEd1aWQvTW1yYW1NZW1vcnlSZXNlcnZlLmg+ ICAjaW5jbHVkZQ0KPj4gPiA8R3VpZC9NcEluZm9ybWF0aW9uLmg+DQo+PiA+DQo+PiA+ICsjaW5j bHVkZSA8bGliZmR0Lmg+DQo+PiA+ICAjaW5jbHVkZSA8TGlicmFyeS9Bcm1NbXVMaWIuaD4NCj4+ ID4gICNpbmNsdWRlIDxMaWJyYXJ5L0FybVN2Y0xpYi5oPg0KPj4gPiAgI2luY2x1ZGUgPExpYnJh cnkvRGVidWdMaWIuaD4NCj4+ID4gQEAgLTQ1LDMzICs0NiwzMSBAQCBTVEFUSUMgQ09OU1QgVUlO VDMyIG1TcG1NaW5vclZlckZmYSA9DQo+U1BNX01JTk9SX1ZFUlNJT05fRkZBOw0KPj4gPiAgUElf TU1fQVJNX1RGX0NQVV9EUklWRVJfRU5UUllQT0lOVCAgICAgIENwdURyaXZlckVudHJ5UG9pbnQg PQ0KPk5VTEw7DQo+PiA+DQo+PiA+ICAvKioNCj4+ID4gLSAgUmV0cmlldmUgYSBwb2ludGVyIHRv IGFuZCBwcmludCB0aGUgYm9vdCBpbmZvcm1hdGlvbiBwYXNzZWQgYnkNCj4+ID4gcHJpdmlsZWdl ZA0KPj4gPiAtICBzZWN1cmUgZmlybXdhcmUuDQo+PiA+ICsgIFByaW50cyBib290IGluZm9ybWF0 aW9uLg0KPj4gPg0KPj4gPiAtICBAcGFyYW0gIFtpbl0gU2hhcmVkQnVmQWRkcmVzcyAgIFRoZSBw b2ludGVyIG1lbW9yeSBzaGFyZWQgd2l0aA0KPnByaXZpbGVnZWQNCj4+ID4gLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBmaXJtd2FyZS4NCj4+ID4gKyAgVGhpcyBmdW5jdGlvbiBw cmludHMgdGhlIGJvb3QgaW5mb3JtYXRpb24sIHdoaWNoIGlzIHBhc3NlZCBieQ0KPj4gPiArIHBy aXZpbGVnZWQgIHNlY3VyZSBmaXJtd2FyZSB0aHJvdWdoIHNoYXJlZCBidWZmZXIgb3Igb3RoZXIg bWVjaGFuaXNtLg0KPj4gPg0KPj4gPiArICBAcGFyYW0gIFtpbl0gUGF5bG9hZEJvb3RJbmZvICAg UG9pbnRlciB0byBTdGFuZGFsb25lTU0gQm9vdCBJbmZvDQo+c3RydWN0dXJlLg0KPj4gPiAgKiov DQo+PiA+IC1FRklfU0VDVVJFX1BBUlRJVElPTl9CT09UX0lORk8gKg0KPj4gPiAtR2V0QW5kUHJp bnRCb290aW5mb3JtYXRpb24gKA0KPj4gPiAtICBJTiBWT0lEICAgICAgICAgICAgICAgICAgICAg ICpTaGFyZWRCdWZBZGRyZXNzDQo+PiA+ICtWT0lEDQo+PiA+ICtQcmludEJvb3RpbmZvcm1hdGlv biAoDQo+PiA+ICsgIElOIEVGSV9TRUNVUkVfUEFSVElUSU9OX0JPT1RfSU5GTyAqUGF5bG9hZEJv b3RJbmZvDQo+PiA+ICApDQo+PiA+ICB7DQo+PiA+IC0gIEVGSV9TRUNVUkVfUEFSVElUSU9OX0JP T1RfSU5GTyAqUGF5bG9hZEJvb3RJbmZvOw0KPj4gPiAgICBFRklfU0VDVVJFX1BBUlRJVElPTl9D UFVfSU5GTyAgKlBheWxvYWRDcHVJbmZvOw0KPj4gPiAgICBVSU5UTiAgICAgICAgICAgICAgICAg ICAgICAgICAgSW5kZXg7DQo+PiA+DQo+PiA+IC0gIFBheWxvYWRCb290SW5mbyA9IChFRklfU0VD VVJFX1BBUlRJVElPTl9CT09UX0lORk8gKikNCj4+ID4gU2hhcmVkQnVmQWRkcmVzczsNCj4+ID4N Cj4+ID4gICAgaWYgKFBheWxvYWRCb290SW5mbyA9PSBOVUxMKSB7DQo+PiA+ICAgICAgREVCVUcg KChERUJVR19FUlJPUiwgIlBheWxvYWRCb290SW5mbyBOVUxMXG4iKSk7DQo+PiA+IC0gICAgcmV0 dXJuIE5VTEw7DQo+PiA+ICsgICAgcmV0dXJuOw0KPj4gPiAgICB9DQo+PiA+DQo+PiA+ICAgIGlm IChQYXlsb2FkQm9vdEluZm8tPkhlYWRlci5WZXJzaW9uICE9IEJPT1RfUEFZTE9BRF9WRVJTSU9O KSB7DQo+PiA+ICAgICAgREVCVUcgKChERUJVR19FUlJPUiwgIkJvb3QgSW5mb3JtYXRpb24gVmVy c2lvbiBNaXNtYXRjaC4NCj5DdXJyZW50PTB4JXgsIEV4cGVjdGVkPTB4JXguXG4iLA0KPj4gPiAg ICAgICAgICAgICAgUGF5bG9hZEJvb3RJbmZvLT5IZWFkZXIuVmVyc2lvbiwgQk9PVF9QQVlMT0FE X1ZFUlNJT04pKTsNCj4+ID4gLSAgICByZXR1cm4gTlVMTDsNCj4+ID4gKyAgICByZXR1cm47DQo+ PiA+ICAgIH0NCj4+ID4NCj4+ID4gICAgREVCVUcgKChERUJVR19JTkZPLCAiTnVtU3BNZW1SZWdp b25zIC0gMHgleFxuIiwNCj4+ID4gUGF5bG9hZEJvb3RJbmZvLT5OdW1TcE1lbVJlZ2lvbnMpKTsN Cj4+ID4gQEAgLTk2LDcgKzk1LDcgQEAgR2V0QW5kUHJpbnRCb290aW5mb3JtYXRpb24gKA0KPj4g Pg0KPj4gPiAgICBpZiAoUGF5bG9hZENwdUluZm8gPT0gTlVMTCkgew0KPj4gPiAgICAgIERFQlVH ICgoREVCVUdfRVJST1IsICJQYXlsb2FkQ3B1SW5mbyBOVUxMXG4iKSk7DQo+PiA+IC0gICAgcmV0 dXJuIE5VTEw7DQo+PiA+ICsgICAgcmV0dXJuOw0KPj4gPiAgICB9DQo+PiA+DQo+PiA+ICAgIGZv ciAoSW5kZXggPSAwOyBJbmRleCA8IFBheWxvYWRCb290SW5mby0+TnVtQ3B1czsgSW5kZXgrKykg eyBAQA0KPj4gPiAtMTA1LDcgKzEwNCw3IEBAIEdldEFuZFByaW50Qm9vdGluZm9ybWF0aW9uICgN Cj4+ID4gICAgICBERUJVRyAoKERFQlVHX0lORk8sICJGbGFncyAgICAgICAgICAgLSAweCV4XG4i LA0KPlBheWxvYWRDcHVJbmZvW0luZGV4XS5GbGFncykpOw0KPj4gPiAgICB9DQo+PiA+DQo+PiA+ IC0gIHJldHVybiBQYXlsb2FkQm9vdEluZm87DQo+PiA+ICsgIHJldHVybjsNCj4+ID4gIH0NCj4+ ID4NCj4+ID4gIC8qKg0KPj4gPiBAQCAtMTk0LDYgKzE5MywxMTkgQEAgRGVsZWdhdGVkRXZlbnRM b29wICgNCj4+ID4gICAgfQ0KPj4gPiAgfQ0KPj4gPg0KPj4gPiArLyoqDQo+PiA+ICsgIFBvcHVs YXRlcyBTdGFuZEFsb25lTU0gYm9vdCBpbmZvcm1hdGlvbiBzdHJ1Y3R1cmUuDQo+PiA+ICsNCj4+ ID4gKyAgVGhpcyBmdW5jdGlvbiByZWNlaXZlcyBkdGIgQWRkcmVzcywgd2hlcmUgU3RNTSBCb290 IGluZm9ybWF0aW9uDQo+PiA+ICsgc3BlY2lmaWMgIHByb3BlcnRpZXMgd2lsbCBiZSBsb29rZWQg b3V0IHRvIGZvcm0gdGhlIGJvb3RpbmcNCj4+ID4gKyBzdHJ1Y3R1cmUgb2YgdHlwZSAgRUZJX1NF Q1VSRV9QQVJUSVRJT05fQk9PVF9JTkZPLiBBdCBmaXJzdCwgdGhlDQo+PiA+ICsgcHJvcGVydGll cyBmb3IgU3RhbmRBbG9uZU1NICBDb25maWdTaXplIGFuZCAgTWVtb3J5IGxpbWl0IHdpbGwgYmUN Cj4+ID4gKyBjaGVja2VkIG91dC4gQm9vdCBpbmZvcm1hdGlvbiB3aWxsICBiZSBzdG9yZWQgYXQg YWRkcmVzcyAoTWVtb3J5DQo+PiA+ICsgTGltaXQgLSBDb25maWdTaXplKS4gVGhlcmVhZnRlciBh bGwgYm9vdCAgaW5mb3JtYXRpb24gc3BlY2lmaWMNCj4+ID4gKyBwcm9wZXJ0aWVzIHdpbGwgYmUg cGFyc2VkIGFuZCBjb3JyZXNwb25kaW5nIHZhbHVlcyAgd2lsbCBiZSBvYnRhaW5lZC4NCj4+ID4g Kw0KPj4gPiArICBAcGFyYW0gIFtvdXRdIEJvb3RJbmZvICAgUG9pbnRlciwgd2hlcmUgQm9vdCBJ bmZvIHN0cnVjdHVyZSB3aWxsIGJlDQo+cG9wdWxhdGVkLg0KPj4gPiArICBAcGFyYW0gIFtpbl0g RHRiQWRkcmVzcyAgQWRkcmVzcyBvZiB0aGUgRGV2aWNlIHRyZWUgZnJvbSB3aGVyZSBCb290DQo+ PiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiB3aWxsIGJlIGZldGNo ZWQuDQo+PiA+ICsqKi8NCj4+ID4gK1ZPSUQNCj4+ID4gK1BvcHVsYXRlQm9vdGluZm9ybWF0aW9u ICgNCj4+ID4gKyAgT1VUIEVGSV9TRUNVUkVfUEFSVElUSU9OX0JPT1RfSU5GTyAqKkJvb3RJbmZv LA0KPj4gPiArICBJTiBWT0lEICAgKkR0YkFkZHJlc3MNCj4+ID4gKykNCj4+ID4gK3sNCj4+ID4g KyAgSU5UMzIgICAgICAgICAgIE9mZnNldDsNCj4+ID4gKyAgQ09OU1QgVUlOVDMyICAgICpQcm9w ZXJ0eTsNCj4+ID4gKyAgQ09OU1QgVUlOVDY0ICAgICpQcm9wZXJ0eTY0Ow0KPj4gPiArICBVSU5U MzIgICAgICAgICAgQ29uZmlnU2l6ZTsNCj4+ID4gKyAgVUlOVDY0ICAgICAgICAgIFNwTWVtTGlt aXQ7DQo+PiA+ICsgIEVGSV9TRUNVUkVfUEFSVElUSU9OX0JPT1RfSU5GTyAqUGF5bG9hZEJvb3RJ bmZvOw0KPj4gPiArDQo+PiA+ICsgIE9mZnNldCA9IGZkdF9ub2RlX29mZnNldF9ieV9jb21wYXRp YmxlIChEdGJBZGRyZXNzLCAtMSwNCj4+ID4gKyAiY29uZmlnLXNpemUiKTsgIGlmIChPZmZzZXQg PCAwKSB7DQo+PiA+ICsgICAgREVCVUcgKChERUJVR19XQVJOLCAiVG90YWwgQ29uZmlnIFNpemUg aXMgbm90ICBkZWZpbmVkXG4iKSk7ICB9DQo+PiA+ICsgZWxzZSB7DQo+PiA+ICsgICAgUHJvcGVy dHkgPSBmZHRfZ2V0cHJvcCAoRHRiQWRkcmVzcywgT2Zmc2V0LCAic2l6ZSIsIE5VTEwpOw0KPj4g PiArICAgIGlmIChQcm9wZXJ0eSkgew0KPj4gPiArICAgICAgQ29uZmlnU2l6ZSA9IGZkdDMyX3Rv X2NwdSAoKlByb3BlcnR5KTsNCj4+ID4gKyAgICAgIERFQlVHICgoREVCVUdfSU5GTywgInN0bW0g ZHRiIGNvbmZpZy1zaXplICA9IDB4JXggXG4iLA0KPkNvbmZpZ1NpemUpKTsNCj4+ID4gKyAgICB9 DQo+PiA+ICsgIH0NCj4+ID4gKw0KPj4gPiArICBPZmZzZXQgPSBmZHRfbm9kZV9vZmZzZXRfYnlf Y29tcGF0aWJsZSAoRHRiQWRkcmVzcywgLTEsDQo+PiA+ICsgImJvb3RhcmdzIik7ICBpZiAoT2Zm c2V0ID49IDApIHsNCj4+ID4gKyAgICBQcm9wZXJ0eTY0ID0gIGZkdF9nZXRwcm9wIChEdGJBZGRy ZXNzLCBPZmZzZXQsICJzcF9tZW1fbGltaXQiLA0KPk5VTEwpOw0KPj4gPiArICAgIFNwTWVtTGlt aXQgPSBmZHQ2NF90b19jcHUgKCpQcm9wZXJ0eTY0KTsgIH0NCj4+ID4gKw0KPj4gPiArICBpZiAo U3BNZW1MaW1pdCAmJiBDb25maWdTaXplKQ0KPj4gPiArICAgIFBheWxvYWRCb290SW5mbyA9DQo+ PiA+ICsgICAgICAoRUZJX1NFQ1VSRV9QQVJUSVRJT05fQk9PVF9JTkZPICopKFNwTWVtTGltaXQg LSBDb25maWdTaXplKTsNCj4+ID4gKw0KPj4gPiArICBpZiAoUGF5bG9hZEJvb3RJbmZvKSB7DQo+ PiA+ICsgICAgUGF5bG9hZEJvb3RJbmZvLT5TcE1lbUxpbWl0ID0gU3BNZW1MaW1pdDsNCj4+ID4g Kw0KPj4gPiArICAgIFByb3BlcnR5ID0gIGZkdF9nZXRwcm9wIChEdGJBZGRyZXNzLCBPZmZzZXQs ICJoX3R5cGUiLCBOVUxMKTsNCj4+ID4gKyAgICBQYXlsb2FkQm9vdEluZm8tPkhlYWRlci5UeXBl ID0gKFVJTlQ4KSBmZHQzMl90b19jcHUoKlByb3BlcnR5KTsNCj4+ID4gKw0KPj4gPiArICAgIFBy b3BlcnR5ID0gIGZkdF9nZXRwcm9wIChEdGJBZGRyZXNzLCBPZmZzZXQsICJoX3ZlcnNpb24iLCBO VUxMKTsNCj4+ID4gKyAgICBQYXlsb2FkQm9vdEluZm8tPkhlYWRlci5WZXJzaW9uID0gKFVJTlQ4 KQ0KPj4gPiArIGZkdDMyX3RvX2NwdSgqUHJvcGVydHkpOw0KPj4gPiArDQo+PiA+ICsgICAgUHJv cGVydHkgPSAgZmR0X2dldHByb3AgKER0YkFkZHJlc3MsIE9mZnNldCwgImhfc2l6ZSIsIE5VTEwp Ow0KPj4gPiArICAgIFBheWxvYWRCb290SW5mby0+SGVhZGVyLlNpemUgPSAoVUlOVDgpIGZkdDMy X3RvX2NwdSgqUHJvcGVydHkpOw0KPj4gPiArDQo+PiA+ICsgICAgUHJvcGVydHkgPSAgZmR0X2dl dHByb3AgKER0YkFkZHJlc3MsIE9mZnNldCwgImhfYXR0ciIsIE5VTEwpOw0KPj4gPiArICAgIFBh eWxvYWRCb290SW5mby0+SGVhZGVyLkF0dHIgPSBmZHQzMl90b19jcHUoKlByb3BlcnR5KTsNCj4+ ID4gKw0KPj4gPiArICAgIFByb3BlcnR5NjQgPSAgZmR0X2dldHByb3AgKER0YkFkZHJlc3MsIE9m ZnNldCwgInNwX21lbV9iYXNlIiwNCj5OVUxMKTsNCj4+ID4gKyAgICBQYXlsb2FkQm9vdEluZm8t PlNwTWVtQmFzZSA9IGZkdDY0X3RvX2NwdSgqUHJvcGVydHk2NCk7DQo+PiA+ICsNCj4+ID4gKyAg ICBQcm9wZXJ0eTY0ID0gIGZkdF9nZXRwcm9wIChEdGJBZGRyZXNzLCBPZmZzZXQsICJzcF9pbWFn ZV9iYXNlIiwNCj5OVUxMKTsNCj4+ID4gKyAgICBQYXlsb2FkQm9vdEluZm8tPlNwSW1hZ2VCYXNl ID0gZmR0NjRfdG9fY3B1KCpQcm9wZXJ0eTY0KTsNCj4+ID4gKw0KPj4gPiArICAgIFByb3BlcnR5 NjQgPSAgZmR0X2dldHByb3AgKER0YkFkZHJlc3MsIE9mZnNldCwgInNwX3N0YWNrX2Jhc2UiLA0K Pk5VTEwpOw0KPj4gPiArICAgIFBheWxvYWRCb290SW5mby0+U3BTdGFja0Jhc2UgPSBmZHQ2NF90 b19jcHUoKlByb3BlcnR5NjQpOw0KPj4gPiArDQo+PiA+ICsgICAgUHJvcGVydHk2NCA9ICBmZHRf Z2V0cHJvcCAoRHRiQWRkcmVzcywgT2Zmc2V0LCAic3BfaGVhcF9iYXNlIiwNCj5OVUxMKTsNCj4+ ID4gKyAgICBQYXlsb2FkQm9vdEluZm8tPlNwSGVhcEJhc2UgPSBmZHQ2NF90b19jcHUoKlByb3Bl cnR5NjQpOw0KPj4gPiArDQo+PiA+ICsgICAgUHJvcGVydHk2NCA9ICBmZHRfZ2V0cHJvcCAoRHRi QWRkcmVzcywgT2Zmc2V0LA0KPiJzcF9uc19jb21tX2J1Zl9iYXNlIiwgTlVMTCk7DQo+PiA+ICsg ICAgUGF5bG9hZEJvb3RJbmZvLT5TcE5zQ29tbUJ1ZkJhc2UgPSBmZHQ2NF90b19jcHUoKlByb3Bl cnR5NjQpOw0KPj4gPiArDQo+PiA+ICsgICAgUHJvcGVydHk2NCA9ICBmZHRfZ2V0cHJvcCAoRHRi QWRkcmVzcywgT2Zmc2V0LA0KPiJzcF9zaGFyZWRfYnVmX2Jhc2UiLCBOVUxMKTsNCj4+ID4gKyAg ICBQYXlsb2FkQm9vdEluZm8tPlNwU2hhcmVkQnVmQmFzZSA9IGZkdDY0X3RvX2NwdSgqUHJvcGVy dHk2NCk7DQo+PiA+ICsNCj4+ID4gKyAgICBQcm9wZXJ0eTY0ID0gIGZkdF9nZXRwcm9wIChEdGJB ZGRyZXNzLCBPZmZzZXQsICJzcF9pbWFnZV9zaXplIiwNCj5OVUxMKTsNCj4+ID4gKyAgICBQYXls b2FkQm9vdEluZm8tPlNwSW1hZ2VTaXplID0gZmR0NjRfdG9fY3B1KCpQcm9wZXJ0eTY0KTsNCj4+ ID4gKw0KPj4gPiArICAgIFByb3BlcnR5NjQgPSAgZmR0X2dldHByb3AgKER0YkFkZHJlc3MsIE9m ZnNldCwgInNwX3BjcHVfc3RhY2tfc2l6ZSIsDQo+TlVMTCk7DQo+PiA+ICsgICAgUGF5bG9hZEJv b3RJbmZvLT5TcFBjcHVTdGFja1NpemUgPSBmZHQ2NF90b19jcHUoKlByb3BlcnR5NjQpOw0KPj4g PiArDQo+PiA+ICsgICAgUHJvcGVydHk2NCA9ICBmZHRfZ2V0cHJvcCAoRHRiQWRkcmVzcywgT2Zm c2V0LCAic3BfaGVhcF9zaXplIiwgTlVMTCk7DQo+PiA+ICsgICAgUGF5bG9hZEJvb3RJbmZvLT5T cEhlYXBTaXplID0gZmR0NjRfdG9fY3B1KCpQcm9wZXJ0eTY0KTsNCj4+ID4gKw0KPj4gPiArICAg IFByb3BlcnR5NjQgPSAgZmR0X2dldHByb3AgKER0YkFkZHJlc3MsIE9mZnNldCwNCj4ic3BfbnNf Y29tbV9idWZfc2l6ZSIsIE5VTEwpOw0KPj4gPiArICAgIFBheWxvYWRCb290SW5mby0+U3BOc0Nv bW1CdWZTaXplID0gZmR0NjRfdG9fY3B1KCpQcm9wZXJ0eTY0KTsNCj4+ID4gKw0KPj4gPiArICAg IFByb3BlcnR5NjQgPSAgZmR0X2dldHByb3AgKER0YkFkZHJlc3MsIE9mZnNldCwgInNwX3NoYXJl ZF9idWZfc2l6ZSIsDQo+TlVMTCk7DQo+PiA+ICsgICAgUGF5bG9hZEJvb3RJbmZvLT5TcFBjcHVT aGFyZWRCdWZTaXplID0NCj4+ID4gKyBmZHQ2NF90b19jcHUoKlByb3BlcnR5NjQpOw0KPj4gPiAr DQo+PiA+ICsgICAgUHJvcGVydHkgPSAgZmR0X2dldHByb3AgKER0YkFkZHJlc3MsIE9mZnNldCwg Im51bV9zcF9tZW1fcmVnaW9ucyIsDQo+TlVMTCk7DQo+PiA+ICsgICAgUGF5bG9hZEJvb3RJbmZv LT5OdW1TcE1lbVJlZ2lvbnMgPSBmZHQzMl90b19jcHUoKlByb3BlcnR5KTsNCj4+ID4gKw0KPj4g PiArICAgIFByb3BlcnR5ID0gIGZkdF9nZXRwcm9wIChEdGJBZGRyZXNzLCBPZmZzZXQsICJudW1f Y3B1cyIsIE5VTEwpOw0KPj4gPiArICAgIFBheWxvYWRCb290SW5mby0+TnVtQ3B1cyA9IGZkdDMy X3RvX2NwdSgqUHJvcGVydHkpOw0KPj4gPiArDQo+PiA+ICsgICAgUGF5bG9hZEJvb3RJbmZvLT5D cHVJbmZvID0NCj4+ID4gKyAgICAgIChFRklfU0VDVVJFX1BBUlRJVElPTl9DUFVfSU5GTyAqKSgo VUlOVDY0KVBheWxvYWRCb290SW5mbyArDQo+PiA+ICsNCj4+ID4gKyBzaXplb2YoRUZJX1NFQ1VS RV9QQVJUSVRJT05fQk9PVF9JTkZPKSk7DQo+PiA+ICsgIH0NCj4+ID4gKw0KPj4gPiArICAqQm9v dEluZm8gPSBQYXlsb2FkQm9vdEluZm87DQo+PiA+ICsNCj4+ID4gKyAgcmV0dXJuOw0KPj4gPiAr fQ0KPj4gPiArDQo+PiA+ICAvKioNCj4+ID4gICAgUXVlcnkgdGhlIFNQTSB2ZXJzaW9uLCBjaGVj ayBjb21wYXRpYmlsaXR5IGFuZCByZXR1cm4gc3VjY2VzcyBpZg0KPmNvbXBhdGlibGUuDQo+PiA+ DQo+PiA+IEBAIC0zMTMsNiArNDI1LDcgQEAgX01vZHVsZUVudHJ5UG9pbnQgKA0KPj4gPiAgICBW T0lEICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKlRlRGF0YTsNCj4+ID4gICAg VUlOVE4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlRGF0YVNpemU7DQo+PiA+ ICAgIEVGSV9QSFlTSUNBTF9BRERSRVNTICAgICAgICAgICAgICAgICAgICBJbWFnZUJhc2U7DQo+ PiA+ICsgIFZPSUQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqRHRiQWRkcmVz czsNCj4+ID4NCj4+ID4gICAgLy8gR2V0IFNlY3VyZSBQYXJ0aXRpb24gTWFuYWdlciBWZXJzaW9u IEluZm9ybWF0aW9uDQo+PiA+ICAgIFN0YXR1cyA9IEdldFNwbVZlcnNpb24gKCk7DQo+PiA+IEBA IC0zMjAsMTIgKzQzMywyNCBAQCBfTW9kdWxlRW50cnlQb2ludCAoDQo+PiA+ICAgICAgZ290byBm aW5pc2g7DQo+PiA+ICAgIH0NCj4+ID4NCj4+ID4gLSAgUGF5bG9hZEJvb3RJbmZvID0gR2V0QW5k UHJpbnRCb290aW5mb3JtYXRpb24gKFNoYXJlZEJ1ZkFkZHJlc3MpOw0KPj4gPiArICAvLyBJbiBj b29raWUxIHRoZSBEVEIgYWRkcmVzcyBpcyBwYXNzZWQuIFdpdGggcmVmZXJlbmNlIHRvIERUQiwN Cj4+ID4gKyBCb290ICAvLyBpbmZvIHN0cnVjdHVyZSBjYW4gYmUgcG9wdWxhdGVkLg0KPj4gPiAr ICAvLyBJZiBjb29raWUxIGRvZXNuJ3QgaGF2ZSBhbnkgdmFsdWUsIHRoZW4gQm9vdCBpbmZvIGlz IGNvcGllZA0KPj4gPiArIGZyb20gIC8vIFNoYXJlZGJ1ZmZlci4NCj4+ID4gKyAgaWYgKGNvb2tp ZTEpIHsNCj4+ID4gKyAgICBEdGJBZGRyZXNzID0gKHZvaWQgKiljb29raWUxOw0KPj4gPiArICAg IFBvcHVsYXRlQm9vdGluZm9ybWF0aW9uICgmUGF5bG9hZEJvb3RJbmZvLCBEdGJBZGRyZXNzKTsg IH0gZWxzZQ0KPj4gPiArIHsNCj4+ID4gKyAgICBQYXlsb2FkQm9vdEluZm8gPSAoRUZJX1NFQ1VS RV9QQVJUSVRJT05fQk9PVF9JTkZPDQo+PiA+ICsgKilTaGFyZWRCdWZBZGRyZXNzOyAgfQ0KPj4g PiArDQo+PiA+ICAgIGlmIChQYXlsb2FkQm9vdEluZm8gPT0gTlVMTCkgew0KPj4gPiAgICAgIFN0 YXR1cyA9IEVGSV9VTlNVUFBPUlRFRDsNCj4+ID4gICAgICBnb3RvIGZpbmlzaDsNCj4+ID4gICAg fQ0KPj4gPg0KPj4gPiArICBQcmludEJvb3RpbmZvcm1hdGlvbiAoUGF5bG9hZEJvb3RJbmZvKTsN Cj4+ID4gKw0KPj4gPiAgICAvLyBMb2NhdGUgUEUvQ09GRiBGaWxlIGluZm9ybWF0aW9uIGZvciB0 aGUgU3RhbmRhbG9uZSBNTSBjb3JlIG1vZHVsZQ0KPj4gPiAgICBTdGF0dXMgPSBMb2NhdGVTdGFu ZGFsb25lTW1Db3JlUGVDb2ZmRGF0YSAoDQo+PiA+ICAgICAgICAgICAgICAgKEVGSV9GSVJNV0FS RV9WT0xVTUVfSEVBREVSICopDQo+PiA+IFBheWxvYWRCb290SW5mby0+U3BJbWFnZUJhc2UsDQo+ PiA+IC0tDQo+PiA+IDIuMTcuMQ0KPj4gPg0KSU1QT1JUQU5UIE5PVElDRTogVGhlIGNvbnRlbnRz IG9mIHRoaXMgZW1haWwgYW5kIGFueSBhdHRhY2htZW50cyBhcmUgY29uZmlkZW50aWFsIGFuZCBt YXkgYWxzbyBiZSBwcml2aWxlZ2VkLiBJZiB5b3UgYXJlIG5vdCB0aGUgaW50ZW5kZWQgcmVjaXBp ZW50LCBwbGVhc2Ugbm90aWZ5IHRoZSBzZW5kZXIgaW1tZWRpYXRlbHkgYW5kIGRvIG5vdCBkaXNj bG9zZSB0aGUgY29udGVudHMgdG8gYW55IG90aGVyIHBlcnNvbiwgdXNlIGl0IGZvciBhbnkgcHVy cG9zZSwgb3Igc3RvcmUgb3IgY29weSB0aGUgaW5mb3JtYXRpb24gaW4gYW55IG1lZGl1bS4gVGhh bmsgeW91Lg0K