From mboxrd@z Thu Jan 1 00:00:00 1970 From: Steve Grubb Subject: Re: Linux audit performance impact Date: Mon, 16 Feb 2015 07:59:27 -0500 Message-ID: <2039734.h1hbe1jZF6@x2> References: <9DBA79E0CE64AA42B07DEDAAD0F7DB914165C5B7@G4W3222.americas.hpqcorp.net> <20150212182526.GX29998@madcap2.tricolour.ca> <9DBA79E0CE64AA42B07DEDAAD0F7DB914FA921C0@G9W0755.americas.hpqcorp.net> Mime-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Return-path: In-Reply-To: <9DBA79E0CE64AA42B07DEDAAD0F7DB914FA921C0@G9W0755.americas.hpqcorp.net> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: linux-audit-bounces@redhat.com Errors-To: linux-audit-bounces@redhat.com To: linux-audit@redhat.com Cc: Richard Guy Briggs List-Id: linux-audit@redhat.com T24gTW9uZGF5LCBGZWJydWFyeSAxNiwgMjAxNSAxMToyNTo1NyBBTSBWaXN3YW5hdGgsIExvZ2Vz d2FyaSBQIHdyb3RlOgo+IEkgY29uZmlndXJlZCB0aGUgc3lzdGVtIHRvIGF1ZGl0IG9wZW4gc3lz dGVtIGNhbGwgYWxvbmUgaW5zdGVhZCBvZiBhbGwgdGhlCj4gc3lzdGVtIGNhbGxzIChvdXIgbG9h ZGVyIHByb2dyYW0gZXhlY3V0ZXMpIGFuZCBoZW5jZSBJIHNhdyB0aGUgbWFzc2l2ZQo+IGltcHJv dmVtZW50IGluIHBlcmZvcm1hbmNlLiBNeSBmaXggaXMgbm90IGNhdXNpbmcgYW55IGNoYW5nZSBp biB0aGUKPiBwZXJmb3JtYW5jZS4gSSB3cm9uZ2x5IGNvbW11bmljYXRlZCB0aGF0IHRoZSBmaXgg aXMgY2F1c2luZyBwZXJmb3JtYW5jZQo+IGltcHJvdmVtZW50LiBTb3JyeSBmb3IgdGhhdC4KPiAK PiBBcyBwZXIgdGhlIHBlcmYgZGF0YSwgdGhlIGZvcm1hdF9kZWNvZGUgaXMgdGhlIGZ1bmN0aW9u IHdoZXJlIG1vc3Qgb2YgdGhlCj4gdGltZSBpcyBzcGVudCBpLmUuIGZvcm1hdHRpbmcgdGhlIHJl Y29yZCBpbiB0aGUgYnVmZmVyIGJlZm9yZSBkZWxpdmVyaW5nCj4gdGhlIGRhdGEgdG8gdXNlciBz cGFjZS4gV2UgbmVlZCB0byBlbGltaW5hdGUgZm9ybWF0dGluZyByZWNvcmRzIHRvIGluY3JlYXNl Cj4gdGhlIHBlcmZvcm1hbmNlLiBBbnkgaWRlYSB3aHkgd2UgbmVlZCB0byBmb3JtYXQgdGhlIHJl Y29yZCBhbmQgd2hldGhlciBjYW4KPiB3ZSBhZGQgYW4gb3B0aW9uIChSQVcpIHRvIGRlbGl2ZXIg dGhlIHJlY29yZCB3aXRob3V0IGZvcm1hdHRpbmcgdG8gdXNlcgo+IHNwYWNlPwoKSW50cm9kdWNp bmcgYW55IGNoYW5nZXMgdG8gdGhlIGZvcm1hdCBvZiB0aGUgcmVjb3JkIGNhbiBjYXVzZSBhbGwg YW5hbHl0aWNhbCAKcHJvZ3JhbXMsIGJvdGggb3BlbiBzb3VyY2UgYW5kIHByb3ByaWV0YXJ5LCB0 byBzdG9wIHdvcmtpbmcgY29ycmVjdGx5LiBUaGlzIApjYW5ub3QgYmUgY2hhbmdlZC4KCkkgdGhp bmsgdGhlcmUgaXMgcm9vbSBmb3IgaW1wcm92ZW1lbnQgaG93ZXZlci4gVGhlcmUgYXJlIHRpbWVz IHdoZW4gc3RyaW5ncyAKYXJlIGJlaW5nIGdsdWVkIHRvZ2V0aGVyIGFuZCBhIHN0cGNweSB3b3Jr cyBqdXN0IGZpbmUuIFRoZXJlIGFyZSB0aW1lcyB3aGVuIGEgCm51bWVyaWMgaGV4IGNvbnZlcnNp b24gaXMgYmVpbmcgZG9uZSBhbmQgJXggaXMgdmVyeSBzbG93LiBTYW1lIHdpdGggJWQuCgpUaGUg b3RoZXIgaXNzdWUgaXMgdGhhdCB0aGUgYXVkaXQgc3lzdGVtJ3MgcGhpbG9zb3BoeSBoYXMgbm90 IGJlZW4gdG8gb3B0aW1pemUgCnRoZSBmb3JtYXR0aW5nIG9mIHRoZSBldmVudCwgYmVjYXVzZSBl dmVudHMgX3Nob3VsZF8gYmUgcmFyZS4gTWVhbmluZyB0aGF0IGlmIAp5b3UgYXJlIGdldHRpbmcg aHVuZHJlZCBvZiBldmVudHMgcGVyIHNlY29uZCwgc29tZXRoaW5nIGlzIHNlcmlvdXNseSB3cm9u ZyAKd2l0aCB0aGUgcnVsZXMuCgpJdCBoYXMgYmVlbiBvcHRpbWl6ZWQgdG8gcHJvdmlkZSBhcyBs aXR0bGUgaW1wYWN0IGFzIHBvc3NpYmxlIHdoZW4gX25vdF8gCmdlbmVyYXRpbmcgZXZlbnRzLiBN ZWFuaW5nIHRoYXQgd2Ugd2FudCBpdCBhcyBmYXN0IGFzIHBvc3NpYmxlIGluIGxldHRpbmcgdGhl IApzeXN0ZW0gb3BlcmF0ZSBub3JtYWxseS4KCkFnYWluLCB0aGVyZSBpcyByb29tIGZvciBpbXBy b3ZlbWVudCBpbiBib3RoIGNhc2VzIG9mIHRyaWdnZXJpbmcgYW5kIG5vdCAKdHJpZ2dlcmluZyBl dmVudHMuIEJ1dCB0aGUgZm9ybWF0IG9mIGV2ZW50cyBjYW4ndCByZWFsbHkgY2hhbmdlIHdpdGhv dXQgYSBsb3QgCm9mIGNvb3JkaW5hdGlvbi4gSSBoYXZlIGEgdGVzdCBzdWl0ZSBoZXJlOgoKaHR0 cDovL3Blb3BsZS5yZWRoYXQuY29tL3NncnViYi9hdWRpdC9hdXNlYXJjaC10ZXN0LTAuNS50YXIu Z3oKClRoYXQgY2FuIGNoZWNrIHRoYXQgZXZlbnRzIGFyZSBzZWFyY2hhYmxlIGJ5IHRoZSBtYWlu IGF1ZGl0IHV0aWxpdHkuIElmIApjaGFuZ2VzIGNhdXNlIHRoYXQgdG8gZmFpbCwgdGhlbiBpdHMg YSBzaWduIHlvdSdsbCBicmVhayB0aGUgd2hvbGUgd29ybGQuCgotU3RldmUKCgoKPiAtLS0tLU9y aWdpbmFsIE1lc3NhZ2UtLS0tLQo+IEZyb206IFJpY2hhcmQgR3V5IEJyaWdncyBbbWFpbHRvOnJn YkByZWRoYXQuY29tXQo+IFNlbnQ6IFRodXJzZGF5LCBGZWJydWFyeSAxMiwgMjAxNSAxMTo1NSBQ TQo+IFRvOiBWaXN3YW5hdGgsIExvZ2Vzd2FyaSBQIChNQ09VIE9TVEwpCj4gQ2M6IFJpY2hhcmQg R3V5IEJyaWdnczsgbGludXgtYXVkaXRAcmVkaGF0LmNvbQo+IFN1YmplY3Q6IFJlOiBMaW51eCBh dWRpdCBwZXJmb3JtYW5jZSBpbXBhY3QKPiAKPiBPbiAxNS8wMi8xMiwgVmlzd2FuYXRoLCBMb2dl c3dhcmkgUCAoTUNPVSBPU1RMKSB3cm90ZToKPiA+IEhpIGFsbCwKPiA+IAo+ID4gV2UgZGlkIHBy b2ZpbGluZyBvZiB0aGUga2VybmVsICh1c2luZyBwZXJmIHRvb2wpIGR1cmluZyBvdXIgcGVyZm9y bWFuY2UKPiA+IHRlc3QgYW5kIGJlbG93IHdlcmUgdGhlIHRvcCA0IGZ1bmN0aW9ucyBmb3IgdGhl IG92ZXJoZWFkLgo+ID4gCj4gPiAxMS4zMyUgICAgICAgIGxvYWRlcjEgIFtrZXJuZWwua2FsbHN5 bXNdICAgW2tdIGZvcm1hdF9kZWNvZGUKPiA+IAo+ID4gICAgIDEwLjQwJSAgICAgICAgbG9hZGVy MSAgW2tlcm5lbC5rYWxsc3ltc10gICBba10gbWVtY3B5Cj4gPiAgICAgCj4gPiAgICAgIDcuNDYl ICAgICAgICBsb2FkZXIxICBba2VybmVsLmthbGxzeW1zXSAgIFtrXSBudW1iZXIuaXNyYS4xCj4g PiAgICAgIDYuOTklICAgICAgICBsb2FkZXIxICBba2VybmVsLmthbGxzeW1zXSAgIFtrXSB2c25w cmludGYKPiA+IAo+ID4gSSB3YXMgdW5hYmxlIHRvIGF0dGFjaCB0aGUgZW50aXJlIHByb2ZpbGlu ZyBkYXRhIG9mIHRoZSBrZXJuZWwgYmVjYXVzZSBpdAo+ID4gZXhjZWVkcyB0aGUgbGltaXQgb2Yg ODBLQi4+IAo+ID4gPkZyb20gdGhlIHBlcmYgZGF0YSwgd2UgYmVsaWV2ZWQgdGhlIG92ZXJoZWFk IGlzIGJlY2F1c2Ugb2YgaW52b2tpbmcKPiA+ID5hdWRpdF9sb2dfZm9ybWF0IGZ1bmN0aW9uIG11 bHRpcGxlIHRpbWVzLj4gCj4gPiBXZSBjaGFuZ2VkIHRoZSBjb2RlIHRvIHJlZHVjZSB0aGUgbnVt YmVyIG9mIHRpbWVzIHRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkLgo+ID4gV2l0aCB0aGlzIGNoYW5n ZSB0aGUgcGVyZm9ybWFuY2UgZGVncmFkYXRpb24gaXMgMjAlIG5vdyBjb21wYXJlZCB0byB0aGUK PiA+IHBlcmZvcm1hbmNlIHdpdGhvdXQgYXVkaXRpbmcuIFdpdGhvdXQgdGhpcyBjaGFuZ2UgdGhl IHBlcmZvcm1hbmNlCj4gPiBkZWdyYWRhdGlvbiBpcyAyMDAlIGNvbXBhcmVkIHRvIHRoZSBwZXJm b3JtYW5jZSB3aXRob3V0IGF1ZGl0aW5nLgo+IFRob3NlIG51bWJlcnMgYXJlIG5vdCBpbnNpZ25p ZmljYW50ISAgSSBhbSBhIGJpdCBzdXJwcmlzZWQgeW91IHdlcmUgYWJsZSB0bwo+IGdldCB0aGF0 IG11Y2ggb2YgYW4gaW1wcm92ZW1lbnQgd2l0aCBqdXN0IHRoaXMgY2xhc3Mgb2YgY2hhbmdlLgo+ ID4gV2UgY2FuIHB1Ymxpc2ggdGhlIGNvZGUgY2hhbmdlIGRvbmUgdG9tb3Jyb3cuCj4gCj4gSSdk IGNlcnRhaW5seSBiZSBpbnRlcmVzdGVkIHRvIHNlZSB0aGUgY29kZS4KPiAKPiA+IFBsZWFzZSBs ZXQgbWUga25vdyB5b3VyIGZlZWRiYWNrIG9uIHRoaXMgaWRlYS4KPiA+IAo+ID4gUmVnYXJkcywK PiA+IExvZ2Vzd2FyaS4KPiA+IAo+ID4gLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0KPiA+IEZy b206IFJpY2hhcmQgR3V5IEJyaWdncyBbbWFpbHRvOnJnYkByZWRoYXQuY29tXQo+ID4gU2VudDog V2VkbmVzZGF5LCBGZWJydWFyeSAxMSwgMjAxNSAxMDoyMSBQTQo+ID4gVG86IFZpc3dhbmF0aCwg TG9nZXN3YXJpIFAgKE1DT1UgT1NUTCkKPiA+IENjOiBsaW51eC1hdWRpdEByZWRoYXQuY29tCj4g PiBTdWJqZWN0OiBSZTogTGludXggYXVkaXQgcGVyZm9ybWFuY2UgaW1wYWN0Cj4gPiAKPiA+IE9u IDE1LzAyLzA2LCBWaXN3YW5hdGgsIExvZ2Vzd2FyaSBQIChNQ09VIE9TVEwpIHdyb3RlOgo+ID4g PiBIaSBhbGwsCj4gPiA+IAo+ID4gPiBQbGVhc2UgZmluZCB0aGUgYmVsb3cgdGhlIGRldGFpbHMg b2YgdGhlIHBlcmZvcm1hbmNlIHRlc3Qgd2UgcmFuLgo+ID4gPiBJdCB3b3VsZCBiZSBncmVhdCBp ZiB3ZSBnZXQgaGVscCB0byBpZGVudGlmeSB0aGUgcmVhc29uIGJlaGluZCB0aGUKPiA+ID4gZGVn cmFkYXRpb24gYW5kIHRoZSB3YXlzIG9mIGltcHJvdmluZyBpdC4KPiA+ID4gCj4gPiA+IEtlcm5l bCBWZXJzaW9uOgo+ID4gPiByb290ID4gdW5hbWUgLXIKPiA+ID4gMy4xMy4wLTM2LWdlbmVyaWMK PiA+ID4gCj4gPiA+IE9TIFZlcnNpb246Cj4gPiA+IFVidW50dSAxNC4wNC4xCj4gPiA+IAo+ID4g PiBOby4gb2YgQ1BVczoKPiA+ID4gcm9vdCA+IG5wcm9jCj4gPiA+IDI0Cj4gPiA+IAo+ID4gPiBB dWRpdCBTdGF0dXM6Cj4gPiA+IHJvb3QgPiBhdWRpdGN0bCAtcwo+ID4gPiBBVURJVF9TVEFUVVM6 IGVuYWJsZWQ9MSBmbGFnPTEgcGlkPTAgcmF0ZV9saW1pdD0wIGJhY2tsb2dfbGltaXQ9MzIwCj4g PiA+IGxvc3Q9NTcxOTAzNTMgYmFja2xvZz0wCj4gPiA+IAo+ID4gPiBSdWxlcyBDb25maWd1cmVk Ogo+ID4gPiByb290ID4gYXVkaXRjdGwgLWwKPiA+ID4gTElTVF9SVUxFUzogZXhpdCxhbHdheXMg YXJjaD0zMjIxMjI1NTM0ICgweGMwMDAwMDNlKSBzeXNjYWxsPWFsbAo+ID4gPiAKPiA+ID4gQXR0 YWNoZWQgaXMgdGhlIHByb2dyYW0gdXNlZCB0byBsb2FkIHRoZSBzeXN0ZW0uCj4gPiA+IAo+ID4g PiBSZXN1bHRzOgo+ID4gPiAKPiA+ID4gV2l0aG91dCBlbmFibGluZyBhdWRpdAkxMi4yOQo+ID4g PiBXaXRoIGF1ZGl0aW5nIGVuYWJsZWQgYW5kIG5vIHJ1bGVzIGNvbmZpZ3VyZWQgMTIuMzEKPiA+ ID4gV2l0aCBhdWRpdGluZyBlbmFibGVkLCAxIHJ1bGUgY29uZmlndXJlZCBidXQgYXVkaXRkIG5v dCBydW5uaW5nIC0KPiA+ID4ga2F1ZGl0ZCBsb2dzIGF1ZGl0IHJlY29yZHMgdG8gc3lzbG9nIHZp YSBwcmludGsJNDEuMDI+IAo+ID4gVGhpcyB3b3VsZCBiZSBtb3JlIG1lYW5pbmdmdWwgaWYgeW91 IGhhY2tlZCB0aGUga2VybmVsIHRvIGRyYWluIHRoZSBxdWV1ZQo+ID4gZmlndXJhdGl2ZWx5IHRv IC9kZXYvbnVsIHRvIGVsaW1pbmF0ZSB0aGUgZWZmZWN0IG9mIGF1ZGl0ZCBkcmFpbmluZyBpdCwK PiA+IG9yIHN5c2xvZyBjb3ZlcmluZyBmb3IgYSBtaXNzaW5nIGF1ZGl0ZC4gIFRoaXMgc3RhdCBk b2Vzbid0IHRlbGwgdXMgdGhhdAo+ID4gbXVjaCBzaW5jZSB0aGUgSS9PIGFjdCBjYW4gdmFyeSBz aWduaWZpY2FudGx5IHBlciBpbnN0YWxsYXRpb24uICBUaGF0IG9uZQo+ID4gcnVsZSB5b3UgY2hv c2UgaXMgcHJldHR5IHVubmF0dXJhbGx5IGFidXNpdmUgYW5kIG5lZWRzIHRvIGJlIGNhcmVmdWxs eQo+ID4gdGhvdWdodCBvdXQgdG8gYXZvaWQgc2VsZi1tZWFzdXJlbWVudC4+IAo+ID4gPiBUaGUg ZGVncmFkYXRpb24gaXMgYXJvdW5kIDIwMCUKPiA+ID4gCj4gPiA+IFJlZ2FyZHMsCj4gPiA+IExv Z2Vzd2FyaS4KPiA+ID4gCj4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tCj4gPiA+IEZy b206IFJpY2hhcmQgR3V5IEJyaWdncyBbbWFpbHRvOnJnYkByZWRoYXQuY29tXQo+ID4gPiBTZW50 OiBXZWRuZXNkYXksIEZlYnJ1YXJ5IDA0LCAyMDE1IDk6NDYgUE0KPiA+ID4gVG86IFZpc3dhbmF0 aCwgTG9nZXN3YXJpIFAgKE1DT1UgT1NUTCkKPiA+ID4gQ2M6IFNhdGlzaCBDaGFuZHJhIEtpbGFy dTsgU3RldmUgR3J1YmI7IGxpbnV4LWF1ZGl0QHJlZGhhdC5jb20KPiA+ID4gU3ViamVjdDogUmU6 IExpbnV4IGF1ZGl0IHBlcmZvcm1hbmNlIGltcGFjdAo+ID4gPiAKPiA+ID4gT24gMTUvMDIvMDQs IFZpc3dhbmF0aCwgTG9nZXN3YXJpIFAgKE1DT1UgT1NUTCkgd3JvdGU6Cj4gPiA+ID4gVGhlIGlu dGVudCBpcyB0byBjYWxjdWxhdGUgdGhlIHBlcmZvcm1hbmNlIGltcGFjdCBieSB0aGUgYXVkaXRp bmcKPiA+ID4gPiBjb21wb25lbnRzIHN1Y2ggYXMKPiA+ID4gPiAKPiA+ID4gPiAxKSBpbXBhY3Qg YmVjYXVzZSBvZiBrYXVkaXRkIHdpdGhvdXQgYXVkaXRkIC0gYnV0IGthdWRpdGQgd3JpdGVzIHRv Cj4gPiA+ID4gc3lzbG9nLCBzbyB3ZSBhcmUgdW5hYmxlIHRvIGRldGVybWluZSB0aGUgaW1wYWN0 IGp1c3QgYmVjYXVzZSBvZgo+ID4gPiA+IGthdWRpdGQgLSBJdCBpcyBmaW5lIGV2ZW4gaWYgdGhl IGF1ZGl0IHJlY29yZCBpcyBkcm9wcGVkIGJ5IGthdWRpdGQuCj4gPiA+ID4gSXMgdGhlcmUgYW55 IHdheSB0byBkbyB0aGlzPz4gPiAKPiA+ID4gTm90IHlldC4gIFRoYXQgaXMgYSBtb2RlIHRoYXQg aGFzIG5vdCBiZWVuIHVzZWZ1bCB0byBhbnlvbmUgeWV0LiAgWW91Cj4gPiA+IGFyZSB3ZWxjb21l IHRvIGhhY2sgYSBjdXN0b20ga2VybmVsIHRvIGRpc2FibGUga2xvZyBmb3IgZG9pbmcgdGVzdGlu Zwo+ID4gPiBpbnN0cnVtZW50YXRpb24uPiA+IAo+ID4gPiA+IDIpIGltcGFjdCBiZWNhdXNlIG9m IHJ1bm5pbmcgYXVkaXRkIC0gbG9nIGZvcm1hdCBOT0xPRwo+ID4gPiA+IDMpIGltcGFjdCBiZWNh dXNlIG9mIHJ1bm5pbmcgYXVkaXNwZCAtIHNtYWxsIHBsdWdpbiBpcyB3cml0dGVuIHdoaWNoCj4g PiA+ID4gd2lsbCBqdXN0IHJlYWQgdGhlIGF1ZGl0IHJlY29yZHMgYW5kIGRvZXNuJ3QgcHJvY2Vz c2VzIGl0Lgo+ID4gPiA+IAo+ID4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tCj4gPiA+ ID4gRnJvbTogUmljaGFyZCBHdXkgQnJpZ2dzIFttYWlsdG86cmdiQHJlZGhhdC5jb21dCj4gPiA+ ID4gU2VudDogVHVlc2RheSwgRmVicnVhcnkgMDMsIDIwMTUgMTA6MzMgUE0KPiA+ID4gPiBUbzog U2F0aXNoIENoYW5kcmEgS2lsYXJ1Cj4gPiA+ID4gQ2M6IFZpc3dhbmF0aCwgTG9nZXN3YXJpIFAg KE1DT1UgT1NUTCk7IFN0ZXZlIEdydWJiOwo+ID4gPiA+IGxpbnV4LWF1ZGl0QHJlZGhhdC5jb20K PiA+ID4gPiBTdWJqZWN0OiBSZTogTGludXggYXVkaXQgcGVyZm9ybWFuY2UgaW1wYWN0Cj4gPiA+ ID4gCj4gPiA+ID4gT24gMTUvMDIvMDMsIFNhdGlzaCBDaGFuZHJhIEtpbGFydSB3cm90ZToKPiA+ ID4gPiA+IFRoYW5rcyBmb3IgVGhlIGluZm8uIEJ1dCBteSBxdWVzdGlvbiB3YXMgcmhldG9yaWNh bC4uLiBJIG1lYW50Cj4gPiA+ID4gPiB0byBzYXkgdGhhdCBpdCB3b3VsZCBub3QgYmUgbXVjaC4u LiBTaGUgaXMgdHJ5aW5nIHRvIGJvbWJhcmQgdGhlCj4gPiA+ID4gPiBzeXN0ZW0gd2l0aCBvcGVu IGNhbGxzIC4uLiBTbyBsb3RzIGFuZCBsb3RzIG9mIGV2ZW50cyB3aWxsIGJlCj4gPiA+ID4gPiBn ZW5lcmF0ZWQgYW5kIGtlcm5lbCBoYXMgdG8gd3JpdGUgZG93biB0aGUgZXZlbnRzIHNvbWUgd2hl cmUgb3IKPiA+ID4gPiA+IGRpc2NhcmQgdGhlbS4uLj4gPiA+IAo+ID4gPiA+IEV4YWN0bHkuICBJ dCBpcyBvZiBsaXR0bGUgcHJhY3RpY2FsIHVzZS4gIFlvdSBoYXZlIHRvIGRvIEkvTyBhdCBzb21l Cj4gPiA+ID4gcG9pbnQsIGVpdGhlciB0byB0aGUgc2FtZSBkaXNrIG9yIGFub3RoZXIsIG9yIHRv IGEgbmV0d29yayBpbnRlcmZhY2UKPiA+ID4gPiBvciBzZXJpYWwgcG9ydCwgb3RoZXJ3aXNlLCBq dXN0IGNodWNrIGl0IG91dC4gIFlvdSBjb3VsZCBkbyBhCj4gPiA+ID4gcGVyZm9ybWFuY2UgbWVh c3VyZW1lbnQgb24gYSBzaG9ydCBidXJzdCwgdGhlbiBkcmFpbiB0aGUgcXVldWUsIGJ1dAo+ID4g PiA+IHdoYXQgd2lsbCB0aGF0IGFjdHVhbGx5IHRlbGwgdXM/PiA+ID4gCj4gPiA+ID4gPiBPbiBU dWVzZGF5LCBGZWJydWFyeSAzLCAyMDE1LCBSaWNoYXJkIEd1eSBCcmlnZ3MgPHJnYkByZWRoYXQu Y29tPiAKd3JvdGU6Cj4gPiA+ID4gPiA+IE9uIDE1LzAyLzAzLCBTYXRpc2ggQ2hhbmRyYSBLaWxh cnUgd3JvdGU6Cj4gPiA+ID4gPiA+ID4gSG93IG1hbnkgZXZlbnRzIGNhbiBrZXJuZWwgYWNjdW11 bGF0ZSB3aXRob3V0IEkvbyA/Cj4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiBUaGUga2VybmVsIGRl ZmF1bHQgaXMgNjQgKmJ1ZmZlcnMqLCBidXQgSSB0aGluayBGZWRvcmEgYW5kCj4gPiA+ID4gPiA+ IFJIRUwgc2V0IGl0IHRvIDMyMC4gIEl0IGlzIG5vdyBwb3NzaWJsZSB0byBzZXQgaXQgdG8gIjAi IHdoaWNoCj4gPiA+ID4gPiA+IG1lYW5zIGxpbWl0ZWQgb25seSBieSBzeXN0ZW0gcmVzb3VyY2Vz LiAgU2VlICJtYW4gYXVkaXRjdGwiLCAiLWIiCj4gPiA+ID4gPiA+IG9wdGlvbi4gIEFuIGV2ZW50 IGNhbiBiZSBtYWRlIHVwIG9mIHNldmVyYWwgYnVmZmVycy4KPiA+ID4gPiA+ID4gCj4gPiA+ID4g PiA+IE9mIGNvdXJzZSwgaG93IGxvbmcgYSBzeXN0ZW0gbGFzdHMgYmVmb3JlIHRoZSBxdWV1ZSBi bG93cyB1cAo+ID4gPiA+ID4gPiBkZXBlbmRzIG9uIHlvdXIgcnVsZSBzZXQuLi4KPiA+ID4gPiA+ ID4gCj4gPiA+ID4gPiA+IEhvd2V2ZXIsIGF0IHRoZSBtb21lbnQsIGl0IHdpbGwgc3RpbGwgd3Jp dGUgb3V0IHRvIGtsb2cgaWYKPiA+ID4gPiA+ID4gYXVkaXRkIGlzbid0IHJ1bm5pbmcuCj4gPiA+ ID4gPiA+IAo+ID4gPiA+ID4gPiA+IE9uIFR1ZXNkYXksIEZlYnJ1YXJ5IDMsIDIwMTUsIFZpc3dh bmF0aCwgTG9nZXN3YXJpIFAgKE1DT1UKPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiBPU1RM KSA8IGxvZ2Vzd2FyaS5wdkBocC5jb20gPGphdmFzY3JpcHQ6Oz4+IHdyb3RlOgo+ID4gPiA+ID4g PiA+ID4gSSBkb24ndCB3YW50IHRvIGRpc2FibGUgYXVkaXRpbmcgKGkuZS4gZGlzYWJsZSBhdWRp dAo+ID4gPiA+ID4gPiA+ID4gcmVjb3JkCj4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiBjb2xsZWN0 aW9uKSwKPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiBidXQganVzdCBkbyBub3Qgd2FudCB0 aGUgcmVjb3JkcyB0byBkZWxpdmVyZWQgdG8gdXNlcgo+ID4gPiA+ID4gPiA+ID4gc3BhY2Ugc2lu Y2UgSQo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gd2FudCB0bwo+ID4gPiA+ID4gPiAKPiA+ID4g PiA+ID4gPiA+IHJlbW92ZSB0aGUgSS9PIG92ZXJoZWFkIHdoaWxlIHJ1bm5pbmcgdGhlIHBlcmZv cm1hbmNlIHRlc3QuCj4gPiA+ID4gPiA+ID4gPiBJcyB0aGVyZSBhbnkgb3B0aW9uIGZvciB0aGlz Pwo+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2Ut LS0tLQo+ID4gPiA+ID4gPiA+ID4gRnJvbTogUmljaGFyZCBHdXkgQnJpZ2dzIFttYWlsdG86cmdi QHJlZGhhdC5jb20KPiA+ID4gPiA+ID4gPiA+IDxqYXZhc2NyaXB0Ojs+Cj4gPiA+ID4gPiA+IAo+ ID4gPiA+ID4gPiA8amF2YXNjcmlwdDo7Pl0KPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiBT ZW50OiBUaHVyc2RheSwgSmFudWFyeSAyOSwgMjAxNSAxMDoyMyBQTQo+ID4gPiA+ID4gPiA+ID4g VG86IFZpc3dhbmF0aCwgTG9nZXN3YXJpIFAgKE1DT1UgT1NUTCkKPiA+ID4gPiA+ID4gPiA+IENj OiBTYXRpc2ggQ2hhbmRyYSBLaWxhcnU7IFN0ZXZlIEdydWJiOwo+ID4gPiA+ID4gPiA+ID4gbGlu dXgtYXVkaXRAcmVkaGF0LmNvbQo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPGphdmFzY3JpcHQ6 Oz4KPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiA8amF2YXNjcmlwdDo7Pgo+ID4gPiA+ID4g PiA+ID4gU3ViamVjdDogUmU6IExpbnV4IGF1ZGl0IHBlcmZvcm1hbmNlIGltcGFjdAo+ID4gPiA+ ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiBPbiAxNS8wMS8yOSwgVmlzd2FuYXRoLCBMb2dlc3dh cmkgUCAoTUNPVSBPU1RMKSB3cm90ZToKPiA+ID4gPiA+ID4gPiA+ID4gUGxlYXNlIHJlYWQgbXkg cXVlc3Rpb24gYXMg4oCcSXMgdGhlcmUgYW55IG9wdGlvbiB0bwo+ID4gPiA+ID4gPiA+ID4gPiBj b25maWd1cmUga2F1ZGl0IG5vdCB0byBsb2cgYXVkaXQgcmVjb3JkcyB0byBzeXNsb2c/IHdoZW4K PiA+ID4gPiA+ID4gPiA+ID4gYXVkaXRkIG5vdCBydW5uaW5nLuKAnT4gPiA+ID4gPiA+ID4gCj4g PiA+ID4gPiA+ID4gPiBZZWFoLCByZW1vdmUgYXVkaXQ9MSBmcm9tIHRoZSBrZXJuZWwgY29tbWFu ZCBsaW5lLCBvciBzZXQKPiA+ID4gPiA+ID4gPiA+IGF1ZGl0PTAgaW4KPiA+ID4gPiA+ID4gCj4g PiA+ID4gPiA+IGl0cwo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+IHBsYWNlLiAgVGhpcyB3 aWxsIHN0b3AgYWxsIGJ1dCBBVkNzIGFuZCBpZiBhdWRpdGQgaGFzIGV2ZXIKPiA+ID4gPiA+ID4g PiA+IHJ1biBzaW5jZQo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gYm9vdC4KPiA+ID4gPiA+ID4g Cj4gPiA+ID4gPiA+ID4gPiBJZiBhdWRpdD0wIGlzIG9uIHRoZSBrZXJuZWwgYm9vdCBsaW5lLCBp dCB3aWxsIGJlCj4gPiA+ID4gPiA+ID4gPiBpbXBvc3NpYmxlIHRvIHJ1bgo+ID4gPiA+ID4gPiAK PiA+ID4gPiA+ID4gYXVkaXRkLgo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+IFRoZXJlIGlz IGEgZmVhdHVyZSByZXF1ZXN0IHRoYXQgaXMgbGlrZWx5IGNvbWluZyBzb29uIHRoYXQKPiA+ID4g PiA+ID4gPiA+IGNvdWxkIGJlCj4gPiA+ID4gPiA+ID4gPiB1c2VmdWw6Cj4gPiA+ID4gPiA+ID4g PiAKPiA+ID4gPiA+ID4gPiA+IGh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5j Z2k/aWQ9MTE2MDA0Ngo+ID4gPiA+ID4gPiA+ID4gIklmIG5vIGF1ZGl0IGRhZW1vbiBpcyBydW5u aW5nLCBidXQgYW4gYXVkaXQgbXVsdGljYXN0Cj4gPiA+ID4gPiA+ID4gPiBzdWJzY3JpYmVyIGlz IGFyb3VuZCwgdGhlbiB0aGUga2VybmVsIHNob3VsZG4ndCBmb3J3YXJkIGF1ZGl0Cj4gPiA+ID4g PiA+ID4gPiBkYXRhIHRvIGttc2ciCj4gPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+ID4g RnJvbTogVmlzd2FuYXRoLCBMb2dlc3dhcmkgUCAoTUNPVSBPU1RMKQo+ID4gPiA+ID4gPiA+ID4g PiBTZW50OiBUaHVyc2RheSwgSmFudWFyeSAyOSwgMjAxNSAxMTo0OSBBTQo+ID4gPiA+ID4gPiA+ ID4gPiBUbzogJ1NhdGlzaCBDaGFuZHJhIEtpbGFydSc7IFN0ZXZlIEdydWJiCj4gPiA+ID4gPiA+ ID4gPiA+IENjOiBsaW51eC1hdWRpdEByZWRoYXQuY29tIDxqYXZhc2NyaXB0Ojs+IDxqYXZhc2Ny aXB0Ojs+Cj4gPiA+ID4gPiA+ID4gPiA+IFN1YmplY3Q6IFJFOiBMaW51eCBhdWRpdCBwZXJmb3Jt YW5jZSBpbXBhY3QKPiA+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiA+IElzIHRoZXJl IGFueSBvcHRpb24gdG8gY29uZmlndXJlIGthdWRpdCBub3QgdG8gbG9nIGF1ZGl0Cj4gPiA+ID4g PiA+ID4gPiA+IHJlY29yZHMgdG8KPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gc3lz bG9nIHdoZW4gYXVkaXRkIGlzIHJ1bm5pbmc/Cj4gPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4g PiA+ID4gVGhpcyB3YXkgd2UgY2FuIGFzc2VzcyB0aGUgaW1wYWN0IG9mIGVuYWJsaW5nIGF1ZGl0 Cj4gPiA+ID4gPiA+ID4gPiA+IHdpdGhvdXQgaW52b2x2aW5nCj4gPiA+ID4gPiA+ID4gPiAKPiA+ ID4gPiA+ID4gPiA+IGRpc2sgSS9vIG92ZXJoZWFkLgo+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4g PiA+ID4gPiA+IEZyb206IFNhdGlzaCBDaGFuZHJhIEtpbGFydSBbbWFpbHRvOmlhbS5raWxhcnVA Z21haWwuY29tCj4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA8amF2YXNjcmlwdDo7PiA8amF2YXNj cmlwdDo7Pl0KPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiA+IFNlbnQ6IFRodXJzZGF5LCBK YW51YXJ5IDI5LCAyMDE1IDk6MTIgQU0KPiA+ID4gPiA+ID4gPiA+ID4gVG86IFN0ZXZlIEdydWJi Cj4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gPiBDYzogbGludXgtYXVkaXRAcmVkaGF0LmNv bSA8amF2YXNjcmlwdDo7PiAKPGphdmFzY3JpcHQ6Oz48bWFpbHRvOgo+ID4gPiA+ID4gPiBsaW51 eC1hdWRpdEByZWRoYXQuY29tIDxqYXZhc2NyaXB0Ojs+Cj4gPiA+ID4gPiA+IAo+ID4gPiA+ID4g PiA+ID4gPGphdmFzY3JpcHQ6Oz4+OyBWaXN3YW5hdGgsCj4gPiA+ID4gPiA+ID4gPiAKPiA+ID4g PiA+ID4gPiA+ID4gTG9nZXN3YXJpIFAgKE1DT1UgT1NUTCkKPiA+ID4gPiA+ID4gPiA+ID4gU3Vi amVjdDogUmU6IExpbnV4IGF1ZGl0IHBlcmZvcm1hbmNlIGltcGFjdAo+ID4gPiA+ID4gPiA+ID4g PiAKPiA+ID4gPiA+ID4gPiA+ID4gSSBhZ3JlZSB3aXRoIHlvdS4uLiBidXQgd3JpdGluZyB0byBk aXNrIGNhbiB0cmlnZ2VyCj4gPiA+ID4gPiA+ID4gPiA+IGZ1cnRoZXIgZXZlbnRzCj4gPiA+ID4g PiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+IGxlYWRpbmcgc3BpcmFsbGluZyBvZiBldmVudHMuLi4K PiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gPiBJIGJyb3VnaHQgZG93biBteSBzZXJ2 ZXIgZmV3IHRpbWVzIHdpdGggc3R1cGlkIHJ1bGVzLi4uCj4gPiA+ID4gPiA+ID4gPiA+IAo+ID4g PiA+ID4gPiA+ID4gPiBPbiBXZWQsIEphbiAyOCwgMjAxNSBhdCAxMDozOSBQTSwgU3RldmUgR3J1 YmIKPiA+ID4gPiA+ID4gPiA+ID4gPHNncnViYkByZWRoYXQuY29tCj4gPiA+ID4gPiA+IAo+ID4g PiA+ID4gPiA8amF2YXNjcmlwdDo7Pgo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+IDxqYXZh c2NyaXB0Ojs+PG1haWx0bzpzZ3J1YmJAcmVkaGF0LmNvbSA8amF2YXNjcmlwdDo7Pgo+ID4gPiA+ ID4gPiAKPiA+ID4gPiA+ID4gPGphdmFzY3JpcHQ6Oz4+PiB3cm90ZToKPiA+ID4gPiA+ID4gPiA+ ID4gT24gV2VkbmVzZGF5LCBKYW51YXJ5IDI4LCAyMDE1IDEwOjE4OjQ3IEFNIFNhdGlzaAo+ID4g PiA+ID4gPiA+ID4gPiBDaGFuZHJhIEtpbGFydQo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gd3Jv dGU6Cj4gPiA+ID4gPiA+ID4gPiA+ID4gV3JpdGUgeW91ciBvd24gcHJvZ3JhbSB0byByZWNlaXZl IGF1ZGl0IGV2ZW50cwo+ID4gPiA+ID4gPiA+ID4gPiA+IGRpcmVjdGx5IHdpdGhvdXQgdXNpbmcg YXVkaXRkLi4uCj4gPiA+ID4gPiA+ID4gPiA+ID4gVGhhdCBzaG91bGQgYmUgZmFzdGVyIC4uLi4K PiA+ID4gPiA+ID4gPiA+ID4gPiBBdWRpdGQgd2lsbCBsb2cgdGhlIGV2ZW50cyB0byBkaXNrIGNh dXNpbmcgbW9yZSBJL28gdGhhbiB1Cj4gPiA+ID4gPiA+ID4gPiA+ID4gbmVlZC4uLgo+ID4gPiA+ ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+ID4gQnV0IGV2ZW4gdGhhdCBpcyBjb25maWd1cmFi bGUgaW4gbWFueSB3YXlzLiBZb3UgY2FuCj4gPiA+ID4gPiA+ID4gPiA+IGRlY2lkZSBpZiB5b3UK PiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+IHdhbnQKPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4g PiA+IGxvZ2dpbmcgdG8gZGlzayBvciBub3QgYW5kIHdoYXQga2luZCBvZiBhc3N1cmFuY2UgdGhh dAo+ID4gPiA+ID4gPiA+ID4gPiBpdCBtYWRlIGl0IHRvIGRpc2sgYW5kIHRoZSBwcmlvcml0eSBv ZiB0aGF0IGF1ZGl0IGRhZW1vbi4KPiA+ID4gPiA+ID4gPiA+ID4gVGhlbiB5b3UgYWxzbyBoYXZl IGFsbAo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gdGhlCj4gPiA+ID4gPiA+IAo+ID4gPiA+ID4g PiA+ID4gPiBub3JtYWwgdHVuaW5nIGtub2JzIGZvciBkaXNrIHRocm91Z2hwdXQgdGhhdCB5b3Ug d291bGQKPiA+ID4gPiA+ID4gPiA+ID4gdXNlIGZvciBhbnkgZGlzayBwZXJmb3JtYW5jZSBjcml0 aWNhbCBzeXN0ZW0uCj4gPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gPiAtU3RldmUK PiA+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiA+ID4gT24gV2VkbmVzZGF5LCBKYW51 YXJ5IDI4LCAyMDE1LCBWaXN3YW5hdGgsIExvZ2Vzd2FyaSBQCj4gPiA+ID4gPiA+ID4gPiA+ID4g KE1DT1UKPiA+ID4gPiA+ID4gPiA+ID4gPiBPU1RMKQo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4g PAo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+ID4gPiBsb2dlc3dhcmkucHZAaHAuY29tIDxq YXZhc2NyaXB0Ojs+IDxqYXZhc2NyaXB0Ojs+PG1haWx0bzoKPiA+ID4gPiA+ID4gbG9nZXN3YXJp LnB2QGhwLmNvbSA8amF2YXNjcmlwdDo7Pgo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+IDxq YXZhc2NyaXB0Ojs+Pj4gd3JvdGU6Cj4gPiA+ID4gPiA+ID4gPiA+ID4gPiAgSGkgU3RldmUsCj4g PiA+ID4gPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+ID4gPiA+IEkgYW0gTG9nZXN3YXJp IHdvcmtpbmcgZm9yIEhQLgo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiA+ ID4gPiAKPiA+ID4gPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gV2Ugd2Fu dCB0byBrbm93IGF1ZGl0IHBlcmZvcm1hbmNlIGltcGFjdCBvbiBSSEVMIGFuZAo+ID4gPiA+ID4g PiA+ID4gPiA+ID4gU3VzZSBsaW51eAo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gdG8KPiA+ID4g PiA+ID4gCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiBoZWxwIHVzIGV2YWx1YXRlIGxpbnV4IGF1ZGl0 IGFzIGRhdGEgc291cmNlIGZvciBvdXIKPiA+ID4gPiA+ID4gPiA+ID4gPiA+IGhvc3QgYmFzZWQK PiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+IElEUy4KPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4g PiA+ID4gPiBXaGVuIHdlIHJhbiBvdXIgb3duIHBlcmZvcm1hbmNlIHRlc3Qgd2l0aCBhIHRlc3QK PiA+ID4gPiA+ID4gPiA+ID4gPiA+IGF1ZGlzcGQgcGx1Z2luLCB3ZSBmb3VuZCBpZiBhIHN5c3Rl bSBjYW4gcGVyZm9ybQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gMjAwMDAwIG9wZW4vY2xvc2Ugc3lz dGVtIGNhbGxzIHBlciBzZWNvbmQgd2l0aG91dAo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gYXVkaXRp bmcsIHN5c3RlbSBjYW4gcGVyZm9ybSBvbmx5IDMwMDAgb3Blbi9jbG9zZQo+ID4gPiA+ID4gPiA+ ID4gPiA+ID4gc3lzdGVtIGNhbGxzIGF1ZGl0aW5nIGlzIGVuYWJsZWQgZm9yIG9wZW4vY2xvc2UK PiA+ID4gPiA+ID4gPiA+ID4gPiA+IHN5c3RlbSBjYWxsIHdoaWNoIGlzIGEgSFVHRSBpbXBhY3Qg b24gdGhlIHN5c3RlbQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gcGVyZm9ybWFuY2UuCj4gPiA+ID4g PiA+ID4gPiA+ID4gPiBJdCB3b3VsZAo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gYmUKPiA+ID4g PiA+ID4gCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiBncmVhdCBpZiBhbnlvbmUgY2FuIGhlbHAgdXMg YW5zd2VyaW5nIHRoZSBmb2xsb3dpbmcKPiA+ID4gPiA+ID4gPiA+ID4gPiA+IHF1ZXN0aW9ucy4K PiA+ID4gPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+ID4gPiA+IDEpICAgICAgSXMgdGhpcyBwZXJmb3Jt YW5jZSBpbXBhY3QgZXhwZWN0ZWQ/IElmIHllcywKPiA+ID4gPiA+ID4gPiA+ID4gPiA+IHdoYXQg aXMgdGhlCj4gPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+IHJlYXNvbgo+ID4gPiA+ID4g PiA+ID4gCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiBiZWhpbmQgaXQgYW5kIGNhbiB3ZSBmaXggaXQ/ Cj4gPiA+ID4gPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+ID4gPiA+IDIpICAgICAgSGF2 ZSBhbnlvbmUgZG9uZSBhbnkgYmVuY2htYXJraW5nIGZvcgo+ID4gPiA+ID4gPiA+ID4gPiA+ID4g cGVyZm9ybWFuY2UKPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+IGltcGFjdD8gSWYKPiA+ID4gPiA+ ID4gCj4gPiA+ID4gPiA+ID4gPiB5ZXMsCj4gPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+ ID4gPiA+IGNhbiB5b3UgcGxlYXNlIHNoYXJlIHRoZSBudW1iZXJzIGFuZCBhbHNvIHRoZQo+ID4g PiA+ID4gPiA+ID4gPiA+ID4gc3RlcHMvcHJvZ3JhbXMgdXNlZCB0aGUgcnVuIHRoZSBzYW1lLgo+ ID4gPiA+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiAzKSAgICAgIEhlbHAg dXMgdmFsaWRhdGluZyB0aGUgcGVyZm9ybWFuY2UgdGVzdCB3ZSBoYXZlCj4gPiA+ID4gPiA+ID4g PiA+ID4gPiBkb25lIGluCj4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiBvdXIKPiA+ID4gPiA+ID4g Cj4gPiA+ID4gPiA+ID4gPiB0ZXN0Cj4gPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+ID4g PiA+IHNldHVwIHVzaW5nIHRoZSBzdGVwcyBtZW50aW9uZWQgYWxvbmcgd2l0aCB0aGUgcmVzdWx0 cwo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gYXR0YWNoZWQuCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiAK PiA+ID4gPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ ID4gPiA+ID4gPiBBdHRhY2hlZCB0ZXN0IHByb2dyYW0gKGxvYWRlci5jKSB0byBpbnZva2Ugb3Bl biBhbmQKPiA+ID4gPiA+ID4gPiA+ID4gPiA+IGNsb3NlIHN5c3RlbQo+ID4gPiA+ID4gPiA+ID4g Cj4gPiA+ID4gPiA+ID4gPiBjYWxscy4KPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4g PiA+ID4gQXR0YWNoZWQgaWRza2VybmRzcCBpcyB0aGUgYXVkaXNwZCBwbHVnaW4gcHJvZ3JhbS4K PiA+ID4gPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gV2UgdXNlZCB0aW1l IGNvbW1hbmQgdG8gZGV0ZXJtaW5lIGhvdyBtdWNoIHRpbWUgdGhlCj4gPiA+ID4gPiA+ID4gPiA+ ID4gPiBzeXN0ZW0gdG9vawo+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gdG8KPiA+ID4gPiA+ID4g Cj4gPiA+ID4gPiA+ID4gPiA+ID4gPiBjb21wbGV0ZSA1MDAwMCBvcGVuL2Nsb3NlIHN5c3RlbSBj YWxscyB3aXRob3V0Cj4gPiA+ID4gPiA+ID4gPiA+ID4gPiAocmVzdWx0cyBhdHRhY2hlZAo+ID4g PiA+ID4gPiA+ID4gPiA+ID4gV2l0aG91dC1hdWRpdGluZykgYW5kIHdpdGggYXVkaXRpbmcgZW5h YmxlZCBvbiB0aGUKPiA+ID4gPiA+ID4gPiA+ID4gPiA+IHN5c3RlbSAoV2l0aC1hdWRpdGluZy1O T0xPRy1hdWRpc3BkLXBsdWdpbiBhbmQKPiA+ID4gPiA+ID4gPiA+ID4gPiA+IFdpdGgtYXVkaXRp bmctUkFXKQo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiAKPiA+ ID4gPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gU3lzdGVtIGRldGFpbHM6 Cj4gPiA+ID4gPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4g PiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiAxIENQVSBtYWNoaW5lCj4gPiA+ID4g PiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gPiA+ ID4gCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiAqT1MgVmVyc2lvbioKPiA+ID4gPiA+ID4gPiA+ID4g PiA+IAo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gUkhFTCA2LjUKPiA+ID4gPiA+ID4gPiA+ID4gPiA+ IAo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ ID4gPiA+ID4gPiA+ICpLZXJuZWwgVmVyc2lvbioKPiA+ID4gPiA+ID4gPiA+ID4gPiA+IAo+ID4g PiA+ID4gPiA+ID4gPiA+ID4gdW5hbWUg4oCTcgo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ ID4gPiA+ID4gPiA+ID4gPiAyLjYuMzItNDMxLmVsNi54ODZfNjQKPiA+ID4gPiA+ID4gPiA+ID4g PiA+IAo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiAKPiA+ID4g PiA+ID4gPiA+ID4gPiA+IE5vdGU6IGF1ZGl0ZCB3YXMgb2NjdXB5aW5nIDM1JSBvZiBDUFUgYW5k IHdhcwo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gc2xlZXBpbmcgZm9yIG1vc3QKPiA+ID4gPiA+ID4g Cj4gPiA+ID4gPiA+IG9mCj4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gPiA+ID4gdGhlIHRp bWUgd2hlcmVhcyBrYXVkaXRkIHdhcyBvY2N1cHlpbmcgMjAlIG9mIHRoZSBDUFUuCj4gPiA+ID4g PiA+ID4gPiA+ID4gPiAKPiA+ID4gPiA+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+ID4gPiA+ ID4gCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiBUaGFua3MgJiBSZWdhcmRzLAo+ID4gPiA+ID4gPiA+ ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiA+ID4gPiBMb2dlc3dhcmkuCj4gPiA+ID4gPiA+ID4g PiA+IAo+ID4gPiA+ID4gPiA+ID4gPiAtLQo+ID4gPiA+ID4gPiA+ID4gPiBQbGVhc2UgRG9uYXRl IHRvCj4gPiA+ID4gPiA+ID4gPiA+IHd3dy53aWtpcGVkaWEub3JnPGh0dHA6Ly93d3cud2lraXBl ZGlhLm9yZz4KPiA+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiA+IC0tCj4gPiA+ID4g PiA+ID4gPiA+IExpbnV4LWF1ZGl0IG1haWxpbmcgbGlzdCBMaW51eC1hdWRpdEByZWRoYXQuY29t Cj4gPiA+ID4gPiA+ID4gPiA+IDxqYXZhc2NyaXB0Ojs+IDxqYXZhc2NyaXB0Ojs+Cj4gPiA+ID4g PiA+ID4gPiA+IGh0dHBzOi8vd3d3LnJlZGhhdC5jb20vbWFpbG1hbi9saXN0aW5mby9saW51eC1h dWRpdAo+ID4gPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+ID4gPiAtIFJHQgo+ID4gPiA+ID4gPiA+ ID4gCj4gPiA+ID4gPiA+ID4gPiAtLQo+ID4gPiA+ID4gPiA+ID4gUmljaGFyZCBHdXkgQnJpZ2dz IDxyYnJpZ2dzQHJlZGhhdC5jb20gPGphdmFzY3JpcHQ6Oz4KPiA+ID4gPiA+ID4gPiA+IDxqYXZh c2NyaXB0Ojs+PiBTZW5pb3IgU29mdHdhcmUgRW5naW5lZXIsIEtlcm5lbCBTZWN1cml0eSwKPiA+ ID4gPiA+ID4gPiA+IEFNRVIgRU5HIEJhc2UgT3BlcmF0aW5nIFN5c3RlbXMsIFJlZCBIYXQgUmVt b3RlLCBPdHRhd2EsCj4gPiA+ID4gPiA+ID4gPiBDYW5hZGEKPiA+ID4gPiA+ID4gPiA+IFZvaWNl OiArMS42NDcuNzc3LjI2MzUsIEludGVybmFsOiAoODEpIDMyNjM1LCBBbHQ6Cj4gPiA+ID4gPiA+ ID4gPiArMS42MTMuNjkzLjA2ODR4MzU0NQo+ID4gPiA+ID4gPiA+IAo+ID4gPiA+ID4gPiA+IC0t Cj4gPiA+ID4gPiA+ID4gUGxlYXNlIERvbmF0ZSB0byB3d3cud2lraXBlZGlhLm9yZwo+ID4gPiA+ ID4gPiAKPiA+ID4gPiA+ID4gLSBSR0IKPiA+ID4gPiA+ID4gCj4gPiA+ID4gPiA+IC0tCj4gPiA+ ID4gPiA+IFJpY2hhcmQgR3V5IEJyaWdncyA8cmJyaWdnc0ByZWRoYXQuY29tIDxqYXZhc2NyaXB0 Ojs+PiBTZW5pb3IKPiA+ID4gPiA+ID4gU29mdHdhcmUgRW5naW5lZXIsIEtlcm5lbCBTZWN1cml0 eSwgQU1FUiBFTkcgQmFzZSBPcGVyYXRpbmcKPiA+ID4gPiA+ID4gU3lzdGVtcywgUmVkIEhhdCBS ZW1vdGUsIE90dGF3YSwgQ2FuYWRhCj4gPiA+ID4gPiA+IFZvaWNlOiArMS42NDcuNzc3LjI2MzUs IEludGVybmFsOiAoODEpIDMyNjM1LCBBbHQ6Cj4gPiA+ID4gPiA+ICsxLjYxMy42OTMuMDY4NHgz NTQ1Cj4gPiA+ID4gPiAKPiA+ID4gPiA+IC0tCj4gPiA+ID4gPiBQbGVhc2UgRG9uYXRlIHRvIHd3 dy53aWtpcGVkaWEub3JnCj4gPiA+ID4gCj4gPiA+ID4gLSBSR0IKPiA+ID4gPiAKPiA+ID4gPiAt LQo+ID4gPiA+IFJpY2hhcmQgR3V5IEJyaWdncyA8cmJyaWdnc0ByZWRoYXQuY29tPiBTZW5pb3Ig U29mdHdhcmUgRW5naW5lZXIsCj4gPiA+ID4gS2VybmVsIFNlY3VyaXR5LCBBTUVSIEVORyBCYXNl IE9wZXJhdGluZyBTeXN0ZW1zLCBSZWQgSGF0IFJlbW90ZSwKPiA+ID4gPiBPdHRhd2EsIENhbmFk YQo+ID4gPiA+IFZvaWNlOiArMS42NDcuNzc3LjI2MzUsIEludGVybmFsOiAoODEpIDMyNjM1LCBB bHQ6Cj4gPiA+ID4gKzEuNjEzLjY5My4wNjg0eDM1NDUKPiA+ID4gCj4gPiA+IC0gUkdCCj4gPiA+ IAo+ID4gPiAtLQo+ID4gPiBSaWNoYXJkIEd1eSBCcmlnZ3MgPHJicmlnZ3NAcmVkaGF0LmNvbT4g U2VuaW9yIFNvZnR3YXJlIEVuZ2luZWVyLAo+ID4gPiBLZXJuZWwgU2VjdXJpdHksIEFNRVIgRU5H IEJhc2UgT3BlcmF0aW5nIFN5c3RlbXMsIFJlZCBIYXQgUmVtb3RlLAo+ID4gPiBPdHRhd2EsIENh bmFkYQo+ID4gPiBWb2ljZTogKzEuNjQ3Ljc3Ny4yNjM1LCBJbnRlcm5hbDogKDgxKSAzMjYzNSwg QWx0Ogo+ID4gPiArMS42MTMuNjkzLjA2ODR4MzU0NQo+ID4gPiAKPiA+ID4gI2luY2x1ZGUgPHN0 ZGlvLmg+Cj4gPiA+ICNpbmNsdWRlIDxzdGRsaWIuaD4KPiA+ID4gI2luY2x1ZGUgPHN5cy9zdGF0 Lmg+Cj4gPiA+ICNpbmNsdWRlIDxmY250bC5oPgo+ID4gPiAjaW5jbHVkZSA8dW5pc3RkLmg+Cj4g PiA+ICNpbmNsdWRlIDxlcnJuby5oPgo+ID4gPiAKPiA+ID4gdm9pZCBjcmVhdGVfbG9hZChpbnQg aXRlcnMpOwo+ID4gPiB2b2lkIGNsZWFudXAoKTsKPiA+ID4gCj4gPiA+IGludCAgIGhpZ2hfcmF0 ZSA9IDA7Cj4gPiA+IGludCAgIG51bV9pdGVycyA9IDEwMDAwMDsKPiA+ID4gaW50ICAgZmQxOwo+ ID4gPiBjaGFyICBmaWxlMVs1MF07Cj4gPiA+IGNoYXIgIGZpbGUyWzUwXTsKPiA+ID4gY2hhciAg ZGlyMVs1MF07Cj4gPiA+IGNoYXIgIHN5bWxpbmsxWzUwXTsKPiA+ID4gCj4gPiA+IC8qIFB1cnBv c2U6IFRvIGNyZWF0ZSBzeXN0ZW0gbG9hZCBieSBpbnZva2luZyBzeXN0ZW0gY2FsbHMgdXNlZCBi eQo+ID4gPiB0ZW1wbGF0ZXMuPiA+IAo+ID4gPiAgKgo+ID4gPiAgKiBOb3RlOiBUaGUgdW5saW5r KDIpIG9mIGEgZmlsZSBjYW4gYmUgYW4gZXhwZW5zaXZlIG9wZXJhdGlvbiAoaS5lLiwKPiA+ID4g IGV2ZW50Cj4gPiA+ICAqICAgICAgIHJhdGUgZ29lcyB3YXkgZG93bikuCj4gPiA+ICAqLwo+ID4g PiAKPiA+ID4gbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKPiA+ID4gCj4gPiA+ICAgaW50 ICAgICAgICAgICAgICBudW1fY2hpbGRyZW49MTsKPiA+ID4gICBpbnQgICAgICAgICAgICAgIGl0 ZXJzOwo+ID4gPiAgIGludCAgICAgICAgICAgICAgaTsKPiA+ID4gICBjaGFyICAgICAgICAgICAg IGM7Cj4gPiA+ICAgCj4gPiA+ICAgd2hpbGUgKChjID0gZ2V0b3B0KGFyZ2MsIGFyZ3YsICJoaToi KSkgIT0gLTEpIHsKPiA+ID4gICAKPiA+ID4gICAgIHN3aXRjaCAoYykgewo+ID4gPiAgICAgCj4g PiA+ICAgICBjYXNlICdoJzoKPiA+ID4gICAgICAgLyoKPiA+ID4gICAgICAgCj4gPiA+ICAgICAg ICAqIERlc2lyZSAiaGlnaCIgZXZlbnQgcmF0ZQo+ID4gPiAgICAgICAgKi8KPiA+ID4gICAgICAg Cj4gPiA+ICAgICAgIGhpZ2hfcmF0ZSA9IDE7Cj4gPiA+ICAgICAgIGFyZ2MtLTsKPiA+ID4gICAg ICAgYnJlYWs7Cj4gPiA+ICAgICAKPiA+ID4gICAgIGNhc2UgJ2knOgo+ID4gPiAgICAgICAvKgo+ ID4gPiAgICAgICAKPiA+ID4gICAgICAgICogRGVzaXJlIGEgc3BlY2lmaWVkIG51bWJlciBvZiBp dGVyYXRpb25zCj4gPiA+ICAgICAgICAqLwo+ID4gPiAgICAgICAKPiA+ID4gICAgICAgbnVtX2l0 ZXJzID0gYXRvaShvcHRhcmcpOwo+ID4gPiAgICAgICBhcmdjLS07Cj4gPiA+ICAgICAgIGJyZWFr Owo+ID4gPiAgICAgCj4gPiA+ICAgICBkZWZhdWx0Ogo+ID4gPiAgICAgICBmcHJpbnRmKHN0ZGVy ciwiVW5rbm93biBvcHRpb246ICVjXG4iLG9wdGFyZyk7Cj4gPiA+ICAgICAgIGV4aXQoMSk7Cj4g PiA+ICAgICAKPiA+ID4gICAgIH0KPiA+ID4gICAKPiA+ID4gICB9Cj4gPiA+ICAgCj4gPiA+ICAg Cj4gPiA+ICAgLyppZihhcmd2W29wdGluZF0gIT0gTlVMTCkgewo+ID4gPiAgIAo+ID4gPiAgICAg bnVtX2NoaWxkcmVuID0gYXRvaShhcmd2W29wdGluZF0pOwo+ID4gPiAgIAo+ID4gPiAgIH0gZWxz ZSB7Cj4gPiA+ICAgCj4gPiA+ICAgICBudW1fY2hpbGRyZW4gPSAwOwo+ID4gPiAgIAo+ID4gPiAg IH0KPiA+ID4gICBSZWdpc3RlciBjbGVhbnVwIHJvdXRpbmUgKi8KPiA+ID4gICBmcHJpbnRmKHN0 ZGVyciwiUmVnaXN0ZXJpbmcgY2xlYW51cCByb3V0aW5lLi4uXG4iKTsKPiA+ID4gICBpZiAoYXRl eGl0KGNsZWFudXApID09IC0xKSB7Cj4gPiA+ICAgCj4gPiA+ICAgICBmcHJpbnRmKHN0ZGVyciwi RXJyb3IgY2FsbGluZyBhdGV4aXQoKSwgZXJybm89JWQoJXMpXG4iLAo+ID4gPiAgICAgCj4gPiA+ IAkgICAgZXJybm8sc3RyZXJyb3IoZXJybm8pKTsKPiA+ID4gICAgIAo+ID4gPiAgICAgZXhpdCgx KTsKPiA+ID4gICAKPiA+ID4gICB9Cj4gPiA+ICAgCj4gPiA+ICAgCj4gPiA+ICAgLyogZm9yayBj aGlsZCBwcm9jZXNzZXMsIGlmIGFueSByZXF1ZXN0ZWQgKi8KPiA+ID4gICBmb3IoaT0xOyBpIDwg bnVtX2NoaWxkcmVuOyBpKyspIHsKPiA+ID4gICAKPiA+ID4gICAgIGlmKGZvcmsoKSA9PSAwKSB7 Cj4gPiA+ICAgICAKPiA+ID4gICAgICAgcHJpbnRmKCJjaGlsZCBwaWQ6ICVkXG4iLGdldHBpZCgp KTsKPiA+ID4gICAgICAgCj4gPiA+ICAgICAgIC8qIFNldHVwIGZpbGUgbmFtZXMgYmFzZWQgb24g Y2hpbGQncyBwaWQgKi8KPiA+ID4gICAgICAgc3ByaW50ZihmaWxlMSwiLi9maWxlMV8lZCIsZ2V0 cGlkKCkpOwo+ID4gPiAgICAgICBzcHJpbnRmKGZpbGUyLCIuL2ZpbGUyXyVkIixnZXRwaWQoKSk7 Cj4gPiA+ICAgICAgIHNwcmludGYoZGlyMSwiLi9kaXIxXyVkIixnZXRwaWQoKSk7Cj4gPiA+ICAg ICAgIHNwcmludGYoc3ltbGluazEsIi4vZmlsZTFzeW1saW5rXyVkIixnZXRwaWQoKSk7Cj4gPiA+ ICAgICAgIAo+ID4gPiAgICAgICAvKiBlYWNoIGNoaWxkIGNyZWF0ZXMgbG9hZCAqLwo+ID4gPiAg ICAgICBpdGVycz0wOwo+ID4gPiAgICAgICBpZiAobnVtX2l0ZXJzID09IC0xKSB7Cj4gPiA+IAkK PiA+ID4gCXdoaWxlKDEpIHsKPiA+ID4gCQo+ID4gPiAJICBjcmVhdGVfbG9hZChpdGVycyk7Cj4g PiA+IAkgIGl0ZXJzKys7Cj4gPiA+IAkgIGlmKCAoaXRlcnMgJSAxMDAwKSA9PSAwKSB7Cj4gPiA+ IAkgIAo+ID4gPiAJICAgIHByaW50ZigicGlkICVkIGl0ZXJhdGlvbiAlZFxuIixnZXRwaWQoKSxp dGVycyk7Cj4gPiA+IAkgIAo+ID4gPiAJICB9Cj4gPiA+IAkKPiA+ID4gCX0KPiA+ID4gCQo+ID4g PiAgICAgICB9IGVsc2Ugewo+ID4gPiAJCj4gPiA+IAl3aGlsZShpdGVycyA8IG51bV9pdGVycykg ewo+ID4gPiAJCj4gPiA+IAkgIGNyZWF0ZV9sb2FkKGl0ZXJzKTsKPiA+ID4gCSAgaXRlcnMrKzsK PiA+ID4gCSAgaWYoIChpdGVycyAlIDEwMDApID09IDApIHsKPiA+ID4gCSAgCj4gPiA+IAkgICAg cHJpbnRmKCJwaWQgJWQgaXRlcmF0aW9uICVkXG4iLGdldHBpZCgpLGl0ZXJzKTsKPiA+ID4gCSAg Cj4gPiA+IAkgIH0KPiA+ID4gCQo+ID4gPiAJfQo+ID4gPiAJCj4gPiA+ICAgICAgIH0KPiA+ID4g ICAgIAo+ID4gPiAgICAgfQo+ID4gPiAgIAo+ID4gPiAgIH0KPiA+ID4gICAKPiA+ID4gICAvKiBQ YXJlbnQgY3JlYXRlcyBsb2FkIGFsc28gKi8KPiA+ID4gICBwcmludGYoInBhcmVudCBwaWQ6ICVk XG4iLGdldHBpZCgpKTsKPiA+ID4gICAKPiA+ID4gICAvKiBTZXR1cCBmaWxlIG5hbWVzIGJhc2Vk IG9uIHBhcmVudCdzIHBpZCAqLwo+ID4gPiAgIHNwcmludGYoZmlsZTEsIi4vZmlsZTFfJWQiLGdl dHBpZCgpKTsKPiA+ID4gICBzcHJpbnRmKGZpbGUyLCIuL2ZpbGUyXyVkIixnZXRwaWQoKSk7Cj4g PiA+ICAgc3ByaW50ZihkaXIxLCIuL2RpcjFfJWQiLGdldHBpZCgpKTsKPiA+ID4gICBzcHJpbnRm KHN5bWxpbmsxLCIuL2ZpbGUxc3ltbGlua18lZCIsZ2V0cGlkKCkpOwo+ID4gPiAgIAo+ID4gPiAg IGl0ZXJzPTA7Cj4gPiA+ICAgaWYgKG51bV9pdGVycyA9PSAtMSkgewo+ID4gPiAgIAo+ID4gPiAg ICAgd2hpbGUoMSkgewo+ID4gPiAgICAgCj4gPiA+ICAgICAgIGNyZWF0ZV9sb2FkKGl0ZXJzKTsK PiA+ID4gICAgICAgaXRlcnMrKzsKPiA+ID4gICAgICAgaWYoIChpdGVycyAlIDEwMDApID09IDAp IHsKPiA+ID4gCQo+ID4gPiAJcHJpbnRmKCJwaWQgJWQgaXRlcmF0aW9uICVkXG4iLGdldHBpZCgp LGl0ZXJzKTsKPiA+ID4gCQo+ID4gPiAgICAgICB9Cj4gPiA+ICAgICAKPiA+ID4gICAgIH0KPiA+ ID4gICAKPiA+ID4gICB9IGVsc2Ugewo+ID4gPiAgIAo+ID4gPiAgICAgd2hpbGUoaXRlcnMgPCBu dW1faXRlcnMpIHsKPiA+ID4gICAgIAo+ID4gPiAgICAgICBjcmVhdGVfbG9hZChpdGVycyk7Cj4g PiA+ICAgICAgIGl0ZXJzKys7Cj4gPiA+ICAgICAgIGlmKCAoaXRlcnMgJSAxMDAwKSA9PSAwKSB7 Cj4gPiA+IAkKPiA+ID4gCXByaW50ZigicGlkICVkIGl0ZXJhdGlvbiAlZFxuIixnZXRwaWQoKSxp dGVycyk7Cj4gPiA+IAkKPiA+ID4gICAgICAgfQo+ID4gPiAgICAgCj4gPiA+ICAgICB9Cj4gPiA+ ICAgCj4gPiA+ICAgfQo+ID4gPiAKPiA+ID4gfSAvKiBtYWluICovCj4gPiA+IAo+ID4gPiAKPiA+ ID4gdm9pZCBjcmVhdGVfbG9hZChpbnQgaXRlcnMpIHsKPiA+ID4gCj4gPiA+ICAgaW50IHBpZDsK PiA+ID4gICBjaGFyICphcmdzWzJdOwo+ID4gPiAgIHN0cnVjdCBzdGF0IHN0YXRfYnVmOwo+ID4g PiAgIAo+ID4gPiAgIGZkMSA9IGNyZWF0KGZpbGUxLDB4NjQ0KTsKPiA+ID4gICBpZiAoZmQxID09 IC0xKSB7Cj4gPiA+ICAgCj4gPiA+ICAgICBmcHJpbnRmKHN0ZGVyciwicGlkICVkOiBjcmVhdCgp IHJldHVybmVkIGVycm9yIGZvciBmaWxlICVzLAo+ID4gPiAgICAgZXJybm89JWQoJXMpXG4iLD4g PiAgICAgCj4gPiA+IAkgICAgZ2V0cGlkKCksZmlsZTEsZXJybm8sc3RyZXJyb3IoZXJybm8pKTsK PiA+ID4gICAgIAo+ID4gPiAgICAgZXhpdCgxKTsKPiA+ID4gICAKPiA+ID4gICB9Cj4gPiA+ICAg aWYgKGNsb3NlKGZkMSkgPT0gLTEpIHsKPiA+ID4gICAKPiA+ID4gICAgIGZwcmludGYoc3RkZXJy LCJwaWQgJWQ6IGNsb3NlKCkgcmV0dXJuZWQgZXJyb3IsIGVycm5vPSVkKCVzKVxuIiwKPiA+ID4g ICAgIAo+ID4gPiAJICAgIGdldHBpZCgpLGVycm5vLHN0cmVycm9yKGVycm5vKSk7Cj4gPiA+ICAg ICAKPiA+ID4gICAgIGV4aXQoMSk7Cj4gPiA+ICAgCj4gPiA+ICAgfQo+ID4gPiAgIGZkMSA9IG9w ZW4oZmlsZTEsIE9fUkRXUiwgMDc3Nyk7Cj4gPiA+ICAgaWYgKGZkMSA9PSAtMSkgewo+ID4gPiAg IAo+ID4gPiAgICAgZnByaW50ZihzdGRlcnIsInBpZCAlZDogb3BlbigpIHJldHVybmVkIGVycm9y LCBlcnJubz0lZCglcylcbiIsCj4gPiA+ICAgICAKPiA+ID4gCSAgICBnZXRwaWQoKSxlcnJubyxz dHJlcnJvcihlcnJubykpOwo+ID4gPiAgICAgCj4gPiA+ICAgICBleGl0KDEpOwo+ID4gPiAgIAo+ ID4gPiAgIH0KPiA+ID4gICAKPiA+ID4gICAvKiBDaG93biB0aGlzIGZpbGUgdG8gcm9vdCBpbnN0 ZWFkIG9mIHVzZXIgaWRzIHNvIHRoYXQgd2UgZG9uJ3QKPiA+ID4gICBnZW5lcmF0ZSBhCj4gPiA+ ICAgCj4gPiA+ICAgICogbm9uLW93bmVkIGFsZXJ0IHdoZW4gdGhlIGZpbGUgaXMgdHJ1bmNhdGVk IHdoZW4gaW52b2tpbmcgY3JlYXQoKQo+ID4gPiAgICBhZ2Fpbgo+ID4gPiAgICAqIGFzIHJvb3Qg b24gYW4gZXhpc3RpbmcgZmlsZSBvd25lZCBieSBhbm90aGVyIHVzZXIuCj4gPiA+ICAgICovCj4g PiA+ICAgCj4gPiA+ICAgaWYgKGNob3duKGZpbGUxLDAsMCkgPT0gLTEpIHsKPiA+ID4gICAKPiA+ ID4gICAgIGZwcmludGYoc3RkZXJyLCJwaWQgJWQ6IGNob3duKCVkLCVkKSByZXR1cm5lZCBlcnJv ciwKPiA+ID4gICAgIGVycm5vPSVkKCVzKVxuIiwKPiA+ID4gICAgIAo+ID4gPiAJICAgIGdldHBp ZCgpLDAsMCxlcnJubyxzdHJlcnJvcihlcnJubykpOwo+ID4gPiAgICAgCj4gPiA+ICAgICBleGl0 KDEpOwo+ID4gPiAgIAo+ID4gPiAgIH0KPiA+ID4gICAKPiA+ID4gICBpZiAoZmNob3duKGZkMSww LDApID09IC0xKSB7Cj4gPiA+ICAgCj4gPiA+ICAgICBmcHJpbnRmKHN0ZGVyciwicGlkICVkOiBm Y2hvd24oJWQsJWQpIHJldHVybmVkIGVycm9yLAo+ID4gPiAgICAgZXJybm89JWQoJXMpXG4iLAo+ ID4gPiAgICAgCj4gPiA+IAkgICAgZ2V0cGlkKCksMCwwLGVycm5vLHN0cmVycm9yKGVycm5vKSk7 Cj4gPiA+ICAgICAKPiA+ID4gICAgIGV4aXQoMSk7Cj4gPiA+ICAgCj4gPiA+ICAgfQo+ID4gPiAg IAo+ID4gPiAgIGlmIChjaG1vZChmaWxlMSwgU19JUlVTUnxTX0lXVVNSfFNfSVJHUlB8U19JUk9U SCkgPT0gLTEpIHsKPiA+ID4gICAKPiA+ID4gICAgIGZwcmludGYoc3RkZXJyLCJwaWQgJWQ6IGNo bW9kKFNfSVJVU1J8U19JV1VTUnxTX0lSR1JQfFNfSVJPVEgpCj4gPiA+ICAgICByZXR1cm5lZCBl cnJvciwgZXJybm89JWQoJXMpXG4iLD4gPiAgICAgCj4gPiA+IAkgICAgZ2V0cGlkKCksZXJybm8s c3RyZXJyb3IoZXJybm8pKTsKPiA+ID4gICAgIAo+ID4gPiAgICAgZXhpdCgxKTsKPiA+ID4gICAK PiA+ID4gICB9Cj4gPiA+ICAgaWYgKGZjaG1vZChmZDEsICAgU19JWFVTUnxTX0lYR1JQfFNfSVhP VEgpID09IC0xKSB7Cj4gPiA+ICAgCj4gPiA+ICAgICBmcHJpbnRmKHN0ZGVyciwicGlkICVkOiBm Y2htb2QoU19JWFVTUnxTX0lYR1JQfFNfSVhPVEgpIHJldHVybmVkCj4gPiA+ICAgICBlcnJvciwg ZXJybm89JWQoJXMpXG4iLD4gPiAgICAgCj4gPiA+IAkgICAgZ2V0cGlkKCksZXJybm8sc3RyZXJy b3IoZXJybm8pKTsKPiA+ID4gICAgIAo+ID4gPiAgICAgZXhpdCgxKTsKPiA+ID4gICAKPiA+ID4g ICB9Cj4gPiA+ICAgCj4gPiA+ICAgCj4gPiA+ICAgaWYgKHdyaXRlKGZkMSwiU29tZSBzdHVmZiIs c3RybGVuKCJTb21lIHN0dWZmIikpID09IC0xKSB7Cj4gPiA+ICAgCj4gPiA+ICAgICBmcHJpbnRm KHN0ZGVyciwicGlkICVkOiB3cml0ZSgpIHJldHVybmVkIGVycm9yLCBlcnJubz0lZCglcylcbiIs Cj4gPiA+ICAgICAKPiA+ID4gCSAgICBnZXRwaWQoKSxlcnJubyxzdHJlcnJvcihlcnJubykpOwo+ ID4gPiAgICAgCj4gPiA+ICAgICBleGl0KDEpOwo+ID4gPiAgIAo+ID4gPiAgIH0KPiA+ID4gICBp ZiAoZnRydW5jYXRlKGZkMSw3KSA9PSAtMSkgewo+ID4gPiAgIAo+ID4gPiAgICAgZnByaW50Zihz dGRlcnIsInBpZCAlZDogZnRydW5jYXRlKCkgcmV0dXJuZWQgZXJyb3IsIGVycm5vPSVkKCVzKVxu IiwKPiA+ID4gICAgIAo+ID4gPiAJICAgIGdldHBpZCgpLGVycm5vLHN0cmVycm9yKGVycm5vKSk7 Cj4gPiA+ICAgICAKPiA+ID4gICAgIGV4aXQoMSk7Cj4gPiA+ICAgCj4gPiA+ICAgfQo+ID4gPiAg IGlmIChjbG9zZShmZDEpID09IC0xKSB7Cj4gPiA+ICAgCj4gPiA+ICAgICBmcHJpbnRmKHN0ZGVy ciwicGlkICVkOiBjbG9zZSgpIHJldHVybmVkIGVycm9yLCBlcnJubz0lZCglcylcbiIsCj4gPiA+ ICAgICAKPiA+ID4gCSAgICBnZXRwaWQoKSxlcnJubyxzdHJlcnJvcihlcnJubykpOwo+ID4gPiAg ICAgCj4gPiA+ICAgICBleGl0KDEpOwo+ID4gPiAgIAo+ID4gPiAgIH0KPiA+ID4gICAKPiA+ID4g ICBpZiAodHJ1bmNhdGUoZmlsZTEsMykgPT0gLTEpIHsKPiA+ID4gICAKPiA+ID4gICAgIGZwcmlu dGYoc3RkZXJyLCJwaWQgJWQ6IHRydW5jYXRlKCkgcmV0dXJuZWQgZXJyb3IsIGVycm5vPSVkKCVz KVxuIiwKPiA+ID4gICAgIAo+ID4gPiAJICAgIGdldHBpZCgpLGVycm5vLHN0cmVycm9yKGVycm5v KSk7Cj4gPiA+ICAgICAKPiA+ID4gICAgIGV4aXQoMSk7Cj4gPiA+ICAgCj4gPiA+ICAgfQo+ID4g PiAgIGlmIChyZW5hbWUoZmlsZTEsZmlsZTIpID09IC0xKSB7Cj4gPiA+ICAgCj4gPiA+ICAgICBm cHJpbnRmKHN0ZGVyciwicGlkICVkOiByZW5hbWUoJXMsJXMpIHJldHVybmVkIGVycm9yLAo+ID4g PiAgICAgZXJybm89JWQoJXMpXG4iLAo+ID4gPiAgICAgCj4gPiA+IAkgICAgZ2V0cGlkKCksZmls ZTEsZmlsZTIsZXJybm8sc3RyZXJyb3IoZXJybm8pKTsKPiA+ID4gICAgIAo+ID4gPiAgICAgZXhp dCgxKTsKPiA+ID4gICAKPiA+ID4gICB9Cj4gPiA+ICAgaWYgKHJlbmFtZShmaWxlMixmaWxlMSkg PT0gLTEpIHsKPiA+ID4gICAKPiA+ID4gICAgIGZwcmludGYoc3RkZXJyLCJwaWQgJWQ6IHJlbmFt ZSglcywlcykgcmV0dXJuZWQgZXJyb3IsCj4gPiA+ICAgICBlcnJubz0lZCglcylcbiIsCj4gPiA+ ICAgICAKPiA+ID4gCSAgICBnZXRwaWQoKSxmaWxlMixmaWxlMSxlcnJubyxzdHJlcnJvcihlcnJu bykpOwo+ID4gPiAgICAgCj4gPiA+ICAgICBleGl0KDEpOwo+ID4gPiAgIAo+ID4gPiAgIH0KPiA+ ID4gICBpZiAobGluayhmaWxlMSxmaWxlMikgPT0gLTEpIHsKPiA+ID4gICAKPiA+ID4gICAgIGZw cmludGYoc3RkZXJyLCJwaWQgJWQ6IGxpbmsoJXMsJXMpIHJldHVybmVkIGVycm9yLCBlcnJubz0l ZCglcylcbiIsCj4gPiA+ICAgICAKPiA+ID4gCSAgICBnZXRwaWQoKSxmaWxlMSxmaWxlMixlcnJu byxzdHJlcnJvcihlcnJubykpOwo+ID4gPiAgICAgCj4gPiA+ICAgICBleGl0KDEpOwo+ID4gPiAg IAo+ID4gPiAgIH0KPiA+ID4gICBpZiAoc3ltbGluayhmaWxlMSxzeW1saW5rMSkgPT0gLTEpIHsK PiA+ID4gICAKPiA+ID4gICAgIGZwcmludGYoc3RkZXJyLCJwaWQgJWQ6IHN5bWxpbmsoJXMsJXMp IHJldHVybmVkIGVycm9yLAo+ID4gPiAgICAgZXJybm89JWQoJXMpXG4iLAo+ID4gPiAgICAgCj4g PiA+IAkgICAgZ2V0cGlkKCksZmlsZTEsc3ltbGluazEsZXJybm8sc3RyZXJyb3IoZXJybm8pKTsK PiA+ID4gICAgIAo+ID4gPiAgICAgZXhpdCgxKTsKPiA+ID4gICAKPiA+ID4gICB9Cj4gPiA+ICAg aWYgKGxjaG93bihzeW1saW5rMSwwLDApID09IC0xKSB7Cj4gPiA+ICAgCj4gPiA+ICAgICBmcHJp bnRmKHN0ZGVyciwicGlkICVkOiBsY2hvd24oJXMsJWQsJWQpIHJldHVybmVkIGVycm9yLAo+ID4g PiAgICAgZXJybm89JWQoJXMpXG4iLAo+ID4gPiAgICAgCj4gPiA+IAkgICAgZ2V0cGlkKCksc3lt bGluazEsMCwwLGVycm5vLHN0cmVycm9yKGVycm5vKSk7Cj4gPiA+ICAgICAKPiA+ID4gICAgIGV4 aXQoMSk7Cj4gPiA+ICAgCj4gPiA+ICAgfQo+ID4gPiAgIAo+ID4gPiAgIGlmIChsc3RhdChzeW1s aW5rMSwmc3RhdF9idWYpID09IC0xKSB7Cj4gPiA+ICAgCj4gPiA+ICAgICBmcHJpbnRmKHN0ZGVy ciwicGlkICVkOiBsc3RhdCglcykgcmV0dXJuZWQgZXJyb3IsIGVycm5vPSVkKCVzKVxuIiwKPiA+ ID4gICAgIAo+ID4gPiAJICAgIGdldHBpZCgpLHN5bWxpbmsxLGVycm5vLHN0cmVycm9yKGVycm5v KSk7Cj4gPiA+ICAgICAKPiA+ID4gICAgIGV4aXQoMSk7Cj4gPiA+ICAgCj4gPiA+ICAgfQo+ID4g PiAgIGlmIChzdGF0KGZpbGUxLCZzdGF0X2J1ZikgPT0gLTEpIHsKPiA+ID4gICAKPiA+ID4gICAg IGZwcmludGYoc3RkZXJyLCJwaWQgJWQ6IHN0YXQoJXMpIHJldHVybmVkIGVycm9yLCBlcnJubz0l ZCglcylcbiIsCj4gPiA+ICAgICAKPiA+ID4gCSAgICBnZXRwaWQoKSxmaWxlMSxlcnJubyxzdHJl cnJvcihlcnJubykpOwo+ID4gPiAgICAgCj4gPiA+ICAgICBleGl0KDEpOwo+ID4gPiAgIAo+ID4g PiAgIH0KPiA+ID4gICBpZiAodW5saW5rKGZpbGUxKSA9PSAtMSkgewo+ID4gPiAgIAo+ID4gPiAg ICAgZnByaW50ZihzdGRlcnIsInBpZCAlZDogdW5saW5rKCVzKSByZXR1cm5lZCBlcnJvciwgZXJy bm89JWQoJXMpXG4iLAo+ID4gPiAgICAgCj4gPiA+IAkgICAgZ2V0cGlkKCksZmlsZTEsZXJybm8s c3RyZXJyb3IoZXJybm8pKTsKPiA+ID4gICAgIAo+ID4gPiAgICAgZXhpdCgxKTsKPiA+ID4gICAK PiA+ID4gICB9Cj4gPiA+ICAgaWYgKHVubGluayhmaWxlMikgPT0gLTEpIHsKPiA+ID4gICAKPiA+ ID4gICAgIGZwcmludGYoc3RkZXJyLCJwaWQgJWQ6IHVubGluayglcykgcmV0dXJuZWQgZXJyb3Is IGVycm5vPSVkKCVzKVxuIiwKPiA+ID4gICAgIAo+ID4gPiAJICAgIGdldHBpZCgpLGZpbGUyLGVy cm5vLHN0cmVycm9yKGVycm5vKSk7Cj4gPiA+ICAgICAKPiA+ID4gICAgIGV4aXQoMSk7Cj4gPiA+ ICAgCj4gPiA+ICAgfQo+ID4gPiAgIGlmICh1bmxpbmsoc3ltbGluazEpID09IC0xKSB7Cj4gPiA+ ICAgCj4gPiA+ICAgICBmcHJpbnRmKHN0ZGVyciwicGlkICVkOiB1bmxpbmsoJXMpIHJldHVybmVk IGVycm9yLCBlcnJubz0lZCglcylcbiIsCj4gPiA+ICAgICAKPiA+ID4gCSAgICBnZXRwaWQoKSxz eW1saW5rMSxlcnJubyxzdHJlcnJvcihlcnJubykpOwo+ID4gPiAgICAgCj4gPiA+ICAgICBleGl0 KDEpOwo+ID4gPiAgIAo+ID4gPiAgIH0KPiA+ID4gICBpZiAobWtkaXIoZGlyMSxTX0lSVVNSfFNf SVdVU1J8U19JWFVTUnxTX0lSR1JQfFNfSVhHUlApID09IC0xKSB7Cj4gPiA+ICAgCj4gPiA+ICAg ICBmcHJpbnRmKHN0ZGVyciwicGlkICVkOiBta2RpcigpIHJldHVybmVkIGVycm9yLCBlcnJubz0l ZCglcylcbiIsCj4gPiA+ICAgICAKPiA+ID4gCSAgICBnZXRwaWQoKSxlcnJubyxzdHJlcnJvcihl cnJubykpOwo+ID4gPiAgICAgCj4gPiA+ICAgICBleGl0KDEpOwo+ID4gPiAgIAo+ID4gPiAgIH0K PiA+ID4gICBpZiAocm1kaXIoZGlyMSkgPT0gLTEpIHsKPiA+ID4gICAKPiA+ID4gICAgIGZwcmlu dGYoc3RkZXJyLCJwaWQgJWQ6IHJtZGlyKCkgcmV0dXJuZWQgZXJyb3IsIGVycm5vPSVkKCVzKVxu IiwKPiA+ID4gICAgIAo+ID4gPiAJICAgIGdldHBpZCgpLGVycm5vLHN0cmVycm9yKGVycm5vKSk7 Cj4gPiA+ICAgICAKPiA+ID4gICAgIGV4aXQoMSk7Cj4gPiA+ICAgCj4gPiA+ICAgfQo+ID4gPiAg IAo+ID4gPiAgIC8qIEZvcmsgZXZlcnkgMTAwMDAgaXRlcmF0aW9ucyB0byBub3QgdXNlIHVwIHBy b2Nlc3MgcmVzb3VyY2VzIHRvbwo+ID4gPiAgIHF1aWNrbHkgKi8gaWYgKCAoaXRlcnMgJSAxMDAw MCkgPT0gMCkgewo+ID4gPiAgIAo+ID4gPiAgICAgcGlkID0gZm9yaygpOwo+ID4gPiAgICAgaWYo cGlkID09IDApIHsKPiA+ID4gICAgIAo+ID4gPiAgICAgICBmcHJpbnRmKHN0ZGVyciwiY2hpbGQg cGlkICVkOiBmb3JrIVxuIixnZXRwaWQoKSk7Cj4gPiA+ICAgICAgIC8vIGNoaWxkCj4gPiA+ICAg ICAgIGFyZ3NbMF0gPSAiL2Jpbi9scyI7Cj4gPiA+ICAgICAgIGFyZ3NbMV0gPSBOVUxMOwo+ID4g PiAgICAgICBjbG9zZSgxKTsKPiA+ID4gICAgICAgY2xvc2UoMik7Cj4gPiA+ICAgICAgIGV4ZWN2 ZShhcmdzWzBdLCBhcmdzLCBOVUxMKTsKPiA+ID4gICAgICAgZnByaW50ZihzdGRlcnIsInBpZCAl ZDogZXhlY3ZlKCVzKSByZXR1cm5lZCBlcnJvciwKPiA+ID4gICAgICAgZXJybm89JWQoJXMpXG4i LAo+ID4gPiAgICAgICAKPiA+ID4gCSAgICAgIGdldHBpZCgpLGFyZ3NbMF0sZXJybm8sc3RyZXJy b3IoZXJybm8pKTsKPiA+ID4gICAgICAgCj4gPiA+ICAgICAgIF9leGl0KDEpOwo+ID4gPiAgICAg Cj4gPiA+ICAgICB9IGVsc2UgaWYgKHBpZCA8IDApIHsKPiA+ID4gICAgIAo+ID4gPiAgICAgICBm cHJpbnRmKHN0ZGVyciwicGlkICVkOiBmb3JrKCkgcmV0dXJuZWQgZXJyb3IsIGVycm5vPSVkKCVz KVxuIiwKPiA+ID4gICAgICAgCj4gPiA+IAkgICAgICBnZXRwaWQoKSxlcnJubyxzdHJlcnJvcihl cnJubykpOwo+ID4gPiAgICAgICAKPiA+ID4gICAgICAgZXhpdCgxKTsKPiA+ID4gICAgIAo+ID4g PiAgICAgfSBlbHNlIHsKPiA+ID4gICAgIAo+ID4gPiAgICAgICBmcHJpbnRmKHN0ZGVyciwicGFy ZW50IHBpZCAlZCwgY2hpbGQgcGlkOiAlZDoKPiA+ID4gICAgICAgZm9yayFcbiIsZ2V0cGlkKCks cGlkKTsKPiA+ID4gICAgIAo+ID4gPiAgICAgfQo+ID4gPiAgICAgCj4gPiA+ICAgICBwaWQgPSB2 Zm9yaygpOwo+ID4gPiAgICAgaWYocGlkID09IDApIHsKPiA+ID4gICAgIAo+ID4gPiAgICAgICBh cmdzWzBdID0gIi9iaW4vcHdkIjsKPiA+ID4gICAgICAgYXJnc1sxXSA9IE5VTEw7Cj4gPiA+ICAg ICAgIGNsb3NlKDEpOwo+ID4gPiAgICAgICBjbG9zZSgyKTsKPiA+ID4gICAgICAgZXhlY3YoYXJn c1swXSwgYXJncyk7Cj4gPiA+ICAgICAgIGZwcmludGYoc3RkZXJyLCJwaWQgJWQ6IGV4ZWN2ZSgl cykgcmV0dXJuZWQgZXJyb3IsCj4gPiA+ICAgICAgIGVycm5vPSVkKCVzKVxuIiwKPiA+ID4gICAg ICAgCj4gPiA+IAkgICAgICBnZXRwaWQoKSxhcmdzWzBdLGVycm5vLHN0cmVycm9yKGVycm5vKSk7 Cj4gPiA+ICAgICAgIAo+ID4gPiAgICAgICBfZXhpdCgxKTsKPiA+ID4gICAgIAo+ID4gPiAgICAg fSBlbHNlIGlmIChwaWQgPCAwKSB7Cj4gPiA+ICAgICAKPiA+ID4gICAgICAgZnByaW50ZihzdGRl cnIsInBpZCAlZDogdmZvcmsoKSByZXR1cm5lZCBlcnJvciwgZXJybm89JWQoJXMpXG4iLAo+ID4g PiAgICAgICAKPiA+ID4gCSAgICAgIGdldHBpZCgpLGVycm5vLHN0cmVycm9yKGVycm5vKSk7Cj4g PiA+ICAgICAgIAo+ID4gPiAgICAgICBleGl0KDEpOwo+ID4gPiAgICAgCj4gPiA+ICAgICB9Cj4g PiA+ICAgCj4gPiA+ICAgfQo+ID4gPiAgIAo+ID4gPiAgIC8qIE1ha2Ugc3VyZSBldmVyeXRoaW5n IGlzIGNsZWFuZWQgdXAgYW5kIGRlbGV0ZWQgYmVmb3JlIHJldHVybmluZyAqLwo+ID4gPiAgIGNs ZWFudXAoKTsKPiA+ID4gCj4gPiA+IH0gLyogY3JlYXRlX2xvYWQoKSAqLwo+ID4gPiAKPiA+ID4g dm9pZCBjbGVhbnVwKCkgewo+ID4gPiAKPiA+ID4gICBjbG9zZShmZDEpOwo+ID4gPiAgIHVubGlu ayhmaWxlMSk7Cj4gPiA+ICAgdW5saW5rKGZpbGUyKTsKPiA+ID4gICB1bmxpbmsoc3ltbGluazEp Owo+ID4gPiAgIHVubGluayhkaXIxKTsKPiA+ID4gICByZXR1cm47Cj4gPiA+IAo+ID4gPiB9Cj4g PiA+IAo+ID4gPiAtLQo+ID4gPiBMaW51eC1hdWRpdCBtYWlsaW5nIGxpc3QKPiA+ID4gTGludXgt YXVkaXRAcmVkaGF0LmNvbQo+ID4gPiBodHRwczovL3d3dy5yZWRoYXQuY29tL21haWxtYW4vbGlz dGluZm8vbGludXgtYXVkaXQKPiA+IAo+ID4gLSBSR0IKPiA+IAo+ID4gLS0KPiA+IFJpY2hhcmQg R3V5IEJyaWdncyA8cmJyaWdnc0ByZWRoYXQuY29tPiBTZW5pb3IgU29mdHdhcmUgRW5naW5lZXIs Cj4gPiBLZXJuZWwgU2VjdXJpdHksIEFNRVIgRU5HIEJhc2UgT3BlcmF0aW5nIFN5c3RlbXMsIFJl ZCBIYXQgUmVtb3RlLAo+ID4gT3R0YXdhLCBDYW5hZGEKPiA+IFZvaWNlOiArMS42NDcuNzc3LjI2 MzUsIEludGVybmFsOiAoODEpIDMyNjM1LCBBbHQ6Cj4gPiArMS42MTMuNjkzLjA2ODR4MzU0NQo+ ID4gCj4gPiAtLQo+ID4gTGludXgtYXVkaXQgbWFpbGluZyBsaXN0Cj4gPiBMaW51eC1hdWRpdEBy ZWRoYXQuY29tCj4gPiBodHRwczovL3d3dy5yZWRoYXQuY29tL21haWxtYW4vbGlzdGluZm8vbGlu dXgtYXVkaXQKPiAKPiAtIFJHQgo+IAo+IC0tCj4gUmljaGFyZCBHdXkgQnJpZ2dzIDxyYnJpZ2dz QHJlZGhhdC5jb20+Cj4gU2VuaW9yIFNvZnR3YXJlIEVuZ2luZWVyLCBLZXJuZWwgU2VjdXJpdHks IEFNRVIgRU5HIEJhc2UgT3BlcmF0aW5nIFN5c3RlbXMsCj4gUmVkIEhhdCBSZW1vdGUsIE90dGF3 YSwgQ2FuYWRhIFZvaWNlOiArMS42NDcuNzc3LjI2MzUsIEludGVybmFsOiAoODEpCj4gMzI2MzUs IEFsdDogKzEuNjEzLjY5My4wNjg0eDM1NDUKPiAKPiAtLQo+IExpbnV4LWF1ZGl0IG1haWxpbmcg bGlzdAo+IExpbnV4LWF1ZGl0QHJlZGhhdC5jb20KPiBodHRwczovL3d3dy5yZWRoYXQuY29tL21h aWxtYW4vbGlzdGluZm8vbGludXgtYXVkaXQKCgotLQpMaW51eC1hdWRpdCBtYWlsaW5nIGxpc3QK TGludXgtYXVkaXRAcmVkaGF0LmNvbQpodHRwczovL3d3dy5yZWRoYXQuY29tL21haWxtYW4vbGlz dGluZm8vbGludXgtYXVkaXQ=