From mboxrd@z Thu Jan 1 00:00:00 1970 From: Andres Rodriguez Subject: Re: [RFC] Mechanism for high priority scheduling in amdgpu Date: Mon, 19 Dec 2016 00:29:34 -0500 Message-ID: <2bf5afce-d5b8-4eaf-0fcd-a7ebfe85f92e@gmail.com> References: <544E607D03B20249AA404517E498FC4699EBD3@exchange01.valvesoftware.com> <544E607D03B20249AA404517E498FC4699EC41@exchange01.valvesoftware.com> <544E607D03B20249AA404517E498FC4699EC70@exchange01.valvesoftware.com> <58575362.2030100@amd.com> <361f177c-bf55-1525-4f35-86708e4f8d9f@valvesoftware.com> <58576C15.1070909@amd.com> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8"; Format="flowed" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <58576C15.1070909-5C7GfCeVMHo@public.gmane.org> List-Id: Discussion list for AMD gfx List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: amd-gfx-bounces-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org Sender: "amd-gfx" To: zhoucm1 , "Pierre-Loup A. Griffais" , "Sagalovitch, Serguei" , Andres Rodriguez , "amd-gfx-PD4FTy7X32lNgt0PjOBp9y5qC8QIuHrW@public.gmane.org" , "Mao, David" , "Zhang, Hawking" , "Huan, Alvin" WWVzLCB2dWxrYW4gaXMgYXZhaWxhYmxlIG9uIGFsbC1vcGVuIHRocm91Z2ggdGhlIG1lc2EgcmFk diBVTUQuCgpJJ20gbm90IHN1cmUgaWYgSSdtIGFza2luZyBmb3IgdG9vIG11Y2gsIGJ1dCBpZiB3 ZSBjYW4gY29vcmRpbmF0ZSBhIApzaW1pbGFyIGludGVyZmFjZSBpbiByYWR2IGFuZCBhbWRncHUt cHJvIGF0IHRoZSB2dWxrYW4gbGV2ZWwgdGhhdCB3b3VsZCAKYmUgZ3JlYXQuCgpJJ20gbm90IHN1 cmUgd2hhdCB0aGF0J3MgZ29pbmcgdG8gYmUgeWV0LgoKLSBBbmRyZXMKCk9uIDEyLzE5LzIwMTYg MTI6MTEgQU0sIHpob3VjbTEgd3JvdGU6Cj4KPgo+IE9uIDIwMTblubQxMuaciDE55pelIDExOjMz LCBQaWVycmUtTG91cCBBLiBHcmlmZmFpcyB3cm90ZToKPj4gV2UncmUgY3VycmVudGx5IHdvcmtp bmcgd2l0aCB0aGUgb3BlbiBzdGFjazsgSSBhc3N1bWUgdGhhdCBhIAo+PiBtZWNoYW5pc20gY291 bGQgYmUgZXhwb3NlZCBieSBib3RoIG9wZW4gYW5kIFBybyBWdWxrYW4gdXNlcnNwYWNlIAo+PiBk cml2ZXJzIGFuZCB0aGF0IHRoZSBhbWRncHUga2VybmVsIGludGVyZmFjZSBpbXByb3ZlbWVudHMg d2Ugd291bGQgCj4+IHB1cnN1ZSBmb2xsb3dpbmcgdGhpcyBkaXNjdXNzaW9uIHdvdWxkIGxldCBi b3RoIGRyaXZlcnMgdGFrZSAKPj4gYWR2YW50YWdlIG9mIHRoZSBmZWF0dXJlLCBjb3JyZWN0Pwo+ IE9mIGNvdXJzZS4KPiBEb2VzIG9wZW4gc3RhY2sgaGF2ZSBWdWxrYW4gc3VwcG9ydD8KPgo+IFJl Z2FyZHMsCj4gRGF2aWQgWmhvdQo+Pgo+PiBPbiAxMi8xOC8yMDE2IDA3OjI2IFBNLCB6aG91Y20x IHdyb3RlOgo+Pj4gQnkgdGhlIHdheSwgYXJlIHlvdSB1c2luZyBhbGwtb3BlbiBkcml2ZXIgb3Ig YW1kZ3B1LXBybyBkcml2ZXI/Cj4+Pgo+Pj4gK0RhdmlkIE1hbywgd2hvIGlzIHdvcmtpbmcgb24g b3VyIFZ1bGthbiBkcml2ZXIuCj4+Pgo+Pj4gUmVnYXJkcywKPj4+IERhdmlkIFpob3UKPj4+Cj4+ PiBPbiAyMDE25bm0MTLmnIgxOOaXpSAwNjowNSwgUGllcnJlLUxvdXAgQS4gR3JpZmZhaXMgd3Jv dGU6Cj4+Pj4gSGkgU2VyZ3VlaSwKPj4+Pgo+Pj4+IEknbSBhbHNvIHdvcmtpbmcgb24gdGhlIGJy aW5naW5nIHVwIG91ciBWUiBydW50aW1lIG9uIHRvcCBvZiBhbWdwdTsKPj4+PiBzZWUgcmVwbGll cyBpbmxpbmUuCj4+Pj4KPj4+PiBPbiAxMi8xNi8yMDE2IDA5OjA1IFBNLCBTYWdhbG92aXRjaCwg U2VyZ3VlaSB3cm90ZToKPj4+Pj4gQW5kcmVzLAo+Pj4+Pgo+Pj4+Pj4gIEZvciBjdXJyZW50IFZS IHdvcmtsb2FkcyB3ZSBoYXZlIDMgc2VwYXJhdGUgcHJvY2Vzc2VzIHJ1bm5pbmcKPj4+Pj4+IGFj dHVhbGx5Ogo+Pj4+PiBTbyB3ZSBjb3VsZCBoYXZlIHBvdGVudGlhbCBtZW1vcnkgb3ZlcmNvbW1p dCBjYXNlIG9yIGRvIHlvdSBkbwo+Pj4+PiBwYXJ0aXRpb25pbmcKPj4+Pj4gb24geW91ciBvd24/ ICBJIHdvdWxkIHRoaW5rIHRoYXQgdGhlcmUgaXMgbmVlZCB0byBhdm9pZCBvdmVyY29taXQgaW4K Pj4+Pj4gVlIgY2FzZSB0bwo+Pj4+PiBwcmV2ZW50IGFueSBCTyBtaWdyYXRpb24uCj4+Pj4KPj4+ PiBZb3UncmUgZW50aXJlbHkgY29ycmVjdDsgY3VycmVudGx5IHRoZSBWUiBydW50aW1lIGlzIHNl dHRpbmcgdXAKPj4+PiBwcmlvcml0aXplZCBDUFUgc2NoZWR1bGluZyBmb3IgaXRzIFZSIGNvbXBv c2l0b3IsIHdlJ3JlIHdvcmtpbmcgb24KPj4+PiBwcmlvcml0aXplZCBHUFUgc2NoZWR1bGluZyBh bmQgcHJlLWVtcHRpb24gKGVnLiB0aGlzIHRocmVhZCksIGFuZCBpbgo+Pj4+IHRoZSBmdXR1cmUg aXQgd2lsbCBtYWtlIHNlbnNlIHRvIGRvIHdvcmsgaW4gb3JkZXIgdG8gbWFrZSBzdXJlIHRoYXQK Pj4+PiBpdHMgbWVtb3J5IGFsbG9jYXRpb25zIGRvIG5vdCBnZXQgZXZpY3RlZCwgdG8gcHJldmVu dCBhbnkgdW53ZWxjb21lCj4+Pj4gYWRkaXRpb25hbCBsYXRlbmN5IGluIHRoZSBldmVudCBvZiBu ZWVkaW5nIHRvIHBlcmZvcm0ganVzdC1pbi10aW1lCj4+Pj4gcmVwcm9qZWN0aW9uLgo+Pj4+Cj4+ Pj4+IEJUVzogRG8geW91IG1lYW4gX19yZWFsX18gcHJvY2Vzc2VzIG9yIHRocmVhZHM/Cj4+Pj4+ IEJhc2VkIG9uIG15IHVuZGVyc3RhbmRpbmcgc2hhcmluZyBCT3MgYmV0d2VlbiBkaWZmZXJlbnQg cHJvY2Vzc2VzCj4+Pj4+IGNvdWxkIGludHJvZHVjZSBhZGRpdGlvbmFsIHN5bmNocm9uaXphdGlv biBjb25zdHJhaW5zLiBidHc6IEkgYW0gbm90Cj4+Pj4+IHN1cmUKPj4+Pj4gaWYgd2UgYXJlIGFi bGUgdG8gc2hhcmUgVnVsa2FuIHN5bmMuIG9iamVjdCBjcm9zcy1wcm9jZXNzIGJvdW5kYXJ5Lgo+ Pj4+Cj4+Pj4gVGhleSBhcmUgZGlmZmVyZW50IHByb2Nlc3NlczsgaXQgaXMgaW1wb3J0YW50IGZv ciB0aGUgY29tcG9zaXRvciB0aGF0Cj4+Pj4gaXMgcmVzcG9uc2libGUgZm9yIHF1YWxpdHktb2Yt c2VydmljZSBmZWF0dXJlcyBzdWNoIGFzIGNvbnNpc3RlbnRseQo+Pj4+IHByZXNlbnRpbmcgZGlz dG9ydGVkIGZyYW1lcyB3aXRoIHRoZSByaWdodCBsYXRlbmN5LCByZXByb2plY3Rpb24sIGV0YywK Pj4+PiB0byBiZSBzZXBhcmF0ZSBmcm9tIHRoZSBtYWluIGFwcGxpY2F0aW9uLgo+Pj4+Cj4+Pj4g Q3VycmVudGx5IHdlIGFyZSB1c2luZyB1bnJlbGVhc2VkIGNyb3NzLXByb2Nlc3MgbWVtb3J5IGFu ZCBzZW1hcGhvcmUKPj4+PiBleHRlbnNpb25zIHRvIGZldGNoIHVwZGF0ZWQgZXllIGltYWdlcyBm cm9tIHRoZSBjbGllbnQgYXBwbGljYXRpb24sCj4+Pj4gYnV0IHRoZSBqdXN0LWluLXRpbWUgcmVw cm9qZWN0aW9uIGRpc2N1c3NlZCBoZXJlIGRvZXMgbm90IGFjdHVhbGx5Cj4+Pj4gaGF2ZSBhbnkg ZGlyZWN0IGludGVyYWN0aW9ucyB3aXRoIGNyb3NzLXByb2Nlc3MgcmVzb3VyY2Ugc2hhcmluZywK Pj4+PiBzaW5jZSBpdCdzIGFjaGlldmVkIGJ5IHVzaW5nIHdoYXRldmVyIGlzIHRoZSBsYXRlc3Qs IG1vc3QgdXAtdG8tZGF0ZQo+Pj4+IGV5ZSBpbWFnZXMgdGhhdCBoYXZlIGFscmVhZHkgYmVlbiBz ZW50IGJ5IHRoZSBjbGllbnQgYXBwbGljYXRpb24sCj4+Pj4gd2hpY2ggYXJlIGFscmVhZHkgYXZh aWxhYmxlIHRvIHVzZSB3aXRob3V0IGFkZGl0aW9uYWwgc3luY2hyb25pemF0aW9uLgo+Pj4+Cj4+ Pj4+Cj4+Pj4+PiAgICAzKSBTeXN0ZW0gY29tcG9zaXRvciAod2UgYXJlIGxvb2tpbmcgYXQgYXBw cm9hY2hlcyB0byByZW1vdmUgdGhpcwo+Pj4+Pj4gb3ZlcmhlYWQpCj4+Pj4+IFllcywgIElNSE8g dGhlIGJlc3QgaXMgdG8gcnVuIGluICAiZnVsbCBzY3JlZW4gbW9kZSIuCj4+Pj4KPj4+PiBZZXMs IHdlIGFyZSB3b3JraW5nIG9uIG1lY2hhbmlzbXMgdG8gcHJlc2VudCBkaXJlY3RseSB0byB0aGUg aGVhZHNldAo+Pj4+IGRpc3BsYXkgd2l0aG91dCBhbnkgaW50ZXJtZWRpYXJpZXMgYXMgYSBzZXBh cmF0ZSBlZmZvcnQuCj4+Pj4KPj4+Pj4KPj4+Pj4+ICBUaGUgbGF0ZW5jeSBpcyBvdXIgbWFpbiBj b25jZXJuLAo+Pj4+PiBJIHdvdWxkIGFzc3VtZSB0aGF0IHRoaXMgaXMgdGhlIGtub3duIHByb2Js ZW0gKGF0IGxlYXN0IGZvciBjb21wdXRlCj4+Pj4+IHVzYWdlKS4KPj4+Pj4gSXQgbG9va3MgbGlr ZSB0aGF0IGFtZGdwdSAvIGtlcm5lbCBzdWJtaXNzaW9uIGlzIHJhdGhlciBDUFUgaW50ZW5zaXZl Cj4+Pj4+IChhdCBsZWFzdAo+Pj4+PiBpbiB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9uKS4KPj4+ Pgo+Pj4+IEFzIGxvbmcgYXMgaXQncyBhIGNvbnNpc3RlbnQgY29zdCwgaXQgc2hvdWxkbid0IGFu IGlzc3VlLiBIb3dldmVyLCBpZgo+Pj4+IHRoZXJlJ3MgaGlnaCBkZWdyZWVzIG9mIHZhcmlhbmNl IHRoZW4gdGhhdCB3b3VsZCBiZSB0cm91Ymxlc29tZSBhbmQgd2UKPj4+PiB3b3VsZCBuZWVkIHRv IGFjY291bnQgZm9yIHRoZSB3b3JzdCBjYXNlLgo+Pj4+Cj4+Pj4gSG9wZWZ1bGx5IHRoZSByZXF1 aXJlbWVudHMgYW5kIGFwcHJvYWNoIHdlIGRlc2NyaWJlZCBtYWtlIHNlbnNlLCB3ZSdyZQo+Pj4+ IGxvb2tpbmcgZm9yd2FyZCB0byB5b3VyIGZlZWRiYWNrIGFuZCBzdWdnZXN0aW9ucy4KPj4+Pgo+ Pj4+IFRoYW5rcyEKPj4+PiAgLSBQaWVycmUtTG91cAo+Pj4+Cj4+Pj4+Cj4+Pj4+IFNpbmNlcmVs eSB5b3VycywKPj4+Pj4gU2VyZ3VlaSBTYWdhbG92aXRjaAo+Pj4+Pgo+Pj4+Pgo+Pj4+PiBGcm9t OiBBbmRyZXMgUm9kcmlndWV6IDxhbmRyZXNyQHZhbHZlc29mdHdhcmUuY29tPgo+Pj4+PiBTZW50 OiBEZWNlbWJlciAxNiwgMjAxNiAxMDowMCBQTQo+Pj4+PiBUbzogU2FnYWxvdml0Y2gsIFNlcmd1 ZWk7IGFtZC1nZnhAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4+Pj4+IFN1YmplY3Q6IFJFOiBbUkZD XSBNZWNoYW5pc20gZm9yIGhpZ2ggcHJpb3JpdHkgc2NoZWR1bGluZyBpbiBhbWRncHUKPj4+Pj4K Pj4+Pj4gSGV5IFNlcmd1ZWksCj4+Pj4+Cj4+Pj4+PiBbU2VyZ3VlaV0gTm8uIEkgbWVhbiBwaXBl IDotKSAgYXMgTUVDIGRlZmluZSBpdC4gIEFzIGZhciBhcyBJCj4+Pj4+PiB1bmRlcnN0YW5kIChi eSBzaW1wbGlmeWluZykKPj4+Pj4+IHNvbWUgc2NoZWR1bGluZyBpcyBwZXIgcGlwZS4gIEkga25v dyBhYm91dCB0aGUgY3VycmVudCBhbGxvY2F0aW9uCj4+Pj4+PiBzY2hlbWUgYnV0IEkgZG8gbm90 IHRoaW5rCj4+Pj4+PiB0aGF0IGl0IGlzICBpZGVhbC4gIEkgd291bGQgYXNzdW1lIHRoYXQgd2Ug bmVlZCAgdG8gc3dpdGNoIHRvCj4+Pj4+PiBkeW5hbWljYWwgcGFydGl0aW9uCj4+Pj4+PiBvZiBy ZXNvdXJjZXMgIGJhc2VkIG9uIHRoZSB3b3JrbG9hZCBvdGhlcndpc2Ugd2Ugd2lsbCBoYXZlIHJl c291cmNlCj4+Pj4+PiBjb25mbGljdAo+Pj4+Pj4gYmV0d2VlbiBWdWxrYW4gY29tcHV0ZSBhbmQg IE9wZW5DTC4KPj4+Pj4KPj4+Pj4gSSBhZ3JlZSB0aGUgcGFydGl0aW9uaW5nIGlzbid0IGlkZWFs LiBJJ20gaG9waW5nIHdlIGNhbiBzdGFydCB3aXRoIGEKPj4+Pj4gc29sdXRpb24gdGhhdCBhc3N1 bWVzIHRoYXQKPj4+Pj4gb25seSBwaXBlMCBoYXMgYW55IHdvcmsgYW5kIHRoZSBvdGhlciBwaXBl cyBhcmUgaWRsZSAobm8gSFNBL1JPQ20KPj4+Pj4gcnVubmluZyBvbiB0aGUgc3lzdGVtKS4KPj4+ Pj4KPj4+Pj4gVGhpcyBzaG91bGQgYmUgbW9yZSBvciBsZXNzIHRoZSB1c2UgY2FzZSB3ZSBleHBl Y3QgZnJvbSBWUiB1c2Vycy4KPj4+Pj4KPj4+Pj4gSSBhZ3JlZSB0aGUgc3BsaXQgaXMgY3VycmVu dGx5IG5vdCBpZGVhbCwgYnV0IEknZCBsaWtlIHRvIGNvbnNpZGVyCj4+Pj4+IHRoYXQgYSBzZXBh cmF0ZSB0YXNrLCBiZWNhdXNlCj4+Pj4+IG1ha2luZyBpdCBkeW5hbWljIGlzIG5vdCBzdHJhaWdo dCBmb3J3YXJkIDpQCj4+Pj4+Cj4+Pj4+PiBbU2VyZ3VlaV0gVnVsa2FuIHdvcmtzIHZpYSBhbWRn cHUgKGtlcm5lbCBzdWJtaXNzaW9ucykgc28gYW1ka2ZkCj4+Pj4+PiB3aWxsIGJlIG5vdAo+Pj4+ Pj4gaW52b2x2ZWQuICBJIHdvdWxkIGFzc3VtZSB0aGF0IGluIHRoZSBjYXNlIG9mIFZSIHdlIHdp bGwgaGF2ZSBvbmUgCj4+Pj4+PiBtYWluCj4+Pj4+PiBhcHBsaWNhdGlvbiAoImNvbnNvbGUiIG1v ZGUoPykpIHNvIHdlIGNvdWxkIHRlbXBvcmFsbHkgImlnbm9yZSIKPj4+Pj4+IE9wZW5DTC9ST0Nt IG5lZWRzIHdoZW4gVlIgaXMgcnVubmluZy4KPj4+Pj4KPj4+Pj4gQ29ycmVjdCwgdGhpcyBpcyB3 aHkgd2Ugd2FudCB0byBlbmFibGUgdGhlIGhpZ2ggcHJpb3JpdHkgY29tcHV0ZQo+Pj4+PiBxdWV1 ZSB0aHJvdWdoCj4+Pj4+IGxpYmRybS1hbWRncHUsIHNvIHRoYXQgd2UgY2FuIGV4cG9zZSBpdCB0 aHJvdWdoIFZ1bGthbiBsYXRlci4KPj4+Pj4KPj4+Pj4gRm9yIGN1cnJlbnQgVlIgd29ya2xvYWRz IHdlIGhhdmUgMyBzZXBhcmF0ZSBwcm9jZXNzZXMgcnVubmluZyAKPj4+Pj4gYWN0dWFsbHk6Cj4+ Pj4+ICAgICAxKSBHYW1lIHByb2Nlc3MKPj4+Pj4gICAgIDIpIFZSIENvbXBvc2l0b3IgKHRoaXMg aXMgdGhlIHByb2Nlc3MgdGhhdCB3aWxsIHJlcXVpcmUgaGlnaAo+Pj4+PiBwcmlvcml0eSBxdWV1 ZSkKPj4+Pj4gICAgIDMpIFN5c3RlbSBjb21wb3NpdG9yICh3ZSBhcmUgbG9va2luZyBhdCBhcHBy b2FjaGVzIHRvIHJlbW92ZSB0aGlzCj4+Pj4+IG92ZXJoZWFkKQo+Pj4+Pgo+Pj4+PiBGb3Igbm93 IEkgdGhpbmsgaXQgaXMgb2theSB0byBhc3N1bWUgbm8gT3BlbkNML1JPQ20gcnVubmluZwo+Pj4+ PiBzaW11bHRhbmVvdXNseSwgYnV0Cj4+Pj4+IEkgd291bGQgYWxzbyBsaWtlIHRvIGJlIGFibGUg dG8gYWRkcmVzcyB0aGlzIGNhc2UgaW4gdGhlIGZ1dHVyZQo+Pj4+PiAoY3Jvc3MtcGlwZSBwcmlv cml0aWVzKS4KPj4+Pj4KPj4+Pj4+IFtTZXJndWVpXSAgVGhlIHByb2JsZW0gd2l0aCBwcmUtZW1w dGlvbiBvZiBncmFwaGljcyB0YXNrOiAgKGEpIGl0Cj4+Pj4+PiBtYXkgdGFrZSB0aW1lIHNvCj4+ Pj4+PiBsYXRlbmN5IG1heSBzdWZmZXIKPj4+Pj4KPj4+Pj4gVGhlIGxhdGVuY3kgaXMgb3VyIG1h aW4gY29uY2Vybiwgd2Ugd2FudCBzb21ldGhpbmcgdGhhdCBpcwo+Pj4+PiBwcmVkaWN0YWJsZS4g QSBnb29kCj4+Pj4+IGlsbHVzdHJhdGlvbiBvZiB3aGF0IHRoZSByZXByb2plY3Rpb24gc2NoZWR1 bGluZyBsb29rcyBsaWtlIGNhbiBiZQo+Pj4+PiBmb3VuZCBoZXJlOgo+Pj4+PiBodHRwczovL2Nv bW11bml0eS5hbWQuY29tL3NlcnZsZXQvSml2ZVNlcnZsZXQvc2hvd0ltYWdlLzM4LTEzMTAtMTA0 NzU0L3Bhc3RlZEltYWdlXzMucG5nIAo+Pj4+Pgo+Pj4+Pgo+Pj4+Pgo+Pj4+Pj4gKGIpIHRvIHBy ZWVtcHQgd2UgbmVlZCB0byBoYXZlIGRpZmZlcmVudCAiY29udGV4dCIgLSB3ZSB3YW50Cj4+Pj4+ PiB0byBndWFyYW50ZWUgdGhhdCBzdWJtaXNzaW9ucyBmcm9tIHRoZSBzYW1lIGNvbnRleHQgd2ls bCBiZSBleGVjdXRlZAo+Pj4+Pj4gaW4gb3JkZXIuCj4+Pj4+Cj4+Pj4+IFRoaXMgaXMgb2theSwg YXMgdGhlIHJlcHJvamVjdGlvbiB3b3JrIGRvZXNuJ3QgaGF2ZSBkZXBlbmRlbmNpZXMgb24KPj4+ Pj4gdGhlIGdhbWUgY29udGV4dCwgYW5kIGl0Cj4+Pj4+IGV2ZW4gaGFwcGVucyBpbiBhIHNlcGFy YXRlIHByb2Nlc3MuCj4+Pj4+Cj4+Pj4+PiBCVFc6IChhKSBEbyB5b3Ugd2FudCAgInByZWVtcHQi IGFuZCBsYXRlciByZXN1bWUgb3IgZG8geW91IHdhbnQKPj4+Pj4+ICJwcmVlbXB0IiBhbmQKPj4+ Pj4+ICJjYW5jZWwvYWJvcnQiCj4+Pj4+Cj4+Pj4+IFByZWVtcHQgdGhlIGdhbWUgd2l0aCB0aGUg Y29tcG9zaXRvciB0YXNrIGFuZCB0aGVuIHJlc3VtZSBpdC4KPj4+Pj4KPj4+Pj4+IChiKSBWdWxr YW4gaXMgZ2VuZXJpYyBBUEkgYW5kIGNvdWxkIGJlIHVzZWQgZm9yIGdyYXBoaWNzIGFzIHdlbGwg YXMKPj4+Pj4+IGZvciBwbGFpbiBjb21wdXRlIHRhc2tzIChWS19RVUVVRV9DT01QVVRFX0JJVCku Cj4+Pj4+Cj4+Pj4+IFllYWgsIHRoZSBwbGFuIGlzIHRvIHVzZSB2dWxrYW4gY29tcHV0ZS4gQnV0 IGlmIHlvdSBmaWd1cmUgb3V0IGEgd2F5Cj4+Pj4+IGZvciB1cyB0byBnZXQKPj4+Pj4gYSBndWFy YW50ZWVkIGV4ZWN1dGlvbiB0aW1lIHVzaW5nIHZ1bGthbiBncmFwaGljcywgdGhlbiBJJ2xsIHRh a2UgeW91Cj4+Pj4+IG91dCBmb3IgYSBiZWVyIDopCj4+Pj4+Cj4+Pj4+IFJlZ2FyZHMsCj4+Pj4+ IEFuZHJlcwo+Pj4+PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4+ Pj4+IEZyb206IFNhZ2Fsb3ZpdGNoLCBTZXJndWVpIFtTZXJndWVpLlNhZ2Fsb3ZpdGNoQGFtZC5j b21dCj4+Pj4+IFNlbnQ6IEZyaWRheSwgRGVjZW1iZXIgMTYsIDIwMTYgOToxMyBQTQo+Pj4+PiBU bzogQW5kcmVzIFJvZHJpZ3VlejsgYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPj4+Pj4g U3ViamVjdDogUmU6IFtSRkNdIE1lY2hhbmlzbSBmb3IgaGlnaCBwcmlvcml0eSBzY2hlZHVsaW5n IGluIGFtZGdwdQo+Pj4+Pgo+Pj4+PiBIaSBBbmRyZXMsCj4+Pj4+Cj4+Pj4+IFBsZWFzZSBzZWUg aW5saW5lIChhcyBbU2VyZ3VlaV0pCj4+Pj4+Cj4+Pj4+IFNpbmNlcmVseSB5b3VycywKPj4+Pj4g U2VyZ3VlaSBTYWdhbG92aXRjaAo+Pj4+Pgo+Pj4+Pgo+Pj4+PiBGcm9tOiBBbmRyZXMgUm9kcmln dWV6IDxhbmRyZXNyQHZhbHZlc29mdHdhcmUuY29tPgo+Pj4+PiBTZW50OiBEZWNlbWJlciAxNiwg MjAxNiA4OjI5IFBNCj4+Pj4+IFRvOiBTYWdhbG92aXRjaCwgU2VyZ3VlaTsgYW1kLWdmeEBsaXN0 cy5mcmVlZGVza3RvcC5vcmcKPj4+Pj4gU3ViamVjdDogUkU6IFtSRkNdIE1lY2hhbmlzbSBmb3Ig aGlnaCBwcmlvcml0eSBzY2hlZHVsaW5nIGluIGFtZGdwdQo+Pj4+Pgo+Pj4+PiBIaSBTZXJndWVp LAo+Pj4+Pgo+Pj4+PiBUaGFua3MgZm9yIHRoZSBmZWVkYmFjay4gQW5zd2VycyBpbmxpbmUgYXMg W0FSXS4KPj4+Pj4KPj4+Pj4gUmVnYXJkcywKPj4+Pj4gQW5kcmVzCj4+Pj4+Cj4+Pj4+IF9fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPj4+Pj4gRnJvbTogU2FnYWxvdml0 Y2gsIFNlcmd1ZWkgW1Nlcmd1ZWkuU2FnYWxvdml0Y2hAYW1kLmNvbV0KPj4+Pj4gU2VudDogRnJp ZGF5LCBEZWNlbWJlciAxNiwgMjAxNiA4OjE1IFBNCj4+Pj4+IFRvOiBBbmRyZXMgUm9kcmlndWV6 OyBhbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+Pj4+PiBTdWJqZWN0OiBSZTogW1JGQ10g TWVjaGFuaXNtIGZvciBoaWdoIHByaW9yaXR5IHNjaGVkdWxpbmcgaW4gYW1kZ3B1Cj4+Pj4+Cj4+ Pj4+IEFuZHJlcywKPj4+Pj4KPj4+Pj4KPj4+Pj4gUXVpY2sgY29tbWVudHM6Cj4+Pj4+Cj4+Pj4+ IDEpIFRvIG1pbmltaXplICJidWJibGVzIiwgZXRjLiB3ZSBuZWVkIHRvICJmb3JjZSIgQ1UgCj4+ Pj4+IGFzc2lnbm1lbnRzL2JpbmRpbmcKPj4+Pj4gdG8gaGlnaC1wcmlvcml0eSBxdWV1ZSAgd2hl biBpdCB3aWxsIGJlIGluIHVzZSBhbmQgImZyZWUiIHRoZW0gbGF0ZXIKPj4+Pj4gKHdlICBkbyBu b3Qgd2FudCBmb3JldmVyIHRha2UgQ1VzIGZyb20gZS5nLiBncmFwaGljIHRhc2sgdG8gZGVncmFk ZQo+Pj4+PiBncmFwaGljcwo+Pj4+PiBwZXJmb3JtYW5jZSkuCj4+Pj4+Cj4+Pj4+IE90aGVyd2lz ZSB3ZSBjb3VsZCBoYXZlIHNjZW5hcmlvIHdoZW4gbG9uZyBncmFwaGljcyB0YXNrIChvcgo+Pj4+ PiBsb3ctcHJpb3JpdHkKPj4+Pj4gY29tcHV0ZSkgd2lsbCB0b29rIGFsbCAoZXh0cmEpIENVcyBh bmQgaGlnaC0tcHJpb3JpdHkgd2lsbCB3YWl0IGZvcgo+Pj4+PiBuZWVkZWQgcmVzb3VyY2VzLgo+ Pj4+PiBJdCB3aWxsIG5vdCBiZSB2aXNpYmxlIG9uICJOT1AgIiBidXQgb25seSB3aGVuIHlvdSBz dWJtaXQgInJlYWwiCj4+Pj4+IGNvbXB1dGUgdGFzawo+Pj4+PiBzbyBJIHdvdWxkIHJlY29tbWVu ZCAgbm90IHRvIHVzZSAiTk9QIiBwYWNrZXRzIGF0IGFsbCBmb3IgdGVzdGluZy4KPj4+Pj4KPj4+ Pj4gSXQgKENVIGFzc2lnbm1lbnQpIGNvdWxkIGJlIHJlbGF0aXZlbHkgZWFzeSBkb25lIHdoZW4g ZXZlcnl0aGluZyBpcwo+Pj4+PiBnb2luZyB2aWEga2VybmVsCj4+Pj4+IChlLmcuIGFzIHBhcnQg b2YgZnJhbWUgc3VibWlzc2lvbikgYnV0IEkgbXVzdCBhZG1pdCB0aGF0IEkgYW0gbm90IAo+Pj4+ PiBzdXJlCj4+Pj4+IGFib3V0IHRoZSBiZXN0IHdheSBmb3IgdXNlciBsZXZlbCBzdWJtaXNzaW9u cyAoYW1ka2ZkKS4KPj4+Pj4KPj4+Pj4gW0FSXSBJIHdhc24ndCBhd2FyZSBvZiB0aGlzIHBhcnQg b2YgdGhlIHByb2dyYW1taW5nIHNlcXVlbmNlLiBUaGFua3MKPj4+Pj4gZm9yIHRoZSBoZWFkcyB1 cCEKPj4+Pj4gSXMgdGhpcyBzaW1pbGFyIHRvIHRoZSBDVSBtYXNraW5nIHByb2dyYW1taW5nPwo+ Pj4+PiBbU2VyZ3VlaV0gWWVzLiBUbyBzaW1wbGlmeTogdGhlIHByb2JsZW0gaXMgdGhhdCAic2No ZWR1bGVyIiB3aGVuCj4+Pj4+IGRlY2lkaW5nIHdoaWNoCj4+Pj4+IHF1ZXVlIHRvICBydW4gd2ls bCBjaGVjayBpZiB0aGVyZSBpcyBlbm91Z2ggcmVzb3VyY2VzIGFuZCBpZiBub3QgdGhlbgo+Pj4+ PiBpdCB3aWxsIGJlZ2luCj4+Pj4+IHRvIGNoZWNrIG90aGVyIHF1ZXVlcyB3aXRoIGxvd2VyIHBy aW9yaXR5Lgo+Pj4+Pgo+Pj4+PiAyKSBJIHdvdWxkIHJlY29tbWVuZCB0byBkZWRpY2F0ZSB0aGUg d2hvbGUgcGlwZSB0byBoaWdoLXByaW9yaXR5Cj4+Pj4+IHF1ZXVlIGFuZCBoYXZlCj4+Pj4+IG5v dGhpbmcgdGhlaXIgZXhjZXB0IGl0Lgo+Pj4+Pgo+Pj4+PiBbQVJdIEknbSBndWVzc2luZyBpbiB0 aGlzIGNvbnRleHQgeW91IG1lYW4gcGlwZSA9IHF1ZXVlPyAoYXMgb3Bwb3NlZAo+Pj4+PiB0byB0 aGUgTUVDIGRlZmluaXRpb24KPj4+Pj4gb2YgcGlwZSwgd2hpY2ggaXMgYSBncm91cGluZyBvZiBx dWV1ZXMpLiBJIHNheSB0aGlzIGJlY2F1c2UgYW1kZ3B1Cj4+Pj4+IG9ubHkgaGFzIGFjY2VzcyB0 byAxIHBpcGUsCj4+Pj4+IGFuZCB0aGUgcmVzdCBhcmUgc3RhdGljYWxseSBwYXJ0aXRpb25lZCBm b3IgYW1ka2ZkIHVzYWdlLgo+Pj4+Pgo+Pj4+PiBbU2VyZ3VlaV0gTm8uIEkgbWVhbiBwaXBlIDot KSAgYXMgTUVDIGRlZmluZSBpdC4gIEFzIGZhciBhcyBJCj4+Pj4+IHVuZGVyc3RhbmQgKGJ5IHNp bXBsaWZ5aW5nKQo+Pj4+PiBzb21lIHNjaGVkdWxpbmcgaXMgcGVyIHBpcGUuICBJIGtub3cgYWJv dXQgdGhlIGN1cnJlbnQgYWxsb2NhdGlvbgo+Pj4+PiBzY2hlbWUgYnV0IEkgZG8gbm90IHRoaW5r Cj4+Pj4+IHRoYXQgaXQgaXMgIGlkZWFsLiAgSSB3b3VsZCBhc3N1bWUgdGhhdCB3ZSBuZWVkICB0 byBzd2l0Y2ggdG8KPj4+Pj4gZHluYW1pY2FsIHBhcnRpdGlvbgo+Pj4+PiBvZiByZXNvdXJjZXMg IGJhc2VkIG9uIHRoZSB3b3JrbG9hZCBvdGhlcndpc2Ugd2Ugd2lsbCBoYXZlIHJlc291cmNlCj4+ Pj4+IGNvbmZsaWN0Cj4+Pj4+IGJldHdlZW4gVnVsa2FuIGNvbXB1dGUgYW5kICBPcGVuQ0wuCj4+ Pj4+Cj4+Pj4+Cj4+Pj4+IEJUVzogV2hpY2ggdXNlciBsZXZlbCBBUEkgZG8geW91IHdhbnQgdG8g dXNlIGZvciBjb21wdXRlOiBWdWxrYW4gb3IKPj4+Pj4gT3BlbkNMPwo+Pj4+Pgo+Pj4+PiBbQVJd IFZ1bGthbgo+Pj4+Pgo+Pj4+PiBbU2VyZ3VlaV0gVnVsa2FuIHdvcmtzIHZpYSBhbWRncHUgKGtl cm5lbCBzdWJtaXNzaW9ucykgc28gYW1ka2ZkIHdpbGwKPj4+Pj4gYmUgbm90Cj4+Pj4+IGludm9s dmVkLiAgSSB3b3VsZCBhc3N1bWUgdGhhdCBpbiB0aGUgY2FzZSBvZiBWUiB3ZSB3aWxsIGhhdmUg b25lIAo+Pj4+PiBtYWluCj4+Pj4+IGFwcGxpY2F0aW9uICgiY29uc29sZSIgbW9kZSg/KSkgc28g d2UgY291bGQgdGVtcG9yYWxseSAiaWdub3JlIgo+Pj4+PiBPcGVuQ0wvUk9DbSBuZWVkcyB3aGVu IFZSIGlzIHJ1bm5pbmcuCj4+Pj4+Cj4+Pj4+PiAgd2Ugd2lsbCBub3QgYmUgYWJsZSB0byBwcm92 aWRlIGEgc29sdXRpb24gY29tcGF0aWJsZSB3aXRoIEdGWAo+Pj4+Pj4gd29ybG9hZHMuCj4+Pj4+ IEkgYXNzdW1lIHRoYXQgeW91IGFyZSB0YWxraW5nIGFib3V0IGdyYXBoaWNzPyBBbSBJIHJpZ2h0 Pwo+Pj4+Pgo+Pj4+PiBbQVJdIFllYWgsIG15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCBwcmUtZW1w dGluZyB0aGUgY3VycmVudGx5IHJ1bm5pbmcKPj4+Pj4gZ3JhcGhpY3Mgam9iIGFuZCBzY2hlZHVs aW5nIGluCj4+Pj4+IHNvbWV0aGluZyBlbHNlIHVzaW5nIG1pZC1idWZmZXIgcHJlLWVtcHRpb24g aGFzIHNvbWUgY2FzZXMgd2hlcmUgaXQKPj4+Pj4gZG9lc24ndCB3b3JrIHdlbGwuIEJ1dCBpZiB3 aXRoCj4+Pj4+IHBvbGFyaXMxMCBpdCBzdGFydHMgd29ya2luZyB3ZWxsLCBpdCBtaWdodCBiZSBh IGJldHRlciBzb2x1dGlvbiBmb3IKPj4+Pj4gdXMgKGJlY2F1c2UgdGhlIHdob2xlIHJlcHJvamVj dGlvbgo+Pj4+PiB3b3JrIHVzZXMgdGhlIHZ1bGthbiBncmFwaGljcyBzdGFjayBhdCB0aGUgbW9t ZW50LCBhbmQgcG9ydGluZyBpdCB0bwo+Pj4+PiBjb21wdXRlIGlzIG5vdCB0cml2aWFsKS4KPj4+ Pj4KPj4+Pj4gW1Nlcmd1ZWldICBUaGUgcHJvYmxlbSB3aXRoIHByZS1lbXB0aW9uIG9mIGdyYXBo aWNzIHRhc2s6IChhKSBpdCBtYXkKPj4+Pj4gdGFrZSB0aW1lIHNvCj4+Pj4+IGxhdGVuY3kgbWF5 IHN1ZmZlciAoYikgdG8gcHJlZW1wdCB3ZSBuZWVkIHRvIGhhdmUgZGlmZmVyZW50ICJjb250ZXh0 Igo+Pj4+PiAtIHdlIHdhbnQKPj4+Pj4gdG8gZ3VhcmFudGVlIHRoYXQgc3VibWlzc2lvbnMgZnJv bSB0aGUgc2FtZSBjb250ZXh0IHdpbGwgYmUgZXhlY3V0ZWQKPj4+Pj4gaW4gb3JkZXIuCj4+Pj4+ IEJUVzogKGEpIERvIHlvdSB3YW50ICAicHJlZW1wdCIgYW5kIGxhdGVyIHJlc3VtZSBvciBkbyB5 b3Ugd2FudAo+Pj4+PiAicHJlZW1wdCIgYW5kCj4+Pj4+ICJjYW5jZWwvYWJvcnQiPyAgKGIpIFZ1 bGthbiBpcyBnZW5lcmljIEFQSSBhbmQgY291bGQgYmUgdXNlZAo+Pj4+PiBmb3IgZ3JhcGhpY3Mg YXMgd2VsbCBhcyBmb3IgcGxhaW4gY29tcHV0ZSB0YXNrcyAKPj4+Pj4gKFZLX1FVRVVFX0NPTVBV VEVfQklUKS4KPj4+Pj4KPj4+Pj4KPj4+Pj4gU2luY2VyZWx5IHlvdXJzLAo+Pj4+PiBTZXJndWVp IFNhZ2Fsb3ZpdGNoCj4+Pj4+Cj4+Pj4+Cj4+Pj4+Cj4+Pj4+IEZyb206IGFtZC1nZnggPGFtZC1n ZngtYm91bmNlc0BsaXN0cy5mcmVlZGVza3RvcC5vcmc+IG9uIGJlaGFsZiBvZgo+Pj4+PiBBbmRy ZXMgUm9kcmlndWV6IDxhbmRyZXNyQHZhbHZlc29mdHdhcmUuY29tPgo+Pj4+PiBTZW50OiBEZWNl bWJlciAxNiwgMjAxNiA2OjE1IFBNCj4+Pj4+IFRvOiBhbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9w Lm9yZwo+Pj4+PiBTdWJqZWN0OiBbUkZDXSBNZWNoYW5pc20gZm9yIGhpZ2ggcHJpb3JpdHkgc2No ZWR1bGluZyBpbiBhbWRncHUKPj4+Pj4KPj4+Pj4gSGkgRXZlcnlvbmUsCj4+Pj4+Cj4+Pj4+IFRo aXMgUkZDIGlzIGFsc28gYXZhaWxhYmxlIGFzIGEgZ2lzdCBoZXJlOgo+Pj4+PiBodHRwczovL2dp c3QuZ2l0aHViLmNvbS9sb3N0Z29hdC83MDAwNDMyY2Q2ODY0MjY1ZGJjMmMzYWI5MzIwNDI0OQo+ Pj4+Pgo+Pj4+Pgo+Pj4+Pgo+Pj4+PiBbUkZDXSBNZWNoYW5pc20gZm9yIGhpZ2ggcHJpb3JpdHkg c2NoZWR1bGluZyBpbiBhbWRncHUKPj4+Pj4gZ2lzdC5naXRodWIuY29tCj4+Pj4+IFtSRkNdIE1l Y2hhbmlzbSBmb3IgaGlnaCBwcmlvcml0eSBzY2hlZHVsaW5nIGluIGFtZGdwdQo+Pj4+Pgo+Pj4+ Pgo+Pj4+Pgo+Pj4+PiBbUkZDXSBNZWNoYW5pc20gZm9yIGhpZ2ggcHJpb3JpdHkgc2NoZWR1bGlu ZyBpbiBhbWRncHUKPj4+Pj4gZ2lzdC5naXRodWIuY29tCj4+Pj4+IFtSRkNdIE1lY2hhbmlzbSBm b3IgaGlnaCBwcmlvcml0eSBzY2hlZHVsaW5nIGluIGFtZGdwdQo+Pj4+Pgo+Pj4+Pgo+Pj4+Pgo+ Pj4+Pgo+Pj4+PiBbUkZDXSBNZWNoYW5pc20gZm9yIGhpZ2ggcHJpb3JpdHkgc2NoZWR1bGluZyBp biBhbWRncHUKPj4+Pj4gZ2lzdC5naXRodWIuY29tCj4+Pj4+IFtSRkNdIE1lY2hhbmlzbSBmb3Ig aGlnaCBwcmlvcml0eSBzY2hlZHVsaW5nIGluIGFtZGdwdQo+Pj4+Pgo+Pj4+Pgo+Pj4+PiBXZSBh cmUgaW50ZXJlc3RlZCBpbiBmZWVkYmFjayBmb3IgYSBtZWNoYW5pc20gdG8gZWZmZWN0aXZlbHkg c2NoZWR1bGUKPj4+Pj4gaGlnaAo+Pj4+PiBwcmlvcml0eSBWUiByZXByb2plY3Rpb24gdGFza3Mg KGFsc28gcmVmZXJyZWQgdG8gYXMgdGltZS13YXJwaW5nKSBmb3IKPj4+Pj4gUG9sYXJpczEwCj4+ Pj4+IHJ1bm5pbmcgb24gdGhlIGFtZGdwdSBrZXJuZWwgZHJpdmVyLgo+Pj4+Pgo+Pj4+PiBCcmll ZiBjb250ZXh0Ogo+Pj4+PiAtLS0tLS0tLS0tLS0tLQo+Pj4+Pgo+Pj4+PiBUaGUgbWFpbiBvYmpl Y3RpdmUgb2YgcmVwcm9qZWN0aW9uIGlzIHRvIGF2b2lkIG1vdGlvbiBzaWNrbmVzcyBmb3IgVlIK Pj4+Pj4gdXNlcnMgaW4KPj4+Pj4gc2NlbmFyaW9zIHdoZXJlIHRoZSBnYW1lIG9yIGFwcGxpY2F0 aW9uIHdvdWxkIGZhaWwgdG8gZmluaXNoCj4+Pj4+IHJlbmRlcmluZyBhIG5ldwo+Pj4+PiBmcmFt ZSBpbiB0aW1lIGZvciB0aGUgbmV4dCBWQkxBTksuIFdoZW4gdGhpcyBoYXBwZW5zLCB0aGUgdXNl cidzIGhlYWQKPj4+Pj4gbW92ZW1lbnRzCj4+Pj4+IGFyZSBub3QgcmVmbGVjdGVkIG9uIHRoZSBI ZWFkIE1vdW50ZWQgRGlzcGxheSAoSE1EKSBmb3IgdGhlIGR1cmF0aW9uCj4+Pj4+IG9mIGFuCj4+ Pj4+IGV4dHJhIGZyYW1lLiBUaGlzIGV4dGVuZGVkIG1pc21hdGNoIGJldHdlZW4gdGhlIGlubmVy IGVhciBhbmQgdGhlCj4+Pj4+IGV5ZXMgbWF5Cj4+Pj4+IGNhdXNlIHRoZSB1c2VyIHRvIGV4cGVy aWVuY2UgbW90aW9uIHNpY2tuZXNzLgo+Pj4+Pgo+Pj4+PiBUaGUgVlIgY29tcG9zaXRvciBkZWFs cyB3aXRoIHRoaXMgcHJvYmxlbSBieSBmYWJyaWNhdGluZyBhIG5ldyBmcmFtZQo+Pj4+PiB1c2lu ZyB0aGUKPj4+Pj4gdXNlcidzIHVwZGF0ZWQgaGVhZCBwb3NpdGlvbiBpbiBjb21iaW5hdGlvbiB3 aXRoIHRoZSBwcmV2aW91cyBmcmFtZXMuCj4+Pj4+IFRoaXMKPj4+Pj4gYXZvaWRzIGEgcHJvbG9u Z2VkIG1pc21hdGNoIGJldHdlZW4gdGhlIEhNRCBvdXRwdXQgYW5kIHRoZSBpbm5lciBlYXIuCj4+ Pj4+Cj4+Pj4+IEJlY2F1c2Ugb2YgdGhlIGFkdmVyc2UgZWZmZWN0cyBvbiB0aGUgdXNlciwgd2Ug cmVxdWlyZSBoaWdoCj4+Pj4+IGNvbmZpZGVuY2UgdGhhdCB0aGUKPj4+Pj4gcmVwcm9qZWN0aW9u IHRhc2sgd2lsbCBjb21wbGV0ZSBiZWZvcmUgdGhlIFZCTEFOSyBpbnRlcnZhbC4gRXZlbiBpZgo+ Pj4+PiB0aGUgR0ZYIHBpcGUKPj4+Pj4gaXMgY3VycmVudGx5IGZ1bGwgb2Ygd29yayBmcm9tIHRo ZSBnYW1lL2FwcGxpY2F0aW9uICh3aGljaCBpcyBtb3N0Cj4+Pj4+IGxpa2VseSB0aGUgY2FzZSku Cj4+Pj4+Cj4+Pj4+IEZvciBtb3JlIGRldGFpbHMgYW5kIGlsbHVzdHJhdGlvbnMsIHBsZWFzZSBy ZWZlciB0byB0aGUgZm9sbG93aW5nCj4+Pj4+IGRvY3VtZW50Ogo+Pj4+PiBodHRwczovL2NvbW11 bml0eS5hbWQuY29tL2NvbW11bml0eS9nYW1pbmcvYmxvZy8yMDE2LzAzLzI4L2FzeW5jaHJvbm91 cy1zaGFkZXJzLWV2b2x2ZWQgCj4+Pj4+Cj4+Pj4+Cj4+Pj4+Cj4+Pj4+Cj4+Pj4+IEdhbWluZzog QXN5bmNocm9ub3VzIFNoYWRlcnMgRXZvbHZlZCB8IENvbW11bml0eQo+Pj4+PiBjb21tdW5pdHku YW1kLmNvbQo+Pj4+PiBPbmUgb2YgdGhlIG1vc3QgZXhjaXRpbmcgbmV3IGRldmVsb3BtZW50cyBp biBHUFUgdGVjaG5vbG9neSBvdmVyIHRoZQo+Pj4+PiBwYXN0IHllYXIgaGFzIGJlZW4gdGhlIGFk b3B0aW9uIG9mIGFzeW5jaHJvbm91cyBzaGFkZXJzLCB3aGljaCBjYW4KPj4+Pj4gbWFrZSBtb3Jl IGVmZmljaWVudCB1c2Ugb2YgLi4uCj4+Pj4+Cj4+Pj4+Cj4+Pj4+Cj4+Pj4+IEdhbWluZzogQXN5 bmNocm9ub3VzIFNoYWRlcnMgRXZvbHZlZCB8IENvbW11bml0eQo+Pj4+PiBjb21tdW5pdHkuYW1k LmNvbQo+Pj4+PiBPbmUgb2YgdGhlIG1vc3QgZXhjaXRpbmcgbmV3IGRldmVsb3BtZW50cyBpbiBH UFUgdGVjaG5vbG9neSBvdmVyIHRoZQo+Pj4+PiBwYXN0IHllYXIgaGFzIGJlZW4gdGhlIGFkb3B0 aW9uIG9mIGFzeW5jaHJvbm91cyBzaGFkZXJzLCB3aGljaCBjYW4KPj4+Pj4gbWFrZSBtb3JlIGVm ZmljaWVudCB1c2Ugb2YgLi4uCj4+Pj4+Cj4+Pj4+Cj4+Pj4+Cj4+Pj4+IEdhbWluZzogQXN5bmNo cm9ub3VzIFNoYWRlcnMgRXZvbHZlZCB8IENvbW11bml0eQo+Pj4+PiBjb21tdW5pdHkuYW1kLmNv bQo+Pj4+PiBPbmUgb2YgdGhlIG1vc3QgZXhjaXRpbmcgbmV3IGRldmVsb3BtZW50cyBpbiBHUFUg dGVjaG5vbG9neSBvdmVyIHRoZQo+Pj4+PiBwYXN0IHllYXIgaGFzIGJlZW4gdGhlIGFkb3B0aW9u IG9mIGFzeW5jaHJvbm91cyBzaGFkZXJzLCB3aGljaCBjYW4KPj4+Pj4gbWFrZSBtb3JlIGVmZmlj aWVudCB1c2Ugb2YgLi4uCj4+Pj4+Cj4+Pj4+Cj4+Pj4+IFJlcXVpcmVtZW50czoKPj4+Pj4gLS0t LS0tLS0tLS0tLQo+Pj4+Pgo+Pj4+PiBUaGUgbWVjaGFuaXNtIG11c3QgZXhwb3NlIHRoZSBmb2xs b3dpbmcgZnVuY3Rpb25haWxpdHk6Cj4+Pj4+Cj4+Pj4+ICAgICAqIEpvYiByb3VuZCB0cmlwIHRp bWUgbXVzdCBiZSBwcmVkaWN0YWJsZSwgZnJvbSBzdWJtaXNzaW9uIHRvCj4+Pj4+IGZlbmNlIHNp Z25hbAo+Pj4+Pgo+Pj4+PiAgICAgKiBUaGUgbWVjaGFuaXNtIG11c3Qgc3VwcG9ydCBjb21wdXRl IHdvcmtsb2Fkcy4KPj4+Pj4KPj4+Pj4gR29hbHM6Cj4+Pj4+IC0tLS0tLQo+Pj4+Pgo+Pj4+PiAg ICAgKiBUaGUgbWVjaGFuaXNtIHNob3VsZCBwcm92aWRlIGxvdyBzdWJtaXNzaW9uIGxhdGVuY2ll cwo+Pj4+Pgo+Pj4+PiBUZXN0OiBzdWJtaXR0aW5nIGEgTk9QIHBhY2tldCB0aHJvdWdoIHRoZSBt ZWNoYW5pc20gb24gYnVzeSBoYXJkd2FyZQo+Pj4+PiBzaG91bGQKPj4+Pj4gYmUgZXF1aXZhbGVu dCB0byBzdWJtaXR0aW5nIGEgTk9QIG9uIGlkbGUgaGFyZHdhcmUuCj4+Pj4+Cj4+Pj4+IE5pY2Ug dG8gaGF2ZToKPj4+Pj4gLS0tLS0tLS0tLS0tLQo+Pj4+Pgo+Pj4+PiAgICAgKiBUaGUgbWVjaGFu aXNtIHNob3VsZCBhbHNvIHN1cHBvcnQgR0ZYIHdvcmtsb2Fkcy4KPj4+Pj4KPj4+Pj4gTXkgdW5k ZXJzdGFuZGluZyBpcyB0aGF0IHdpdGggdGhlIGN1cnJlbnQgaGFyZHdhcmUgY2FwYWJpbGl0aWVz IGluCj4+Pj4+IFBvbGFyaXMxMCB3ZQo+Pj4+PiB3aWxsIG5vdCBiZSBhYmxlIHRvIHByb3ZpZGUg YSBzb2x1dGlvbiBjb21wYXRpYmxlIHdpdGggR0ZYIHdvcmxvYWRzLgo+Pj4+Pgo+Pj4+PiBCdXQg SSB3b3VsZCBsb3ZlIHRvIGhlYXIgb3RoZXJ3aXNlLiBTbyBpZiBhbnlvbmUgaGFzIGFuIGlkZWEs Cj4+Pj4+IGFwcHJvYWNoIG9yCj4+Pj4+IHN1Z2dlc3Rpb24gdGhhdCB3aWxsIGFsc28gYmUgY29t cGF0aWJsZSB3aXRoIHRoZSBHRlggcmluZywgcGxlYXNlIGxldAo+Pj4+PiB1cyBrbm93Cj4+Pj4+ IGFib3V0IGl0Lgo+Pj4+Pgo+Pj4+PiAgICAgKiBUaGUgYWJvdmUgZ3VhcmFudGVlcyBzaG91bGQg YWxzbyBiZSByZXNwZWN0ZWQgYnkgYW1ka2ZkIAo+Pj4+PiB3b3JrbG9hZHMKPj4+Pj4KPj4+Pj4g V291bGQgYmUgZ29vZCB0byBoYXZlIGZvciBjb25zaXN0ZW5jeSwgYnV0IG5vdCBzdHJpY3RseSBu ZWNlc3NhcnkgYXMKPj4+Pj4gdXNlcnMgcnVubmluZwo+Pj4+PiBnYW1lcyBhcmUgbm90IHRyYWRp dGlvbmFsbHkgcnVubmluZyBIUEMgd29ya2xvYWRzIGluIHRoZSBiYWNrZ3JvdW5kLgo+Pj4+Pgo+ Pj4+PiBQcm9wb3NlZCBhcHByb2FjaDoKPj4+Pj4gLS0tLS0tLS0tLS0tLS0tLS0tCj4+Pj4+Cj4+ Pj4+IFNpbWlsYXIgdG8gdGhlIHdpbmRvd3MgZHJpdmVyLCB3ZSBjb3VsZCBleHBvc2UgYSBoaWdo IHByaW9yaXR5Cj4+Pj4+IGNvbXB1dGUgcXVldWUgdG8KPj4+Pj4gdXNlcnNwYWNlLgo+Pj4+Pgo+ Pj4+PiBTdWJtaXNzaW9ucyB0byB0aGlzIGNvbXB1dGUgcXVldWUgd2lsbCBiZSBzY2hlZHVsZWQg d2l0aCBoaWdoCj4+Pj4+IHByaW9yaXR5LCBhbmQgbWF5Cj4+Pj4+IGFjcXVpcmUgaGFyZHdhcmUg cmVzb3VyY2VzIHByZXZpb3VzbHkgaW4gdXNlIGJ5IG90aGVyIHF1ZXVlcy4KPj4+Pj4KPj4+Pj4g VGhpcyBjYW4gYmUgYWNoaWV2ZWQgYnkgdGFraW5nIGFkdmFudGFnZSBvZiB0aGUgJ3ByaW9yaXR5 JyBmaWVsZCBpbgo+Pj4+PiB0aGUgSFFEcwo+Pj4+PiBhbmQgY291bGQgYmUgcHJvZ3JhbW1lZCBi eSBhbWRncHUgb3IgdGhlIGFtZGdwdSBzY2hlZHVsZXIuIFRoZSAKPj4+Pj4gcmVsZXZhbnQKPj4+ Pj4gcmVnaXN0ZXIgZmllbGRzIGFyZToKPj4+Pj4gICAgICAgICAqIG1tQ1BfSFFEX1BJUEVfUFJJ T1JJVFkKPj4+Pj4gICAgICAgICAqIG1tQ1BfSFFEX1FVRVVFX1BSSU9SSVRZCj4+Pj4+Cj4+Pj4+ IEltcGxlbWVudGF0aW9uIGFwcHJvYWNoIDEgLSBzdGF0aWMgcGFydGl0aW9uaW5nOgo+Pj4+PiAt LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KPj4+Pj4KPj4+ Pj4gVGhlIGFtZGdwdSBkcml2ZXIgY3VycmVudGx5IGNvbnRyb2xzIDggY29tcHV0ZSBxdWV1ZXMg ZnJvbSBwaXBlMC4gCj4+Pj4+IFdlIGNhbgo+Pj4+PiBzdGF0aWNhbGx5IHBhcnRpdGlvbiB0aGVz ZSBhcyBmb2xsb3dzOgo+Pj4+PiAgICAgICAgICogN3ggcmVndWxhcgo+Pj4+PiAgICAgICAgICog MXggaGlnaCBwcmlvcml0eQo+Pj4+Pgo+Pj4+PiBUaGUgcmVsZXZhbnQgcHJpb3JpdGllcyBjYW4g YmUgc2V0IHNvIHRoYXQgc3VibWlzc2lvbnMgdG8gdGhlIGhpZ2gKPj4+Pj4gcHJpb3JpdHkKPj4+ Pj4gcmluZyB3aWxsIHN0YXJ2ZSB0aGUgb3RoZXIgY29tcHV0ZSByaW5ncyBhbmQgdGhlIEdGWCBy aW5nLgo+Pj4+Pgo+Pj4+PiBUaGUgYW1kZ3B1IHNjaGVkdWxlciB3aWxsIG9ubHkgcGxhY2Ugam9i cyBpbnRvIHRoZSBoaWdoIHByaW9yaXR5Cj4+Pj4+IHJpbmdzIGlmIHRoZQo+Pj4+PiBjb250ZXh0 IGlzIG1hcmtlZCBhcyBoaWdoIHByaW9yaXR5LiBBbmQgYSBjb3JyZXNwb25kaW5nIHByaW9yaXR5 Cj4+Pj4+IHNob3VsZCBiZQo+Pj4+PiBhZGRlZCB0byBrZWVwIHRyYWNrIG9mIHRoaXMgaW5mb3Jt YXRpb246Cj4+Pj4+ICAgICAgKiBBTURfU0NIRURfUFJJT1JJVFlfS0VSTkVMCj4+Pj4+ICAgICAg KiAtPiBBTURfU0NIRURfUFJJT1JJVFlfSElHSAo+Pj4+PiAgICAgICogQU1EX1NDSEVEX1BSSU9S SVRZX05PUk1BTAo+Pj4+Pgo+Pj4+PiBUaGUgdXNlciB3aWxsIHJlcXVlc3QgYSBoaWdoIHByaW9y aXR5IGNvbnRleHQgYnkgc2V0dGluZyBhbgo+Pj4+PiBhcHByb3ByaWF0ZSBmbGFnCj4+Pj4+IGlu IGRybV9hbWRncHVfY3R4X2luIChBTURHUFVfQ1RYX0hJR0hfUFJJT1JJVFkgb3Igc2ltaWxhcik6 Cj4+Pj4+IGh0dHBzOi8vZ2l0aHViLmNvbS90b3J2YWxkcy9saW51eC9ibG9iL21hc3Rlci9pbmNs dWRlL3VhcGkvZHJtL2FtZGdwdV9kcm0uaCNMMTYzIAo+Pj4+Pgo+Pj4+Pgo+Pj4+Pgo+Pj4+PiBU aGUgc2V0dGluZyBpcyBpbiBhIHBlciBjb250ZXh0IGxldmVsIHNvIHRoYXQgd2UgY2FuOgo+Pj4+ PiAgICAgKiBNYWludGFpbiBhIGNvbnNpc3RlbnQgRklGTyBvcmRlcmluZyBvZiBhbGwgc3VibWlz c2lvbnMgdG8gYQo+Pj4+PiBjb250ZXh0Cj4+Pj4+ICAgICAqIENyZWF0ZSBoaWdoIHByaW9yaXR5 IGFuZCBub24taGlnaCBwcmlvcml0eSBjb250ZXh0cyBpbiB0aGUgc2FtZQo+Pj4+PiBwcm9jZXNz Cj4+Pj4+Cj4+Pj4+IEltcGxlbWVudGF0aW9uIGFwcHJvYWNoIDIgLSBkeW5hbWljIHByaW9yaXR5 IHByb2dyYW1taW5nOgo+Pj4+PiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0KPj4+Pj4KPj4+Pj4gU2ltaWxhciB0byB0aGUgYWJvdmUsIGJ1 dCBpbnN0ZWFkIG9mIHByb2dyYW1taW5nIHRoZSBwcmlvcml0aWVzIGFuZAo+Pj4+PiBhbWRncHVf aW5pdCgpIHRpbWUsIHRoZSBTVyBzY2hlZHVsZXIgd2lsbCByZXByb2dyYW0gdGhlIHF1ZXVlIAo+ Pj4+PiBwcmlvcml0aWVzCj4+Pj4+IGR5bmFtaWNhbGx5IHdoZW4gc2NoZWR1bGluZyBhIHRhc2su Cj4+Pj4+Cj4+Pj4+IFRoaXMgd291bGQgaW52b2x2ZSBoYXZpbmcgYSBoYXJkd2FyZSBzcGVjaWZp YyBjYWxsYmFjayBmcm9tIHRoZQo+Pj4+PiBzY2hlZHVsZXIgdG8KPj4+Pj4gc2V0IHRoZSBhcHBy b3ByaWF0ZSBxdWV1ZSBwcmlvcml0eTogc2V0X3ByaW9yaXR5KGludCByaW5nLCBpbnQgaW5kZXgs Cj4+Pj4+IGludCBwcmlvcml0eSkKPj4+Pj4KPj4+Pj4gRHVyaW5nIHRoaXMgY2FsbGJhY2sgd2Ug d291bGQgaGF2ZSB0byBncmFiIHRoZSBTUkJNIG11dGV4IHRvIHBlcmZvcm0KPj4+Pj4gdGhlIGFw cHJvcHJpYXRlCj4+Pj4+IEhXIHByb2dyYW1taW5nLCBhbmQgSSdtIG5vdCByZWFsbHkgc3VyZSBp ZiB0aGF0IGlzIHNvbWV0aGluZyB3ZQo+Pj4+PiBzaG91bGQgYmUgZG9pbmcgZnJvbQo+Pj4+PiB0 aGUgc2NoZWR1bGVyLgo+Pj4+Pgo+Pj4+PiBPbiB0aGUgcG9zaXRpdmUgc2lkZSwgdGhpcyBhcHBy b2FjaCB3b3VsZCBhbGxvdyB1cyB0byBwcm9ncmFtIGEgCj4+Pj4+IHJhbmdlIG9mCj4+Pj4+IHBy aW9yaXRpZXMgZm9yIGpvYnMgaW5zdGVhZCBvZiBhIHNpbmdsZSAiaGlnaCBwcmlvcml0eSIgdmFs dWUiLAo+Pj4+PiBhY2hpZXZpbmcKPj4+Pj4gc29tZXRoaW5nIHNpbWlsYXIgdG8gdGhlIG5pY2Vu ZXNzIEFQSSBhdmFpbGFibGUgZm9yIENQVSBzY2hlZHVsaW5nLgo+Pj4+Pgo+Pj4+PiBJJ20gbm90 IHN1cmUgaWYgdGhpcyBmbGV4aWJpbGl0eSBpcyBzb21ldGhpbmcgdGhhdCB3ZSB3b3VsZCBuZWVk IGZvcgo+Pj4+PiBvdXIgdXNlCj4+Pj4+IGNhc2UsIGJ1dCBpdCBtaWdodCBiZSB1c2VmdWwgaW4g b3RoZXIgc2NlbmFyaW9zIChtdWx0aXBsZSB1c2Vycwo+Pj4+PiBzaGFyaW5nIGNvbXB1dGUKPj4+ Pj4gdGltZSBvbiBhIHNlcnZlcikuCj4+Pj4+Cj4+Pj4+IFRoaXMgYXBwcm9hY2ggd291bGQgcmVx dWlyZSBhIG5ldyBpbnQgZmllbGQgaW4gZHJtX2FtZGdwdV9jdHhfaW4sIG9yCj4+Pj4+IHJlcHVy cG9zaW5nCj4+Pj4+IG9mIHRoZSBmbGFncyBmaWVsZC4KPj4+Pj4KPj4+Pj4gS25vd24gY3VycmVu dCBvYnN0YWNsZXM6Cj4+Pj4+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo+Pj4+Pgo+Pj4+PiBU aGUgU1EgaXMgY3VycmVudGx5IHByb2dyYW1tZWQgdG8gZGlzcmVnYXJkIHRoZSBIUUQgcHJpb3Jp dGllcywgYW5kCj4+Pj4+IGluc3RlYWQgaXQgcGlja3MKPj4+Pj4gam9icyBhdCByYW5kb20uIFNl dHRpbmdzIGZyb20gdGhlIHNoYWRlciBpdHNlbGYgYXJlIGFsc28gZGlzcmVnYXJkZWQKPj4+Pj4g YXMgdGhpcyBpcwo+Pj4+PiBjb25zaWRlcmVkIGEgcHJpdmlsZWdlZCBmaWVsZC4KPj4+Pj4KPj4+ Pj4gRWZmZWN0aXZlbHkgd2UgY2FuIGdldCBvdXIgY29tcHV0ZSB3YXZlZnJvbnQgbGF1bmNoZWQg QVNBUCwgYnV0IHdlCj4+Pj4+IG1pZ2h0IG5vdCBnZXQgdGhlCj4+Pj4+IHRpbWUgd2UgbmVlZCBv biB0aGUgU1EuCj4+Pj4+Cj4+Pj4+IFRoZSBjdXJyZW50IHByb2dyYW1taW5nIHdvdWxkIGhhdmUg dG8gYmUgY2hhbmdlZCB0byBhbGxvdyBwcmlvcml0eQo+Pj4+PiBwcm9wYWdhdGlvbgo+Pj4+PiBm cm9tIHRoZSBIUUQgaW50byB0aGUgU1EuCj4+Pj4+Cj4+Pj4+IEdlbmVyaWMgYXBwcm9hY2ggZm9y IGFsbCBIVyBJUHM6Cj4+Pj4+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCj4+Pj4+ Cj4+Pj4+IEZvciBjb25zaXN0ZW5jeSBwdXJwb3NlcywgdGhlIGhpZ2ggcHJpb3JpdHkgY29udGV4 dCBjYW4gYmUgZW5hYmxlZAo+Pj4+PiBmb3IgYWxsIEhXIElQcwo+Pj4+PiB3aXRoIHN1cHBvcnQg b2YgdGhlIFNXIHNjaGVkdWxlci4gVGhpcyB3aWxsIGZ1bmN0aW9uIHNpbWlsYXJseSB0byB0aGUK Pj4+Pj4gY3VycmVudAo+Pj4+PiBBTURfU0NIRURfUFJJT1JJVFlfS0VSTkVMIHByaW9yaXR5LCB3 aGVyZSB0aGUgam9iIGNhbiBqdW1wIGFoZWFkIG9mCj4+Pj4+IGFueXRoaW5nIG5vdAo+Pj4+PiBj b21taXRlZCB0byB0aGUgSFcgcXVldWUuCj4+Pj4+Cj4+Pj4+IFRoZSBiZW5lZml0cyBvZiByZXF1 ZXN0aW5nIGEgaGlnaCBwcmlvcml0eSBjb250ZXh0IGZvciBhIG5vbi1jb21wdXRlCj4+Pj4+IHF1 ZXVlIHdpbGwKPj4+Pj4gYmUgbGVzc2VyIChlLmcuIHVwIHRvIDEwcyBvZiB3YWl0IHRpbWUgaWYg YSBHRlggY29tbWFuZCBpcyBzdHVjayBpbgo+Pj4+PiBmcm9udCBvZgo+Pj4+PiB5b3UpLCBidXQg aGF2aW5nIHRoZSBBUEkgaW4gcGxhY2Ugd2lsbCBhbGxvdyB1cyB0byBlYXNpbHkgaW1wcm92ZSB0 aGUKPj4+Pj4gaW1wbGVtZW50YXRpb24KPj4+Pj4gaW4gdGhlIGZ1dHVyZSBhcyBuZXcgZmVhdHVy ZXMgYmVjb21lIGF2YWlsYWJsZSBpbiBuZXcgaGFyZHdhcmUuCj4+Pj4+Cj4+Pj4+IEZ1dHVyZSBz dGVwczoKPj4+Pj4gLS0tLS0tLS0tLS0tLQo+Pj4+Pgo+Pj4+PiBPbmNlIHdlIGhhdmUgYW4gYXBw cm9hY2ggc2V0dGxlZCwgSSBjYW4gdGFrZSBjYXJlIG9mIHRoZSAKPj4+Pj4gaW1wbGVtZW50YXRp b24uCj4+Pj4+Cj4+Pj4+IEFsc28sIG9uY2UgdGhlIGludGVyZmFjZSBpcyBtb3N0bHkgZGVjaWRl ZCwgd2UgY2FuIHN0YXJ0IHRoaW5raW5nIAo+Pj4+PiBhYm91dAo+Pj4+PiBleHBvc2luZyB0aGUg aGlnaCBwcmlvcml0eSBxdWV1ZSB0aHJvdWdoIHJhZHYuCj4+Pj4+Cj4+Pj4+IFJlcXVlc3QgZm9y IGZlZWRiYWNrOgo+Pj4+PiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0KPj4+Pj4KPj4+Pj4gV2UgYXJl bid0IG1hcnJpZWQgdG8gYW55IG9mIHRoZSBhcHByb2FjaGVzIG91dGxpbmVkIGFib3ZlLiBPdXIg Z29hbAo+Pj4+PiBpcyB0bwo+Pj4+PiBvYnRhaW4gYSBtZWNoYW5pc20gdGhhdCB3aWxsIGFsbG93 IHVzIHRvIGNvbXBsZXRlIHRoZSByZXByb2plY3Rpb24KPj4+Pj4gam9iIHdpdGhpbiBhCj4+Pj4+ IHByZWRpY3RhYmxlIGFtb3VudCBvZiB0aW1lLiBTbyBpZiBhbnlvbmUgYW55b25lIGhhcyBhbnkg Cj4+Pj4+IHN1Z2dlc3Rpb25zIGZvcgo+Pj4+PiBpbXByb3ZlbWVudHMgb3IgYWx0ZXJuYXRpdmUg c3RyYXRlZ2llcyB3ZSBhcmUgbW9yZSB0aGFuIGhhcHB5IHRvIGhlYXIKPj4+Pj4gdGhlbS4KPj4+ Pj4KPj4+Pj4gSWYgYW55IG9mIHRoZSB0ZWNobmljYWwgaW5mb3JtYXRpb24gYWJvdmUgaXMgYWxz byBpbmNvcnJlY3QsIGZlZWwKPj4+Pj4gZnJlZSB0byBwb2ludAo+Pj4+PiBvdXQgbXkgbWlzdW5k ZXJzdGFuZGluZ3MuCj4+Pj4+Cj4+Pj4+IExvb2tpbmcgZm9yd2FyZCB0byBoZWFyaW5nIGZyb20g eW91Lgo+Pj4+Pgo+Pj4+PiBSZWdhcmRzLAo+Pj4+PiBBbmRyZXMKPj4+Pj4KPj4+Pj4gX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KPj4+Pj4gYW1kLWdmeCBt YWlsaW5nIGxpc3QKPj4+Pj4gYW1kLWdmeEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPj4+Pj4gaHR0 cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFpbG1hbi9saXN0aW5mby9hbWQtZ2Z4Cj4+Pj4+ Cj4+Pj4+Cj4+Pj4+IGFtZC1nZnggSW5mbyBQYWdlIC0gbGlzdHMuZnJlZWRlc2t0b3Aub3JnCj4+ Pj4+IGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+Pj4+PiBUbyBzZWUgdGhlIGNvbGxlY3Rpb24gb2Yg cHJpb3IgcG9zdGluZ3MgdG8gdGhlIGxpc3QsIHZpc2l0IHRoZQo+Pj4+PiBhbWQtZ2Z4IEFyY2hp dmVzLiBVc2luZyBhbWQtZ2Z4OiBUbyBwb3N0IGEgbWVzc2FnZSB0byBhbGwgdGhlIGxpc3QKPj4+ Pj4gbWVtYmVycywgc2VuZCBlbWFpbCAuLi4KPj4+Pj4KPj4+Pj4KPj4+Pj4KPj4+Pj4gYW1kLWdm eCBJbmZvIFBhZ2UgLSBsaXN0cy5mcmVlZGVza3RvcC5vcmcKPj4+Pj4gbGlzdHMuZnJlZWRlc2t0 b3Aub3JnCj4+Pj4+IFRvIHNlZSB0aGUgY29sbGVjdGlvbiBvZiBwcmlvciBwb3N0aW5ncyB0byB0 aGUgbGlzdCwgdmlzaXQgdGhlCj4+Pj4+IGFtZC1nZnggQXJjaGl2ZXMuIFVzaW5nIGFtZC1nZng6 IFRvIHBvc3QgYSBtZXNzYWdlIHRvIGFsbCB0aGUgbGlzdAo+Pj4+PiBtZW1iZXJzLCBzZW5kIGVt YWlsIC4uLgo+Pj4+Pgo+Pj4+Pgo+Pj4+Pgo+Pj4+Pgo+Pj4+Pgo+Pj4+Pgo+Pj4+Pgo+Pj4+Pgo+ Pj4+Pgo+Pj4+Pgo+Pj4+Pgo+Pj4+PiBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fXwo+Pj4+PiBhbWQtZ2Z4IG1haWxpbmcgbGlzdAo+Pj4+PiBhbWQtZ2Z4QGxp c3RzLmZyZWVkZXNrdG9wLm9yZwo+Pj4+PiBodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9t YWlsbWFuL2xpc3RpbmZvL2FtZC1nZngKPj4+Pj4KPj4+Pgo+Pj4+IF9fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4+Pj4gYW1kLWdmeCBtYWlsaW5nIGxpc3QK Pj4+PiBhbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+Pj4+IGh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vYW1kLWdmeAo+Pj4KPj4KPgo+IF9fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCj4gYW1kLWdmeCBtYWlsaW5n IGxpc3QKPiBhbWQtZ2Z4QGxpc3RzLmZyZWVkZXNrdG9wLm9yZwo+IGh0dHBzOi8vbGlzdHMuZnJl ZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vYW1kLWdmeAoKX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KYW1kLWdmeCBtYWlsaW5nIGxpc3QKYW1kLWdm eEBsaXN0cy5mcmVlZGVza3RvcC5vcmcKaHR0cHM6Ly9saXN0cy5mcmVlZGVza3RvcC5vcmcvbWFp bG1hbi9saXN0aW5mby9hbWQtZ2Z4Cg==