From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received-SPF: Pass (sender SPF authorized) identity=mailfrom; client-ip=192.55.52.115; helo=mga14.intel.com; envelope-from=michael.a.rothman@intel.com; receiver=edk2-devel@lists.01.org Received: from mga14.intel.com (mga14.intel.com [192.55.52.115]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ml01.01.org (Postfix) with ESMTPS id 679A2211280DF for ; Tue, 5 Jun 2018 20:37:45 -0700 (PDT) X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from orsmga005.jf.intel.com ([10.7.209.41]) by fmsmga103.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 05 Jun 2018 20:37:44 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.49,481,1520924400"; d="scan'208";a="230264559" Received: from orsmsx101.amr.corp.intel.com ([10.22.225.128]) by orsmga005.jf.intel.com with ESMTP; 05 Jun 2018 20:37:44 -0700 Received: from orsmsx155.amr.corp.intel.com (10.22.240.21) by ORSMSX101.amr.corp.intel.com (10.22.225.128) with Microsoft SMTP Server (TLS) id 14.3.319.2; Tue, 5 Jun 2018 20:37:44 -0700 Received: from orsmsx104.amr.corp.intel.com ([169.254.4.129]) by ORSMSX155.amr.corp.intel.com ([169.254.7.24]) with mapi id 14.03.0319.002; Tue, 5 Jun 2018 20:37:43 -0700 From: "Rothman, Michael A" To: "Rothman, Michael A" , "Jim.Dailey@dell.com" , "Ni, Ruiyu" CC: "Carsey, Jaben" , "edk2-devel@lists.01.org" , "felixp@mail.ru" Thread-Topic: How to Interpret ReadKeyStrokeEX Data Thread-Index: AdP51a/hVUcRd8ZXRbW9WoFUsUlqeACUrkrAAEenAFA= Date: Wed, 6 Jun 2018 03:37:43 +0000 Message-ID: References: <3e835c29938d49ea8d285385429870ad@ausx13mps339.AMER.DELL.COM> In-Reply-To: Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 11.0.200.100 dlp-reaction: no-action x-originating-ip: [10.22.254.140] MIME-Version: 1.0 Subject: Re: How to Interpret ReadKeyStrokeEX Data X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.26 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 06 Jun 2018 03:37:45 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 SmltLA0KDQpJIHRoaW5rIHRoZSBwcm9ibGVtIHlvdSdyZSBzZWVpbmcgaXMgdGhhdCB0aGUgVVNC IGtleWJvYXJkIGRyaXZlciB5b3UncmUgdXNpbmcgaXMgZG93bnJldiBhbmQgbmVlZHMgdG8gYmUg dXBkYXRlZC4NCg0KSWYgeW91IGxvb2sgYXQgaHR0cHM6Ly9naXRodWIuY29tL3RpYW5vY29yZS9l ZGsyL2NvbW1pdC9kZDE5MDY0NWViNDM0MjQ3MDZlYjE3MDlkMDAzMmM2OWExOTM1ZDlmIHRoZXJl IHdhcyBhIGZpeCBjaGVja2VkIGluIHRvIGFkZHJlc3MgZXhhY3RseSB0aGUgaXNzdWUgeW91J3Jl IHJ1bm5pbmcgaW50by4gSXQncyBiYXNpY2FsbHkgYSBzeW1wdG9tIG9mIHJ1bm5pbmcgYSBuZXcg c2hlbGwgd2l0aG91dCBhIGNvcnJlc3BvbmRpbmdseSB1cGRhdGVkIGtleWJvYXJkIGRyaXZlci4g VGhlIG5ldyBzaGVsbCBpbiBlZmZlY3QgZXhwb3NlZCBhIGxhdGVudCBidWcuDQoNCkhvcGUgdGhh dCBoZWxwcy4NCg0KVGhhbmtzLA0KTWlrZSBSb3RobWFuIA0KKOi/iOWFiyDnvZfmlq/mm7wgLyDg pK7gpL7gpIfgpJXgpLIg4KSw4KWL4KSl4KWN4KSu4KWH4KSo4KWNIC8g0JzQuNGF0LDQuNC7INCg 0L7RgtC80LDQvSAvINee16nXlCDXqNeV15jXntefKQ0K16jXldei15Qg16LXmden16jXmSDXqdec INeX16rXldec15nXnQ0KDQotLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KRnJvbTogZWRrMi1k ZXZlbCBbbWFpbHRvOmVkazItZGV2ZWwtYm91bmNlc0BsaXN0cy4wMS5vcmddIE9uIEJlaGFsZiBP ZiBSb3RobWFuLCBNaWNoYWVsIEENClNlbnQ6IE1vbmRheSwgSnVuZSA0LCAyMDE4IDEwOjMxIEFN DQpUbzogSmltLkRhaWxleUBkZWxsLmNvbTsgTmksIFJ1aXl1IDxydWl5dS5uaUBpbnRlbC5jb20+ DQpDYzogQ2Fyc2V5LCBKYWJlbiA8amFiZW4uY2Fyc2V5QGludGVsLmNvbT47IGVkazItZGV2ZWxA bGlzdHMuMDEub3JnOyBmZWxpeHBAbWFpbC5ydQ0KU3ViamVjdDogUmU6IFtlZGsyXSBIb3cgdG8g SW50ZXJwcmV0IFJlYWRLZXlTdHJva2VFWCBEYXRhDQoNClNpbmNlIEknbSBsYXJnZWx5IHRoZSBw ZXJzb24gd2hvIG1pZ2h0IGJlIHRvIGJsYW1lIGZvciB0aGUgbGFuZ3VhZ2UgYW5kIGludGVudCBo ZXJlIGFuZCBJ4oCZbGwgZm9jdXMgb24gdGhlIHNwZWMtcmVsYXRlZCBpdGVtLiAgU2VlIG15IGNv bW1lbnRzIGJlbG93Lg0KDQoNCg0KVGhhbmtzLA0KDQpNaWtlIFJvdGhtYW4NCg0KKOi/iOWFiyDn vZfmlq/mm7wgLyDgpK7gpL7gpIfgpJXgpLIg4KSw4KWL4KSl4KWN4KSu4KWH4KSo4KWNIC8g0JzQ uNGF0LDQuNC7INCg0L7RgtC80LDQvSAvINee16nXlCDXqNeV15jXntefKQ0KDQrXqNeV16LXlCDX oteZ16fXqNeZINep15wg15fXqteV15zXmdedDQoNCg0KDQoNCg0KLS0tLS1PcmlnaW5hbCBNZXNz YWdlLS0tLS0NCkZyb206IGVkazItZGV2ZWwgW21haWx0bzplZGsyLWRldmVsLWJvdW5jZXNAbGlz dHMuMDEub3JnXSBPbiBCZWhhbGYgT2YgSmltLkRhaWxleUBkZWxsLmNvbQ0KU2VudDogRnJpZGF5 LCBKdW5lIDEsIDIwMTggMTE6MjcgQU0NClRvOiBOaSwgUnVpeXUgPHJ1aXl1Lm5pQGludGVsLmNv bT4NCkNjOiBDYXJzZXksIEphYmVuIDxqYWJlbi5jYXJzZXlAaW50ZWwuY29tPjsgZWRrMi1kZXZl bEBsaXN0cy4wMS5vcmc7IGZlbGl4cEBtYWlsLnJ1DQpTdWJqZWN0OiBbZWRrMl0gSG93IHRvIElu dGVycHJldCBSZWFkS2V5U3Ryb2tlRVggRGF0YQ0KDQoNCg0KKFN1YmplY3QgY2hhbmdlZCkNCg0K DQoNCkkgZ3Vlc3MgdGhpcyBpcyBhIHF1ZXN0aW9uIG9mIFVFRkkgc3BlYyBpbnRlcnByZXRhdGlv bi4gIEluIHRoZSBDb25zb2xlIEkvTyBQcm90b2NvbCBkZXNjcmlwdGlvbiBvZiBWZXJzaW9uIDIu NSBvZiB0aGUgc3BlYyAocGFnZSA0NTYpLCBpdCBzYXlzOg0KDQoNCg0KICAgIElmIHRoZSBTY2Fu IENvZGUgaXMgc2V0IHRvIDB4MDAgdGhlbiB0aGUgVW5pY29kZSBjaGFyYWN0ZXIgaXMNCg0KICAg IHZhbGlkIGFuZCBzaG91bGQgYmUgdXNlZC4NCg0KDQoNClRvIG1lIHRoYXQgY2xlYXJseSBzYXlz IGl0IGFsbC4gIFRoZSBzaGlmdCBtb2RpZmllciBpcyBhIGRvbid0IGNhcmUgd2hlbiB0aGUgc2Nh biBjb2RlIGlzIHplcm8uICBBbmQsIHRoaXMgY2hhbmdlIGluIHRoZSBzaGVsbCBjb2RlIHNlZW1z IHRvIGJlIGEgdmlvbGF0aW9uIG9mIHRoYXQgc3RhdGVtZW50Lg0KDQoNCg0KSG93ZXZlciwgSSBh bHNvIHNlZSBzb21lIGNvbmZ1c2luZyAoYW5kIGdyYW1tYXRpY2FsbHkgaW5jb3JyZWN0KSB0ZXh0 IGluIHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgUmVhZEtleVN0cm9rZUV4KCkgZnVuY3Rpb24gb2Yg dGhlIHNpbXBsZSB0ZXh0IGluIHByb3RvY29sIHRoYXQgSSBhbSBndWVzc2luZyBpcyByZWxhdGVk IHRvIHRoaXMgY2hhbmdlICgqZW1waGFzaXMqIG1pbmUpOg0KDQoNCg0KICAgIFdoZW4gaW50ZXJw cmV0aW5nIHRoZSBkYXRhIGZyb20gdGhpcyBmdW5jdGlvbiwgaXQgc2hvdWxkIGJlDQoNCiAgICBu b3RlZCB0aGF0IGlmIGEgY2xhc3Mgb2YgcHJpbnRhYmxlIGNoYXJhY3RlcnMgdGhhdCBhcmUgbm9y bWFsbHkNCg0KICAgICphZGp1c3RlZCogYnkgc2hpZnQgbW9kaWZpZXJzIChlLmcuIFNoaWZ0IEtl eSArICJmIiBrZXkpIHdvdWxkDQoNCiAgICBiZSBwcmVzZW50ZWQgc29sZWx5IGFzIGEgS2V5RGF0 YS5LZXkuVW5pY29kZUNoYXIgd2l0aG91dCB0aGUNCg0KICAgIGFzc29jaWF0ZWQgc2hpZnQgc3Rh dGUuDQoNCg0KDQpXaGF0IEkgdGhpbmsgdGhlIHNwZWMgaXMgdHJ5aW5nIHRvIHNheSBoZXJlIGlz IHRoYXQgZm9yIEEtWiBhbmQgYS16LCB0aGUgY29uc3VtZXIgZG9lcyBOT1QgbmVlZCB0byBsb29r IGF0IHRoZSBzaGlmdCBzdGF0ZSB0byB0ZWxsICJBIiBmcm9tICJhIiwgZm9yIGV4YW1wbGUsIGJl Y2F1c2UgdGhlIFVuaWNvZGUgY2hhcmFjdGVyIHdpbGwgYmUgZWl0aGVyICJBIiBvciAiYSIgYXMg YXBwcm9wcmlhdGUuDQoNCg0KDQpuICBObywgaXQgaXMgYW55IGtleSB0aGF0IHdvdWxkIGNyZWF0 ZSBhIGRpc3BsYXlhYmxlIGNoYXJhY3RlciB0aGF0IGFkanVzdHMgYmFzZWQgb24gdGhlIHNoaWZ0 IHN0YXRlLiBSZWFsaXplIHRoYXQgdGhlIHVzZXJzIG9mIFJlYWRLZXlTdHJva2UvUmVhZEtleVN0 cm9rZUV4IGZhbGwgYmFjayB0byBhIGNvbW1vbiBkZW5vbWluYXRvciBvZiBTY2FuIENvZGUgb3Ig VW5pY29kZSBDaGFyYWN0ZXIuIFNvIGlmIHNvbWVvbmUgdHlwZXMgYSBzaGlmdCA0LCB0aGUgdW5k ZXJseWluZyBrZXlib2FyZCBsYXlvdXQgdGhhdCB0aGUga2V5Ym9hcmQgZHJpdmVyIGNvbnRyb2xz IHdvdWxkIGRpY3RhdGUgaG93IHRoYXQgZ2V0cyB0cmFuc2xhdGVkLiBPbiBteSBrZXlib2FyZCBp biB0aGUgVVMgaXQgdHVybnMgaW50byBhIOKAnCTigJ0gc3ltYm9sLCB3aGlsZSBzb21lb25lIGlu IEV1cm9wZSBtYXkgdmVyeSB3ZWxsIGhhdmUgYSBzb2Z0d2FyZS1kZWZpbmVkIGtleWJvYXJkIGxh eW91dCB3aGljaCB0cmFuc2xhdGVzIHRoZSBzYW1lIGtleXN0cm9rZSB0byBhIOKAnOKCrOKAnSBz eW1ib2wuIFRoYXQgb2YgY291cnNlIGFwcGxpZXMgdG8gdGhlIG1hbnkgY2hhcmFjdGVycyB5b3Ug c3BlY2lmaWVkIChBLUYsIGEtZikgYW5kIG1hbnkgb3RoZXJzLg0KDQpuICBUaGUgdGV4dCBhYm92 ZSBpcyBpbnRlbmRlZCB0byBpbXBseSB3aGF0IGl0IHNheXMsIOKAnGEgY2xhc3Mgb2YgcHJpbnRh YmxlIGNoYXJhY3RlcnMg4oCmIHdvdWxkIGJlIHByZXNlbnRlZCBzb2xlbHkgYXMgYSBLZXlEYXRh LktleS5Vbmljb2RlQ2hhciB3aXRob3V0IHRoZSBhc3NvY2lhdGVkIHNoaWZ0IHN0YXRlLiBUaGlz IG1ha2VzIGNvbnN1bWVycyBvZiBib3RoIHRoZSBFeCBhbmQgTm9uLUV4IHZhcmlhbnQgb2YgUmVh ZEtleVN0cm9rZSBhYmxlIHRvIHVzZSB0aGUgc2FtZSBsb2dpYyB0byB0ZXN0IGZvciBhbnkgc2hp ZnRhYmxlIGNoYXJhY3RlcnMgYnkgc2ltcGx5IGxvb2tpbmcgYXQgdGhlIFVuaWNvZGUgdmFsdWUu IEnigJlkIG5vdGUgdGhlIHNoaWZ0IGFuZCB0b2dnbGUgc3RhdGVzICh3aGljaCBhcmUgb25seSBh dmFpbGFibGUgb24gRXgpIGFyZSB0aGVyZSBub3Qgc28gbXVjaCBmb3IgaW50ZXJwcmV0aW5nIHRo ZSB0cmFuc2xhdGVkIGtleSBidXQgdG8gbWF4aW1pemUgZmxleGliaWxpdHkgYXNzb2NpYXRlZCB3 aXRoIGtleWJvYXJkIG1hcHBpbmcgYXMgYSBVRUZJIGFwcGxpY2F0aW9uLg0KDQoNCg0KSSB0aGlu ayBzYXlpbmcgdGhpcyBpcyB1bm5lY2Vzc2FyeSBzaW1wbHkgYmVjYXVzZSB0aGUgZWFybGllciBz dGF0ZW1lbnQgKElmIHRoZSBTY2FuIENvZGUgaXMgc2V0IHRvIDB4MDAgdGhlbiB0aGUgVW5pY29k ZSBjaGFyYWN0ZXIgaXMgdmFsaWQgYW5kIHNob3VsZCBiZSB1c2VkLikgY292ZXJzIHRoaXMgY2Fz ZS4NCg0KDQoNCkZ1cnRoZXIsIEkgYmVsaWV2ZSB0aGlzIHRleHQgYXBwbGllcyBvbmx5IHRvIHRo ZSBBLVoga2V5cyBiZWNhdXNlIHRoZWlyIGNvcnJlc3BvbmRpbmcgY2hhcmFjdGVycyBhcmUgKmFk anVzdGVkKiAodG8gdXBwZXIgY2FzZSkgd2hlbiB0aGUgc2hpZnQga2V5IGlzIHByZXNzZWQuIFRo YXQgaXMsIGlmIHlvdSBhZGp1c3QgImJsdWUiIHRvICJCTFVFIiwgeW91IGhhdmUgdHdvIGRpZmZl cmVudCBhcHBlYXJhbmNlcywgYnV0IG9ubHkgb25lIG1lYW5pbmcuDQoNCg0KDQpIb3dldmVyLCBh ICIzIiBpcyBub3QgKmFkanVzdGVkKiB0byBhICIjIjsgdGhleSBhcmUgdG90YWxseSBkaWZmZXJl bnQgY2hhcmFjdGVycyB3aXRoIGRpZmZlcmVudCBtZWFuaW5ncyBhbHRvZ2V0aGVyLiBObyBDIHBy ZS1wcm9jZXNzb3Igd291bGQgYmUgaGFwcHkgc2VlaW5nOiAiM2lmZGVmIFNZTUJPTCIuDQoNCg0K DQpJbiBhbnkgY2FzZSwgSSBzZWUgbm90aGluZyBnYWluZWQgYnkgaWdub3Jpbmcga2V5cyBoYXZp bmcgYSB6ZXJvIHNjYW4gY29kZSBhbmQgYSB2YWxpZCBVbmljb2RlIGNoYXJhY3RlcjsgdGhlIHNw ZWMgc2F5cyB0aGF0ICJ0aGUgVW5pY29kZSBjaGFyYWN0ZXIgaXMgdmFsaWQgYW5kIHNob3VsZCBi ZSB1c2VkIi4NCg0KDQoNClJlZ2FyZHMsDQoNCkppbQ0KDQoNCg0KPiAtLS0tLU9yaWdpbmFsIE1l c3NhZ2UtLS0tLQ0KDQo+IEZyb206IE5pLCBSdWl5dSBbbWFpbHRvOnJ1aXl1Lm5pQGludGVsLmNv bV0NCg0KPiBTZW50OiBUaHVyc2RheSwgTWF5IDMxLCAyMDE4IDc6MTkgUE0NCg0KPiBUbzogRGFp bGV5LCBKaW0NCg0KPiBDYzogQ2Fyc2V5LCBKYWJlbjsgZmVsaXhwQG1haWwucnU8bWFpbHRvOmZl bGl4cEBtYWlsLnJ1PjsgZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmc8bWFpbHRvOmVkazItZGV2ZWxA bGlzdHMuMDEub3JnPg0KDQo+IFN1YmplY3Q6IFJFOiBbZWRrMl0gW1BBVENIXSBTaGVsbFBrZy9b aGV4XWVkaXQ6IHVzZSBTaW1wbGVUZXh0SW5FeCB0bw0KDQo+IHJlYWQgY29uc29sZQ0KDQo+DQoN Cj4gQ2FuIHlvdSBjaGVjayB3aGljaCBrZXlib2FyZCBkcml2ZXIgYXJlIHlvdSB1c2luZz8NCg0K PiBUaGUga2V5Ym9hcmQgZHJpdmVyIGlzIGV4cGVjdGVkIHRvIHRyYW5zbGF0ZSAiU0hJRlQiICsg IjMiIHRvICIjIiAod2l0aG91dCBTaGlmdCBzdGF0ZSkuDQoNCj4gSSBrbm93IHRoYXQgc29tZSBr ZXlib2FyZCBkcml2ZXIgZG9lc24ndCBkbyB0aGF0IGNvcnJlY3RseS4NCg0KPiBFLmcuOiBTSElG VCArICIzIiBpcyB0cmFuc2xhdGVkIHRvICIjIiBidXQgdGhlIFNISUZUIHN0YXRlIGlzIG5vdCBt YXNrZWQgb2ZmLg0KDQo+DQoNCj4gW1NvcnJ5IEkgdGhvdWdodCBJIHNlbnQgdGhlIG1haWwgb3V0 IGRheXMgYWdvXQ0KDQo+DQoNCj4+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQoNCj4+IEZy b206IEppbS5EYWlsZXlAZGVsbC5jb208bWFpbHRvOkppbS5EYWlsZXlAZGVsbC5jb20+IFttYWls dG86SmltLkRhaWxleUBkZWxsLmNvbV0NCg0KPj4gU2VudDogV2VkbmVzZGF5LCBNYXkgMjMsIDIw MTggMzowMSBBTQ0KDQo+PiBUbzogTmksIFJ1aXl1IDxydWl5dS5uaUBpbnRlbC5jb208bWFpbHRv OnJ1aXl1Lm5pQGludGVsLmNvbT4+DQoNCj4+IENjOiBDYXJzZXksIEphYmVuIDxqYWJlbi5jYXJz ZXlAaW50ZWwuY29tPG1haWx0bzpqYWJlbi5jYXJzZXlAaW50ZWwuY29tPj47IGZlbGl4cEBtYWls LnJ1PG1haWx0bzpmZWxpeHBAbWFpbC5ydT47IGVkazItDQoNCj4+IGRldmVsQGxpc3RzLjAxLm9y ZzxtYWlsdG86ZGV2ZWxAbGlzdHMuMDEub3JnPg0KDQo+PiBTdWJqZWN0OiBSRTogW2VkazJdIFtQ QVRDSF0gU2hlbGxQa2cvW2hleF1lZGl0OiB1c2UgU2ltcGxlVGV4dEluRXggdG8NCg0KPj4gcmVh ZCBjb25zb2xlDQoNCj4+DQoNCj4+IFJheSwNCg0KPj4NCg0KPj4gVGhlIHBhdGNoIGluIHRoZSBt ZXNzYWdlIGJlbG93IHdhcyBhcHBsaWVkIHRvIHRoZSB0cmVlIG9uIDEyIEZlYiB0aGlzDQoNCj4+ IHllYXIgKDU1NjMyODFmYTJiMzEwOTNhMWNiZDQxNTU1M2I5MjY0YzUxMzZlODkpLg0KDQo+Pg0K DQo+PiBQYXJ0IG9mIHRoZSBjaGFuZ2UgdG8gTWFpblRleHRFZGl0b3IuYyBjYXVzZXMgYW4gaXNz dWUgd2hlcmUgSSBjYW5ub3QNCg0KPj4gZW50ZXIgKGF0IGxlYXN0IHNvbWUpIHNoaWZ0ZWQgcHVu Y3R1YXRpb24uICBGb3IgZXhhbXBsZSwgYWZ0ZXIgdGhpcw0KDQo+PiBjaGVjayBpbiBJIGNhbm5v dCBlZGl0IGEgc2hlbGwgc2NyaXB0IGFuZCBjcmVhdGUgYSBjb21tZW50IGJlY2F1c2UgSSBjYW5u b3QgZW50ZXIgdGhlICIjIiBjaGFyYWN0ZXIuDQoNCj4+IFdoZW4gSSB0cnkgdG8gdHlwZSAiIyIs IHRoZSBzdGF0dXMgYmFyIHNpbXBseSBzaG93cyAiVW5rbm93biBDb21tYW5kIi4NCg0KPj4NCg0K Pj4gSSBkb24ndCByZWFsbHkgdW5kZXJzdGFuZCB0aGUgY2hhbmdlLCBidXQgaWYgaW4gdGhlDQoN Cj4+IE1haW5FZGl0b3JLZXlJbnB1dCBmdW5jdGlvbiBpbiBmaWxlIE1haW5UZXh0RWRpdG9yLmMg SSBkZWxldGUgdGhlICJOb1NoaWZ0U3RhdGUiIGNoZWNrIGZyb20gdGhlIGZpcnN0ICJlbHNlIGlm Ig0KDQo+PiBiZWxvdzoNCg0KPj4NCg0KPj4gKyAgICAgICAgLy8NCg0KPj4gKyAgICAgICAgLy8g ZGlzcGF0Y2ggdG8gZGlmZmVyZW50IGNvbXBvbmVudHMnIGtleSBoYW5kbGluZyBmdW5jdGlvbg0K DQo+PiArICAgICAgICAvLw0KDQo+PiArICAgICAgICBpZiAoRUZJX05PVF9GT1VORCAhPSBNZW51 QmFyRGlzcGF0Y2hDb250cm9sSG90S2V5KCZLZXlEYXRhKSkgew0KDQo+PiArICAgICAgICAgIFN0 YXR1cyA9IEVGSV9TVUNDRVNTOw0KDQo+PiArICAgICAgICB9IGVsc2UgaWYgKE5vU2hpZnRTdGF0 ZSAmJiAoKEtleURhdGEuS2V5LlNjYW5Db2RlID09DQoNCj4+ICsgU0NBTl9OVUxMKSB8fA0KDQo+ PiAoKEtleURhdGEuS2V5LlNjYW5Db2RlID49IFNDQU5fVVApICYmIChLZXlEYXRhLktleS5TY2Fu Q29kZSA8PQ0KDQo+PiBTQ0FOX1BBR0VfRE9XTikpKSkgew0KDQo+PiArICAgICAgICAgIFN0YXR1 cyA9IEZpbGVCdWZmZXJIYW5kbGVJbnB1dCAoJktleURhdGEuS2V5KTsNCg0KPj4gKyAgICAgICAg fSBlbHNlIGlmIChOb1NoaWZ0U3RhdGUgJiYgKEtleURhdGEuS2V5LlNjYW5Db2RlID49IFNDQU5f RjEpDQoNCj4+ICsgJiYNCg0KPj4gKEtleURhdGEuS2V5LlNjYW5Db2RlIDw9IFNDQU5fRjEyKSkg ew0KDQo+PiArICAgICAgICAgIFN0YXR1cyA9IE1lbnVCYXJEaXNwYXRjaEZ1bmN0aW9uS2V5ICgm S2V5RGF0YS5LZXkpOw0KDQo+PiArICAgICAgICB9IGVsc2Ugew0KDQo+PiArICAgICAgICAgIFN0 YXR1c0JhclNldFN0YXR1c1N0cmluZyAoTCJVbmtub3duIENvbW1hbmQiKTsNCg0KPj4gKyAgICAg ICAgICBGaWxlQnVmZmVyTW91c2VOZWVkUmVmcmVzaCA9IEZBTFNFOw0KDQo+PiArICAgICAgICB9 DQoNCj4+DQoNCj4+IHRoZW4gSSBhbSBhYmxlIHRvIGVudGVyICIjIiBhbmQgb3RoZXIgY2hhcmFj dGVycyB0aGF0IEkgcHJldmlvdXNseQ0KDQo+PiB3YXMgdW5hYmxlIHRvIGVudGVyLg0KDQo+Pg0K DQo+PiBDYW4geW91IGhhdmUgYSBsb29rIGF0IHRoaXM/ICBJIGFzc3VtZSBhbnkgc2hlbGwgYmlu YXJ5IGJ1aWx0IHdpdGgNCg0KPj4gdGhpcyBjaGFuZ2Ugd2lsbCBoYXZlIGEgc2ltaWxhciBpc3N1 ZS4NCg0KPj4NCg0KPj4gVGhhbmtzLA0KDQo+PiBKaW0NCg0KPj4NCg0KPj4+IC0tLS0tT3JpZ2lu YWwgTWVzc2FnZS0tLS0tDQoNCj4+PiBGcm9tOiBlZGsyLWRldmVsIFttYWlsdG86ZWRrMi1kZXZl bC1ib3VuY2VzQGxpc3RzLjAxLm9yZ10gT24gQmVoYWxmDQoNCj4+PiBPZiBSdWl5dSBOaQ0KDQo+ Pj4gU2VudDogTW9uZGF5LCBGZWJydWFyeSAxMiwgMjAxOCA5OjM0IEFNDQoNCj4+PiBUbzogZWRr Mi1kZXZlbEBsaXN0cy4wMS5vcmc8bWFpbHRvOmVkazItZGV2ZWxAbGlzdHMuMDEub3JnPg0KDQo+ Pj4gQ2M6IEphYmVuIENhcnNleTsgRmVsaXgNCg0KPj4+IFN1YmplY3Q6IFtlZGsyXSBbUEFUQ0hd IFNoZWxsUGtnL1toZXhdZWRpdDogdXNlIFNpbXBsZVRleHRJbkV4IHRvDQoNCj4+PiByZWFkIGNv bnNvbGUNCg0KPj4+DQoNCj4+PiBSRUY6IGh0dHBzOi8vYnVnemlsbGEudGlhbm9jb3JlLm9yZy9z aG93X2J1Zy5jZ2k/aWQ9NjgyDQoNCj4+Pg0KDQo+Pj4gRWRpdCBhbmQgSGV4RWRpdCBjb21tYW5k cyBhc3N1bWUgdGhhdCBTaW1wbGVUeHRJbiB0cmFuc2xhdGVzDQoNCj4+PiBDdHJsKzxBbHBoYS1L ZXk+IGtleSBjb21iaW5hdGlvbnMgaW50byBVbmljb2RlIGNvbnRyb2wgY2hhcmFjdGVycw0KDQo+ Pj4gKDB4MS0weDFBKS4NCg0KPj4+DQoNCj4+PiBTdWNoIHRyYW5zbGF0aW9uIGRvZXMgbm90IHNl ZW0gdG8gYmUgcmVxdWlyZWQgYnkgdGhlIFVFRkkgc3BlYy4NCg0KPj4+IFNoZWxsIHNob3VsZCBu b3QgcmVseSBvbiBpbXBsZW1lbnRhdGlvbiBzcGVjaWZpYyBiZWhhdmlvci4NCg0KPj4+IEl0IHNo b3VsZCBpbnN0ZWFkIHVzZSBTaW1wbGVUZXh0SW5FeCB0byByZWFkIEN0cmwrPEFscGhhLUtleT4g a2V5IGNvbWJpbmF0aW9ucy4NCg0KPj4+DQoNCj4+PiBUaGUgcGF0Y2ggY2hhbmdlcyBlZGl0IGFu ZCBoZXhlZGl0IHRvIG9ubHkgY29uc3VtZXMgU2ltcGxlVGV4dEluRXguDQoNCj4+Pg0KDQo+Pj4g Q29udHJpYnV0ZWQtdW5kZXI6IFRpYW5vQ29yZSBDb250cmlidXRpb24gQWdyZWVtZW50IDEuMQ0K DQo+Pj4gU2lnbmVkLW9mZi1ieTogUnVpeXUgTmkgPHJ1aXl1Lm5pQGludGVsLmNvbTxtYWlsdG86 cnVpeXUubmlAaW50ZWwuY29tPj4NCg0KPj4+IFJlcG9ydGVkLWJ5OiBGZWxpeCA8ZmVsaXhwQG1h aWwucnU8bWFpbHRvOmZlbGl4cEBtYWlsLnJ1Pj4NCg0KPj4+IENjOiBGZWxpeCA8ZmVsaXhwQG1h aWwucnU8bWFpbHRvOmZlbGl4cEBtYWlsLnJ1Pj4NCg0KPj4+IENjOiBKYWJlbiBDYXJzZXkgPGph YmVuLmNhcnNleUBpbnRlbC5jb208bWFpbHRvOmphYmVuLmNhcnNleUBpbnRlbC5jb20+Pg0KDQo+ Pj4gLS0tDQoNCj4+PiAgLi4uL0VkaXQvTWFpblRleHRFZGl0b3IuYyAgICAgICAgICAgICAgICAg ICAgICAgICAgfCAxMzUgKysrKysrKysrLS0tLS0NCg0KPj4+ICAuLi4vRWRpdC9UZXh0RWRpdG9y VHlwZXMuaCAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyMSArKy0NCg0KPj4+ICAuLi4vVWVm aVNoZWxsRGVidWcxQ29tbWFuZHNMaWIvRWRpdElucHV0QmFyLmMgICAgICB8ICAzNCArKystDQoN Cj4+PiAgLi4uL1VlZmlTaGVsbERlYnVnMUNvbW1hbmRzTGliL0VkaXRJbnB1dEJhci5oICAgICAg fCAgIDYgKy0NCg0KPj4+ICAuLi4vVWVmaVNoZWxsRGVidWcxQ29tbWFuZHNMaWIvRWRpdE1lbnVC YXIuYyAgICAgICB8ICAzOCArKystDQoNCj4+PiAgLi4uL1VlZmlTaGVsbERlYnVnMUNvbW1hbmRz TGliL0VkaXRNZW51QmFyLmggICAgICAgfCAgIDYgKy0NCg0KPj4+ICAuLi4vSGV4RWRpdC9IZXhF ZGl0b3JUeXBlcy5oICAgICAgICAgICAgICAgICAgICAgICB8ICAyNSArLS0NCg0KPj4+ICAuLi4v SGV4RWRpdC9NYWluSGV4RWRpdG9yLmMgICAgICAgICAgICAgICAgICAgICAgICB8IDIwNSArKysr KysrKysrKysrLS0tLS0tLS0NCg0KPj4+ICA4IGZpbGVzIGNoYW5nZWQsIDMwOSBpbnNlcnRpb25z KCspLCAxNjEgZGVsZXRpb25zKC0pDQoNCj4+Pg0KDQo+Pj4gLS0tLS0tLS0tODwtLS0tLSBjbGlw IC0tLS0tPjgtLS0tLS0tLQ0KDQo+Pj4NCg0KPj4+IC0tDQoNCj4+PiAyLjE2LjEud2luZG93cy4x DQoNCj4+Pg0KDQo+Pj4gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX18NCg0KPj4+IGVkazItZGV2ZWwgbWFpbGluZyBsaXN0DQoNCj4+PiBlZGsyLWRldmVsQGxp c3RzLjAxLm9yZzxtYWlsdG86ZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmc+DQoNCj4+PiBodHRwczov L2xpc3RzLjAxLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2VkazItZGV2ZWwNCg0KDQoNCl9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fDQoNCmVkazItZGV2ZWwgbWFp bGluZyBsaXN0DQoNCmVkazItZGV2ZWxAbGlzdHMuMDEub3JnPG1haWx0bzplZGsyLWRldmVsQGxp c3RzLjAxLm9yZz4NCg0KaHR0cHM6Ly9saXN0cy4wMS5vcmcvbWFpbG1hbi9saXN0aW5mby9lZGsy LWRldmVsDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0K ZWRrMi1kZXZlbCBtYWlsaW5nIGxpc3QNCmVkazItZGV2ZWxAbGlzdHMuMDEub3JnDQpodHRwczov L2xpc3RzLjAxLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2VkazItZGV2ZWwNCg==