From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mga01.intel.com (mga01.intel.com [192.55.52.88]) by mx.groups.io with SMTP id smtpd.web11.2517.1618275371539352412 for ; Mon, 12 Apr 2021 17:56:11 -0700 Authentication-Results: mx.groups.io; dkim=pass header.i=@intel.onmicrosoft.com header.s=selector2-intel-onmicrosoft-com header.b=n7GyWasX; spf=pass (domain: intel.com, ip: 192.55.52.88, mailfrom: nathaniel.l.desimone@intel.com) IronPort-SDR: fSe0I1uoTCwtxD1hN7s72Snv267BZwstBa1NRR3uW+dT4PFbR7JrDK6O6M096BlcrutbGfqlqu cjMyJ1pCoMbA== X-IronPort-AV: E=McAfee;i="6200,9189,9952"; a="214783034" X-IronPort-AV: E=Sophos;i="5.82,216,1613462400"; d="scan'208";a="214783034" Received: from fmsmga005.fm.intel.com ([10.253.24.32]) by fmsmga101.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 12 Apr 2021 17:56:09 -0700 IronPort-SDR: zfLhzfn049mtByjumdYVjnXVUObQTKAfx2eK28MFUMxDZjkzAEsdpbQPW/1s8pNBaNwQvA2u5D j6ESJlt4gkKg== X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.82,216,1613462400"; d="scan'208";a="614751930" Received: from fmsmsx601.amr.corp.intel.com ([10.18.126.81]) by fmsmga005.fm.intel.com with ESMTP; 12 Apr 2021 17:56:08 -0700 Received: from fmsmsx609.amr.corp.intel.com (10.18.126.89) by fmsmsx601.amr.corp.intel.com (10.18.126.81) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2; Mon, 12 Apr 2021 17:56:08 -0700 Received: from fmsmsx607.amr.corp.intel.com (10.18.126.87) by fmsmsx609.amr.corp.intel.com (10.18.126.89) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2; Mon, 12 Apr 2021 17:56:08 -0700 Received: from FMSEDG603.ED.cps.intel.com (10.1.192.133) by fmsmsx607.amr.corp.intel.com (10.18.126.87) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2106.2 via Frontend Transport; Mon, 12 Apr 2021 17:56:08 -0700 Received: from NAM11-DM6-obe.outbound.protection.outlook.com (104.47.57.172) by edgegateway.intel.com (192.55.55.68) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2106.2; Mon, 12 Apr 2021 17:56:07 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cCJ6BKWRtABNQ8u9/WBhkKD0CZFfwKMJkJbhA+PxcgpgnLNIAPbET/ObOGs0UKA6+64KlpFcKzhP9XIfYdnaT7oiV6LXyzb3TGPCVzdGMIJ2w5qWxBgYT9RplMHkFZcdkE480qhtvDRDaWKhFmJOeqtBt6OyODlrcTPo5HiT0Xg10D2enNt9sHCU71q1e8bYHqOWWSn6q+l8Yas2CNZv0MQo/m7qoTVTjpUpUj2AHshI0AJTVU8cAImuPDnSlJCtxdom0MtOaTLoxgM+xfTldd09fmC2VbuJwiYaQ0oDf3ws/lqabAIr+tr/r+QX2eoMX8vULv379vFHetXpCMKw8g== 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=d0epTzebwbAJN1HMPexbBHGxAHMWjTtCM06TOeKTyJY=; b=PWSw61nMgltw3LwvjkhQyFyM1LvP6002w8ogyPzt+h6eFQcoid/ppIxAYcqbhjATktsLBkz9+Jk6YRboucI5BNsWQoVVMxUMVJSA+QTmkNnc4cG0hOnbK7LjFijYpQogWFOvkWJaNIq6w1fuv9F5Wi4f7ERTPUSOi2Ov8whqWUIGvtGjbFS3z7zed60gK1cthanmbFSFEAEM+WV5lq6obZTdS2uD3R9Ozua72y9BNDNWP3g5Nz5RE2YaBjE+6JY51NtpgPh7SjVlJpHfah0DPqjEEgFfuog5B+Hiyv2tvMXtDu/aSF0RboPqF6Q9/HEk5ZWZOiI+qERF2nwtXvq3YQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=intel.onmicrosoft.com; s=selector2-intel-onmicrosoft-com; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=d0epTzebwbAJN1HMPexbBHGxAHMWjTtCM06TOeKTyJY=; b=n7GyWasXsd8nHHHGXttCU+C1aCZYV6xZvu1hyxFhrRAqyFOPMeQOinINy3xeTlA36IT0nCg/7gI1amynsyEoMdmmYZCbrpyOccOeqCMd6BuU82Yie2DXDb3uzKRjKfPnifiS24oopi+D/G9givYg4iXK1Z6GMXdyrKmlPPqYEH8= Received: from MWHPR1101MB2160.namprd11.prod.outlook.com (2603:10b6:301:5b::12) by MWHPR11MB1359.namprd11.prod.outlook.com (2603:10b6:300:20::22) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4020.17; Tue, 13 Apr 2021 00:56:06 +0000 Received: from MWHPR1101MB2160.namprd11.prod.outlook.com ([fe80::6540:bca7:645a:6788]) by MWHPR1101MB2160.namprd11.prod.outlook.com ([fe80::6540:bca7:645a:6788%5]) with mapi id 15.20.4020.022; Tue, 13 Apr 2021 00:56:06 +0000 From: "Nate DeSimone" To: "Kinney, Michael D" , =?utf-8?B?TWFydmluIEjDpHVzZXI=?= , "devel@edk2.groups.io" , Laszlo Ersek , Andrew Fish Subject: Re: [edk2-devel] [GSoC proposal] Secure Image Loader Thread-Topic: [edk2-devel] [GSoC proposal] Secure Image Loader Thread-Index: AQHXKacD5Hl5SDcSBUG2XYljo7F1u6qnNHHQgAn5BoCAAHS0gIAAB9LQ Date: Tue, 13 Apr 2021 00:56:06 +0000 Message-ID: References: <055bcd6f-c055-25a8-f258-6581ccbbd591@posteo.de> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-reaction: no-action dlp-version: 11.5.1.3 dlp-product: dlpe-windows authentication-results: intel.com; dkim=none (message not signed) header.d=none;intel.com; dmarc=none action=none header.from=intel.com; x-originating-ip: [50.53.190.176] x-ms-publictraffictype: Email x-ms-office365-filtering-correlation-id: 0421b0e6-3e04-4c90-d7f6-08d8fe16eb69 x-ms-traffictypediagnostic: MWHPR11MB1359: x-ms-exchange-transport-forked: True x-microsoft-antispam-prvs: x-ms-oob-tlc-oobclassifiers: OLM:9508; x-ms-exchange-senderadcheck: 1 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: BcQhMbkdu2hkei7qUxsXUm4+CJDcItrXXzTHeAwYn3Iow+NG+g6hJHa1K76JBzsqbVAIoCdqPiyM1hr1szMyNa+wbzw+xyWGxRg4ZHheEKcsCSbJj9IYrdJCwxblo9TtNXPIh4LqjuU90sLTofOn7T5yc60yBafwIlD5oIxKy7zRf9Wn6bkAB4XddCAVzSCB4iiFIJTowzTdCzOCmQpMamWAPJ/MoKea5K0+BUbYNjrR82nSHeCwFOaEunHh0XoBTqsIrn9vmy84zIOMI9FMdAREVw0vh85ZfVuyRYAvjK3TiJ/6S0ivVOdIsADbRMvZLNYCVslmJWkDmgM3zjs8g08KeY24632cNxtTAlBXiApLu60U+vzTn194bCCcS5ICRBnP4D3GnsmCuijTg0WhZWokUwWdC9ACysQE8bsWPonYcyEwjfnvmw0sf7vShmuiTwbY+Lj6znVG0MPIKhFlE3JAfQ2n5ggELFbQx3FqFMhJ2fGcLNj60UCU2PZ/y3G7+p6u0VJA/v3SNkT0Yc2oh9rQUl61J0R+nS5OOy1T897kRD3iwvyK5caOl9aU9R2Hg2LPhR869F6CDgbf/UemP7/K3iAJiEX55sngw0YO7oMqql0h+3M2sO0zN7aM0OeGPZoQcFRtDmWw8pQ6RMrmKo4GwrBw8g+q01icnqAudrwe6o/awIO+zsfGwqaeDVu8 x-forefront-antispam-report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:MWHPR1101MB2160.namprd11.prod.outlook.com;PTR:;CAT:NONE;SFS:(346002)(376002)(39860400002)(396003)(366004)(136003)(55016002)(9686003)(30864003)(66476007)(26005)(66946007)(86362001)(8936002)(2906002)(33656002)(76116006)(110136005)(71200400001)(316002)(52536014)(38100700002)(8676002)(53546011)(6506007)(7696005)(66446008)(966005)(186003)(83380400001)(66574015)(66556008)(5660300002)(478600001)(64756008);DIR:OUT;SFP:1102; x-ms-exchange-antispam-messagedata: =?utf-8?B?OHJMYXJMYmVLcVlndzBLTmpLODllYlcrNGszUFZNZkpyMXpOQ2xSUGdzb0g2?= =?utf-8?B?VURZR2hLbDYrbmt0K1JYUjduNjhsa2kyaS81OXZFL1d6ZkZHemZrZUkzQXp0?= =?utf-8?B?RXJzdzFYd01DcmRxYUJnNGdxODRMWDVoYVN5MVdnc1BSU3Q0OW4xdk5wSzRR?= =?utf-8?B?UW5JYlRTcmdSZG4xVXUyUzdLS09ySXR2ZkZSUDhtNGNXWHVzMUZwRldVMnRE?= =?utf-8?B?TmI3b1Z2ZWVxMC9iTCtxLzgwQTNDY1RTNGkvVzZRY29NbWpHd012d2pDL01a?= =?utf-8?B?STlGdkN6dkVDNXpCUjZRVTlFa0E2Y2pxWGtXSVRaQW5DMFFlTGtFbFZMVmhZ?= =?utf-8?B?bThZMVBqeTlaUDFMK0hMcjNtVk5nTTAzQ0cvZEEwZ0JUeTNJc0RSazdvQ01F?= =?utf-8?B?TzVSYzREaG43cW9GK245ZWIzdkU5NHQreEdkeEdjT3M0RDlKdGVBYXZ0S2cy?= =?utf-8?B?ekppSFlSL2Z0ZmxDZFowR25EWm8xdlhvUXRBNThldFVvb1VYekppTDZ4Sy9q?= =?utf-8?B?UG1GSGE2WFZab1doM3JFUU9rSW5KYjZpYnBNUmJHM3JTRS81cVo5OFVDSHpJ?= =?utf-8?B?bTFVUWxOT004TlAyNjJqWndaZnhRT1FsZVlCdk96TjE4VEE5dFBBMTBCK0NE?= =?utf-8?B?a0YxcWJPTy9uZ1RGT0ZxanpSelZVMVVqUnRCQ0FBeldaL2V4UjhIcEpVUHMr?= =?utf-8?B?UnIvSDczMjlmQzd6Y1J3N2xQOUNucmRUeUJyeVllWUY0cDJ3R2l0V2dJWVM4?= =?utf-8?B?KzZjcWs0VFVHRG1LZWZlVnVKTi9Da0hXOHlnY0VVTjhpaHd1UmN0WExzZVJz?= =?utf-8?B?TXJ6VTVkQldGQkVaZXA3RXkwWENLcFBzVGZFUThtQXhYcDdEU2hteFR5WXR4?= =?utf-8?B?NkViMVRIbDZHeXJVdk83eXhYTmw1RkNWc29QY1FURXNmZGxtWXVkQkwxN0xF?= =?utf-8?B?S0FjOEZJVHh1WlU0R0l5QURadWFuSDk5Nk1uN05MT09GcENmVUJhai9CbXV2?= =?utf-8?B?c3BYNWNBL1dPMkp2K0kwWE1TdnIzU1hiemZCYkdFc1RVYk9tOGk0Y3I3STJZ?= =?utf-8?B?VE1qL0V6N2hTaEhSZmVOUVNmVzdPYXN2TmxUL1FycjhlR1U3TUpraWJzZ2pY?= =?utf-8?B?VmFVUVFtSkJLdjB1T1pldVRkd1plVlZpdXNrM0E3Zk1FVlZlWnNFQUJIYk5r?= =?utf-8?B?eUNoZzZMTkMvVUdtNlk4VHpJMFZOZ2lEaEE1WWJ6QzBDMHFhT3dBVWpaVEdp?= =?utf-8?B?WnQrUmxhcFBzQy8yR3ZqN1VnN3pVcml0cXdRZW5XWWdLNnRoaUwyaXQrbTVO?= =?utf-8?B?eDd4UUlMRVJIWHhtZlVqR1Y4dkFhZFNKaHFjdk1RbXppTjV3UllaNEZmVytn?= =?utf-8?B?OFQ5b1ZnVnJPVnBadncvc25sTmtZNDBDeW1VeTEvYkllY2t2bkdoK3o5UnA5?= =?utf-8?B?aDF5QXIvc0RWeG0wRFJ6SUNLZm9LQmNZK1hzQzc4Nm1Za3gvUlNFVkhSQmxm?= =?utf-8?B?ZFNXbm5nZVluY2dpNGd6cWViNlNaSkZMdnZza2JOU2RNN3k3SGFoa0oxVHIx?= =?utf-8?B?RmV1YnBZOFoxaVBUNEZGdFZxY3FESDAyWkNMQjYva2ZBMkcwZnB3NVM2djhZ?= =?utf-8?B?RXVrMWRnM0tDQUtxTnE0WXdmdWhNWnRxK21VYUduOHF3YmxWdElka2dWVmg2?= =?utf-8?B?OTN2ZTdENDZyZmtDSTM5cWpDWkgrd0liK1h0T3V4UUpOcXQ5aDVYc1l6NThv?= =?utf-8?Q?BlpgLSSzKtw0nX/d99fbMqLCZLRcJfYKwxHp896?= MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: MWHPR1101MB2160.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0421b0e6-3e04-4c90-d7f6-08d8fe16eb69 X-MS-Exchange-CrossTenant-originalarrivaltime: 13 Apr 2021 00:56:06.4103 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: tfWf53phcMfRuY79e+2JW52wAOBrx3/NGxJK+egGBkZezUztJLApblaRhbeKeVYulySHW43lSE3u/LLtPYGHuixQm8ki6/2v+lCe82W7hMc= X-MS-Exchange-Transport-CrossTenantHeadersStamped: MWHPR11MB1359 Return-Path: nathaniel.l.desimone@intel.com X-OriginatorOrg: intel.com Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SGkgTWFydmluLA0KDQpJIGFncmVlIHdpdGggTWlrZSBLIHRoYXQgaGF2aW5nIGJvdGggdGhlIG5l dyBzdHJpY3QgbG9hZGVyIGFuZCB0aGUgb2xkIGxvYWRlciBjby1leGlzdCBmb3Igc29tZSB0aW1l IG1heSBiZSB0aGUgYmVzdCBvcHRpb24uIFRoYXQgd2lsbCBnaXZlIHRoZSBlY29zeXN0ZW0gdGlt ZSB0byB0ZXN0IHRoZSBuZXcgbG9hZGVyIGFuZCBjb3JyZWN0IGFueSBpc3N1ZXMgdGhhdCBhcmlz ZSBmcm9tIGl0cyBpbnRyb2R1Y3Rpb24uDQoNCkJlc3QgUmVnYXJkcywNCk5hdGUNCg0KLS0tLS1P cmlnaW5hbCBNZXNzYWdlLS0tLS0NCkZyb206IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQu a2lubmV5QGludGVsLmNvbT4gDQpTZW50OiBNb25kYXksIEFwcmlsIDEyLCAyMDIxIDU6MjAgUE0N ClRvOiBNYXJ2aW4gSMOkdXNlciA8bWhhZXVzZXJAcG9zdGVvLmRlPjsgZGV2ZWxAZWRrMi5ncm91 cHMuaW87IERlc2ltb25lLCBOYXRoYW5pZWwgTCA8bmF0aGFuaWVsLmwuZGVzaW1vbmVAaW50ZWwu Y29tPjsgTGFzemxvIEVyc2VrIDxsZXJzZWtAcmVkaGF0LmNvbT47IEFuZHJldyBGaXNoIDxhZmlz aEBhcHBsZS5jb20+OyBLaW5uZXksIE1pY2hhZWwgRCA8bWljaGFlbC5kLmtpbm5leUBpbnRlbC5j b20+DQpTdWJqZWN0OiBSRTogW2VkazItZGV2ZWxdIFtHU29DIHByb3Bvc2FsXSBTZWN1cmUgSW1h Z2UgTG9hZGVyDQoNCkhpIE1hcnZpbiwNCg0KSWYgaXQgaGFzIG5vdCBhbHJlYWR5IGJlZW4gY29u c2lkZXJlZCwgb25lIG9wdGlvbiBpcyB0byBzdWJtaXQgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIFBF L0NPRkYgTGlicmFyeSwgc28gYm90aCB0aGUgZXhpc3Rpbmcgb25lIGFuZCB0aGUgbmV3IG9uZSBh cmUgYXZhaWxhYmxlIHRvIHRoZSBlY29zeXN0ZW0uDQoNClRoaXMgYWxsb3dzIHlvdSB0byBiZSBz dWNjZXNzZnVsIGluIHN1Ym1pdHRpbmcgY29kZSBvdXRsaW5lZCBpbiB5b3VyIHByb3Bvc2FsIGFu ZCBnaXZlcyB0aGUgZWNvc3lzdGVtIHRpbWUgdG8gZXZhbHVhdGUgYW5kIGRlY2lkZSB3aGVuL2lm IHRvIHN3aXRjaCBmcm9tIHRoZSBvbGQgdG8gdGhlIG5ldy4NCg0KTWlrZQ0KDQo+IC0tLS0tT3Jp Z2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IE1hcnZpbiBIw6R1c2VyIDxtaGFldXNlckBwb3N0 ZW8uZGU+DQo+IFNlbnQ6IE1vbmRheSwgQXByaWwgMTIsIDIwMjEgMTA6MjIgQU0NCj4gVG86IGRl dmVsQGVkazIuZ3JvdXBzLmlvOyBEZXNpbW9uZSwgTmF0aGFuaWVsIEwgDQo+IDxuYXRoYW5pZWwu bC5kZXNpbW9uZUBpbnRlbC5jb20+OyBMYXN6bG8gRXJzZWsgPGxlcnNla0ByZWRoYXQuY29tPjsg DQo+IEFuZHJldyBGaXNoIDxhZmlzaEBhcHBsZS5jb20+OyBLaW5uZXksIE1pY2hhZWwgRCANCj4g PG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPg0KPiBTdWJqZWN0OiBSZTogW2VkazItZGV2ZWxd IFtHU29DIHByb3Bvc2FsXSBTZWN1cmUgSW1hZ2UgTG9hZGVyDQo+IA0KPiBHb29kIGRheSBOYXRl LA0KPiANCj4gQXMgeW91IHNlZW0gdG8gYmUgbW9zdGx5IGluIGNoYXJnZSBvZiB0aGUgR1NvQyBz aWRlIG9mIHRoaW5ncywgSSANCj4gZGlyZWN0IHRoaXMgYXQgeW91LCBidXQgb2YgY291cnNlIGV2 ZXJ5b25lIGlzIHdlbGNvbWUgdG8gY29tbWVudC4NCj4gDQo+IEkgdGhpbmsgSSBmaW5pc2hlZCBt eSBmaXJzdCByb3VuZCBvZiBpbnZlc3RpZ2F0aW9ucyBqdXN0IGluIHRpbWUgZm9yIA0KPiB0aGUg ZGVhZGxpbmUuIFlvdSBjYW4gZmluZCBhIGxpc3Qgb2YgQlpzIGF0dGFjaGVkWzFdLiBQbGVhc2Ug bm90ZSB0aGF0IA0KPiAxKSBzb21lIGFyZSBkZWNsYXJlZCBzZWN1cml0eSBpc3N1ZXMgYW5kIG1h eSBub3QgYmUgcHVibGljbHkgDQo+IGFjY2Vzc2libGUsIGFuZCAyKSB0aGF0IHRoaXMgbGlzdCBp cyBmYXIgZnJvbSBjb21wbGV0ZS4gSSBvbmx5IGFkZGVkIA0KPiBpdGVtcyB0aGF0IGFyZQ0KPiBh KSBub3QgaW1wbGljaXRseSBmaXhlZCBieSAic2ltcGx5IiBkZXBsb3lpbmcgdGhlIG5ldyBJbWFn ZSBMb2FkZXINCj4gKCpzb21lKiBpbXBvcnRhbnQgcHJlcmVxdWlzaXRlcyBhcmUgbGlzdGVkKSwg YW5kIGIpIEkgYW0gY29uZmlkZW50IGFyZSANCj4gYWN0dWFsIGlzc3VlcyAob3IgdGhpbmdzIHRv IGNvbnNpZGVyKSBJIGJlbGlldmUgdG8ga25vdyBob3cgdG8gYXBwcm9hY2guDQo+IA0KPiBJIGhh dmUgdGFrZW4gbm90ZXMgYWJvdXQgbW9yZSB0aGluZ3MsIGUuZy4gdGhlIGV4aXN0ZW5jZSBvZiB0 aGUgDQo+IHNlY3VyaXR5IGFyY2hpdGVjdHVyYWwgcHJvdG9jb2xzLCB3aGljaCBJIGNvdWxkIG5v dCBmaW5kIGEgcmF0aW9uYWxlIA0KPiBmb3IuIEkgY2FuIHByZXBhcmUgc29tZXRoaW5nIGZvciB0 aGlzIG1hdHRlciwgYnV0IGl0IHJlYWxseSBuZWVkcyBhbiANCj4gYWN0aXZlIGRpc2N1c3Npb24g d2l0aCBzb21lIG9mIHRoZSBjb3JlIHBlb3BsZS4gSSdtIG5vdCBzdXJlIGRlbGF5ZWQgDQo+IGUt bWFpbCBkaXNjdXNzaW9uIGlzIGdvaW5nIHRvIGJlIGVub3VnaCwgYnV0IHRoZXJlIGlzIGFuIG9m ZmljaWFsIElSQyANCj4gSSBzdXBwb3NlLiA6KSBJIGhvcGUgd2UgY2FuIHdvcmsgc29tZXRoaW5n IG91dCBmb3IgdGhpcy4NCj4gDQo+IEkgYWxzbyBob3BlIHRoaXMgbWFrZXMgaXQgY2xlYXJlciB3 aHkgSSBkb24ndCBiZWxpZXZlIHRoYXQgd2UgbmVlZCB0byANCj4gImZpbGwiIDEwIHdlZWtzLCBi dXQgcmF0aGVyIHRoZSBvcHBvc2l0ZS4gVGhpcyBpcyBub3QgYSBtYXR0ZXIgb2YgDQo+IHJlcGxh Y2luZyBhIGxpYnJhcnkgaW5zdGFuY2UsIGJ1dCB0aGUgd2hvbGUgc3Vycm91bmRpbmcgZWNvc3lz dGVtIA0KPiBuZWVkcyB0byBmb2xsb3cgZm9yIHRoZSBjaGFuZ2VzIHRvIG1ha2Ugc2Vuc2UuIEFu ZCBhcyBJIHRyaWVkIHRvIG1ha2UgDQo+IGNsZWFyIGluIG15IGRpc2N1c3Npb24gd2l0aCBNaWNo YWVsIEJyb3duLCBJIGFtIG5vdCBrZWVuIG9uIHByZXNlcnZpbmcgDQo+IGJhY2t3YXJkcy1jb21w YXRpYmlsaXR5IHdpdGggcGxhdGZvcm0gY29kZSAoaS5lLiBQRUksIERYRSwgdGhpbmdzIHdlIA0K PiBjb25zaWRlciAiaW50ZXJuYWwiKSwgYXMgbW9zdCBvZiBpdCBzaG91bGQgYmUgY29udHJvbGxl ZCBieSBFREsgSUkgDQo+IGFscmVhZHkuIFRoaXMgb2YgY291cnNlIGRvZXMgKm5vdCogaW5jbHVk ZSB1c2VyIGNvZGUgKE9ST01zLCANCj4gYm9vdGxvYWRlcnMsIC4uLiksIGZvciB3aGljaCBJIHdh bnQgdG8gcHJvdmlkZSB0aGUgKm9wdGlvbiogdG8gbG9jayANCj4gc29tZSBvZiB0aGVtIG91dCBm b3Igc2VjdXJpdHksIGJ1dCB3aXRoIHNhbmUgZGVmYXVsdHMgdGhhdCB3aWxsIGVuc3VyZSANCj4g Z29vZCBjb21wYXRpYmlsaXR5Lg0KPiANCj4gSSdkIGxpa2UgdG8gdGhhbmsgTWljaGFlbCBCcm93 biBmb3IgaGlzIGNvb3BlcmF0aW9uIGFuZCBzdXBwb3J0LCANCj4gYmVjYXVzZSB3ZSByZWNlbnRs eSBsYW5kZWQgY2hhbmdlcyBpbiBpUFhFIHRvIGFsbG93IGZvciB0aGUgc3RyaWN0ZXN0IA0KPiBp bWFnZSBmb3JtYXQgYW5kIHBlcm1pc3Npb24gY29uc3RyYWludHMgY3VycmVudGx5IHBvc3NpYmxl WzJdLg0KPiANCj4gSSB3aWxsIGhhdmUgdG8gcmV3b3JrIHRoZSBzdWJtaXR0ZWQgcHJvcG9zYWwg dG8gcmVmbGVjdCB0aGUgbmV3IA0KPiBrbm93bGVkZ2UuIFRvIGJlIGhvbmVzdCwgc2VlaW5nIGhv dyB0aGUgQlpzIGtlcHQgcm9sbGluZyBpbiwgSSBhbSBub3QgDQo+IGNvbnZpbmNlZCBhbiBhbWF6 aW5nIGFtb3VudCBvZiBtYWlubGluaW5nIGNhbiBiZSBhY2NvbXBsaXNoZWQgZHVyaW5nIA0KPiB0 aGUNCj4gMTAgd2Vla3MuIEl0IG1heSBoYXZlIHRvIHN1ZmZpY2UgdG8gaGF2ZSBhIHB1YmxpY2x5 IGFjY2Vzc2libGUgDQo+IHByb3RvdHlwZSAoZS5nLiBPVk1GKSBhbmQgYSBzdWJzZXQgb2YgdGhl IHBsYW5uZWQgcGF0Y2hlcyBvbiB0aGUgbGlzdC4gDQo+IEkgaG9wZSB5b3UgY2FuIG1hbmFnZSB0 byBwcm92aWRlIHNvbWUgZmVlZGJhY2sgYmVmb3JlIHRoZSBkZWFkbGluZSBwYXNzZXMgdG9tb3Jy b3cuDQo+IA0KPiBUaGFuayB5b3UgaW4gYWR2YW5jZSENCj4gDQo+IEJlc3QgcmVnYXJkcywNCj4g TWFydmluDQo+IA0KPiBbMV0NCj4gaHR0cHM6Ly9idWd6aWxsYS50aWFub2NvcmUub3JnL3Nob3df YnVnLmNnaT9pZD0zMzE1DQo+IGh0dHBzOi8vYnVnemlsbGEudGlhbm9jb3JlLm9yZy9zaG93X2J1 Zy5jZ2k/aWQ9MzMxNg0KPiBodHRwczovL2J1Z3ppbGxhLnRpYW5vY29yZS5vcmcvc2hvd19idWcu Y2dpP2lkPTMzMTcNCj4gaHR0cHM6Ly9idWd6aWxsYS50aWFub2NvcmUub3JnL3Nob3dfYnVnLmNn aT9pZD0zMzE4DQo+IGh0dHBzOi8vYnVnemlsbGEudGlhbm9jb3JlLm9yZy9zaG93X2J1Zy5jZ2k/ aWQ9MzMxOQ0KPiBodHRwczovL2J1Z3ppbGxhLnRpYW5vY29yZS5vcmcvc2hvd19idWcuY2dpP2lk PTMzMjANCj4gaHR0cHM6Ly9idWd6aWxsYS50aWFub2NvcmUub3JnL3Nob3dfYnVnLmNnaT9pZD0z MzIxDQo+IGh0dHBzOi8vYnVnemlsbGEudGlhbm9jb3JlLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzMy Mg0KPiBodHRwczovL2J1Z3ppbGxhLnRpYW5vY29yZS5vcmcvc2hvd19idWcuY2dpP2lkPTMzMjMN Cj4gaHR0cHM6Ly9idWd6aWxsYS50aWFub2NvcmUub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzI0DQo+ IGh0dHBzOi8vYnVnemlsbGEudGlhbm9jb3JlLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzMyNg0KPiBo dHRwczovL2J1Z3ppbGxhLnRpYW5vY29yZS5vcmcvc2hvd19idWcuY2dpP2lkPTMzMjcNCj4gaHR0 cHM6Ly9idWd6aWxsYS50aWFub2NvcmUub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzI4DQo+IGh0dHBz Oi8vYnVnemlsbGEudGlhbm9jb3JlLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzMyOQ0KPiBodHRwczov L2J1Z3ppbGxhLnRpYW5vY29yZS5vcmcvc2hvd19idWcuY2dpP2lkPTMzMzANCj4gaHR0cHM6Ly9i dWd6aWxsYS50aWFub2NvcmUub3JnL3Nob3dfYnVnLmNnaT9pZD0zMzMxDQo+IA0KPiBbMl0gaHR0 cHM6Ly9naXRodWIuY29tL2lweGUvaXB4ZS9wdWxsLzMxMw0KPiANCj4gT24gMDYuMDQuMjEgMTE6 NDEsIE5hdGUgRGVTaW1vbmUgd3JvdGU6DQo+ID4gSGkgTWFydmluLA0KPiA+DQo+ID4gR3JlYXQg dG8gbWVldCB5b3UgYW5kIHdlbGNvbWUgYmFjayEgR2xhZCB5b3UgaGVhciB5b3UgYXJlIA0KPiA+ IGludGVyZXN0ZWQhIENvbXBsZXRpbmcgYSBmb3JtYWwgdmVyaWZpY2F0aW9uIG9mIGEgUEUvQ09G Rg0KPiBsb2FkZXIgaXMgY2VydGFpbmx5IGltcHJlc3NpdmUuIFdhcyB0aGlzIGRvbmUgd2l0aCBz b21lIHNvcnQgb2YgDQo+IGF1dG9tYXRlZCB0aGVvcmVtIHByb3Zpbmc/IEl0IHdvdWxkIHNlZW0g YSByYXRoZXIgYXJkdW91cyB0YXNrIGRvaW5nIA0KPiBhbiBpbmR1Y3RpdmUgcHJvb2YgZm9yIGFu IGFsZ29yaXRobSBsaWtlIHRoYXQgYnkgaGFuZCEgSSBjb21wbGV0ZWx5IGFncmVlIHdpdGggeW91 IHRoYXQgZ2V0dGluZyBhIGZvcm1hbGx5IHZlcmlmaWVkIFBFL0NPRkYgbG9hZGVyIGludG8gbWFp bmxpbmUgaXMgdW5kb3VidGFibHkgdmFsdWFibGUgYW5kIHdvdWxkIHBheSBzZWN1cml0eSBkaXZp ZGVuZHMgZm9yIHllYXJzIHRvIGNvbWUuDQo+ID4NCj4gPiBBZG1pdHRlZGx5LCB0aGlzIGlzIGFu IGFyZWEgb2YgY29tcHV0ZXIgc2NpZW5jZSB0aGF0IEkgZG9uJ3QgaGF2ZSBhIA0KPiA+IGdyZWF0 IGRlYWwgb2YgZXhwZXJpZW5jZSB3aXRoLiBUaGUgZnVydGhlc3QgSSBoYXZlDQo+IGdvbmUgb24g dGhpcyB0b3BpYyBpcyB3cml0aW5nIG91dCBwcm9vZnMgZm9yIHNpbXBsZSBhbGdvcml0aG1zIG9u IA0KPiBleGFtcyBpbiBteSBBbGdvcml0aG1zIGNsYXNzIGluIGNvbGxlZ2UuIFJlZ2FyZGxlc3Mg eW91IGhhdmUgYSBtdWNoIA0KPiBiZXR0ZXIgaWRlYSBvZiB3aGF0IHRoZSBjdXJyZW50IHN0YXR1 cyBpcyBvZiB0aGUgd29yayB0aGF0IHlvdSBhbmQgDQo+IFZpdGFseSBoYXZlIGRvbmUuIEkgZ3Vl c3MgbXkgb25seSBxdWVzdGlvbiBpcyBkbyB5b3UgdGhpbmsgdGhlcmUgaXMgDQo+IHN1ZmZpY2ll bnQgd29yayByZW1haW5pbmcgdG8gZmlsbCB0aGUgMTAgd2VlayBHU29DIGRldmVsb3BtZW50IHdp bmRvdz8gQ2VydGFpbmx5IHdlIGNhbiB1c2Ugc29tZSBvZiB0aGF0IHRpbWUgdG8gcGVyZm9ybSB0 aGUgY29kZSByZXZpZXdzIHlvdSBtZW50aW9uIGFuZCB3cml0ZSB1cCBmb3JtYWwgRUNScyBmb3Ig dGhlIFVFRkkgc3BlYyBjaGFuZ2VzIHRoYXQgeW91IGJlbGlldmUgYXJlIG5lZWRlZC4NCj4gPg0K PiA+IFRoYW5rIHlvdSBmb3Igc2VuZGluZyB0aGUgYXBwbGljYXRpb24gYW5kIGFsZXJ0aW5nIHVz IHRvIHRoZSBncmVhdCANCj4gPiB3b3JrIHlvdSBhbmQgVml0YWx5IGhhdmUgZG9uZSEgSSdsbCBy ZWFkIHlvdXIgcGFwZXINCj4gbW9yZSBjbG9zZWx5IGFuZCBjb21lIGJhY2sgd2l0aCBhbnkgcXVl c3Rpb25zIEkgc3RpbGwgaGF2ZS4NCj4gPg0KPiA+IFdpdGggQmVzdCBSZWdhcmRzLA0KPiA+IE5h dGUNCj4gPg0KPiA+PiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+PiBGcm9tOiBkZXZl bEBlZGsyLmdyb3Vwcy5pbyA8ZGV2ZWxAZWRrMi5ncm91cHMuaW8+IE9uIEJlaGFsZiBPZiANCj4g Pj4gTWFydmluIEjDpHVzZXINCj4gPj4gU2VudDogU3VuZGF5LCBBcHJpbCA0LCAyMDIxIDQ6MDIg UE0NCj4gPj4gVG86IGRldmVsQGVkazIuZ3JvdXBzLmlvOyBMYXN6bG8gRXJzZWsgPGxlcnNla0By ZWRoYXQuY29tPjsgQW5kcmV3IA0KPiA+PiBGaXNoIDxhZmlzaEBhcHBsZS5jb20+OyBLaW5uZXks IE1pY2hhZWwgRCANCj4gPj4gPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPg0KPiA+PiBTdWJq ZWN0OiBbZWRrMi1kZXZlbF0gW0dTb0MgcHJvcG9zYWxdIFNlY3VyZSBJbWFnZSBMb2FkZXINCj4g Pj4NCj4gPj4gR29vZCBkYXkgZXZlcnlvbmUsDQo+ID4+DQo+ID4+IEknbGwga2VlcCB0aGUgaW50 cm9kdWN0aW9uIGJyaWVmIGJlY2F1c2UgSSd2ZSBiZWVuIGFyb3VuZCBmb3IgYSANCj4gPj4gd2hp bGUgbm93LiA6KSBJJ20gTWFydmluIEjDpHVzZXIsIGEgdGhpcmQteWVhciBDb21wdXRlciBTY2ll bmNlIA0KPiA+PiBzdHVkZW50IGZyb20gVFUgS2Fpc2Vyc2xhdXRlcm4sIEdlcm1hbnkuIExhdGUg bGFzdCB5ZWFyLCBteSANCj4gPj4gY29sbGVhZ3VlIFZpdGFseSBmcm9tIElTUCBSQVMgYW5kIG1l IGludHJvZHVjZWQgYSBmb3JtYWxseSB2ZXJpZmllZCANCj4gPj4gSW1hZ2UgTG9hZGVyIGZvciBV RUZJIHVzYWdlIGF0IElTUCBSQVMgT3BlblsxXSBkdWUgdG8gdmFyaW91cyANCj4gPj4gZGVmZWN0 cyB3ZSBvdXRsaW5lZCBpbiB0aGUgY29ycmVzcG9uZGluZyBwYXBlci4gVGhhbmsgeW91IG9uY2Ug YWdhaW4gTGFzemxvIGZvciB5b3VyICppbmNyZWRpYmxlKiByZXZpZXcgd29yayBvbiB0aGUgcHVi bGljYXRpb24gcGFydC4NCj4gPj4NCj4gPj4gSSBub3cgd2FudCB0byBtYWtlIGFuIGVmZm9ydCB0 byBtYWlubGluZSBpdCwgcHJlZmVyYWJseSBhcyBwYXJ0IG9mIA0KPiA+PiB0aGUgY3VycmVudCBH b29nbGUgU3VtbWVyIG9mIENvZGUgZXZlbnQuIFRvIGJlIGNsZWFyLCBteSBpbnRlcm5zaGlwIA0K PiA+PiBhdCBJU1AgUkFTIGhhcyBjb25jbHVkZWQsIGFuZCB3aGlsZSBWaXRhbHkgd2lsbCBiZSBh dmFpbGFibGUgZm9yIA0KPiA+PiBkZXNpZ24gZGlzY3Vzc2lvbiwgaGUgaGFzIG90aGVyIHByaW9y aXRpZXMgYXQgdGhlIG1vbWVudCBhbmQgdGhlIA0KPiA+PiBwcmFjdGljYWwgcGFydCB3aWxsIGJl IG9uIG1lLiBJIGhhdmUgcHJldmlvdXNseSBzdWJtaXR0ZWQgYSBwcm9wb3NhbCB2aWEgdGhlIEdT b0Mgd2Vic2l0ZSBmb3IgeW91ciByZXZpZXcuDQo+ID4+DQo+ID4+IFRoZXJlIGFyZSBtYW55IHRo aW5ncyB0byBjb25zaWRlcjoNCj4gPj4gMS4gVGhlIEltYWdlIExvYWRlciBpcyBhIGNvcmUgY29t cG9uZW50LCBhbmQgdGhlcmUgbmVlZHMgdG8gYmUgYSANCj4gPj4gc2lnbmlmaWNhbnQgbGV2ZWwg b2YgcXVhbGl0eSBhbmQgc2VjdXJpdHkgYXNzdXJhbmNlLg0KPiA+PiAyLiBCZWluZyBjb25zdW1l ZCBieSBtYW55IHBhY2thZ2VzLCB0aGUgcHJvcG9zZWQgcGF0Y2ggc2V0IHdpbGwgDQo+ID4+IHRh a2UgYSBsb3Qgb2YgdGltZSB0byByZXZpZXcgYW5kIGludGVncmF0ZS4NCj4gPj4gMy4gRHVyaW5n IG15IGluaXRpYWwgZXhwbG9yYXRpb24sIEkgZGlzY292ZXJlZCBkZWZlY3RpdmUgUFBJcyBhbmQg cHJvdG9jb2xzIChlLmcuDQo+ID4+IHJldHVybmluZyBkYXRhIHdpdGggbm8gY29ycmVzcG9uZGlu ZyBzaXplKSBvcmlnaW5hdGluZyBmcm9tIHRoZSANCj4gPj4gVUVGSSBQSSBhbmQgVUVGSSBzcGVj aWZpY2F0aW9ucy4gQ2hhbmdlcyBuZWVkIHRvIGJlIGRpc2N1c3NlZCwgDQo+ID4+IHNldHRsZWQg b24sIGFuZCBzdWJtaXR0ZWQgdG8gdGhlIFVFRkkgRm9ydW0uDQo+ID4+IDQuIFNvbWUgVUVGSSBB UElzIGxpa2UgdGhlIFNlY3VyaXR5IEFyY2hpdGVjdHVyZSBwcm90b2NvbHMgYXJlIA0KPiA+PiBp bmNvbnZlbmllbnRseSBhYnN0cmFjdCwgc2VlIDUuDQo+ID4+IDUuIFNvbWUgb2YgdGhlIGN1cnJl bnQgY29kZSBkb2VzIG5vdCB1c2UgdGhlIGV4aXN0aW5nIGNvbnRleHQsIG9yIA0KPiA+PiBhY2Nl c3NlcyBpdCBvdXRzaWRlIG9mIHRoZSBleHBvc2VkIEFQSXMuIFRoZSBjb250cm9sIGZsb3cgb2Yg dGhlIA0KPiA+PiBkaXNwYXRjaGVycyBtYXkgbmVlZCB0byBiZSBhZGFwdGVkIHRvIG1ha2UgdGhl IGNvbnRleHQgYXZhaWxhYmxlIHRvIGFwcHJvcHJpYXRlIEFQSXMuDQo+ID4+DQo+ID4+IEJ1dCBv YnZpb3VzbHkgdGhlcmUgYXJlIG5vdCBvbmx5IHVucGxlYXNhbnQgY29uc2lkZXJhdGlvbnM6DQo+ ID4+IEEuIFRoZSBJbWFnZSBMb2FkZXIgaXMgbW9zdGx5IGZvcm1hbGx5IHZlcmlmaWVkLCBhbmQg b25seSB2ZXJ5IGZldyANCj4gPj4gY2hhbmdlcyB3aWxsIGJlIHJlcXVpcmVkIGZyb20gdGhlIGxh c3QgcHJvdmVuIHN0YXRlLiBUaGlzIGdpdmVzIGEgDQo+ID4+IGxvdCBvZiB0cnVzdCBpbiBpdHMg Y29ycmVjdG5lc3MgYW5kIHNhZmV0eS4NCj4gPj4gQi4gQWxsIG91dGxpbmVkIGRlZmVjdHMgdGhh dCBhcmUgb2YgY3JpdGljYWwgbmF0dXJlIGhhdmUgYmVlbiBmaXhlZCBzdWNjZXNzZnVsbHkuDQo+ ID4+IEMuIFRoZSBJbWFnZSBMb2FkZXIgaGFzIGJlZW4gdGVzdGVkIHdpdGggcmVhbC13b3JsZCBj b2RlIGxvYWRpbmcgDQo+ID4+IHJlYWwtd29ybGQgT1NlcyBvbiB0aG91c2FuZHMgb2YgbWFjaGlu ZXMgaW4gdGhlIHBhc3QgZmV3IG1vbnRocywgDQo+ID4+IGluY2x1ZGluZyByZWplY3RpbmcgbWFs Zm9ybWVkIGltYWdlcyAoY29uZmlndXJhYmxlIGJ5IFBDRCkuDQo+ID4+IEQuIFRoZSBuZXcgQVBJ cyB3aWxsIGNlbnRyYWxpc2UgZXZlcnl0aGluZyBQRSwgcmVkdWNpbmcgY29kZSANCj4gPj4gZHVw bGljYXRpb24gYW5kIHBvdGVudGlhbGx5IHVuc2FmZSBvcGVyYXRpb25zLg0KPiA+PiBFLiBDZW50 cmFsaXNpbmcgYW5kIHJlZHVjZWQgcGFyc2UgZHVwbGljYXRpb24gbWF5IGltcHJvdmUgb3ZlcmFs bCANCj4gPj4gYm9vdCBwZXJmb3JtYW5jZS4NCj4gPj4gRi4gVGhlIGNvZGUgaGFzIGJlZW4gY292 ZXJhZ2UtdGVzdGVkIHRvIG5vdCBjb250YWluIGRlYWQgY29kZS4NCj4gPj4gRy4gVGhlIGNvZGUg aGFzIGJlZW4gZnV6ei10ZXN0ZWQgaW5jbHVkaW5nIHNhbml0aXplcnMgdG8gbm90IGludm9rZSAN Cj4gPj4gdW5kZWZpbmVkIGJlaGF2aW91ci4NCj4gPj4gSC4gSSBhbHJlYWR5IG1hbmFnZWQgdG8g aWRlbnRpZnkgYSBtYWxmb3JtZWQgaW1hZ2UgaW4gT1ZNRiB3aXRoIGl0cyANCj4gPj4gaGVscCAo aW5jb3JyZWN0bHkgcmVwb3J0ZWQgc2VjdGlvbiBhbGlnbm1lbnQgb2YgYW4gSW50ZWwgSVBYRSAN Cj4gPj4gZHJpdmVyKS4gQSBmaXggd2lsbCBiZSBzdWJtaXR0ZWQgc2hvcnRseS4NCj4gPj4gSS4g SSBwbGFuIHRvIHN1cHBvcnQgUEUgc2VjdGlvbiBwZXJtaXNzaW9ucywgYWxsb3dpbmcgZm9yIHJl YWQtb25seSANCj4gPj4gZGF0YSBzZWdtZW50cyB3aGVuIGVuYWJsZWQuDQo+ID4+DQo+ID4+IFRo ZXJlIGFyZSBsaWtlbHkgbW9yZSBwb2ludHMgZm9yIGJvdGggbGlzdHMsIGJ1dCBJIGhvcGUgdGhp cyBnaXZlcyANCj4gPj4gYSBkZWNlbnQgc3RhcnRpbmcgcG9pbnQgZm9yIGRpc2N1c3Npb24uIFdo YXQgYXJlIHlvdXIgdGhvdWdodHMgb24gDQo+ID4+IHRoZSBtYXR0ZXI/IEkgc3Ryb25nbHkgZW5j b3VyYWdlIGV2ZXJ5b25lIHRvIHJlYWQgdGhlIHNlY3Rpb24gDQo+ID4+IHJlZ2FyZGluZyBkZWZl Y3RzIG9mIG91ciBwdWJsaWNhdGlvblsyXSB0byBiZXR0ZXIgdW5kZXJzdGFuZCB0aGUgDQo+ID4+ IG1vdGl2YXRpb24uIFRoZSB2YWd1ZSBwb2ludHMgYWJvdmUgY2FuIG9mIGNvdXJzZSBiZSBlbGFi b3JhdGVkIGluIGR1ZSB0aW1lLCBhcyB5b3Ugc2VlIGZpdC4NCj4gPj4NCj4gPj4gVGhhbmsgeW91 IGZvciB5b3VyIHRpbWUhDQo+ID4+DQo+ID4+IEJlc3QgcmVnYXJkcywNCj4gPj4gTWFydmluDQo+ ID4+DQo+ID4+DQo+ID4+IFsxXSBodHRwczovL2dpdGh1Yi5jb20vbWhhZXVzZXIvSVNQUkFTT3Bl bi1TZWN1cmVQRQ0KPiA+PiBbMl0gaHR0cHM6Ly9hcnhpdi5vcmcvcGRmLzIwMTIuMDU0NzEucGRm DQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4+DQo+ID4NCj4gPg0KPiA+IA0KPiA+DQo+ID4NCg0K