From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mga07.intel.com (mga07.intel.com [134.134.136.100]) (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 3762721B0E537 for ; Wed, 16 Aug 2017 11:31:12 -0700 (PDT) Received: from fmsmga004.fm.intel.com ([10.253.24.48]) by orsmga105.jf.intel.com with ESMTP; 16 Aug 2017 11:33:38 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.41,383,1498546800"; d="scan'208";a="301007798" Received: from orsmsx102.amr.corp.intel.com ([10.22.225.129]) by fmsmga004.fm.intel.com with ESMTP; 16 Aug 2017 11:33:23 -0700 Received: from orsmsx113.amr.corp.intel.com ([169.254.9.211]) by ORSMSX102.amr.corp.intel.com ([169.254.3.115]) with mapi id 14.03.0319.002; Wed, 16 Aug 2017 11:33:23 -0700 From: "Kinney, Michael D" To: Laszlo Ersek , "Gao, Liming" , "Kinney, Michael D" CC: edk2-devel-01 Thread-Topic: [edk2] TimerTickDiffLib for MdePkg? Thread-Index: AQHTFoUxj2UBpXY6k0mvy6tYBmPbnqKHHtTwgAB9UQD//6C5MIAAhR4A//+MerA= Date: Wed, 16 Aug 2017 18:33:22 +0000 Message-ID: References: <8cba2a58-1333-7733-031d-0883dbd844c6@redhat.com> <3e1428f1-0880-17a1-5aed-f73aa2212735@redhat.com> <1fb4df7c-0b65-b912-5ea4-2c105c8d866f@redhat.com> In-Reply-To: <1fb4df7c-0b65-b912-5ea4-2c105c8d866f@redhat.com> Accept-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: dlp-product: dlpe-windows dlp-version: 10.0.102.7 dlp-reaction: no-action x-originating-ip: [10.22.254.140] MIME-Version: 1.0 Subject: Re: TimerTickDiffLib for MdePkg? X-BeenThere: edk2-devel@lists.01.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: EDK II Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 16 Aug 2017 18:31:12 -0000 Content-Language: en-US Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 TGFzemxvLA0KDQpJIGNhbiBoZWxwIHdpdGggdGhlIHVzYWdlIHJldmlldyBhbmQgQVBJIHByb3Bv c2FscyBmb3IgdGhpcw0KbmV3IGxpYiBjbGFzcy4NCg0KSSBhZ3JlZSB0aGF0IHRoZSBjYWNoaW5n IG9mIEdldFBlcmZvcm1hbmNlQ291bnRlclByb3BlcnRpZXMoKQ0KY2FuIGJlIGhhbmRsZWQgaW4g dGhlIFRpbWVyTGliIGluc3RhbmNlcy4gIFdlIGp1c3QgbmVlZCB0byANCm1ha2Ugc3VyZSBleGlz dGluZyBhbmQgbmV3IGluc3RhbmNlcyBhY3R1YWxseSBkbyB0aGlzIGFzIG5lZWRlZC4NCg0KTWlr ZQ0KDQo+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+IEZyb206IExhc3psbyBFcnNlayBb bWFpbHRvOmxlcnNla0ByZWRoYXQuY29tXQ0KPiBTZW50OiBXZWRuZXNkYXksIEF1Z3VzdCAxNiwg MjAxNyAxMToyNCBBTQ0KPiBUbzogS2lubmV5LCBNaWNoYWVsIEQgPG1pY2hhZWwuZC5raW5uZXlA aW50ZWwuY29tPjsgR2FvLCBMaW1pbmcNCj4gPGxpbWluZy5nYW9AaW50ZWwuY29tPg0KPiBDYzog ZWRrMi1kZXZlbC0wMSA8ZWRrMi1kZXZlbEBsaXN0cy4wMS5vcmc+DQo+IFN1YmplY3Q6IFJlOiBb ZWRrMl0gVGltZXJUaWNrRGlmZkxpYiBmb3IgTWRlUGtnPw0KPiANCj4gTWlrZSwNCj4gDQo+IE9u IDA4LzE2LzE3IDIwOjAxLCBLaW5uZXksIE1pY2hhZWwgRCB3cm90ZToNCj4gPiBIaSBMYXN6bG8s DQo+ID4NCj4gPiBJIGFncmVlIHdpdGggdGhlIGNvbXBsZXhpdHkgb2YgaGFuZGxpbmcgdGhlIGNv bWJpbmF0aW9ucy4NCj4gPg0KPiA+IEEgc2luZ2xlIGltcGxlbWVudGF0aW9uIG9mIGEgbmV3IGxp YiBjbGFzcyB0aGF0IHByb3ZpZGVzDQo+ID4gaGVscGVyIGZ1bmN0aW9ucyBvbiB0b3Agb2YgVGlt ZXJMaWIgY2xhc3Mgd291bGQgYmUgdmFsdWFibGUuDQo+ID4NCj4gPiBUaGVyZSBpcyBhbm90aGVy IGNvZGUgcGF0dGVybiB3ZSBtYXkgYWxzbyB3YW50IHRvIHJldmlldyB0bw0KPiBzZWUNCj4gPiBp ZiBhZGRpbmcgbW9yZSBoZWxwZXIgZnVuY3Rpb25zIHdvdWxkIGFsc28gaGF2ZSB2YWx1ZS4NCj4g TW9kdWxlcw0KPiA+IHRoYXQgaGF2ZSBBUElzIG9yIGxvb3BzIHdpdGggYSB0aW1lb3V0IG5lZWQg dG8ga25vdyB3aGVuIHRoZQ0KPiA+IHRpbWVvdXQgaGFzIGJlZW4gcmVhY2hlZCB3aXRoIGdvb2Qg YWNjdXJhY3kgYW5kIGxvdyBvdmVyaGVhZC4NCj4gPiBBIGNvdXBsZSBvZiBleGFtcGxlcyBhcmU6 DQo+ID4NCj4gPiAgIE1kZVBrZ1xMaWJyYXJ5XEJhc2VTeW5jaHJvbml6YXRpb25MaWJcU3luY2hy b25pemF0aW9uLmM6IDk0DQo+ID4gICAgIEFjcXVpcmVTcGluTG9jaygpDQo+ID4NCj4gPiAgIFVl ZmlDcHVQa2dcTGlicmFyeVxNcEluaXRMaWJcTXBMaWIuYzogMTA1Mg0KPiA+ICAgICBDaGVja1Rp bWVvdXQoKQ0KPiA+DQo+ID4gV2UgY2FuIHNlYXJjaCB0aGUgcmVwb3MgZm9yIGNhbGxzIHRvDQo+ IEdldFBlcmZvcm1hbmNlQ291bnRlclByb3BlcnRpZXMoKQ0KPiA+IHRvIGZpbmQgdGhlIHR5cGVz IG9mIGhlbHBlciBmdW5jdGlvbnMgdGhhdCBtaWdodCBiZSB2YWx1YWJsZS4NCj4gDQo+IFRoaXMg c291bmRzIHZlcnkgdmFsdWFibGUsIGJ1dCBhIGJpdCBsYXJnZXIgYml0ZSB0aGFuIEkgZXhwZWN0 ZWQNCj4gOikNCj4gDQo+ID4gVGhlcmUgYXJlIGEgY291cGxlIG9mIGFwcHJvYWNoZXMgb24gdGlt ZW91dHMuICBPbmUgaXMgdG8gd2FpdA0KPiA+IHVudGlsIHRoZSB0aWNrIGRpZmZlcmVuY2UgcmVh Y2hlcyB0aGUgdGltZW91dC4gIFRoaXMgd29ya3MgaWYNCj4gPiB0aGUgdGltZW91dCBkb2VzIG5v dCBleGNlZWQgdGhlIG51bWJlciBvZiB0aWNrcyB0aGF0IHRoZQ0KPiA+IFRpbWVyTGliIGNvdW50 ZXIgcm9sbHMgb3Zlci4gIFRoZSBzZWNvbmQgYXBwcm9hY2ggaXMgdG8NCj4gYWNjdW11bGF0ZQ0K PiA+IHRoZSBudW1iZXIgb2YgdGlja3MgdGhhdCBoYXZlIGVsYXBzZWQgd2l0aGluIHRoZSBsb29w IHRvDQo+IHN1cHBvcnQNCj4gPiB0aW1lb3V0cyB0aGF0IGFyZSBsb25nZXIgdGhhdCB0aGUgVGlt ZXJMaWJzIHJvbGxvdmVyIGNvdW50Lg0KPiA+DQo+ID4gV2UgbWF5IGFsc28gd2FudCB0byBjb25z aWRlciBtdWx0aXBsZSBJTkYgZmlsZXMgZm9yIHRoaXMNCj4gbGlicmFyeS4NCj4gPiBDYWxsaW5n IEdldFBlcmZvcm1hbmNlQ291bnRlclByb3BlcnRpZXMoKSBpcyBleHRyYSBvdmVyaGVhZC4NCj4g SWYNCj4gPiB3ZSBhcmUgZXhlY3V0aW5nIGZyb20gUkFNIGFuZCBjYW4gdXNlIGdsb2JhbCB2YXJp YWJsZXMsIHRoZW4NCj4gd2UgY2FuDQo+ID4gY2FsbCBHZXRQZXJmb3JtYW5jZUNvdW50ZXJQcm9w ZXJ0aWVzKCkgb25jZSBhbmQgY2FjaGUgdGhlDQo+IHJlc3VsdHMgaW4NCj4gPiBnbG9iYWwgdmFy aWFibGVzLg0KPiANCj4gSSB0aG91Z2h0IG9mIHRoaXMuIEhvd2V2ZXIsIEkgZmlndXJlZCB0aGUg VGltZXJMaWIgaW5zdGFuY2VzDQo+IHRoZW1zZWx2ZXMNCj4gd291bGQgbWFrZSB0aGUgc2FtZSBk aXN0aW5jdGlvbiAoZm9yIGV4YW1wbGUsIHdlIG1ha2UgYSBzaW1pbGFyDQo+IGRpc3RpbmN0aW9u IGluIE92bWZQa2csIHdpdGggIkJhc2VSb21BY3BpVGltZXJMaWIuaW5mIiwNCj4gIkJhc2VBY3Bp VGltZXJMaWIuaW5mIiwgYW5kICJEeGVBY3BpVGltZXJMaWIuaW5mIikuDQo+IA0KPiBPbmNlIGEg VGltZXJMaWIgaW5zdGFuY2UgLS0gZS5nLiBmb3IgRFhFIGFuZCBsYXRlciAtLSBjYWNoZXMgdGhl DQo+IGRhdGENCj4gbmVlZGVkIGJ5IEdldFBlcmZvcm1hbmNlQ291bnRlclByb3BlcnRpZXMoKSwg YW55IGNhY2hpbmcgbGF5ZXJlZA0KPiBvbiB0b3ANCj4gYmVjb21lcyBhIHdhc3RlLg0KPiANCj4g U28gbXkgaWRlYSB3YXMgdG8gbGV0IHRoZSBUaW1lckxpYiBpbnN0YW5jZSBjYWNoZSB3aGF0ZXZl ciBpdA0KPiBjYW4sDQo+IGludGVybmFsbHkgdG8gR2V0UGVyZm9ybWFuY2VDb3VudGVyUHJvcGVy dGllcygpLiBUaGlzIHdvdWxkIGJlDQo+IGp1c3RpZmllZA0KPiBhbnl3YXksIGNvbnNpZGVyaW5n IHRoZSBjdXJyZW50IGNhbGxlcnMgb2YNCj4gR2V0UGVyZm9ybWFuY2VDb3VudGVyUHJvcGVydGll cygpLg0KPiANCj4gPiAgV2Ugb25seSBuZWVkIHRvIGNhbGwgR2V0UGVyZm9ybWFuY2VDb3VudGVy UHJvcGVydGllcygpDQo+ID4gaWYgdGhlIGNvZGUgaXMgWElQIGZyb20gTlYgc3RvcmFnZS4gQW4g ZXhhbXBsZSBvZiB0aGlzDQo+IHRlY2huaXF1ZSBpcw0KPiA+IGluIHRoZSBpbXBsZW1lbnRhdGlv biBvZg0KPiBJbnRlcm5hbEdldFBlcmZvcm1hbmNlQ291bnRlckZyZXF1ZW5jeSgpDQo+ID4gaW4g UGNBdENoaXBzZXRQa2dcTGlicmFyeVxBY3BpVGltZXJMaWIuICBUaGVyZSBpcyBhIEJhc2UgYW5k DQo+IER4ZQ0KPiA+IHZlcnNpb24gb2YgdGhpcyBUaW1lckxpYi4gIFRoZSBEeGUgb25lIG9ubHkg ZG9lcyB0aGUgd29yayB0bw0KPiA+IGRldGVybWluZSB0aGUgZnJlcXVlbmN5IG9mIHRoZSB0aW1l ciBvbmNlIGFuZCBzYXZlcyBpdCBpbiBhDQo+IGdsb2JhbA0KPiA+IHZhcmlhYmxlLg0KPiANCj4g UmlnaHQuIE15IGFyZ3VtZW50IGlzLCBpZiB0aGUgU3RhcnRWYWx1ZSBhbmQgRW5kVmFsdWUgb3V0 cHV0DQo+IHBhcmFtZXRlcnMNCj4gb2YgR2V0UGVyZm9ybWFuY2VDb3VudGVyUHJvcGVydGllcygp IGFyZSBub3QgY29uc3RhbnRzLCBidXQNCj4gcmVxdWlyZQ0KPiBoYXJkd2FyZSBhY2Nlc3MgYW5k L29yIHNvbWUgY2FsY3VsYXRpb24sIHRoZW4gYSBEWEUgVGltZXJMaWINCj4gaW5zdGFuY2UNCj4g Y2FuIGNhY2hlIHRob3NlIHZhbHVlcyBhcyB3ZWxsLCBub3QganVzdCB0aGUgZnJlcXVlbmN5Lg0K PiANCj4gU28gY2FsbGluZyBHZXRQZXJmb3JtYW5jZUNvdW50ZXJQcm9wZXJ0aWVzKCkgZXZlcnkg dGltZSB3b3VsZA0KPiBhZGQNCj4gYmFzaWNhbGx5IG5vIG92ZXJoZWFkICh3aGlsZSBjYWNoaW5n IHRoZSByZXN1bHRzIG9mDQo+IEdldFBlcmZvcm1hbmNlQ291bnRlclByb3BlcnRpZXMoKSBjb3Vs ZCBlYXNpbHkgbGVhZCB0byBkdXBsaWNhdGUNCj4gY2FjaGluZw0KPiAtLSBpbnRlcm5hbCBhbmQg ZXh0ZXJuYWwpLg0KPiANCj4gVGhhbmtzLA0KPiBMYXN6bG8NCj4gDQo+ID4NCj4gPiBCZXN0IHJl Z2FyZHMsDQo+ID4NCj4gPiBNaWtlDQo+ID4NCj4gPj4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0t LS0NCj4gPj4gRnJvbTogZWRrMi1kZXZlbCBbbWFpbHRvOmVkazItZGV2ZWwtYm91bmNlc0BsaXN0 cy4wMS5vcmddIE9uDQo+ID4+IEJlaGFsZiBPZiBMYXN6bG8gRXJzZWsNCj4gPj4gU2VudDogV2Vk bmVzZGF5LCBBdWd1c3QgMTYsIDIwMTcgOTowOSBBTQ0KPiA+PiBUbzogS2lubmV5LCBNaWNoYWVs IEQgPG1pY2hhZWwuZC5raW5uZXlAaW50ZWwuY29tPjsgR2FvLA0KPiBMaW1pbmcNCj4gPj4gPGxp bWluZy5nYW9AaW50ZWwuY29tPg0KPiA+PiBDYzogZWRrMi1kZXZlbC0wMSA8ZWRrMi1kZXZlbEBs aXN0cy4wMS5vcmc+DQo+ID4+IFN1YmplY3Q6IFJlOiBbZWRrMl0gVGltZXJUaWNrRGlmZkxpYiBm b3IgTWRlUGtnPw0KPiA+Pg0KPiA+PiBPbiAwOC8xNi8xNyAxNzo0MSwgS2lubmV5LCBNaWNoYWVs IEQgd3JvdGU6DQo+ID4+PiBMYXN6bG8sDQo+ID4+Pg0KPiA+Pj4gVGhlIFRpbWVyTGliIGFscmVh ZHkgaGFzIHRoZSBmb2xsb3dpbmcgQVBJLg0KPiA+Pj4NCj4gPj4+IC8qKg0KPiA+Pj4gICBDb252 ZXJ0cyBlbGFwc2VkIHRpY2tzIG9mIHBlcmZvcm1hbmNlIGNvdW50ZXIgdG8gdGltZSBpbg0KPiA+ PiBuYW5vc2Vjb25kcy4NCj4gPj4+DQo+ID4+PiAgIFRoaXMgZnVuY3Rpb24gY29udmVydHMgdGhl IGVsYXBzZWQgdGlja3Mgb2YgcnVubmluZw0KPiA+PiBwZXJmb3JtYW5jZSBjb3VudGVyIHRvDQo+ ID4+PiAgIHRpbWUgdmFsdWUgaW4gdW5pdCBvZiBuYW5vc2Vjb25kcy4NCj4gPj4+DQo+ID4+PiAg IEBwYXJhbSAgVGlja3MgICAgIFRoZSBudW1iZXIgb2YgZWxhcHNlZCB0aWNrcyBvZiBydW5uaW5n DQo+ID4+IHBlcmZvcm1hbmNlIGNvdW50ZXIuDQo+ID4+Pg0KPiA+Pj4gICBAcmV0dXJuIFRoZSBl bGFwc2VkIHRpbWUgaW4gbmFub3NlY29uZHMuDQo+ID4+Pg0KPiA+Pj4gKiovDQo+ID4+PiBVSU5U NjQNCj4gPj4+IEVGSUFQSQ0KPiA+Pj4gR2V0VGltZUluTmFub1NlY29uZCAoDQo+ID4+PiAgIElO ICAgICAgVUlOVDY0ICAgICAgICAgICAgICAgICAgICAgVGlja3MNCj4gPj4+ICAgKTsNCj4gPj4+ DQo+ID4+PiBJIHRoaW5rIGEgY291cGxlIG1hY3JvcyBvbiB0b3Agb2YgdGhpcyBBUEkgY291bGQg cHJvdmlkZSB0aGUNCj4gPj4gbWljcm9zZWNvbmQNCj4gPj4+IGFuZCBtaWxsaXNlY29uZCB1bml0 cy4NCj4gPj4NCj4gPj4gSSdtIGF3YXJlIG9mIEdldFRpbWVJbk5hbm9TZWNvbmQoKSwgYW5kIEkg YWdyZWUgdGhhdCBzb21lDQo+IG1hY3Jvcw0KPiA+PiBvbiB0b3ANCj4gPj4gd291bGQgYmUgc3Vm ZmljaWVudCBmb3IgcHJvdmlkaW5nIHVzZWMgYW5kIG1zZWMgd3JhcHBlcnMuDQo+ID4+DQo+ID4+ IEhvd2V2ZXIsIHN1Y2ggd3JhcHBlcnMgYXJlIG5vdCB0aGUgbWFpbiBwb2ludCBvZiB0aGlzDQo+ IGxpYnJhcnkuDQo+ID4+DQo+ID4+IFRoZSBtYWluIGRpZmZpY3VsdHkgd2l0aCB1c2luZyBHZXRU aW1lSW5OYW5vU2Vjb25kKCkgaXMgdGhhdA0KPiB0aGUNCj4gPj4gY2FsbGVyDQo+ID4+IGhhcyB0 byBjYWxjdWxhdGUgdGhlICJUaWNrcyIgcGFyYW1ldGVyLiBJbiB0aGVvcnksIHRoaXMgaXMgYQ0K PiA+PiBzaW1wbGUNCj4gPj4gZGlmZmVyZW5jZSwgc3VjaCBhczoNCj4gPj4NCj4gPj4gICAvLw0K PiA+PiAgIC8vIGZldGNoIHRoZSBzdGFydCB0aWNrDQo+ID4+ICAgLy8NCj4gPj4gICBQZXJmb3Jt YW5jZUNvdW50ZXJTdGFydCA9IEdldFBlcmZvcm1hbmNlQ291bnRlciAoKTsNCj4gPj4gICAvLw0K PiA+PiAgIC8vIGRvIHNvbWUgd29yaywgdGhlbiBmZXRjaCB0aGUgc3RvcCB0aWNrDQo+ID4+ICAg Ly8NCj4gPj4gICBQZXJmb3JtYW5jZUNvdW50ZXJTdG9wID0gR2V0UGVyZm9ybWFuY2VDb3VudGVy ICgpOw0KPiA+PiAgIC8vDQo+ID4+ICAgLy8gY2FsY3VsYXRlIHRpY2sgZGlmZmVyZW5jZQ0KPiA+ PiAgIC8vDQo+ID4+ICAgVGlja3MgPSBQZXJmb3JtYW5jZUNvdW50ZXJTdG9wIC0gUGVyZm9ybWFu Y2VDb3VudGVyU3RhcnQ7DQo+ID4+ICAgLy8NCj4gPj4gICAvLyBnZXQgZWxhcHNlZCB0aW1lDQo+ ID4+ICAgLy8NCj4gPj4gICBOYW5vU2Vjb25kcyA9IEdldFRpbWVJbk5hbm9TZWNvbmQgKFRpY2tz KTsNCj4gPj4NCj4gPj4gSG93ZXZlciwgdGhlIFRpY2tzIHBhcmFtZXRlciBjYW5ub3QgYmUgY2Fs Y3VsYXRlZCBhcyBuYWl2ZWx5DQo+IGFzDQo+ID4+IHdyaXR0ZW4NCj4gPj4gYWJvdmUsIGZvciB0 d28gcmVhc29uczoNCj4gPj4NCj4gPj4gLSBUaGUgcGVyZm9ybWFuY2UgY291bnRlciBjYW4gd3Jh cCBhcm91bmQgd2hpbGUgZG9pbmcgdGhlDQo+IHdvcmsuDQo+ID4+IC0gVGhlIHBlcmZvcm1hbmNl IGNvdW50ZXIgY2FuIGJlIGNvdW50aW5nIGRvd24gYXMgdGltZQ0KPiA+PiBwcm9ncmVzc2VzLg0K PiA+Pg0KPiA+PiBUaGVyZWZvcmUgdGhlIHNpbXBsZSBzdWJ0cmFjdGlvbiBmb3IgVGlja3MgaGFz IHRvIGJlIHJlcGxhY2VkDQo+ID4+IGV2ZXJ5IHRpbWUNCj4gPj4gd2l0aCBhbiBlbGFib3JhdGUg Zm91ci1icmFuY2hlZCBjaGVjazsgZm9yIGV2ZXJ5IHZhcmlhdGlvbiBvZg0KPiA+Pg0KPiA+PiAg IHsgY291bnRzIHVwLCBjb3VudHMgZG93biB9IHggeyB3cmFwcGVkIGFyb3VuZCwgZGlkIG5vdCB3 cmFwDQo+ID4+IGFyb3VuZCB9DQo+ID4+DQo+ID4+IEFkZGl0aW9uYWxseSwgaW4gb3JkZXIgdG8g ZGV0ZXJtaW5lIHRoZSBjb3VudGluZyBkaXJlY3Rpb24sDQo+IGFuZA0KPiA+PiB0aGUNCj4gPj4g Ym91bmRhcmllcyB0aGF0IGhhdmUgdG8gYmUgY29uc2lkZXJlZCBpbiBjYXNlIG9mIHdyYXAtYXJv dW5kLA0KPiA+PiBHZXRQZXJmb3JtYW5jZUNvdW50ZXJQcm9wZXJ0aWVzKCkgbXVzdCBiZSBjYWxs ZWQgZmlyc3QuDQo+ID4+DQo+ID4+IEV4dHJhY3RpbmcgdGhpcyBsb2dpYyBpcyB0aGUgbWFpbiBw b2ludCBvZiB0aGUgbGlicmFyeSAtLQ0KPiBwbGVhc2UNCj4gPj4gc2VlIHRoZQ0KPiA+PiBHZXRU aWNrRGlmZmVyZW5jZSgpIGZ1bmN0aW9uLiBUaGUgcmVzdCBpcyBqdXN0IGNvbnZlbmllbmNlDQo+ ID4+IGZsdWZmLg0KPiA+Pg0KPiA+PiBUaGFua3MNCj4gPj4gTGFzemxvDQo+ID4+DQo+ID4+Pj4g LS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCj4gPj4+PiBGcm9tOiBMYXN6bG8gRXJzZWsgW21h aWx0bzpsZXJzZWtAcmVkaGF0LmNvbV0NCj4gPj4+PiBTZW50OiBXZWRuZXNkYXksIEF1Z3VzdCAx NiwgMjAxNyA0OjQ2IEFNDQo+ID4+Pj4gVG86IEtpbm5leSwgTWljaGFlbCBEIDxtaWNoYWVsLmQu a2lubmV5QGludGVsLmNvbT47IEdhbywNCj4gPj4gTGltaW5nDQo+ID4+Pj4gPGxpbWluZy5nYW9A aW50ZWwuY29tPg0KPiA+Pj4+IENjOiBlZGsyLWRldmVsLTAxIDxlZGsyLWRldmVsQGxpc3RzLjAx Lm9yZz4NCj4gPj4+PiBTdWJqZWN0OiBUaW1lclRpY2tEaWZmTGliIGZvciBNZGVQa2c/DQo+ID4+ Pj4NCj4gPj4+PiBIaSwNCj4gPj4+Pg0KPiA+Pj4+IGVkazIgY29kZSBmcmVxdWVudGx5IG5lZWRz IHRvIGNhbGN1bGF0ZSBhIHRpbWUgZGlmZmVyZW5jZQ0KPiAoaW4NCj4gPj4+PiBuYW5vLSwNCj4g Pj4+PiBtaWNyby0sIG9yIG1pbGxpc2Vjb25kcykgYmV0d2VlbiB0d28gdGltZXIgdGljayB2YWx1 ZXMNCj4gPj4gcmV0cmlldmVkDQo+ID4+Pj4gd2l0aA0KPiA+Pj4+IFRpbWVyTGliJ3MgR2V0UGVy Zm9ybWFuY2VDb3VudGVyKCkgY2FsbC4gRm9yIHBlcmZvcm1hbmNlDQo+ID4+Pj4gbWVhc3VyZW1l bnRzLA0KPiA+Pj4+IFBFUkZfU1RBUlQoKSBhbmQgZnJpZW5kcyBjYW4gYmUgdXNlZCwgYnV0IGlu IG1hbnkgY29udGV4dHMNCj4gPj4gdGhlDQo+ID4+Pj4gdGltZQ0KPiA+Pj4+IGRpZmZlcmVuY2Ug aXMgbmVlZGVkIGZvciBsb3dlci1sZXZlbCByZWFzb25zLg0KPiA+Pj4+DQo+ID4+Pj4gU3VjaCB1 c2VycyBjYW4gYmUgZW51bWVyYXRlZCBieSBncmVwcGluZyBmb3INCj4gPj4+PiBHZXRQZXJmb3Jt YW5jZUNvdW50ZXJQcm9wZXJ0aWVzKCkgY2FsbCBzaXRlcyB0aGF0IHBhc3MgaW4NCj4gPj4gbm9u LQ0KPiA+Pj4+IE5VTEwNCj4gPj4+PiBwYXJhbWV0ZXJzIC0tIHRoaXMgaXMgbmVlZGVkIGZvciBp bnRlcnByZXRpbmcgd3JhcC1hcm91bmRzDQo+IGluDQo+ID4+Pj4gdGljaw0KPiA+Pj4+IHZhbHVl cyAoZGlyZWN0aW9uIGFuZCBib3VuZGFyaWVzKS4gSSdtIHNlZWluZyBhIHdob2xlIGxvdA0KPiBv Zg0KPiA+Pj4+IHN1Y2ggY2FsbA0KPiA+Pj4+IHNpdGVzLiAoQW5kIHNvbWUgY2FsbCBzaXRlcyBk b24ndCBoYW5kbGUgYm90aCBkaXJlY3Rpb25zIG9mDQo+ID4+Pj4gY291bnRpbmcuKQ0KPiA+Pj4+ DQo+ID4+Pj4gSSd2ZSB3cml0dGVuIGEgdmVyeSBzbWFsbCBsaWJyYXJ5IGZvciBjZW50cmFsaXpp bmcgdGhpcy4NCj4gPj4gV2hpbGUNCj4gPj4+PiBJJ20gbm90DQo+ID4+Pj4gc3VnZ2VzdGluZyB0 aGF0IGV4aXN0ZW50IGNvZGUgYmUgcmViYXNlZCAoYWx0aG91Z2ggSSdtIGFsc28NCj4gPj4gbm90 DQo+ID4+Pj4gYWR2aXNpbmcNCj4gPj4+PiBhZ2FpbnN0IGl0KSwgSSB0aGluayB0aGlzIGxpYnJh cnkgd291bGQgYmUgY29udmVuaWVudCBmb3INCj4gbmV3DQo+ID4+Pj4gY29kZS4NCj4gPj4+Pg0K PiA+Pj4+IEkgZG9uJ3QgdGhpbmsgVGltZXJMaWIgc2hvdWxkIGJlIGV4dGVuZGVkIHdpdGggdGhl IG5ldw0KPiA+Pj4+IChzdWdnZXN0ZWQpIEFQSXMuDQo+ID4+Pj4gVGhlcmUncyBhIGh1Z2UgbnVt YmVyIG9mIFRpbWVyTGliIGluc3RhbmNlcyAoMjEgaW4gbXkNCj4gY291bnQpLA0KPiA+Pj4+IGFu ZA0KPiA+Pj4+IHJlcGxpY2F0aW5nIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgbmV3IEFQSXMg LS0gd2hpY2ggYXJlDQo+ID4+Pj4gdG90YWxseQ0KPiA+Pj4+IHBsYXRmb3JtIGluZGVwZW5kZW50 IC0tIHdvdWxkIGRlZmVhdCB0aGUgd2hvbGUgZXhlcmNpc2UNCj4gPj4gKHdoaWNoDQo+ID4+Pj4g aXMgdG8NCj4gPj4+PiBwcmV2ZW50IGNvZGUgZHVwbGljYXRpb24pLg0KPiA+Pj4+DQo+ID4+Pj4g VGhlIGxpYnJhcnkgaXMgY3VycmVudGx5IGZvciBPdm1mUGtnIG9ubHkgKGluIG15IGxvY2FsDQo+ IHRyZWUpLg0KPiA+Pj4+IEknbQ0KPiA+Pj4+IHBhc3RpbmcgdGhlIHBhdGNoIGJlbG93LiBJZiB0 aGVyZSBpcyBpbnRlcmVzdCwgSSBjb3VsZA0KPiByZXdvcmsNCj4gPj4gaXQNCj4gPj4+PiBmb3IN Cj4gPj4+PiBNZGVQa2cuDQo+ID4+Pj4NCj4gPj4+PiBUaGFua3MNCj4gPj4+PiBMYXN6bG8NCj4g Pj4+Pg0KPiA+Pj4+PiBjb21taXQgZjE5NjNjN2IxNzA1YzdlNDZjZTM2OTgwMmQ4YzE1Zjk0M2Ex MTRkNg0KPiA+Pj4+PiBBdXRob3I6IExhc3psbyBFcnNlayA8bGVyc2VrQHJlZGhhdC5jb20+DQo+ ID4+Pj4+IERhdGU6ICAgVHVlIEF1ZyA4IDIyOjQ2OjQ3IDIwMTcgKzAyMDANCj4gPj4+Pj4NCj4g Pj4+Pj4gICAgIE92bWZQa2c6IGFkZCBUaW1lclRpY2tEaWZmTGliDQo+ID4+Pj4+DQo+ID4+Pj4+ ICAgICBDb250cmlidXRlZC11bmRlcjogVGlhbm9Db3JlIENvbnRyaWJ1dGlvbiBBZ3JlZW1lbnQN Cj4gMS4xDQo+ID4+Pj4+ICAgICBTaWduZWQtb2ZmLWJ5OiBMYXN6bG8gRXJzZWsgPGxlcnNla0By ZWRoYXQuY29tPg0KPiA+Pj4+Pg0KPiA+Pj4+PiBkaWZmIC0tZ2l0IGEvT3ZtZlBrZy9Pdm1mUGtn LmRlYyBiL092bWZQa2cvT3ZtZlBrZy5kZWMNCj4gPj4+Pj4gaW5kZXggNmE0YzE1Yzc5MTdhLi41 M2EwYTM0ZDMyNmQgMTAwNjQ0DQo+ID4+Pj4+IC0tLSBhL092bWZQa2cvT3ZtZlBrZy5kZWMNCj4g Pj4+Pj4gKysrIGIvT3ZtZlBrZy9Pdm1mUGtnLmRlYw0KPiA+Pj4+PiBAQCAtNjAsNiArNjAsMTAg QEAgW0xpYnJhcnlDbGFzc2VzXQ0KPiA+Pj4+PiAgICAjDQo+ID4+Pj4+ICAgIEhleER1bXBMaWJ8 SW5jbHVkZS9MaWJyYXJ5L0hleER1bXBMaWIuaA0KPiA+Pj4+Pg0KPiA+Pj4+PiArICAjIyAgQGxp YnJhcnljbGFzcyAgVGltZXIgdGljayBkaWZmZXJlbmNlIGZ1bmN0aW9ucywgdG8NCj4gYmUNCj4g Pj4+PiB1c2VkIHdpdGggVGltZXJMaWIuDQo+ID4+Pj4+ICsgICMNCj4gPj4+Pj4gKyAgVGltZXJU aWNrRGlmZkxpYnxJbmNsdWRlL0xpYnJhcnkvVGltZXJUaWNrRGlmZkxpYi5oDQo+ID4+Pj4+ICsN Cj4gPj4+Pj4gIFtHdWlkc10NCj4gPj4+Pj4gICAgZ1VlZmlPdm1mUGtnVG9rZW5TcGFjZUd1aWQg ICAgICAgICAgPSB7MHg5M2JiOTZhZiwNCj4gPj4gMHhiOWYyLA0KPiA+Pj4+IDB4NGViOCwgezB4 OTQsIDB4NjIsIDB4ZTAsIDB4YmEsIDB4NzQsIDB4NTYsIDB4NDIsIDB4MzZ9fQ0KPiA+Pj4+PiAg ICBnRWZpWGVuSW5mb0d1aWQgICAgICAgICAgICAgICAgICAgICA9IHsweGQzYjQ2ZjNiLA0KPiA+ PiAweGQ0NDEsDQo+ID4+Pj4gMHgxMjQ0LCB7MHg5YSwgMHgxMiwgMHgwLCAweDEyLCAweDI3LCAw eDNmLCAweGMxLCAweDRkfX0NCj4gPj4+Pj4gZGlmZiAtLWdpdCBhL092bWZQa2cvT3ZtZlBrZ0lh MzIuZHNjDQo+ID4+IGIvT3ZtZlBrZy9Pdm1mUGtnSWEzMi5kc2MNCj4gPj4+Pj4gaW5kZXggNWIw NDYxZmY0NmIxLi4xN2YxZGI0M2Y1N2QgMTAwNjQ0DQo+ID4+Pj4+IC0tLSBhL092bWZQa2cvT3Zt ZlBrZ0lhMzIuZHNjDQo+ID4+Pj4+ICsrKyBiL092bWZQa2cvT3ZtZlBrZ0lhMzIuZHNjDQo+ID4+ Pj4+IEBAIC05Nyw2ICs5Nyw3IEBAIFtTa3VJZHNdDQo+ID4+Pj4+ICAjDQo+ID4+Pj4+DQo+ID4+ Pj4NCj4gPj4NCj4gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIw0KPiA+Pj4+ICMjIyMjIyMjIyMjIyMjIyMNCj4gPj4+Pj4gIFtM aWJyYXJ5Q2xhc3Nlc10NCj4gPj4+Pj4gKw0KPiA+Pj4+DQo+ID4+DQo+IFRpbWVyVGlja0RpZmZM aWJ8T3ZtZlBrZy9MaWJyYXJ5L1RpbWVyVGlja0RpZmZMaWIvVGltZXJUaWNrRGlmZkwNCj4gPj4+ PiBpYi5pbmYNCj4gPj4+Pj4gICAgSGV4RHVtcExpYnxPdm1mUGtnL0xpYnJhcnkvSGV4RHVtcExp Yi9IZXhEdW1wTGliLmluZg0KPiA+Pj4+PiAgICBQY2RMaWJ8TWRlUGtnL0xpYnJhcnkvQmFzZVBj ZExpYk51bGwvQmFzZVBjZExpYk51bGwuaW5mDQo+ID4+Pj4+DQo+ID4+IFRpbWVyTGlifE92bWZQ a2cvTGlicmFyeS9BY3BpVGltZXJMaWIvQmFzZUFjcGlUaW1lckxpYi5pbmYNCj4gPj4+Pj4gZGlm ZiAtLWdpdCBhL092bWZQa2cvT3ZtZlBrZ0lhMzJYNjQuZHNjDQo+ID4+Pj4gYi9Pdm1mUGtnL092 bWZQa2dJYTMyWDY0LmRzYw0KPiA+Pj4+PiBpbmRleCAwY2UzY2JkM2ViZDAuLjkyNGUxNzgyNDc2 MCAxMDA2NDQNCj4gPj4+Pj4gLS0tIGEvT3ZtZlBrZy9Pdm1mUGtnSWEzMlg2NC5kc2MNCj4gPj4+ Pj4gKysrIGIvT3ZtZlBrZy9Pdm1mUGtnSWEzMlg2NC5kc2MNCj4gPj4+Pj4gQEAgLTEwMiw2ICsx MDIsNyBAQCBbU2t1SWRzXQ0KPiA+Pj4+PiAgIw0KPiA+Pj4+Pg0KPiA+Pj4+DQo+ID4+DQo+ICMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMNCj4gPj4+PiAjIyMjIyMjIyMjIyMjIyMjDQo+ID4+Pj4+ICBbTGlicmFyeUNsYXNzZXNd DQo+ID4+Pj4+ICsNCj4gPj4+Pg0KPiA+Pg0KPiBUaW1lclRpY2tEaWZmTGlifE92bWZQa2cvTGli cmFyeS9UaW1lclRpY2tEaWZmTGliL1RpbWVyVGlja0RpZmZMDQo+ID4+Pj4gaWIuaW5mDQo+ID4+ Pj4+ICAgIEhleER1bXBMaWJ8T3ZtZlBrZy9MaWJyYXJ5L0hleER1bXBMaWIvSGV4RHVtcExpYi5p bmYNCj4gPj4+Pj4gICAgUGNkTGlifE1kZVBrZy9MaWJyYXJ5L0Jhc2VQY2RMaWJOdWxsL0Jhc2VQ Y2RMaWJOdWxsLmluZg0KPiA+Pj4+Pg0KPiA+PiBUaW1lckxpYnxPdm1mUGtnL0xpYnJhcnkvQWNw aVRpbWVyTGliL0Jhc2VBY3BpVGltZXJMaWIuaW5mDQo+ID4+Pj4+IGRpZmYgLS1naXQgYS9Pdm1m UGtnL092bWZQa2dYNjQuZHNjDQo+IGIvT3ZtZlBrZy9Pdm1mUGtnWDY0LmRzYw0KPiA+Pj4+PiBp bmRleCBlN2JkZjg3MTFiMGYuLmQyMjM4NGEyNjc2OCAxMDA2NDQNCj4gPj4+Pj4gLS0tIGEvT3Zt ZlBrZy9Pdm1mUGtnWDY0LmRzYw0KPiA+Pj4+PiArKysgYi9Pdm1mUGtnL092bWZQa2dYNjQuZHNj DQo+ID4+Pj4+IEBAIC0xMDIsNiArMTAyLDcgQEAgW1NrdUlkc10NCj4gPj4+Pj4gICMNCj4gPj4+ Pj4NCj4gPj4+Pg0KPiA+Pg0KPiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjDQo+ID4+Pj4gIyMjIyMjIyMjIyMjIyMjIw0KPiA+ Pj4+PiAgW0xpYnJhcnlDbGFzc2VzXQ0KPiA+Pj4+PiArDQo+ID4+Pj4NCj4gPj4NCj4gVGltZXJU aWNrRGlmZkxpYnxPdm1mUGtnL0xpYnJhcnkvVGltZXJUaWNrRGlmZkxpYi9UaW1lclRpY2tEaWZm TA0KPiA+Pj4+IGliLmluZg0KPiA+Pj4+PiAgICBIZXhEdW1wTGlifE92bWZQa2cvTGlicmFyeS9I ZXhEdW1wTGliL0hleER1bXBMaWIuaW5mDQo+ID4+Pj4+ICAgIFBjZExpYnxNZGVQa2cvTGlicmFy eS9CYXNlUGNkTGliTnVsbC9CYXNlUGNkTGliTnVsbC5pbmYNCj4gPj4+Pj4NCj4gPj4gVGltZXJM aWJ8T3ZtZlBrZy9MaWJyYXJ5L0FjcGlUaW1lckxpYi9CYXNlQWNwaVRpbWVyTGliLmluZg0KPiA+ Pj4+PiBkaWZmIC0tZ2l0DQo+ID4+Pj4gYS9Pdm1mUGtnL0xpYnJhcnkvVGltZXJUaWNrRGlmZkxp Yi9UaW1lclRpY2tEaWZmTGliLmluZg0KPiA+Pj4+IGIvT3ZtZlBrZy9MaWJyYXJ5L1RpbWVyVGlj a0RpZmZMaWIvVGltZXJUaWNrRGlmZkxpYi5pbmYNCj4gPj4+Pj4gbmV3IGZpbGUgbW9kZSAxMDA2 NDQNCj4gPj4+Pj4gaW5kZXggMDAwMDAwMDAwMDAwLi40ZDQ2NDU2NWViMmYNCj4gPj4+Pj4gLS0t IC9kZXYvbnVsbA0KPiA+Pj4+PiArKysNCj4gYi9Pdm1mUGtnL0xpYnJhcnkvVGltZXJUaWNrRGlm ZkxpYi9UaW1lclRpY2tEaWZmTGliLmluZg0KPiA+Pj4+PiBAQCAtMCwwICsxLDMxIEBADQo+ID4+ Pj4+ICsjIyBAZmlsZQ0KPiA+Pj4+PiArIyBUaW1lciB0aWNrIGRpZmZlcmVuY2UgZnVuY3Rpb25z LCB0byBiZSB1c2VkIHdpdGgNCj4gPj4gVGltZXJMaWIuDQo+ID4+Pj4+ICsjDQo+ID4+Pj4+ICsj IENvcHlyaWdodCAoQykgMjAxNywgUmVkIEhhdCwgSW5jLg0KPiA+Pj4+PiArIw0KPiA+Pj4+PiAr IyBUaGlzIHByb2dyYW0gYW5kIHRoZSBhY2NvbXBhbnlpbmcgbWF0ZXJpYWxzIGFyZQ0KPiBsaWNl bnNlZA0KPiA+Pj4+IGFuZCBtYWRlIGF2YWlsYWJsZQ0KPiA+Pj4+PiArIyB1bmRlciB0aGUgdGVy bXMgYW5kIGNvbmRpdGlvbnMgb2YgdGhlIEJTRCBMaWNlbnNlIHdoaWNoDQo+ID4+Pj4gYWNjb21w YW5pZXMgdGhpcw0KPiA+Pj4+PiArIyBkaXN0cmlidXRpb24uIFRoZSBmdWxsIHRleHQgb2YgdGhl IGxpY2Vuc2UgbWF5IGJlIGZvdW5kDQo+ID4+IGF0DQo+ID4+Pj4+ICsjIGh0dHA6Ly9vcGVuc291 cmNlLm9yZy9saWNlbnNlcy9ic2QtbGljZW5zZS5waHANCj4gPj4+Pj4gKyMNCj4gPj4+Pj4gKyMg VEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJTRCBMSUNFTlNFIE9OIEFODQo+ ID4+ICJBUw0KPiA+Pj4+IElTIiBCQVNJUywgV0lUSE9VVA0KPiA+Pj4+PiArIyBXQVJSQU5USUVT IE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVSDQo+IEVYUFJFU1MNCj4gPj4+ PiBPUiBJTVBMSUVELg0KPiA+Pj4+PiArIyMNCj4gPj4+Pj4gKw0KPiA+Pj4+PiArW0RlZmluZXNd DQo+ID4+Pj4+ICsgIElORl9WRVJTSU9OICAgICAgICAgICAgICAgICAgICA9IDEuMjYNCj4gPj4+ Pj4gKyAgQkFTRV9OQU1FICAgICAgICAgICAgICAgICAgICAgID0gVGltZXJUaWNrRGlmZkxpYg0K PiA+Pj4+PiArICBGSUxFX0dVSUQgICAgICAgICAgICAgICAgICAgICAgPSBGMTk5OEFFRC05MzRG LTRDOTYtDQo+IEFFRkItDQo+ID4+Pj4gMjlDMzlGQTYyNDM0DQo+ID4+Pj4+ICsgIE1PRFVMRV9U WVBFICAgICAgICAgICAgICAgICAgICA9IEJBU0UNCj4gPj4+Pj4gKyAgVkVSU0lPTl9TVFJJTkcg ICAgICAgICAgICAgICAgID0gMS4wDQo+ID4+Pj4+ICsgIExJQlJBUllfQ0xBU1MgICAgICAgICAg ICAgICAgICA9IFRpbWVyVGlja0RpZmZMaWINCj4gPj4+Pj4gKw0KPiA+Pj4+PiArW1NvdXJjZXNd DQo+ID4+Pj4+ICsgIFRpbWVyVGlja0RpZmZMaWIuYw0KPiA+Pj4+PiArDQo+ID4+Pj4+ICtbUGFj a2FnZXNdDQo+ID4+Pj4+ICsgIE1kZVBrZy9NZGVQa2cuZGVjDQo+ID4+Pj4+ICsNCj4gPj4+Pj4g K1tMaWJyYXJ5Q2xhc3Nlc10NCj4gPj4+Pj4gKyAgQmFzZUxpYg0KPiA+Pj4+PiArICBUaW1lckxp Yg0KPiA+Pj4+PiBkaWZmIC0tZ2l0IGEvT3ZtZlBrZy9JbmNsdWRlL0xpYnJhcnkvVGltZXJUaWNr RGlmZkxpYi5oDQo+ID4+Pj4gYi9Pdm1mUGtnL0luY2x1ZGUvTGlicmFyeS9UaW1lclRpY2tEaWZm TGliLmgNCj4gPj4+Pj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gPj4+Pj4gaW5kZXggMDAwMDAw MDAwMDAwLi40MDA1MmUxMWI2ZWQNCj4gPj4+Pj4gLS0tIC9kZXYvbnVsbA0KPiA+Pj4+PiArKysg Yi9Pdm1mUGtnL0luY2x1ZGUvTGlicmFyeS9UaW1lclRpY2tEaWZmTGliLmgNCj4gPj4+Pj4gQEAg LTAsMCArMSwxMDkgQEANCj4gPj4+Pj4gKy8qKiBAZmlsZQ0KPiA+Pj4+PiArICBUaW1lciB0aWNr IGRpZmZlcmVuY2UgZnVuY3Rpb25zLCB0byBiZSB1c2VkIHdpdGgNCj4gPj4gVGltZXJMaWIuDQo+ ID4+Pj4+ICsNCj4gPj4+Pj4gKyAgQ29weXJpZ2h0IChDKSAyMDE3LCBSZWQgSGF0LCBJbmMuDQo+ ID4+Pj4+ICsNCj4gPj4+Pj4gKyAgVGhpcyBwcm9ncmFtIGFuZCB0aGUgYWNjb21wYW55aW5nIG1h dGVyaWFscyBhcmUNCj4gbGljZW5zZWQNCj4gPj4+PiBhbmQgbWFkZSBhdmFpbGFibGUNCj4gPj4+ Pj4gKyAgdW5kZXIgdGhlIHRlcm1zIGFuZCBjb25kaXRpb25zIG9mIHRoZSBCU0QgTGljZW5zZSB3 aGljaA0KPiA+Pj4+IGFjY29tcGFuaWVzIHRoaXMNCj4gPj4+Pj4gKyAgZGlzdHJpYnV0aW9uLiBU aGUgZnVsbCB0ZXh0IG9mIHRoZSBsaWNlbnNlIG1heSBiZSBmb3VuZA0KPiA+PiBhdA0KPiA+Pj4+ PiArICBodHRwOi8vb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvYnNkLWxpY2Vuc2UucGhwDQo+ID4+ Pj4+ICsNCj4gPj4+Pj4gKyAgVEhFIFBST0dSQU0gSVMgRElTVFJJQlVURUQgVU5ERVIgVEhFIEJT RCBMSUNFTlNFIE9OIEFODQo+ID4+ICJBUw0KPiA+Pj4+IElTIiBCQVNJUywgV0lUSE9VVA0KPiA+ Pj4+PiArICBXQVJSQU5USUVTIE9SIFJFUFJFU0VOVEFUSU9OUyBPRiBBTlkgS0lORCwgRUlUSEVS DQo+IEVYUFJFU1MNCj4gPj4+PiBPUiBJTVBMSUVELg0KPiA+Pj4+PiArKiovDQo+ID4+Pj4+ICsN Cj4gPj4+Pj4gKyNpZm5kZWYgX19USU1FUl9USUNLX0RJRkZfTElCX0hfXw0KPiA+Pj4+PiArI2Rl ZmluZSBfX1RJTUVSX1RJQ0tfRElGRl9MSUJfSF9fDQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKyNpbmNs dWRlIDxCYXNlLmg+DQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKy8qKg0KPiA+Pj4+PiArICBGcm9tIHR3 byB2YWx1ZXMgcmV0cmlldmVkIHdpdGggVGltZXJMaWIncw0KPiA+Pj4+IEdldFBlcmZvcm1hbmNl Q291bnRlcigpLCBjYWxjdWxhdGUNCj4gPj4+Pj4gKyAgdGhlIG51bWJlciBvZiB0aWNrcyBlbGFw c2VkIGJldHdlZW4gdGhlbSwgc3VjaCB0aGF0IHRoZQ0KPiA+Pj4+IGRpZmZlcmVuY2UgY2FuIGJl DQo+ID4+Pj4+ICsgIHBhc3NlZCB0byBUaW1lckxpYidzIEdldFRpbWVJbk5hbm9TZWNvbmQoKS4N Cj4gPj4+Pj4gKw0KPiA+Pj4+PiArICBUaGUgZnVuY3Rpb24gY2Fubm90IGhhbmRsZSBtdWx0aXBs ZSB3cmFwLWFyb3VuZHMgb2YgdGhlDQo+ID4+Pj4gcGVyZm9ybWFuY2UgY291bnRlci4NCj4gPj4+ Pj4gKw0KPiA+Pj4+PiArICBAcGFyYW1baW5dIFBlcmZDb3VudGVyU3RhcnQgIFRoZSB2YWx1ZSBy ZXR1cm5lZCBieQ0KPiA+Pj4+IEdldFBlcmZvcm1hbmNlQ291bnRlcigpLA0KPiA+Pj4+PiArICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxlZCBlYXJsaWVyIGluIHdhbGwNCj4gY2xv Y2sNCj4gPj4+PiB0aW1lLg0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsgIEBwYXJhbVtpbl0gUGVyZkNv dW50ZXJTdG9wICAgVGhlIHZhbHVlIHJldHVybmVkIGJ5DQo+ID4+Pj4gR2V0UGVyZm9ybWFuY2VD b3VudGVyKCksDQo+ID4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGVk IGxhdGVyIGluIHdhbGwgY2xvY2sNCj4gPj4+PiB0aW1lLg0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsg IEByZXR2YWwgIFRoZSBudW1iZXIgb2YgdGlja3MgY29ycmVzcG9uZGluZyB0byB0aGUNCj4gPj4+ PiBjb25jZXB0dWFsIGRpZmZlcmVuY2UNCj4gPj4+Pj4gKyAgICAgICAgICAgKFBlcmZDb3VudGVy U3RvcC1QZXJmQ291bnRlclN0YXJ0KS4NCj4gPj4+Pj4gKyoqLw0KPiA+Pj4+PiArVUlOVDY0DQo+ ID4+Pj4+ICtFRklBUEkNCj4gPj4+Pj4gK0dldFRpY2tEaWZmZXJlbmNlICgNCj4gPj4+Pj4gKyAg SU4gVUlOVDY0IFBlcmZDb3VudGVyU3RhcnQsDQo+ID4+Pj4+ICsgIElOIFVJTlQ2NCBQZXJmQ291 bnRlclN0b3ANCj4gPj4+Pj4gKyAgKTsNCj4gPj4+Pj4gKw0KPiA+Pj4+PiArLyoqDQo+ID4+Pj4+ ICsgIEZyb20gdHdvIHZhbHVlcyByZXRyaWV2ZWQgd2l0aCBUaW1lckxpYidzDQo+ID4+Pj4gR2V0 UGVyZm9ybWFuY2VDb3VudGVyKCksIGNhbGN1bGF0ZQ0KPiA+Pj4+PiArICB0aGUgbnVtYmVyIG9m IG5hbm9zZWNvbmRzIGVsYXBzZWQgYmV0d2VlbiB0aGVtLg0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsg IFRoZSBmdW5jdGlvbiBjYW5ub3QgaGFuZGxlIG11bHRpcGxlIHdyYXAtYXJvdW5kcyBvZiB0aGUN Cj4gPj4+PiBwZXJmb3JtYW5jZSBjb3VudGVyLg0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsgIEBwYXJh bVtpbl0gUGVyZkNvdW50ZXJTdGFydCAgVGhlIHZhbHVlIHJldHVybmVkIGJ5DQo+ID4+Pj4gR2V0 UGVyZm9ybWFuY2VDb3VudGVyKCksDQo+ID4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgY2FsbGVkIGVhcmxpZXIgaW4gd2FsbA0KPiBjbG9jaw0KPiA+Pj4+IHRpbWUuDQo+ID4+ Pj4+ICsNCj4gPj4+Pj4gKyAgQHBhcmFtW2luXSBQZXJmQ291bnRlclN0b3AgICBUaGUgdmFsdWUg cmV0dXJuZWQgYnkNCj4gPj4+PiBHZXRQZXJmb3JtYW5jZUNvdW50ZXIoKSwNCj4gPj4+Pj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsZWQgbGF0ZXIgaW4gd2FsbCBjbG9jaw0K PiA+Pj4+IHRpbWUuDQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKyAgQHJldHZhbCAgVGhlIG51bWJlciBv ZiBuYW5vc2Vjb25kcyBjb3JyZXNwb25kaW5nIHRvIHRoZQ0KPiA+Pj4+IGNvbmNlcHR1YWwgZGlm ZmVyZW5jZQ0KPiA+Pj4+PiArICAgICAgICAgICAoUGVyZkNvdW50ZXJTdG9wLVBlcmZDb3VudGVy U3RhcnQpLg0KPiA+Pj4+PiArKiovDQo+ID4+Pj4+ICtVSU5UNjQNCj4gPj4+Pj4gK0VGSUFQSQ0K PiA+Pj4+PiArR2V0TmFub1NlY29uZERpZmZlcmVuY2UgKA0KPiA+Pj4+PiArICBJTiBVSU5UNjQg UGVyZkNvdW50ZXJTdGFydCwNCj4gPj4+Pj4gKyAgSU4gVUlOVDY0IFBlcmZDb3VudGVyU3RvcA0K PiA+Pj4+PiArICApOw0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsvKioNCj4gPj4+Pj4gKyAgRnJvbSB0 d28gdmFsdWVzIHJldHJpZXZlZCB3aXRoIFRpbWVyTGliJ3MNCj4gPj4+PiBHZXRQZXJmb3JtYW5j ZUNvdW50ZXIoKSwgY2FsY3VsYXRlDQo+ID4+Pj4+ICsgIHRoZSBudW1iZXIgb2YgbWljcm9zZWNv bmRzIGVsYXBzZWQgYmV0d2VlbiB0aGVtLg0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsgIFRoZSBmdW5j dGlvbiBjYW5ub3QgaGFuZGxlIG11bHRpcGxlIHdyYXAtYXJvdW5kcyBvZiB0aGUNCj4gPj4+PiBw ZXJmb3JtYW5jZSBjb3VudGVyLg0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsgIEBwYXJhbVtpbl0gUGVy ZkNvdW50ZXJTdGFydCAgVGhlIHZhbHVlIHJldHVybmVkIGJ5DQo+ID4+Pj4gR2V0UGVyZm9ybWFu Y2VDb3VudGVyKCksDQo+ID4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2Fs bGVkIGVhcmxpZXIgaW4gd2FsbA0KPiBjbG9jaw0KPiA+Pj4+IHRpbWUuDQo+ID4+Pj4+ICsNCj4g Pj4+Pj4gKyAgQHBhcmFtW2luXSBQZXJmQ291bnRlclN0b3AgICBUaGUgdmFsdWUgcmV0dXJuZWQg YnkNCj4gPj4+PiBHZXRQZXJmb3JtYW5jZUNvdW50ZXIoKSwNCj4gPj4+Pj4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjYWxsZWQgbGF0ZXIgaW4gd2FsbCBjbG9jaw0KPiA+Pj4+IHRp bWUuDQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKyAgQHJldHZhbCAgVGhlIG51bWJlciBvZiBtaWNyb3Nl Y29uZHMgY29ycmVzcG9uZGluZyB0bw0KPiB0aGUNCj4gPj4+PiBjb25jZXB0dWFsDQo+ID4+Pj4+ ICsgICAgICAgICAgIGRpZmZlcmVuY2UgKFBlcmZDb3VudGVyU3RvcC1QZXJmQ291bnRlclN0YXJ0 KS4NCj4gPj4+Pj4gKyoqLw0KPiA+Pj4+PiArVUlOVDY0DQo+ID4+Pj4+ICtFRklBUEkNCj4gPj4+ Pj4gK0dldE1pY3JvU2Vjb25kRGlmZmVyZW5jZSAoDQo+ID4+Pj4+ICsgIElOIFVJTlQ2NCBQZXJm Q291bnRlclN0YXJ0LA0KPiA+Pj4+PiArICBJTiBVSU5UNjQgUGVyZkNvdW50ZXJTdG9wDQo+ID4+ Pj4+ICsgICk7DQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKy8qKg0KPiA+Pj4+PiArICBGcm9tIHR3byB2 YWx1ZXMgcmV0cmlldmVkIHdpdGggVGltZXJMaWIncw0KPiA+Pj4+IEdldFBlcmZvcm1hbmNlQ291 bnRlcigpLCBjYWxjdWxhdGUNCj4gPj4+Pj4gKyAgdGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMg ZWxhcHNlZCBiZXR3ZWVuIHRoZW0uDQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKyAgVGhlIGZ1bmN0aW9u IGNhbm5vdCBoYW5kbGUgbXVsdGlwbGUgd3JhcC1hcm91bmRzIG9mIHRoZQ0KPiA+Pj4+IHBlcmZv cm1hbmNlIGNvdW50ZXIuDQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKyAgQHBhcmFtW2luXSBQZXJmQ291 bnRlclN0YXJ0ICBUaGUgdmFsdWUgcmV0dXJuZWQgYnkNCj4gPj4+PiBHZXRQZXJmb3JtYW5jZUNv dW50ZXIoKSwNCj4gPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsZWQg ZWFybGllciBpbiB3YWxsDQo+IGNsb2NrDQo+ID4+Pj4gdGltZS4NCj4gPj4+Pj4gKw0KPiA+Pj4+ PiArICBAcGFyYW1baW5dIFBlcmZDb3VudGVyU3RvcCAgIFRoZSB2YWx1ZSByZXR1cm5lZCBieQ0K PiA+Pj4+IEdldFBlcmZvcm1hbmNlQ291bnRlcigpLA0KPiA+Pj4+PiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNhbGxlZCBsYXRlciBpbiB3YWxsIGNsb2NrDQo+ID4+Pj4gdGltZS4N Cj4gPj4+Pj4gKw0KPiA+Pj4+PiArICBAcmV0dmFsICBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25k cyBjb3JyZXNwb25kaW5nIHRvDQo+IHRoZQ0KPiA+Pj4+IGNvbmNlcHR1YWwNCj4gPj4+Pj4gKyAg ICAgICAgICAgZGlmZmVyZW5jZSAoUGVyZkNvdW50ZXJTdG9wLVBlcmZDb3VudGVyU3RhcnQpLg0K PiA+Pj4+PiArKiovDQo+ID4+Pj4+ICtVSU5UNjQNCj4gPj4+Pj4gK0VGSUFQSQ0KPiA+Pj4+PiAr R2V0TWlsbGlTZWNvbmREaWZmZXJlbmNlICgNCj4gPj4+Pj4gKyAgSU4gVUlOVDY0IFBlcmZDb3Vu dGVyU3RhcnQsDQo+ID4+Pj4+ICsgIElOIFVJTlQ2NCBQZXJmQ291bnRlclN0b3ANCj4gPj4+Pj4g KyAgKTsNCj4gPj4+Pj4gKw0KPiA+Pj4+PiArI2VuZGlmDQo+ID4+Pj4+IGRpZmYgLS1naXQNCj4g Pj4+PiBhL092bWZQa2cvTGlicmFyeS9UaW1lclRpY2tEaWZmTGliL1RpbWVyVGlja0RpZmZMaWIu Yw0KPiA+Pj4+IGIvT3ZtZlBrZy9MaWJyYXJ5L1RpbWVyVGlja0RpZmZMaWIvVGltZXJUaWNrRGlm ZkxpYi5jDQo+ID4+Pj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+ID4+Pj4+IGluZGV4IDAwMDAw MDAwMDAwMC4uMDNlY2FlODIwMGFhDQo+ID4+Pj4+IC0tLSAvZGV2L251bGwNCj4gPj4+Pj4gKysr IGIvT3ZtZlBrZy9MaWJyYXJ5L1RpbWVyVGlja0RpZmZMaWIvVGltZXJUaWNrRGlmZkxpYi5jDQo+ ID4+Pj4+IEBAIC0wLDAgKzEsMTc4IEBADQo+ID4+Pj4+ICsvKiogQGZpbGUNCj4gPj4+Pj4gKyAg VGltZXIgdGljayBkaWZmZXJlbmNlIGZ1bmN0aW9ucywgdG8gYmUgdXNlZCB3aXRoDQo+ID4+IFRp bWVyTGliLg0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsgIENvcHlyaWdodCAoQykgMjAxNywgUmVkIEhh dCwgSW5jLg0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsgIFRoaXMgcHJvZ3JhbSBhbmQgdGhlIGFjY29t cGFueWluZyBtYXRlcmlhbHMgYXJlDQo+IGxpY2Vuc2VkDQo+ID4+Pj4gYW5kIG1hZGUgYXZhaWxh YmxlDQo+ID4+Pj4+ICsgIHVuZGVyIHRoZSB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB0aGUgQlNE IExpY2Vuc2Ugd2hpY2gNCj4gPj4+PiBhY2NvbXBhbmllcyB0aGlzDQo+ID4+Pj4+ICsgIGRpc3Ry aWJ1dGlvbi4gVGhlIGZ1bGwgdGV4dCBvZiB0aGUgbGljZW5zZSBtYXkgYmUgZm91bmQNCj4gPj4g YXQNCj4gPj4+Pj4gKyAgaHR0cDovL29wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL2JzZC1saWNlbnNl LnBocA0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsgIFRIRSBQUk9HUkFNIElTIERJU1RSSUJVVEVEIFVO REVSIFRIRSBCU0QgTElDRU5TRSBPTiBBTg0KPiA+PiAiQVMNCj4gPj4+PiBJUyIgQkFTSVMsIFdJ VEhPVVQNCj4gPj4+Pj4gKyAgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJ TkQsIEVJVEhFUg0KPiBFWFBSRVNTDQo+ID4+Pj4gT1IgSU1QTElFRC4NCj4gPj4+Pj4gKyoqLw0K PiA+Pj4+PiArDQo+ID4+Pj4+ICsjaW5jbHVkZSA8TGlicmFyeS9CYXNlTGliLmg+DQo+ID4+Pj4+ ICsjaW5jbHVkZSA8TGlicmFyeS9UaW1lckxpYi5oPg0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsvKioN Cj4gPj4+Pj4gKyAgRnJvbSB0d28gdmFsdWVzIHJldHJpZXZlZCB3aXRoIFRpbWVyTGliJ3MNCj4g Pj4+PiBHZXRQZXJmb3JtYW5jZUNvdW50ZXIoKSwgY2FsY3VsYXRlDQo+ID4+Pj4+ICsgIHRoZSBu dW1iZXIgb2YgdGlja3MgZWxhcHNlZCBiZXR3ZWVuIHRoZW0sIHN1Y2ggdGhhdCB0aGUNCj4gPj4+ PiBkaWZmZXJlbmNlIGNhbiBiZQ0KPiA+Pj4+PiArICBwYXNzZWQgdG8gVGltZXJMaWIncyBHZXRU aW1lSW5OYW5vU2Vjb25kKCkuDQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKyAgVGhlIGZ1bmN0aW9uIGNh bm5vdCBoYW5kbGUgbXVsdGlwbGUgd3JhcC1hcm91bmRzIG9mIHRoZQ0KPiA+Pj4+IHBlcmZvcm1h bmNlIGNvdW50ZXIuDQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKyAgQHBhcmFtW2luXSBQZXJmQ291bnRl clN0YXJ0ICBUaGUgdmFsdWUgcmV0dXJuZWQgYnkNCj4gPj4+PiBHZXRQZXJmb3JtYW5jZUNvdW50 ZXIoKSwNCj4gPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsZWQgZWFy bGllciBpbiB3YWxsDQo+IGNsb2NrDQo+ID4+Pj4gdGltZS4NCj4gPj4+Pj4gKw0KPiA+Pj4+PiAr ICBAcGFyYW1baW5dIFBlcmZDb3VudGVyU3RvcCAgIFRoZSB2YWx1ZSByZXR1cm5lZCBieQ0KPiA+ Pj4+IEdldFBlcmZvcm1hbmNlQ291bnRlcigpLA0KPiA+Pj4+PiArICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGNhbGxlZCBsYXRlciBpbiB3YWxsIGNsb2NrDQo+ID4+Pj4gdGltZS4NCj4g Pj4+Pj4gKw0KPiA+Pj4+PiArICBAcmV0dmFsICBUaGUgbnVtYmVyIG9mIHRpY2tzIGNvcnJlc3Bv bmRpbmcgdG8gdGhlDQo+ID4+Pj4gY29uY2VwdHVhbCBkaWZmZXJlbmNlDQo+ID4+Pj4+ICsgICAg ICAgICAgIChQZXJmQ291bnRlclN0b3AtUGVyZkNvdW50ZXJTdGFydCkuDQo+ID4+Pj4+ICsqKi8N Cj4gPj4+Pj4gK1VJTlQ2NA0KPiA+Pj4+PiArRUZJQVBJDQo+ID4+Pj4+ICtHZXRUaWNrRGlmZmVy ZW5jZSAoDQo+ID4+Pj4+ICsgIElOIFVJTlQ2NCBQZXJmQ291bnRlclN0YXJ0LA0KPiA+Pj4+PiAr ICBJTiBVSU5UNjQgUGVyZkNvdW50ZXJTdG9wDQo+ID4+Pj4+ICsgICkNCj4gPj4+Pj4gK3sNCj4g Pj4+Pj4gKyAgVUlOVDY0IFN0YXJ0VmFsdWU7DQo+ID4+Pj4+ICsgIFVJTlQ2NCBFbmRWYWx1ZTsN Cj4gPj4+Pj4gKyAgVUlOVDY0IFRpY2tEaWZmZXJlbmNlOw0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsg IEdldFBlcmZvcm1hbmNlQ291bnRlclByb3BlcnRpZXMgKCZTdGFydFZhbHVlLA0KPiAmRW5kVmFs dWUpOw0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsgIGlmIChTdGFydFZhbHVlIDwgRW5kVmFsdWUpIHsN Cj4gPj4+Pj4gKyAgICAvLw0KPiA+Pj4+PiArICAgIC8vIFRoZSBwZXJmb3JtYW5jZSBjb3VudGVy IGNvdW50cyB1cC4NCj4gPj4+Pj4gKyAgICAvLw0KPiA+Pj4+PiArICAgIGlmIChQZXJmQ291bnRl clN0YXJ0IDwgUGVyZkNvdW50ZXJTdG9wKSB7DQo+ID4+Pj4+ICsgICAgICAvLw0KPiA+Pj4+PiAr ICAgICAgLy8gVGhlIGNvdW50ZXIgZGlkbid0IHdyYXAgYXJvdW5kLg0KPiA+Pj4+PiArICAgICAg Ly8NCj4gPj4+Pj4gKyAgICAgIFRpY2tEaWZmZXJlbmNlID0gUGVyZkNvdW50ZXJTdG9wIC0NCj4g UGVyZkNvdW50ZXJTdGFydDsNCj4gPj4+Pj4gKyAgICB9IGVsc2Ugew0KPiA+Pj4+PiArICAgICAg Ly8NCj4gPj4+Pj4gKyAgICAgIC8vIFRoZSBjb3VudGVyIHdyYXBwZWQgYXJvdW5kLg0KPiA+Pj4+ PiArICAgICAgLy8NCj4gPj4+Pj4gKyAgICAgIFRpY2tEaWZmZXJlbmNlID0gKEVuZFZhbHVlIC0g UGVyZkNvdW50ZXJTdGFydCkgKw0KPiA+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgICAoUGVy ZkNvdW50ZXJTdG9wIC0gU3RhcnRWYWx1ZSk7DQo+ID4+Pj4+ICsgICAgfQ0KPiA+Pj4+PiArICB9 IGVsc2Ugew0KPiA+Pj4+PiArICAgIC8vDQo+ID4+Pj4+ICsgICAgLy8gVGhlIHBlcmZvcm1hbmNl IGNvdW50ZXIgY291bnRzIGRvd24uDQo+ID4+Pj4+ICsgICAgLy8NCj4gPj4+Pj4gKyAgICBpZiAo UGVyZkNvdW50ZXJTdGFydCA8IFBlcmZDb3VudGVyU3RvcCkgew0KPiA+Pj4+PiArICAgICAgLy8N Cj4gPj4+Pj4gKyAgICAgIC8vIFRoZSBjb3VudGVyIHdyYXBwZWQgYXJvdW5kLg0KPiA+Pj4+PiAr ICAgICAgLy8NCj4gPj4+Pj4gKyAgICAgIFRpY2tEaWZmZXJlbmNlID0gKFBlcmZDb3VudGVyU3Rh cnQgLSBFbmRWYWx1ZSkgKw0KPiA+Pj4+PiArICAgICAgICAgICAgICAgICAgICAgICAoU3RhcnRW YWx1ZSAtIFBlcmZDb3VudGVyU3RvcCk7DQo+ID4+Pj4+ICsgICAgfSBlbHNlIHsNCj4gPj4+Pj4g KyAgICAgIC8vDQo+ID4+Pj4+ICsgICAgICAvLyBUaGUgY291bnRlciBkaWRuJ3Qgd3JhcCBhcm91 bmQuDQo+ID4+Pj4+ICsgICAgICAvLw0KPiA+Pj4+PiArICAgICAgVGlja0RpZmZlcmVuY2UgPSBQ ZXJmQ291bnRlclN0YXJ0IC0NCj4gUGVyZkNvdW50ZXJTdG9wOw0KPiA+Pj4+PiArICAgIH0NCj4g Pj4+Pj4gKyAgfQ0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsgIHJldHVybiBUaWNrRGlmZmVyZW5jZTsN Cj4gPj4+Pj4gK30NCj4gPj4+Pj4gKw0KPiA+Pj4+PiArLyoqDQo+ID4+Pj4+ICsgIEZyb20gdHdv IHZhbHVlcyByZXRyaWV2ZWQgd2l0aCBUaW1lckxpYidzDQo+ID4+Pj4gR2V0UGVyZm9ybWFuY2VD b3VudGVyKCksIGNhbGN1bGF0ZQ0KPiA+Pj4+PiArICB0aGUgbnVtYmVyIG9mIG5hbm9zZWNvbmRz IGVsYXBzZWQgYmV0d2VlbiB0aGVtLg0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsgIFRoZSBmdW5jdGlv biBjYW5ub3QgaGFuZGxlIG11bHRpcGxlIHdyYXAtYXJvdW5kcyBvZiB0aGUNCj4gPj4+PiBwZXJm b3JtYW5jZSBjb3VudGVyLg0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsgIEBwYXJhbVtpbl0gUGVyZkNv dW50ZXJTdGFydCAgVGhlIHZhbHVlIHJldHVybmVkIGJ5DQo+ID4+Pj4gR2V0UGVyZm9ybWFuY2VD b3VudGVyKCksDQo+ID4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGVk IGVhcmxpZXIgaW4gd2FsbA0KPiBjbG9jaw0KPiA+Pj4+IHRpbWUuDQo+ID4+Pj4+ICsNCj4gPj4+ Pj4gKyAgQHBhcmFtW2luXSBQZXJmQ291bnRlclN0b3AgICBUaGUgdmFsdWUgcmV0dXJuZWQgYnkN Cj4gPj4+PiBHZXRQZXJmb3JtYW5jZUNvdW50ZXIoKSwNCj4gPj4+Pj4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjYWxsZWQgbGF0ZXIgaW4gd2FsbCBjbG9jaw0KPiA+Pj4+IHRpbWUu DQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKyAgQHJldHZhbCAgVGhlIG51bWJlciBvZiBuYW5vc2Vjb25k cyBjb3JyZXNwb25kaW5nIHRvIHRoZQ0KPiA+Pj4+IGNvbmNlcHR1YWwgZGlmZmVyZW5jZQ0KPiA+ Pj4+PiArICAgICAgICAgICAoUGVyZkNvdW50ZXJTdG9wLVBlcmZDb3VudGVyU3RhcnQpLg0KPiA+ Pj4+PiArKiovDQo+ID4+Pj4+ICtVSU5UNjQNCj4gPj4+Pj4gK0VGSUFQSQ0KPiA+Pj4+PiArR2V0 TmFub1NlY29uZERpZmZlcmVuY2UgKA0KPiA+Pj4+PiArICBJTiBVSU5UNjQgUGVyZkNvdW50ZXJT dGFydCwNCj4gPj4+Pj4gKyAgSU4gVUlOVDY0IFBlcmZDb3VudGVyU3RvcA0KPiA+Pj4+PiArICAp DQo+ID4+Pj4+ICt7DQo+ID4+Pj4+ICsgIFVJTlQ2NCBUaWNrRGlmZmVyZW5jZTsNCj4gPj4+Pj4g KyAgVUlOVDY0IE5hbm9TZWNvbmREaWZmZXJlbmNlOw0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsgIFRp Y2tEaWZmZXJlbmNlID0gR2V0VGlja0RpZmZlcmVuY2UgKFBlcmZDb3VudGVyU3RhcnQsDQo+ID4+ Pj4gUGVyZkNvdW50ZXJTdG9wKTsNCj4gPj4+Pj4gKyAgTmFub1NlY29uZERpZmZlcmVuY2UgPSBH ZXRUaW1lSW5OYW5vU2Vjb25kDQo+ID4+Pj4gKFRpY2tEaWZmZXJlbmNlKTsNCj4gPj4+Pj4gKyAg cmV0dXJuIE5hbm9TZWNvbmREaWZmZXJlbmNlOw0KPiA+Pj4+PiArfQ0KPiA+Pj4+PiArDQo+ID4+ Pj4+ICsvKioNCj4gPj4+Pj4gKyAgRnJvbSB0d28gdmFsdWVzIHJldHJpZXZlZCB3aXRoIFRpbWVy TGliJ3MNCj4gPj4+PiBHZXRQZXJmb3JtYW5jZUNvdW50ZXIoKSwgY2FsY3VsYXRlDQo+ID4+Pj4+ ICsgIHRoZSBudW1iZXIgb2YgbWljcm9zZWNvbmRzIGVsYXBzZWQgYmV0d2VlbiB0aGVtLg0KPiA+ Pj4+PiArDQo+ID4+Pj4+ICsgIFRoZSBmdW5jdGlvbiBjYW5ub3QgaGFuZGxlIG11bHRpcGxlIHdy YXAtYXJvdW5kcyBvZiB0aGUNCj4gPj4+PiBwZXJmb3JtYW5jZSBjb3VudGVyLg0KPiA+Pj4+PiAr DQo+ID4+Pj4+ICsgIEBwYXJhbVtpbl0gUGVyZkNvdW50ZXJTdGFydCAgVGhlIHZhbHVlIHJldHVy bmVkIGJ5DQo+ID4+Pj4gR2V0UGVyZm9ybWFuY2VDb3VudGVyKCksDQo+ID4+Pj4+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGVkIGVhcmxpZXIgaW4gd2FsbA0KPiBjbG9jaw0K PiA+Pj4+IHRpbWUuDQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKyAgQHBhcmFtW2luXSBQZXJmQ291bnRl clN0b3AgICBUaGUgdmFsdWUgcmV0dXJuZWQgYnkNCj4gPj4+PiBHZXRQZXJmb3JtYW5jZUNvdW50 ZXIoKSwNCj4gPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWxsZWQgbGF0 ZXIgaW4gd2FsbCBjbG9jaw0KPiA+Pj4+IHRpbWUuDQo+ID4+Pj4+ICsNCj4gPj4+Pj4gKyAgQHJl dHZhbCAgVGhlIG51bWJlciBvZiBtaWNyb3NlY29uZHMgY29ycmVzcG9uZGluZyB0bw0KPiB0aGUN Cj4gPj4+PiBjb25jZXB0dWFsDQo+ID4+Pj4+ICsgICAgICAgICAgIGRpZmZlcmVuY2UgKFBlcmZD b3VudGVyU3RvcC1QZXJmQ291bnRlclN0YXJ0KS4NCj4gPj4+Pj4gKyoqLw0KPiA+Pj4+PiArVUlO VDY0DQo+ID4+Pj4+ICtFRklBUEkNCj4gPj4+Pj4gK0dldE1pY3JvU2Vjb25kRGlmZmVyZW5jZSAo DQo+ID4+Pj4+ICsgIElOIFVJTlQ2NCBQZXJmQ291bnRlclN0YXJ0LA0KPiA+Pj4+PiArICBJTiBV SU5UNjQgUGVyZkNvdW50ZXJTdG9wDQo+ID4+Pj4+ICsgICkNCj4gPj4+Pj4gK3sNCj4gPj4+Pj4g KyAgVUlOVDY0IE5hbm9TZWNvbmREaWZmZXJlbmNlOw0KPiA+Pj4+PiArICBVSU5UNjQgTWljcm9T ZWNvbmREaWZmZXJlbmNlOw0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsgIE5hbm9TZWNvbmREaWZmZXJl bmNlID0gR2V0TmFub1NlY29uZERpZmZlcmVuY2UgKA0KPiA+Pj4+PiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgUGVyZkNvdW50ZXJTdGFydCwNCj4gPj4+Pj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgIFBlcmZDb3VudGVyU3RvcA0KPiA+Pj4+PiArICAgICAgICAgICAgICAgICAgICAg ICAgICAgKTsNCj4gPj4+Pj4gKyAgTWljcm9TZWNvbmREaWZmZXJlbmNlID0gRGl2VTY0eDMyDQo+ IChOYW5vU2Vjb25kRGlmZmVyZW5jZSwNCj4gPj4+PiAxMDAwKTsNCj4gPj4+Pj4gKyAgcmV0dXJu IE1pY3JvU2Vjb25kRGlmZmVyZW5jZTsNCj4gPj4+Pj4gK30NCj4gPj4+Pj4gKw0KPiA+Pj4+PiAr LyoqDQo+ID4+Pj4+ICsgIEZyb20gdHdvIHZhbHVlcyByZXRyaWV2ZWQgd2l0aCBUaW1lckxpYidz DQo+ID4+Pj4gR2V0UGVyZm9ybWFuY2VDb3VudGVyKCksIGNhbGN1bGF0ZQ0KPiA+Pj4+PiArICB0 aGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBlbGFwc2VkIGJldHdlZW4gdGhlbS4NCj4gPj4+Pj4g Kw0KPiA+Pj4+PiArICBUaGUgZnVuY3Rpb24gY2Fubm90IGhhbmRsZSBtdWx0aXBsZSB3cmFwLWFy b3VuZHMgb2YgdGhlDQo+ID4+Pj4gcGVyZm9ybWFuY2UgY291bnRlci4NCj4gPj4+Pj4gKw0KPiA+ Pj4+PiArICBAcGFyYW1baW5dIFBlcmZDb3VudGVyU3RhcnQgIFRoZSB2YWx1ZSByZXR1cm5lZCBi eQ0KPiA+Pj4+IEdldFBlcmZvcm1hbmNlQ291bnRlcigpLA0KPiA+Pj4+PiArICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIGNhbGxlZCBlYXJsaWVyIGluIHdhbGwNCj4gY2xvY2sNCj4gPj4+ PiB0aW1lLg0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsgIEBwYXJhbVtpbl0gUGVyZkNvdW50ZXJTdG9w ICAgVGhlIHZhbHVlIHJldHVybmVkIGJ5DQo+ID4+Pj4gR2V0UGVyZm9ybWFuY2VDb3VudGVyKCks DQo+ID4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGVkIGxhdGVyIGlu IHdhbGwgY2xvY2sNCj4gPj4+PiB0aW1lLg0KPiA+Pj4+PiArDQo+ID4+Pj4+ICsgIEByZXR2YWwg IFRoZSBudW1iZXIgb2YgbWlsbGlzZWNvbmRzIGNvcnJlc3BvbmRpbmcgdG8NCj4gdGhlDQo+ID4+ Pj4gY29uY2VwdHVhbA0KPiA+Pj4+PiArICAgICAgICAgICBkaWZmZXJlbmNlIChQZXJmQ291bnRl clN0b3AtUGVyZkNvdW50ZXJTdGFydCkuDQo+ID4+Pj4+ICsqKi8NCj4gPj4+Pj4gK1VJTlQ2NA0K PiA+Pj4+PiArRUZJQVBJDQo+ID4+Pj4+ICtHZXRNaWxsaVNlY29uZERpZmZlcmVuY2UgKA0KPiA+ Pj4+PiArICBJTiBVSU5UNjQgUGVyZkNvdW50ZXJTdGFydCwNCj4gPj4+Pj4gKyAgSU4gVUlOVDY0 IFBlcmZDb3VudGVyU3RvcA0KPiA+Pj4+PiArICApDQo+ID4+Pj4+ICt7DQo+ID4+Pj4+ICsgIFVJ TlQ2NCBOYW5vU2Vjb25kRGlmZmVyZW5jZTsNCj4gPj4+Pj4gKyAgVUlOVDY0IE1pbGxpU2Vjb25k RGlmZmVyZW5jZTsNCj4gPj4+Pj4gKw0KPiA+Pj4+PiArICBOYW5vU2Vjb25kRGlmZmVyZW5jZSA9 IEdldE5hbm9TZWNvbmREaWZmZXJlbmNlICgNCj4gPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIFBlcmZDb3VudGVyU3RhcnQsDQo+ID4+Pj4+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgICBQZXJmQ291bnRlclN0b3ANCj4gPj4+Pj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICk7DQo+ID4+Pj4+ICsgIE1pbGxpU2Vjb25kRGlmZmVyZW5jZSA9IERpdlU2NHgzMg0KPiAoTmFu b1NlY29uZERpZmZlcmVuY2UsDQo+ID4+Pj4gMTAwMCAqIDEwMDApOw0KPiA+Pj4+PiArICByZXR1 cm4gTWlsbGlTZWNvbmREaWZmZXJlbmNlOw0KPiA+Pj4+PiArfQ0KPiA+Pg0KPiA+PiBfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXw0KPiA+PiBlZGsyLWRldmVs IG1haWxpbmcgbGlzdA0KPiA+PiBlZGsyLWRldmVsQGxpc3RzLjAxLm9yZw0KPiA+PiBodHRwczov L2xpc3RzLjAxLm9yZy9tYWlsbWFuL2xpc3RpbmZvL2VkazItZGV2ZWwNCg0K